/*
* JColChooserDialog.java
*
* Created on 14. April 2006, 22:26
*
* Copyright (C) 14. April 2006 <Reiner>
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
package jexifviewer;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import javax.swing.BoxLayout;
import javax.swing.Box;
import javax.swing.border.EmptyBorder;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JButton;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Arrays;
import java.util.Comparator;
import shared.cvshelper.Cvs;
/**
*
* @author reiner
*/
@Cvs
(
header = "$Header: /home/reiner/cvs/Java/JExifViewer/src/jexifviewer/JColChooserDialog.java,v 1.4 2010/04/02 12:12:13 reiner Exp $"
)
public final class JColChooserDialog extends JDialog
{
private JComboBox m_comboBox = new JComboBox();
private boolean m_bOk = false;
public boolean isOk()
{
return m_bOk;
}
/** Creates a new instance of JColChooserDialog */
public JColChooserDialog(JMainFrame frame, JColChooserData[] dataArray)
{
super(frame, true);
setTitle(Main.getString("colchooser_caption"));
Container cp = getContentPane();
cp.setLayout(new BorderLayout());
JPanel panel = new JPanel();
Arrays.sort(dataArray, new JColChooserDataComparator(true));
for (JColChooserData data : dataArray)
{
m_comboBox.addItem(data);
}
m_comboBox.setBorder(new EmptyBorder(10, 0, 0, 0));
Dimension dim = m_comboBox.getPreferredSize();
m_comboBox.setPreferredSize(new Dimension(200, (int)dim.getHeight()));
panel.add(m_comboBox);
JPanel panel2 = new JPanel();
panel2.setLayout(new BoxLayout(panel2, BoxLayout.X_AXIS));
panel2.setBorder(new EmptyBorder(5, 0, 10, 10));
panel2.add(Box.createHorizontalGlue());
JButton ok = new JButton(Main.getString("ok"));
ok.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ev)
{
m_bOk = true;
dispose();
}
});
dim = ok.getPreferredSize();
ok.setPreferredSize(new Dimension(100, (int)dim.getHeight()));
panel2.add(ok);
panel2.add(Box.createRigidArea(new Dimension(5, 0)));
JButton cancel = new JButton(Main.getString("cancel"));
cancel.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ev)
{
dispose();
}
});
dim = cancel.getPreferredSize();
cancel.setPreferredSize(new Dimension(100, (int)dim.getHeight()));
panel2.add(cancel);
cp.add(panel, BorderLayout.NORTH);
cp.add(panel2, BorderLayout.SOUTH);
setPreferredSize(new Dimension(240, 130));
setResizable(false);
setLocationRelativeTo(frame);
pack();
}
public JColChooserData getSelectedItem()
{
return (JColChooserData)m_comboBox.getSelectedItem();
}
}
class JColChooserDataComparator implements Comparator<JColChooserData>
{
private boolean m_bUp;
public JColChooserDataComparator(boolean bUp)
{
m_bUp = bUp;
}
public boolean getSortUp()
{
return m_bUp;
}
public int compare(JColChooserData data1, JColChooserData data2)
{
int h = data1.m_string.compareTo(data2.m_string);
return (m_bUp ? h : -h);
}
public boolean equals(Object obj)
{
boolean flag = false;
if (obj instanceof JColChooserDataComparator)
{
JColChooserDataComparator comp = (JColChooserDataComparator)obj;
if (comp.getSortUp() == getSortUp())
flag = true;
}
return flag;
}
}
final class JColChooserData
{
public String m_string;
public int m_modelColIndex;
JColChooserData(String str, int col)
{
m_string = str;
m_modelColIndex = col;
}
public String toString()
{
return m_string;
}
}