001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.command.conflict; 003 004import static org.openstreetmap.josm.tools.I18n.marktr; 005import static org.openstreetmap.josm.tools.I18n.tr; 006 007import java.util.Collection; 008 009import javax.swing.Icon; 010 011import org.openstreetmap.josm.data.conflict.Conflict; 012import org.openstreetmap.josm.data.osm.OsmPrimitive; 013import org.openstreetmap.josm.data.osm.OsmPrimitiveType; 014import org.openstreetmap.josm.tools.ImageProvider; 015 016/** 017 * Represents the resolution of a conflict between the modified flag of two {@link OsmPrimitive}s. 018 * 019 * 020 */ 021public class ModifiedConflictResolveCommand extends ConflictResolveCommand { 022 023 /** the conflict to resolve */ 024 private Conflict<? extends OsmPrimitive> conflict; 025 026 /** 027 * constructor 028 * @param conflict the conflict data set 029 */ 030 public ModifiedConflictResolveCommand(Conflict<? extends OsmPrimitive> conflict) { 031 this.conflict = conflict; 032 } 033 034 @Override 035 public String getDescriptionText() { 036 String msg = ""; 037 switch(OsmPrimitiveType.from(conflict.getMy())) { 038 case NODE: msg = marktr("Set the ''modified'' flag for node {0}"); break; 039 case WAY: msg = marktr("Set the ''modified'' flag for way {0}"); break; 040 case RELATION: msg = marktr("Set the ''modified'' flag for relation {0}"); break; 041 } 042 return tr(msg,conflict.getMy().getId()); 043 } 044 045 @Override 046 public Icon getDescriptionIcon() { 047 return ImageProvider.get("data", "object"); 048 } 049 050 @Override 051 public boolean executeCommand() { 052 super.executeCommand(); 053 if (!conflict.getMy().isNew() && conflict.getMy().hasEqualSemanticAttributes(conflict.getTheir())) { 054 conflict.getMy().setModified(conflict.getTheir().isModified()); 055 } 056 getLayer().getConflicts().remove(conflict); 057 rememberConflict(conflict); 058 return true; 059 } 060 061 @Override 062 public void fillModifiedData(Collection<OsmPrimitive> modified, Collection<OsmPrimitive> deleted, 063 Collection<OsmPrimitive> added) { 064 modified.add(conflict.getMy()); 065 } 066}