//===================================================================== // File: ButtonBar.java // Class: ButtonBar // Package: AFLPgui // // Author: James J. Benham // Date: August 11, 1998 // Contact: james_benham@hmc.edu // // Genographer v1.0 - Computer assisted scoring of gels. // Copyright (C) 1998 Montana State University // // 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; version 2 // of the License. // // 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. // // The GNU General Public License is distributed in the file GPL //===================================================================== package AFLPgui; import java.awt.Button; import java.awt.Image; import java.awt.Toolkit; import java.awt.event.ActionListener; import AFLPcore.ProgOptions; /** * This class extends the bar class and adds four buttons to a bar. * The buttons have the standard icons for "new", "open", "save", and * "print." However, the functionality must be added by another class. * Objects can register themselves as ActionListeners by * calling the sendActionEventsTo method. This class * also provides a way to retrieve an image from a file. * * @author James J. Benham * @version 1.0.0 * @date August 11, 1998 */ public class ButtonBar extends Bar { private static String RELATIVE_PATH = ""; private static String NEW_FILE = "new.gif"; private static String OPEN_FILE = "open.gif"; private static String SAVE_FILE = "save.gif"; private static String PRINT_FILE = "print.gif"; protected static int BUTTON_WIDTH = 23; protected static int BUTTON_HEIGHT = 22; protected static int HORZ_INSET = 5; protected static int HORZ_SPACE = 0; protected static int VERT_INSET = 5; private ImgButton newButton; private ImgButton openButton; private ImgButton saveButton; private ImgButton printButton; private int buttonCount; private int adjustments; /** * Create a new button bar with both top and bottom border lines. */ public ButtonBar() { this(true, true); } /** * Create a new button bar with the specified top and bottom borders. * * @param drawTop specifies if the top seperating line should be drawn. * true for the line to show up. * @param drawBottom specifies if the bottom line should be drawn. */ public ButtonBar(boolean drawTop, boolean drawBottom) { // set the borders for the bar setBorders(drawTop, drawBottom); buttonCount = 4; adjustments = 0; Toolkit tk = Toolkit.getDefaultToolkit(); Image tempImg = tk.getImage(ProgOptions.homePath + RELATIVE_PATH + NEW_FILE); newButton = new ImgButton(tempImg); tempImg = tk.getImage(ProgOptions.homePath + RELATIVE_PATH + OPEN_FILE); openButton = new ImgButton(tempImg); tempImg = tk.getImage(ProgOptions.homePath + RELATIVE_PATH + SAVE_FILE); saveButton = new ImgButton(tempImg); tempImg = tk.getImage(ProgOptions.homePath + RELATIVE_PATH + PRINT_FILE); printButton = new ImgButton(tempImg); setLayout(null); add(newButton); newButton.setBounds(HORZ_INSET, VERT_INSET, BUTTON_WIDTH, BUTTON_HEIGHT); add(openButton); openButton.setBounds(HORZ_INSET + HORZ_SPACE + BUTTON_WIDTH, VERT_INSET, BUTTON_WIDTH, BUTTON_HEIGHT); add(saveButton); saveButton.setBounds(HORZ_INSET + 2*(HORZ_SPACE + BUTTON_WIDTH), VERT_INSET, BUTTON_WIDTH, BUTTON_HEIGHT); add(printButton); printButton.setBounds(HORZ_INSET + 3*(HORZ_SPACE + BUTTON_WIDTH), VERT_INSET, BUTTON_WIDTH, BUTTON_HEIGHT); } /** * Gives the location of the first space not occupied by a button. * * @return the position of the right edge of the rightmost button. */ public int getFreeHorzPos() { return (buttonCount*(HORZ_SPACE+BUTTON_WIDTH) + HORZ_INSET + adjustments); } /** * Get an image from the specified file. The image should be a GIF or PNG. * * @param filename the full name, including path, of the desired image. * * @return an image object, which will contain the picture once it * has been loaded. Note: this method can return before the * image is actually retrieved into the Image obect. */ public static Image retrieveImage(String filename) { Toolkit tk = Toolkit.getDefaultToolkit(); return tk.getImage(filename); } /** * Sets the specified target so that it recieves action * events from the four buttons. * * @param target an object that wants to handle action events from the * button. */ public void sendActionEventsTo(ActionListener target) { newButton.addActionListener(target); openButton.addActionListener(target); saveButton.addActionListener(target); printButton.addActionListener(target); } /** * Gives the "new" button on the bar. */ public Button getNewButton() { return newButton; } /** * Gives the "open" button on the bar. */ public Button getOpenButton() { return openButton; } /** * Gives the "save" button on the bar. */ public Button getSaveButton() { return saveButton; } /** * Gives the "print" button on the bar. */ public Button getPrintButton() { return printButton; } }