Ticket #17040: 17040-pref-dlg-v2.patch

File 17040-pref-dlg-v2.patch, 5.1 KB (added by GerdP, 5 years ago)

OT: simplify PreferenceDialog

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

     
    55
    66import java.awt.BorderLayout;
    77import java.awt.EventQueue;
    8 import java.awt.Graphics;
    98import java.io.IOException;
    109import java.net.URL;
    1110import java.nio.charset.StandardCharsets;
     
    1514import javax.swing.JComponent;
    1615import javax.swing.JPanel;
    1716import javax.swing.JScrollPane;
    18 import javax.swing.Timer;
    1917import javax.swing.border.EmptyBorder;
    2018import javax.swing.event.HyperlinkEvent;
    2119import javax.swing.event.HyperlinkListener;
     
    2220
    2321import org.openstreetmap.josm.actions.DownloadPrimitiveAction;
    2422import org.openstreetmap.josm.data.Version;
    25 import org.openstreetmap.josm.gui.animation.AnimationExtensionManager;
    2623import org.openstreetmap.josm.gui.datatransfer.OpenTransferHandler;
    2724import org.openstreetmap.josm.gui.dialogs.MenuItemSearchDialog;
    2825import org.openstreetmap.josm.gui.preferences.server.ProxyPreference;
     
    4845    private final LinkGeneral lg;
    4946    private String content = "";
    5047    private boolean contentInitialized;
    51     private final Timer timer = new Timer(50, e -> repaint());
    5248
    5349    private static final String STYLE = "<style type=\"text/css\">\n"
    5450            + "body {font-family: sans-serif; font-weight: bold; }\n"
     
    147143        setTransferHandler(new OpenTransferHandler());
    148144    }
    149145
    150     @Override
    151     public void addNotify() {
    152         timer.start();
    153         super.addNotify();
    154     }
    155 
    156     @Override
    157     public void removeNotify() {
    158         timer.stop();
    159         super.removeNotify();
    160     }
    161 
    162     @Override
    163     public void paint(Graphics g) {
    164         super.paint(g);
    165         if (isShowing()) {
    166             AnimationExtensionManager.getExtension().adjustForSize(getWidth(), getHeight());
    167             AnimationExtensionManager.getExtension().animate();
    168             AnimationExtensionManager.getExtension().paint(g);
    169         }
    170     }
    171 
    172146    private void getMOTD() {
    173147        // Asynchronously get MOTD to speed-up JOSM startup
    174148        Thread t = new Thread((Runnable) () -> {
  • src/org/openstreetmap/josm/gui/preferences/PreferenceDialog.java

     
    1111import java.awt.GridBagLayout;
    1212import java.awt.Insets;
    1313import java.awt.event.ActionEvent;
    14 import java.awt.event.WindowAdapter;
    15 import java.awt.event.WindowEvent;
    1614
    1715import javax.swing.AbstractAction;
    1816import javax.swing.BorderFactory;
     
    4240
    4341    private final PreferenceTabbedPane tpPreferences = new PreferenceTabbedPane();
    4442    private final ContextSensitiveHelpAction helpAction = new ContextSensitiveHelpAction();
    45     private final WindowEventHandler windowEventHandler = new WindowEventHandler();
    46     private boolean canceled;
     43    public boolean okPressed;
    4744
    4845    /**
    4946     * Constructs a new {@code PreferenceDialog}.
     
    5653        // set the maximum width to the current screen. If the dialog is opened on a
    5754        // smaller screen than before, this will reset the stored preference.
    5855        this.setMaximumSize(GuiHelper.getScreenSize());
     56        setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
    5957    }
    6058
    6159    protected JPanel buildActionPanel() {
     
    8482        tpPreferences.buildGui();
    8583        tpPreferences.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
    8684        c.add(buildActionPanel(), BorderLayout.SOUTH);
    87         addWindowListener(windowEventHandler);
    8885
    8986        InputMapUtils.addEscapeAction(getRootPane(), new CancelAction());
    9087        setHelpContext(HelpUtil.ht("/Action/Preferences"));
     
    110107    }
    111108
    112109    /**
    113      * Determines if preferences changes have been canceled.
    114      * @return {@code true} if preferences changes have been canceled
     110     * Determines if preferences changes have been cancelled.
     111     * @return {@code true} if preferences changes have been cancelled
    115112     */
    116113    public boolean isCanceled() {
    117         return canceled;
     114        return !okPressed;
    118115    }
    119116
    120     protected void setCanceled(boolean canceled) {
    121         this.canceled = canceled;
    122     }
    123 
    124117    @Override
    125118    public void setVisible(boolean visible) {
    126119        if (visible) {
     
    175168        }
    176169
    177170        public void cancel() {
    178             setCanceled(true);
    179171            dispose();
    180172        }
    181173
     
    200192            }
    201193
    202194            tpPreferences.savePreferences();
    203             setCanceled(false);
     195            okPressed = true;
    204196            dispose();
    205197        }
    206198    }
    207199
    208     class WindowEventHandler extends WindowAdapter {
    209         @Override
    210         public void windowClosing(WindowEvent arg0) {
    211             new CancelAction().cancel();
    212         }
    213     }
    214 
    215     @Override
    216     public void dispose() {
    217         removeWindowListener(windowEventHandler);
    218         super.dispose();
    219     }
    220200}