001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.gui.conflict.pair; 003 004import javax.swing.JTable; 005import javax.swing.ListSelectionModel; 006import javax.swing.table.TableColumnModel; 007 008import org.openstreetmap.josm.command.conflict.ConflictResolveCommand; 009import org.openstreetmap.josm.data.osm.OsmPrimitive; 010import org.openstreetmap.josm.data.osm.PrimitiveId; 011import org.openstreetmap.josm.gui.layer.OsmDataLayer; 012import org.openstreetmap.josm.gui.widgets.OsmPrimitivesTable; 013import org.openstreetmap.josm.gui.widgets.OsmPrimitivesTableModel; 014 015public abstract class PairTable extends OsmPrimitivesTable { 016 017 private final transient AbstractListMergeModel<? extends PrimitiveId, ? extends ConflictResolveCommand> model; 018 019 /** 020 * Constructs a new {@code PairTable}. 021 * @param name table name 022 * @param model merge model 023 * @param dm table model 024 * @param cm column model 025 * @param sm selection model 026 */ 027 public PairTable(String name, AbstractListMergeModel<? extends PrimitiveId, ? extends ConflictResolveCommand> model, 028 OsmPrimitivesTableModel dm, TableColumnModel cm, ListSelectionModel sm) { 029 super(dm, cm, sm); 030 this.model = model; 031 setName(name); 032 setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN); 033 } 034 035 @Override 036 public OsmPrimitive getPrimitiveInLayer(int row, OsmDataLayer layer) { 037 OsmPrimitive result = super.getPrimitiveInLayer(row, layer); 038 if (model != null && result != null && layer != null && result.getDataSet() != layer.data) { 039 result = model.getMyPrimitiveById(result); 040 } 041 return result; 042 } 043}