/*
 Eteria IRC Client, an RFC 1459 compliant client program written in Java.
 Copyright (C) 2000-2001  Javier Kohen <jkohen at tough.com>
 
 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 2 of the License, or
 (at your option) any later version.
 
 This program 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 General Public License for more details.
 
 You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */
 
 package ar.com.jkohen.awt;
 
 import java.awt.*;
 
 public class BorderedPanel extends Panel
 {
 	private String tag;
 	private FontMetrics fm;
 	
 	public static int CENTER = 0;
 	public static int RIGHT = 1;
 	public static int LEFT = 3;
 	
 	public static int SUNKEN = 0;
 	public static int RAISED = 1;	
 	
 	public static int justify = CENTER;
 	public static int edge = SUNKEN;
 	
 	public BorderedPanel()
 	{
 	}
 
 	public BorderedPanel(String tag)
 	{
 		setTag(tag);
 	}
 	
 	public void setTag(String t)
 	{
 		if (t != null)
 			this.tag = " " + t + " ";
 		else
 			this.tag = "";
 		repaint();
 	}
 	
 	public void update(Graphics g)
 	{
 		paint(g);
 	}
 	
 	public void paint(Graphics g)
 	{
 		Color c = getBackground();
 		int x = 0;
 		int y = fm.getHeight() / 2;
 		int a = getSize().width;
 		int b = getSize().height;
 		g.clearRect(0, 0, a, b);
 		
 		if (edge == SUNKEN)
 			g.setColor(c.darker());
 		else
 			g.setColor(c.brighter());
 		g.drawLine(x, y, x, b - 2);
 		g.drawLine(x, y, a - 2, y);
 		g.drawLine(x, b - 2, a - 2, b - 2);
 		g.drawLine(a - 2, y + 1, a - 2, b - 1);
 		
 		if (edge == SUNKEN)
 			g.setColor(c.brighter());
 		else
 			g.setColor(c.darker());
 		g.drawLine(x + 1, y + 1, x + 1, b - 3);
 		g.drawLine(x + 1, y + 1, a - 4, y + 1);
 		g.drawLine(x, b - 1, a - 1, b - 1);
 		g.drawLine(a - 1, y, a - 1, b - 1);
 		
 		if (tag != null && tag.length() > 0)
 		{
 			if (NewGraphics2D.hasRenderingHints)
 				NewGraphics2D.setRendering(g);
 			
 			int l = fm.stringWidth(tag);
 			
 			if (justify == CENTER)
 				x = (a - l) / 2;
 			if (justify == RIGHT)
 				x = getInsets().left * 2;
 			if (justify == LEFT)
 				x = a - l - getInsets().right * 2;
 			
 			g.clearRect(x, 0, l, fm.getHeight());
 			g.setColor(super.getForeground());
 			g.drawString(tag, x, fm.getAscent());
 		}
 	}
 	
 	public Insets getInsets()
 	{
 		fm = getFontMetrics(getFont());
 		return new Insets(fm.getHeight(), 6, 6, 6);
 	}
 }