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
012/**
013 * Selection table of relation editor.
014 * @since 2563
015 */
016public class SelectionTable extends JTable {
017
018    private final SelectionTableModel model;
019    private final MemberTableModel memberTableModel;
020
021    /**
022     * Constructs a new {@code SelectionTable}.
023     * @param model table model
024     * @param memberTableModel member table model
025     */
026    public SelectionTable(SelectionTableModel model, MemberTableModel memberTableModel) {
027        super(model, new SelectionTableColumnModel(memberTableModel));
028        this.model = model;
029        this.memberTableModel = memberTableModel;
030        build();
031    }
032
033    protected void build() {
034        setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
035        addMouseListener(new DoubleClickAdapter());
036    }
037
038    class DoubleClickAdapter extends MouseAdapter {
039        @Override
040        public void mouseClicked(MouseEvent evt) {
041            if (!(SwingUtilities.isLeftMouseButton(evt) && evt.getClickCount() > 1))
042                return;
043            int row = rowAtPoint(evt.getPoint());
044            memberTableModel.selectMembersReferringTo(Collections.singleton(model.getPrimitive(row)));
045        }
046    }
047}