pmFrame.java revision 62d717f5277d7b19b63db2d800310f877b57c197
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
*
* ident "%Z%%M% %I% %E% SMI"
*
* Copyright (c) 1999 by Sun Microsystems, Inc.
* All rights reserved.
*
* pmFrame.java
* Extends JFrame to support better focus handling
*/
package com.sun.admin.pm.client;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import javax.swing.*;
import com.sun.admin.pm.server.*;
class pmFrame extends JFrame {
// this comp gets focus on frame open
Component defaultComponent = null;
// file path of icon; this does not provide for localization
private static final String iconName = "images/appicon.gif";
// if true, clean up pmButton state on frame close
private boolean clearButtonsOnClose;
public pmFrame(String s) {
super(s);
// default: do NOT clear default button state when frame is closed
clearButtonsOnClose = false;
this.addFocusListener(new FocusListener() {
public void focusGained(FocusEvent e) {
Debug.message("CLNT: pmFrame focus gained: " + e);
if (defaultComponent != null) {
Debug.message("CLNT: pmFrame focus to default comp");
defaultComponent.requestFocus();
} else
Debug.message("CLNT: pmFrame no default comp");
}
public void focusLost(FocusEvent e) {
Debug.message("CLNT: frame focus lost: " + e);
}
});
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
Debug.info("frame Window closing");
cleanupButtons();
}
public void windowClosed(WindowEvent e) {
Debug.info("frame Window closed");
cleanupButtons();
}
});
try {
Class thisClass = this.getClass();
URL iconUrl = thisClass.getResource(iconName);
// System.out.println("Icon: " + iconUrl);
if (iconUrl == null)
Debug.warning("Unable to resolve URL for icon " + iconName);
else {
Toolkit tk = Toolkit.getDefaultToolkit();
Image img = tk.getImage(iconUrl);
this.setIconImage(img);
}
} catch (Exception x) {
Debug.warning(x.toString());
}
}
public void setDefaultComponent(Component c) {
defaultComponent = c;
}
// If the frame is a minimized icon, make it un-minimized first
public void setVisible(boolean isVisible) {
if (isVisible == true) {
try {
// this will fail in jdk 1.1 but work fine in 1.2
setState(NORMAL);
} catch (Exception ssx) {
// restores an iconified window in JDK 1.1
removeNotify();
addNotify();
}
} else
cleanupButtons();
super.setVisible(isVisible);
}
public void cleanupButtons() {
// drop this rootPane from pmButton's hashtable
if (clearButtonsOnClose)
pmButton.unreference(this.getRootPane());
}
protected void setClearButtonsOnClose(boolean b) {
clearButtonsOnClose = b;
}
}