/* class CompoundBorder
*
* Copyright (C) 2001 R M Pitman
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package charvax.swing.border;
import charva.awt.Component;
import charva.awt.Insets;
import charva.awt.Toolkit;
public class CompoundBorder
implements Border
{
public CompoundBorder(Border outsideBorder_, Border insideBorder_) {
_outsideBorder = outsideBorder_;
_insideBorder = insideBorder_;
}
/** Returns the insets of the compound border.
*/
public Insets getBorderInsets(Component component_) {
Insets outside = _outsideBorder.getBorderInsets(component_);
Insets inside = _insideBorder.getBorderInsets(component_);
return new Insets(
outside.top + inside.top,
outside.left + inside.left,
outside.bottom + inside.bottom,
outside.right + inside.right);
}
/**
* Paints the border for the specified component with the specified
* position and size.
* (acually the component_ parameter is unused but is here for
* compatibility with Swing).
*/
public void paintBorder(Component component_, int colorpair_,
int x_, int y_, int width_, int height_, Toolkit toolkit) {
_outsideBorder.paintBorder(component_, colorpair_,
x_, y_, width_, height_, toolkit);
/* Now paint the inside border, making allowance for the space
* already used by the outside border.
*/
Insets outer = _outsideBorder.getBorderInsets(component_);
_insideBorder.paintBorder(component_, colorpair_,
x_ + outer.left,
y_ + outer.top,
width_ - outer.left - outer.right,
height_ - outer.top - outer.bottom, toolkit);
}
//====================================================================
// INSTANCE VARIABLES
private Border _outsideBorder;
private Border _insideBorder;
}