// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.gui.conflict.pair.relation;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import org.openstreetmap.josm.data.conflict.Conflict;
import org.openstreetmap.josm.data.osm.OsmPrimitive;
import org.openstreetmap.josm.data.osm.Relation;
import org.openstreetmap.josm.data.osm.RelationMember;
import org.openstreetmap.josm.gui.conflict.pair.IConflictResolver;
import org.openstreetmap.josm.gui.conflict.pair.ListMerger;
/**
* A UI component for resolving conflicts in the member lists of two {@see Relation}
*/
public class RelationMemberMerger extends ListMerger<RelationMember> implements IConflictResolver {
//private static final Logger logger = Logger.getLogger(RelationMemberMerger.class.getName());
@Override
protected JScrollPane buildMyElementsTable() {
myEntriesTable = new JTable(
model.getMyTableModel(),
new RelationMemberListColumnModel(),
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 RelationMemberListColumnModel(),
model.getMergedSelectionModel()
);
mergedEntriesTable.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
mergedEntriesTable.setName("table.mergednodes");
mergedEntriesTable.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);
return embeddInScrollPane(mergedEntriesTable);
}
@Override
protected JScrollPane buildTheirElementsTable() {
theirEntriesTable = new JTable(
model.getTheirTableModel(),
new RelationMemberListColumnModel(),
model.getTheirSelectionModel()
);
theirEntriesTable.setName("table.theirnodes");
theirEntriesTable.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);
return embeddInScrollPane(theirEntriesTable);
}
public void populate(Conflict<? extends OsmPrimitive> conflict) {
RelationMemberListMergeModel model = (RelationMemberListMergeModel)getModel();
model.populate((Relation)conflict.getMy(), (Relation)conflict.getTheir());
}
public RelationMemberMerger() {
super(new RelationMemberListMergeModel());
}
public void deletePrimitive(boolean deleted) {
if (deleted) {
model.clearMerged();
model.setFrozen(true);
} else {
model.setFrozen(false);
}
}
}