home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 1998 July & August
/
Pcwk78a98.iso
/
Internet
/
Javadraw
/
DATA.Z
/
BorderPanel.java
< prev
next >
Wrap
Text File
|
1997-03-12
|
4KB
|
121 lines
/*
* @(#)BorderPanel.java 1.1 96/11/23
*
* (C) Copyright Taligent, Inc. 1996 - All Rights Reserved
* (C) Copyright IBM Corp. 1996 - All Rights Reserved
*
* Portions copyright (c) 1996 Sun Microsystems, Inc. All Rights Reserved.
*
* The original version of this source code and documentation is copyrighted
* and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These
* materials are provided under terms of a License Agreement between Taligent
* and Sun. This technology is protected by multiple US and International
* patents. This notice and attribution to Taligent may not be removed.
* Taligent is a registered trademark of Taligent, Inc.
*
* Permission to use, copy, modify, and distribute this software
* and its documentation for NON-COMMERCIAL purposes and without
* fee is hereby granted provided that this copyright notice
* appears in all copies. Please refer to the file "copyright.html"
* for further important copyright and licensing information.
*
* SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
* THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
* TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
* ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
* DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
*
*/
import java.awt.*;
public class BorderPanel extends Panel
{
/**
* Panel shadow border width
*/
protected int shadow = 4;
/**
* Panel raised vs depressed look
*/
protected boolean raised = true;
public BorderPanel() {
this.raised=true;
}
public BorderPanel(boolean raised) {
this.raised=raised;
}
/**
* Re-layout parent. Called when a panel changes
* size etc.
*/
protected void layoutParent() {
Container parent = getParent();
if (parent != null) {
parent.doLayout();
}
}
public void paint(Graphics g) {
super.paint(g);
Dimension size = getSize();
paintBorder(g, size);
}
protected void paintBorder(Graphics g, Dimension size) {
Color c = getBackground();
g.setColor(c);
g.fillRect(0, 0, size.width, size.height);
draw3DRect(g, 0, 0, size.width, size.height, raised);
}
/**
* Draw a 3D Rectangle.
* @param g the specified Graphics window
* @param x, y, width, height
* @param raised - true if border should be painted as raised.
* @see #paint
*/
public void draw3DRect(Graphics g, int x, int y, int width, int height,
boolean raised) {
Color c = g.getColor();
Color brighter = avgColor(c,Color.white);
Color darker = avgColor(c,Color.black);
// upper left corner
g.setColor(raised ? brighter : darker);
for (int i=0; i<shadow; i++) {
g.drawLine(x+i, y+i, x+width-1-i, y+i);
g.drawLine(x+i, y+i, x+i, y+height-1-i);
}
// lower right corner
g.setColor(raised ? darker : brighter);
for (int i=0; i<shadow; i++) {
g.drawLine(x+i, y+height-1-i, x+width-1-i, y+height-1-i);
g.drawLine(x+width-1-i, y+height-1-i, x+width-1-i, y+i);
}
g.setColor(c);
// added by rip.
g.setColor(Color.black);
g.drawRect(x,y,width+2,height+2);
}
public static Color avgColor(Color c1, Color c2) {
return new Color(
(c1.getRed()+c2.getRed())/2,
(c1.getGreen()+c2.getGreen())/2,
(c1.getBlue()+c2.getBlue())/2
);
}
}