1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 package com.gargoylesoftware.base.gui;
39
40 import com.gargoylesoftware.base.util.DetailedNullPointerException;
41 import java.awt.Color;
42 import java.awt.Graphics;
43 import java.awt.LayoutManager;
44 import javax.swing.JPanel;
45
46 /***
47 * A special panel that when used with a TableLayout, will draw
48 * all the table cell boundaries. This is intended for use when
49 * debugging only.
50 *
51 * @version $Revision: 1.5 $
52 * @author <a href="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
53 */
54 public class TableLayoutDebuggingPanel extends JPanel {
55 private static final long serialVersionUID = 1;
56 private Color lineColor_;
57 private boolean gridLinesEnabled_ = true;
58
59
60 /***
61 * Create a new panel with a default line colour of red.
62 */
63 public TableLayoutDebuggingPanel() {
64 setLineColor( Color.red );
65 }
66
67
68 /***
69 * Create a new panel with the specified layout and a default line colour of red.
70 * @param layout The new layout manager.
71 */
72 public TableLayoutDebuggingPanel( final LayoutManager layout ) {
73 this();
74 setLayout(layout);
75 }
76
77
78 /***
79 * Set the line colour.
80 * @param lineColor The new line colour.
81 */
82 public void setLineColor( final Color lineColor ) {
83 assertNotNull("lineColor", lineColor);
84 lineColor_ = lineColor;
85 }
86
87
88 /***
89 * Return the current line colour.
90 * @return the line colour.
91 */
92 public Color getLineColor() {
93 return lineColor_;
94 }
95
96
97 /***
98 * Override the painting logic to draw the gridlines.
99 * @param g The graphics object.
100 */
101 public void paint( final Graphics g ) {
102 super.paint(g);
103
104 if( gridLinesEnabled_ == true ) {
105 final LayoutManager layout = getLayout();
106 if( layout instanceof TableLayout ) {
107 g.setColor( lineColor_ );
108 ((TableLayout)layout).drawOutlines(g);
109 }
110 }
111 }
112
113
114 /***
115 * Set whether or not the grid lines are visible. Default is true.
116 * @param enabled True if the grid lines are to be shown.
117 */
118 public void setGridLinesEnabled( final boolean enabled ) {
119 gridLinesEnabled_ = enabled;
120 }
121
122
123 /***
124 * Return true if the grid lines are enabled.
125 * @return true if the grid lines are enabled.
126 */
127 public boolean isGridLinesEnabled() {
128 return gridLinesEnabled_;
129 }
130
131
132 /***
133 * Verify that the specified value is not null. If it is then throw an exception
134 *
135 * @param fieldName The name of the field to check
136 * @param fieldValue The value of the field to check
137 * @exception DetailedNullPointerException If fieldValue is null
138 */
139 protected final void assertNotNull( final String fieldName, final Object fieldValue )
140 throws DetailedNullPointerException {
141
142 if( fieldValue == null ) {
143 throw new DetailedNullPointerException(fieldName);
144 }
145 }
146 }
147