source: josm/trunk/src/org/openstreetmap/josm/command/RemoveRelationMemberCommand.java@ 1954

Last change on this file since 1954 was 1951, checked in by jttt, 15 years ago

Replace some occurrences of RelationMember.member with getters

File size: 2.6 KB
Line 
1// License: GPL. Copyright 2007 by Immanuel Scholz and others
2package org.openstreetmap.josm.command;
3
4import static org.openstreetmap.josm.tools.I18n.tr;
5
6import java.util.Collection;
7
8import javax.swing.JLabel;
9import javax.swing.tree.DefaultMutableTreeNode;
10import javax.swing.tree.MutableTreeNode;
11
12import org.openstreetmap.josm.Main;
13import org.openstreetmap.josm.data.osm.OsmPrimitive;
14import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
15import org.openstreetmap.josm.data.osm.Relation;
16import org.openstreetmap.josm.data.osm.RelationMember;
17import org.openstreetmap.josm.gui.PrimitiveNameFormatter;
18import org.openstreetmap.josm.tools.ImageProvider;
19
20/**
21 * Command that adds a relation to an OSM object
22 *
23 * @author daveh
24 */
25public class RemoveRelationMemberCommand extends Command {
26
27 // container object in which to replace a sub object
28 private final Relation relation;
29 // the sub-object to be replaced
30 private final RelationMember member;
31 // its replacement
32 private int location = -1;
33
34 public RemoveRelationMemberCommand(Relation _relation, RelationMember _member) {
35 this.relation = _relation;
36 this.member = _member;
37 }
38 public RemoveRelationMemberCommand(Relation _relation, RelationMember _member, int _location) {
39 this.relation = _relation;
40 this.member = _member;
41 location = _location;
42 }
43
44 @Override public boolean executeCommand() {
45 super.executeCommand();
46 int removeIndex = relation.getMembers().indexOf(member);
47 if ((location != -1) && (removeIndex != location)) {
48 Main.debug("error removing relation member");
49 return false;
50 } else {
51 relation.removeMember(removeIndex);
52 relation.modified = true;
53 return true;
54 }
55 }
56
57 @Override public void undoCommand() {
58 super.undoCommand();
59 relation.addMember(member);
60 relation.modified = this.getOrig(relation).modified;
61 }
62
63 @Override public void fillModifiedData(Collection<OsmPrimitive> modified, Collection<OsmPrimitive> deleted, Collection<OsmPrimitive> added) {}
64
65 @Override public MutableTreeNode description() {
66 return new DefaultMutableTreeNode(
67 new JLabel(
68 tr("Remove relation member {0} {1}",
69 OsmPrimitiveType.from(relation).getLocalizedDisplayNameSingular(),
70 new PrimitiveNameFormatter().getName(relation)
71 ),
72 ImageProvider.get(OsmPrimitiveType.from(relation)),
73 JLabel.HORIZONTAL
74 )
75 );
76 }
77}
Note: See TracBrowser for help on using the repository browser.