Mercurial > hg > jslab
diff src/samer/core_/util/swing/VPanel.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/swing/VPanel.java Tue Jan 17 17:50:20 2012 +0000 @@ -0,0 +1,103 @@ +/* + * Tools.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.swing; +import samer.core.util.*; +import samer.core.*; +import java.awt.*; +import javax.swing.*; +import javax.swing.border.*; + +/** + * This is a panel with an optional bevel border, + * and a name label. It can also draw bevels + * round its children + */ + + +public class VPanel extends JPanel implements Viewer +{ + private Border cborder=null; // border for children + private Viewer vwr; + + /** Constructors can specify bevel type, inset and name */ + + public VPanel() { this(null); } + public VPanel(Viewer vwr) + { + super( new FlowLayout(FlowLayout.LEFT,0,0)); + + this.vwr=vwr; + // border=Border.createDefault(); // ?? + // addMouseListener(MouseRetarget.listener); + setBorder(BorderFactory.createEmptyBorder(3,6,3,6)); + } + + public void setName(String txt) { + if (txt==null) { + setBorder(BorderFactory.createEmptyBorder(2,6,2,6)); + return; + } + super.setName(txt); + setBorder( + BorderFactory.createCompoundBorder( + BorderFactory.createTitledBorder( + BorderFactory.createEmptyBorder(4,0,8,0), // space top and bottom + txt, TitledBorder.LEADING, TitledBorder.BELOW_TOP), + BorderFactory.createEmptyBorder(0,12,0,0) // small indent + ) + ); + } + + public void setChildBorder( Border b) { cborder=b; } + + /* + public void paintChildren(Graphics g) { + 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 + ); + } + } + } + super.paintChildren(); + } + */ + + + public Component getComponent() { return this; } + public void attach() {} + public void detach() {} + + // private JPopupMenu thing=null; + private DynamicPopupHandler thing=null; + + public void exposeCommands(Agent agent) { + thing=MenuBuilder.showCommands(agent,this,thing); + } + + public void addNotify() { if (vwr!=null) vwr.attach(); super.addNotify(); } + public void removeNotify() { if (vwr!=null) vwr.detach(); super.removeNotify(); } + +// public void add(Viewer v) { super.add(v.getComponent()); } + public void add(Viewable v) { add(v.getViewer().getComponent()); } +}