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.data.osm.OsmPrimitive; 009import org.openstreetmap.josm.data.osm.PrimitiveId; 010import org.openstreetmap.josm.gui.layer.OsmDataLayer; 011import org.openstreetmap.josm.gui.widgets.OsmPrimitivesTable; 012import org.openstreetmap.josm.gui.widgets.OsmPrimitivesTableModel; 013 014public abstract class PairTable extends OsmPrimitivesTable { 015 016 private final transient ListMergeModel<? extends PrimitiveId> model; 017 018 /** 019 * Constructs a new {@code PairTable}. 020 * @param name table name 021 * @param model merge model 022 * @param dm table model 023 * @param cm column model 024 * @param sm selection model 025 */ 026 public PairTable(String name, ListMergeModel<? extends PrimitiveId> model, 027 OsmPrimitivesTableModel dm, TableColumnModel cm, ListSelectionModel sm) { 028 super(dm, cm, sm); 029 this.model = model; 030 setName(name); 031 setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN); 032 } 033 034 @Override 035 public OsmPrimitive getPrimitiveInLayer(int row, OsmDataLayer layer) { 036 OsmPrimitive result = super.getPrimitiveInLayer(row, layer); 037 if (model != null && result != null && layer != null && result.getDataSet() != layer.data) { 038 result = model.getMyPrimitiveById(result); 039 } 040 return result; 041 } 042}