/* * This file is part of the OSMembrane project. * More informations under www.osmembrane.de * * The project is licensed under the GNU GENERAL PUBLIC LICENSE 3.0. * for more details about the license see http://www.osmembrane.de/license/ * * Source: $HeadURL$ ($Revision$) * Last changed: $Date$ */ package de.osmembrane.view.dialogs; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.GridLayout; import java.awt.Insets; import java.awt.Window; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.DefaultComboBoxModel; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JPanel; import de.osmembrane.model.settings.AbstractFunctionPreset; import de.osmembrane.tools.I18N; import de.osmembrane.view.AbstractDialog; import de.osmembrane.view.interfaces.IFunctionPresetDialog; /** * Displays a dialog to select the correct FunctionPreset to load. * * @author tobias_kuhn * */ public class FunctionPresetDialog extends AbstractDialog implements IFunctionPresetDialog { private static final long serialVersionUID = -1165660042954662085L; /** * Internal enum to keep track of the selection. * * @author tobias_kuhn * */ enum ButtonSelection { NONE, LOAD, DELETE }; /** * Keeps track of the last selection. */ private ButtonSelection selectedButton; /** * The combo box to select the preset */ private JComboBox selection; /** * The presets to select from */ private AbstractFunctionPreset[] presets; /** * Buttons for loading & deleting */ private JButton loadButton; private JButton deleteButton; /** * Creates a new {@link FunctionPresetDialog}. */ public FunctionPresetDialog(Window owner) { super(owner); setLayout(new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); gbc.insets = new Insets(8, 8, 8, 8); gbc.gridx = 0; gbc.gridy = 0; gbc.fill = GridBagConstraints.HORIZONTAL; selection = new JComboBox(); selection.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { loadButton.setEnabled(selection.getSelectedIndex() >= 0); deleteButton.setEnabled(selection.getSelectedIndex() >= 0); } }); add(selection, gbc); gbc.gridx = 0; gbc.gridy = 1; gbc.fill = GridBagConstraints.NONE; JPanel buttonGrid = new JPanel(new GridLayout(1, 3)); loadButton = new JButton(I18N.getInstance().getString("View.Load")); loadButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { selectedButton = ButtonSelection.LOAD; hideWindow(); } }); buttonGrid.add(loadButton); deleteButton = new JButton(I18N.getInstance().getString("View.Delete")); deleteButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { selectedButton = ButtonSelection.DELETE; hideWindow(); } }); buttonGrid.add(deleteButton); JButton cancelButton = new JButton(I18N.getInstance().getString( "View.Cancel")); cancelButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { selectedButton = ButtonSelection.NONE; hideWindow(); } }); buttonGrid.add(cancelButton); add(buttonGrid, gbc); selectedButton = ButtonSelection.NONE; setTitle(I18N.getInstance().getString("View.FunctionPresetDialog")); pack(); centerWindow(); } @Override public void open(AbstractFunctionPreset[] presets) { this.presets = presets; String[] selectables = new String[presets.length]; for (int i = 0; i < presets.length; i++) { selectables[i] = presets[i].getName(); } selection.setModel(new DefaultComboBoxModel(selectables)); loadButton.setEnabled(selection.getSelectedIndex() >= 0); deleteButton.setEnabled(selection.getSelectedIndex() >= 0); selectedButton = ButtonSelection.NONE; showWindow(); } @Override public AbstractFunctionPreset getSelectedPreset() { if (selection.getSelectedIndex() < 0) { return null; } else { return presets[selection.getSelectedIndex()]; } } @Override public boolean loadSelected() { return selectedButton.equals(ButtonSelection.LOAD); } @Override public boolean deleteSelected() { return selectedButton.equals(ButtonSelection.DELETE); } }