source: josm/trunk/src/org/openstreetmap/josm/command/ChangeRelationMemberRoleCommand.java@ 1724

Last change on this file since 1724 was 1617, checked in by stoecker, 15 years ago

fix #2645 - patch by Teemu Koskinen - cleanup relation role handling on way reversing

File size: 2.2 KB
Line 
1// License: GPL. For details, see LICENSE file.
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.Relation;
15import org.openstreetmap.josm.data.osm.RelationMember;
16
17import org.openstreetmap.josm.data.osm.visitor.NameVisitor;
18
19/**
20 * Command that changes the role of a relation member
21 *
22 * @author Teemu Koskinen <teemu.koskinen@mbnet.fi>
23 */
24public class ChangeRelationMemberRoleCommand extends Command {
25
26 // The relation to be changed
27 private final Relation relation;
28 // Position of the member
29 private int position = -1;
30 // The new role
31 private final String newRole;
32 // The old role
33 private String oldRole;
34 // Old value of modified;
35 private Boolean oldModified;
36
37 public ChangeRelationMemberRoleCommand(Relation relation, int position, String newRole) {
38 this.relation = relation;
39 this.position = position;
40 this.newRole = newRole;
41 }
42
43 @Override public boolean executeCommand() {
44 if (position < 0 || position >= relation.members.size()) {
45 Main.debug("error changing the role");
46 return false;
47 }
48
49 oldRole = relation.members.get(position).role;
50 relation.members.get(position).role = newRole;
51
52 oldModified = relation.modified;
53 relation.modified = true;
54 return true;
55 }
56
57 @Override public void undoCommand() {
58 relation.members.get(position).role = oldRole;
59 relation.modified = oldModified;
60 }
61
62 @Override public void fillModifiedData(Collection<OsmPrimitive> modified, Collection<OsmPrimitive> deleted, Collection<OsmPrimitive> added) {
63 modified.add(relation);
64 }
65
66 @Override public MutableTreeNode description() {
67 NameVisitor v = new NameVisitor();
68 relation.visit(v);
69 return new DefaultMutableTreeNode(new JLabel(tr("ChangeRelationMemberRole")+" "+tr(v.className)+" "+v.name, v.icon, JLabel.HORIZONTAL));
70 }
71}
Note: See TracBrowser for help on using the repository browser.