package de.jos.labelgenerator.dialog.preferences;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import org.jdesktop.application.Application;
import org.jdesktop.application.ApplicationActionMap;
import org.jdesktop.application.ApplicationContext;
import org.jdesktop.application.ResourceMap;
import com.jgoodies.forms.builder.PanelBuilder;
import com.jgoodies.forms.factories.ButtonBarFactory;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;
import de.jos.labelgenerator.LabelGeneratorApp;
import de.jos.labelgenerator.combobox.ComboBoxGMailGroup;
import de.jos.labelgenerator.combobox.GMailGroupComboBoxItem;
import de.jos.labelgenerator.configuration.ApplicationConfiguration;
import de.jos.labelgenerator.configuration.Preferences;
import de.jos.labelgenerator.dialog.AbstractPanel;
public class PreferencesDialogPanel extends AbstractPanel implements PreferencesDialogConstants {
private JCheckBox checkboxFilesystemProvider = null;
private JCheckBox checkboxGMailProvider = null;
private JTextField textFieldGMailEmail = null;
private JPasswordField passwordFieldGMailPassword = null;
private ComboBoxGMailGroup comboBoxGMailGroup = null;
private JButton buttonOk = null;
private JButton buttonCancel = null;
private JButton buttonTest = null;
private final ApplicationContext applicationContext = Application.getInstance(LabelGeneratorApp.class).getContext();
private final ResourceMap resourceMap = applicationContext.getResourceMap(PreferencesDialogPanel.class);
public PreferencesDialogPanel(ApplicationActionMap applicationActionMap) {
super(applicationActionMap);
setLayout(null);
initComponents();
}
public void initComponents() {
checkboxFilesystemProvider = new JCheckBox();
checkboxFilesystemProvider.setText(resourceMap.getString("checkbox.filesystemProvider"));
checkboxFilesystemProvider.setSelected(true);
checkboxGMailProvider = new JCheckBox();
checkboxGMailProvider.setText(resourceMap.getString("checkbox.GMailProvider"));
checkboxGMailProvider.setAction(getAction(ACTION_GMAIL_PROVIDER_CHECKBOX_CLICKED));
checkboxGMailProvider.setSelected(false);
buttonOk = new JButton();
buttonOk.setAction(getAction(ACTION_OK_BUTTON_PRESSED));
buttonOk.setText(resourceMap.getString("button.ok"));
buttonCancel = new JButton();
buttonCancel.setAction(getAction(ACTION_CANCEL_BUTTON_PRESSED));
buttonCancel.setText(resourceMap.getString("button.cancel"));
buttonTest = new JButton();
buttonTest.setAction(getAction(ACTION_TEST_BUTTON_PRESSED));
buttonTest.setText(resourceMap.getString("button.test"));
textFieldGMailEmail = new JTextField();
passwordFieldGMailPassword = new JPasswordField();
comboBoxGMailGroup = new ComboBoxGMailGroup();
// get configuration and apply it to components
final ApplicationConfiguration configuration = LabelGeneratorApp.getApplicationConfiguration();
final Preferences preferences = configuration.getPreferences();
checkboxFilesystemProvider.setSelected(preferences.getCheckboxFilesystemProvider());
checkboxGMailProvider.setSelected(preferences.getCheckboxGMailProvider());
textFieldGMailEmail.setText(preferences.getGmailEmail());
// if a gmail group was found in the configuration
if (preferences.getGmailGroup() != null) {
// add the gmail group to the list and select it
comboBoxGMailGroup.addItem(new GMailGroupComboBoxItem(preferences.getGmailGroup()));
comboBoxGMailGroup.setSelectedItem(preferences.getGmailGroup());
}
passwordFieldGMailPassword.setText(preferences.getGmailPassword());
// if checkboxGMailProvider is selected, enable input fields
boolean gmailProviderSelected = checkboxGMailProvider.isSelected();
textFieldGMailEmail.setEnabled(gmailProviderSelected);
passwordFieldGMailPassword.setEnabled(gmailProviderSelected);
comboBoxGMailGroup.setEnabled(gmailProviderSelected);
// build layout
final FormLayout layout = new FormLayout("4dlu, 100dlu, 4dlu, 100dlu, 4dlu, fill:default:grow, 4dlu", // column
"4dlu, 20dlu, 4dlu, 20dlu, 4dlu, 20dlu, 4dlu, 20dlu, 4dlu, 20dlu, 4dlu, fill:p:grow, 20dlu, 4dlu"); // row
final PanelBuilder builder = new PanelBuilder(layout, this);
final CellConstraints cc = new CellConstraints();
builder.nextRow();
builder.nextColumn(1);
builder.add(checkboxFilesystemProvider);
builder.nextRow(2);
builder.setColumn(2);
// builder.nextColumn(1);
builder.add(checkboxGMailProvider);
builder.nextRow(2);
builder.setColumn(4);
builder.add(textFieldGMailEmail);
builder.nextRow(2);
builder.add(passwordFieldGMailPassword);
builder.nextColumn(2);
builder.add(buttonTest);
builder.nextRow(2);
builder.setColumn(4);
builder.add(comboBoxGMailGroup);
builder.nextRow(3);
builder.setColumn(4);
builder.add(ButtonBarFactory.buildRightAlignedBar(buttonCancel, buttonOk));
}
public JCheckBox getCheckboxFilesystemProvider() {
return checkboxFilesystemProvider;
}
public JCheckBox getCheckboxGMailProvider() {
return checkboxGMailProvider;
}
public JTextField getTextFieldGMailEmail() {
return textFieldGMailEmail;
}
public JPasswordField getPasswordFieldGMailPassword() {
return passwordFieldGMailPassword;
}
public ComboBoxGMailGroup getComboBoxGMailGroup() {
return comboBoxGMailGroup;
}
}