001 // License: GPL. For details, see LICENSE file. 002 package org.openstreetmap.josm.gui.conflict.pair.nodes; 003 004 import javax.swing.JScrollPane; 005 006 import org.openstreetmap.josm.data.conflict.Conflict; 007 import org.openstreetmap.josm.data.osm.Node; 008 import org.openstreetmap.josm.data.osm.OsmPrimitive; 009 import org.openstreetmap.josm.data.osm.Way; 010 import org.openstreetmap.josm.gui.conflict.pair.IConflictResolver; 011 import org.openstreetmap.josm.gui.conflict.pair.ListMerger; 012 013 /** 014 * A UI component for resolving conflicts in the node lists of two {@link Way}s. 015 * 016 */ 017 public class NodeListMerger extends ListMerger<Node> implements IConflictResolver { 018 public NodeListMerger() { 019 super(new NodeListMergeModel()); 020 } 021 022 @Override 023 protected JScrollPane buildMyElementsTable() { 024 myEntriesTable = new NodeListTable( 025 "table.mynodes", 026 model, 027 model.getMyTableModel(), 028 model.getMySelectionModel() 029 ); 030 return embeddInScrollPane(myEntriesTable); 031 } 032 033 @Override 034 protected JScrollPane buildMergedElementsTable() { 035 mergedEntriesTable = new NodeListTable( 036 "table.mergednodes", 037 model, 038 model.getMergedTableModel(), 039 model.getMergedSelectionModel() 040 ); 041 return embeddInScrollPane(mergedEntriesTable); 042 } 043 044 @Override 045 protected JScrollPane buildTheirElementsTable() { 046 theirEntriesTable = new NodeListTable( 047 "table.theirnodes", 048 model, 049 model.getTheirTableModel(), 050 model.getTheirSelectionModel() 051 ); 052 return embeddInScrollPane(theirEntriesTable); 053 } 054 055 public void populate(Conflict<? extends OsmPrimitive> conflict) { 056 Way myWay = (Way)conflict.getMy(); 057 Way theirWay = (Way)conflict.getTheir(); 058 ((NodeListMergeModel)model).populate(myWay, theirWay, conflict.getMergedMap()); 059 myEntriesTable.setLayer(findLayerFor(myWay)); 060 theirEntriesTable.setLayer(findLayerFor(theirWay)); 061 } 062 063 public void deletePrimitive(boolean deleted) { 064 if (deleted) { 065 model.setFrozen(true); 066 model.clearMerged(); 067 } else { 068 model.setFrozen(false); 069 } 070 } 071 }