| /* BorderFactory.java -- |
| Copyright (C) 2002, 2004 Free Software Foundation, Inc. |
| |
| This file is part of GNU Classpath. |
| |
| GNU Classpath is free software; you can redistribute it and/or modify |
| it under the terms of the GNU General Public License as published by |
| the Free Software Foundation; either version 2, or (at your option) |
| any later version. |
| |
| GNU Classpath is distributed in the hope that it will be useful, but |
| WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| General Public License for more details. |
| |
| You should have received a copy of the GNU General Public License |
| along with GNU Classpath; see the file COPYING. If not, write to the |
| Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA |
| 02110-1301 USA. |
| |
| Linking this library statically or dynamically with other modules is |
| making a combined work based on this library. Thus, the terms and |
| conditions of the GNU General Public License cover the whole |
| combination. |
| |
| As a special exception, the copyright holders of this library give you |
| permission to link this library with independent modules to produce an |
| executable, regardless of the license terms of these independent |
| modules, and to copy and distribute the resulting executable under |
| terms of your choice, provided that you also meet, for each linked |
| independent module, the terms and conditions of the license of that |
| module. An independent module is a module which is not derived from |
| or based on this library. If you modify this library, you may extend |
| this exception to your version of the library, but you are not |
| obligated to do so. If you do not wish to do so, delete this |
| exception statement from your version. */ |
| |
| |
| package javax.swing; |
| |
| import java.awt.Color; |
| import java.awt.Font; |
| |
| import javax.swing.border.BevelBorder; |
| import javax.swing.border.Border; |
| import javax.swing.border.CompoundBorder; |
| import javax.swing.border.EmptyBorder; |
| import javax.swing.border.EtchedBorder; |
| import javax.swing.border.LineBorder; |
| import javax.swing.border.MatteBorder; |
| import javax.swing.border.TitledBorder; |
| |
| /** |
| * A factory for commonly used borders. |
| * |
| * @author original author unknown |
| */ |
| public class BorderFactory |
| { |
| private BorderFactory() |
| { |
| // Do nothing. |
| } |
| |
| /** |
| * Creates a line border withe the specified color. |
| * |
| * @param color A color to use for the line. |
| * |
| * @return The Border object |
| */ |
| public static Border createLineBorder(Color color) |
| { |
| return createLineBorder(color, 1); |
| } |
| |
| /** |
| * Creates a line border withe the specified color and width. The width |
| * applies to all 4 sides of the border. To specify widths individually for |
| * the top, bottom, left, and right, use |
| * createMatteBorder(int,int,int,int,Color). |
| * |
| * @param color A color to use for the line. |
| * @param thickness An int specifying the width in pixels. |
| * |
| * @return The Border object |
| */ |
| public static Border createLineBorder(Color color, int thickness) |
| { |
| return new LineBorder(color, thickness); |
| } |
| |
| /** |
| * Created a border with a raised beveled edge, using brighter shades of |
| * the component's current background color for highlighting, and darker |
| * shading for shadows. (In a raised border, highlights are on top and |
| * shadows are underneath.) |
| * |
| * @return The Border object |
| */ |
| public static Border createRaisedBevelBorder() |
| { |
| return new BevelBorder(BevelBorder.RAISED); |
| } |
| |
| /** |
| * Created a border with a lowered beveled edge, using brighter shades of |
| * the component's current background color for highlighting, and darker |
| * shading for shadows. (In a lowered border, shadows are on top and |
| * highlights are underneath.) |
| * |
| * @return The Border object |
| */ |
| public static Border createLoweredBevelBorder() |
| { |
| return new BevelBorder(BevelBorder.LOWERED); |
| } |
| |
| /** |
| * Create a beveled border of the specified type, using brighter shades of |
| * the component's current background color for highlighting, and darker |
| * shading for shadows. (In a lowered border, shadows are on top and |
| * highlights are underneath.). |
| * |
| * @param type An int specifying either BevelBorder.LOWERED or |
| * BevelBorder.RAISED |
| * |
| * @return The Border object |
| */ |
| public static Border createBevelBorder(int type) |
| { |
| return new BevelBorder(type); |
| } |
| |
| /** |
| * Create a beveled border of the specified type, using the specified |
| * highlighting and shadowing. The outer edge of the highlighted area uses |
| * a brighter shade of the highlight color. The inner edge of the shadow |
| * area uses a brighter shade of the shadaw color. |
| * |
| * @param type An int specifying either BevelBorder.LOWERED or |
| * BevelBorder.RAISED |
| * @param highlight A Color object for highlights |
| * @param shadow A Color object for shadows |
| * |
| * @return The Border object |
| */ |
| public static Border createBevelBorder(int type, Color highlight, Color shadow) |
| { |
| return new BevelBorder(type, highlight, shadow); |
| } |
| |
| /** |
| * Create a beveled border of the specified type, using the specified colors |
| * for the inner and outer highlight and shadow areas. |
| * |
| * @param type An int specifying either BevelBorder.LOWERED or |
| * BevelBorder.RAISED |
| * @param highlightOuter A Color object for the outer edge of the |
| * highlight area |
| * @param highlightInner A Color object for the inner edge of the |
| * highlight area |
| * @param shadowOuter A Color object for the outer edge of the shadow area |
| * @param shadowInner A Color object for the inner edge of the shadow area |
| * |
| * @return The Border object |
| */ |
| public static Border createBevelBorder(int type, Color highlightOuter, |
| Color highlightInner, |
| Color shadowOuter, Color shadowInner) |
| { |
| return new BevelBorder(type, highlightOuter, highlightInner, shadowOuter, |
| shadowInner); |
| } |
| |
| /** |
| * Create a border with an "etched" look using the component's current |
| * background color for highlighting and shading. |
| * |
| * @return The Border object |
| */ |
| public static Border createEtchedBorder() |
| { |
| return new EtchedBorder(); |
| } |
| |
| /** |
| * Create a border with an "etched" look using the component's current |
| * background color for highlighting and shading. |
| * |
| * @return The Border object |
| */ |
| public static Border createEtchedBorder(int etchType) |
| { |
| return new EtchedBorder(etchType); |
| } |
| |
| /** |
| * Create a border with an "etched" look using the specified highlighting and |
| * shading colors. |
| * |
| * @param highlight A Color object for the border highlights |
| * @param shadow A Color object for the border shadows |
| * |
| * @return The Border object |
| */ |
| public static Border createEtchedBorder(Color highlight, Color shadow) |
| { |
| return new EtchedBorder(highlight, shadow); |
| } |
| |
| /** |
| * Create a border with an "etched" look using the specified highlighting and |
| * shading colors. |
| * |
| * @param highlight A Color object for the border highlights |
| * @param shadow A Color object for the border shadows |
| * |
| * @return The Border object |
| */ |
| public static Border createEtchedBorder(int etchType, Color highlight, |
| Color shadow) |
| { |
| return new EtchedBorder(etchType, highlight, shadow); |
| } |
| |
| /** |
| * Create a new title border specifying the text of the title, using the |
| * default border (etched), using the default text position (sitting on the |
| * top line) and default justification (left) and using the default font and |
| * text color determined by the current look and feel. |
| * |
| * @param title A String containing the text of the title |
| * |
| * @return The TitledBorder object |
| */ |
| public static TitledBorder createTitledBorder(String title) |
| { |
| return new TitledBorder(title); |
| } |
| |
| /** |
| * Create a new title border with an empty title specifying the border |
| * object, using the default text position (sitting on the top line) and |
| * default justification (left) and using the default font, text color, |
| * and border determined by the current look and feel. (The Motif and Windows |
| * look and feels use an etched border; The Java look and feel use a |
| * gray border.) |
| * |
| * @param border The Border object to add the title to |
| * |
| * @return The TitledBorder object |
| */ |
| public static TitledBorder createTitledBorder(Border border) |
| { |
| return new TitledBorder(border); |
| } |
| |
| /** |
| * Add a title to an existing border, specifying the text of the title, using |
| * the default positioning (sitting on the top line) and default |
| * justification (left) and using the default font and text color determined |
| * by the current look and feel. |
| * |
| * @param border The Border object to add the title to |
| * @param title A String containing the text of the title |
| * |
| * @return The TitledBorder object |
| */ |
| public static TitledBorder createTitledBorder(Border border, String title) |
| { |
| return new TitledBorder(border, title); |
| } |
| |
| /** |
| * Add a title to an existing border, specifying the text of the title along |
| * with its positioning, using the default font and text color determined by |
| * the current look and feel. |
| * |
| * @param border The Border object to add the title to |
| * @param title A String containing the text of the title |
| * @param titleJustification An int specifying the left/right position of |
| * the title -- one of TitledBorder.LEFT, TitledBorder.CENTER, or |
| * TitledBorder.RIGHT, TitledBorder.DEFAULT_JUSTIFICATION (left). |
| * @param titlePosition An int specifying the vertical position of the text |
| * in relation to the border -- one of: TitledBorder.ABOVE_TOP, |
| * TitledBorder.TOP (sitting on the top line), TitledBorder.BELOW_TOP, |
| * TitledBorder.ABOVE_BOTTOM, TitledBorder.BOTTOM (sitting on the bottom |
| * line), TitledBorder.BELOW_BOTTOM, or TitledBorder.DEFAULT_POSITION |
| * (top). |
| * |
| * @return The TitledBorder object |
| */ |
| public static TitledBorder createTitledBorder(Border border, String title, |
| int titleJustification, |
| int titlePosition) |
| { |
| return new TitledBorder(border, title, titleJustification, titlePosition); |
| } |
| |
| /** |
| * Add a title to an existing border, specifying the text of the title along |
| * with its positioning and font, using the default text color determined by |
| * the current look and feel. |
| * |
| * @param border - the Border object to add the title to |
| * @param title - a String containing the text of the title |
| * @param titleJustification - an int specifying the left/right position of |
| * the title -- one of TitledBorder.LEFT, TitledBorder.CENTER, or |
| * TitledBorder.RIGHT, TitledBorder.DEFAULT_JUSTIFICATION (left). |
| * @param titlePosition - an int specifying the vertical position of the |
| * text in relation to the border -- one of: TitledBorder.ABOVE_TOP, |
| * TitledBorder.TOP (sitting on the top line), TitledBorder.BELOW_TOP, |
| * TitledBorder.ABOVE_BOTTOM, TitledBorder.BOTTOM (sitting on the bottom |
| * line), TitledBorder.BELOW_BOTTOM, or TitledBorder.DEFAULT_POSITION (top). |
| * @param titleFont - a Font object specifying the title font |
| * |
| * @return The TitledBorder object |
| */ |
| public static TitledBorder createTitledBorder(Border border, String title, |
| int titleJustification, |
| int titlePosition, |
| Font titleFont) |
| { |
| return new TitledBorder(border, title, titleJustification, titlePosition, |
| titleFont); |
| } |
| |
| /** |
| * Add a title to an existing border, specifying the text of the title along |
| * with its positioning, font, and color. |
| * |
| * @param border - the Border object to add the title to |
| * @param title - a String containing the text of the title |
| * @param titleJustification - an int specifying the left/right position of |
| * the title -- one of TitledBorder.LEFT, TitledBorder.CENTER, or |
| * TitledBorder.RIGHT, TitledBorder.DEFAULT_JUSTIFICATION (left). |
| * @param titlePosition - an int specifying the vertical position of the text |
| * in relation to the border -- one of: TitledBorder.ABOVE_TOP, |
| * TitledBorder.TOP (sitting on the top line), TitledBorder.BELOW_TOP, |
| * TitledBorder.ABOVE_BOTTOM, TitledBorder.BOTTOM (sitting on the bottom |
| * line), TitledBorder.BELOW_BOTTOM, or TitledBorder.DEFAULT_POSITION (top). |
| * @param titleFont - a Font object specifying the title font |
| * @param titleColor - a Color object specifying the title color |
| * |
| * @return The TitledBorder object |
| */ |
| public static TitledBorder createTitledBorder(Border border, String title, |
| int titleJustification, |
| int titlePosition, |
| Font titleFont, Color titleColor) |
| { |
| return new TitledBorder(border, title, titleJustification, titlePosition, |
| titleFont, titleColor); |
| } |
| |
| /** |
| * Creates an empty border that takes up no space. (The width of the top, |
| * bottom, left, and right sides are all zero.) |
| * |
| * @return The Border object |
| */ |
| public static Border createEmptyBorder() |
| { |
| return new EmptyBorder(0, 0, 0, 0); |
| } |
| |
| /** |
| * Creates an empty border that takes up no space but which does no drawing, |
| * specifying the width of the top, left, bottom, and right sides. |
| * |
| * @param top An int specifying the width of the top in pixels |
| * @param left An int specifying the width of the left side in pixels |
| * @param bottom An int specifying the width of the right side in pixels |
| * @param right An int specifying the width of the bottom in pixels |
| * |
| * @return The Border object |
| */ |
| public static Border createEmptyBorder(int top, int left, int bottom, |
| int right) |
| { |
| return new EmptyBorder(top, left, bottom, right); |
| } |
| |
| /** |
| * Create a compound border with a null inside edge and a null outside edge. |
| * |
| * @return The CompoundBorder object |
| */ |
| public static CompoundBorder createCompoundBorder() |
| { |
| return new CompoundBorder(); |
| } |
| |
| /** |
| * Create a compound border specifying the border objects to use for the |
| * outside and inside edges. |
| * |
| * @param outsideBorder A Border object for the outer edge of the |
| * compound border |
| * @param insideBorder A Border object for the inner edge of the |
| * compound border |
| * |
| * @return The CompoundBorder object |
| */ |
| public static CompoundBorder createCompoundBorder(Border outsideBorder, |
| Border insideBorder) |
| { |
| return new CompoundBorder(outsideBorder, insideBorder); |
| } |
| |
| /** |
| * Create a matte-look border using a solid color. (The difference between |
| * this border and a line border is that you can specify the individual border |
| * dimensions.) |
| * |
| * @param top |
| * An int specifying the width of the top in pixels |
| * @param left |
| * An int specifying the width of the left side in pixels |
| * @param bottom |
| * An int specifying the width of the right side in pixels |
| * @param right |
| * An int specifying the width of the bottom in pixels |
| * @param color |
| * A Color to use for the border |
| * @return The MatteBorder object |
| */ |
| public static MatteBorder createMatteBorder(int top, int left, int bottom, |
| int right, Color color) |
| { |
| return new MatteBorder(top, left, bottom, right, color); |
| } |
| |
| /** |
| * Create a matte-look border that consists of multiple tiles of a specified |
| * icon. Multiple copies of the icon are placed side-by-side to fill up the |
| * border area. |
| * |
| * Note: |
| * If the icon doesn't load, the border area is painted gray. |
| * |
| * @param top An int specifying the width of the top in pixels |
| * @param left An int specifying the width of the left side in pixels |
| * @param bottom An int specifying the width of the right side in pixels |
| * @param right An int specifying the width of the bottom in pixels |
| * @param tileIcon The Icon object used for the border tiles |
| * |
| * @return The MatteBorder object |
| */ |
| public static MatteBorder createMatteBorder(int top, int left, int bottom, |
| int right, Icon tileIcon) |
| { |
| return new MatteBorder(top, left, bottom, right, tileIcon); |
| } |
| } |