package org.openswing.swing.miscellaneous.util.client;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import org.openswing.swing.client.*;
import org.openswing.swing.mdi.client.*;
import org.openswing.swing.miscellaneous.client.TipPanelContent;
import org.openswing.swing.util.client.*;
/**
* <p>Title: OpenSwing Framework</p>
* <p>Description: Dialog used to select a tip.</p>
* <p>Copyright: Copyright (C) 2006 Mauro Carniel</p>
*
* <p> This file is part of OpenSwing Framework.
* This library is free software; you can redistribute it and/or
* modify it under the terms of the (LGPL) Lesser General Public
* License as published by the Free Software Foundation;
*
* GNU LESSER GENERAL PUBLIC LICENSE
* Version 2.1, February 1999
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* The author may be contacted at:
* maurocarniel@tin.it</p>
*
* @author Mauro Carniel
* @version 1.0
*/
class TipSelectDialog extends JDialog {
JPanel filterPanel = new JPanel();
JPanel buttonsPane = new JPanel();
FlowLayout flowLayout1 = new FlowLayout();
JScrollPane scrollPane = new JScrollPane();
JList list = new JList();
GridBagLayout gridBagLayout1 = new GridBagLayout();
LabelControl labelFilter = new LabelControl();
TextControl controlFilter = new TextControl();
LabelControl labelTitle = new LabelControl();
JButton okButton = new JButton();
JButton cancelButton = new JButton();
private final TipPanelContent tipPanelContent;
private int tipIndex = -1;
public TipSelectDialog(TipPanelContent tipPanelContent) {
super(MDIFrame.getInstance(),ClientSettings.getInstance().getResources().getResource("select tip"),true);
this.tipPanelContent = tipPanelContent;
try {
jbInit();
init();
setSize(300,300);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
ClientUtils.centerDialog(MDIFrame.getInstance(),this);
setVisible(true);
}
catch(Exception ex) {
ex.printStackTrace();
}
}
public int getTipIndex() {
return tipIndex;
}
private void init() {
list.setSelectionForeground((Color)UIManager.get("TextField.foreground"));
list.setBackground( (Color) UIManager.get("TextField.background"));
list.setSelectionBackground(ClientSettings.BACKGROUND_SEL_COLOR);
DefaultListModel model = new DefaultListModel();
for(int i=0; i<tipPanelContent.getTitles().length; i++) {
model.addElement(ClientSettings.getInstance().getResources().getResource(tipPanelContent.getTitles()[i]));
}
list.setModel(model);
final long t = System.currentTimeMillis();
controlFilter.addKeyListener(new KeyAdapter() {
public void keyReleased(KeyEvent e) {
if (controlFilter.getText().length()>0) {
for(int i=0;i<list.getModel().getSize();i++)
if ( list.getModel().getElementAt(i).toString().toLowerCase().startsWith(controlFilter.getText().toLowerCase()) ) {
list.setSelectedIndex(i);
break;
}
}
if (e.getKeyCode()==e.VK_ESCAPE) {
tipIndex = -1;
setVisible(false);
}
if (e.getKeyCode()==e.VK_ENTER && System.currentTimeMillis()>t+1000) {
tipIndex = list.getSelectedIndex();
setVisible(false);
}
}
});
}
private void jbInit() throws Exception {
filterPanel.setLayout(gridBagLayout1);
buttonsPane.setLayout(flowLayout1);
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list.addMouseListener(new TipSelectDialog_list_mouseAdapter(this));
labelFilter.setLabel("tip name");
labelTitle.setLabel("tips list");
labelTitle.setTextAlignment(SwingConstants.LEFT);
okButton.setText(ClientSettings.getInstance().getResources().getResource("ok"));
okButton.setMnemonic(okButton.getText().charAt(0));
okButton.addActionListener(new TipSelectDialog_okButton_actionAdapter(this));
cancelButton.setText(ClientSettings.getInstance().getResources().getResource("cancel"));
cancelButton.setMnemonic(cancelButton.getText().charAt(0));
cancelButton.addActionListener(new TipSelectDialog_cancelButton_actionAdapter(this));
getContentPane().add(filterPanel, BorderLayout.NORTH);
this.getContentPane().add(buttonsPane, BorderLayout.SOUTH);
this.getContentPane().add(scrollPane, BorderLayout.CENTER);
scrollPane.getViewport().add(list, null);
filterPanel.add(labelFilter, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 0, 5), 0, 0));
filterPanel.add(controlFilter, new GridBagConstraints(1, 0, 1, 1, 1.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0));
filterPanel.add(labelTitle, new GridBagConstraints(0, 1, 2, 1, 0.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(10, 5, 0, 5), 0, 0));
buttonsPane.add(okButton, null);
buttonsPane.add(cancelButton, null);
}
void okButton_actionPerformed(ActionEvent e) {
tipIndex = list.getSelectedIndex();
if (list.getSelectedIndex()==-1)
return;
setVisible(false);
}
void cancelButton_actionPerformed(ActionEvent e) {
tipIndex = -1;
setVisible(false);
}
void list_mouseClicked(MouseEvent e) {
if (e.getClickCount()==2) {
tipIndex = list.getSelectedIndex();
setVisible(false);
}
}
}
class TipSelectDialog_okButton_actionAdapter implements java.awt.event.ActionListener {
TipSelectDialog adaptee;
TipSelectDialog_okButton_actionAdapter(TipSelectDialog adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.okButton_actionPerformed(e);
}
}
class TipSelectDialog_cancelButton_actionAdapter implements java.awt.event.ActionListener {
TipSelectDialog adaptee;
TipSelectDialog_cancelButton_actionAdapter(TipSelectDialog adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.cancelButton_actionPerformed(e);
}
}
class TipSelectDialog_list_mouseAdapter extends java.awt.event.MouseAdapter {
TipSelectDialog adaptee;
TipSelectDialog_list_mouseAdapter(TipSelectDialog adaptee) {
this.adaptee = adaptee;
}
public void mouseClicked(MouseEvent e) {
adaptee.list_mouseClicked(e);
}
}