source: josm/trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/AbstractRelationEditorAction.java@ 14214

Last change on this file since 14214 was 14214, checked in by Don-vip, 6 years ago

sonarqube - squid:S4551 - Enum values should be compared with "=="

File size: 4.4 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.dialogs.relation.actions;
3
4import java.beans.PropertyChangeEvent;
5import java.beans.PropertyChangeListener;
6import java.util.Objects;
7
8import javax.swing.AbstractAction;
9import javax.swing.event.ListSelectionEvent;
10import javax.swing.event.ListSelectionListener;
11import javax.swing.event.TableModelEvent;
12import javax.swing.event.TableModelListener;
13
14import org.openstreetmap.josm.data.osm.DataSet;
15import org.openstreetmap.josm.data.osm.DownloadPolicy;
16import org.openstreetmap.josm.gui.dialogs.relation.IRelationEditor;
17import org.openstreetmap.josm.gui.dialogs.relation.MemberTable;
18import org.openstreetmap.josm.gui.dialogs.relation.MemberTableModel;
19import org.openstreetmap.josm.gui.dialogs.relation.SelectionTable;
20import org.openstreetmap.josm.gui.dialogs.relation.SelectionTableModel;
21import org.openstreetmap.josm.gui.layer.OsmDataLayer;
22import org.openstreetmap.josm.gui.tagging.TagEditorModel;
23import org.openstreetmap.josm.io.NetworkManager;
24import org.openstreetmap.josm.io.OnlineResource;
25
26/**
27 * Abstract superclass of relation editor actions.
28 *
29 * @since 9496
30 */
31public abstract class AbstractRelationEditorAction extends AbstractAction
32 implements TableModelListener, ListSelectionListener, PropertyChangeListener {
33 private static final long serialVersionUID = 1L;
34 protected final transient IRelationEditorActionAccess editorAccess;
35
36 /**
37 * Create a new relation editor action
38 *
39 * @param editorAccess
40 * The editor this action is for
41 * @param updateOn
42 * The events that may cause the enabled state of this button to
43 * change.
44 */
45 protected AbstractRelationEditorAction(IRelationEditorActionAccess editorAccess,
46 IRelationEditorUpdateOn... updateOn) {
47 Objects.requireNonNull(editorAccess, "editorAccess");
48 Objects.requireNonNull(updateOn, "updateOn");
49 this.editorAccess = editorAccess;
50 for (IRelationEditorUpdateOn u : updateOn) {
51 u.register(editorAccess, this);
52 }
53 }
54
55 /**
56 * Create a new relation editor action
57 *
58 * @param editorAccess
59 * The editor this action is for
60 * @param actionMapKey
61 * The key for the member table action map.
62 * @param updateOn
63 * The events that may cause the enabled state of this button to
64 * change.
65 */
66 protected AbstractRelationEditorAction(IRelationEditorActionAccess editorAccess, String actionMapKey,
67 IRelationEditorUpdateOn... updateOn) {
68 this(editorAccess, updateOn);
69 Objects.requireNonNull(actionMapKey, "actionMapKey");
70
71 this.editorAccess.addMemberTableAction(actionMapKey, this);
72 }
73
74 @Override
75 public void tableChanged(TableModelEvent e) {
76 updateEnabledState();
77 }
78
79 @Override
80 public void valueChanged(ListSelectionEvent e) {
81 updateEnabledState();
82 }
83
84 @Override
85 public void propertyChange(PropertyChangeEvent evt) {
86 updateEnabledState();
87 }
88
89 protected abstract void updateEnabledState();
90
91 protected final boolean canDownload() {
92 if (editorAccess.getEditor().getRelation() == null)
93 return false;
94 DataSet ds = editorAccess.getEditor().getRelation().getDataSet();
95 return !NetworkManager.isOffline(OnlineResource.OSM_API) && ds != null && !ds.isLocked()
96 && DownloadPolicy.BLOCKED != ds.getDownloadPolicy();
97 }
98
99 protected MemberTable getMemberTable() {
100 return editorAccess.getMemberTable();
101 }
102
103 protected MemberTableModel getMemberTableModel() {
104 return editorAccess.getMemberTableModel();
105 }
106
107 protected SelectionTable getSelectionTable() {
108 return editorAccess.getSelectionTable();
109 }
110
111 protected SelectionTableModel getSelectionTableModel() {
112 return editorAccess.getSelectionTableModel();
113 }
114
115 protected IRelationEditor getEditor() {
116 return editorAccess.getEditor();
117 }
118
119 protected TagEditorModel getTagModel() {
120 return editorAccess.getTagModel();
121 }
122
123 protected OsmDataLayer getLayer() {
124 return editorAccess.getEditor().getLayer();
125 }
126
127 /**
128 * Indicates that this action only visible in expert mode
129 * @return <code>true</code> for expert mode actions.
130 * @since 14027
131 */
132 public boolean isExpertOnly() {
133 return false;
134 }
135}
Note: See TracBrowser for help on using the repository browser.