Changeset 12634 in josm for trunk/src/org/openstreetmap


Ignore:
Timestamp:
2017-08-24T15:54:00+02:00 (7 years ago)
Author:
Don-vip
Message:

see #15182 - deprecate Main.worker, replace it by gui.MainApplication.worker + code refactoring to make sure only editor packages use it

Location:
trunk/src/org/openstreetmap/josm
Files:
1 added
85 edited
2 moved

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/Main.java

    r12633 r12634  
    5959import org.openstreetmap.josm.gui.preferences.projection.ProjectionPreference;
    6060import org.openstreetmap.josm.gui.progress.PleaseWaitProgressMonitor;
    61 import org.openstreetmap.josm.gui.progress.ProgressMonitorExecutor;
    6261import org.openstreetmap.josm.gui.util.GuiHelper;
    6362import org.openstreetmap.josm.gui.util.RedirectInputMap;
     
    123122    /**
    124123     * The worker thread slave. This is for executing all long and intensive
    125      * calculations. The executed runnables are guaranteed to be executed separately
    126      * and sequential.
    127      */
    128     public static final ExecutorService worker = new ProgressMonitorExecutor("main-worker-%d", Thread.NORM_PRIORITY);
     124     * calculations. The executed runnables are guaranteed to be executed separately and sequential.
     125     * @deprecated use {@link MainApplication#worker} instead
     126     */
     127    @Deprecated
     128    public static final ExecutorService worker = MainApplication.worker;
    129129
    130130    /**
     
    855855    protected void shutdown() {
    856856        if (!GraphicsEnvironment.isHeadless()) {
    857             worker.shutdown();
    858857            ImageProvider.shutdown(false);
    859858            JCSCacheManager.shutdown();
     
    867866        }
    868867        if (!GraphicsEnvironment.isHeadless()) {
    869             worker.shutdownNow();
    870868            ImageProvider.shutdown(true);
    871869        }
  • trunk/src/org/openstreetmap/josm/actions/CloseChangesetAction.java

    r12581 r12634  
    1919import org.openstreetmap.josm.data.osm.UserInfo;
    2020import org.openstreetmap.josm.gui.ExceptionDialogUtil;
     21import org.openstreetmap.josm.gui.MainApplication;
    2122import org.openstreetmap.josm.gui.PleaseWaitRunnable;
    2223import org.openstreetmap.josm.gui.io.CloseChangesetDialog;
     
    5758    @Override
    5859    public void actionPerformed(ActionEvent e) {
    59         Main.worker.submit(new DownloadOpenChangesetsTask());
     60        MainApplication.worker.submit(new DownloadOpenChangesetsTask());
    6061    }
    6162
     
    8081        Collection<Changeset> changesetsToClose = dialog.getSelectedChangesets();
    8182        CloseChangesetTask closeChangesetTask = new CloseChangesetTask(changesetsToClose);
    82         Main.worker.submit(closeChangesetTask);
     83        MainApplication.worker.submit(closeChangesetTask);
    8384    }
    8485
  • trunk/src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java

    r12630 r12634  
    161161        if (multipolygonRelation != null) {
    162162            if (!multipolygonRelation.isNew() && multipolygonRelation.isIncomplete()) {
    163                 Main.worker.submit(new DownloadRelationTask(Collections.singleton(multipolygonRelation), Main.getLayerManager().getEditLayer()));
     163                MainApplication.worker.submit(new DownloadRelationTask(Collections.singleton(multipolygonRelation), Main.getLayerManager().getEditLayer()));
    164164            } else if (multipolygonRelation.hasIncompleteMembers()) {
    165                 Main.worker.submit(new DownloadRelationMemberTask(multipolygonRelation,
     165                MainApplication.worker.submit(new DownloadRelationMemberTask(multipolygonRelation,
    166166                        DownloadSelectedIncompleteMembersAction.buildSetOfIncompleteMembers(Collections.singleton(multipolygonRelation)),
    167167                        Main.getLayerManager().getEditLayer()));
     
    169169        }
    170170        // create/update multipolygon relation
    171         Main.worker.submit(new CreateUpdateMultipolygonTask(selectedWays, multipolygonRelation));
     171        MainApplication.worker.submit(new CreateUpdateMultipolygonTask(selectedWays, multipolygonRelation));
    172172    }
    173173
  • trunk/src/org/openstreetmap/josm/actions/DownloadAction.java

    r12630 r12634  
    8383            task.setZoomAfterDownload(zoom && !dialog.isDownloadGpxData() && !dialog.isDownloadNotes());
    8484            Future<?> future = task.download(dialog.isNewLayerRequired(), area, null);
    85             Main.worker.submit(new PostDownloadHandler(task, future));
     85            MainApplication.worker.submit(new PostDownloadHandler(task, future));
    8686            if (zoom) {
    8787                tasks.add(new Pair<>(task, future));
     
    9393            task.setZoomAfterDownload(zoom && !dialog.isDownloadOsmData() && !dialog.isDownloadNotes());
    9494            Future<?> future = task.download(dialog.isNewLayerRequired(), area, null);
    95             Main.worker.submit(new PostDownloadHandler(task, future));
     95            MainApplication.worker.submit(new PostDownloadHandler(task, future));
    9696            if (zoom) {
    9797                tasks.add(new Pair<>(task, future));
     
    103103            task.setZoomAfterDownload(zoom && !dialog.isDownloadOsmData() && !dialog.isDownloadGpxData());
    104104            Future<?> future = task.download(false, area, null);
    105             Main.worker.submit(new PostDownloadHandler(task, future));
     105            MainApplication.worker.submit(new PostDownloadHandler(task, future));
    106106            if (zoom) {
    107107                tasks.add(new Pair<>(task, future));
     
    110110
    111111        if (zoom && tasks.size() > 1) {
    112             Main.worker.submit(() -> {
     112            MainApplication.worker.submit(() -> {
    113113                ProjectionBounds bounds = null;
    114114                // Wait for completion of download jobs
  • trunk/src/org/openstreetmap/josm/actions/DownloadNotesInViewAction.java

    r12630 r12634  
    4848        task.setZoomAfterDownload(false);
    4949        Future<?> future = task.download(false, bounds, null);
    50         Main.worker.submit(new PostDownloadHandler(task, future));
     50        MainApplication.worker.submit(new PostDownloadHandler(task, future));
    5151    }
    5252
  • trunk/src/org/openstreetmap/josm/actions/DownloadOsmInViewAction.java

    r12630 r12634  
    3636        task.setZoomAfterDownload(false);
    3737        Future<?> future = task.download(bounds);
    38         Main.worker.submit(new PostDownloadHandler(task, future));
     38        MainApplication.worker.submit(new PostDownloadHandler(task, future));
    3939    }
    4040
  • trunk/src/org/openstreetmap/josm/actions/DownloadPrimitiveAction.java

    r11031 r12634  
    1111import org.openstreetmap.josm.Main;
    1212import org.openstreetmap.josm.data.osm.PrimitiveId;
     13import org.openstreetmap.josm.gui.MainApplication;
    1314import org.openstreetmap.josm.gui.download.DownloadObjectDialog;
    1415import org.openstreetmap.josm.gui.io.DownloadPrimitivesWithReferrersTask;
     
    5455        final DownloadPrimitivesWithReferrersTask task =
    5556                new DownloadPrimitivesWithReferrersTask(newLayer, ids, downloadReferrers, full, null, null);
    56         Main.worker.submit(task);
    57         Main.worker.submit(() -> {
     57        MainApplication.worker.submit(task);
     58        MainApplication.worker.submit(() -> {
    5859                final List<PrimitiveId> downloaded = task.getDownloadedId();
    5960                if (downloaded != null) {
  • trunk/src/org/openstreetmap/josm/actions/DownloadReferrersAction.java

    r10413 r12634  
    1212import org.openstreetmap.josm.actions.downloadtasks.DownloadReferrersTask;
    1313import org.openstreetmap.josm.data.osm.OsmPrimitive;
     14import org.openstreetmap.josm.gui.MainApplication;
    1415import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    1516import org.openstreetmap.josm.tools.Shortcut;
     
    4546        if (children == null || children.isEmpty())
    4647            return;
    47         Main.worker.submit(new DownloadReferrersTask(targetLayer, children));
     48        MainApplication.worker.submit(new DownloadReferrersTask(targetLayer, children));
    4849    }
    4950
  • trunk/src/org/openstreetmap/josm/actions/JosmAction.java

    r12620 r12634  
    1818import org.openstreetmap.josm.data.osm.event.DatasetEventManager.FireMode;
    1919import org.openstreetmap.josm.data.osm.event.SelectionEventManager;
     20import org.openstreetmap.josm.gui.MainApplication;
    2021import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
    2122import org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener;
     
    273274
    274275    protected static void waitFuture(final Future<?> future, final PleaseWaitProgressMonitor monitor) {
    275         Main.worker.submit(() -> {
     276        MainApplication.worker.submit(() -> {
    276277                        try {
    277278                            future.get();
  • trunk/src/org/openstreetmap/josm/actions/MergeLayerAction.java

    r12620 r12634  
    1313
    1414import org.openstreetmap.josm.Main;
     15import org.openstreetmap.josm.gui.MainApplication;
    1516import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
    1617import org.openstreetmap.josm.gui.layer.Layer;
     
    5253            return null;
    5354        final Object actionName = getValue(NAME);
    54         return Main.worker.submit(() -> {
     55        return MainApplication.worker.submit(() -> {
    5556                final long start = System.currentTimeMillis();
    5657                boolean layerMerged = false;
  • trunk/src/org/openstreetmap/josm/actions/OpenFileAction.java

    r12630 r12634  
    7676        OpenFileTask task = new OpenFileTask(Arrays.asList(files), fc.getFileFilter());
    7777        task.setRecordHistory(true);
    78         Main.worker.submit(task);
     78        MainApplication.worker.submit(task);
    7979    }
    8080
     
    105105        OpenFileTask task = new OpenFileTask(fileList, null);
    106106        task.setRecordHistory(recordHistory);
    107         return Main.worker.submit(task);
     107        return MainApplication.worker.submit(task);
    108108    }
    109109
  • trunk/src/org/openstreetmap/josm/actions/OpenLocationAction.java

    r12620 r12634  
    4141import org.openstreetmap.josm.gui.ExtendedDialog;
    4242import org.openstreetmap.josm.gui.HelpAwareOptionPane;
     43import org.openstreetmap.josm.gui.MainApplication;
    4344import org.openstreetmap.josm.gui.progress.PleaseWaitProgressMonitor;
    4445import org.openstreetmap.josm.gui.widgets.HistoryComboBox;
     
    233234        for (final DownloadTask task : tasks) {
    234235            try {
    235                 result.add(Main.worker.submit(new PostDownloadHandler(task, task.loadUrl(newLayer, url, monitor))));
     236                result.add(MainApplication.worker.submit(new PostDownloadHandler(task, task.loadUrl(newLayer, url, monitor))));
    236237            } catch (IllegalArgumentException e) {
    237238                Logging.error(e);
  • trunk/src/org/openstreetmap/josm/actions/OverpassDownloadAction.java

    r12609 r12634  
    3636import org.openstreetmap.josm.data.preferences.BooleanProperty;
    3737import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil;
     38import org.openstreetmap.josm.gui.MainApplication;
    3839import org.openstreetmap.josm.gui.download.DownloadDialog;
    3940import org.openstreetmap.josm.gui.download.OverpassQueryList;
     
    118119                new OverpassDownloadReader(area, OverpassServerPreference.getOverpassServer(), overpassQuery),
    119120                dialog.isNewLayerRequired(), area, null);
    120         Main.worker.submit(new PostDownloadHandler(task, future, errorReporter));
     121        MainApplication.worker.submit(new PostDownloadHandler(task, future, errorReporter));
    121122    }
    122123
  • trunk/src/org/openstreetmap/josm/actions/SessionLoadAction.java

    r12630 r12634  
    6161        File file = fc.getSelectedFile();
    6262        boolean zip = Utils.hasExtension(file, "joz");
    63         Main.worker.submit(new Loader(file, zip));
     63        MainApplication.worker.submit(new Loader(file, zip));
    6464    }
    6565
  • trunk/src/org/openstreetmap/josm/actions/UpdateSelectionAction.java

    r11643 r12634  
    2020import org.openstreetmap.josm.data.osm.PrimitiveId;
    2121import org.openstreetmap.josm.gui.ExceptionDialogUtil;
     22import org.openstreetmap.josm.gui.MainApplication;
    2223import org.openstreetmap.josm.gui.io.UpdatePrimitivesTask;
    2324import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
     
    5960     */
    6061    public static void updatePrimitives(final Collection<OsmPrimitive> selection) {
    61         Main.worker.submit(new UpdatePrimitivesTask(Main.getLayerManager().getEditLayer(), selection));
     62        MainApplication.worker.submit(new UpdatePrimitivesTask(Main.getLayerManager().getEditLayer(), selection));
    6263    }
    6364
  • trunk/src/org/openstreetmap/josm/actions/UploadAction.java

    r12630 r12634  
    246246        }
    247247
    248         Main.worker.execute(
     248        MainApplication.worker.execute(
    249249                new UploadPrimitivesTask(
    250250                        UploadDialog.getUploadDialog().getUploadStrategySpecification(),
  • trunk/src/org/openstreetmap/josm/actions/UploadSelectionAction.java

    r11385 r12634  
    2626import org.openstreetmap.josm.data.osm.visitor.Visitor;
    2727import org.openstreetmap.josm.gui.DefaultNameFormatter;
     28import org.openstreetmap.josm.gui.MainApplication;
    2829import org.openstreetmap.josm.gui.PleaseWaitRunnable;
    2930import org.openstreetmap.josm.gui.io.UploadSelectionDialog;
     
    160161            // processPostParentChecker()
    161162            //
    162             Main.worker.submit(new DeletedParentsChecker(layer, toUpload));
     163            MainApplication.worker.submit(new DeletedParentsChecker(layer, toUpload));
    163164        } else {
    164165            processPostParentChecker(layer, toUpload);
  • trunk/src/org/openstreetmap/josm/actions/ValidateAction.java

    r12630 r12634  
    9191        }
    9292
    93         Main.worker.submit(new ValidationTask(tests, selection, lastSelection));
     93        MainApplication.worker.submit(new ValidationTask(tests, selection, lastSelection));
    9494    }
    9595
  • trunk/src/org/openstreetmap/josm/actions/downloadtasks/AbstractChangesetDownloadTask.java

    r12620 r12634  
    1111import javax.swing.SwingUtilities;
    1212
    13 import org.openstreetmap.josm.Main;
    1413import org.openstreetmap.josm.data.Bounds;
    1514import org.openstreetmap.josm.data.osm.Changeset;
    1615import org.openstreetmap.josm.data.osm.ChangesetCache;
     16import org.openstreetmap.josm.gui.MainApplication;
    1717import org.openstreetmap.josm.gui.PleaseWaitRunnable;
    1818import org.openstreetmap.josm.gui.progress.ProgressMonitor;
     
    119119     *       }
    120120     *    }
    121      *    Main.worker.submit(runAfterTask);
     121     *    MainApplication.worker.submit(runAfterTask);
    122122     * </pre>
    123123     *
     
    125125     */
    126126    public final Future<?> download() {
    127         return downloadTaskRunnable != null ? Main.worker.submit(downloadTaskRunnable) : null;
     127        return downloadTaskRunnable != null ? MainApplication.worker.submit(downloadTaskRunnable) : null;
    128128    }
    129129
    130130    @Override
    131131    public final Future<?> loadUrl(boolean newLayer, String url, ProgressMonitor progressMonitor) {
    132         return downloadTaskRunnable != null ? Main.worker.submit(downloadTaskRunnable) : null;
     132        return downloadTaskRunnable != null ? MainApplication.worker.submit(downloadTaskRunnable) : null;
    133133    }
    134134
  • trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTask.java

    r12630 r12634  
    7575        // We need submit instead of execute so we can wait for it to finish and get the error
    7676        // message if necessary. If no one calls getErrorMessage() it just behaves like execute.
    77         return Main.worker.submit(downloadTask);
     77        return MainApplication.worker.submit(downloadTask);
    7878    }
    7979
     
    9999            // We need submit instead of execute so we can wait for it to finish and get the error
    100100            // message if necessary. If no one calls getErrorMessage() it just behaves like execute.
    101             return Main.worker.submit(downloadTask);
     101            return MainApplication.worker.submit(downloadTask);
    102102
    103103        } else if (url.matches(PATTERN_TRACKPOINTS_BBOX)) {
  • trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadNotesTask.java

    r12630 r12634  
    6060        final String url = OsmApi.getOsmApi().getBaseUrl() + "notes/" + id;
    6161        downloadTask = new DownloadRawUrlTask(new OsmServerLocationReader(url), progressMonitor);
    62         return Main.worker.submit(downloadTask);
     62        return MainApplication.worker.submit(downloadTask);
    6363    }
    6464
     
    6666    public Future<?> download(boolean newLayer, Bounds downloadArea, ProgressMonitor progressMonitor) {
    6767        downloadTask = new DownloadBoundingBoxTask(new BoundingBoxDownloader(downloadArea), progressMonitor);
    68         return Main.worker.submit(downloadTask);
     68        return MainApplication.worker.submit(downloadTask);
    6969    }
    7070
     
    7676            downloadTask = new DownloadRawUrlTask(new OsmServerLocationReader(url), progressMonitor);
    7777        }
    78         return Main.worker.submit(downloadTask);
     78        return MainApplication.worker.submit(downloadTask);
    7979    }
    8080
  • trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmChangeCompressedTask.java

    r10001 r12634  
    22package org.openstreetmap.josm.actions.downloadtasks;
    33
     4import static org.openstreetmap.josm.tools.I18n.tr;
     5
    46import java.util.concurrent.Future;
    57
    6 import static org.openstreetmap.josm.tools.I18n.tr;
    7 
    8 import org.openstreetmap.josm.Main;
    98import org.openstreetmap.josm.data.osm.DataSet;
     9import org.openstreetmap.josm.gui.MainApplication;
    1010import org.openstreetmap.josm.gui.progress.ProgressMonitor;
    1111import org.openstreetmap.josm.io.OsmServerLocationReader;
     
    5050        // Extract .osc.gz/bz/bz2 filename from URL to set the new layer name
    5151        extractOsmFilename("https?://.*/(.*\\.osc.(gz|bz2?))", url);
    52         return Main.worker.submit(downloadTask);
     52        return MainApplication.worker.submit(downloadTask);
    5353    }
    5454}
  • trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmChangeTask.java

    r12630 r12634  
    7777        // Extract .osc filename from URL to set the new layer name
    7878        extractOsmFilename("https?://.*/(.*\\.osc)", url);
    79         return Main.worker.submit(downloadTask);
     79        return MainApplication.worker.submit(downloadTask);
    8080    }
    8181
     
    123123                if (isCanceled()) return;
    124124                // Let's load all required history
    125                 Main.worker.submit(new HistoryLoaderAndListener(toLoad));
     125                MainApplication.worker.submit(new HistoryLoaderAndListener(toLoad));
    126126            } catch (RejectedExecutionException e) {
    127127                rememberException(e);
     
    200200                // Some primitives still need to be loaded
    201201                // Let's load all required history
    202                 Main.worker.submit(new HistoryLoaderAndListener(toLoadNext));
     202                MainApplication.worker.submit(new HistoryLoaderAndListener(toLoadNext));
    203203            }
    204204        }
  • trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmCompressedTask.java

    r10378 r12634  
    66import java.util.concurrent.Future;
    77
    8 import org.openstreetmap.josm.Main;
    98import org.openstreetmap.josm.data.Bounds;
    109import org.openstreetmap.josm.data.osm.DataSet;
     10import org.openstreetmap.josm.gui.MainApplication;
    1111import org.openstreetmap.josm.gui.progress.ProgressMonitor;
    1212import org.openstreetmap.josm.io.OsmServerLocationReader;
     
    6161        // Extract .osm.gz/bz/bz2/zip filename from URL to set the new layer name
    6262        extractOsmFilename("https?://.*/(.*\\.osm.(gz|bz2?|zip))", url);
    63         return Main.worker.submit(downloadTask);
     63        return MainApplication.worker.submit(downloadTask);
    6464    }
    6565}
  • trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmIdTask.java

    r12284 r12634  
    99import java.util.regex.Pattern;
    1010
    11 import org.openstreetmap.josm.Main;
    1211import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
    1312import org.openstreetmap.josm.data.osm.PrimitiveId;
    1413import org.openstreetmap.josm.data.osm.SimplePrimitiveId;
     14import org.openstreetmap.josm.gui.MainApplication;
    1515import org.openstreetmap.josm.gui.io.DownloadPrimitivesWithReferrersTask;
    1616import org.openstreetmap.josm.gui.progress.ProgressMonitor;
     
    4040            final DownloadPrimitivesWithReferrersTask downloadTask = new DownloadPrimitivesWithReferrersTask(
    4141                    newLayer, Collections.singletonList(primitiveId), true, true, null, null);
    42             return Main.worker.submit(downloadTask);
     42            return MainApplication.worker.submit(downloadTask);
    4343        } else {
    4444            throw new IllegalStateException("Failed to parse id from " + url);
  • trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java

    r12630 r12634  
    116116     *       }
    117117     *    }
    118      *    Main.worker.submit(runAfterTask);
     118     *    MainApplication.worker.submit(runAfterTask);
    119119     * </pre>
    120120     * @param reader the reader used to parse OSM data (see {@link OsmServerReader#parseOsm})
     
    134134        // We need submit instead of execute so we can wait for it to finish and get the error
    135135        // message if necessary. If no one calls getErrorMessage() it just behaves like execute.
    136         return Main.worker.submit(downloadTask);
     136        return MainApplication.worker.submit(downloadTask);
    137137    }
    138138
     
    160160        // Extract .osm filename from URL to set the new layer name
    161161        extractOsmFilename("https?://.*/(.*\\.osm)", newUrl);
    162         return Main.worker.submit(downloadTask);
     162        return MainApplication.worker.submit(downloadTask);
    163163    }
    164164
     
    287287                }
    288288                if (!primitivesToUpdate.isEmpty()) {
    289                     Main.worker.submit(new UpdatePrimitivesTask(layer, primitivesToUpdate));
     289                    MainApplication.worker.submit(new UpdatePrimitivesTask(layer, primitivesToUpdate));
    290290                }
    291291                layer.onPostDownloadFromServer();
  • trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadSessionTask.java

    r12620 r12634  
    1212import org.openstreetmap.josm.actions.SessionLoadAction.Loader;
    1313import org.openstreetmap.josm.data.Bounds;
     14import org.openstreetmap.josm.gui.MainApplication;
    1415import org.openstreetmap.josm.gui.progress.ProgressMonitor;
    1516import org.openstreetmap.josm.tools.HttpClient;
     
    4748                URL u = new URL(url);
    4849                loader = new Loader(HttpClient.create(u).connect().getContent(), u.toURI(), url.endsWith(".joz"));
    49                 return Main.worker.submit(loader);
     50                return MainApplication.worker.submit(loader);
    5051            } catch (URISyntaxException | IOException e) {
    5152                Logging.error(e);
  • trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTask.java

    r9230 r12634  
    4343     *       }
    4444     *    }
    45      *    Main.worker.submit(runAfterTask);
     45     *    MainApplication.worker.submit(runAfterTask);
    4646     * </pre>
    4747     *
  • trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTaskList.java

    r12620 r12634  
    2929import org.openstreetmap.josm.gui.HelpAwareOptionPane;
    3030import org.openstreetmap.josm.gui.HelpAwareOptionPane.ButtonSpec;
     31import org.openstreetmap.josm.gui.MainApplication;
    3132import org.openstreetmap.josm.gui.Notification;
    3233import org.openstreetmap.josm.gui.layer.Layer;
     
    9394            }
    9495        });
    95         return Main.worker.submit(new PostDownloadProcessor(osmData));
     96        return MainApplication.worker.submit(new PostDownloadProcessor(osmData));
    9697    }
    9798
  • trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java

    r12630 r12634  
    603603                        // We need to do it like this as otherwise drawAction will see a double
    604604                        // click and switch back to SelectMode
    605                         Main.worker.execute(() -> map.selectDrawTool(true));
     605                        MainApplication.worker.execute(() -> map.selectDrawTool(true));
    606606                        return;
    607607                    }
  • trunk/src/org/openstreetmap/josm/actions/relation/DownloadMembersAction.java

    r12630 r12634  
    3535    public void actionPerformed(ActionEvent e) {
    3636        if (!isEnabled() || relations.isEmpty() || !MainApplication.isDisplayingMapView()) return;
    37         Main.worker.submit(new DownloadRelationTask(relations, Main.getLayerManager().getEditLayer()));
     37        MainApplication.worker.submit(new DownloadRelationTask(relations, Main.getLayerManager().getEditLayer()));
    3838    }
    3939
  • trunk/src/org/openstreetmap/josm/actions/relation/DownloadSelectedIncompleteMembersAction.java

    r12630 r12634  
    5151    public void actionPerformed(ActionEvent e) {
    5252        if (!isEnabled() || relations.isEmpty() || !MainApplication.isDisplayingMapView()) return;
    53         Main.worker.submit(new DownloadRelationMemberTask(
     53        MainApplication.worker.submit(new DownloadRelationMemberTask(
    5454                relations,
    5555                incompleteMembers,
  • trunk/src/org/openstreetmap/josm/actions/upload/UploadNotesTask.java

    r12630 r12634  
    3737    public void uploadNotes(NoteData noteData, ProgressMonitor progressMonitor) {
    3838        this.noteData = noteData;
    39         Main.worker.submit(new UploadTask(tr("Uploading modified notes"), progressMonitor));
     39        MainApplication.worker.submit(new UploadTask(tr("Uploading modified notes"), progressMonitor));
    4040    }
    4141
  • trunk/src/org/openstreetmap/josm/data/Preferences.java

    r12620 r12634  
    235235
    236236    /**
     237     * Constructs a new {@code Preferences}.
     238     */
     239    public Preferences() {
     240        // Default constructor
     241    }
     242
     243    /**
     244     * Constructs a new {@code Preferences} from an existing instance.
     245     * @param pref existing preferences to copy
     246     * @since 12634
     247     */
     248    public Preferences(Preferences pref) {
     249        settingsMap.putAll(pref.settingsMap);
     250        defaultsMap.putAll(pref.defaultsMap);
     251        colornames.putAll(pref.colornames);
     252    }
     253
     254    /**
    237255     * Adds a new preferences listener.
    238256     * @param listener The listener to add
  • trunk/src/org/openstreetmap/josm/data/imagery/ImageryLayerInfo.java

    r12620 r12634  
    1616import java.util.Set;
    1717import java.util.TreeSet;
     18import java.util.concurrent.ExecutorService;
    1819
    1920import org.openstreetmap.josm.Main;
     
    3334public class ImageryLayerInfo {
    3435
     36    /** Unique instance */
    3537    public static final ImageryLayerInfo instance = new ImageryLayerInfo();
    3638    /** List of all usable layers */
     
    6163    }
    6264
     65    /**
     66     * Constructs a new {@code ImageryLayerInfo} from an existing one.
     67     * @param info info to copy
     68     */
    6369    public ImageryLayerInfo(ImageryLayerInfo info) {
    6470        layers.addAll(info.layers);
    6571    }
    6672
     73    /**
     74     * Clear the lists of layers.
     75     */
    6776    public void clear() {
    6877        layers.clear();
     
    8897            Collections.sort(layers);
    8998        }
    90         loadDefaults(false, true, fastFail);
     99        loadDefaults(false, null, fastFail);
    91100    }
    92101
     
    95104     *
    96105     * The data is downloaded from the JOSM website (or loaded from cache).
    97      * Entries marked as "default" are added to the user selection, if not
    98      * already present.
     106     * Entries marked as "default" are added to the user selection, if not already present.
    99107     *
    100108     * @param clearCache if true, clear the cache and start a fresh download.
    101      * @param quiet whether not the loading should be performed using a {@link PleaseWaitRunnable} in the background
     109     * @param worker executor service which will perform the loading. If null, it should be performed using a {@link PleaseWaitRunnable} in the background
    102110     * @param fastFail whether opening HTTP connections should fail fast, see {@link ImageryReader#setFastFail(boolean)}
    103      */
    104     public void loadDefaults(boolean clearCache, boolean quiet, boolean fastFail) {
     111     * @since 12634
     112     */
     113    public void loadDefaults(boolean clearCache, ExecutorService worker, boolean fastFail) {
    105114        final DefaultEntryLoader loader = new DefaultEntryLoader(clearCache, fastFail);
    106         if (quiet) {
     115        if (worker == null) {
    107116            loader.realRun();
    108117            loader.finish();
    109118        } else {
    110             Main.worker.execute(new DefaultEntryLoader(clearCache, fastFail));
     119            worker.execute(loader);
    111120        }
    112121    }
     
    327336    }
    328337
     338    /**
     339     * Add a new imagery entry.
     340     * @param info imagery entry to add
     341     */
    329342    public void add(ImageryInfo info) {
    330343        layers.add(info);
    331344    }
    332345
     346    /**
     347     * Remove an imagery entry.
     348     * @param info imagery entry to remove
     349     */
    333350    public void remove(ImageryInfo info) {
    334351        layers.remove(info);
    335352    }
    336353
     354    /**
     355     * Save the list of imagery entries to preferences.
     356     */
    337357    public void save() {
    338358        List<ImageryPreferenceEntry> entries = new ArrayList<>();
  • trunk/src/org/openstreetmap/josm/gui/MainApplication.java

    r12633 r12634  
    77import java.awt.BorderLayout;
    88import java.awt.Dimension;
     9import java.awt.GraphicsEnvironment;
    910import java.awt.event.KeyEvent;
    1011import java.io.File;
     
    3637import java.util.TreeSet;
    3738import java.util.concurrent.Callable;
     39import java.util.concurrent.ExecutorService;
    3840import java.util.concurrent.Future;
    3941import java.util.logging.Level;
     
    5961import org.openstreetmap.josm.actions.mapmode.DrawAction;
    6062import org.openstreetmap.josm.actions.search.SearchAction;
    61 import org.openstreetmap.josm.data.AutosaveTask;
    6263import org.openstreetmap.josm.data.Bounds;
    63 import org.openstreetmap.josm.data.CustomConfigurator;
    6464import org.openstreetmap.josm.data.Version;
    6565import org.openstreetmap.josm.data.osm.OsmPrimitive;
     
    6868import org.openstreetmap.josm.gui.SplashScreen.SplashProgressMonitor;
    6969import org.openstreetmap.josm.gui.download.DownloadDialog;
     70import org.openstreetmap.josm.gui.io.CustomConfigurator.XMLCommandProcessor;
     71import org.openstreetmap.josm.gui.layer.AutosaveTask;
    7072import org.openstreetmap.josm.gui.layer.TMSLayer;
    7173import org.openstreetmap.josm.gui.preferences.imagery.ImageryPreference;
     
    7375import org.openstreetmap.josm.gui.preferences.server.OAuthAccessTokenHolder;
    7476import org.openstreetmap.josm.gui.preferences.server.ProxyPreference;
     77import org.openstreetmap.josm.gui.progress.ProgressMonitorExecutor;
    7578import org.openstreetmap.josm.gui.tagging.presets.TaggingPresets;
    7679import org.openstreetmap.josm.gui.util.GuiHelper;
     
    124127
    125128    /**
     129     * The worker thread slave. This is for executing all long and intensive
     130     * calculations. The executed runnables are guaranteed to be executed separately and sequential.
     131     * @since 12634 (as a replacement to {@code Main.worker})
     132     */
     133    public static final ExecutorService worker = new ProgressMonitorExecutor("main-worker-%d", Thread.NORM_PRIORITY);
     134
     135    /**
    126136     * Constructs a new {@code MainApplication} without a window.
    127137     */
     
    227237    @Override
    228238    protected void shutdown() {
     239        if (!GraphicsEnvironment.isHeadless()) {
     240            worker.shutdown();
     241        }
    229242        if (mainFrame != null) {
    230243            mainFrame.storeState();
     
    234247        }
    235248        super.shutdown();
     249        if (!GraphicsEnvironment.isHeadless()) {
     250            worker.shutdownNow();
     251        }
    236252    }
    237253
     
    456472
    457473        if (args.hasOption(Option.LOAD_PREFERENCES)) {
    458             CustomConfigurator.XMLCommandProcessor config = new CustomConfigurator.XMLCommandProcessor(Main.pref);
     474            XMLCommandProcessor config = new XMLCommandProcessor(Main.pref);
    459475            for (String i : args.get(Option.LOAD_PREFERENCES)) {
    460476                Logging.info("Reading preferences from " + i);
     
    671687        Future<?> future = task.download(true, b, null);
    672688        // ... and the continuation when the download is finished (this will wait for the download to finish)
    673         return Collections.singletonList(Main.worker.submit(new PostDownloadHandler(task, future)));
     689        return Collections.singletonList(MainApplication.worker.submit(new PostDownloadHandler(task, future)));
    674690    }
    675691
     
    693709        final Collection<String> selectionArguments = args.get(Option.SELECTION);
    694710        if (!selectionArguments.isEmpty()) {
    695             tasks.add(Main.worker.submit(() -> {
     711            tasks.add(MainApplication.worker.submit(() -> {
    696712                for (String s : selectionArguments) {
    697713                    SearchAction.search(s, SearchAction.SearchMode.add);
  • trunk/src/org/openstreetmap/josm/gui/datatransfer/importers/FilePaster.java

    r10604 r12634  
    1010import javax.swing.TransferHandler.TransferSupport;
    1111
    12 import org.openstreetmap.josm.Main;
    1312import org.openstreetmap.josm.actions.OpenFileAction;
    1413import org.openstreetmap.josm.data.coor.EastNorth;
     14import org.openstreetmap.josm.gui.MainApplication;
    1515import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    1616
     
    3535        OpenFileAction.OpenFileTask task = new OpenFileAction.OpenFileTask(files, null);
    3636        task.setRecordHistory(true);
    37         Main.worker.submit(task);
     37        MainApplication.worker.submit(task);
    3838        return true;
    3939    }
  • trunk/src/org/openstreetmap/josm/gui/dialogs/ChangesetDialog.java

    r12620 r12634  
    4444import org.openstreetmap.josm.data.osm.event.DatasetEventManager.FireMode;
    4545import org.openstreetmap.josm.data.osm.event.SelectionEventManager;
     46import org.openstreetmap.josm.gui.MainApplication;
    4647import org.openstreetmap.josm.gui.SideButton;
    4748import org.openstreetmap.josm.gui.dialogs.changeset.ChangesetCacheManager;
     
    358359                return;
    359360            ChangesetHeaderDownloadTask task = new ChangesetHeaderDownloadTask(sel);
    360             Main.worker.submit(new PostDownloadHandler(task, task.download()));
     361            MainApplication.worker.submit(new PostDownloadHandler(task, task.download()));
    361362        }
    362363
     
    393394            if (sel.isEmpty())
    394395                return;
    395             Main.worker.submit(new CloseChangesetTask(sel));
     396            MainApplication.worker.submit(new CloseChangesetTask(sel));
    396397        }
    397398
     
    515516            } else {
    516517                task = new ChangesetHeaderDownloadTask(toDownload);
    517                 future = Main.worker.submit(new PostDownloadHandler(task, task.download()));
     518                future = MainApplication.worker.submit(new PostDownloadHandler(task, task.download()));
    518519            }
    519520
     
    543544                GuiHelper.runInEDT(() -> launchChangesetManager(sel));
    544545            };
    545             Main.worker.submit(r);
     546            MainApplication.worker.submit(r);
    546547        }
    547548    }
  • trunk/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java

    r12620 r12634  
    5757import org.openstreetmap.josm.actions.PreferencesAction;
    5858import org.openstreetmap.josm.gui.ExtendedDialog;
     59import org.openstreetmap.josm.gui.MainApplication;
    5960import org.openstreetmap.josm.gui.PleaseWaitRunnable;
    6061import org.openstreetmap.josm.gui.SideButton;
     
    417418            final int[] rows = tblStyles.getSelectedRows();
    418419            MapPaintStyles.reloadStyles(rows);
    419             Main.worker.submit(() -> SwingUtilities.invokeLater(() -> {
     420            MainApplication.worker.submit(() -> SwingUtilities.invokeLater(() -> {
    420421                selectionModel.setValueIsAdjusting(true);
    421422                selectionModel.clearSelection();
     
    461462            if (fc == null)
    462463                return;
    463             Main.worker.submit(new SaveToFileTask(s, fc.getSelectedFile()));
     464            MainApplication.worker.submit(new SaveToFileTask(s, fc.getSelectedFile()));
    464465        }
    465466
  • trunk/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java

    r12630 r12634  
    237237        //
    238238        FixTask fixTask = new FixTask(errorsToFix);
    239         Main.worker.submit(fixTask);
     239        MainApplication.worker.submit(fixTask);
    240240    }
    241241
  • trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManager.java

    r12620 r12634  
    5454import org.openstreetmap.josm.gui.HelpAwareOptionPane;
    5555import org.openstreetmap.josm.gui.JosmUserIdentityManager;
     56import org.openstreetmap.josm.gui.MainApplication;
    5657import org.openstreetmap.josm.gui.dialogs.changeset.query.ChangesetQueryDialog;
    5758import org.openstreetmap.josm.gui.help.ContextSensitiveHelpAction;
     
    459460        @Override
    460461        public void actionPerformed(ActionEvent e) {
    461             Main.worker.submit(new CloseChangesetTask(model.getSelectedChangesets()));
     462            MainApplication.worker.submit(new CloseChangesetTask(model.getSelectedChangesets()));
    462463        }
    463464
     
    568569            if (!GraphicsEnvironment.isHeadless()) {
    569570                actDownloadSelectedContent.actionPerformed(e);
    570                 Main.worker.submit(() -> {
     571                MainApplication.worker.submit(() -> {
    571572                    final List<PrimitiveId> primitiveIds = model.getSelectedChangesets().stream()
    572573                            .map(Changeset::getContent)
     
    754755     */
    755756    public void runDownloadTask(final AbstractChangesetDownloadTask task) {
    756         Main.worker.submit(new PostDownloadHandler(task, task.download()));
    757         Main.worker.submit(() -> {
     757        MainApplication.worker.submit(new PostDownloadHandler(task, task.download()));
     758        MainApplication.worker.submit(() -> {
    758759            if (task.isCanceled() || task.isFailed())
    759760                return;
  • trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentPanel.java

    r11848 r12634  
    4343import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive;
    4444import org.openstreetmap.josm.gui.HelpAwareOptionPane;
     45import org.openstreetmap.josm.gui.MainApplication;
    4546import org.openstreetmap.josm.gui.help.HelpUtil;
    4647import org.openstreetmap.josm.gui.history.HistoryBrowserDialogManager;
     
    268269                    task.add(p);
    269270                }
    270                 Main.worker.submit(task);
    271             }
    272 
    273             Main.worker.submit(new ShowHistoryTask(primitives));
     271                MainApplication.worker.submit(task);
     272            }
     273
     274            MainApplication.worker.submit(new ShowHistoryTask(primitives));
    274275        }
    275276
     
    304305            final List<PrimitiveId> primitiveIds = model.getSelectedPrimitives().stream().map(HistoryOsmPrimitive::getPrimitiveId)
    305306                    .collect(Collectors.toList());
    306             Main.worker.submit(new DownloadPrimitivesWithReferrersTask(false, primitiveIds, true, true, null, null));
     307            MainApplication.worker.submit(new DownloadPrimitivesWithReferrersTask(false, primitiveIds, true, true, null, null));
    307308        }
    308309
  • trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDetailPanel.java

    r12494 r12634  
    3636import org.openstreetmap.josm.data.osm.OsmPrimitive;
    3737import org.openstreetmap.josm.gui.HelpAwareOptionPane;
     38import org.openstreetmap.josm.gui.MainApplication;
    3839import org.openstreetmap.josm.gui.help.HelpUtil;
    3940import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeEvent;
     
    316317                    Collections.singleton(currentChangeset.getId())
    317318            );
    318             Main.worker.submit(new PostDownloadHandler(task, task.download()));
     319            MainApplication.worker.submit(new PostDownloadHandler(task, task.download()));
    319320        }
    320321
  • trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetDiscussionPanel.java

    r10611 r12634  
    2424import org.openstreetmap.josm.actions.downloadtasks.PostDownloadHandler;
    2525import org.openstreetmap.josm.data.osm.Changeset;
     26import org.openstreetmap.josm.gui.MainApplication;
    2627import org.openstreetmap.josm.io.OnlineResource;
    2728import org.openstreetmap.josm.tools.ImageProvider;
     
    7879                    true /* include discussion */
    7980            );
    80             Main.worker.submit(new PostDownloadHandler(task, task.download()));
     81            MainApplication.worker.submit(new PostDownloadHandler(task, task.download()));
    8182        }
    8283
  • trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java

    r12630 r12634  
    11721172                }
    11731173
    1174                 Main.worker.execute(() -> displayHelp(uris));
     1174                MainApplication.worker.execute(() -> displayHelp(uris));
    11751175            } catch (URISyntaxException e1) {
    11761176                Logging.error(e1);
  • trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ChildRelationBrowser.java

    r12630 r12634  
    227227
    228228        public void run() {
    229             Main.worker.submit(new DownloadAllChildrenTask(getParentDialog(), (Relation) model.getRoot()));
     229            MainApplication.worker.submit(new DownloadAllChildrenTask(getParentDialog(), (Relation) model.getRoot()));
    230230        }
    231231
     
    264264                relations.add((Relation) aSelection.getLastPathComponent());
    265265            }
    266             Main.worker.submit(new DownloadRelationSetTask(getParentDialog(), relations));
     266            MainApplication.worker.submit(new DownloadRelationSetTask(getParentDialog(), relations));
    267267        }
    268268
  • trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ParentRelationLoadingTask.java

    r12620 r12634  
    4848 *
    4949 *   // start the task
    50  *   Main.worker.submit(task);
     50 *   MainApplication.worker.submit(task);
    5151 * </pre>
    5252 *
  • trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ReferringRelationsBrowser.java

    r10611 r12634  
    2222import javax.swing.event.ListSelectionListener;
    2323
    24 import org.openstreetmap.josm.Main;
    2524import org.openstreetmap.josm.data.osm.Relation;
     25import org.openstreetmap.josm.gui.MainApplication;
    2626import org.openstreetmap.josm.gui.OsmPrimitivRenderer;
    2727import org.openstreetmap.josm.gui.layer.OsmDataLayer;
     
    115115                    model.populate(task.getParents());
    116116                });
    117             Main.worker.submit(task);
     117            MainApplication.worker.submit(task);
    118118        }
    119119
  • trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RelationTree.java

    r12620 r12634  
    2020import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
    2121import org.openstreetmap.josm.data.osm.Relation;
     22import org.openstreetmap.josm.gui.MainApplication;
    2223import org.openstreetmap.josm.gui.PleaseWaitRunnable;
    2324import org.openstreetmap.josm.gui.progress.PleaseWaitProgressMonitor;
     
    9596                return;
    9697            // launch the download task
    97             Main.worker.submit(new RelationLoader(getParentDialog(), parent, path));
     98            MainApplication.worker.submit(new RelationLoader(getParentDialog(), parent, path));
    9899        }
    99100    }
  • trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/DownloadIncompleteMembersAction.java

    r9665 r12634  
    99
    1010import org.openstreetmap.josm.Main;
     11import org.openstreetmap.josm.gui.MainApplication;
    1112import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationMemberTask;
     13import org.openstreetmap.josm.gui.dialogs.relation.IRelationEditor;
    1214import org.openstreetmap.josm.gui.dialogs.relation.MemberTable;
    1315import org.openstreetmap.josm.gui.dialogs.relation.MemberTableModel;
    14 import org.openstreetmap.josm.gui.dialogs.relation.IRelationEditor;
    1516import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    1617import org.openstreetmap.josm.io.OnlineResource;
     
    4849        if (!isEnabled())
    4950            return;
    50         Main.worker.submit(new DownloadRelationMemberTask(
     51        MainApplication.worker.submit(new DownloadRelationMemberTask(
    5152                editor.getRelation(),
    5253                memberTableModel.getIncompleteMemberPrimitives(),
  • trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/DownloadSelectedIncompleteMembersAction.java

    r9991 r12634  
    88
    99import org.openstreetmap.josm.Main;
     10import org.openstreetmap.josm.gui.MainApplication;
    1011import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationMemberTask;
    1112import org.openstreetmap.josm.gui.dialogs.relation.IRelationEditor;
     
    4344        if (!isEnabled())
    4445            return;
    45         Main.worker.submit(new DownloadRelationMemberTask(
     46        MainApplication.worker.submit(new DownloadRelationMemberTask(
    4647                editor.getRelation(),
    4748                memberTableModel.getSelectedIncompleteMemberPrimitives(),
  • trunk/src/org/openstreetmap/josm/gui/download/BookmarkList.java

    r12620 r12634  
    3333import org.openstreetmap.josm.data.projection.Projections;
    3434import org.openstreetmap.josm.gui.JosmUserIdentityManager;
     35import org.openstreetmap.josm.gui.MainApplication;
    3536import org.openstreetmap.josm.gui.MapViewState;
    3637import org.openstreetmap.josm.gui.dialogs.changeset.ChangesetCacheManager;
     
    334335                final ChangesetQueryTask task = new ChangesetQueryTask(this, query);
    335336                ChangesetCacheManager.getInstance().runDownloadTask(task);
    336                 Main.worker.submit(() -> {
     337                MainApplication.worker.submit(() -> {
    337338                    if (task.isCanceled() || task.isFailed())
    338339                        return;
  • trunk/src/org/openstreetmap/josm/gui/download/PlaceSelection.java

    r12620 r12634  
    4747import org.openstreetmap.josm.gui.ExceptionDialogUtil;
    4848import org.openstreetmap.josm.gui.HelpAwareOptionPane;
     49import org.openstreetmap.josm.gui.MainApplication;
    4950import org.openstreetmap.josm.gui.PleaseWaitRunnable;
    5051import org.openstreetmap.josm.gui.util.GuiHelper;
     
    190191            Main.pref.putCollection(HISTORY_KEY, cbSearchExpression.getHistory());
    191192            NameQueryTask task = new NameQueryTask(cbSearchExpression.getText());
    192             Main.worker.submit(task);
     193            MainApplication.worker.submit(task);
    193194        }
    194195
  • trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserDialog.java

    r11659 r12634  
    2323import org.openstreetmap.josm.data.osm.history.HistoryDataSet;
    2424import org.openstreetmap.josm.data.osm.history.HistoryDataSetListener;
     25import org.openstreetmap.josm.gui.MainApplication;
    2526import org.openstreetmap.josm.gui.help.ContextSensitiveHelpAction;
    2627import org.openstreetmap.josm.gui.help.HelpUtil;
     
    182183            HistoryLoadTask task = new HistoryLoadTask();
    183184            task.add(browser.getHistory());
    184             Main.worker.submit(task);
     185            MainApplication.worker.submit(task);
    185186        }
    186187    }
  • trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserDialogManager.java

    r11746 r12634  
    2323import org.openstreetmap.josm.data.osm.history.History;
    2424import org.openstreetmap.josm.data.osm.history.HistoryDataSet;
     25import org.openstreetmap.josm.gui.MainApplication;
    2526import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
    2627import org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener;
     
    213214                task.add(p);
    214215            }
    215             Main.worker.submit(task);
     216            MainApplication.worker.submit(task);
    216217        }
    217218
     
    229230            }
    230231        };
    231         Main.worker.submit(r);
     232        MainApplication.worker.submit(r);
    232233    }
    233234}
  • trunk/src/org/openstreetmap/josm/gui/history/HistoryLoadTask.java

    r11553 r12634  
    4343 *      .add(aHistoryItem);
    4444 *
    45  *   Main.worker.execute(task);
     45 *   MainApplication.worker.execute(task);
    4646 * </pre>
    4747 */
  • trunk/src/org/openstreetmap/josm/gui/history/NodeListViewer.java

    r11519 r12634  
    2929import org.openstreetmap.josm.data.osm.history.History;
    3030import org.openstreetmap.josm.data.osm.history.HistoryDataSet;
     31import org.openstreetmap.josm.gui.MainApplication;
    3132import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    3233import org.openstreetmap.josm.gui.util.AdjustmentSynchronizer;
     
    302303        public void run() {
    303304            if (HistoryDataSet.getInstance().getHistory(primitiveId) == null) {
    304                 Main.worker.submit(new HistoryLoadTask().add(primitiveId));
     305                MainApplication.worker.submit(new HistoryLoadTask().add(primitiveId));
    305306            }
    306             Main.worker.submit(() -> {
     307            MainApplication.worker.submit(() -> {
    307308                final History h = HistoryDataSet.getInstance().getHistory(primitiveId);
    308309                if (h == null)
  • trunk/src/org/openstreetmap/josm/gui/io/AbstractUploadTask.java

    r12620 r12634  
    2626import org.openstreetmap.josm.gui.HelpAwareOptionPane;
    2727import org.openstreetmap.josm.gui.HelpAwareOptionPane.ButtonSpec;
     28import org.openstreetmap.josm.gui.MainApplication;
    2829import org.openstreetmap.josm.gui.PleaseWaitRunnable;
    2930import org.openstreetmap.josm.gui.layer.OsmDataLayer;
     
    9293            throw new IllegalStateException(
    9394                    tr("Failed to update primitive with id {0} because current edit layer does not include such a primitive", id));
    94         Main.worker.execute(new UpdatePrimitivesTask(layer, Collections.singleton(p)));
     95        MainApplication.worker.execute(new UpdatePrimitivesTask(layer, Collections.singleton(p)));
    9596    }
    9697
  • trunk/src/org/openstreetmap/josm/gui/io/ChangesetManagementPanel.java

    r10378 r12634  
    2626import org.openstreetmap.josm.data.osm.Changeset;
    2727import org.openstreetmap.josm.data.osm.ChangesetCache;
     28import org.openstreetmap.josm.gui.MainApplication;
    2829import org.openstreetmap.josm.gui.widgets.JMultilineLabel;
    2930import org.openstreetmap.josm.gui.widgets.JosmComboBox;
     
    299300        @Override
    300301        public void actionPerformed(ActionEvent e) {
    301             DownloadOpenChangesetsTask task = new DownloadOpenChangesetsTask(ChangesetManagementPanel.this);
    302             Main.worker.submit(task);
     302            MainApplication.worker.submit(new DownloadOpenChangesetsTask(ChangesetManagementPanel.this));
    303303        }
    304304    }
     
    319319            Changeset cs = (Changeset) cbOpenChangesets.getSelectedItem();
    320320            if (cs == null) return;
    321             CloseChangesetTask task = new CloseChangesetTask(Collections.singletonList(cs));
    322             Main.worker.submit(task);
     321            MainApplication.worker.submit(new CloseChangesetTask(Collections.singletonList(cs)));
    323322        }
    324323
  • trunk/src/org/openstreetmap/josm/gui/io/CustomConfigurator.java

    r12633 r12634  
    11// License: GPL. For details, see LICENSE file.
    2 package org.openstreetmap.josm.data;
     2package org.openstreetmap.josm.gui.io;
    33
    44import static org.openstreetmap.josm.tools.I18n.tr;
     
    1818import java.util.HashMap;
    1919import java.util.HashSet;
    20 import java.util.Iterator;
    2120import java.util.List;
    2221import java.util.Locale;
    2322import java.util.Map;
    24 import java.util.Map.Entry;
    2523import java.util.Set;
    26 import java.util.TreeMap;
    2724import java.util.regex.Matcher;
    2825import java.util.regex.Pattern;
     
    4542
    4643import org.openstreetmap.josm.Main;
    47 import org.openstreetmap.josm.data.preferences.ListListSetting;
    48 import org.openstreetmap.josm.data.preferences.ListSetting;
    49 import org.openstreetmap.josm.data.preferences.MapListSetting;
     44import org.openstreetmap.josm.data.Preferences;
     45import org.openstreetmap.josm.data.PreferencesUtils;
     46import org.openstreetmap.josm.data.Version;
    5047import org.openstreetmap.josm.data.preferences.Setting;
    51 import org.openstreetmap.josm.data.preferences.StringSetting;
    52 import org.openstreetmap.josm.gui.io.DownloadFileTask;
     48import org.openstreetmap.josm.gui.MainApplication;
    5349import org.openstreetmap.josm.plugins.PluginDownloadTask;
    5450import org.openstreetmap.josm.plugins.PluginInformation;
     
    188184        DownloadFileTask downloadFileTask = new DownloadFileTask(Main.parent, address, fOut, mkdir, unzip);
    189185
    190         Main.worker.submit(downloadFileTask);
     186        MainApplication.worker.submit(downloadFileTask);
    191187        log("Info: downloading file from %s to %s in background ", parentDir, fOut.getAbsolutePath());
    192188        if (unzip) log("and unpacking it"); else log("");
     
    394390                        PluginDownloadTask pluginDownloadTask =
    395391                                new PluginDownloadTask(Main.parent, toInstallPlugins, tr("Installing plugins"));
    396                         Main.worker.submit(pluginDownloadTask);
     392                        MainApplication.worker.submit(pluginDownloadTask);
    397393                    }
    398394                    Collection<String> pls = new ArrayList<>(Main.pref.getCollection("plugins"));
     
    413409            }
    414410        };
    415         Main.worker.submit(task);
    416         Main.worker.submit(r);
     411        MainApplication.worker.submit(task);
     412        MainApplication.worker.submit(r);
    417413    }
    418414
     
    429425        }
    430426        return dir;
    431     }
    432 
    433     public static Preferences clonePreferences(Preferences pref) {
    434         Preferences tmp = new Preferences();
    435         tmp.settingsMap.putAll(pref.settingsMap);
    436         tmp.defaultsMap.putAll(pref.defaultsMap);
    437         tmp.colornames.putAll(pref.colornames);
    438 
    439         return tmp;
    440427    }
    441428
     
    759746        }
    760747    }
    761 
    762     /**
    763      * Helper class to do specific Preferences operation - appending, replacing,
    764      * deletion by key and by value
    765      * Also contains functions that convert preferences object to JavaScript object and back
    766      */
    767     public static final class PreferencesUtils {
    768 
    769         private PreferencesUtils() {
    770             // Hide implicit public constructor for utility class
    771         }
    772 
    773         private static void replacePreferences(Preferences fragment, Preferences mainpref) {
    774             for (Entry<String, Setting<?>> entry: fragment.settingsMap.entrySet()) {
    775                 mainpref.putSetting(entry.getKey(), entry.getValue());
    776             }
    777         }
    778 
    779         private static void appendPreferences(Preferences fragment, Preferences mainpref) {
    780             for (Entry<String, Setting<?>> entry: fragment.settingsMap.entrySet()) {
    781                 String key = entry.getKey();
    782                 if (entry.getValue() instanceof StringSetting) {
    783                     mainpref.putSetting(key, entry.getValue());
    784                 } else if (entry.getValue() instanceof ListSetting) {
    785                     ListSetting lSetting = (ListSetting) entry.getValue();
    786                     Collection<String> newItems = getCollection(mainpref, key, true);
    787                     if (newItems == null) continue;
    788                     for (String item : lSetting.getValue()) {
    789                         // add nonexisting elements to then list
    790                         if (!newItems.contains(item)) {
    791                             newItems.add(item);
    792                         }
    793                     }
    794                     mainpref.putCollection(key, newItems);
    795                 } else if (entry.getValue() instanceof ListListSetting) {
    796                     ListListSetting llSetting = (ListListSetting) entry.getValue();
    797                     Collection<Collection<String>> newLists = getArray(mainpref, key, true);
    798                     if (newLists == null) continue;
    799 
    800                     for (Collection<String> list : llSetting.getValue()) {
    801                         // add nonexisting list (equals comparison for lists is used implicitly)
    802                         if (!newLists.contains(list)) {
    803                             newLists.add(list);
    804                         }
    805                     }
    806                     mainpref.putArray(key, newLists);
    807                 } else if (entry.getValue() instanceof MapListSetting) {
    808                     MapListSetting mlSetting = (MapListSetting) entry.getValue();
    809                     List<Map<String, String>> newMaps = getListOfStructs(mainpref, key, true);
    810                     if (newMaps == null) continue;
    811 
    812                     // get existing properties as list of maps
    813 
    814                     for (Map<String, String> map : mlSetting.getValue()) {
    815                         // add nonexisting map (equals comparison for maps is used implicitly)
    816                         if (!newMaps.contains(map)) {
    817                             newMaps.add(map);
    818                         }
    819                     }
    820                     mainpref.putListOfStructs(entry.getKey(), newMaps);
    821                 }
    822             }
    823         }
    824 
    825         /**
    826          * Delete items from {@code mainpref} collections that match items from {@code fragment} collections.
    827          * @param fragment preferences
    828          * @param mainpref main preferences
    829          */
    830         private static void deletePreferenceValues(Preferences fragment, Preferences mainpref) {
    831 
    832             for (Entry<String, Setting<?>> entry : fragment.settingsMap.entrySet()) {
    833                 String key = entry.getKey();
    834                 if (entry.getValue() instanceof StringSetting) {
    835                     StringSetting sSetting = (StringSetting) entry.getValue();
    836                     // if mentioned value found, delete it
    837                     if (sSetting.equals(mainpref.settingsMap.get(key))) {
    838                         mainpref.put(key, null);
    839                     }
    840                 } else if (entry.getValue() instanceof ListSetting) {
    841                     ListSetting lSetting = (ListSetting) entry.getValue();
    842                     Collection<String> newItems = getCollection(mainpref, key, true);
    843                     if (newItems == null) continue;
    844 
    845                     // remove mentioned items from collection
    846                     for (String item : lSetting.getValue()) {
    847                         log("Deleting preferences: from list %s: %s\n", key, item);
    848                         newItems.remove(item);
    849                     }
    850                     mainpref.putCollection(entry.getKey(), newItems);
    851                 } else if (entry.getValue() instanceof ListListSetting) {
    852                     ListListSetting llSetting = (ListListSetting) entry.getValue();
    853                     Collection<Collection<String>> newLists = getArray(mainpref, key, true);
    854                     if (newLists == null) continue;
    855 
    856                     // if items are found in one of lists, remove that list!
    857                     Iterator<Collection<String>> listIterator = newLists.iterator();
    858                     while (listIterator.hasNext()) {
    859                         Collection<String> list = listIterator.next();
    860                         for (Collection<String> removeList : llSetting.getValue()) {
    861                             if (list.containsAll(removeList)) {
    862                                 // remove current list, because it matches search criteria
    863                                 log("Deleting preferences: list from lists %s: %s\n", key, list);
    864                                 listIterator.remove();
    865                             }
    866                         }
    867                     }
    868 
    869                     mainpref.putArray(key, newLists);
    870                 } else if (entry.getValue() instanceof MapListSetting) {
    871                     MapListSetting mlSetting = (MapListSetting) entry.getValue();
    872                     List<Map<String, String>> newMaps = getListOfStructs(mainpref, key, true);
    873                     if (newMaps == null) continue;
    874 
    875                     Iterator<Map<String, String>> mapIterator = newMaps.iterator();
    876                     while (mapIterator.hasNext()) {
    877                         Map<String, String> map = mapIterator.next();
    878                         for (Map<String, String> removeMap : mlSetting.getValue()) {
    879                             if (map.entrySet().containsAll(removeMap.entrySet())) {
    880                                 // the map contain all mentioned key-value pair, so it should be deleted from "maps"
    881                                 log("Deleting preferences: deleting map from maps %s: %s\n", key, map);
    882                                 mapIterator.remove();
    883                             }
    884                         }
    885                     }
    886                     mainpref.putListOfStructs(entry.getKey(), newMaps);
    887                 }
    888             }
    889         }
    890 
    891     private static void deletePreferenceKeyByPattern(String pattern, Preferences pref) {
    892         Map<String, Setting<?>> allSettings = pref.getAllSettings();
    893         for (Entry<String, Setting<?>> entry : allSettings.entrySet()) {
    894             String key = entry.getKey();
    895             if (key.matches(pattern)) {
    896                 log("Deleting preferences: deleting key from preferences: " + key);
    897                 pref.putSetting(key, null);
    898             }
    899         }
    900     }
    901 
    902     private static void deletePreferenceKey(String key, Preferences pref) {
    903         Map<String, Setting<?>> allSettings = pref.getAllSettings();
    904         if (allSettings.containsKey(key)) {
    905             log("Deleting preferences: deleting key from preferences: " + key);
    906             pref.putSetting(key, null);
    907         }
    908     }
    909 
    910     private static Collection<String> getCollection(Preferences mainpref, String key, boolean warnUnknownDefault) {
    911         ListSetting existing = Utils.cast(mainpref.settingsMap.get(key), ListSetting.class);
    912         ListSetting defaults = Utils.cast(mainpref.defaultsMap.get(key), ListSetting.class);
    913         if (existing == null && defaults == null) {
    914             if (warnUnknownDefault) defaultUnknownWarning(key);
    915             return null;
    916         }
    917         if (existing != null)
    918             return new ArrayList<>(existing.getValue());
    919         else
    920             return defaults.getValue() == null ? null : new ArrayList<>(defaults.getValue());
    921     }
    922 
    923     private static Collection<Collection<String>> getArray(Preferences mainpref, String key, boolean warnUnknownDefault) {
    924         ListListSetting existing = Utils.cast(mainpref.settingsMap.get(key), ListListSetting.class);
    925         ListListSetting defaults = Utils.cast(mainpref.defaultsMap.get(key), ListListSetting.class);
    926 
    927         if (existing == null && defaults == null) {
    928             if (warnUnknownDefault) defaultUnknownWarning(key);
    929             return null;
    930         }
    931         if (existing != null)
    932             return new ArrayList<>(existing.getValue());
    933         else
    934             return defaults.getValue() == null ? null : new ArrayList<>(defaults.getValue());
    935     }
    936 
    937     private static List<Map<String, String>> getListOfStructs(Preferences mainpref, String key, boolean warnUnknownDefault) {
    938         MapListSetting existing = Utils.cast(mainpref.settingsMap.get(key), MapListSetting.class);
    939         MapListSetting defaults = Utils.cast(mainpref.settingsMap.get(key), MapListSetting.class);
    940 
    941         if (existing == null && defaults == null) {
    942             if (warnUnknownDefault) defaultUnknownWarning(key);
    943             return null;
    944         }
    945 
    946         if (existing != null)
    947             return new ArrayList<>(existing.getValue());
    948         else
    949             return defaults.getValue() == null ? null : new ArrayList<>(defaults.getValue());
    950     }
    951 
    952     private static void defaultUnknownWarning(String key) {
    953         log("Warning: Unknown default value of %s , skipped\n", key);
    954         JOptionPane.showMessageDialog(
    955                 Main.parent,
    956                 tr("<html>Settings file asks to append preferences to <b>{0}</b>,<br/> "+
    957                         "but its default value is unknown at this moment.<br/> " +
    958                         "Please activate corresponding function manually and retry importing.", key),
    959                 tr("Warning"),
    960                 JOptionPane.WARNING_MESSAGE);
    961     }
    962 
    963     private static void showPrefs(Preferences tmpPref) {
    964         Logging.info("properties: " + tmpPref.settingsMap);
    965     }
    966 
    967     private static void modifyPreferencesByScript(ScriptEngine engine, Preferences tmpPref, String js) throws ScriptException {
    968         loadPrefsToJS(engine, tmpPref, "API.pref", true);
    969         engine.eval(js);
    970         readPrefsFromJS(engine, tmpPref, "API.pref");
    971     }
    972 
    973     /**
    974      * Convert JavaScript preferences object to preferences data structures
    975      * @param engine - JS engine to put object
    976      * @param tmpPref - preferences to fill from JS
    977      * @param varInJS - JS variable name, where preferences are stored
    978      * @throws ScriptException if the evaluation fails
    979      */
    980     public static void readPrefsFromJS(ScriptEngine engine, Preferences tmpPref, String varInJS) throws ScriptException {
    981         String finish =
    982             "stringMap = new java.util.TreeMap ;"+
    983             "listMap =  new java.util.TreeMap ;"+
    984             "listlistMap = new java.util.TreeMap ;"+
    985             "listmapMap =  new java.util.TreeMap ;"+
    986             "for (key in "+varInJS+") {"+
    987             "  val = "+varInJS+"[key];"+
    988             "  type = typeof val == 'string' ? 'string' : val.type;"+
    989             "  if (type == 'string') {"+
    990             "    stringMap.put(key, val);"+
    991             "  } else if (type == 'list') {"+
    992             "    l = new java.util.ArrayList;"+
    993             "    for (i=0; i<val.length; i++) {"+
    994             "      l.add(java.lang.String.valueOf(val[i]));"+
    995             "    }"+
    996             "    listMap.put(key, l);"+
    997             "  } else if (type == 'listlist') {"+
    998             "    l = new java.util.ArrayList;"+
    999             "    for (i=0; i<val.length; i++) {"+
    1000             "      list=val[i];"+
    1001             "      jlist=new java.util.ArrayList;"+
    1002             "      for (j=0; j<list.length; j++) {"+
    1003             "         jlist.add(java.lang.String.valueOf(list[j]));"+
    1004             "      }"+
    1005             "      l.add(jlist);"+
    1006             "    }"+
    1007             "    listlistMap.put(key, l);"+
    1008             "  } else if (type == 'listmap') {"+
    1009             "    l = new java.util.ArrayList;"+
    1010             "    for (i=0; i<val.length; i++) {"+
    1011             "      map=val[i];"+
    1012             "      jmap=new java.util.TreeMap;"+
    1013             "      for (var key2 in map) {"+
    1014             "         jmap.put(key2,java.lang.String.valueOf(map[key2]));"+
    1015             "      }"+
    1016             "      l.add(jmap);"+
    1017             "    }"+
    1018             "    listmapMap.put(key, l);"+
    1019             "  }  else {" +
    1020             "   org.openstreetmap.josm.data.CustomConfigurator.log('Unknown type:'+val.type+ '- use list, listlist or listmap'); }"+
    1021             "  }";
    1022         engine.eval(finish);
    1023 
    1024         @SuppressWarnings("unchecked")
    1025         Map<String, String> stringMap = (Map<String, String>) engine.get("stringMap");
    1026         @SuppressWarnings("unchecked")
    1027         Map<String, List<String>> listMap = (Map<String, List<String>>) engine.get("listMap");
    1028         @SuppressWarnings("unchecked")
    1029         Map<String, List<Collection<String>>> listlistMap = (Map<String, List<Collection<String>>>) engine.get("listlistMap");
    1030         @SuppressWarnings("unchecked")
    1031         Map<String, List<Map<String, String>>> listmapMap = (Map<String, List<Map<String, String>>>) engine.get("listmapMap");
    1032 
    1033         tmpPref.settingsMap.clear();
    1034 
    1035         Map<String, Setting<?>> tmp = new HashMap<>();
    1036         for (Entry<String, String> e : stringMap.entrySet()) {
    1037             tmp.put(e.getKey(), new StringSetting(e.getValue()));
    1038         }
    1039         for (Entry<String, List<String>> e : listMap.entrySet()) {
    1040             tmp.put(e.getKey(), new ListSetting(e.getValue()));
    1041         }
    1042 
    1043         for (Entry<String, List<Collection<String>>> e : listlistMap.entrySet()) {
    1044             @SuppressWarnings({ "unchecked", "rawtypes" })
    1045             List<List<String>> value = (List) e.getValue();
    1046             tmp.put(e.getKey(), new ListListSetting(value));
    1047         }
    1048         for (Entry<String, List<Map<String, String>>> e : listmapMap.entrySet()) {
    1049             tmp.put(e.getKey(), new MapListSetting(e.getValue()));
    1050         }
    1051         for (Entry<String, Setting<?>> e : tmp.entrySet()) {
    1052             if (e.getValue().equals(tmpPref.defaultsMap.get(e.getKey()))) continue;
    1053             tmpPref.settingsMap.put(e.getKey(), e.getValue());
    1054         }
    1055     }
    1056 
    1057     /**
    1058      * Convert preferences data structures to JavaScript object
    1059      * @param engine - JS engine to put object
    1060      * @param tmpPref - preferences to convert
    1061      * @param whereToPutInJS - variable name to store preferences in JS
    1062      * @param includeDefaults - include known default values to JS objects
    1063      * @throws ScriptException if the evaluation fails
    1064      */
    1065     public static void loadPrefsToJS(ScriptEngine engine, Preferences tmpPref, String whereToPutInJS, boolean includeDefaults)
    1066             throws ScriptException {
    1067         Map<String, String> stringMap = new TreeMap<>();
    1068         Map<String, List<String>> listMap = new TreeMap<>();
    1069         Map<String, List<List<String>>> listlistMap = new TreeMap<>();
    1070         Map<String, List<Map<String, String>>> listmapMap = new TreeMap<>();
    1071 
    1072         if (includeDefaults) {
    1073             for (Map.Entry<String, Setting<?>> e: tmpPref.defaultsMap.entrySet()) {
    1074                 Setting<?> setting = e.getValue();
    1075                 if (setting instanceof StringSetting) {
    1076                     stringMap.put(e.getKey(), ((StringSetting) setting).getValue());
    1077                 } else if (setting instanceof ListSetting) {
    1078                     listMap.put(e.getKey(), ((ListSetting) setting).getValue());
    1079                 } else if (setting instanceof ListListSetting) {
    1080                     listlistMap.put(e.getKey(), ((ListListSetting) setting).getValue());
    1081                 } else if (setting instanceof MapListSetting) {
    1082                     listmapMap.put(e.getKey(), ((MapListSetting) setting).getValue());
    1083                 }
    1084             }
    1085         }
    1086         tmpPref.settingsMap.entrySet().removeIf(e -> e.getValue().getValue() == null);
    1087 
    1088         for (Map.Entry<String, Setting<?>> e: tmpPref.settingsMap.entrySet()) {
    1089             Setting<?> setting = e.getValue();
    1090             if (setting instanceof StringSetting) {
    1091                 stringMap.put(e.getKey(), ((StringSetting) setting).getValue());
    1092             } else if (setting instanceof ListSetting) {
    1093                 listMap.put(e.getKey(), ((ListSetting) setting).getValue());
    1094             } else if (setting instanceof ListListSetting) {
    1095                 listlistMap.put(e.getKey(), ((ListListSetting) setting).getValue());
    1096             } else if (setting instanceof MapListSetting) {
    1097                 listmapMap.put(e.getKey(), ((MapListSetting) setting).getValue());
    1098             }
    1099         }
    1100 
    1101         engine.put("stringMap", stringMap);
    1102         engine.put("listMap", listMap);
    1103         engine.put("listlistMap", listlistMap);
    1104         engine.put("listmapMap", listmapMap);
    1105 
    1106         String init =
    1107             "function getJSList( javaList ) {"+
    1108             " var jsList; var i; "+
    1109             " if (javaList == null) return null;"+
    1110             "jsList = [];"+
    1111             "  for (i = 0; i < javaList.size(); i++) {"+
    1112             "    jsList.push(String(list.get(i)));"+
    1113             "  }"+
    1114             "return jsList;"+
    1115             "}"+
    1116             "function getJSMap( javaMap ) {"+
    1117             " var jsMap; var it; var e; "+
    1118             " if (javaMap == null) return null;"+
    1119             " jsMap = {};"+
    1120             " for (it = javaMap.entrySet().iterator(); it.hasNext();) {"+
    1121             "    e = it.next();"+
    1122             "    jsMap[ String(e.getKey()) ] = String(e.getValue()); "+
    1123             "  }"+
    1124             "  return jsMap;"+
    1125             "}"+
    1126             "for (it = stringMap.entrySet().iterator(); it.hasNext();) {"+
    1127             "  e = it.next();"+
    1128             whereToPutInJS+"[String(e.getKey())] = String(e.getValue());"+
    1129             "}\n"+
    1130             "for (it = listMap.entrySet().iterator(); it.hasNext();) {"+
    1131             "  e = it.next();"+
    1132             "  list = e.getValue();"+
    1133             "  jslist = getJSList(list);"+
    1134             "  jslist.type = 'list';"+
    1135             whereToPutInJS+"[String(e.getKey())] = jslist;"+
    1136             "}\n"+
    1137             "for (it = listlistMap.entrySet().iterator(); it.hasNext(); ) {"+
    1138             "  e = it.next();"+
    1139             "  listlist = e.getValue();"+
    1140             "  jslistlist = [];"+
    1141             "  for (it2 = listlist.iterator(); it2.hasNext(); ) {"+
    1142             "    list = it2.next(); "+
    1143             "    jslistlist.push(getJSList(list));"+
    1144             "    }"+
    1145             "  jslistlist.type = 'listlist';"+
    1146             whereToPutInJS+"[String(e.getKey())] = jslistlist;"+
    1147             "}\n"+
    1148             "for (it = listmapMap.entrySet().iterator(); it.hasNext();) {"+
    1149             "  e = it.next();"+
    1150             "  listmap = e.getValue();"+
    1151             "  jslistmap = [];"+
    1152             "  for (it2 = listmap.iterator(); it2.hasNext();) {"+
    1153             "    map = it2.next();"+
    1154             "    jslistmap.push(getJSMap(map));"+
    1155             "    }"+
    1156             "  jslistmap.type = 'listmap';"+
    1157             whereToPutInJS+"[String(e.getKey())] = jslistmap;"+
    1158             "}\n";
    1159 
    1160             // Execute conversion script
    1161             engine.eval(init);
    1162         }
    1163     }
    1164748}
  • trunk/src/org/openstreetmap/josm/gui/io/RecentlyOpenedFilesMenu.java

    r11366 r12634  
    1919import org.openstreetmap.josm.Main;
    2020import org.openstreetmap.josm.actions.OpenFileAction.OpenFileTask;
     21import org.openstreetmap.josm.gui.MainApplication;
    2122import org.openstreetmap.josm.tools.ImageProvider;
    2223
     
    8586            OpenFileTask task = new OpenFileTask(Collections.singletonList(new File(file)), null);
    8687            task.setRecordHistory(true);
    87             Main.worker.submit(task);
     88            MainApplication.worker.submit(task);
    8889        }
    8990    }
  • trunk/src/org/openstreetmap/josm/gui/layer/AutosaveTask.java

    r12633 r12634  
    11// License: GPL. For details, see LICENSE file.
    2 package org.openstreetmap.josm.data;
     2package org.openstreetmap.josm.gui.layer;
    33
    44import static org.openstreetmap.josm.tools.I18n.marktr;
     
    3737import org.openstreetmap.josm.data.preferences.BooleanProperty;
    3838import org.openstreetmap.josm.data.preferences.IntegerProperty;
     39import org.openstreetmap.josm.gui.MainApplication;
    3940import org.openstreetmap.josm.gui.Notification;
    4041import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
     
    4243import org.openstreetmap.josm.gui.layer.LayerManager.LayerOrderChangeEvent;
    4344import org.openstreetmap.josm.gui.layer.LayerManager.LayerRemoveEvent;
    44 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    4545import org.openstreetmap.josm.gui.util.GuiHelper;
    4646import org.openstreetmap.josm.io.OsmExporter;
     
    371371        List<File> files = getUnsavedLayersFiles();
    372372        final OpenFileTask openFileTsk = new OpenFileTask(files, null, tr("Restoring files"));
    373         final Future<?> openFilesFuture = Main.worker.submit(openFileTsk);
    374         return Main.worker.submit(() -> {
     373        final Future<?> openFilesFuture = MainApplication.worker.submit(openFileTsk);
     374        return MainApplication.worker.submit(() -> {
    375375            try {
    376376                // Wait for opened tasks to be generated.
  • trunk/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java

    r12630 r12634  
    316316
    317317    public static void create(Collection<File> files, GpxLayer gpxLayer) {
    318         Main.worker.execute(new Loader(files, gpxLayer));
     318        MainApplication.worker.execute(new Loader(files, gpxLayer));
    319319    }
    320320
  • trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongTrackAction.java

    r12167 r12634  
    88import java.awt.geom.Rectangle2D;
    99
    10 import org.openstreetmap.josm.Main;
    1110import org.openstreetmap.josm.actions.DownloadAlongAction;
    1211import org.openstreetmap.josm.data.coor.LatLon;
     
    1514import org.openstreetmap.josm.data.gpx.GpxTrackSegment;
    1615import org.openstreetmap.josm.data.gpx.WayPoint;
     16import org.openstreetmap.josm.gui.MainApplication;
    1717import org.openstreetmap.josm.gui.PleaseWaitRunnable;
    1818import org.openstreetmap.josm.gui.help.HelpUtil;
     
    197197        PleaseWaitRunnable task = createTask();
    198198        if (task != null) {
    199             Main.worker.submit(task);
     199            MainApplication.worker.submit(task);
    200200        }
    201201    }
  • trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadWmsAlongTrackAction.java

    r12620 r12634  
    2121import org.openstreetmap.josm.data.gpx.GpxTrackSegment;
    2222import org.openstreetmap.josm.data.gpx.WayPoint;
     23import org.openstreetmap.josm.gui.MainApplication;
    2324import org.openstreetmap.josm.gui.PleaseWaitRunnable;
    2425import org.openstreetmap.josm.gui.layer.AbstractTileSourceLayer;
     
    109110        PrecacheWmsTask task = createTask();
    110111        if (task != null) {
    111             Main.worker.execute(task);
     112            MainApplication.worker.execute(task);
    112113        }
    113114    }
  • trunk/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java

    r12620 r12634  
    2222import org.openstreetmap.josm.data.osm.Node;
    2323import org.openstreetmap.josm.data.osm.Tag;
     24import org.openstreetmap.josm.gui.MainApplication;
    2425import org.openstreetmap.josm.gui.PleaseWaitRunnable;
    2526import org.openstreetmap.josm.gui.layer.Layer;
     
    349350            toReload.add(data.get(i));
    350351        }
    351         Main.worker.submit(new MapPaintStyleLoader(toReload));
     352        MainApplication.worker.submit(new MapPaintStyleLoader(toReload));
    352353    }
    353354
  • trunk/src/org/openstreetmap/josm/gui/mappaint/StyleSetting.java

    r12620 r12634  
    1111
    1212import org.openstreetmap.josm.Main;
     13import org.openstreetmap.josm.gui.MainApplication;
    1314import org.openstreetmap.josm.tools.Logging;
    1415
     
    7071                public void actionPerformed(ActionEvent e) {
    7172                    setValue(item.isSelected());
    72                     Main.worker.submit(new MapPaintStyles.MapPaintStyleLoader(Arrays.asList(parentStyle)));
     73                    MainApplication.worker.submit(new MapPaintStyles.MapPaintStyleLoader(Arrays.asList(parentStyle)));
    7374                }
    7475            };
  • trunk/src/org/openstreetmap/josm/gui/oauth/OAuthAuthorizationWizard.java

    r10791 r12634  
    3636
    3737import org.openstreetmap.josm.Main;
    38 import org.openstreetmap.josm.data.CustomConfigurator;
    3938import org.openstreetmap.josm.data.Preferences;
    4039import org.openstreetmap.josm.data.oauth.OAuthParameters;
     
    306305    public void initFromPreferences() {
    307306        // Copy current JOSM preferences to update API url with the one used in this wizard
    308         Preferences copyPref = CustomConfigurator.clonePreferences(Main.pref);
     307        Preferences copyPref = new Preferences(Main.pref);
    309308        copyPref.put("osm-server.url", apiUrl);
    310309        pnlFullyAutomaticAuthorisationUI.initFromPreferences(copyPref);
  • trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java

    r12620 r12634  
    3535import org.openstreetmap.josm.gui.HelpAwareOptionPane;
    3636import org.openstreetmap.josm.gui.HelpAwareOptionPane.ButtonSpec;
     37import org.openstreetmap.josm.gui.MainApplication;
    3738import org.openstreetmap.josm.gui.preferences.advanced.AdvancedPreference;
    3839import org.openstreetmap.josm.gui.preferences.audio.AudioPreference;
     
    418419                // if we have to launch a plugin download task we do it asynchronously, followed
    419420                // by the remaining "save preferences" activites run on the Swing EDT.
    420                 Main.worker.submit(task);
    421                 Main.worker.submit(() -> SwingUtilities.invokeLater(continuation));
     421                MainApplication.worker.submit(task);
     422                MainApplication.worker.submit(() -> SwingUtilities.invokeLater(continuation));
    422423            } else {
    423424                // no need for asynchronous activities. Simply run the remaining "save preference"
  • trunk/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java

    r12620 r12634  
    7979import org.openstreetmap.josm.gui.ExtendedDialog;
    8080import org.openstreetmap.josm.gui.HelpAwareOptionPane;
     81import org.openstreetmap.josm.gui.MainApplication;
    8182import org.openstreetmap.josm.gui.PleaseWaitRunnable;
    8283import org.openstreetmap.josm.gui.util.FileFilterAllFiles;
     
    533534     */
    534535    protected void reloadAvailableSources(String url, List<SourceProvider> sourceProviders) {
    535         Main.worker.submit(new SourceLoader(url, sourceProviders));
     536        MainApplication.worker.submit(new SourceLoader(url, sourceProviders));
    536537    }
    537538
  • trunk/src/org/openstreetmap/josm/gui/preferences/advanced/AdvancedPreference.java

    r12620 r12634  
    3838import org.openstreetmap.josm.Main;
    3939import org.openstreetmap.josm.actions.DiskAccessAction;
    40 import org.openstreetmap.josm.data.CustomConfigurator;
    4140import org.openstreetmap.josm.data.Preferences;
    4241import org.openstreetmap.josm.data.preferences.Setting;
    4342import org.openstreetmap.josm.data.preferences.StringSetting;
    4443import org.openstreetmap.josm.gui.dialogs.LogShowDialog;
     44import org.openstreetmap.josm.gui.io.CustomConfigurator;
    4545import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting;
    4646import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
     
    258258            return;
    259259
    260         Preferences tmpPrefs = CustomConfigurator.clonePreferences(Main.pref);
     260        Preferences tmpPrefs = new Preferences(Main.pref);
    261261
    262262        StringBuilder log = new StringBuilder();
     
    408408        @Override
    409409        public void actionPerformed(ActionEvent ae) {
    410             Preferences tmpPrefs = CustomConfigurator.clonePreferences(Main.pref);
     410            Preferences tmpPrefs = new Preferences(Main.pref);
    411411            CustomConfigurator.readXML(file, tmpPrefs);
    412412            readPreferences(tmpPrefs);
  • trunk/src/org/openstreetmap/josm/gui/preferences/advanced/ExportProfileAction.java

    r9845 r12634  
    1919import org.openstreetmap.josm.Main;
    2020import org.openstreetmap.josm.actions.DiskAccessAction;
    21 import org.openstreetmap.josm.data.CustomConfigurator;
    2221import org.openstreetmap.josm.data.Preferences;
    2322import org.openstreetmap.josm.data.preferences.Setting;
     23import org.openstreetmap.josm.gui.io.CustomConfigurator;
    2424import org.openstreetmap.josm.gui.widgets.AbstractFileChooser;
    2525import org.openstreetmap.josm.tools.Utils;
  • trunk/src/org/openstreetmap/josm/gui/preferences/imagery/CacheContentsPanel.java

    r12620 r12634  
    2727import org.apache.commons.jcs.engine.stats.behavior.IStatElement;
    2828import org.apache.commons.jcs.engine.stats.behavior.IStats;
    29 import org.openstreetmap.josm.Main;
    3029import org.openstreetmap.josm.data.cache.BufferedImageCacheEntry;
     30import org.openstreetmap.josm.gui.MainApplication;
    3131import org.openstreetmap.josm.gui.layer.TMSLayer;
    3232import org.openstreetmap.josm.gui.layer.WMSLayer;
     
    5151    public CacheContentsPanel() {
    5252        super(new GridBagLayout());
    53         Main.worker.submit(() -> {
     53        MainApplication.worker.submit(() -> {
    5454            addToPanel(TMSLayer.getCache(), "TMS");
    5555            addToPanel(WMSLayer.getCache(), "WMS");
  • trunk/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreference.java

    r12620 r12634  
    6161import org.openstreetmap.josm.data.imagery.Shape;
    6262import org.openstreetmap.josm.data.preferences.ColorProperty;
     63import org.openstreetmap.josm.gui.MainApplication;
    6364import org.openstreetmap.josm.gui.download.DownloadDialog;
    6465import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting;
     
    657658            @Override
    658659            public void actionPerformed(ActionEvent evt) {
    659                 layerInfo.loadDefaults(true, false, false);
     660                layerInfo.loadDefaults(true, MainApplication.worker, false);
    660661                defaultModel.fireTableDataChanged();
    661662                defaultTable.getSelectionModel().clearSelection();
  • trunk/src/org/openstreetmap/josm/gui/preferences/map/BackupPreference.java

    r10611 r12634  
    1515import javax.swing.JSeparator;
    1616
    17 import org.openstreetmap.josm.data.AutosaveTask;
    1817import org.openstreetmap.josm.data.preferences.BooleanProperty;
     18import org.openstreetmap.josm.gui.layer.AutosaveTask;
    1919import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory;
    2020import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
  • trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginPreference.java

    r12620 r12634  
    4747import org.openstreetmap.josm.gui.HelpAwareOptionPane;
    4848import org.openstreetmap.josm.gui.HelpAwareOptionPane.ButtonSpec;
     49import org.openstreetmap.josm.gui.MainApplication;
    4950import org.openstreetmap.josm.gui.help.HelpUtil;
    5051import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting;
     
    328329            }
    329330        };
    330         Main.worker.submit(task);
    331         Main.worker.submit(r);
     331        MainApplication.worker.submit(task);
     332        MainApplication.worker.submit(r);
    332333    }
    333334
     
    362363                }
    363364            };
    364             Main.worker.submit(task);
    365             Main.worker.submit(continuation);
     365            MainApplication.worker.submit(task);
     366            MainApplication.worker.submit(continuation);
    366367        }
    367368    }
     
    436437                }
    437438                pluginDownloadTask.setPluginsToDownload(toUpdate);
    438                 Main.worker.submit(pluginDownloadTask);
    439                 Main.worker.submit(pluginDownloadContinuation);
     439                MainApplication.worker.submit(pluginDownloadTask);
     440                MainApplication.worker.submit(pluginDownloadContinuation);
    440441            };
    441442
    442             Main.worker.submit(pluginInfoDownloadTask);
    443             Main.worker.submit(pluginInfoDownloadContinuation);
     443            MainApplication.worker.submit(pluginInfoDownloadTask);
     444            MainApplication.worker.submit(pluginInfoDownloadContinuation);
    444445        }
    445446    }
  • trunk/src/org/openstreetmap/josm/gui/preferences/server/OAuthAuthenticationPreferencesPanel.java

    r12620 r12634  
    2626import org.openstreetmap.josm.data.oauth.OAuthParameters;
    2727import org.openstreetmap.josm.data.oauth.OAuthToken;
     28import org.openstreetmap.josm.gui.MainApplication;
    2829import org.openstreetmap.josm.gui.oauth.AdvancedOAuthPropertiesPanel;
    2930import org.openstreetmap.josm.gui.oauth.OAuthAuthorizationWizard;
     
    315316                    OAuthAuthenticationPreferencesPanel.this,
    316317                    apiUrl,
    317                     Main.worker);
     318                    MainApplication.worker);
    318319            try {
    319320                wizard.showDialog();
     
    364365                    token
    365366            );
    366             Main.worker.submit(task);
     367            MainApplication.worker.submit(task);
    367368        }
    368369    }
  • trunk/src/org/openstreetmap/josm/gui/preferences/server/OsmApiUrlInputPanel.java

    r12620 r12634  
    2929import org.openstreetmap.josm.Main;
    3030import org.openstreetmap.josm.data.preferences.CollectionProperty;
     31import org.openstreetmap.josm.gui.MainApplication;
    3132import org.openstreetmap.josm.gui.help.HelpUtil;
    3233import org.openstreetmap.josm.gui.widgets.AbstractTextComponentValidator;
     
    186187            final String url = getStrippedApiUrl();
    187188            final ApiUrlTestTask task = new ApiUrlTestTask(OsmApiUrlInputPanel.this, url);
    188             Main.worker.submit(task);
     189            MainApplication.worker.submit(task);
    189190            Runnable r = () -> {
    190191                if (task.isCanceled())
     
    203204                SwingUtilities.invokeLater(r1);
    204205            };
    205             Main.worker.submit(r);
     206            MainApplication.worker.submit(r);
    206207        }
    207208
  • trunk/src/org/openstreetmap/josm/gui/util/GuiHelper.java

    r12620 r12634  
    5050import org.openstreetmap.josm.data.preferences.StrokeProperty;
    5151import org.openstreetmap.josm.gui.ExtendedDialog;
     52import org.openstreetmap.josm.gui.MainApplication;
    5253import org.openstreetmap.josm.gui.widgets.HtmlPanel;
    5354import org.openstreetmap.josm.tools.CheckParameterUtil;
     
    9394     */
    9495    public static void executeByMainWorkerInEDT(final Runnable task) {
    95         Main.worker.submit(() -> runInEDTAndWait(task));
     96        MainApplication.worker.submit(() -> runInEDTAndWait(task));
    9697    }
    9798
  • trunk/src/org/openstreetmap/josm/io/FileWatcher.java

    r12620 r12634  
    1414import java.util.HashMap;
    1515import java.util.Map;
     16import java.util.concurrent.Executors;
    1617
    17 import org.openstreetmap.josm.Main;
    1818import org.openstreetmap.josm.data.validation.OsmValidator;
    1919import org.openstreetmap.josm.data.validation.tests.MapCSSTagChecker;
     
    2424import org.openstreetmap.josm.tools.CheckParameterUtil;
    2525import org.openstreetmap.josm.tools.Logging;
     26import org.openstreetmap.josm.tools.Utils;
    2627
    2728/**
     
    140141                    if (style != null) {
    141142                        Logging.info("Map style "+style.getDisplayString()+" has been modified. Reloading style...");
    142                         Main.worker.submit(new MapPaintStyleLoader(Collections.singleton(style)));
     143                        Executors.newSingleThreadExecutor(Utils.newThreadFactory("mapstyle-reload-%d", Thread.NORM_PRIORITY)).submit(
     144                                new MapPaintStyleLoader(Collections.singleton(style)));
    143145                    } else if (rule != null) {
    144146                        Logging.info("Validator rule "+rule.getDisplayString()+" has been modified. Reloading rule...");
  • trunk/src/org/openstreetmap/josm/io/OsmConnection.java

    r12620 r12634  
    121121            }
    122122            final Runnable authTask = new FutureTask<>(() -> {
    123                 // Concerning Utils.newDirectExecutor: Main.worker cannot be used since this connection is already
    124                 // executed via Main.worker. The OAuth connections would block otherwise.
     123                // Concerning Utils.newDirectExecutor: Main worker cannot be used since this connection is already
     124                // executed via main worker. The OAuth connections would block otherwise.
    125125                final OAuthAuthorizationWizard wizard = new OAuthAuthorizationWizard(
    126126                        Main.parent, apiUrl.toExternalForm(), Utils.newDirectExecutor());
  • trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java

    r12630 r12634  
    145145                        Future<?> future = osmTask.download(newLayer, new Bounds(minlat, minlon, maxlat, maxlon),
    146146                                null /* let the task manage the progress monitor */);
    147                         Main.worker.submit(new PostDownloadHandler(osmTask, future));
     147                        MainApplication.worker.submit(new PostDownloadHandler(osmTask, future));
    148148                    }
    149149                }
     
    196196            try {
    197197                final SearchCompiler.Match search = SearchCompiler.compile(args.get("search"));
    198                 Main.worker.submit(() -> {
     198                MainApplication.worker.submit(() -> {
    199199                    final DataSet ds = Main.getLayerManager().getEditDataSet();
    200200                    final Collection<OsmPrimitive> filteredPrimitives = SubclassFilteredCollection.filter(ds.allPrimitives(), search);
     
    214214        // add changeset tags after download if necessary
    215215        if (args.containsKey("changeset_comment") || args.containsKey("changeset_source")) {
    216             Main.worker.submit(() -> {
     216            MainApplication.worker.submit(() -> {
    217217                if (Main.getLayerManager().getEditDataSet() != null) {
    218218                    if (args.containsKey("changeset_comment")) {
  • trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadDataHandler.java

    r9990 r12634  
    77import java.nio.charset.StandardCharsets;
    88
    9 import org.openstreetmap.josm.Main;
    109import org.openstreetmap.josm.actions.downloadtasks.DownloadOsmTask;
    1110import org.openstreetmap.josm.data.osm.DataSet;
     11import org.openstreetmap.josm.gui.MainApplication;
    1212import org.openstreetmap.josm.io.IllegalDataException;
    1313import org.openstreetmap.josm.io.OsmReader;
     
    4040    @Override
    4141    protected void handleRequest() throws RequestHandlerErrorException {
    42         Main.worker.submit(new LoadDataTask(isLoadInNewLayer(), dataSet, args.get("layer_name")));
     42        MainApplication.worker.submit(new LoadDataTask(isLoadInNewLayer(), dataSet, args.get("layer_name")));
    4343    }
    4444
  • trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandler.java

    r12620 r12634  
    1414import org.openstreetmap.josm.data.osm.PrimitiveId;
    1515import org.openstreetmap.josm.data.osm.SimplePrimitiveId;
     16import org.openstreetmap.josm.gui.MainApplication;
    1617import org.openstreetmap.josm.gui.io.DownloadPrimitivesWithReferrersTask;
    1718import org.openstreetmap.josm.gui.util.GuiHelper;
     
    6869            final DownloadPrimitivesWithReferrersTask task = new DownloadPrimitivesWithReferrersTask(
    6970                    newLayer, ps, referrers, relationMembers, args.get("layer_name"), null);
    70             Main.worker.submit(task);
    71             Main.worker.submit(() -> {
     71            MainApplication.worker.submit(task);
     72            MainApplication.worker.submit(() -> {
    7273                final List<PrimitiveId> downloaded = task.getDownloadedId();
    7374                final DataSet ds = Main.getLayerManager().getEditDataSet();
  • trunk/src/org/openstreetmap/josm/io/session/SessionImporter.java

    r8404 r12634  
    77import java.io.IOException;
    88
    9 import org.openstreetmap.josm.Main;
    109import org.openstreetmap.josm.actions.ExtensionFileFilter;
    1110import org.openstreetmap.josm.actions.SessionLoadAction.Loader;
     11import org.openstreetmap.josm.gui.MainApplication;
    1212import org.openstreetmap.josm.gui.progress.ProgressMonitor;
    1313import org.openstreetmap.josm.io.FileImporter;
     
    3737    public void importData(File file, ProgressMonitor progressMonitor) throws IOException, IllegalDataException {
    3838        boolean zip = Utils.hasExtension(file, "joz");
    39         Main.worker.submit(new Loader(file, zip));
     39        MainApplication.worker.submit(new Loader(file, zip));
    4040    }
    4141}
  • trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java

    r12627 r12634  
    5757import org.openstreetmap.josm.gui.HelpAwareOptionPane;
    5858import org.openstreetmap.josm.gui.HelpAwareOptionPane.ButtonSpec;
     59import org.openstreetmap.josm.gui.MainApplication;
    5960import org.openstreetmap.josm.gui.download.DownloadSelection;
    6061import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory;
     
    590591        final ReadRemotePluginInformationTask pluginInfoDownloadTask = new ReadRemotePluginInformationTask(
    591592                Main.pref.getOnlinePluginSites());
    592         Main.worker.submit(pluginInfoDownloadTask);
     593        MainApplication.worker.submit(pluginInfoDownloadTask);
    593594
    594595        // Continuation
    595         Main.worker.submit(() -> {
     596        MainApplication.worker.submit(() -> {
    596597            // Build list of plugins to download
    597598            Set<PluginInformation> toDownload = new HashSet<>(pluginInfoDownloadTask.getAvailablePlugins());
     
    601602                // download plugins
    602603                final PluginDownloadTask task = new PluginDownloadTask(parent, toDownload, tr("Download plugins"));
    603                 Main.worker.submit(task);
    604                 Main.worker.submit(() -> {
     604                MainApplication.worker.submit(task);
     605                MainApplication.worker.submit(() -> {
    605606                    // restart if some plugins have been downloaded
    606607                    if (!task.getDownloadedPlugins().isEmpty()) {
  • trunk/src/org/openstreetmap/josm/tools/PlatformHookOsx.java

    r12620 r12634  
    1717import java.util.Collections;
    1818import java.util.List;
     19import java.util.concurrent.Executors;
    1920
    2021import javax.swing.UIManager;
     
    148149                    Object oFiles = args[0].getClass().getMethod("getFiles").invoke(args[0]);
    149150                    if (oFiles instanceof List) {
    150                         Main.worker.submit(new OpenFileTask((List<File>) oFiles, null) {
     151                        Executors.newSingleThreadExecutor(Utils.newThreadFactory("openFiles-%d", Thread.NORM_PRIORITY)).submit(
     152                                new OpenFileTask((List<File>) oFiles, null) {
    151153                            @Override
    152154                            protected void realRun() throws SAXException, IOException, OsmTransferException {
Note: See TracChangeset for help on using the changeset viewer.