/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.googlecode.perftrace.log4j.lf5.viewer;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
/**
* LogFactor5InputDialog
*
* Creates a popup input dialog box so that users can enter
* a URL to open a log file from.
*
* @author Richard Hurst
* @author Brad Marlborough
*/
// Contributed by ThoughtWorks Inc.
public class LogFactor5InputDialog extends LogFactor5Dialog {
//--------------------------------------------------------------------------
// Constants:
//--------------------------------------------------------------------------
public static final int SIZE = 30;
//--------------------------------------------------------------------------
// Protected Variables:
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
// Private Variables:
//--------------------------------------------------------------------------
private JTextField _textField;
//--------------------------------------------------------------------------
// Constructors:
//--------------------------------------------------------------------------
/**
* Configures an input dialog box using a defualt size for the text field.
* param jframe the frame where the dialog will be loaded from.
* param title the title of the dialog box.
* param label the label to be put in the dialog box.
*/
public LogFactor5InputDialog(JFrame jframe, String title, String label) {
this(jframe, title, label, SIZE);
}
/**
* Configures an input dialog box.
* param jframe the frame where the dialog will be loaded from.
* param title the title of the dialog box.
* param label the label to be put in the dialog box.
* param size the size of the text field.
*/
public LogFactor5InputDialog(JFrame jframe, String title, String label,
int size) {
super(jframe, title, true);
JPanel bottom = new JPanel();
bottom.setLayout(new FlowLayout());
JPanel main = new JPanel();
main.setLayout(new FlowLayout());
main.add(new JLabel(label));
_textField = new JTextField(size);
main.add(_textField);
addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
hide();
}
}
});
JButton ok = new JButton("Ok");
ok.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
hide();
}
});
JButton cancel = new JButton("Cancel");
cancel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
hide();
// set the text field to blank just in case
// a file was selected before the Cancel
// button was pressed.
_textField.setText("");
}
});
bottom.add(ok);
bottom.add(cancel);
getContentPane().add(main, BorderLayout.CENTER);
getContentPane().add(bottom, BorderLayout.SOUTH);
pack();
centerWindow(this);
show();
}
//--------------------------------------------------------------------------
// Public Methods:
//--------------------------------------------------------------------------
public String getText() {
String s = _textField.getText();
if (s != null && s.trim().length() == 0) {
return null;
}
return s;
}
//--------------------------------------------------------------------------
// Protected Methods:
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
// Private Methods:
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
// Nested Top-Level Classes or Interfaces
//--------------------------------------------------------------------------
}