/**
*File: Border3D.java
*
*Description: A utility class useful for creating components with
* three dimensional borders.
**/
import java.awt.*;
public class Border3D {
/*****************************************************************
* Border Types:
*
* Static variables that allows control of how the the borders is
* displayed.
*
* EXCLUDE_TOP_BORDER: Use to create components that lack a
* top border.
*
* EXCLUDE_BOTTOM_BORDER: Use to create components that lack a
* bottom border.
*
* FULL_BORDER: Default type. Creates a component with
* a full border.
******************************************************************/
static final int EXCLUDE_TOP_BORDER = 1,
EXCLUDE_BOTTOM_BORDER = 2,
FULL_BORDER = 3;
//used to store border types
private int type;
//used to store the component
private Component comp;
public Border3D( Component comp ) { this( comp, FULL_BORDER ); }
public Border3D( Component comp, int type )
{
this.comp = comp;
this.type = type;
}
/*
* Method: draw3DBorder
*
* Description: Draws a 3D border around components perimeter.
*
*/
public void draw3DBorder( Graphics g )
{
draw3DBorder( g, comp.size() );
}
public void draw3DBorder( Graphics g, Dimension area ) {
draw3DBorder( g, 0, 0, area.width, area.height );
}
public void draw3DBorder( Graphics g, int x, int y, int width, int height ) {
//Draws top part of border
if ( type == EXCLUDE_BOTTOM_BORDER || type == FULL_BORDER )
{
g.setColor( comp.getBackground().darker() );
g.drawLine( x, y, width, y );
g.setColor( Color.white );
g.drawLine( x+1, y+1, width-1, y+1 );
}
//Draws bottom portion of border
if ( type == EXCLUDE_TOP_BORDER || type == FULL_BORDER )
{
g.setColor( comp.getBackground().brighter() );
g.drawLine( x, height, width, height);
g.setColor( comp.getBackground().darker() );
g.drawLine( x+1, height-1, width-1, height -1);
}
//draws the sides of the border
g.setColor( comp.getBackground().brighter() );
g.drawLine( x+1, y+1, x+1, height - 1 );
g.drawLine( width, y, width, height );
g.setColor( comp.getBackground().darker() );
g.drawLine( x, y, x, height );
g.drawLine( width-1, y+1, width-1, height - 1);
}
}