Ignore:
Timestamp:
2016-01-27T22:18:36+01:00 (8 years ago)
Author:
Don-vip
Message:

fix #12410 - new button to refresh relation in relation editor (patch by kolesar, modified for checkstyle, javadoc, unit test)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/ApplyAction.java

    r9496 r9657  
    44import static org.openstreetmap.josm.tools.I18n.tr;
    55
    6 import java.awt.Component;
    76import java.awt.event.ActionEvent;
    87
     8import java.beans.PropertyChangeEvent;
     9import java.beans.PropertyChangeListener;
     10
     11import javax.swing.event.TableModelEvent;
     12import javax.swing.event.TableModelListener;
     13
     14import org.openstreetmap.josm.gui.dialogs.relation.GenericRelationEditor;
    915import org.openstreetmap.josm.gui.dialogs.relation.MemberTable;
    1016import org.openstreetmap.josm.gui.dialogs.relation.MemberTableModel;
     
    1824 * @since 9496
    1925 */
    20 public class ApplyAction extends SavingAction {
     26public class ApplyAction extends SavingAction implements PropertyChangeListener, TableModelListener {
    2127
    2228    /**
     
    3440        putValue(SMALL_ICON, ImageProvider.get("save"));
    3541        putValue(NAME, tr("Apply"));
    36         setEnabled(true);
     42        updateEnabledState();
     43        memberTableModel.addTableModelListener(this);
     44        tagModel.addPropertyChangeListener(this);
    3745    }
    3846
    3947    @Override
    4048    public void actionPerformed(ActionEvent e) {
    41         if (editor.getRelation() == null) {
    42             applyNewRelation(tagModel);
    43         } else if (!memberTableModel.hasSameMembersAs(editor.getRelationSnapshot()) || tagModel.isDirty()) {
    44             if (editor.isDirtyRelation()) {
    45                 if (confirmClosingBecauseOfDirtyState()) {
    46                     if (layer.getConflicts().hasConflictForMy(editor.getRelation())) {
    47                         warnDoubleConflict();
    48                         return;
    49                     }
    50                     applyExistingConflictingRelation(tagModel);
    51                     if (editor instanceof Component) {
    52                         ((Component) editor).setVisible(false);
    53                     }
    54                 }
    55             } else {
    56                 applyExistingNonConflictingRelation(tagModel);
    57             }
     49        if (applyChanges()) {
     50            ((GenericRelationEditor) editor).reloadDataFromRelation();
    5851        }
    5952    }
     53
     54    @Override
     55    protected void updateEnabledState() {
     56        setEnabled(isEditorDirty());
     57    }
     58
     59    @Override
     60    public void propertyChange(PropertyChangeEvent evt) {
     61        updateEnabledState();
     62    }
     63
     64    @Override
     65    public void tableChanged(TableModelEvent e) {
     66        updateEnabledState();
     67    }
    6068}
Note: See TracChangeset for help on using the changeset viewer.