Changeset 17307 in josm for trunk/src/org


Ignore:
Timestamp:
2020-11-10T18:06:57+01:00 (3 years ago)
Author:
GerdP
Message:

see #7548: Re-organize the preference dialog

  • move code for expert toggle into expertChanged() and make sure that a tab is selected
  • always use SwingUtilities.invokeLater() when the PreferenceDialog should be opened with a special tab
Location:
trunk/src/org/openstreetmap/josm
Files:
4 edited

Legend:

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

    r17265 r17307  
    77import java.awt.event.ActionEvent;
    88import java.awt.event.KeyEvent;
     9
     10import javax.swing.SwingUtilities;
    911
    1012import org.openstreetmap.josm.gui.MainApplication;
     
    106108    public void run() {
    107109        final PreferenceDialog p = new PreferenceDialog(MainApplication.getMainFrame());
    108         if (tab != null) {
    109             p.selectPreferencesTabByClass(tab);
    110         } else if (subTab != null) {
    111             p.selectSubPreferencesTabByClass(subTab);
    112         } else {
    113             p.selectPreviouslySelectedPreferences();
    114         }
     110        SwingUtilities.invokeLater(() -> {
     111            if (tab != null) {
     112                p.selectPreferencesTabByClass(tab);
     113            } else if (subTab != null) {
     114                p.selectSubPreferencesTabByClass(subTab);
     115            } else {
     116                p.selectPreviouslySelectedPreferences();
     117            }
     118        });
    115119        p.setVisible(true);
    116120    }
  • trunk/src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java

    r16913 r17307  
    582582                pref.addActionListener(e -> {
    583583                    final PreferenceDialog p = new PreferenceDialog(MainApplication.getMainFrame());
    584                     if (TabPreferenceSetting.class.isAssignableFrom(preferenceClass)) {
    585                         p.selectPreferencesTabByClass((Class<? extends TabPreferenceSetting>) preferenceClass);
    586                     } else if (SubPreferenceSetting.class.isAssignableFrom(preferenceClass)) {
    587                         p.selectSubPreferencesTabByClass((Class<? extends SubPreferenceSetting>) preferenceClass);
    588                     }
     584                    SwingUtilities.invokeLater(() -> {
     585                        if (TabPreferenceSetting.class.isAssignableFrom(preferenceClass)) {
     586                            p.selectPreferencesTabByClass((Class<? extends TabPreferenceSetting>) preferenceClass);
     587                        } else if (SubPreferenceSetting.class.isAssignableFrom(preferenceClass)) {
     588                            p.selectSubPreferencesTabByClass((Class<? extends SubPreferenceSetting>) preferenceClass);
     589                        }
     590                    });
    589591                    p.setVisible(true);
    590592                });
  • trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java

    r17306 r17307  
    528528    private void addGUITabs(boolean clear) {
    529529        boolean expert = ExpertToggleAction.isExpert();
    530         Component sel = getSelectedComponent();
    531530        if (clear) {
    532531            removeAll();
     
    561560            });
    562561        }
     562        setSelectedIndex(-1);
     563    }
     564
     565    @Override
     566    public void expertChanged(boolean isExpert) {
     567        Component sel = getSelectedComponent();
     568        addGUITabs(true);
    563569        int index = -1;
    564570        if (sel != null) {
    565571            index = indexOfComponent(sel);
    566572        }
    567         setSelectedIndex(index);
    568     }
    569 
    570     @Override
    571     public void expertChanged(boolean isExpert) {
    572         addGUITabs(true);
     573        setSelectedIndex(Math.max(index, 0));
    573574    }
    574575
  • trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java

    r17227 r17307  
    5252import javax.swing.ListSelectionModel;
    5353import javax.swing.MenuElement;
     54import javax.swing.SwingUtilities;
    5455import javax.swing.TransferHandler;
    5556import javax.swing.event.PopupMenuEvent;
     
    513514            public void actionPerformed(ActionEvent e) {
    514515                final PreferenceDialog p = new PreferenceDialog(MainApplication.getMainFrame());
    515                 p.selectPreferencesTabByName("toolbar");
     516                SwingUtilities.invokeLater(() -> p.selectPreferencesTabByName("toolbar"));
    516517                p.setVisible(true);
    517518            }
     
    523524                final PreferenceDialog p = new PreferenceDialog(MainApplication.getMainFrame());
    524525                p.getTabbedPane().getShortcutPreference().setDefaultFilter(act.getDisplayName());
    525                 p.selectPreferencesTabByName("shortcuts");
     526                SwingUtilities.invokeLater(() -> p.selectPreferencesTabByName("shortcuts"));
    526527                p.setVisible(true);
    527528                // refresh toolbar to try using changed shortcuts without restart
Note: See TracChangeset for help on using the changeset viewer.