source: josm/trunk/src/org/openstreetmap/josm/command/TagConflictResolveCommand.java@ 3392

Last change on this file since 3392 was 3262, checked in by bastiK, 14 years ago

extended command list dialog; added inspection panel

  • Property svn:eol-style set to native
File size: 3.2 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.command;
3
4import static org.openstreetmap.josm.tools.I18n.marktr;
5import static org.openstreetmap.josm.tools.I18n.tr;
6
7import java.util.Collection;
8import java.util.List;
9import java.util.logging.Logger;
10
11import javax.swing.JLabel;
12
13import org.openstreetmap.josm.data.conflict.Conflict;
14import org.openstreetmap.josm.data.osm.OsmPrimitive;
15import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
16import org.openstreetmap.josm.gui.conflict.pair.MergeDecisionType;
17import org.openstreetmap.josm.gui.conflict.pair.tags.TagMergeItem;
18import org.openstreetmap.josm.tools.ImageProvider;
19
20/**
21 * Represents a the resolution of a tag conflict in an {@see OsmPrimitive}
22 *
23 */
24public class TagConflictResolveCommand extends ConflictResolveCommand {
25 @SuppressWarnings("unused")
26 private static final Logger logger = Logger.getLogger(TagConflictResolveCommand.class.getName());
27
28 /** the conflict to resolve */
29 private Conflict<? extends OsmPrimitive> conflict;
30
31 /** the list of merge decisions, represented as {@see TagMergeItem}s */
32 private final List<TagMergeItem> mergeItems;
33
34 /**
35 * replies the number of decided conflicts
36 *
37 * @return the number of decided conflicts
38 */
39 public int getNumDecidedConflicts() {
40 int n = 0;
41 for (TagMergeItem item: mergeItems) {
42 if (!item.getMergeDecision().equals(MergeDecisionType.UNDECIDED)) {
43 n++;
44 }
45 }
46 return n;
47 }
48
49 /**
50 * constructor
51 *
52 * @param my my primitive
53 * @param their their primitive
54 * @param mergeItems the list of merge decisions, represented as {@see TagMergeItem}s
55 */
56 public TagConflictResolveCommand(Conflict<? extends OsmPrimitive> conflict, List<TagMergeItem> mergeItems) {
57 this.conflict = conflict;
58 this.mergeItems = mergeItems;
59 }
60
61 @Override public JLabel getDescription() {
62 String msg = "";
63 switch(OsmPrimitiveType.from(conflict.getMy())) {
64 case NODE: msg = marktr("Resolve {0} tag conflicts in node {1}"); break;
65 case WAY: msg = marktr("Resolve {0} tag conflicts in way {1}"); break;
66 case RELATION: msg = marktr("Resolve {0} tag conflicts in relation {1}"); break;
67 }
68 return new JLabel(
69 tr(msg,getNumDecidedConflicts(), conflict.getMy().getId()),
70 ImageProvider.get("data", "object"),
71 JLabel.HORIZONTAL
72 );
73 }
74
75 @Override
76 public boolean executeCommand() {
77 // remember the current state of modified primitives, i.e. of
78 // OSM primitive 'my'
79 //
80 super.executeCommand();
81
82 // apply the merge decisions to OSM primitive 'my'
83 //
84 for (TagMergeItem item: mergeItems) {
85 if (! item.getMergeDecision().equals(MergeDecisionType.UNDECIDED)) {
86 item.applyToMyPrimitive(conflict.getMy());
87 }
88 }
89 rememberConflict(conflict);
90 return true;
91 }
92
93 @Override
94 public void fillModifiedData(Collection<OsmPrimitive> modified, Collection<OsmPrimitive> deleted,
95 Collection<OsmPrimitive> added) {
96 modified.add(conflict.getMy());
97 }
98}
Note: See TracBrowser for help on using the repository browser.