source: josm/trunk/src/org/openstreetmap/josm/command/ConflictResolveCommand.java@ 5816

Last change on this file since 5816 was 5816, checked in by stoecker, 11 years ago

javadoc fixes

  • Property svn:eol-style set to native
File size: 2.3 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 org.openstreetmap.josm.Main;
7import org.openstreetmap.josm.data.conflict.Conflict;
8import org.openstreetmap.josm.data.conflict.ConflictCollection;
9import org.openstreetmap.josm.gui.layer.OsmDataLayer;
10
11/**
12 * This is the common base class for {@link Command}s which manipulate {@link Conflict}s in
13 * addition to {@link org.openstreetmap.josm.data.osm.OsmPrimitive}s.
14 *
15 * A ConflictResolverCommand can remember a collection of conflicts it resolves. Upon undoing
16 * it reconstitutes them.
17 *
18 */
19public abstract class ConflictResolveCommand extends Command {
20 /** the list of resolved conflicts */
21 private ConflictCollection resolvedConflicts;
22
23 public ConflictResolveCommand() {
24 super();
25 resolvedConflicts = new ConflictCollection();
26 }
27
28 public ConflictResolveCommand(OsmDataLayer layer) {
29 super(layer);
30 resolvedConflicts = new ConflictCollection();
31 }
32
33 /**
34 * remembers a conflict in the internal list of remembered conflicts
35 *
36 * @param c the remembered conflict
37 */
38 protected void rememberConflict(Conflict<?> c) {
39 if (! resolvedConflicts.hasConflictForMy(c.getMy())) {
40 resolvedConflicts.add(c);
41 }
42 }
43
44 /**
45 * reconstitutes all remembered conflicts. Add the remembered conflicts to the
46 * set of conflicts of the {@link OsmDataLayer} this command was applied to.
47 *
48 */
49 protected void reconstituteConflicts() {
50 OsmDataLayer editLayer = getLayer();
51 for(Conflict<?> c : resolvedConflicts) {
52 if (!editLayer.getConflicts().hasConflictForMy(c.getMy())) {
53 editLayer.getConflicts().add(c);
54 }
55 }
56 }
57
58 @Override
59 public void undoCommand() {
60 super.undoCommand();
61
62 if (! Main.map.mapView.hasLayer(getLayer())) {
63 System.out.println(tr("Cannot undo command ''{0}'' because layer ''{1}'' is not present any more",
64 this.toString(),
65 getLayer().toString()
66 ));
67 return;
68 }
69
70 Main.map.mapView.setActiveLayer(getLayer());
71 reconstituteConflicts();
72 }
73}
Note: See TracBrowser for help on using the repository browser.