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    }