// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.gui.conflict.pair.nodes;
import javax.swing.JScrollPane;
import org.openstreetmap.josm.command.conflict.WayNodesConflictResolverCommand;
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.AbstractListMerger;
/**
* A UI component for resolving conflicts in the node lists of two {@link Way}s.
* @since 1622
*/
public class NodeListMerger extends AbstractListMerger<Node, WayNodesConflictResolverCommand> {
/**
* Constructs a new {@code NodeListMerger}.
*/
public NodeListMerger() {
super(new NodeListMergeModel());
}
@Override
protected JScrollPane buildMyElementsTable() {
myEntriesTable = new NodeListTable(
"table.mynodes",
model,
model.getMyTableModel(),
model.getMySelectionModel()
);
return embeddInScrollPane(myEntriesTable);
}
@Override
protected JScrollPane buildMergedElementsTable() {
mergedEntriesTable = new NodeListTable(
"table.mergednodes",
model,
model.getMergedTableModel(),
model.getMergedSelectionModel()
);
return embeddInScrollPane(mergedEntriesTable);
}
@Override
protected JScrollPane buildTheirElementsTable() {
theirEntriesTable = new NodeListTable(
"table.theirnodes",
model,
model.getTheirTableModel(),
model.getTheirSelectionModel()
);
return embeddInScrollPane(theirEntriesTable);
}
@Override
public void populate(Conflict<? extends OsmPrimitive> conflict) {
Way myWay = (Way) conflict.getMy();
Way theirWay = (Way) conflict.getTheir();
((NodeListMergeModel) model).populate(myWay, theirWay, conflict.getMergedMap());
myEntriesTable.setLayer(findLayerFor(myWay));
theirEntriesTable.setLayer(findLayerFor(theirWay));
}
@Override
public void deletePrimitive(boolean deleted) {
if (deleted) {
model.setFrozen(true);
model.clearMerged();
} else {
model.setFrozen(false);
}
}
}