Ticket #17040: 17040-toggle-dlg.patch

File 17040-toggle-dlg.patch, 3.6 KB (added by GerdP, 7 years ago)
  • src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java

     
    1717import javax.swing.JCheckBox;
    1818import javax.swing.JTable;
    1919import javax.swing.ListSelectionModel;
    20 import javax.swing.SwingUtilities;
    2120import javax.swing.table.DefaultTableCellRenderer;
    2221import javax.swing.table.JTableHeader;
    2322import javax.swing.table.TableCellRenderer;
     
    247246    public void destroy() {
    248247        MultikeyActionsHandler.getInstance().removeAction(enableFilterAction);
    249248        MultikeyActionsHandler.getInstance().removeAction(hidingFilterAction);
     249        userTable = null;
    250250        super.destroy();
    251251    }
    252252
     
    301301     * Updates the headline of this dialog to display the number of active filters.
    302302     */
    303303    public void updateDialogHeader() {
    304         SwingUtilities.invokeLater(() -> setTitle(
    305                 tr("Filter Hidden:{0} Disabled:{1}",
    306                         filterModel.model.getDisabledAndHiddenCount(), filterModel.model.getDisabledCount())));
     304        setTitle(tr("Filter Hidden:{0} Disabled:{1}", filterModel.model.getDisabledAndHiddenCount(),
     305                filterModel.model.getDisabledCount()));
    307306    }
    308307
    309308    /**
  • src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java

     
    469469        }
    470470        Config.getPref().removePreferenceChangeListener(this);
    471471        GuiHelper.destroyComponents(this, false);
     472        titleBar.destroy();
     473        titleBar = null;
     474        this.buttonActions.clear();
    472475    }
    473476
    474477    /**
     
    500503    /**
    501504     * The title bar displayed in docked mode
    502505     */
    503     protected class TitleBar extends JPanel {
     506    protected class TitleBar extends JPanel implements Destroyable {
    504507        /** the label which shows whether the toggle dialog is expanded or collapsed */
    505508        private final JLabel lblMinimized;
    506509        /** the label which displays the dialog's title **/
     
    511514        /** the contextual menu **/
    512515        private DialogPopupMenu popupMenu;
    513516
     517        private MouseEventHandler mouseEventHandler;
     518
    514519        @SuppressWarnings("unchecked")
    515520        public TitleBar(String toggleDialogName, String iconName) {
    516521            setLayout(new GridBagLayout());
     
    632637         */
    633638        public final void registerMouseListener() {
    634639            popupMenu = new DialogPopupMenu();
    635             addMouseListener(new MouseEventHandler());
     640            mouseEventHandler = new MouseEventHandler();
     641            addMouseListener(mouseEventHandler);
    636642        }
    637643
    638644        class MouseEventHandler extends PopupMenuLauncher {
     
    656662                }
    657663            }
    658664        }
     665
     666        @Override
     667        public void destroy() {
     668            removeMouseListener(mouseEventHandler);
     669            this.mouseEventHandler = null;
     670            this.popupMenu = null;
     671        }
    659672    }
    660673
    661674    /**
     
    753766     * @param title The dialog's title
    754767     */
    755768    public void setTitle(String title) {
    756         titleBar.setTitle(title);
     769        if (titleBar != null) {
     770            titleBar.setTitle(title);
     771        }
    757772        if (detachedDialog != null) {
    758773            detachedDialog.setTitle(title);
    759774        }