View Javadoc

1   /*
2    * Copyright (c) 1998, 2005 Gargoyle Software Inc. All rights reserved.
3    *
4    * Redistribution and use in source and binary forms, with or without
5    * modification, are permitted provided that the following conditions are met:
6    *
7    * 1. Redistributions of source code must retain the above copyright notice,
8    *    this list of conditions and the following disclaimer.
9    * 2. Redistributions in binary form must reproduce the above copyright notice,
10   *    this list of conditions and the following disclaimer in the documentation
11   *    and/or other materials provided with the distribution.
12   * 3. The end-user documentation included with the redistribution, if any, must
13   *    include the following acknowledgment:
14   *
15   *       "This product includes software developed by Gargoyle Software Inc.
16   *        (http://www.GargoyleSoftware.com/)."
17   *
18   *    Alternately, this acknowledgment may appear in the software itself, if
19   *    and wherever such third-party acknowledgments normally appear.
20   * 4. The name "Gargoyle Software" must not be used to endorse or promote
21   *    products derived from this software without prior written permission.
22   *    For written permission, please contact info@GargoyleSoftware.com.
23   * 5. Products derived from this software may not be called "GSBase", nor may
24   *    "GSBase" appear in their name, without prior written permission of
25   *    Gargoyle Software Inc.
26   *
27   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
28   * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
29   * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARGOYLE
30   * SOFTWARE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
31   * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
32   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
33   * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
34   * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35   * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
36   * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
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