001 // License: GPL. For details, see LICENSE file.
002 package org.openstreetmap.josm.gui.dialogs.relation;
003
004 import java.awt.event.MouseAdapter;
005 import java.awt.event.MouseEvent;
006 import java.util.Collections;
007
008 import javax.swing.JTable;
009 import javax.swing.ListSelectionModel;
010 import javax.swing.SwingUtilities;
011
012 import org.openstreetmap.josm.data.osm.OsmPrimitive;
013
014 public class SelectionTable extends JTable {
015
016 private 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 }