1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17 package org.apache.log4j.lf5.viewer;
18
19 import javax.swing.*;
20 import java.awt.*;
21 import java.awt.event.ActionEvent;
22 import java.awt.event.ActionListener;
23 import java.awt.event.KeyAdapter;
24 import java.awt.event.KeyEvent;
25
26 /***
27 * LogFactor5InputDialog
28 *
29 * Creates a popup input dialog box so that users can enter
30 * a URL to open a log file from.
31 *
32 * @author Richard Hurst
33 * @author Brad Marlborough
34 */
35
36 // Contributed by ThoughtWorks Inc.
37
38 public class LogFactor5InputDialog extends LogFactor5Dialog {
39 //--------------------------------------------------------------------------
40 // Constants:
41 //--------------------------------------------------------------------------
42 public static final int SIZE = 30;
43 //--------------------------------------------------------------------------
44 // Protected Variables:
45 //--------------------------------------------------------------------------
46
47 //--------------------------------------------------------------------------
48 // Private Variables:
49 //--------------------------------------------------------------------------
50 private JTextField _textField;
51 //--------------------------------------------------------------------------
52 // Constructors:
53 //--------------------------------------------------------------------------
54
55 /***
56 * Configures an input dialog box using a defualt size for the text field.
57 * param jframe the frame where the dialog will be loaded from.
58 * param title the title of the dialog box.
59 * param label the label to be put in the dialog box.
60 */
61 public LogFactor5InputDialog(JFrame jframe, String title, String label) {
62 this(jframe, title, label, SIZE);
63 }
64
65 /***
66 * Configures an input dialog box.
67 * param jframe the frame where the dialog will be loaded from.
68 * param title the title of the dialog box.
69 * param label the label to be put in the dialog box.
70 * param size the size of the text field.
71 */
72 public LogFactor5InputDialog(JFrame jframe, String title, String label,
73 int size) {
74 super(jframe, title, true);
75
76 JPanel bottom = new JPanel();
77 bottom.setLayout(new FlowLayout());
78
79 JPanel main = new JPanel();
80 main.setLayout(new FlowLayout());
81 main.add(new JLabel(label));
82 _textField = new JTextField(size);
83 main.add(_textField);
84
85 addKeyListener(new KeyAdapter() {
86 public void keyPressed(KeyEvent e) {
87 if (e.getKeyCode() == KeyEvent.VK_ENTER) {
88 hide();
89 }
90 }
91 });
92
93 JButton ok = new JButton("Ok");
94 ok.addActionListener(new ActionListener() {
95 public void actionPerformed(ActionEvent e) {
96 hide();
97 }
98 });
99
100 JButton cancel = new JButton("Cancel");
101 cancel.addActionListener(new ActionListener() {
102 public void actionPerformed(ActionEvent e) {
103 hide();
104 // set the text field to blank just in case
105 // a file was selected before the Cancel
106 // button was pressed.
107 _textField.setText("");
108 }
109 });
110
111 bottom.add(ok);
112 bottom.add(cancel);
113 getContentPane().add(main, BorderLayout.CENTER);
114 getContentPane().add(bottom, BorderLayout.SOUTH);
115 pack();
116 centerWindow(this);
117 show();
118 }
119
120 //--------------------------------------------------------------------------
121 // Public Methods:
122 //--------------------------------------------------------------------------
123 public String getText() {
124 String s = _textField.getText();
125
126 if (s != null && s.trim().length() == 0) {
127 return null;
128 }
129
130 return s;
131
132 }
133
134 //--------------------------------------------------------------------------
135 // Protected Methods:
136 //--------------------------------------------------------------------------
137
138 //--------------------------------------------------------------------------
139 // Private Methods:
140 //--------------------------------------------------------------------------
141
142 //--------------------------------------------------------------------------
143 // Nested Top-Level Classes or Interfaces
144 //--------------------------------------------------------------------------
145 }