source: josm/trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/DuplicateRelationAction.java@ 13130

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

fix #15572 - use ImageProvider attach API for all JOSM actions to ensure proper icon size everywhere

File size: 2.0 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.dialogs.relation.actions;
3
4import static org.openstreetmap.josm.tools.I18n.tr;
5
6import java.awt.GraphicsEnvironment;
7import java.awt.event.ActionEvent;
8
9import org.openstreetmap.josm.data.osm.Relation;
10import org.openstreetmap.josm.gui.dialogs.relation.MemberTableModel;
11import org.openstreetmap.josm.gui.dialogs.relation.RelationEditor;
12import org.openstreetmap.josm.gui.layer.OsmDataLayer;
13import org.openstreetmap.josm.gui.tagging.TagEditorModel;
14import org.openstreetmap.josm.tools.ImageProvider;
15
16/**
17 * Creates a new relation with a copy of the current editor state.
18 * @since 9496
19 */
20public class DuplicateRelationAction extends AbstractRelationEditorAction {
21
22 private final transient TagEditorModel tagEditorModel;
23
24 /**
25 * Constructs a new {@code DuplicateRelationAction}.
26 * @param memberTableModel member table model
27 * @param tagEditorModel tag editor model
28 * @param layer OSM data layer
29 */
30 public DuplicateRelationAction(MemberTableModel memberTableModel, TagEditorModel tagEditorModel, OsmDataLayer layer) {
31 super(null, memberTableModel, null, layer, null);
32 this.tagEditorModel = tagEditorModel;
33 putValue(SHORT_DESCRIPTION, tr("Create a copy of this relation and open it in another editor window"));
34 // FIXME provide an icon
35 new ImageProvider("duplicate").getResource().attachImageIcon(this, true);
36 putValue(NAME, tr("Duplicate"));
37 setEnabled(true);
38 }
39
40 @Override
41 public void actionPerformed(ActionEvent e) {
42 Relation copy = new Relation();
43 tagEditorModel.applyToPrimitive(copy);
44 memberTableModel.applyToRelation(copy);
45 if (!GraphicsEnvironment.isHeadless()) {
46 RelationEditor.getEditor(layer, copy, memberTableModel.getSelectedMembers()).setVisible(true);
47 }
48 }
49
50 @Override
51 protected void updateEnabledState() {
52 // Do nothing
53 }
54}
Note: See TracBrowser for help on using the repository browser.