Changeset 2876 in josm


Ignore:
Timestamp:
2010-01-18T21:52:10+01:00 (14 years ago)
Author:
bastiK
Message:

fix #3745 - fullscreen geometry not restored (patch by bomm)

Location:
trunk/src/org/openstreetmap/josm
Files:
3 edited

Legend:

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

    r2869 r2876  
    88import java.awt.Rectangle;
    99import java.awt.Toolkit;
     10import java.awt.event.ComponentEvent;
     11import java.awt.event.ComponentListener;
    1012import java.awt.event.KeyEvent;
     13import java.awt.event.WindowAdapter;
     14import java.awt.event.WindowEvent;
    1115import java.io.File;
    1216import java.net.URI;
     
    274278
    275279    protected static Rectangle bounds;
     280    protected static int windowState = JFrame.NORMAL;
    276281
    277282    private final CommandQueueListener redoUndoListener = new CommandQueueListener(){
     
    324329
    325330        Dimension screenDimension = Toolkit.getDefaultToolkit().getScreenSize();
    326         String geometry = Main.pref.get("gui.geometry");
     331        String geometry = null;
    327332        if (args.containsKey("geometry")) {
    328333            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+"\"");
    329338        }
    330339        if (geometry.length() != 0) {
     
    344353                    }
    345354                }
     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                }
    346362                bounds = new Rectangle(x,y,w,h);
    347363                if(!Main.pref.get("gui.geometry").equals(geometry)) {
    348364                    // remember this geometry
     365                    // Main.debug("Main window: saving geometry \"" + geometry + "\"");
    349366                    Main.pref.put("gui.geometry", geometry);
    350367                }
     
    356373            bounds = !args.containsKey("no-maximize") ? new Rectangle(0,0,screenDimension.width,screenDimension.height) : new Rectangle(1000,740);
    357374        }
     375        // Main.debug("window geometry: "+bounds);
    358376    }
    359377
     
    541559        String newToggleDlgWidth = null;
    542560        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;
    563             }
     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;
     571            }
     572            if (x < 0) {
     573                x = 0;
     574            }
     575            if (y < 0) {
     576                y = 0;
     577            }
     578            newGeometry = width + "x" + height + "+" + x + "+" + y;
    564579
    565580            if (map  != null) {
     
    571586        }
    572587        catch (Exception e) {
    573             System.out.println("Failed to save GUI geometry: " + e);
     588            System.out.println("Failed to get GUI geometry: " + e);
    574589            e.printStackTrace();
    575590        }
     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);
    576594        pref.put("gui.geometry", newGeometry);
    577595        if (newToggleDlgWidth != null) {
     
    579597        }
    580598    }
     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    }
    581639}
  • trunk/src/org/openstreetmap/josm/gui/MainApplet.java

    r2053 r2876  
    1010import java.awt.event.KeyEvent;
    1111import java.io.File;
    12 import java.io.IOException;
    1312import java.net.URL;
    1413import java.util.Arrays;
     
    102101        Main.preConstructorInit(args);
    103102        Main.parent = this;
     103        Main.addListener();
    104104
    105105        // initialize the plaform hook, and
  • trunk/src/org/openstreetmap/josm/gui/MainApplication.java

    r2856 r2876  
    190190        JFrame mainFrame = new JFrame(tr("Java OpenStreetMap Editor"));
    191191        Main.parent = mainFrame;
     192        Main.addListener();
    192193        final Main main = new MainApplication(mainFrame);
    193194        monitor.worked(1);
     
    201202        mainFrame.setVisible(true);
    202203
    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");
    207215        }
    208216
Note: See TracChangeset for help on using the changeset viewer.