de.invation.code.toval.graphic.dialog.ValueChooserDialog Maven / Gradle / Ivy
package de.invation.code.toval.graphic.dialog;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Window;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.DefaultListModel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.ListSelectionModel;
import javax.swing.ScrollPaneConstants;
import javax.swing.border.Border;
import de.invation.code.toval.graphic.renderer.AlternatingRowColorListCellRenderer;
import de.invation.code.toval.validate.ParameterException;
import de.invation.code.toval.validate.Validate;
public class ValueChooserDialog extends AbstractDialog> {
private static final long serialVersionUID = 2306027725394345926L;
public static final Border DEFAULT_BORDER = BorderFactory.createEmptyBorder(5, 5, 5, 5);
public static final int DEFAULT_SELECTION_MODE = ListSelectionModel.SINGLE_SELECTION;
private DefaultListModel stringListModel = new DefaultListModel();
private Collection possibleValues;
private int selectionMode;
private JList stringList;
protected ValueChooserDialog(Window owner, String title, Collection possibleValues) throws Exception {
super(owner, title);
setPossibleValues(possibleValues);
}
protected ValueChooserDialog(Window owner, String title, Collection possibleValues, int selectionMode) {
super(owner, title);
setPossibleValues(possibleValues);
this.selectionMode = selectionMode;
}
private void setPossibleValues(Collection possibleValues) throws ParameterException{
Validate.notNull(possibleValues);
Validate.notEmpty(possibleValues);
Validate.noNullElements(possibleValues);
this.possibleValues = possibleValues;
}
@Override
protected void addComponents() throws Exception {
mainPanel().setLayout(new BorderLayout());
JScrollPane scrollPane = new JScrollPane(getValueList());
scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
mainPanel().add(scrollPane);
}
@Override
protected void okProcedure() {
if(!stringListModel.isEmpty()){
List values = new ArrayList();
for(Object o: stringList.getSelectedValues())
values.add((String) o);
setDialogObject(values);
super.okProcedure();
} else {
JOptionPane.showMessageDialog(ValueChooserDialog.this, "Value list is empty.", "Invalid Parameter", JOptionPane.ERROR_MESSAGE);
}
}
@Override
protected void setTitle() {}
private JList getValueList(){
if(stringList == null){
stringList = new JList(stringListModel);
stringList.setCellRenderer(new AlternatingRowColorListCellRenderer());
stringList.setFixedCellHeight(20);
stringList.setVisibleRowCount(10);
stringList.setPreferredSize(new Dimension(200,100));
stringList.getSelectionModel().setSelectionMode(selectionMode);
stringList.setBorder(null);
for(String possibleValue: possibleValues){
stringListModel.addElement(possibleValue);
}
}
return stringList;
}
public static List showDialog(Window owner, String title, Collection values) throws Exception{
ValueChooserDialog dialog = new ValueChooserDialog(owner, title, values);
dialog.setUpGUI();
return dialog.getDialogObject();
}
public static List showDialog(Window owner, String title, Collection values, int selectionMode) throws Exception{
ValueChooserDialog dialog = new ValueChooserDialog(owner, title, values, selectionMode);
dialog.setUpGUI();
return dialog.getDialogObject();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy