View Javadoc
1   package net.logAnalyzer.utils.gui.treetable;
2   import java.awt.Color;
3   import java.awt.Dimension;
4   import java.awt.Graphics;
5   import java.awt.Rectangle;
6   
7   import javax.accessibility.Accessible;
8   import javax.swing.JComponent;
9   import javax.swing.JTree;
10  import javax.swing.plaf.TreeUI;
11  import javax.swing.tree.TreePath;
12  
13  public class TableTreeUI extends TreeUI {
14      
15      private final TreeUI actualUI;
16      
17      private Color lineColor;
18      
19      public TableTreeUI(TreeUI actualUI, Color lineColor) {
20          if ( actualUI == null ) {
21              throw new IllegalArgumentException("Actual TreeUI is <null>");
22          }
23          
24          if ( lineColor == null ) {
25              throw new IllegalArgumentException("Line color is <null>");
26          }
27          
28          this.actualUI = actualUI;
29          this.lineColor = lineColor;
30      }
31      
32      private void drawBottomLine(Graphics g) {
33          Rectangle bounds = g.getClipBounds();
34          int bottomY = (int)( bounds.getMaxY() - 1 );
35          g.setColor( this.lineColor );
36          g.drawLine( 0, bottomY, (int)bounds.getWidth(), bottomY);
37      }
38      
39      public void paint(Graphics g, JComponent c) {
40          this.actualUI.paint( g, c );
41          this.drawBottomLine( g );
42      }
43  
44      public void update(Graphics g, JComponent c) {
45          this.actualUI.update( g, c );
46          this.drawBottomLine( g );
47      }
48  
49      public void cancelEditing(JTree arg0) {
50          this.actualUI.cancelEditing( arg0 );
51      }
52  
53      public boolean contains(JComponent arg0, int arg1, int arg2) {
54          return this.actualUI.contains( arg0, arg1, arg2 );
55      }
56  
57      public Accessible getAccessibleChild(JComponent arg0, int arg1) {
58          return this.actualUI.getAccessibleChild( arg0, arg1 );
59      }
60  
61      public int getAccessibleChildrenCount(JComponent arg0) {
62          return this.actualUI.getAccessibleChildrenCount( arg0 );
63      }
64  
65      public TreePath getClosestPathForLocation(JTree arg0, int arg1, int arg2) {
66          return this.actualUI.getClosestPathForLocation( arg0, arg1, arg2 );
67      }
68  
69      public TreePath getEditingPath(JTree arg0) {
70          return this.actualUI.getEditingPath( arg0 );
71      }
72  
73      public Dimension getMaximumSize(JComponent arg0) {
74          return this.actualUI.getMaximumSize( arg0 );
75      }
76  
77      public Dimension getMinimumSize(JComponent arg0) {
78          return this.actualUI.getMinimumSize( arg0 );
79      }
80  
81      public Rectangle getPathBounds(JTree arg0, TreePath arg1) {
82          return this.actualUI.getPathBounds( arg0, arg1 );
83      }
84  
85      public TreePath getPathForRow(JTree arg0, int arg1) {
86          return this.actualUI.getPathForRow( arg0, arg1 );
87      }
88  
89      public Dimension getPreferredSize(JComponent arg0) {
90          return this.actualUI.getPreferredSize( arg0 );
91      }
92  
93      public int getRowCount(JTree arg0) {
94          return this.actualUI.getRowCount( arg0 );
95      }
96  
97      public int getRowForPath(JTree arg0, TreePath arg1) {
98          return this.actualUI.getRowForPath( arg0, arg1 );
99      }
100 
101     public void installUI(JComponent arg0) {
102         this.actualUI.installUI( arg0 );
103     }
104 
105     public boolean isEditing(JTree arg0) {
106         return this.actualUI.isEditing( arg0 );
107     }
108 
109     public void startEditingAtPath(JTree arg0, TreePath arg1) {
110         this.actualUI.startEditingAtPath( arg0, arg1 );
111     }
112 
113     public boolean stopEditing(JTree arg0) {
114         return this.actualUI.stopEditing( arg0 );
115     }
116 
117     public void uninstallUI(JComponent arg0) {
118         this.actualUI.uninstallUI( arg0 );
119     }
120     public void setLineColor(Color color){
121         this.lineColor = color;
122     }
123 }