[jbosstools-commits] JBoss Tools SVN: r41805 - branches/jbosstools-3.3.x/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/wizard.
jbosstools-commits at lists.jboss.org
jbosstools-commits at lists.jboss.org
Fri Jun 8 07:18:41 EDT 2012
Author: adietish
Date: 2012-06-08 07:18:39 -0400 (Fri, 08 Jun 2012)
New Revision: 41805
Modified:
branches/jbosstools-3.3.x/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/wizard/ProjectAndServerAdapterSettingsWizardPage.java
branches/jbosstools-3.3.x/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/wizard/ProjectAndServerAdapterSettingsWizardPageModel.java
Log:
[JBIDE-12134] moved validation from model to UI and implemented a MultiValidator in the way it is implemented in all other pages
Modified: branches/jbosstools-3.3.x/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/wizard/ProjectAndServerAdapterSettingsWizardPage.java
===================================================================
--- branches/jbosstools-3.3.x/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/wizard/ProjectAndServerAdapterSettingsWizardPage.java 2012-06-08 02:01:57 UTC (rev 41804)
+++ branches/jbosstools-3.3.x/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/wizard/ProjectAndServerAdapterSettingsWizardPage.java 2012-06-08 11:18:39 UTC (rev 41805)
@@ -15,12 +15,14 @@
import org.eclipse.core.databinding.DataBindingContext;
import org.eclipse.core.databinding.beans.BeanProperties;
+import org.eclipse.core.databinding.observable.list.IObservableList;
+import org.eclipse.core.databinding.observable.list.WritableList;
import org.eclipse.core.databinding.observable.value.IObservableValue;
import org.eclipse.core.databinding.validation.MultiValidator;
-import org.eclipse.core.databinding.validation.ValidationStatus;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
import org.eclipse.jface.databinding.fieldassist.ControlDecorationSupport;
import org.eclipse.jface.databinding.swt.ISWTObservableValue;
import org.eclipse.jface.databinding.swt.WidgetProperties;
@@ -33,6 +35,7 @@
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.layout.GridLayoutFactory;
import org.eclipse.jface.wizard.IWizard;
+import org.eclipse.jgit.util.StringUtils;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
@@ -46,6 +49,7 @@
import org.eclipse.ui.dialogs.WorkingSetGroup;
import org.jboss.tools.common.ui.databinding.InvertingBooleanConverter;
import org.jboss.tools.common.ui.databinding.ValueBindingBuilder;
+import org.jboss.tools.openshift.express.internal.ui.OpenShiftUIActivator;
/**
* @author Andre Dietisheim
@@ -146,10 +150,10 @@
ValueBindingBuilder.bind(WidgetProperties.enabled().observe(browseProjectsButton))
.notUpdating(newProjectObservable).converting(new InvertingBooleanConverter()).in(dbc);
- final IObservableValue existingProjectValidityObservable = BeanProperties.value(
- ProjectAndServerAdapterSettingsWizardPageModel.PROPERTY_EXISTING_PROJECT_VALIDITY).observe(pageModel);
- final UseExistingOpenProjectValidator existingProjectValidator = new UseExistingOpenProjectValidator(
- existingProjectValidityObservable);
+ final IObservableValue applicationNameModelObservable = BeanProperties.value(
+ GitCloningSettingsWizardPageModel.PROPERTY_APPLICATION_NAME).observe(pageModel);
+ final UseExistingOpenProjectValidator existingProjectValidator =
+ new UseExistingOpenProjectValidator(applicationNameModelObservable, newProjectObservable, projectNameModelObservable);
dbc.addValidationStatusProvider(existingProjectValidator);
ControlDecorationSupport.create(existingProjectValidator, SWT.LEFT | SWT.TOP);
@@ -255,27 +259,60 @@
class UseExistingOpenProjectValidator extends MultiValidator {
- private final IObservableValue existingProjectValidityObservable;
+ private final IObservableValue applicationNameObservable;
+ private final IObservableValue newProjectObservable;
+ private final IObservableValue projectNameObservable;
- public UseExistingOpenProjectValidator(IObservableValue existingProjectValidityObservable) {
- this.existingProjectValidityObservable = existingProjectValidityObservable;
+ public UseExistingOpenProjectValidator(IObservableValue applicationNameObservable, IObservableValue newProjectObservable, IObservableValue projectNameObservable) {
+ this.applicationNameObservable = applicationNameObservable;
+ this.newProjectObservable = newProjectObservable;
+ this.projectNameObservable = projectNameObservable;
}
@Override
- protected IStatus validate() {
- final IStatus existingProjectValidityStatus = (IStatus) existingProjectValidityObservable.getValue();
-
- if (existingProjectValidityStatus == null) {
- return ValidationStatus.ok();
+ public IStatus validate() {
+ IStatus status = Status.OK_STATUS;
+ final String projectName = (String) projectNameObservable.getValue();
+ final Boolean isNewProject = (Boolean) newProjectObservable.getValue();
+ if (isNewProject) {
+ final String applicationName = (String) applicationNameObservable.getValue();
+ if (StringUtils.isEmptyOrNull(applicationName)) {
+ status = OpenShiftUIActivator.createErrorStatus("You have to choose an application name");
+ } else {
+ final IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(applicationName);
+ if(project.exists()) {
+ status = OpenShiftUIActivator.createErrorStatus(
+ NLS.bind("A project named {0} already exists in the workspace.", applicationName));
+ }
+ }
+ } else {
+ if (projectName == null || projectName.isEmpty()) {
+ status = OpenShiftUIActivator.createErrorStatus("Select an open project in the workspace.");
+ } else {
+ final IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
+ if (!project.exists()) {
+ status = OpenShiftUIActivator.createErrorStatus(
+ NLS.bind("The project {0} does not exist in your workspace.", projectName));
+ } else if (!project.isOpen()) {
+ status = OpenShiftUIActivator.createErrorStatus(
+ NLS.bind("The project {0} is not open.", projectName));
+ }
+ }
}
- return existingProjectValidityStatus;
+ return status;
}
+
+ @Override
+ public IObservableList getTargets() {
+ WritableList targets = new WritableList();
+ targets.add(projectNameObservable);
+ return targets;
+ }
}
@Override
protected void onPageActivated(DataBindingContext dbc) {
setPageTitle();
- pageModel.validateExistingProject();
}
private void setPageTitle() {
Modified: branches/jbosstools-3.3.x/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/wizard/ProjectAndServerAdapterSettingsWizardPageModel.java
===================================================================
--- branches/jbosstools-3.3.x/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/wizard/ProjectAndServerAdapterSettingsWizardPageModel.java 2012-06-08 02:01:57 UTC (rev 41804)
+++ branches/jbosstools-3.3.x/openshift/plugins/org.jboss.tools.openshift.express.ui/src/org/jboss/tools/openshift/express/internal/ui/wizard/ProjectAndServerAdapterSettingsWizardPageModel.java 2012-06-08 11:18:39 UTC (rev 41805)
@@ -10,13 +10,10 @@
******************************************************************************/
package org.jboss.tools.openshift.express.internal.ui.wizard;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.osgi.util.NLS;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
import org.jboss.tools.common.ui.databinding.ObservableUIPojo;
-import org.jboss.tools.openshift.express.internal.ui.OpenShiftUIActivator;
/**
* @author Andre Dietisheim
@@ -25,6 +22,8 @@
*/
public class ProjectAndServerAdapterSettingsWizardPageModel extends ObservableUIPojo {
+ public static final String PROPERTY_APPLICATION_NAME = "applicationName";
+
/** whether this is a new project or not. */
public static final String PROPERTY_IS_NEW_PROJECT = "newProject";
@@ -34,24 +33,32 @@
/** whether this a server adapter should be created, or not. */
public static final String PROPERTY_CREATE_SERVER_ADAPTER = "createServerAdapter";
- /** Whether the existing project is a valid one or not. */
- public static final String PROPERTY_EXISTING_PROJECT_VALIDITY = "existingProjectValidity";
-
private IOpenShiftExpressWizardModel wizardModel;
- private IStatus existingProjectValidity;
-
public ProjectAndServerAdapterSettingsWizardPageModel(IOpenShiftExpressWizardModel wizardModel) {
this.wizardModel = wizardModel;
setNewProject(true);
+ wizardModel.addPropertyChangeListener(IOpenShiftExpressWizardModel.APPLICATION_NAME, onWizardApplicationNameChanged());
}
+ /**
+ * Listener to propagate the application name changes from the underlying WizardModel into this WizardPageModel, so that properties can be affected here, too.
+ * @return
+ */
+ private PropertyChangeListener onWizardApplicationNameChanged() {
+ return new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ firePropertyChange(PROPERTY_APPLICATION_NAME, evt.getOldValue(), evt.getNewValue());
+ }
+ };
+ }
+
public void setNewProject(boolean newProject) {
firePropertyChange(PROPERTY_IS_NEW_PROJECT, wizardModel.isNewProject(), wizardModel.setNewProject(newProject));
if(wizardModel.isNewProject()) {
setProjectName(null);
}
- validateExistingProject();
}
public boolean isNewProject() {
@@ -69,7 +76,6 @@
public void setProjectName(String projectName) {
firePropertyChange(PROPERTY_PROJECT_NAME, wizardModel.getProjectName(), wizardModel.setProjectName(projectName));
- validateExistingProject();
}
public String getProjectName() {
@@ -79,46 +85,4 @@
public String getApplicationName() {
return wizardModel.getApplicationName();
}
-
- public IStatus validateExistingProject() {
- IStatus status = Status.OK_STATUS;
- final String applicationName = getApplicationName();
- if (isNewProject()) {
- if (applicationName == null) {
- status = OpenShiftUIActivator.createErrorStatus("You have to choose an application name");
- } else {
- final IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(applicationName);
- if(project.exists()) {
- status = OpenShiftUIActivator.createErrorStatus(
- NLS.bind("A project named {0} already exists in the workspace.", applicationName));
- }
- }
- } else {
- final String projectName = wizardModel.getProjectName();
- if (projectName == null || projectName.isEmpty()) {
- status = OpenShiftUIActivator.createErrorStatus("Select an open project in the workspace.");
- } else {
- final IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
- if (!project.exists()) {
- status = OpenShiftUIActivator.createErrorStatus(
- NLS.bind("The project {0} does not exist in your workspace.", projectName));
- } else if (!project.isOpen()) {
- status = OpenShiftUIActivator.createErrorStatus(
- NLS.bind("The project {0} is not open.", projectName));
- }
- }
- }
- setExistingProjectValidity(status);
- return status;
- }
-
- public void setExistingProjectValidity(IStatus status) {
- firePropertyChange(PROPERTY_EXISTING_PROJECT_VALIDITY, this.existingProjectValidity,
- this.existingProjectValidity = status);
- }
-
- public IStatus getExistingProjectValidity() {
- return this.existingProjectValidity;
- }
-
}
More information about the jbosstools-commits
mailing list