Ignore:
Timestamp:
2024-03-03T10:25:25+01:00 (2 years ago)
Author:
GerdP
Message:

fix #23521: fix some memory leaks

  • dispose dialogs
  • either avoid to create clones of ways or relations or use setNodes(null) / setMembers(null)
  • replaces most ChangeCommand instances by better specialized alternatives
  • add some comments
  • fix some checkstyle / sonar issues
File:
1 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/reltoolbox/src/relcontext/RelContextDialog.java

    r36136 r36217  
    1818import java.awt.event.MouseEvent;
    1919import java.awt.event.MouseListener;
    20 import java.beans.PropertyChangeEvent;
    21 import java.beans.PropertyChangeListener;
    2220import java.io.BufferedReader;
    2321import java.io.InputStream;
     
    5149import javax.swing.ListSelectionModel;
    5250import javax.swing.SwingUtilities;
    53 import javax.swing.event.ListSelectionEvent;
    54 import javax.swing.event.ListSelectionListener;
    5551import javax.swing.table.DefaultTableCellRenderer;
    5652import javax.swing.table.DefaultTableModel;
     
    111107
    112108    private final DefaultTableModel relationsData;
    113     private final ChosenRelation chosenRelation;
     109    private final transient ChosenRelation chosenRelation;
    114110    private final JPanel chosenRelationPanel;
    115111    private final ChosenRelationPopupMenu popupMenu;
     
    413409    @Override
    414410    public void destroy() {
     411        chosenRelation.removeChosenRelationListener(this);
    415412        enterRoleAction.destroy();
    416413        findRelationAction.destroy();
     
    487484
    488485        Object answer = optionPane.getValue();
     486        dlg.dispose();
    489487        if (answer == null || answer == JOptionPane.UNINITIALIZED_VALUE
    490488                || (answer instanceof Integer && (Integer) answer != JOptionPane.OK_OPTION))
     
    545543            for (int i = 0; i < r.getMembersCount(); i++) {
    546544                RelationMember m = r.getMember(i);
    547                 if (selected.contains(m.getMember())) {
    548                     if (!role.equals(m.getRole())) {
    549                         commands.add(new ChangeRelationMemberRoleCommand(r, i, role));
    550                     }
     545                if (selected.contains(m.getMember()) && !role.equals(m.getRole())) {
     546                    commands.add(new ChangeRelationMemberRoleCommand(r, i, role));
    551547                }
    552548            }
    553549            if (!commands.isEmpty()) {
    554                 //                UndoRedoHandler.getInstance().add(new ChangeCommand(chosenRelation.get(), r));
    555550                UndoRedoHandler.getInstance().add(new SequenceCommand(tr("Change relation member roles to {0}", role), commands));
    556551            }
Note: See TracChangeset for help on using the changeset viewer.