001: /*
002: * Copyright (c) 2004 JETA Software, Inc. All rights reserved.
003: *
004: * Redistribution and use in source and binary forms, with or without modification,
005: * are permitted provided that the following conditions are met:
006: *
007: * o Redistributions of source code must retain the above copyright notice,
008: * this list of conditions and the following disclaimer.
009: *
010: * o Redistributions in binary form must reproduce the above copyright notice,
011: * this list of conditions and the following disclaimer in the documentation
012: * and/or other materials provided with the distribution.
013: *
014: * o Neither the name of JETA Software nor the names of its contributors may
015: * be used to endorse or promote products derived from this software without
016: * specific prior written permission.
017: *
018: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
019: * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
020: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
021: * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
022: * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
023: * INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
024: * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
025: * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
026: * INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
027: * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
028: */
029:
030: package com.jeta.forms.components.border;
031:
032: import java.awt.Font;
033:
034: import javax.swing.JComponent;
035:
036: /**
037: * A component that simulates the left or right side of a TitledBorder. This
038: * component is useful when flattening layouts. It allows a titled border to be
039: * used to separate components, while allowing those components to stay in the
040: * same row or column of the form. This allows components to have the same x,y,
041: * width, or height, yet have differnt title borders. This is not possible when
042: * using standard TitledBorder.
043: *
044: * @author Jeff Tassin
045: */
046: public class TitledBorderSide extends JComponent {
047: /**
048: * The font for the title bar. This is only needed if you change the default
049: * font in the TitledBorderLabel. The font is needed to calculate the top
050: * part of this component so that it is properly aligned with the
051: * TitledBorderLabel.
052: */
053: private Font m_font;
054:
055: /**
056: * LEFT or RIGHT
057: */
058: private int m_orientation;
059:
060: public static final int LEFT = 0;
061: public static final int RIGHT = 1;
062:
063: /**
064: * ctor
065: */
066: public TitledBorderSide() {
067: updateUI();
068: }
069:
070: /**
071: * Returns the font for this component. If the font has not been set, the
072: * default TitledBorder.font for the current look and feel is returned.
073: */
074: public Font getFont() {
075: Font f = m_font;
076: if (f == null)
077: f = javax.swing.UIManager.getFont("TitledBorder.font");
078:
079: return f;
080: }
081:
082: /**
083: * Returns the orienation for this component: LEFT or RIGHT
084: */
085: public int getOrientation() {
086: return m_orientation;
087: }
088:
089: /**
090: * Sets the font for this component. If the font has not been set, the
091: * default TitledBorder.font for the current look and feel is returned.
092: */
093: public void setFont(Font font) {
094: m_font = font;
095: }
096:
097: /**
098: * Sets the orienation for this component: LEFT or RIGHT
099: *
100: * @param orientation
101: * the orientation (LEFT or RIGHT).
102: */
103: public void setOrientation(int orientation) {
104: if (orientation != LEFT && orientation != RIGHT)
105: orientation = LEFT;
106:
107: m_orientation = orientation;
108: }
109:
110: /**
111: * Resets the UI property to a value from the current look and feel.
112: *
113: * @see JComponent#updateUI
114: */
115: public void updateUI() {
116: setUI(new TitledBorderSideUI());
117: }
118:
119: }
|