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    public PairTable(String name, ListMergeModel<? extends PrimitiveId> model,
019            OsmPrimitivesTableModel dm, TableColumnModel cm, ListSelectionModel sm) {
020        super(dm, cm, sm);
021        this.model = model;
022        setName(name);
023        setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);
024    }
025
026    @Override
027    public OsmPrimitive getPrimitiveInLayer(int row, OsmDataLayer layer) {
028        OsmPrimitive result = super.getPrimitiveInLayer(row, layer);
029        if (model != null && result != null && layer != null && result.getDataSet() != layer.data) {
030            result = model.getMyPrimitiveById(result);
031        }
032        return result;
033    }
034}