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; 011import javax.swing.event.TableModelListener; 012 013import org.openstreetmap.josm.gui.dialogs.relation.IRelationEditor; 014import org.openstreetmap.josm.gui.dialogs.relation.MemberTable; 015import org.openstreetmap.josm.gui.dialogs.relation.MemberTableModel; 016import org.openstreetmap.josm.gui.layer.OsmDataLayer; 017import org.openstreetmap.josm.gui.tagging.TagEditorModel; 018import org.openstreetmap.josm.tools.ImageProvider; 019 020/** 021 * Apply the current updates. 022 * @since 9496 023 */ 024public class ApplyAction extends SavingAction implements PropertyChangeListener, TableModelListener { 025 026 /** 027 * Constructs a new {@code ApplyAction}. 028 * @param memberTable member table 029 * @param memberTableModel member table model 030 * @param layer OSM data layer 031 * @param editor relation editor 032 * @param tagModel tag editor model 033 */ 034 public ApplyAction(MemberTable memberTable, MemberTableModel memberTableModel, TagEditorModel tagModel, OsmDataLayer layer, 035 IRelationEditor editor) { 036 super(memberTable, memberTableModel, tagModel, layer, editor, null); 037 putValue(SHORT_DESCRIPTION, tr("Apply the current updates")); 038 putValue(SMALL_ICON, ImageProvider.get("save")); 039 putValue(NAME, tr("Apply")); 040 updateEnabledState(); 041 memberTableModel.addTableModelListener(this); 042 tagModel.addPropertyChangeListener(this); 043 } 044 045 @Override 046 public void actionPerformed(ActionEvent e) { 047 if (applyChanges()) { 048 editor.reloadDataFromRelation(); 049 } 050 } 051 052 @Override 053 protected void updateEnabledState() { 054 setEnabled(isEditorDirty()); 055 } 056 057 @Override 058 public void propertyChange(PropertyChangeEvent evt) { 059 updateEnabledState(); 060 } 061 062 @Override 063 public void tableChanged(TableModelEvent e) { 064 updateEnabledState(); 065 } 066}