/* * TitleBar - a bar that contains a message * * by Adam Doppelt * http://www.cs.brown.edu/people/amd/ */ import java.awt.*; public class TitleBar extends Canvas { final public static int HEIGHT = 40; final public static int BUFFER = 10; final public static String DEFAULT_FONT = "TimesRoman"; final public static int DEFAULT_STYLE = Font.BOLD; final public static int DEFAULT_SIZE = 18; final public static int DEFAULT_ALIGNMENT = Label.CENTER; final public static Color DEFAULT_COLOR = Color.white; final public static Color BACKGROUND = Color.black; String text_; int alignment_, x_, y_; public TitleBar(Container container) { container.add(this); setFont(new Font(DEFAULT_FONT, DEFAULT_STYLE, DEFAULT_SIZE)); setBackground(BACKGROUND); setForeground(DEFAULT_COLOR); // -1 = invalid x_ = -1; text_ = ""; alignment_ = DEFAULT_ALIGNMENT; repaint(); } public void SetColor(Color color) { setForeground(color); repaint(); } public void SetFont(Font font) { x_ = -1; setFont(font); repaint(); } public void SetAlignment(int alignment) { x_ = -1; alignment_ = alignment; repaint(); } public void SetMessage(String message) { x_ = -1; text_ = message; repaint(); } public void Clear() { SetMessage(""); } /** #nodoc */ public void reshape(int x, int y, int width, int height) { x_ = -1; super.reshape(x, y, width, height); } /** #nodoc */ public void paint(Graphics g) { if (!text_.equals("")) { // if x location is invalid if (x_ == -1) { FontMetrics metrics = getFontMetrics(getFont()); y_ = (int)((size().height + metrics.getMaxDescent()) / 2.0); if (alignment_ == Label.LEFT) x_ = BUFFER; else { int width = metrics.stringWidth(text_); if (alignment_ == Label.CENTER) x_ = (int)((size().width - width) / 2.0); else x_ = size().width - BUFFER - width; } } g.drawString(text_, x_, y_); } } /** #nodoc */ public Dimension preferredSize() { return new Dimension(getParent().size().width, HEIGHT); } }