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 (the "License").
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21/*
22 *
23 * ident	"%Z%%M%	%I%	%E% SMI"
24 *
25 * Copyright (c) 1999 by Sun Microsystems, Inc.
26 * All rights reserved.
27 *
28 * pmFindFrame.java
29 * Find Printer dialog implementation
30 */
31
32package com.sun.admin.pm.client;
33
34import java.awt.*;
35import java.awt.event.*;
36import javax.swing.JPanel;
37import javax.swing.*;
38
39import com.sun.admin.pm.server.*;
40
41
42public class pmFindFrame extends pmFrame {
43
44    JLabel statusText = null;
45    pmButton okButton = null;
46    pmButton cancelButton = null;
47    pmButton helpButton = null;
48    pmTop theTop = null;
49
50    String label = pmUtility.getResource("Enter.name.of.printer.to.find");
51    String helpTag = "ToFindPrinter";
52
53    public pmFindFrame(pmTop t) {
54
55        super(pmUtility.getResource("SPM:Find.Printer"));
56
57        setLocation(100, 100);
58
59        theTop = t;
60
61
62        JLabel l;
63        JPanel p;
64
65        // initialize constraints
66        GridBagConstraints c = new GridBagConstraints();
67        c.gridx = 0;
68        c.gridy = GridBagConstraints.RELATIVE;
69        c.gridwidth = 1;
70        c.gridheight = 1;
71        c.insets = new Insets(10, 10, 5, 10);
72        c.anchor = GridBagConstraints.WEST;
73        c.fill = GridBagConstraints.HORIZONTAL;
74        c.weightx = 1.0;
75
76        // top panel contains the message
77        p = new JPanel();
78        p.setLayout(new GridBagLayout());
79
80        l = new JLabel(label, SwingConstants.LEFT);
81        p.add(l, c);
82
83        getContentPane().add(p, "North");
84
85        // middle panel contains "other" text field
86        p = new JPanel();
87        p.setLayout(new GridBagLayout());
88
89        printerName = new pmTextField(30);
90        printerName.addActionListener(new ActionListener() {
91            public void actionPerformed(ActionEvent e) {
92                okPressed();
93            }
94        });
95        l.setLabelFor(printerName);
96
97        c.gridx = 1;
98        c.gridy = 0;
99        c.weightx = 1.0;
100        c.fill = GridBagConstraints.HORIZONTAL;
101        c.anchor = GridBagConstraints.CENTER;
102        c.insets = new Insets(0, 10, 5, 10);
103
104        p.add(printerName, c);
105
106        statusText = new JLabel(" ", SwingConstants.LEFT);
107
108        c.gridy = GridBagConstraints.RELATIVE;
109        c.gridx = 0;
110        c.gridwidth = 2;
111
112        c.insets = new Insets(5, 10, 5, 10);
113        p.add(statusText, c);
114
115        getContentPane().add(p, "Center");
116
117        // bottom panel contains buttons
118        c.gridx = 0;
119        c.weightx = 1.0;
120        c.weighty = 0.0;
121        c.gridwidth = GridBagConstraints.REMAINDER;
122        c.fill = GridBagConstraints.HORIZONTAL;
123        c.anchor = GridBagConstraints.CENTER;
124        c.insets = new Insets(5, 10, 10, 10);
125
126        JPanel thePanel = new JPanel();
127
128        okButton = new pmButton(
129            pmUtility.getResource("Find"));
130        okButton.setMnemonic(
131            pmUtility.getIntResource("Find.mnemonic"));
132        okButton.addActionListener(new ActionListener() {
133            public void actionPerformed(ActionEvent evt) {
134                okPressed();
135            }
136        });
137        thePanel.add(okButton, c);
138
139        cancelButton = new pmButton(
140            pmUtility.getResource("Dismiss"));
141        cancelButton.setMnemonic(
142            pmUtility.getIntResource("Dismiss.mnemonic"));
143        cancelButton.addActionListener(new ActionListener() {
144            public void actionPerformed(ActionEvent evt) {
145                cancelPressed();
146            }
147        });
148        thePanel.add(cancelButton, c);
149
150        helpButton = new pmButton(
151            pmUtility.getResource("Help"));
152        helpButton.setMnemonic(
153            pmUtility.getIntResource("Help.mnemonic"));
154        helpButton.addActionListener(new ActionListener() {
155            public void actionPerformed(ActionEvent evt) {
156                theTop.showHelpItem(helpTag);
157            }
158        });
159        thePanel.add(helpButton, c);
160
161        getContentPane().add(thePanel, "South");
162
163        // lay out the dialog
164        pack();
165
166        // handle Esc as dismiss in any case
167        getRootPane().registerKeyboardAction(new ActionListener() {
168            public void actionPerformed(ActionEvent e) {
169                Debug.message("CLNT:  default cancel action");
170                cancelPressed();
171            }},
172            KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0, false),
173            JComponent.WHEN_IN_FOCUSED_WINDOW);
174
175
176        // set focus to initial field, depending on which action is tbd
177        // this seems to work best after pack()
178
179	/*
180	 * frame.setVisible(true);
181	 * frame.repaint();
182	 */
183
184        // getRootPane().setDefaultButton (okButton);
185        okButton.setAsDefaultButton();
186
187        printerName.requestFocus();
188
189		// enable improved focus handling
190		setDefaultComponent(printerName);
191
192    }
193
194
195	public void okPressed() {
196	    Debug.message("CLNT:  pmFindFrame:okPressed():" +
197			  printerName.getText());
198
199	    String name = printerName.getText();
200	    boolean result = theTop.findPrinterInList(name.trim());
201	    if (!result)
202		statusText.setText(new String(
203                    pmUtility.getResource("Unable.to.find.printer") + name));
204	    else
205		statusText.setText(" ");
206
207	// pmFindPanel.this.frame.setVisible (false);
208
209	}
210
211	public void cancelPressed() {
212	    Debug.message("CLNT:  pmFindFrame: cancelPressed()");
213	    statusText.setText(" ");
214	    printerName.setText("");
215	    pmFindFrame.this.setVisible(false);
216
217	}
218
219    public pmTextField printerName = null;
220
221}
222