Ticket #2279: FullScreen.patch

File FullScreen.patch, 2.7 KB (added by avarab@…, 17 years ago)

Add option to full screen JOSM to the main menu

  • src/org/openstreetmap/josm/gui/MainMenu.java

     
    1414import javax.swing.JMenuItem;
    1515import javax.swing.KeyStroke;
    1616
     17/* For the fullscreen action */
     18import java.awt.Frame;
     19import java.awt.GraphicsEnvironment;
     20import java.awt.GraphicsDevice;
     21
    1722import org.openstreetmap.josm.Main;
    1823import org.openstreetmap.josm.actions.AboutAction;
    1924import org.openstreetmap.josm.actions.AddNodeAction;
     
    228233            JosmAction autoScaleAction = new AutoScaleAction(mode);
    229234            add(viewMenu, autoScaleAction);
    230235        }
     236
     237        /// Fullscreen
     238        String os = System.getProperty("os.name");
     239        // From determinePlatformHook() in Main.java, see
     240        // http://lists.openstreetmap.org/pipermail/josm-dev/2009-March/002659.html
     241        // for why I'm doing this.
     242        boolean canFullScreen = (os.equals("Linux") || os.equals("Solaris") ||
     243                                 os.equals("SunOS") || os.equals("AIX") ||
     244                                 os.equals("FreeBSD") || os.equals("NetBSD") || os.equals("OpenBSD"));
     245
     246
     247        if (canFullScreen) {
     248            // TODO move code to an "action" like the others?
     249            final JCheckBoxMenuItem fullscreen = new JCheckBoxMenuItem(tr("Full Screen"));
     250            fullscreen.setSelected(Main.pref.getBoolean("draw.fullscreen", false));
     251            fullscreen.setAccelerator(Shortcut.registerShortcut("menu:view:fullscreen", tr("Toggle Full Screen view"),
     252                    KeyEvent.VK_F11, Shortcut.GROUP_DIRECT).getKeyStroke());
     253            fullscreen.addActionListener(new ActionListener() {
     254                public void actionPerformed(ActionEvent ev) {
     255                    Main.pref.put("draw.fullscreen", fullscreen.isSelected());
     256
     257                    GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
     258                    GraphicsDevice gd = ge.getDefaultScreenDevice();
     259
     260                    Frame frame = (Frame)Main.parent;
     261
     262                    if (Main.pref.getBoolean("draw.fullscreen")) {
     263                        if (gd.isFullScreenSupported()) {
     264                            gd.setFullScreenWindow(frame);
     265                        }
     266                    } else {
     267                        if (gd.isFullScreenSupported())
     268                            gd.setFullScreenWindow(null);
     269                    }
     270                }
     271            });
     272            viewMenu.addSeparator();
     273            viewMenu.add(fullscreen);
     274        }
    231275        add(viewMenu, KeyEvent.VK_V, "view");
    232276
    233277        add(toolsMenu, splitWay);