Ignore:
Timestamp:
03.02.2010 09:07:36 (2 years ago)
Author:
jttt
Message:

Make sure ConflictResolutionDialog is disposed when closed

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictResolutionDialog.java

    r2915 r2930  
    2121import javax.swing.JOptionPane; 
    2222import javax.swing.JPanel; 
     23import javax.swing.WindowConstants; 
    2324 
    2425import org.openstreetmap.josm.Main; 
     
    4344    private ConflictResolver resolver; 
    4445 
     46    private ApplyResolutionAction applyResolutionAction; 
     47 
    4548    /** 
    4649     * restore position and size on screen from preference settings 
     
    9598        Main.pref.put("conflictresolutiondialog.width", Integer.toString(d.width)); 
    9699        Main.pref.put("conflictresolutiondialog.height", Integer.toString(d.height)); 
     100    } 
     101 
     102    @Override 
     103    public void removeNotify() { 
     104        super.removeNotify(); 
     105        unregisterListeners(); 
    97106    } 
    98107 
     
    104113        } else { 
    105114            rememberPositionAndDimension(); 
     115            unregisterListeners(); 
    106116        } 
    107117        super.setVisible(isVisible); 
     118    } 
     119 
     120    private void closeDialog() { 
     121        setVisible(false); 
     122        dispose(); 
    108123    } 
    109124 
     
    117132        pnl.setLayout(new FlowLayout(FlowLayout.CENTER)); 
    118133 
    119         ApplyResolutionAction applyResolutionAction = new ApplyResolutionAction(); 
    120         resolver.addPropertyChangeListener(applyResolutionAction); 
     134        applyResolutionAction = new ApplyResolutionAction(); 
    121135        JButton btn = new JButton(applyResolutionAction); 
    122136        btn.setName("button.apply"); 
     
    135149    } 
    136150 
     151    private void registerListeners() { 
     152        resolver.addPropertyChangeListener(applyResolutionAction); 
     153    } 
     154 
     155    private void unregisterListeners() { 
     156        resolver.removePropertyChangeListener(applyResolutionAction); 
     157    } 
     158 
    137159    /** 
    138160     * builds the GUI 
    139161     */ 
    140162    protected void build() { 
     163        setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); 
    141164        updateTitle(); 
    142165        getContentPane().setLayout(new BorderLayout()); 
     
    149172        resolver.addPropertyChangeListener(this); 
    150173        HelpUtil.setHelpContext(this.getRootPane(), "Dialog/ConflictDialog"); 
     174 
     175        registerListeners(); 
    151176    } 
    152177 
     
    172197 
    173198        public void actionPerformed(ActionEvent arg0) { 
    174             setVisible(false); 
     199            closeDialog(); 
    175200        } 
    176201    } 
     
    231256                switch(ret) { 
    232257                case JOptionPane.YES_OPTION: 
    233                     setVisible(false); 
     258                    closeDialog(); 
    234259                    break; 
    235260                default: 
     
    240265                Command cmd = resolver.buildResolveCommand(); 
    241266                Main.main.undoRedo.add(cmd); 
    242                 setVisible(false); 
     267                closeDialog(); 
    243268            } catch(OperationCancelledException e) { 
    244269                // do nothing. Exception already reported 
Note: See TracChangeset for help on using the changeset viewer.