1 /*
   2  * Copyright 2001 Sun Microsystems, Inc.  All Rights Reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
  20  * CA 95054 USA or visit www.sun.com if you need additional information or
  21  * have any questions.
  22  *  
  23  */
  24 
  25 package sun.jvm.hotspot.ui;
  26 
  27 import java.awt.*;
  28 import java.awt.event.*;
  29 import javax.swing.*;
  30 
  31 public class JFrameWrapper implements FrameWrapper {
  32   private JFrame frame;
  33   private boolean        hasWindowListener;
  34   private ActionListener closingActionListener;
  35   private ActionListener activatedActionListener;
  36 
  37   public JFrameWrapper(JFrame frame) {
  38     this.frame = frame;
  39   }
  40 
  41   public Component  getComponent()              { return frame;                  }
  42   public Container  getContentPane()            { return frame.getContentPane(); }
  43   public void       setVisible(boolean visible) { frame.setVisible(visible);     }
  44   public void       setSize(int x, int y)       { frame.setSize(x, y);           }
  45   public void       pack()                      { frame.pack();                  }
  46   public void       show()                      { frame.setVisible(true);        }
  47   public void       dispose()                   { frame.dispose();               }
  48   public void       setBackground(Color color)  { frame.setBackground(color);    }
  49   public void       setResizable(boolean resizable) { frame.setResizable(resizable); }
  50 
  51   public void setClosable(boolean closable) {
  52     if (closable) {
  53       frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
  54     } else {
  55       frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
  56     }
  57   }
  58 
  59   public void setClosingActionListener(ActionListener l) {
  60     closingActionListener = l;
  61     maybeInstallWindowListener();
  62   }
  63 
  64   public void setActivatedActionListener(ActionListener l) {
  65     activatedActionListener = l;
  66     maybeInstallWindowListener();
  67   }
  68 
  69   public void toFront() {
  70     frame.toFront();
  71     frame.requestFocus();
  72   }
  73 
  74   //----------------------------------------------------------------------
  75   // Internals only below this point
  76   //
  77 
  78   private void maybeInstallWindowListener() {
  79     if (!hasWindowListener) {
  80       frame.addWindowListener(new WindowAdapter() {
  81           public void windowClosing(WindowEvent e) {
  82             if (closingActionListener != null) {
  83               closingActionListener.actionPerformed(null);
  84             }
  85           }
  86 
  87           public void windowActivated(WindowEvent e) {
  88             if (activatedActionListener != null) {
  89               activatedActionListener.actionPerformed(null);
  90             }
  91           }
  92         });
  93       hasWindowListener = true;
  94     }
  95   }
  96 }