001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.gui.dialogs.relation.actions; 003 004import static org.openstreetmap.josm.tools.I18n.tr; 005 006import java.awt.event.ActionEvent; 007import java.beans.PropertyChangeEvent; 008import java.beans.PropertyChangeListener; 009 010import javax.swing.event.TableModelEvent; 011 012import org.openstreetmap.josm.gui.dialogs.relation.IRelationEditor; 013import org.openstreetmap.josm.gui.dialogs.relation.MemberTable; 014import org.openstreetmap.josm.gui.dialogs.relation.MemberTableModel; 015import org.openstreetmap.josm.gui.layer.OsmDataLayer; 016import org.openstreetmap.josm.gui.tagging.TagEditorModel; 017import org.openstreetmap.josm.tools.ImageProvider; 018 019/** 020 * Apply the current updates. 021 * @since 9496 022 */ 023public class ApplyAction extends SavingAction implements PropertyChangeListener { 024 025 /** 026 * Constructs a new {@code ApplyAction}. 027 * @param memberTable member table 028 * @param memberTableModel member table model 029 * @param layer OSM data layer 030 * @param editor relation editor 031 * @param tagModel tag editor model 032 */ 033 public ApplyAction(MemberTable memberTable, MemberTableModel memberTableModel, TagEditorModel tagModel, OsmDataLayer layer, 034 IRelationEditor editor) { 035 super(memberTable, memberTableModel, tagModel, layer, editor, null); 036 putValue(SHORT_DESCRIPTION, tr("Apply the current updates")); 037 new ImageProvider("save").getResource().attachImageIcon(this, true); 038 putValue(NAME, tr("Apply")); 039 updateEnabledState(); 040 memberTableModel.addTableModelListener(this); 041 tagModel.addPropertyChangeListener(this); 042 } 043 044 @Override 045 public void actionPerformed(ActionEvent e) { 046 if (applyChanges()) { 047 editor.reloadDataFromRelation(); 048 } 049 } 050 051 @Override 052 protected void updateEnabledState() { 053 setEnabled(isEditorDirty()); 054 } 055 056 @Override 057 public void propertyChange(PropertyChangeEvent evt) { 058 updateEnabledState(); 059 } 060 061 @Override 062 public void tableChanged(TableModelEvent e) { 063 updateEnabledState(); 064 } 065}