Author: adietish
Date: 2010-12-25 05:06:20 -0500 (Sat, 25 Dec 2010)
New Revision: 27735
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/common/databinding/validator/SelectedComboItemValidator.java
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/NewInstancePage.java
Log:
[JBIDE-8000] switched to observable pojo that notifies in UI thread only, corrected
binding order (first bind items, then selected item, then enablement)
Added:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/common/databinding/validator/SelectedComboItemValidator.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/common/databinding/validator/SelectedComboItemValidator.java
(rev 0)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/common/databinding/validator/SelectedComboItemValidator.java 2010-12-25
10:06:20 UTC (rev 27735)
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.internal.deltacloud.ui.common.databinding.validator;
+
+import org.eclipse.core.databinding.validation.IValidator;
+import org.eclipse.core.databinding.validation.ValidationStatus;
+import org.eclipse.core.runtime.IStatus;
+
+/**
+ * @author André Dietisheim
+ */
+public class SelectedComboItemValidator implements IValidator {
+
+ private String errorMessage;
+
+ public SelectedComboItemValidator(String errorMessage) {
+ this.errorMessage = errorMessage;
+ }
+
+ @Override
+ public IStatus validate(Object value) {
+ if (// areProfilesAvailable() &&
+ !isValidComboIndex(value)) {
+ // TODO: internationalize strings
+ return ValidationStatus.error(errorMessage);
+ }
+ return ValidationStatus.ok();
+ }
+
+
+ private boolean isValidComboIndex(Object index) {
+ return index != null
+ && index instanceof Integer
+ && ((Integer) index) >= 0;
+ }
+}
Property changes on:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/common/databinding/validator/SelectedComboItemValidator.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/NewInstancePage.java
===================================================================
---
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/NewInstancePage.java 2010-12-25
09:06:56 UTC (rev 27734)
+++
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/NewInstancePage.java 2010-12-25
10:06:20 UTC (rev 27735)
@@ -60,6 +60,7 @@
import org.jboss.tools.deltacloud.core.Driver;
import org.jboss.tools.deltacloud.ui.SWTImagesFactory;
import
org.jboss.tools.internal.deltacloud.ui.common.databinding.validator.MandatoryStringValidator;
+import
org.jboss.tools.internal.deltacloud.ui.common.databinding.validator.SelectedComboItemValidator;
import org.jboss.tools.internal.deltacloud.ui.utils.DataBindingUtils;
/**
@@ -274,30 +275,10 @@
BeanProperties.value(NewInstancePageModel.class,
NewInstancePageModel.PROPERTY_SELECTED_REALM_INDEX)
.observe(model),
new UpdateValueStrategy()
- .setAfterGetValidator(new IValidator() {
-
- @Override
- public IStatus validate(Object value) {
- if (areRealmsAvailable() &&
- !isValidComboIndex(value)) {
- // TODO: internationalize strings
- return ValidationStatus.error("You must select a realm.");
- }
- return ValidationStatus.ok();
- }
- }),
+ .setAfterGetValidator(new SelectedComboItemValidator("You must select a
realm.")),
new UpdateValueStrategy()
- .setAfterGetValidator(new IValidator() {
+ .setAfterGetValidator(new SelectedComboItemValidator("You must select a
realm.")));
- @Override
- public IStatus validate(Object value) {
- if (value == null) {
- ValidationStatus.error("You must select a realm");
- }
- return ValidationStatus.ok();
- }
- }));
-
// realm combo enablement
IObservableList realmsObservable =
BeanProperties.list(NewInstancePageModel.PROPERTY_REALMS).observe(model);
DataBindingUtils.addChangeListener(new IChangeListener() {
@@ -331,34 +312,14 @@
// bind selected combo item
Binding selectedProfileBinding = dbc.bindValue(
WidgetProperties.singleSelectionIndex().observe(profileCombo),
- BeanProperties.value(NewInstancePageModel.class,
NewInstancePageModel.PROPERTY_SELECTED_PROFILE_INDEX)
- .observe(
- model),
+ BeanProperties
+ .value(NewInstancePageModel.class,
NewInstancePageModel.PROPERTY_SELECTED_PROFILE_INDEX)
+ .observe(model),
new UpdateValueStrategy()
- .setAfterGetValidator(new IValidator() {
-
- @Override
- public IStatus validate(Object value) {
- if (// areProfilesAvailable() &&
- !isValidComboIndex(value)) {
- // TODO: internationalize strings
- return ValidationStatus.error("You must select a hardware profile.");
- }
- return ValidationStatus.ok();
- }
- }),
+ .setAfterGetValidator(new SelectedComboItemValidator("You must select a
hardware profile.")),
new UpdateValueStrategy()
- .setAfterGetValidator(new IValidator() {
+ .setAfterGetValidator(new SelectedComboItemValidator("You must select a
hardware profile.")));
- @Override
- public IStatus validate(Object value) {
- if (isValidComboIndex(value)) {
- ValidationStatus.error("You must select a hardware profile");
- }
- return ValidationStatus.ok();
- }
- }));
-
// bind combo enablement
IObservableList filteredProfilesObservable =
BeanProperties.list(NewInstancePageModel.PROPERTY_FILTERED_PROFILES).observe(model);
@@ -374,15 +335,7 @@
ControlDecorationSupport.create(selectedProfileBinding, SWT.LEFT | SWT.TOP);
}
- private boolean isValidComboIndex(Object index) {
- return index != null
- && index instanceof Integer
- && ((Integer) index) >= 0;
- }
-
private boolean areProfilesAvailable() {
- System.err.println("NewInstancePage#areProfilesAvailable" +
model.getFilteredProfiles() != null
- && model.getFilteredProfiles().size() > 0);
return model.getFilteredProfiles() != null
&& model.getFilteredProfiles().size() > 0;
}
@@ -406,20 +359,19 @@
}
}, allProfilesObservable, container);
- // bind selected profile
+ // bind selected profile page
IObservableValue selectedProfileIndexObservable =
- BeanProperties.value(NewInstancePageModel.class,
NewInstancePageModel.PROPERTY_SELECTED_PROFILE_INDEX)
- .observe(
- model);
+ BeanProperties
+ .value(NewInstancePageModel.class,
NewInstancePageModel.PROPERTY_SELECTED_PROFILE_INDEX)
+ .observe(model);
DataBindingUtils.addChangeListener(new IChangeListener() {
@Override
public void handleChange(ChangeEvent event) {
ProfilePage profilePage = profilePages.get(model.getProfileId());
selectProfilePage(profilePages, profilePage);
-
}
- }, selectedProfileIndexObservable, container);
+ }, selectedProfileIndexObservable, hardwareCombo);
}
private void createProfilePages(Collection<DeltaCloudHardwareProfile> profiles) {