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