package ipma.Window;

/*
 * Copyright (c) 1997, 1998
 *      The Regents of the University of Michigan ("The Regents").
 *      All rights reserved.
 *
 * Contact: ipma-support@merit.edu
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. All advertising materials mentioning features or use of this software
 *    must display the following acknowledgement:
 *      This product includes software developed by the University of
 *      Michigan and its contributors.
 * 4. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 */


/**
 * CPopupWindow
 * 
 * CPopupWindow extends CWindow to add a close button.  This was done
 * since this will likely appear multiple times.
 */


/**
 * Modification History:
 * $Log: CPopupWindow.java,v $
 * Revision 1.1  1999/05/14 19:39:15  polandj
 * Adding irrj under repository
 *
 * Revision 1.5  1999/03/09 21:53:30  vecna
 * Changed all instances of "show()" to "setVisible(true)".
 * Modified default size to be 320*200.  Fixed annoying problem of windows
 * popping up with title bar off the screen...
 *
 * Revision 1.4  1999/02/02 07:33:22  vecna
 * Nuked some commented out code from DateMenu and TimeZoneMenu...
 *:
 */
import java.awt.*;
import java.awt.event.*;

public class CPopupWindow
   extends CWindow {
   private static final String CLOSE_STRING = "Close";
   private final Panel    MainPanel   = new Panel();
   
   private final Button   CloseButton = new Button(CLOSE_STRING);
   /** CPopupWindow: Constructor.
    */
   
   public CPopupWindow() {
      setForeground(Color.black);
      setBackground(Color.lightGray);
   }

   /** CPopupWindow: Constructor with some initialized variables.
    *  @param TitleString Title for window.
    *  @param c Component to be added to window.
    */

   public CPopupWindow(String TitleString, Component c) {
      setForeground(Color.black);
      setBackground(Color.lightGray);
      Setup(TitleString, c);
   }
   
   /** CPopupWindow: Constructor with all variables initialized.
    *  @param TitleString Title for window.
    *  @param c Component to be added.
    *  @param width Width of window.
    *  @param height Height for window.
    */

   public CPopupWindow(String TitleString, Component c,
      int width, int height) {
      setForeground(Color.black);
      setBackground(Color.lightGray);
      Setup(TitleString, c, width, height);
   }
   
   /** Setup Sets up the layout for components.
    *  @param TitleString Title for window.
    *  @param c Component to be added.
    */

   protected void Setup(String TitleString, Component c) {
      BuildLayout(c);
      super.Setup(TitleString, MainPanel, 320, 200);
   }

   /** Setup Sets up the layout for components.
    *  @param TitleString Title for window.
    *  @param c Component to be added.
    *  @param width Width for window.
    *  @param height Height for window.
    */

   protected void Setup(String TitleString, Component c,
      int width, int height) {

      BuildLayout(c);
      super.Setup(TitleString, MainPanel, width, height);
   }

   /** BuildLayout: Creates a layout for the window with
    *  the input components included.
    *  @param c Component to be added.
    */

   private void BuildLayout(Component c) {

      GridBagLayout        g;
      GridBagConstraints   gc;
      
      CloseButton.setForeground(Color.black);
      CloseButton.setBackground(Color.lightGray);
      // add inner class that will handle button actions.

      // an actionListener for Buttons.
      CloseButton.addActionListener (new ActionListener() {
         public void actionPerformed(ActionEvent e) {
         String label = e.getActionCommand();


         if (label.equals (CLOSE_STRING)) {
         Close ();
         }
         }
         });
      
      g  = new GridBagLayout();
      gc = new GridBagConstraints();
      
      MainPanel.setLayout(g);


      
      gc.fill       = GridBagConstraints.BOTH;
      gc.gridwidth  = GridBagConstraints.REMAINDER;
      gc.gridheight = GridBagConstraints.RELATIVE;
      gc.weightx    = 10.0;
      gc.weighty    = 10.0;
      g.setConstraints(c, gc);
      MainPanel.add(c);
      
      gc.anchor     = GridBagConstraints.CENTER;
      gc.fill       = GridBagConstraints.NONE;
      gc.gridheight = GridBagConstraints.REMAINDER;
      gc.weightx    = 0.0;
      gc.weighty    = 0.0;
      g.setConstraints(CloseButton, gc);
      MainPanel.add(CloseButton);
   }
   
   /** setForeground : Sets foreground colour.
    *  @param c Color.
    */

   public void  setForeground(Color c) {
      if (MainPanel != null)
         MainPanel.setForeground(c);
      super.setForeground(c);
   }
   
   /** setBackground: Sets the background colour.
    *  @param c Colour for background.
    */

   public void  setBackground(Color c) {
      if (MainPanel != null)
         MainPanel.setBackground(c);
      super.setBackground(c);
   }
}
