// --------------------------------------- // Restricted Focus Viewer (RFV) Program // Version 2.1 // Language: Java 2 // October, 2000 // Copyright (C) 2000 Anthony R. Jansen // --------------------------------------- // 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. // --------------------------------------- // RFV_Button.java // // Class for defining and drawing a single // button, specifying its label, font and // location. // --------------------------------------- import java.awt.*; public class RFV_Button extends RFV_Display_Element { // Key button variables and components // ----------------------------------- private String label; private Font font; private FontMetrics font_metrics; private Color background_color; private Color foreground_color; private int height_offset; // Constant private static final int EXTRA_WIDTH = 12; private static final int EXTRA_HEIGHT = 12; // Constructor which accepts the label and font of the button // ---------------------------------------------------------- public RFV_Button(String l, Font f, FontMetrics fm, Color fg, Color bg) { super(true, false); // Initialize class elements // ------------------------- label = l; font = f; font_metrics = fm; foreground_color = fg; background_color = bg; calculateButtonSize(); } // Calculates the button size based on the // button label and the metrics of the font // ---------------------------------------- private void calculateButtonSize() { height = font_metrics.getHeight() + EXTRA_HEIGHT; width = font_metrics.stringWidth(label) + EXTRA_WIDTH; height_offset = ((font_metrics.getLeading() + EXTRA_HEIGHT) / 2) + font_metrics.getAscent(); } // Draws the button // ---------------- public void draw(Graphics g) { // Draw button box and border // -------------------------- g.setColor(background_color); g.fillRect(x_offset + 1, y_offset + 1, width - 2, height - 2); g.setColor(foreground_color); g.drawRect(x_offset + 1, y_offset + 1, width - 2, height - 2); // Draw centered button label // -------------------------- g.setFont(font); g.drawString(label, x_offset + (EXTRA_WIDTH / 2), y_offset + height_offset); } // Returns the label of the button // ------------------------------- public String getLabel() { return label; } }