/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.dlect.ui.prefs;
import com.google.common.base.Optional;
import org.dlect.controller.MainController;
import org.dlect.controller.event.ControllerType;
import org.dlect.controller.helper.ControllerStateHelper;
import org.dlect.controller.provider.ProviderHelper;
import org.dlect.events.Event;
import org.dlect.events.EventListener;
import org.dlect.model.Database;
import org.dlect.model.helper.CommonSettingNames;
import org.dlect.provider.loader.ProviderDetail;
import org.dlect.update.UpdateController;
import org.dlect.update.UpdateStyle;
/**
* TODO(Later) implement this class to support changing & deleting login data.
* TODO(Later) implement moving credentials.
*/
public class ApplicationPreferencePanel extends PreferencePanel implements EventListener {
private static final String DEFAULT_PROVIDER_TEXT = "No Provider Selected";// TODO(Later) Localise
private static final String NOT_LOGGED_IN_TEXT = "Not Logged In";// TODO(Later) Localise
private final MainController c;
/**
* Creates new form ApplicationPreferencePanel
*/
public ApplicationPreferencePanel(MainController c) {
super(c);
this.c = c;
initComponents();
initSettings();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
java.awt.GridBagConstraints gridBagConstraints;
buttonGroup1 = new javax.swing.ButtonGroup();
jLabel3 = new javax.swing.JLabel();
updatesAutoInstall = new javax.swing.JRadioButton();
updatesNotify = new javax.swing.JRadioButton();
jLabel4 = new javax.swing.JLabel();
loginUserName = new javax.swing.JTextField();
loginProv = new javax.swing.JTextField();
updatesNoCheck = new javax.swing.JRadioButton();
setLayout(new java.awt.GridBagLayout());
jLabel3.setText("Updates:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 60;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
add(jLabel3, gridBagConstraints);
buttonGroup1.add(updatesAutoInstall);
updatesAutoInstall.setText("Automatically install updates");
updatesAutoInstall.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
updateSelectionChanged(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 60;
gridBagConstraints.gridwidth = 4;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
add(updatesAutoInstall, gridBagConstraints);
buttonGroup1.add(updatesNotify);
updatesNotify.setText("Notify me when updates are ready");
updatesNotify.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
updateSelectionChanged(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 70;
gridBagConstraints.gridwidth = 4;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
add(updatesNotify, gridBagConstraints);
jLabel4.setText("Logged In As: ");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
add(jLabel4, gridBagConstraints);
loginUserName.setEditable(false);
loginUserName.setText(NOT_LOGGED_IN_TEXT);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridwidth = 4;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
add(loginUserName, gridBagConstraints);
loginProv.setEditable(false);
loginProv.setText(DEFAULT_PROVIDER_TEXT);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
gridBagConstraints.gridwidth = 4;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
add(loginProv, gridBagConstraints);
updatesNoCheck.setText("Don't check for updates");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 80;
gridBagConstraints.gridwidth = 4;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
add(updatesNoCheck, gridBagConstraints);
}// </editor-fold>//GEN-END:initComponents
@Override
public void processEvent(Event e) {
// TODO(LAter) implement listening to changes in Update style and login information.
}
private void updateSelectionChanged(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_updateSelectionChanged
Database d = c.getDatabaseHandler().getDatabase();
if (updatesNotify.isSelected()) {
UpdateController.addUpdateSetting(UpdateStyle.MANUAL, d);
} else if (updatesNoCheck.isSelected()) {
UpdateController.addUpdateSetting(UpdateStyle.NONE, d);
} else {
UpdateController.addUpdateSetting(UpdateStyle.AUTOMATIC, d);
}
}//GEN-LAST:event_updateSelectionChanged
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.ButtonGroup buttonGroup1;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JTextField loginProv;
private javax.swing.JTextField loginUserName;
private javax.swing.JRadioButton updatesAutoInstall;
private javax.swing.JRadioButton updatesNoCheck;
private javax.swing.JRadioButton updatesNotify;
// End of variables declaration//GEN-END:variables
@Override
public void doSave() {
}
@Override
public void doPreShow() {
}
@Override
public String getTabName() {
return "Application";
}
@Override
public String getTabTooltip() {
return "Modify Application Settings";
}
@Override
public boolean isModified() {
return false; // All changes are instant.
}
private void initSettings() {
updateSettings();
}
private void updateSettings() {
updateLoginDetails();
updateDataLocationDetails();
updateTrayDetails();
updateUpdateDetails();
}
private void updateLoginDetails() {
ControllerStateHelper csh = c.getControllerStateHelper();
ProviderHelper ph = c.getProviderHelper();
Optional<String> username = c.getDatabaseHandler().getEncryptedSetting(CommonSettingNames.USERNAME);
ProviderDetail pd = ph.getProviderDetail();
if (!username.isPresent()) {
loginUserName.setText(NOT_LOGGED_IN_TEXT);
} else if (!csh.hasCompleted(ControllerType.LOGIN)) {
loginUserName.setText("(" + NOT_LOGGED_IN_TEXT + ") " + username.get());
} else {
loginUserName.setText(username.get());
}
if (pd == null) {
loginProv.setText(DEFAULT_PROVIDER_TEXT);
} else {
loginProv.setText(pd.getName());
}
}
private void updateDataLocationDetails() {
// TODO(LAter) implement updateDataLocationDetails
}
private void updateTrayDetails() {
// TODO(LAter) Implement updateTrayDetails
}
private void updateUpdateDetails() {
Database d = c.getDatabaseHandler().getDatabase();
UpdateStyle us = UpdateController.getUpdateSetting(d);
switch (us) {
case AUTOMATIC:
updatesAutoInstall.setSelected(true);
break;
case MANUAL:
updatesNotify.setSelected(true);
break;
case NONE:
updatesNoCheck.setSelected(true);
break;
default:
updatesAutoInstall.setSelected(true);
break;
}
}
}