Ticket #3745: josm-maximize.patch
File josm-maximize.patch, 9.3 KB (added by , 14 years ago) |
---|
-
src/org/openstreetmap/josm/Main.java
diff --git a/src/org/openstreetmap/josm/Main.java b/src/org/openstreetmap/josm/Main.java index 5f40c33..89053a4 100644
a b import java.awt.Component; 7 7 import java.awt.Dimension; 8 8 import java.awt.Rectangle; 9 9 import java.awt.Toolkit; 10 import java.awt.event.ComponentEvent; 11 import java.awt.event.ComponentListener; 10 12 import java.awt.event.KeyEvent; 13 import java.awt.event.WindowAdapter; 14 import java.awt.event.WindowEvent; 11 15 import java.io.File; 12 16 import java.net.URI; 13 17 import java.net.URISyntaxException; … … abstract public class Main { 273 277 public static JPanel panel = new JPanel(new BorderLayout()); 274 278 275 279 protected static Rectangle bounds; 280 protected static int windowState = JFrame.NORMAL; 276 281 277 282 private final CommandQueueListener redoUndoListener = new CommandQueueListener(){ 278 283 public void commandChanged(final int queueSize, final int redoSize) { … … abstract public class Main { 323 328 } 324 329 325 330 Dimension screenDimension = Toolkit.getDefaultToolkit().getScreenSize(); 326 String geometry = Main.pref.get("gui.geometry");331 String geometry = null; 327 332 if (args.containsKey("geometry")) { 328 333 geometry = args.get("geometry").iterator().next(); 334 // Main.debug("Main window geometry from args: \""+geometry+"\""); 335 } else { 336 geometry = Main.pref.get("gui.geometry"); 337 // Main.debug("Main window geometry from preferences: \""+geometry+"\""); 329 338 } 330 339 if (geometry.length() != 0) { 331 340 final Matcher m = Pattern.compile("(\\d+)x(\\d+)(([+-])(\\d+)([+-])(\\d+))?").matcher(geometry); … … abstract public class Main { 343 352 y = screenDimension.height - y - h; 344 353 } 345 354 } 355 // copied from WindowsGeometry.applySafe() 356 if (x > Toolkit.getDefaultToolkit().getScreenSize().width - 10) { 357 x = 0; 358 } 359 if (y > Toolkit.getDefaultToolkit().getScreenSize().height - 10) { 360 y = 0; 361 } 346 362 bounds = new Rectangle(x,y,w,h); 347 363 if(!Main.pref.get("gui.geometry").equals(geometry)) { 348 364 // remember this geometry 365 // Main.debug("Main window: saving geometry \"" + geometry + "\""); 349 366 Main.pref.put("gui.geometry", geometry); 350 367 } 351 368 } else { … … abstract public class Main { 355 372 if (bounds == null) { 356 373 bounds = !args.containsKey("no-maximize") ? new Rectangle(0,0,screenDimension.width,screenDimension.height) : new Rectangle(1000,740); 357 374 } 375 // Main.debug("window geometry: "+bounds); 358 376 } 359 377 360 378 public void postConstructorProcessCmdLine(Map<String, Collection<String>> args) { … … abstract public class Main { 540 558 String newGeometry = ""; 541 559 String newToggleDlgWidth = null; 542 560 try { 543 if (((JFrame)parent).getExtendedState() == JFrame.NORMAL) { 544 Dimension screenDimension = Toolkit.getDefaultToolkit().getScreenSize(); 545 Rectangle bounds = parent.getBounds(); 546 int width = (int)bounds.getWidth(); 547 int height = (int)bounds.getHeight(); 548 int x = (int)bounds.getX(); 549 int y = (int)bounds.getY(); 550 if (width > screenDimension.width) { 551 width = screenDimension.width; 552 } 553 if (height > screenDimension.height) { 554 width = screenDimension.height; 555 } 556 if (x < 0) { 557 x = 0; 558 } 559 if (y < 0) { 560 y = 0; 561 } 562 newGeometry = width + "x" + height + "+" + x + "+" + y; 561 Dimension screenDimension = Toolkit.getDefaultToolkit().getScreenSize(); 562 int width = (int)bounds.getWidth(); 563 int height = (int)bounds.getHeight(); 564 int x = (int)bounds.getX(); 565 int y = (int)bounds.getY(); 566 if (width > screenDimension.width) { 567 width = screenDimension.width; 568 } 569 if (height > screenDimension.height) { 570 width = screenDimension.height; 563 571 } 572 if (x < 0) { 573 x = 0; 574 } 575 if (y < 0) { 576 y = 0; 577 } 578 newGeometry = width + "x" + height + "+" + x + "+" + y; 564 579 565 580 if (map != null) { 566 581 newToggleDlgWidth = Integer.toString(map.getToggleDlgWidth()); … … abstract public class Main { 570 585 } 571 586 } 572 587 catch (Exception e) { 573 System.out.println("Failed to saveGUI geometry: " + e);588 System.out.println("Failed to get GUI geometry: " + e); 574 589 e.printStackTrace(); 575 590 } 591 boolean maximized = (windowState & JFrame.MAXIMIZED_BOTH) != 0; 592 // Main.debug("Main window: saving geometry \"" + newGeometry + "\" " + (maximized?"maximized":"normal")); 593 pref.put("gui.maximized", maximized); 576 594 pref.put("gui.geometry", newGeometry); 577 595 if (newToggleDlgWidth != null) { 578 596 pref.put("toggleDialogs.width", newToggleDlgWidth); 579 597 } 580 598 } 599 private static class WindowPositionSizeListener extends WindowAdapter implements 600 ComponentListener { 601 602 @Override 603 public void windowStateChanged(WindowEvent e) { 604 Main.windowState = e.getNewState(); 605 // Main.debug("Main window state changed to " + Main.windowState); 606 } 607 608 public void componentHidden(ComponentEvent e) { 609 } 610 611 public void componentMoved(ComponentEvent e) { 612 handleComponentEvent(e); 613 } 614 615 public void componentResized(ComponentEvent e) { 616 handleComponentEvent(e); 617 } 618 619 public void componentShown(ComponentEvent e) { 620 } 621 622 private void handleComponentEvent(ComponentEvent e) { 623 Component c = e.getComponent(); 624 if (c instanceof JFrame) { 625 if (Main.windowState == JFrame.NORMAL) { 626 Main.bounds = ((JFrame) c).getBounds(); 627 // Main.debug("Main window: new geometry " + Main.bounds); 628 } else { 629 // Main.debug("Main window state is " + Main.windowState); 630 } 631 } 632 } 633 634 } 635 public static void addListener() { 636 parent.addComponentListener(new WindowPositionSizeListener()); 637 ((JFrame)parent).addWindowStateListener(new WindowPositionSizeListener()); 638 } 581 639 } -
src/org/openstreetmap/josm/gui/MainApplet.java
diff --git a/src/org/openstreetmap/josm/gui/MainApplet.java b/src/org/openstreetmap/josm/gui/MainApplet.java index 5fd5d86..5bef5ef 100644
a b import java.awt.GridBagLayout; 9 9 import java.awt.event.ActionEvent; 10 10 import java.awt.event.KeyEvent; 11 11 import java.io.File; 12 import java.io.IOException;13 12 import java.net.URL; 14 13 import java.util.Arrays; 15 14 import java.util.Collection; … … public class MainApplet extends JApplet { 101 100 ((ServerSidePreferences)Main.pref).download(username, password); 102 101 Main.preConstructorInit(args); 103 102 Main.parent = this; 103 Main.addListener(); 104 104 105 105 // initialize the plaform hook, and 106 106 Main.determinePlatformHook(); -
src/org/openstreetmap/josm/gui/MainApplication.java
diff --git a/src/org/openstreetmap/josm/gui/MainApplication.java b/src/org/openstreetmap/josm/gui/MainApplication.java index 0502515..9c26457 100644
a b public class MainApplication extends Main { 189 189 monitor.indeterminateSubTask(tr("Creating main GUI")); 190 190 JFrame mainFrame = new JFrame(tr("Java OpenStreetMap Editor")); 191 191 Main.parent = mainFrame; 192 Main.addListener(); 192 193 final Main main = new MainApplication(mainFrame); 193 194 monitor.worked(1); 194 195 … … public class MainApplication extends Main { 200 201 splash.dispose(); 201 202 mainFrame.setVisible(true); 202 203 203 if (((!args.containsKey("no-maximize") && !args.containsKey("geometry") 204 && Main.pref.get("gui.geometry").length() == 0) || args.containsKey("maximize")) 205 && Toolkit.getDefaultToolkit().isFrameStateSupported(JFrame.MAXIMIZED_BOTH)) { 206 mainFrame.setExtendedState(JFrame.MAXIMIZED_BOTH); 204 boolean maximized = Boolean.parseBoolean(Main.pref.get("gui.maximized")); 205 if ((!args.containsKey("no-maximize") && maximized) || args.containsKey("maximize")) { 206 if (Toolkit.getDefaultToolkit().isFrameStateSupported(JFrame.MAXIMIZED_BOTH)) { 207 // Main.debug("Main window maximized"); 208 Main.windowState = JFrame.MAXIMIZED_BOTH; 209 mainFrame.setExtendedState(Main.windowState); 210 } else { 211 Main.debug("Main window: maximizing not supported"); 212 } 213 } else { 214 // Main.debug("Main window not maximized"); 207 215 } 208 216 209 217 EventQueue.invokeLater(new Runnable() {