Mercurial > hg > jslab
diff src/samer/core_/util/heavy/JPanel.java @ 0:bf79fb79ee13
Initial Mercurial check in.
author | samer |
---|---|
date | Tue, 17 Jan 2012 17:50:20 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/samer/core_/util/heavy/JPanel.java Tue Jan 17 17:50:20 2012 +0000 @@ -0,0 +1,74 @@ +/* + * JPanel.java + * + * Copyright (c) 2000, Samer Abdallah, King's College London. + * All rights reserved. + * + * This software is provided AS iS and WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + */ + +package samer.core.util.heavy; +import samer.core.*; +import samer.core.util.*; +import java.awt.*; +import java.awt.event.*; + +/** + * This is a panel with an optional bevel border, + * and a name label. It can also draw bevels + * round its children + */ + + +public class JPanel extends Panel +{ + private Border.Interface cborder=null; + private Border.Interface border=null; + + /** Constructors can specify bevel type, inset and name */ + + public JPanel() { this(Border.createDefault()); } + public JPanel(Border.Interface border) + { + setLayout(new FlowLayout(FlowLayout.LEFT,0,0)); + addMouseListener(MouseRetarget.listener); + this.border = border; + } + + public Insets getInsets() { return border.getBorderInsets(this); } + + public void setBorder( Border.Interface b) { border=b; } + public void setChildBorder( Border.Interface b) { cborder=b; } + + public void paint(Graphics g) + { + super.paint(g); + + if (border!=null) { + Dimension d=getSize(); + border.paintBorder(this,g,0,0,d.width,d.height); + } + + if (cborder!=null) { + Component [] c=getComponents(); + Insets insets=cborder.getBorderInsets(this); + int dx=insets.left, dy=insets.top; + int dw=insets.left+insets.right; + int dh=insets.top+insets.bottom; + + for (int i=c.length-1; i>=0; i--) { + Rectangle r=c[i].getBounds(); + if (!r.isEmpty()) { + cborder.paintBorder( + c[i], g, + r.x-dx, r.y-dy, + r.width+dw, r.height+dh + ); + } + } + } + } +} +