Changeset 10340 in josm for trunk/src/org/openstreetmap/josm/Main.java
- Timestamp:
- 2016-06-08T09:33:20+02:00 (10 years ago)
- File:
-
- 1 edited
-
trunk/src/org/openstreetmap/josm/Main.java (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/Main.java
r10288 r10340 9 9 import java.awt.GridBagLayout; 10 10 import java.awt.Window; 11 import java.awt.event.ComponentEvent;12 import java.awt.event.ComponentListener;13 11 import java.awt.event.KeyEvent; 14 12 import java.awt.event.WindowAdapter; … … 47 45 import javax.swing.InputMap; 48 46 import javax.swing.JComponent; 49 import javax.swing.JFrame;50 47 import javax.swing.JOptionPane; 51 48 import javax.swing.JPanel; … … 121 118 import org.openstreetmap.josm.tools.Shortcut; 122 119 import org.openstreetmap.josm.tools.Utils; 123 import org.openstreetmap.josm.tools.WindowGeometry;124 120 125 121 /** … … 563 559 564 560 /** 565 * Constructs new {@code Main} object. A lot of global variables are initialized here. 561 * Constructs new {@code Main} object. 562 * @see #initialize() 566 563 */ 567 564 public Main() { 568 565 main = this; 566 } 567 568 /** 569 * Initializes the main object. A lot of global variables are initialized here. 570 * @since 10340 571 */ 572 public void initialize() { 569 573 isOpenjdk = System.getProperty("java.vm.name").toUpperCase(Locale.ENGLISH).indexOf("OPENJDK") != -1; 570 574 fileWatcher.start(); … … 581 585 @Override 582 586 public void initialize() { 583 contentPanePrivate.add(panel, BorderLayout.CENTER); 584 panel.add(gettingStarted, BorderLayout.CENTER); 585 menu = new MainMenu(); 587 initializeMainWindow(); 586 588 } 587 589 }.call(); … … 715 717 } 716 718 719 /** 720 * Called once at startup to initialize the main window content. 721 * Should set {@link #menu} 722 */ 723 protected void initializeMainWindow() { 724 // can be implementd by subclasses 725 } 726 717 727 private abstract static class InitializationTask implements Callable<Void> { 718 728 … … 936 946 */ 937 947 public static final JPanel panel = new JPanel(new BorderLayout()); 938 939 protected static volatile WindowGeometry geometry;940 protected static int windowState = JFrame.NORMAL;941 948 942 949 private final CommandQueueListener redoUndoListener = new CommandQueueListener() { … … 1016 1023 } 1017 1024 1018 geometry = WindowGeometry.mainWindow("gui.geometry",1019 args.containsKey(Option.GEOMETRY) ? args.get(Option.GEOMETRY).iterator().next() : null,1020 !args.containsKey(Option.NO_MAXIMIZE) && Main.pref.getBoolean("gui.maximized", false));1021 1025 } 1022 1026 … … 1107 1111 public static boolean exitJosm(boolean exit, int exitCode) { 1108 1112 if (Main.saveUnsavedModifications()) { 1109 worker.shutdown(); 1110 ImageProvider.shutdown(false); 1111 JCSCacheManager.shutdown(); 1112 if (geometry != null) { 1113 geometry.remember("gui.geometry"); 1114 } 1115 if (map != null) { 1116 map.rememberToggleDialogWidth(); 1117 } 1118 pref.put("gui.maximized", (windowState & JFrame.MAXIMIZED_BOTH) != 0); 1119 // Remove all layers because somebody may rely on layerRemoved events (like AutosaveTask) 1120 if (Main.isDisplayingMapView()) { 1121 Collection<Layer> layers = new ArrayList<>(getLayerManager().getLayers()); 1122 for (Layer l: layers) { 1123 Main.main.removeLayer(l); 1124 } 1125 } 1126 try { 1127 pref.saveDefaults(); 1128 } catch (IOException ex) { 1129 Main.warn(tr("Failed to save default preferences.")); 1130 } 1131 worker.shutdownNow(); 1132 ImageProvider.shutdown(true); 1113 Main.main.shutdown(); 1133 1114 1134 1115 if (exit) { … … 1138 1119 } 1139 1120 return false; 1121 } 1122 1123 protected void shutdown() { 1124 worker.shutdown(); 1125 ImageProvider.shutdown(false); 1126 JCSCacheManager.shutdown(); 1127 if (map != null) { 1128 map.rememberToggleDialogWidth(); 1129 } 1130 // Remove all layers because somebody may rely on layerRemoved events (like AutosaveTask) 1131 if (Main.isDisplayingMapView()) { 1132 Collection<Layer> layers = new ArrayList<>(getLayerManager().getLayers()); 1133 for (Layer l: layers) { 1134 Main.main.removeLayer(l); 1135 } 1136 } 1137 try { 1138 pref.saveDefaults(); 1139 } catch (IOException ex) { 1140 Main.warn(tr("Failed to save default preferences.")); 1141 } 1142 worker.shutdownNow(); 1143 ImageProvider.shutdown(true); 1140 1144 } 1141 1145 … … 1287 1291 platform = new PlatformHookUnixoid(); 1288 1292 } 1289 }1290 1291 private static class WindowPositionSizeListener extends WindowAdapter implements ComponentListener {1292 @Override1293 public void windowStateChanged(WindowEvent e) {1294 Main.windowState = e.getNewState();1295 }1296 1297 @Override1298 public void componentHidden(ComponentEvent e) {1299 // Do nothing1300 }1301 1302 @Override1303 public void componentMoved(ComponentEvent e) {1304 handleComponentEvent(e);1305 }1306 1307 @Override1308 public void componentResized(ComponentEvent e) {1309 handleComponentEvent(e);1310 }1311 1312 @Override1313 public void componentShown(ComponentEvent e) {1314 // Do nothing1315 }1316 1317 private static void handleComponentEvent(ComponentEvent e) {1318 Component c = e.getComponent();1319 if (c instanceof JFrame && c.isVisible()) {1320 if (Main.windowState == JFrame.NORMAL) {1321 Main.geometry = new WindowGeometry((JFrame) c);1322 } else {1323 Main.geometry.fixScreen((JFrame) c);1324 }1325 }1326 }1327 }1328 1329 protected static void addListener() {1330 parent.addComponentListener(new WindowPositionSizeListener());1331 ((JFrame) parent).addWindowStateListener(new WindowPositionSizeListener());1332 1293 } 1333 1294
Note:
See TracChangeset
for help on using the changeset viewer.
