Changeset 14139 in josm for trunk/src/org/openstreetmap/josm/gui/MainApplication.java
- Timestamp:
- 2018-08-12T02:52:44+02:00 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/MainApplication.java
r14138 r14139 6 6 import static org.openstreetmap.josm.tools.Utils.getSystemProperty; 7 7 8 import java.awt.BorderLayout;9 8 import java.awt.Container; 10 9 import java.awt.Dimension; … … 13 12 import java.awt.GridBagLayout; 14 13 import java.awt.Toolkit; 15 import java.awt.event.KeyEvent;16 14 import java.io.File; 17 15 import java.io.IOException; … … 46 44 import java.util.Set; 47 45 import java.util.TreeSet; 48 import java.util.concurrent.Callable;49 46 import java.util.concurrent.ExecutorService; 50 47 import java.util.concurrent.Executors; … … 69 66 70 67 import org.jdesktop.swinghelper.debug.CheckThreadViolationRepaintManager; 71 import org.openstreetmap.gui.jmapviewer.FeatureAdapter;72 68 import org.openstreetmap.josm.Main; 73 69 import org.openstreetmap.josm.actions.DeleteAction; … … 108 104 import org.openstreetmap.josm.data.projection.datum.NTV2GridShiftFileWrapper; 109 105 import org.openstreetmap.josm.data.projection.datum.NTV2Proj4DirGridShiftFileSource; 110 import org.openstreetmap.josm.data.validation.OsmValidator;111 106 import org.openstreetmap.josm.data.validation.tests.MapCSSTagChecker; 112 107 import org.openstreetmap.josm.gui.ProgramArguments.Option; … … 118 113 import org.openstreetmap.josm.gui.io.SaveLayersDialog; 119 114 import org.openstreetmap.josm.gui.layer.AutosaveTask; 120 import org.openstreetmap.josm.gui.layer.ImageryLayer;121 115 import org.openstreetmap.josm.gui.layer.Layer; 122 116 import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent; … … 126 120 import org.openstreetmap.josm.gui.layer.MainLayerManager; 127 121 import org.openstreetmap.josm.gui.layer.OsmDataLayer; 128 import org.openstreetmap.josm.gui.layer.TMSLayer;129 122 import org.openstreetmap.josm.gui.mappaint.RenderingCLI; 130 123 import org.openstreetmap.josm.gui.mappaint.loader.MapPaintStyleLoader; … … 132 125 import org.openstreetmap.josm.gui.preferences.ToolbarPreferences; 133 126 import org.openstreetmap.josm.gui.preferences.display.LafPreference; 134 import org.openstreetmap.josm.gui.preferences.imagery.ImageryPreference;135 import org.openstreetmap.josm.gui.preferences.map.MapPaintPreference;136 127 import org.openstreetmap.josm.gui.preferences.projection.ProjectionPreference; 137 128 import org.openstreetmap.josm.gui.preferences.server.ProxyPreference; 138 129 import org.openstreetmap.josm.gui.progress.swing.ProgressMonitorExecutor; 139 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresets;140 130 import org.openstreetmap.josm.gui.util.GuiHelper; 141 131 import org.openstreetmap.josm.gui.util.RedirectInputMap; … … 149 139 import org.openstreetmap.josm.io.NetworkManager; 150 140 import org.openstreetmap.josm.io.OnlineResource; 151 import org.openstreetmap.josm.io.OsmApi;152 import org.openstreetmap.josm.io.OsmApiInitializationException;153 141 import org.openstreetmap.josm.io.OsmConnection; 154 import org.openstreetmap.josm.io.OsmTransferCanceledException;155 142 import org.openstreetmap.josm.io.OsmTransferException; 156 143 import org.openstreetmap.josm.io.auth.AbstractCredentialsAgent; … … 162 149 import org.openstreetmap.josm.plugins.PluginInformation; 163 150 import org.openstreetmap.josm.spi.lifecycle.InitStatusListener; 164 import org.openstreetmap.josm.spi.lifecycle.InitializationTask;165 151 import org.openstreetmap.josm.spi.lifecycle.Lifecycle; 166 152 import org.openstreetmap.josm.spi.preferences.Config; … … 173 159 import org.openstreetmap.josm.tools.JosmRuntimeException; 174 160 import org.openstreetmap.josm.tools.Logging; 175 import org.openstreetmap.josm.tools.OpenBrowser;176 161 import org.openstreetmap.josm.tools.OsmUrlToBounds; 177 import org.openstreetmap.josm.tools.OverpassTurboQueryWizard;178 162 import org.openstreetmap.josm.tools.PlatformHook.NativeOsCallback; 179 163 import org.openstreetmap.josm.tools.PlatformHookWindows; 180 164 import org.openstreetmap.josm.tools.PlatformManager; 181 import org.openstreetmap.josm.tools.RightAndLefthandTraffic;182 165 import org.openstreetmap.josm.tools.Shortcut; 183 import org.openstreetmap.josm.tools.Territories;184 166 import org.openstreetmap.josm.tools.Utils; 185 167 import org.openstreetmap.josm.tools.bugreport.BugReportExceptionHandler; … … 312 294 * Listener that sets the enabled state of undo/redo menu entries. 313 295 */ 314 privatefinal CommandQueueListener redoUndoListener = (queueSize, redoSize) -> {296 final CommandQueueListener redoUndoListener = (queueSize, redoSize) -> { 315 297 menu.undo.setEnabled(queueSize > 0); 316 298 menu.redo.setEnabled(redoSize > 0); … … 407 389 } 408 390 } 409 }410 411 @Override412 protected List<InitializationTask> beforeInitializationTasks() {413 return Arrays.asList(414 new InitializationTask(tr("Starting file watcher"), FileWatcher.getDefaultInstance()::start),415 new InitializationTask(tr("Executing platform startup hook"),416 () -> PlatformManager.getPlatform().startupHook(MainApplication::askUpdateJava)),417 new InitializationTask(tr("Building main menu"), this::initializeMainWindow),418 new InitializationTask(tr("Updating user interface"), () -> {419 UndoRedoHandler.getInstance().addCommandQueueListener(redoUndoListener);420 // creating toolbar421 GuiHelper.runInEDTAndWait(() -> contentPanePrivate.add(toolbar.control, BorderLayout.NORTH));422 // help shortcut423 registerActionShortcut(menu.help, Shortcut.registerShortcut("system:help", tr("Help"),424 KeyEvent.VK_F1, Shortcut.DIRECT));425 }),426 // This needs to be done before RightAndLefthandTraffic::initialize is called427 new InitializationTask(tr("Initializing internal boundaries data"), Territories::initialize)428 );429 }430 431 @Override432 protected Collection<InitializationTask> parallelInitializationTasks() {433 return Arrays.asList(434 new InitializationTask(tr("Initializing OSM API"), () -> {435 OsmApi.addOsmApiInitializationListener(api -> {436 // This checks if there are any layers currently displayed that are now on the blacklist, and removes them.437 // This is a rare situation - probably only occurs if the user changes the API URL in the preferences menu.438 // Otherwise they would not have been able to load the layers in the first place because they would have been disabled439 if (isDisplayingMapView()) {440 for (Layer l : getLayerManager().getLayersOfType(ImageryLayer.class)) {441 if (((ImageryLayer) l).getInfo().isBlacklisted()) {442 Logging.info(tr("Removed layer {0} because it is not allowed by the configured API.", l.getName()));443 getLayerManager().removeLayer(l);444 }445 }446 }447 });448 // We try to establish an API connection early, so that any API449 // capabilities are already known to the editor instance. However450 // if it goes wrong that's not critical at this stage.451 try {452 OsmApi.getOsmApi().initialize(null, true);453 } catch (OsmTransferCanceledException | OsmApiInitializationException | SecurityException e) {454 Logging.warn(Logging.getErrorMessage(Utils.getRootCause(e)));455 }456 }),457 new InitializationTask(tr("Initializing internal traffic data"), RightAndLefthandTraffic::initialize),458 new InitializationTask(tr("Initializing validator"), OsmValidator::initialize),459 new InitializationTask(tr("Initializing presets"), TaggingPresets::initialize),460 new InitializationTask(tr("Initializing map styles"), MapPaintPreference::initialize),461 new InitializationTask(tr("Loading imagery preferences"), ImageryPreference::initialize)462 );463 }464 465 @Override466 protected List<Callable<?>> asynchronousCallableTasks() {467 return Arrays.asList(468 OverpassTurboQueryWizard::getInstance469 );470 }471 472 @Override473 protected List<Runnable> asynchronousRunnableTasks() {474 return Arrays.asList(475 TMSLayer::getCache,476 OsmValidator::initializeTests477 );478 }479 480 @Override481 protected List<InitializationTask> afterInitializationTasks() {482 return Arrays.asList(483 new InitializationTask(tr("Updating user interface"), () -> GuiHelper.runInEDTAndWait(() -> {484 // hooks for the jmapviewer component485 FeatureAdapter.registerBrowserAdapter(OpenBrowser::displayUrl);486 FeatureAdapter.registerTranslationAdapter(I18n::tr);487 FeatureAdapter.registerLoggingAdapter(name -> Logging.getLogger());488 // UI update489 toolbar.refreshToolbarControl();490 toolbar.control.updateUI();491 contentPanePrivate.updateUI();492 }))493 );494 391 } 495 392 … … 1086 983 1087 984 monitor.indeterminateSubTask(tr("Creating main GUI")); 1088 final Main main = new MainApplication(mainFrame); 1089 main.initialize(); 985 Lifecycle.initialize(new MainInitialization(new MainApplication(mainFrame))); 1090 986 1091 987 if (!skipLoadingPlugins) {
Note:
See TracChangeset
for help on using the changeset viewer.