/***************************************************
*
* cismet GmbH, Saarbruecken, Germany
*
* ... and it just works.
*
****************************************************/
package Sirius.navigator.ui.dialog;
/*******************************************************************************
*
* Copyright (c) : EIG (Environmental Informatics Group)
* http://www.htw-saarland.de/eig
* Prof. Dr. Reiner Guettler
* Prof. Dr. Ralf Denzer
*
* HTWdS
* Hochschule fuer Technik und Wirtschaft des Saarlandes
* Goebenstr. 40
* 66117 Saarbruecken
* Germany
*
* Programmers : Pascal
*
* Project : WuNDA 2
* Filename :
* Version : 1.0
* Purpose :
* Created : 01.10.1999
* History :
*
*******************************************************************************/
import org.apache.log4j.Logger;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.border.*;
import de.cismet.tools.gui.StaticSwingTools;
/**
* DOCUMENT ME!
*
* @version $Revision$, $Date$
*/
public class StringChooser extends JDialog // implements ActionListener
{
//~ Static fields/initializers ---------------------------------------------
protected static final Logger logger = Logger.getLogger(StringChooser.class);
//~ Instance fields --------------------------------------------------------
protected JList stringList;
protected JButton buttonAccept;
protected JButton buttonCancel;
protected String infoMessage = null;
// protected String naMessage = null;
protected String selectedString = null;
protected boolean accepted = false;
//~ Constructors -----------------------------------------------------------
/**
* Creates a new StringChooser object.
*
* @param owner DOCUMENT ME!
* @param title DOCUMENT ME!
*/
public StringChooser(final JFrame owner, final String title) {
super(owner, title, true);
init();
}
/**
* Creates a new StringChooser object.
*
* @param owner DOCUMENT ME!
* @param title DOCUMENT ME!
*/
public StringChooser(final JDialog owner, final String title) {
super(owner, title, true);
init();
}
/**
* Creates a new StringChooser object.
*
* @param owner DOCUMENT ME!
* @param title DOCUMENT ME!
* @param infoMessage DOCUMENT ME!
*/
public StringChooser(final JDialog owner, final String title, final String infoMessage) {
super(owner, title, true);
this.infoMessage = infoMessage;
// this.naMessage = naMessage;
init();
}
/**
* Creates a new StringChooser object.
*
* @param owner DOCUMENT ME!
* @param title DOCUMENT ME!
* @param infoMessage DOCUMENT ME!
* @param naMessage DOCUMENT ME!
*
* @deprecated naMessage not used anymore
*/
public StringChooser(final JFrame owner, final String title, final String infoMessage, final String naMessage) {
super(owner, title, true);
this.infoMessage = infoMessage;
// this.naMessage = naMessage;
init();
}
//~ Methods ----------------------------------------------------------------
/**
* DOCUMENT ME!
*/
protected void init() {
final ActionListener actionListener = new ButtonListener();
this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
final JPanel contentPane = new JPanel(new GridBagLayout());
contentPane.setBorder(new EmptyBorder(10, 10, 8, 10));
final GridBagConstraints gbc = new GridBagConstraints();
gbc.insets = new Insets(0, 0, 10, 0);
gbc.anchor = GridBagConstraints.CENTER;
gbc.fill = GridBagConstraints.BOTH;
gbc.gridheight = 1;
gbc.gridwidth = 2;
gbc.gridy = 0;
gbc.gridx = 0;
gbc.weightx = 0.1;
gbc.weighty = 0.1;
final JLabel infoLabel = new JLabel(infoMessage);
infoLabel.setVerticalAlignment(JLabel.CENTER);
infoLabel.setHorizontalAlignment(JLabel.CENTER);
infoLabel.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.add(infoLabel, gbc);
gbc.insets = new Insets(0, 10, 10, 10);
gbc.fill = GridBagConstraints.BOTH;
gbc.gridy++;
gbc.weightx = 1.0;
gbc.weighty = 1.0;
stringList = new JList();
stringList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
contentPane.add(new JScrollPane(stringList), gbc);
gbc.insets = new Insets(0, 0, 0, 20);
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.gridwidth = 1;
gbc.gridy++;
gbc.weightx = 0.1;
gbc.weighty = 0.1;
// _TA_buttonAccept = new JButton("Uebernehmen");
// buttonAccept = new JButton(StringLoader.getString("STL@takeOn"));
buttonAccept = new JButton(org.openide.util.NbBundle.getMessage(
StringChooser.class,
"StringChooser.buttonAccept.text")); // NOI18N
buttonAccept.setMnemonic(org.openide.util.NbBundle.getMessage(
StringChooser.class,
"StringChooser.buttonAccept.mnemonic").charAt(0)); // NOI18N
buttonAccept.setToolTipText(org.openide.util.NbBundle.getMessage(
StringChooser.class,
"StringChooser.buttonAccept.tooltip")); // NOI18N
buttonAccept.setActionCommand("accept"); // NOI18N
buttonAccept.addActionListener(actionListener);
contentPane.add(buttonAccept, gbc);
gbc.insets = new Insets(0, 0, 0, 0);
gbc.gridx++;
// _TA_buttonCancel = new JButton("Abbrechen");
// buttonCancel = new JButton(StringLoader.getString("STL@cancel"));
buttonCancel = new JButton(org.openide.util.NbBundle.getMessage(
StringChooser.class,
"StringChooser.buttonCancel.text")); // NOI18N
buttonCancel.setMnemonic(org.openide.util.NbBundle.getMessage(
StringChooser.class,
"StringChooser.buttonCancel.mnemonic").charAt(0)); // NOI18N
buttonCancel.setToolTipText(org.openide.util.NbBundle.getMessage(
StringChooser.class,
"StringChooser.buttonCancel.tooltip")); // NOI18N
buttonCancel.setActionCommand("cancel"); // NOI18N
buttonCancel.addActionListener(actionListener);
contentPane.add(buttonCancel, gbc);
this.setContentPane(contentPane);
this.setSize(320, 240);
}
/**
* DOCUMENT ME!
*
* @param strings DOCUMENT ME!
* @param selectedString DOCUMENT ME!
*/
public void show(final String[] strings, final String selectedString) {
this.show(strings);
this.setSelectedString(selectedString);
}
/**
* DOCUMENT ME!
*
* @param strings DOCUMENT ME!
*/
public void show(final String[] strings) {
if ((strings != null) && (strings.length > 0)) {
stringList.setListData(strings);
stringList.setSelectedIndex(-1);
} else {
stringList.removeAll();
}
StaticSwingTools.showDialog(this);
}
/**
* DOCUMENT ME!
*
* @param strings DOCUMENT ME!
* @param selectedString DOCUMENT ME!
*/
public void show(final Collection strings, final String selectedString) {
this.show(strings);
this.setSelectedString(selectedString);
// this.show((String[])strings.toArray(new String[strings.size()]), selectedString);
}
/**
* DOCUMENT ME!
*
* @param strings DOCUMENT ME!
*/
public void show(final Collection strings) {
stringList.setListData(new Vector(strings));
stringList.setSelectedIndex(-1);
StaticSwingTools.showDialog(this);
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public boolean isSelectionAccepted() {
if (selectedString == null) // || selectedString.equals(naMessage))
{
return false;
} else {
return accepted;
}
}
/**
* DOCUMENT ME!
*
* @param selectedString DOCUMENT ME!
*/
public void setSelectedString(final String selectedString) {
if (logger.isDebugEnabled()) {
logger.debug("selecting string '" + selectedString + "'"); // NOI18N
}
if (((DefaultListModel)stringList.getModel()).indexOf(selectedString) != -1) {
stringList.setSelectedValue(selectedString, true);
accepted = true;
this.selectedString = selectedString;
} else {
accepted = false;
this.selectedString = null;
logger.warn("string '" + selectedString + "' not found in list"); // NOI18N
}
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public String getSelectedString() {
/*if(selectedString.equals(naMessage))
* { logger.warn("unavailable string '" + naMessage + "' selected, returning 'null'"); return null; } else {
* return selectedString;}*/
return selectedString;
}
//~ Inner Classes ----------------------------------------------------------
/**
* DOCUMENT ME!
*
* @version $Revision$, $Date$
*/
protected class ButtonListener implements ActionListener {
//~ Methods ------------------------------------------------------------
@Override
public void actionPerformed(final ActionEvent e) {
if (e.getActionCommand().equals("accept")) // NOI18N
{
if (!stringList.isSelectionEmpty()) // && (String)stringList.getSelectedValue() != naMessage)
{
accepted = true;
selectedString = stringList.getSelectedValue().toString().trim();
// NavigatorLogger.printMessage(selectedString);
} else {
// if(logger.isDebugEnabled())logger.debug("unavailable string '" + naMessage + "' or nothing
// selected");
if (logger.isDebugEnabled()) {
logger.debug("nothing selected"); // NOI18N
}
accepted = false;
selectedString = null;
}
dispose();
} else if (e.getActionCommand().equals("cancel")) // NOI18N
{
accepted = false;
selectedString = null;
dispose();
}
}
}
}