1 /*
2 J-Bird net/sourceforge/jbird/SpeciesTable.java
3
4 Copyright 2001, 2002, 2003 Dick Repasky
5 */
6 package net.sourceforge.jbird;
7
8 import java.awt.Point;
9
10 import java.awt.event.MouseAdapter;
11 import java.awt.event.MouseEvent;
12 import java.awt.event.MouseListener;
13
14 import javax.swing.JTable;
15
16 import javax.swing.table.TableColumnModel;
17
18 /**
19 * A subclass of JTable that provides the mechanism for expanding
20 * and collapsing families of species in a SpeciesTableModel.
21 * <p>
22 * The feature provided by this class is detection of mouse clicks
23 * for expanding and collapsing families in the table.
24 * @author Dick Repasky
25 * @since J-Bird 0.1.3
26 *
27 */
28
29 public class SpeciesTable extends JTable {
30
31 protected SpeciesTableModel table_model;
32 protected MouseListener mouse_listener;
33
34 public SpeciesTable(SpeciesTableModel tablemodel) {
35 super(tablemodel);
36 table_model = tablemodel;
37 setupCommon();
38 }
39
40 public SpeciesTable(SpeciesTableModel tablemodel,
41 TableColumnModel columnmodel) {
42 super(tablemodel, columnmodel);
43 table_model = tablemodel;
44 setupCommon();
45 }
46
47 public final SpeciesTableModel getSpeciesTableModel() {
48 return table_model;
49 }
50
51 public void nullify() {
52 table_model = null;
53 mouse_listener = null;
54 }
55
56 ///////////////// protected below ////////////////////////
57
58 protected final void checkMouseClick(Point point) {
59 if (columnAtPoint(point) < 1) {
60 int rowidx = rowAtPoint(point);
61 if (table_model.getSpeciesIdx(rowidx) < 0) {
62 table_model.toggleFamily(rowidx);
63 }
64 }
65 }
66
67 protected final void setupCommon() {
68 mouse_listener = new MouseAdapter() {
69 public void mouseClicked(MouseEvent me) {
70 checkMouseClick(me.getPoint());
71 }
72 };
73 if (table_model.isCollapsable()) {
74 addMouseListener(mouse_listener);
75 }
76 }
77
78 }
79