1 /*
   2  * CDDL HEADER START
   3  *
   4  * The contents of this file are subject to the terms of the
   5  * Common Development and Distribution License, Version 1.0 only
   6  * (the "License").  You may not use this file except in compliance
   7  * with the License.
   8  *
   9  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
  10  * or http://www.opensolaris.org/os/licensing.
  11  * See the License for the specific language governing permissions
  12  * and limitations under the License.
  13  *
  14  * When distributing Covered Code, include this CDDL HEADER in each
  15  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  16  * If applicable, add the following below this CDDL HEADER, with the
  17  * fields enclosed by brackets "[]" replaced with your own identifying
  18  * information: Portions Copyright [yyyy] [name of copyright owner]
  19  *
  20  * CDDL HEADER END
  21  */
  22 /*
  23  * ident        "%Z%%M% %I%     %E% SMI"
  24  *
  25  * Copyright 1998-2002 by Sun Microsystems, Inc.  All rights reserved.
  26  * Use is subject to license terms.
  27  */
  28 package com.sun.dhcpmgr.ui;
  29 
  30 import javax.swing.*;
  31 import java.awt.event.*;
  32 import java.util.*;
  33 
  34 /**
  35  * A simple panel with the buttons commonly used in a dialog.  Register as
  36  * a ButtonPanelListener in order to receive the events from this class.
  37  * @see ButtonPanelListener
  38  */
  39 public class ButtonPanel extends JPanel {
  40 
  41     // Convert action events on each button to button panel notifications 
  42     class ButtonAdaptor implements ActionListener {
  43         public void actionPerformed(ActionEvent e) {
  44             int buttonId = -1;
  45             Object source = e.getSource();
  46             if (source == okButton) {
  47                 buttonId = ButtonPanelListener.OK;
  48             } else if (source == resetButton) {
  49                 buttonId = ButtonPanelListener.RESET;
  50             } else if (source == cancelButton) {
  51                 buttonId = ButtonPanelListener.CANCEL;
  52             } else if (source == helpButton) {
  53                 buttonId = ButtonPanelListener.HELP;
  54             }
  55             Enumeration en = listeners.elements();
  56             while (en.hasMoreElements()) {
  57                 ButtonPanelListener l = (ButtonPanelListener)en.nextElement();
  58                 l.buttonPressed(buttonId);
  59             }
  60         }
  61     }
  62     
  63     JButton okButton, resetButton, cancelButton, helpButton;
  64     ButtonAdaptor adaptor;
  65     Vector listeners;
  66     
  67     /**
  68      * Construct a ButtonPanel with OK, Cancel, and Help buttons, and
  69      * the reset button display controlled by the parameter.
  70      * @param showReset true if Reset button is to be included
  71      */
  72     public ButtonPanel(boolean showReset) {
  73         this(showReset, true);
  74     }
  75 
  76     /**
  77      * Construct a ButtonPanel with reset and help buttons controlled
  78      * by the parameters passed, and always showing OK and Cancel.
  79      * @param showReset true if Reset button is to be included
  80      * @param showHelp true if Help button is to be included
  81      */
  82     public ButtonPanel(boolean showReset, boolean showHelp) {
  83         super();
  84         setLayout(new ButtonLayout(ALIGNMENT.RIGHT));
  85         // Create event handler
  86         adaptor = new ButtonAdaptor();
  87         listeners = new Vector();
  88 
  89         Mnemonic mn = new Mnemonic(ResourceStrings.getString("ok_button"));     
  90         okButton = new JButton(mn.getString());
  91         okButton.setToolTipText(mn.getString());
  92         okButton.setMnemonic(mn.getMnemonic());
  93 
  94         okButton.setEnabled(false);
  95         okButton.addActionListener(adaptor);
  96         add(okButton);
  97         
  98         // Only show reset if requested
  99         if (showReset) {
 100             Mnemonic mnReset = 
 101                 new Mnemonic(ResourceStrings.getString("reset_button"));
 102             resetButton = new JButton(mnReset.getString());
 103             resetButton.setToolTipText(mnReset.getString());
 104             resetButton.setMnemonic(mnReset.getMnemonic());
 105 
 106             resetButton.addActionListener(adaptor);
 107             add(resetButton);
 108         } else {
 109             resetButton = null;
 110         }
 111 
 112         Mnemonic mnCancel = 
 113             new Mnemonic(ResourceStrings.getString("cancel_button"));
 114         cancelButton = new JButton(mnCancel.getString());
 115         cancelButton.setToolTipText(mnCancel.getString());
 116         cancelButton.setMnemonic(mnCancel.getMnemonic());
 117 
 118         cancelButton.addActionListener(adaptor);
 119         add(cancelButton);
 120         
 121         if (showHelp) {
 122             Mnemonic mnHelp = 
 123                 new Mnemonic(ResourceStrings.getString("help_button"));
 124             helpButton = new JButton(mnHelp.getString());
 125             helpButton.setToolTipText(mnHelp.getString());
 126             helpButton.setMnemonic(mnHelp.getMnemonic());
 127 
 128             helpButton.addActionListener(adaptor);
 129             add(helpButton);
 130         } else {
 131             helpButton = null;
 132         }
 133     }
 134     
 135     public void addButtonPanelListener(ButtonPanelListener l) {
 136         listeners.addElement(l);
 137     }
 138     
 139     public void removeButtonPanelListener(ButtonPanelListener l) {
 140         listeners.removeElement(l);
 141     }
 142     
 143     public void setOkEnabled(boolean state) {
 144         okButton.setEnabled(state);
 145     }
 146     
 147     public boolean isOkEnabled() {
 148         return okButton.isEnabled();
 149     }
 150 
 151 }