author | Dan Labrecque <dan.labrecque@oracle.com> |
Thu, 24 May 2012 04:16:47 -0400 | |
changeset 827 | 0944d8c0158b |
permissions | -rw-r--r-- |
827
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
1 |
/* |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
2 |
* CDDL HEADER START |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
3 |
* |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
4 |
* The contents of this file are subject to the terms of the |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
5 |
* Common Development and Distribution License (the "License"). |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
6 |
* You may not use this file except in compliance with the License. |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
7 |
* |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
8 |
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
9 |
* or http://www.opensolaris.org/os/licensing. |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
10 |
* See the License for the specific language governing permissions |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
11 |
* and limitations under the License. |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
12 |
* |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
13 |
* When distributing Covered Code, include this CDDL HEADER in each |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
14 |
* file and include the License file at usr/src/OPENSOLARIS.LICENSE. |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
15 |
* If applicable, add the following below this CDDL HEADER, with the |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
16 |
* fields enclosed by brackets "[]" replaced with your own identifying |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
17 |
* information: Portions Copyright [yyyy] [name of copyright owner] |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
18 |
* |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
19 |
* CDDL HEADER END |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
20 |
*/ |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
21 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
22 |
/* |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
23 |
* Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved. |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
24 |
*/ |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
25 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
26 |
package com.oracle.solaris.vp.util.swing.tree; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
27 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
28 |
import java.awt.*; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
29 |
import java.awt.event.MouseEvent; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
30 |
import java.util.*; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
31 |
import java.util.List; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
32 |
import javax.swing.*; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
33 |
import javax.swing.event.*; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
34 |
import javax.swing.table.*; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
35 |
import com.oracle.solaris.vp.util.swing.ExtTable; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
36 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
37 |
@SuppressWarnings({"serial"}) |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
38 |
public class TreeTable extends ExtTable { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
39 |
// |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
40 |
// Instance data |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
41 |
// |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
42 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
43 |
protected class RenderPanel extends JPanel { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
44 |
// |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
45 |
// Instance data |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
46 |
// |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
47 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
48 |
private TreeLines lines; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
49 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
50 |
// |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
51 |
// Constructors |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
52 |
// |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
53 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
54 |
public RenderPanel(TreeLines lines) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
55 |
super(new BorderLayout()); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
56 |
this.lines = lines; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
57 |
setBackground(UIManager.getColor("Table.selectionBackground")); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
58 |
setOpaque(false); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
59 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
60 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
61 |
// |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
62 |
// Component methods |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
63 |
// |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
64 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
65 |
@Override |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
66 |
public boolean isEnabled() { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
67 |
try { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
68 |
return getComponent(1).isEnabled(); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
69 |
} catch (IndexOutOfBoundsException e) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
70 |
return false; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
71 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
72 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
73 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
74 |
@Override |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
75 |
public void setEnabled(boolean enabled) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
76 |
try { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
77 |
getComponent(1).setEnabled(enabled); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
78 |
} catch (IndexOutOfBoundsException ignore) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
79 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
80 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
81 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
82 |
// |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
83 |
// RenderPanel methods |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
84 |
// |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
85 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
86 |
public TreeLines getTreeLines() { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
87 |
return lines; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
88 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
89 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
90 |
public void setComponent(Component c) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
91 |
removeAll(); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
92 |
add(lines, BorderLayout.WEST); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
93 |
add(c, BorderLayout.CENTER); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
94 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
95 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
96 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
97 |
// |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
98 |
// Static data |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
99 |
// |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
100 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
101 |
private RowFilter<TreeTableModelAdapter, Integer> ROOT_VISIBLE_FILTER = |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
102 |
new RowFilter<TreeTableModelAdapter, Integer>() { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
103 |
@Override |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
104 |
public boolean include(RowFilter.Entry< |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
105 |
? extends TreeTableModelAdapter, ? extends Integer> entry) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
106 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
107 |
if (isRootVisible()) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
108 |
return true; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
109 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
110 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
111 |
int index = entry.getIdentifier(); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
112 |
ModelRowData row = entry.getModel().getRow(index); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
113 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
114 |
return row.getLevel() != 0; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
115 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
116 |
}; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
117 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
118 |
private RowFilter<TreeTableModelAdapter, Integer> |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
119 |
ANCESTOR_COLLAPSED_FILTER = |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
120 |
new RowFilter<TreeTableModelAdapter, Integer>() { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
121 |
@Override |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
122 |
public boolean include(RowFilter.Entry< |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
123 |
? extends TreeTableModelAdapter, ? extends Integer> entry) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
124 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
125 |
TreeTableModelAdapter adapter = entry.getModel(); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
126 |
int index = entry.getIdentifier(); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
127 |
ModelRowData row = adapter.getRow(index); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
128 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
129 |
ModelRowData parent = adapter.getParent(row); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
130 |
while (parent != null) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
131 |
if (!parent.isExpanded()) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
132 |
return false; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
133 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
134 |
parent = adapter.getParent(parent); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
135 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
136 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
137 |
return true; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
138 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
139 |
}; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
140 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
141 |
// |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
142 |
// Instance data |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
143 |
// |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
144 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
145 |
private List<ViewRowData> rowData = new ArrayList<ViewRowData>(); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
146 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
147 |
private TreeLines renderTreeLines = new TreeLines(this); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
148 |
private RenderPanel renderPanel = new RenderPanel(renderTreeLines); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
149 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
150 |
private TreeLines editorTreeLines = new TreeLines(this); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
151 |
private RenderPanel editPanel = new RenderPanel(editorTreeLines); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
152 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
153 |
private boolean rootVisible = true; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
154 |
private boolean turnerPressed; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
155 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
156 |
private List<RowFilter<TreeTableModelAdapter, Integer>> filters = |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
157 |
new ArrayList<RowFilter<TreeTableModelAdapter, Integer>>(); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
158 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
159 |
// |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
160 |
// Constructors |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
161 |
// |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
162 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
163 |
public TreeTable(TreeTableModel model) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
164 |
super(new TreeTableModelAdapter(model)); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
165 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
166 |
// Set up sorting |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
167 |
setAutoCreateRowSorter(false); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
168 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
169 |
final TableRowSorter<TreeTableModelAdapter> sorter = |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
170 |
new TableRowSorter<TreeTableModelAdapter>(getModel()); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
171 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
172 |
// By default, sorting is disabled |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
173 |
for (int i = 0, n = model.getColumnCount(); i < n; i++) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
174 |
sorter.setSortable(i, false); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
175 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
176 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
177 |
getColumnModel().addColumnModelListener( |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
178 |
new TableColumnModelListener() { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
179 |
@Override |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
180 |
public void columnAdded(TableColumnModelEvent e) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
181 |
sorter.setSortable(e.getToIndex(), false); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
182 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
183 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
184 |
@Override |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
185 |
public void columnMarginChanged(ChangeEvent e) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
186 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
187 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
188 |
@Override |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
189 |
public void columnMoved(TableColumnModelEvent e) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
190 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
191 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
192 |
@Override |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
193 |
public void columnRemoved(TableColumnModelEvent e) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
194 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
195 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
196 |
@Override |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
197 |
public void columnSelectionChanged(ListSelectionEvent e) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
198 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
199 |
}); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
200 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
201 |
sorter.setRowFilter( |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
202 |
new RowFilter<TreeTableModelAdapter, Integer>() { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
203 |
@Override |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
204 |
public boolean include( |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
205 |
RowFilter.Entry<? extends TreeTableModelAdapter, |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
206 |
? extends Integer> entry) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
207 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
208 |
synchronized (filters) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
209 |
for (RowFilter<TreeTableModelAdapter, Integer> filter : |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
210 |
filters) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
211 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
212 |
if (!filter.include(entry)) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
213 |
return false; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
214 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
215 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
216 |
return true; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
217 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
218 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
219 |
}); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
220 |
addRowFilter(ROOT_VISIBLE_FILTER); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
221 |
addRowFilter(ANCESTOR_COLLAPSED_FILTER); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
222 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
223 |
setRowSorter(sorter); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
224 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
225 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
226 |
// |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
227 |
// Component methods |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
228 |
// |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
229 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
230 |
@Override |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
231 |
protected void processMouseEvent(MouseEvent e) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
232 |
if (e.getButton() == 1) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
233 |
switch (e.getID()) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
234 |
case MouseEvent.MOUSE_PRESSED: |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
235 |
Point p = e.getPoint(); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
236 |
int vRow = rowAtPoint(p); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
237 |
if (vRow != -1) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
238 |
int vCol = columnAtPoint(p); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
239 |
int mCol = convertColumnIndexToModel(vCol); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
240 |
TreeTableModelAdapter adapter = getModel(); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
241 |
if (adapter.getTreeTableModel().isTreeColumn(mCol)) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
242 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
243 |
Rectangle cellRect = getCellRect(vRow, vCol, false); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
244 |
Point relPoint = new Point( |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
245 |
p.x - cellRect.x, p.y - cellRect.y); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
246 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
247 |
ViewRowData data = getRowData(vRow); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
248 |
renderTreeLines.setRowData(data); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
249 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
250 |
if (renderTreeLines.isOverTurner(relPoint)) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
251 |
// TableCellEditor editor = |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
252 |
// getTable().getCellEditor(); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
253 |
// if (editor != null) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
254 |
// editor.stopCellEditing(); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
255 |
// } |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
256 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
257 |
ModelRowData row = data.getModelRow(); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
258 |
row.setExpanded(!row.isExpanded()); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
259 |
((TableRowSorter)getRowSorter()).sort(); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
260 |
turnerPressed = true; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
261 |
e.consume(); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
262 |
return; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
263 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
264 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
265 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
266 |
break; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
267 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
268 |
case MouseEvent.MOUSE_RELEASED: |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
269 |
turnerPressed = false; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
270 |
break; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
271 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
272 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
273 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
274 |
super.processMouseEvent(e); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
275 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
276 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
277 |
@Override |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
278 |
protected void processMouseMotionEvent(MouseEvent e) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
279 |
switch (e.getID()) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
280 |
case MouseEvent.MOUSE_DRAGGED: |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
281 |
if (turnerPressed) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
282 |
e.consume(); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
283 |
return; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
284 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
285 |
break; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
286 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
287 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
288 |
super.processMouseMotionEvent(e); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
289 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
290 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
291 |
// |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
292 |
// JComponent methods |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
293 |
// |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
294 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
295 |
@Override |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
296 |
protected void paintComponent(Graphics g) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
297 |
// This recalculation really should only be done when 1) a sort occurs, |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
298 |
// 2) the model changes, or 3) the visible rows change. Lacking hooks |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
299 |
// into the latter, do it every time. |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
300 |
synchronized (rowData) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
301 |
Rectangle clip = getVisibleRect(); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
302 |
int rHeight = getRowHeight(); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
303 |
int fVRow = clip.y / rHeight; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
304 |
int lVRow = (clip.y + clip.height) / rHeight; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
305 |
lVRow = Math.min(lVRow, getRowCount() - 1); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
306 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
307 |
int nVRows = lVRow - fVRow + 1; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
308 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
309 |
rowData.clear(); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
310 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
311 |
TreeTableModelAdapter adapter = getModel(); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
312 |
List<Boolean> showLines = null; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
313 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
314 |
ViewRowData data = null; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
315 |
for (int vRow = lVRow; vRow >= fVRow; vRow--) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
316 |
data = createRowData(adapter, vRow, |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
317 |
data == null ? null : data.getShowLines()); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
318 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
319 |
rowData.add(data); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
320 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
321 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
322 |
Collections.reverse(rowData); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
323 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
324 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
325 |
super.paintComponent(g); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
326 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
327 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
328 |
// |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
329 |
// JTable methods |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
330 |
// |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
331 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
332 |
@Override |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
333 |
public TreeTableModelAdapter getModel() { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
334 |
return (TreeTableModelAdapter)super.getModel(); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
335 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
336 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
337 |
@Override |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
338 |
public Component prepareEditor(TableCellEditor editor, int vRow, int vCol) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
339 |
Component comp = super.prepareEditor(editor, vRow, vCol); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
340 |
return prepare(editPanel, comp, vRow, vCol); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
341 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
342 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
343 |
@Override |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
344 |
public Component prepareRenderer(TableCellRenderer renderer, int vRow, |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
345 |
int vCol) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
346 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
347 |
Component comp = super.prepareRenderer(renderer, vRow, vCol); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
348 |
return prepare(renderPanel, comp, vRow, vCol); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
349 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
350 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
351 |
// |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
352 |
// TreeTable methods |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
353 |
// |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
354 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
355 |
public void addRowFilter(RowFilter<TreeTableModelAdapter, Integer> filter) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
356 |
synchronized (filters) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
357 |
filters.add(filter); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
358 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
359 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
360 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
361 |
public TreeLines getEditorTreeLines() { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
362 |
return editorTreeLines; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
363 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
364 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
365 |
public TreeLines getRenderTreeLines() { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
366 |
return renderTreeLines; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
367 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
368 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
369 |
public boolean isRootVisible() { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
370 |
return rootVisible; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
371 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
372 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
373 |
public void removeRowFilter( |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
374 |
RowFilter<TreeTableModelAdapter, Integer> filter) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
375 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
376 |
synchronized (filters) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
377 |
filters.remove(filter); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
378 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
379 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
380 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
381 |
public void setRootVisible(boolean rootVisible) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
382 |
this.rootVisible = rootVisible; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
383 |
((TableRowSorter)getRowSorter()).sort(); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
384 |
repaint(); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
385 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
386 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
387 |
// |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
388 |
// Private methods |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
389 |
// |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
390 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
391 |
private ViewRowData createRowData(TreeTableModelAdapter adapter, int vRow, |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
392 |
List<Boolean> templateShowLines) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
393 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
394 |
int mRow = convertRowIndexToModel(vRow); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
395 |
ModelRowData row = adapter.getRow(mRow); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
396 |
int level = row.getLevel(); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
397 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
398 |
// Ensure sufficient size |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
399 |
List<Boolean> showLines = new ArrayList<Boolean>(); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
400 |
for (int i = 0; i < level; i++) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
401 |
Boolean value = null; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
402 |
try { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
403 |
value = templateShowLines.get(i); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
404 |
} catch (IndexOutOfBoundsException ignore) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
405 |
} catch (NullPointerException ignore) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
406 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
407 |
showLines.add(value); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
408 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
409 |
showLines.add(null); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
410 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
411 |
ViewRowData data = new ViewRowData(vRow, row, showLines); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
412 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
413 |
int nRows = getRowCount(); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
414 |
for (vRow++; level >= 0 && showLines.get(level) == null; vRow++) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
415 |
int curLevel = -1; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
416 |
if (vRow < nRows) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
417 |
mRow = convertRowIndexToModel(vRow); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
418 |
row = adapter.getRow(mRow); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
419 |
curLevel = row.getLevel(); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
420 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
421 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
422 |
if (curLevel == level) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
423 |
showLines.set(level, true); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
424 |
level--; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
425 |
} else |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
426 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
427 |
if (curLevel < level) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
428 |
for (int i = level; i > curLevel; i--) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
429 |
showLines.set(level, false); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
430 |
level--; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
431 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
432 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
433 |
if (level != -1) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
434 |
showLines.set(level, true); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
435 |
level--; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
436 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
437 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
438 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
439 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
440 |
return data; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
441 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
442 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
443 |
private ViewRowData getRowData(int vRow) throws IndexOutOfBoundsException { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
444 |
synchronized (rowData) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
445 |
int offset = rowData.get(0).getRow(); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
446 |
return rowData.get(vRow - offset); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
447 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
448 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
449 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
450 |
private Component prepare(RenderPanel panel, Component comp, int vRow, |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
451 |
int vCol) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
452 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
453 |
TreeTableModelAdapter model = getModel(); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
454 |
int mCol = convertColumnIndexToModel(vCol); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
455 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
456 |
if (model.getTreeTableModel().isTreeColumn(mCol)) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
457 |
try { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
458 |
ViewRowData data = getRowData(vRow); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
459 |
panel.getTreeLines().setRowData(data); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
460 |
panel.setComponent(comp); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
461 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
462 |
if (isCellSelected(vRow, vCol)) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
463 |
panel.setOpaque(true); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
464 |
panel.getTreeLines().setForeground( |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
465 |
UIManager.getColor("Table.selectionForeground")); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
466 |
} else { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
467 |
panel.setOpaque(false); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
468 |
panel.getTreeLines().setForeground(null); |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
469 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
470 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
471 |
comp = panel; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
472 |
} catch (IndexOutOfBoundsException ignore) { |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
473 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
474 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
475 |
|
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
476 |
return comp; |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
477 |
} |
0944d8c0158b
7169052 Integrate Visual Panels into Userland
Dan Labrecque <dan.labrecque@oracle.com>
parents:
diff
changeset
|
478 |
} |