HelpDialog.java revision 7c478bd95313f5f23a4c958a745db2134aa03244
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (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-2000 by Sun Microsystems, Inc.
* All rights reserved.
*/
import java.awt.*;
import java.awt.event.*;
import java.util.StringTokenizer;
import java.util.ResourceBundle;
import java.util.MissingResourceException;
/**
* Dialog box for diaplaying Help
*
*/
public class HelpDialog extends Dialog {
protected Button b;
protected TextArea t;
private Frame parent;
public static int NUM_ROWS = 10;
public static int NUM_COLS = 45;
// For I18N
private static ResourceBundle rb =
ResourceBundle.getBundle("GuiResource" /* NOI18N */);
public HelpDialog(Frame parent, String title, boolean mode) {
this(parent, title, mode, NUM_ROWS, NUM_COLS);
}
public HelpDialog(Frame parent, String title, boolean mode, int numRows,
int numCols) {
super(parent, title, mode);
this.parent = parent;
setBackground(parent.getBackground());
setForeground(parent.getForeground());
addButtonAndTextArea(numRows, numCols);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
quit();
}
});
}
protected void quit() {
dispose();
}
private void addButtonAndTextArea(int numRows, int numCols) {
t = new TextArea(null, numRows, numCols,
TextArea.SCROLLBARS_VERTICAL_ONLY);
t.setEditable(false);
b = new Button(getString("Dismiss"));
setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.weightx = gbc.weighty = 1;
gbc.fill = GridBagConstraints.BOTH;
gbc.gridwidth = GridBagConstraints.REMAINDER;
add(t, gbc);
gbc.fill = GridBagConstraints.NONE;
add(b, gbc);
pack();
setResizable(false);
setLocationBesideParent(parent);
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
quit();
}
});
}
private void setLocationBesideParent(Frame parent) {
Point p = parent.getLocationOnScreen();
Dimension parentSize = parent.getSize();
Dimension mySize = getSize();
p.x += parentSize.width;
p.y += parentSize.height/2 - mySize.height/2;
setLocation(p.x, p.y);
}
public void setText(String text) {
t.setText(text);
}
/**
* Call rb.getString(), but catch exception and return English
* key so that small spelling errors don't cripple the GUI
*
*/
private static final String getString(String key) {
try {
String res = rb.getString(key);
return res;
} catch (MissingResourceException e) {
System.out.println("Missing resource "+key+", using English.");
return key;
}
}
/*
public static void main(String args[]) {
Frame f = new Frame();
f.setVisible(true);
HelpDialog hd = new HelpDialog(f, "Test HelpDialog", false);
hd.setVisible(true);
}
*/
}