/******************************************************************************* * Copyright (c) 2015 INRIA. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * - Fawaz PARAISO *******************************************************************************/ package org.occiware.clouddesigner.occi.docker.preference.preferences; import org.eclipse.jface.preference.*; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.ui.IWorkbenchPreferencePage; import org.eclipse.ui.IWorkbench; import org.occiware.clouddesigner.occi.docker.preference.Activator; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * This class represents a preference page that is contributed to the * Preferences dialog. By subclassing <samp>FieldEditorPreferencePage</samp>, we * can use the field support built into JFace that allows us to create a page * that is small and knows how to save, restore and apply itself. * <p> * This page is used to modify preferences only. They are stored in the * preference store that belongs to the main plug-in class. That way, * preferences can be accessed directly via the preference store. */ public class DockerPreference extends FieldEditorPreferencePage implements IWorkbenchPreferencePage { private StringFieldEditor username; private StringFieldEditor password; private StringFieldEditor email; private StringFieldEditor version; private StringFieldEditor url; // Initialize logger for DockerPreference. private static Logger LOGGER = LoggerFactory.getLogger(PreferenceValues.class); public DockerPreference() { super(GRID); setPreferenceStore(Activator.getDefault().getPreferenceStore()); setDescription("Docker modeler preference page"); } /** * Creates the field editors. Field editors are abstractions of the common * GUI blocks needed to manipulate various types of preferences. Each field * editor knows how to save and restore itself. */ public void createFieldEditors() { username = new StringFieldEditor(PreferenceConstants.P_STRING_USERNAME, "Docker &username:", getFieldEditorParent()); addField(username); password = new StringFieldEditor(PreferenceConstants.P_STRING_PASSWORD, "Docker &password:", getFieldEditorParent()); addField(password); email = new StringFieldEditor(PreferenceConstants.P_STRING_EMAIL, "Docker &email:", getFieldEditorParent()); addField(email); version = new StringFieldEditor(PreferenceConstants.P_STRING_VERSION, "Docker &version:", getFieldEditorParent()); addField(version); url = new StringFieldEditor(PreferenceConstants.P_STRING_URL, "Docker &url:", getFieldEditorParent()); addField(url); LOGGER.info("All text fields where created"); // add change listener to the preferences store so that we are notified Activator.getDefault().getPreferenceStore().addPropertyChangeListener(new IPropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent event) { if (event.getProperty() == PreferenceConstants.P_STRING_USERNAME) { LOGGER.info(event.getNewValue().toString()); textValidation(event, PreferenceConstants.E_MSG_USERNAME); } if (event.getProperty() == PreferenceConstants.P_STRING_PASSWORD) { LOGGER.info(event.getNewValue().toString()); textValidation(event, PreferenceConstants.E_MSG_PASSWORD); } if (event.getProperty() == PreferenceConstants.P_STRING_EMAIL) { LOGGER.info(event.getNewValue().toString()); textValidation(event, PreferenceConstants.E_MSG_EMAIL); } if (event.getProperty() == PreferenceConstants.P_STRING_VERSION) { LOGGER.info(event.getNewValue().toString()); textValidation(event, PreferenceConstants.E_MSG_VERSION); } if (event.getProperty() == PreferenceConstants.P_STRING_URL) { LOGGER.info(event.getNewValue().toString()); textValidation(event, PreferenceConstants.E_MSG_URL); } } private void textValidation(PropertyChangeEvent event, String errorMessage) { if (event.getNewValue() != null && !event.getNewValue().equals("")) { setErrorMessage(null); setValid(true); } else { setErrorMessage(errorMessage); setValid(false); } } }); } protected void checkState() { super.checkState(); // Validate docker username if (username.getStringValue() != null && !username.getStringValue().equals("")) { setErrorMessage(null); setValid(true); } else { setErrorMessage(PreferenceConstants.E_MSG_USERNAME); setValid(false); } // Validate docker password if (password.getStringValue() != null && !password.getStringValue().equals("")) { setErrorMessage(null); setValid(true); } else { setErrorMessage(PreferenceConstants.E_MSG_PASSWORD); setValid(false); } // Validate docker email if (email.getStringValue() != null && !email.getStringValue().equals("")) { setErrorMessage(null); setValid(true); } else { setErrorMessage(PreferenceConstants.E_MSG_EMAIL); setValid(false); } // Validate docker version if (version.getStringValue() != null && !version.getStringValue().equals("")) { setErrorMessage(null); setValid(true); } else { setErrorMessage(PreferenceConstants.E_MSG_VERSION); setValid(false); } // Validate docker url if (url.getStringValue() != null && !url.getStringValue().equals("")) { setErrorMessage(null); setValid(true); } else { setErrorMessage(PreferenceConstants.E_MSG_URL); setValid(false); } } public void propertyChange(PropertyChangeEvent event) { super.propertyChange(event); if (event.getProperty().equals(FieldEditor.VALUE)) { checkState(); } } /* * (non-Javadoc) * * @see * org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench) */ public void init(IWorkbench workbench) { } }