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

Last change on this file since 1463 was 630, checked in by framm, 16 years ago
  • make commands able to fail (patch by DH)
  • add Command.getOrig() (patch by DH)
  • add RemoveRelationMemberCommand (patch by DH)
File size: 2.2 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.*;
15
16import org.openstreetmap.josm.data.osm.visitor.NameVisitor;
17
18/**
19 * Command that adds a relation to an OSM object
20 *
21 * @author daveh
22 */
23public class RemoveRelationMemberCommand extends Command {
24
25 // container object in which to replace a sub object
26 private final Relation relation;
27 // the sub-object to be replaced
28 private final RelationMember member;
29 // its replacement
30 private int location = -1;
31
32 public RemoveRelationMemberCommand(Relation _relation, RelationMember _member) {
33 this.relation = _relation;
34 this.member = _member;
35 }
36 public RemoveRelationMemberCommand(Relation _relation, RelationMember _member, int _location) {
37 this.relation = _relation;
38 this.member = _member;
39 location = _location;
40 }
41
42 @Override public boolean executeCommand() {
43 super.executeCommand();
44 int removed_at = relation.members.indexOf(member);
45 relation.members.remove(member);
46 if ((location != -1) && (removed_at != location)) {
47 relation.members.add(removed_at, member);
48 Main.debug("error removing relation member");
49 return false;
50 }
51 relation.modified = true;
52 return true;
53 }
54
55 @Override public void undoCommand() {
56 super.undoCommand();
57 relation.members.add(member);
58 relation.modified = this.getOrig(relation).modified;
59 }
60
61 @Override public void fillModifiedData(Collection<OsmPrimitive> modified, Collection<OsmPrimitive> deleted, Collection<OsmPrimitive> added) {}
62
63 @Override public MutableTreeNode description() {
64 NameVisitor v = new NameVisitor();
65 relation.visit(v);
66 return new DefaultMutableTreeNode(new JLabel(tr("RemoveRelationMember")+" "+tr(v.className)+" "+v.name, v.icon, JLabel.HORIZONTAL));
67 }
68}
Note: See TracBrowser for help on using the repository browser.