package gr.upatras.ece.nam.fstoolkit.uop.preferences;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.jface.preference.StringFieldEditor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import gr.upatras.ece.nam.fstoolkit.uop.Activator;
public class UoPPreferencePage extends PreferencePage implements
IWorkbenchPreferencePage {
private Text registryUrlText;
private Text usernameText;
private Text passwordText;
private Button enableAccountChb;
private Text testConnection;
public UoPPreferencePage() {
setPreferenceStore(Activator.getDefault().getPreferenceStore());
// ImageDescriptor imageDesc = new ;
setImageDescriptor( AbstractUIPlugin.imageDescriptorFromPlugin( "gr.upatras.ece.nam.fstoolkit.uop",
"icons/ppeLogo.png") );
setDescription("Please fill your credentials for PPE at University of Patras");
if (getPreferenceStore().getString( UoPBrokerPreferenceConstants.UOPRegistryURL ).equals("") ){
getPreferenceStore().setValue(UoPBrokerPreferenceConstants.UOPRegistryURL,
"http://nam.ece.upatras.gr");
}
}
@Override
public void init(IWorkbench workbench) {
// TODO Auto-generated method stub
}
@Override
protected Control createContents(Composite parent) {
// Get the preference store
IPreferenceStore preferenceStore = getPreferenceStore();
Composite container = new Composite(parent, SWT.NULL);
GridLayout layout = new GridLayout();
container.setLayout(layout);
layout.numColumns = 2;
layout.verticalSpacing = 2;
GridData gdButton= new GridData(GridData.FILL_HORIZONTAL );
gdButton.widthHint = 120;
GridData gd= new GridData(GridData.FILL_BOTH);
gd.horizontalSpan= 2;
gd.widthHint = 640;
gd.heightHint = 400;
gd.horizontalAlignment = SWT.FILL;
container.setLayoutData(gd);
createLabel(container, "");
enableAccountChb = new Button(container, SWT.CHECK );
enableAccountChb.setText("Enable this account");
enableAccountChb.setSelection( preferenceStore.getBoolean( UoPBrokerPreferenceConstants.UOPENABLEDACCOUNT ) );
enableAccountChb.setLayoutData(gdButton);
createLabel(container, "Registry URL:");
//int descFlags= fIsNameModifiable ? SWT.BORDER : SWT.BORDER | SWT.READ_ONLY;
GridData gdtext= new GridData(GridData.FILL_HORIZONTAL );
// gdtext.widthHint = 250;
registryUrlText = new Text(container, SWT.BORDER );
registryUrlText.setLayoutData(gdtext);
registryUrlText.setText( preferenceStore.getString( UoPBrokerPreferenceConstants.UOPRegistryURL ));
createLabel(container, "Username:");
//int descFlags= fIsNameModifiable ? SWT.BORDER : SWT.BORDER | SWT.READ_ONLY;
usernameText = new Text(container, SWT.BORDER );
usernameText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
usernameText.setText( preferenceStore.getString( UoPBrokerPreferenceConstants.UOPUSERNAME) );
createLabel(container, "Password:");
//int descFlags= fIsNameModifiable ? SWT.BORDER : SWT.BORDER | SWT.READ_ONLY;
passwordText = new Text(container, SWT.BORDER );
passwordText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
passwordText.setEchoChar('*');
passwordText.setText( preferenceStore.getString( UoPBrokerPreferenceConstants.UOPPASSWORD) );
createLabel(container, "");
testConnection = new Text(container, SWT.BORDER | SWT.WRAP | SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
GridData gridData = new GridData();
gridData.horizontalAlignment = SWT.FILL;
gridData.grabExcessHorizontalSpace = true;
gridData.verticalAlignment = SWT.FILL;
gridData.grabExcessVerticalSpace = true;
gridData.heightHint = 200;
testConnection.setLayoutData(gridData);
testConnection.setText("Press the Test button after filling your settings to test connectivity.");
createLabel(container, "");
Button button = new Button(container, SWT.PUSH);
button.setText("Test / Update model");
button.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
testConnectivity();
}
});
parent.redraw();
return container;
}
protected void testConnectivity() {
testConnection.setText( Activator.getDefault().checkhUoPAuth(usernameText.getText() , passwordText.getText()) );
}
@Override
public boolean performOk() {
// Get the preference store
IPreferenceStore preferenceStore = getPreferenceStore();
preferenceStore.setValue( UoPBrokerPreferenceConstants.UOPENABLEDACCOUNT , enableAccountChb.getSelection() );
preferenceStore.setValue(UoPBrokerPreferenceConstants.UOPUSERNAME, usernameText.getText() );
preferenceStore.setValue(UoPBrokerPreferenceConstants.UOPPASSWORD, passwordText.getText() );
preferenceStore.setValue(UoPBrokerPreferenceConstants.UOPRegistryURL , registryUrlText.getText());
return true;
}
// @Override
// protected void createFieldEditors() {
// addField( new StringFieldEditor(UoPBrokerPreferenceConstants.P_UOPUSERNAME, "UoP username:", getFieldEditorParent()));
// addField( new PasswordFieldEditor(UoPBrokerPreferenceConstants.P_UOPPASSWORD, "UoP password:", getFieldEditorParent()) );
//
//
// }
public class PasswordFieldEditor extends StringFieldEditor {
public PasswordFieldEditor(String name,
String label, Composite parent) {
super(name, label, parent);
}
protected void doFillIntoGrid(Composite parent, int numColumns)
{
// Creates the text control
super.doFillIntoGrid(parent, numColumns);
// Now we can set the echo character
getTextControl().setEchoChar('*');
}
}
private static Label createLabel(Composite parent, String name) {
Label label= new Label(parent, SWT.NULL );
label.setText(name);
label.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING) );
return label;
}
}