001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.gui.dialogs.relation;
003
004import java.awt.event.MouseAdapter;
005import java.awt.event.MouseEvent;
006import java.util.Collections;
007
008import javax.swing.JTable;
009import javax.swing.ListSelectionModel;
010import javax.swing.SwingUtilities;
011
012import org.openstreetmap.josm.data.osm.OsmPrimitive;
013
014public class SelectionTable extends JTable {
015
016    private final SelectionTableModel model;
017    private MemberTableModel memberTableModel;
018
019    protected void build() {
020        setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
021        addMouseListener(new DoubleClickAdapter());
022    }
023
024    public SelectionTable(SelectionTableModel model, SelectionTableColumnModel columnModel) {
025        super(model, columnModel);
026        this.model = model;
027        build();
028    }
029
030    public void setMemberTableModel(MemberTableModel memberTableModel) {
031        this.memberTableModel = memberTableModel;
032    }
033
034    class DoubleClickAdapter extends MouseAdapter {
035        @Override
036        public void mouseClicked(MouseEvent evt) {
037            if (!(SwingUtilities.isLeftMouseButton(evt) && evt.getClickCount() > 1))
038                return;
039            int row = rowAtPoint(evt.getPoint());
040            OsmPrimitive primitive = model.getPrimitive(row);
041            memberTableModel.selectMembersReferringTo(Collections.singleton(primitive));
042        }
043    }
044}