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 }