use of org.eclipse.n4js.ui.wizard.components.WizardComponentDataConverters.ConditionalConverter in project n4js by eclipse.
the class WorkspaceWizardPage method setupBindings.
private void setupBindings(WorkspaceWizardPageForm wizardForm) {
databindingContext = new DataBindingContext();
WorkspaceWizardModelValidator<M> validator = getValidator();
// Project property binding
@SuppressWarnings("unchecked") IObservableValue<IPath> projectModelValue = BeanProperties.value(WorkspaceWizardModel.class, WorkspaceWizardModel.PROJECT_PROPERTY).observe(model);
@SuppressWarnings("unchecked") IObservableValue<String> projectUI = WidgetProperties.text(SWT.Modify).observe(wizardForm.getProjectText());
// Note: No model to UI conversation here as IPath is castable to String (default behavior)
databindingContext.bindValue(projectUI, projectModelValue, new StringToPathConverter().updatingValueStrategy(), new UpdateValueStrategy(UpdateValueStrategy.POLICY_UPDATE));
// Source folder property binding
@SuppressWarnings("unchecked") IObservableValue<IPath> sourceFolderModelValue = BeanProperties.value(WorkspaceWizardModel.class, WorkspaceWizardModel.SOURCE_FOLDER_PROPERTY).observe(model);
@SuppressWarnings("unchecked") IObservableValue<String> sourceFolderUI = WidgetProperties.text(SWT.Modify).observe(wizardForm.getSourceFolderText());
// Note: No model to UI conversation (see above)
databindingContext.bindValue(sourceFolderUI, sourceFolderModelValue, new StringToPathConverter().updatingValueStrategy(), new UpdateValueStrategy(UpdateValueStrategy.POLICY_UPDATE));
@SuppressWarnings("unchecked") IObservableValue<Boolean> projectValidModelValue = BeanProperties.value(WorkspaceWizardModelValidator.class, WorkspaceWizardModelValidator.PROJECT_PROPERTY_VALID).observe(validator);
@SuppressWarnings("unchecked") IObservableValue<Boolean> sourceFolderBrowseEnabled = WidgetProperties.enabled().observe(wizardForm.getSourceFolderBrowseButton());
databindingContext.bindValue(sourceFolderBrowseEnabled, projectValidModelValue, new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), new UpdateValueStrategy(UpdateValueStrategy.POLICY_UPDATE));
// Module specifier property binding
@SuppressWarnings("unchecked") IObservableValue<String> moduleSpecifierModelValue = BeanProperties.value(WorkspaceWizardModel.class, WorkspaceWizardModel.MODULE_SPECIFIER_PROPERTY).observe(model);
@SuppressWarnings("unchecked") IObservableValue<String> moduleSpecifierUI = BeanProperties.value(SuffixText.class, SuffixText.TEXT_PROPERTY).observe(wizardForm.getModuleSpecifierText());
databindingContext.bindValue(moduleSpecifierUI, moduleSpecifierModelValue);
// Conditional activation of the browse buttons according to the precedent input fields validity
@SuppressWarnings("unchecked") IObservableValue<Boolean> moduleSpecifierBrowseEnabled = WidgetProperties.enabled().observe(wizardForm.getModuleSpecifierBrowseButton());
@SuppressWarnings("unchecked") IObservableValue<Boolean> sourceFolderValidValue = BeanProperties.value(WorkspaceWizardModelValidator.class, WorkspaceWizardModelValidator.SOURCE_FOLDER_PROPERTY_VALID).observe(validator);
@SuppressWarnings("unchecked") IObservableValue<Boolean> projectValidValue = BeanProperties.value(WorkspaceWizardModelValidator.class, WorkspaceWizardModelValidator.PROJECT_PROPERTY_VALID).observe(validator);
ConditionalConverter moduleSpecifierBrowseableConverter = new ConditionalConverter() {
@Override
public boolean validate(Object object) {
return validator.getSourceFolderValid() && validator.getProjectValid();
}
};
// Bind model changes of project or source folder property to the enabled state of the module specifier browse
// button.
databindingContext.bindValue(moduleSpecifierBrowseEnabled, projectValidValue, new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), moduleSpecifierBrowseableConverter.updatingValueStrategy());
databindingContext.bindValue(moduleSpecifierBrowseEnabled, sourceFolderValidValue, new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), moduleSpecifierBrowseableConverter.updatingValueStrategy());
}
Aggregations