Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
MyTreeTableCellRenderer |
|
| 1.8;1,8 |
1 | package wjhk.jupload2.gui.filepanel.treeview; | |
2 | ||
3 | import java.awt.Component; | |
4 | import java.awt.Graphics; | |
5 | ||
6 | import javax.swing.JTable; | |
7 | import javax.swing.JTree; | |
8 | import javax.swing.table.TableCellRenderer; | |
9 | import javax.swing.tree.TreeModel; | |
10 | ||
11 | /** | |
12 | * This code is taken from the tutorial written by Jörn Hameister, <A | |
13 | * HREF="http://www.hameister.org/JavaSwingTreeTable.html">available here</A>.<BR/> | |
14 | * <BR/> | |
15 | * <UL> | |
16 | * <LI>Call to tree.setVisibleRoot(false) pour masquer la racine.</LI> | |
17 | * <UL> | |
18 | * <BR/> | |
19 | * The last thing the JTree and JTable which must now be created. The Tree component MyTreeTableCellRenderer inherits | |
20 | * from JTree and implements the TableCellRenderer interface. This class ensures that the row heights of Tree and Table | |
21 | * are the same and are set correctly in the selection of the background colors. It also ensures that the elements of | |
22 | * the tree are indented correctly depending on the level. | |
23 | * | |
24 | * @author Jörn Hameister | |
25 | */ | |
26 | public class MyTreeTableCellRenderer extends JTree implements TableCellRenderer { | |
27 | ||
28 | private static final long serialVersionUID = 1L; | |
29 | ||
30 | /** Die letzte Zeile, die gerendert wurde. */ | |
31 | protected int visibleRow; | |
32 | ||
33 | private MyTreeTable treeTable; | |
34 | ||
35 | public MyTreeTableCellRenderer(MyTreeTable treeTable, TreeModel model) { | |
36 | 40 | super(model); |
37 | 40 | this.treeTable = treeTable; |
38 | ||
39 | // Setzen der Zeilenhoehe fuer die JTable | |
40 | // Muss explizit aufgerufen werden, weil treeTable noch | |
41 | // null ist, wenn super(model) setRowHeight aufruft! | |
42 | 40 | setRowHeight(getRowHeight()); |
43 | ||
44 | 40 | setRootVisible(false); |
45 | 40 | setScrollsOnExpand(true); |
46 | 40 | setShowsRootHandles(true); |
47 | 40 | } |
48 | ||
49 | /** | |
50 | * Tree und Table muessen die gleiche Hoehe haben. | |
51 | */ | |
52 | public void setRowHeight(int rowHeight) { | |
53 | 80 | if (rowHeight > 0) { |
54 | 40 | super.setRowHeight(rowHeight); |
55 | 40 | if (treeTable != null && treeTable.getRowHeight() != rowHeight) { |
56 | 0 | treeTable.setRowHeight(getRowHeight()); |
57 | } | |
58 | } | |
59 | 80 | } |
60 | ||
61 | /** | |
62 | * Tree muss die gleiche Hoehe haben wie Table. | |
63 | */ | |
64 | public void setBounds(int x, int y, int w, int h) { | |
65 | 0 | super.setBounds(x, 0, w, treeTable.getHeight()); |
66 | 0 | } |
67 | ||
68 | /** | |
69 | * Sorgt fuer die Einrueckung der Ordner. | |
70 | */ | |
71 | public void paint(Graphics g) { | |
72 | 0 | g.translate(0, -visibleRow * getRowHeight()); |
73 | ||
74 | 0 | super.paint(g); |
75 | 0 | } |
76 | ||
77 | /** | |
78 | * Liefert den Renderer mit der passenden Hintergrundfarbe zurueck. | |
79 | */ | |
80 | public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, | |
81 | int row, int column) { | |
82 | 0 | if (isSelected) |
83 | 0 | setBackground(table.getSelectionBackground()); |
84 | else | |
85 | 0 | setBackground(table.getBackground()); |
86 | ||
87 | 0 | visibleRow = row; |
88 | 0 | return this; |
89 | } | |
90 | } |