package org.openstreetmap.josm.gui.conflict.pair.nodes;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import org.openstreetmap.josm.data.conflict.Conflict;
import org.openstreetmap.josm.data.osm.Node;
import org.openstreetmap.josm.data.osm.OsmPrimitive;
import org.openstreetmap.josm.data.osm.Way;
import org.openstreetmap.josm.gui.conflict.pair.IConflictResolver;
import org.openstreetmap.josm.gui.conflict.pair.ListMerger;
/**
* A UI component for resolving conflicts in the node lists of two {@see Way}s.
*
*/
public class NodeListMerger extends ListMerger<Node> implements IConflictResolver {
//private static final Logger logger = Logger.getLogger(NodeListMerger.class.getName());
public NodeListMerger() {
super(new NodeListMergeModel());
}
@Override
protected JScrollPane buildMyElementsTable() {
myEntriesTable = new JTable(
model.getMyTableModel(),
new NodeListColumnModel(
new NodeListTableCellRenderer()
),
model.getMySelectionModel()
);
myEntriesTable.setName("table.mynodes");
myEntriesTable.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);
return embeddInScrollPane(myEntriesTable);
}
@Override
protected JScrollPane buildMergedElementsTable() {
mergedEntriesTable = new JTable(
model.getMergedTableModel(),
new NodeListColumnModel(
new NodeListTableCellRenderer()
),
model.getMergedSelectionModel()
);
mergedEntriesTable.setName("table.mergednodes");
mergedEntriesTable.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);
return embeddInScrollPane(mergedEntriesTable);
}
@Override
protected JScrollPane buildTheirElementsTable() {
theirEntriesTable = new JTable(
model.getTheirTableModel(),
new NodeListColumnModel(
new NodeListTableCellRenderer()
),
model.getTheirSelectionModel()
);
theirEntriesTable.setName("table.theirnodes");
theirEntriesTable.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);
return embeddInScrollPane(theirEntriesTable);
}
public void populate(Conflict<? extends OsmPrimitive> conflict) {
((NodeListMergeModel)model).populate((Way)conflict.getMy(), (Way)conflict.getTheir());
}
public void deletePrimitive(boolean deleted) {
if (deleted) {
model.setFrozen(true);
model.clearMerged();
} else {
model.setFrozen(false);
}
}
}