List of usage examples for org.eclipse.jface.databinding.viewers ObservableListContentProvider ObservableListContentProvider
public ObservableListContentProvider()
From source file:org.jboss.tools.openshift.internal.ui.wizard.common.EnvironmentVariablePage.java
License:Open Source License
@SuppressWarnings("unchecked") protected void createEnvVariableControl(Composite parent, DataBindingContext dbc, String label, String tooltip) {/*from ww w. j ava 2 s . com*/ Composite envContainer = new Composite(parent, SWT.NONE); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, true).applyTo(envContainer); GridLayoutFactory.fillDefaults().numColumns(2).margins(2, 2).applyTo(envContainer); Label lblEnvVars = new Label(envContainer, SWT.NONE); lblEnvVars.setText(label); lblEnvVars.setToolTipText(tooltip); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).span(2, 1).applyTo(lblEnvVars); Composite tableContainer = envTableContainer = new Composite(envContainer, SWT.NONE); this.envViewer = createEnvVarTable(tableContainer); GridDataFactory.fillDefaults().span(1, 5).align(SWT.FILL, SWT.FILL).grab(true, true).hint(SWT.DEFAULT, 150) .applyTo(tableContainer); ValueBindingBuilder .bind(ViewerProperties.singleSelection().observe(envViewer)).to(BeanProperties .value(IDeploymentConfigPageModel.PROPERTY_SELECTED_ENVIRONMENT_VARIABLE).observe(model)) .in(dbc); envViewer.setContentProvider(new ObservableListContentProvider()); envViewer.setInput( BeanProperties.list(IDeploymentConfigPageModel.PROPERTY_ENVIRONMENT_VARIABLES).observe(model)); Button addButton = new Button(envContainer, SWT.PUSH); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.BEGINNING).applyTo(addButton); addButton.setText("Add..."); addButton.setToolTipText("Add an environment variable declared by the docker image."); addButton.addSelectionListener(onAdd()); UIUtils.setDefaultButtonWidth(addButton); heightScale = addButton.computeSize(SWT.DEFAULT, SWT.DEFAULT).y; Button editExistingButton = new Button(envContainer, SWT.PUSH); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.BEGINNING).applyTo(editExistingButton); editExistingButton.setText("Edit..."); editExistingButton.setToolTipText("Edit the environment variable declared by the docker image."); editExistingButton.addSelectionListener(new EditHandler()); ValueBindingBuilder.bind(WidgetProperties.enabled().observe(editExistingButton)).notUpdatingParticipant() .to(BeanProperties.value(IDeploymentConfigPageModel.PROPERTY_SELECTED_ENVIRONMENT_VARIABLE) .observe(model)) .converting(new IsNotNull2BooleanConverter()).in(dbc); UIUtils.setDefaultButtonWidth(editExistingButton); Button btnReset = new Button(envContainer, SWT.PUSH); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.BEGINNING).applyTo(btnReset); btnReset.setText("Reset"); btnReset.setToolTipText("Reset to the value declared by the docker image."); btnReset.addSelectionListener(onResetEnvVar()); ValueBindingBuilder .bind(WidgetProperties.enabled().observe(btnReset)).notUpdatingParticipant().to(BeanProperties .value(IDeploymentConfigPageModel.PROPERTY_SELECTED_ENVIRONMENT_VARIABLE).observe(model)) .converting(new IsNotNull2BooleanConverter() { @Override public Object convert(Object fromObject) { Boolean notNull = (Boolean) super.convert(fromObject); return notNull && !((EnvironmentVariable) fromObject).isNew() && model.isEnvironmentVariableModified((EnvironmentVariable) fromObject); } }).in(dbc); UIUtils.setDefaultButtonWidth(btnReset); Button btnResetAll = new Button(envContainer, SWT.PUSH); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.BEGINNING).applyTo(btnResetAll); btnResetAll.setText("Reset All"); btnResetAll.setToolTipText("Reset all variables to the value declared by the docker image."); btnResetAll.addSelectionListener(onResetEnvVars()); ValueBindingBuilder.bind(WidgetProperties.enabled().observe(btnResetAll)).notUpdatingParticipant() //This may look like a hack, but this property do change at each change to variables, so that button refresh will be consistent. .to(BeanProperties.value(IDeploymentConfigPageModel.PROPERTY_SELECTED_ENVIRONMENT_VARIABLE) .observe(model)) .converting(new IsNotNull2BooleanConverter() { @Override public Object convert(Object fromObject) { List<EnvironmentVariable> vars = model.getEnvironmentVariables(); return vars != null && !vars.isEmpty() && vars.stream() .anyMatch(v -> !v.isNew() && model.isEnvironmentVariableModified(v)); } }).in(dbc); UIUtils.setDefaultButtonWidth(btnResetAll); Button btnRemove = new Button(envContainer, SWT.PUSH); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.BEGINNING).applyTo(btnRemove); btnRemove.setText("Remove"); btnRemove.setToolTipText("Remove the environment variable added here."); btnRemove.addSelectionListener(onRemoveEnvVar()); ValueBindingBuilder .bind(WidgetProperties.enabled().observe(btnRemove)).notUpdatingParticipant().to(BeanProperties .value(IDeploymentConfigPageModel.PROPERTY_SELECTED_ENVIRONMENT_VARIABLE).observe(model)) .converting(new IsNotNull2BooleanConverter() { @Override public Object convert(Object fromObject) { Boolean notNull = (Boolean) super.convert(fromObject); return notNull && (canDeleteAnyVar || ((EnvironmentVariable) fromObject).isNew()) && !model.isEnvironmentVariableDeleted((EnvironmentVariable) fromObject); } }).in(dbc); UIUtils.setDefaultButtonWidth(btnRemove); }
From source file:org.jboss.tools.openshift.internal.ui.wizard.common.ResourceLabelsPage.java
License:Open Source License
@Override protected void doCreateControls(Composite container, DataBindingContext dbc) { GridLayoutFactory.fillDefaults().margins(10, 10).applyTo(container); org.eclipse.swt.widgets.Label lblLabel = new org.eclipse.swt.widgets.Label(container, SWT.NONE); lblLabel.setText("Labels"); Composite labelsGroup = new Composite(container, SWT.NONE); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, true).applyTo(labelsGroup); GridLayoutFactory.fillDefaults().numColumns(2).applyTo(labelsGroup); Composite tableContainer = new Composite(labelsGroup, SWT.NONE); this.viewer = createTable(tableContainer); GridDataFactory.fillDefaults().span(1, 5).align(SWT.FILL, SWT.FILL).grab(true, true) .applyTo(tableContainer);//from www . jav a 2 s.c o m ValueBindingBuilder.bind(ViewerProperties.singleSelection().observe(viewer)) .to(BeanProperties.value(IResourceLabelsPageModel.PROPERTY_SELECTED_LABEL).observe(model)).in(dbc); viewer.setContentProvider(new ObservableListContentProvider()); viewer.setInput(BeanProperties.list(IResourceLabelsPageModel.PROPERTY_LABELS).observe(model)); Button addButton = new Button(labelsGroup, SWT.PUSH); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).applyTo(addButton); addButton.setText("Add..."); addButton.addSelectionListener(onAdd()); UIUtils.setDefaultButtonWidth(addButton); Button editExistingButton = new Button(labelsGroup, SWT.PUSH); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).applyTo(editExistingButton); editExistingButton.setText("Edit..."); editExistingButton.addSelectionListener(onEdit()); ValueBindingBuilder.bind(WidgetProperties.enabled().observe(editExistingButton)).notUpdatingParticipant() .to(BeanProperties.value(IResourceLabelsPageModel.PROPERTY_SELECTED_LABEL).observe(model)) .converting(new IsNotNullOrReadOnlyBooleanConverter()).in(dbc); UIUtils.setDefaultButtonWidth(editExistingButton); Button removeButton = new Button(labelsGroup, SWT.PUSH); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).applyTo(removeButton); removeButton.setText("Remove..."); removeButton.addSelectionListener(onRemove()); ValueBindingBuilder.bind(WidgetProperties.enabled().observe(removeButton)).notUpdatingParticipant() .to(BeanProperties.value(IResourceLabelsPageModel.PROPERTY_SELECTED_LABEL).observe(model)) .converting(new IsNotNullOrReadOnlyBooleanConverter()).in(dbc); UIUtils.setDefaultButtonWidth(removeButton); }
From source file:org.jboss.tools.openshift.internal.ui.wizard.deployimage.DeployImagePage.java
License:Open Source License
private void createDockerConnectionControl(Composite parent, DataBindingContext dbc) { createDockerConnectionLabel(parent); StructuredViewer connectionViewer = new ComboViewer(parent); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).grab(true, false).span(NUM_COLUMS - 2, 1) .applyTo(connectionViewer.getControl()); connectionViewer.setContentProvider(new ObservableListContentProvider()); connectionViewer.setLabelProvider(new ObservableTreeItemLabelProvider() { @Override/*from w w w . j a va 2 s . c o m*/ public String getText(Object element) { return (element instanceof IDockerConnection) ? dockerConnectionToString((IDockerConnection) element) : ""; } }); connectionViewer .setInput(BeanProperties.list(IDeployImagePageModel.PROPERTY_DOCKER_CONNECTIONS).observe(model)); IObservableValue<IDockerConnection> dockerConnectionObservable = BeanProperties .value(IDeployImagePageModel.PROPERTY_DOCKER_CONNECTION).observe(model); DockerConnectionStatusProvider validator = new DockerConnectionStatusProvider(dockerConnectionObservable); IObservableValue<?> selectedConnectionObservable = ViewerProperties.singleSelection() .observe(connectionViewer); Binding selectedConnectionBinding = ValueBindingBuilder.bind(selectedConnectionObservable) .converting(new ObservableTreeItem2ModelConverter(IDockerConnection.class)) .validatingAfterConvert(validator) .to(BeanProperties.value(IDeployImagePageModel.PROPERTY_DOCKER_CONNECTION).observe(model)).in(dbc); ControlDecorationSupport.create(selectedConnectionBinding, SWT.LEFT | SWT.TOP, null, new RequiredControlDecorationUpdater(true)); Button newDockerConnectionButton = new Button(parent, SWT.PUSH); newDockerConnectionButton.setText("New..."); GridDataFactory.fillDefaults().align(SWT.LEFT, SWT.CENTER).applyTo(newDockerConnectionButton); UIUtils.setDefaultButtonWidth(newDockerConnectionButton); newDockerConnectionButton.addSelectionListener(onNewDockerConnectionClicked()); dbc.addValidationStatusProvider(validator); }
From source file:org.jboss.tools.openshift.internal.ui.wizard.deployimage.DeployImagePage.java
License:Open Source License
private void createProjectControl(Composite parent, DataBindingContext dbc) { Label lblProject = new Label(parent, SWT.NONE); lblProject.setText("OpenShift Project: "); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(lblProject); StructuredViewer cmboProject = new ComboViewer(parent); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).grab(true, false).hint(SWT.DEFAULT, 30) .span(NUM_COLUMS - 2, 1).applyTo(cmboProject.getControl()); final OpenShiftExplorerLabelProvider labelProvider = new OpenShiftExplorerLabelProvider(); cmboProject.setContentProvider(new ObservableListContentProvider()); cmboProject.setLabelProvider(labelProvider); cmboProject.setInput(BeanProperties.list(IDeployImagePageModel.PROPERTY_PROJECTS).observe(model)); ProjectViewerComparator comparator = new ProjectViewerComparator(labelProvider); cmboProject.setComparator(comparator); model.setProjectsComparator(comparator.asProjectComparator()); IObservableValue<IProject> projectObservable = BeanProperties.value(IDeployImagePageModel.PROPERTY_PROJECT) .observe(model);/*from w w w . jav a 2s. c o m*/ ProjectStatusProvider validator = new ProjectStatusProvider(projectObservable); IObservableValue selectedProjectObservable = ViewerProperties.singleSelection().observe(cmboProject); Binding selectedProjectBinding = ValueBindingBuilder.bind(selectedProjectObservable) .converting(new ObservableTreeItem2ModelConverter(IProject.class)).validatingAfterConvert(validator) .to(projectObservable).in(dbc); ControlDecorationSupport.create(selectedProjectBinding, SWT.LEFT | SWT.TOP, null, new RequiredControlDecorationUpdater(true)); Button newProjectButton = new Button(parent, SWT.PUSH); newProjectButton.setText("New..."); GridDataFactory.fillDefaults().align(SWT.LEFT, SWT.CENTER).applyTo(newProjectButton); UIUtils.setDefaultButtonWidth(newProjectButton); newProjectButton.addSelectionListener(onNewProjectClicked()); dbc.addValidationStatusProvider(validator); cmboProject.getControl().forceFocus(); }
From source file:org.jboss.tools.openshift.internal.ui.wizard.deployimage.DeploymentConfigPage.java
License:Open Source License
@SuppressWarnings("unchecked") private void createDataVolumeControl(Composite parent, DataBindingContext dbc) { Composite sectionContainer = new Composite(parent, SWT.NONE); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, true).applyTo(sectionContainer); GridLayoutFactory.fillDefaults().numColumns(2).margins(6, 6).applyTo(sectionContainer); Label lblSection = new Label(sectionContainer, SWT.NONE); lblSection.setText("Data volumes:"); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).span(2, 1).applyTo(lblSection); Composite tableContainer = volTableContainer = new Composite(sectionContainer, SWT.NONE); dataViewer = createDataVolumeTable(tableContainer); dataViewer.setContentProvider(new ObservableListContentProvider()); GridDataFactory.fillDefaults().span(2, 4).align(SWT.FILL, SWT.FILL).grab(true, false).hint(SWT.DEFAULT, 150) .applyTo(tableContainer);/*from w w w . j a v a 2 s . c om*/ ValueBindingBuilder.bind(ViewerProperties.singleSelection().observe(dataViewer)) .to(BeanProperties.value(IDeploymentConfigPageModel.PROPERTY_SELECTED_VOLUME).observe(model)); dataViewer.setInput(BeanProperties.list(IDeploymentConfigPageModel.PROPERTY_VOLUMES).observe(model)); Label lblNotice = new Label(sectionContainer, SWT.WRAP); lblNotice.setText(NLS.bind( "NOTICE: This image might use an EmptyDir volume. Data in EmptyDir volumes is not persisted across deployments.", model.getResourceName())); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, false).span(2, 2).applyTo(lblNotice); }
From source file:org.jboss.tools.openshift.internal.ui.wizard.deployimage.ListDockerImagesWizardPage.java
License:Open Source License
@SuppressWarnings("unchecked") @Override// w w w . j ava2s .co m protected void doCreateControls(final Composite parent, final DataBindingContext dbc) { GridLayoutFactory.fillDefaults().margins(10, 10).numColumns(2).applyTo(parent); // filter image by name final Label filterByNameLabel = new Label(parent, SWT.SEARCH); filterByNameLabel.setText("Filter:"); filterByNameLabel.setToolTipText("Filter images by their name"); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).grab(false, false).applyTo(filterByNameLabel); final Text filterByNameText = new Text(parent, SWT.BORDER); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).grab(true, false).applyTo(filterByNameText); // table with all images final Table dockerImagesTable = new Table(parent, SWT.BORDER | SWT.FULL_SELECTION | SWT.V_SCROLL | SWT.H_SCROLL); final TableViewer dockerImagesTableViewer = new TableViewer(dockerImagesTable); dockerImagesTable.setHeaderVisible(true); dockerImagesTable.setLinesVisible(true); addTableViewerColum(dockerImagesTableViewer, "Name", SWT.NONE, SWT.LEFT, 200, new ColumnLabelProvider() { @Override public String getText(final Object element) { return ((DockerImageTag) element).getRepoName(); } }); addTableViewerColum(dockerImagesTableViewer, "Tag", SWT.NONE, SWT.LEFT, 100, new ColumnLabelProvider() { @Override public String getText(final Object element) { return ((DockerImageTag) element).getTag(); } }); addTableViewerColum(dockerImagesTableViewer, "Image ID", SWT.NONE, SWT.LEFT, 150, new ColumnLabelProvider() { @Override public String getText(final Object element) { return ((DockerImageTag) element).getId(); } }); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, true).span(2, 1).hint(200, 100) .applyTo(dockerImagesTable); // observe the viewer content dockerImagesTableViewer.setContentProvider(new ObservableListContentProvider()); // observe the viewer content dockerImagesTableViewer.setInput(BeanProperties .list(ListDockerImagesWizardModel.class, ListDockerImagesWizardModel.DOCKER_IMAGES).observe(model)); // filter by name final ViewerFilter imageNameFilter = new ViewerFilter() { @Override public boolean select(Viewer viewer, Object parentElement, Object element) { return ((DockerImageTag) element).getRepoName().contains(filterByNameText.getText()); } }; dockerImagesTableViewer.addFilter(imageNameFilter); filterByNameText.addModifyListener(onFilterImages(dockerImagesTableViewer)); // bind selection dbc.bindValue(ViewerProperties.singleSelection().observe(dockerImagesTableViewer), BeanProperties.value(ListDockerImagesWizardModel.SELECTED_DOCKER_IMAGE).observe(model)); dockerImagesTableViewer.addDoubleClickListener(new IDoubleClickListener() { @Override public void doubleClick(DoubleClickEvent event) { IWizardContainer container = getWizard().getContainer(); if (container instanceof OkCancelButtonWizardDialog) { ((OkCancelButtonWizardDialog) container).autoFinish(); } } }); // load the Docker images try { getContainer().run(true, false, new IRunnableWithProgress() { @Override public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { model.setDockerImages(model.getDockerConnection().getImages(true)); } }); } catch (InvocationTargetException | InterruptedException e) { OpenShiftUIActivator.getDefault().getLogger().logError(e); } }
From source file:org.jboss.tools.openshift.internal.ui.wizard.deployimage.ServicesAndRoutingPage.java
License:Open Source License
private void createExposedPortsControl(Composite parent, DataBindingContext dbc) { Composite container = new Composite(parent, SWT.NONE); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, false).applyTo(container); GridLayoutFactory.fillDefaults().numColumns(2).margins(6, 6).applyTo(container); Label label = new Label(container, SWT.NONE); label.setText("Service Ports:"); label.setToolTipText("The exposed ports of the image."); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).span(2, 1).applyTo(label); Composite tableContainer = new Composite(container, SWT.NONE); portsViewer = createTable(tableContainer); GridDataFactory.fillDefaults().span(1, 5).align(SWT.FILL, SWT.FILL).grab(true, true) .applyTo(tableContainer);/*ww w .j a v a2 s .c o m*/ ValueBindingBuilder.bind(ViewerProperties.singleSelection().observe(portsViewer)) .to(BeanProperties.value(IServiceAndRoutingPageModel.PROPERTY_SELECTED_SERVICE_PORT).observe(model)) .in(dbc); portsViewer.setContentProvider(new ObservableListContentProvider()); IObservableList portsObservable = BeanProperties.list(IServiceAndRoutingPageModel.PROPERTY_SERVICE_PORTS) .observe(model); portsViewer.setInput(portsObservable); dbc.addValidationStatusProvider(new MultiValidator() { @Override protected IStatus validate() { if (portsObservable.isEmpty()) { return ValidationStatus.error( "At least 1 port is required when generating the service for the deployed image"); } return Status.OK_STATUS; } }); Button btnAdd = new Button(container, SWT.PUSH); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).applyTo(btnAdd); btnAdd.setText("Add..."); btnAdd.setToolTipText( "Add a port to be exposed by the service which is not explicilty declared by the image."); btnAdd.addSelectionListener(onAdd()); UIUtils.setDefaultButtonWidth(btnAdd); Button btnEdit = new Button(container, SWT.PUSH); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).applyTo(btnEdit); btnEdit.setText("Edit..."); btnEdit.setToolTipText("Edit a port to be exposed by the service."); btnEdit.addSelectionListener(new EditHandler()); ValueBindingBuilder.bind(WidgetProperties.enabled().observe(btnEdit)).notUpdatingParticipant() .to(BeanProperties.value(IServiceAndRoutingPageModel.PROPERTY_SELECTED_SERVICE_PORT).observe(model)) .converting(new IsNotNull2BooleanConverter()).in(dbc); UIUtils.setDefaultButtonWidth(btnEdit); Button removeButton = new Button(container, SWT.PUSH); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).applyTo(removeButton); removeButton.setText("Remove..."); removeButton.setToolTipText("Remove a port that will be exposed by the service."); removeButton.addSelectionListener(onRemove()); ValueBindingBuilder.bind(WidgetProperties.enabled().observe(removeButton)).notUpdatingParticipant() .to(BeanProperties.value(IServiceAndRoutingPageModel.PROPERTY_SELECTED_SERVICE_PORT).observe(model)) .converting(new IsNotNull2BooleanConverter()).in(dbc); UIUtils.setDefaultButtonWidth(removeButton); Button btnReset = new Button(container, SWT.PUSH); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).applyTo(btnReset); btnReset.setText("Reset"); btnReset.setToolTipText("Resets the list of ports to the exposed ports of the image."); btnReset.addSelectionListener(onReset()); UIUtils.setDefaultButtonWidth(btnReset); }
From source file:org.jboss.tools.openshift.internal.ui.wizard.newapp.fromtemplate.TemplateParametersPage.java
License:Open Source License
public TableViewer createTable(final Composite tableContainer, IObservableList<IParameter> parametersObservable, DataBindingContext dbc) {//from w w w .j av a2 s . c om final Table table = new Table(tableContainer, SWT.BORDER | SWT.FULL_SELECTION | SWT.V_SCROLL | SWT.H_SCROLL); table.setLinesVisible(true); table.setHeaderVisible(true); Image decorationImage = FieldDecorationRegistry.getDefault() .getFieldDecoration(FieldDecorationRegistry.DEC_ERROR).getImage(); final ObservableMap<String, IStatus> cellsValidationStatusObservable = new WritableMap<>(String.class, IStatus.class); final TableViewerCellDecorationManager decorations = new TableViewerCellDecorationManager(decorationImage, table); DataBindingUtils.addDisposableListChangeListener( onParametersChanged(decorations, cellsValidationStatusObservable), parametersObservable, table); final TableViewerBuilder builder = new TableViewerBuilder(table, tableContainer); TableViewer viewer = builder.contentProvider(new ArrayContentProvider()).column(new CellLabelProvider() { @Override public void update(ViewerCell cell) { Assert.isLegal(cell.getElement() instanceof IParameter, "cell element is not a IParameter"); IParameter parameter = (IParameter) cell.getElement(); String label = parameter.getName(); if (parameter.isRequired()) { label = markRequired(label); } cell.setText(label); } private String markRequired(String label) { return label += " *"; } @Override public String getToolTipText(Object object) { Assert.isLegal(object instanceof IParameter, "cell element is not a IParameter"); return ((IParameter) object).getDescription(); } @Override public int getToolTipDisplayDelayTime(Object object) { return 0; } }).name("Name").align(SWT.LEFT).weight(1).minWidth(180).buildColumn().column(new CellLabelProvider() { @Override public void update(ViewerCell cell) { Assert.isLegal(cell.getElement() instanceof IParameter, "cell element is not a IParameter"); final IParameter parameter = (IParameter) cell.getElement(); String label = TemplateParameterViewerUtils.getValueLabel(parameter); cell.setText(label); boolean italic = ((ApplicationSourceFromTemplateModel) model).isParameterModified(parameter); builder.applyFont(cell, italic); IStatus validationStatus = validate(parameter); cellsValidationStatusObservable.put(parameter.getName(), validationStatus); decorations.toggle(!validationStatus.isOK(), cell); } private IStatus validate(IParameter parameter) { if (parameter.isRequired()) { if (StringUtils.isEmpty(parameter.getValue()) && StringUtils.isEmpty(parameter.getGeneratorName())) { return ValidationStatus.error(NLS.bind("Parameter {0} is required, please provide a value.", parameter.getName())); } ; } IStatus status = gitSourceValidator.validate(parameter); if (!status.isOK()) { return status; } return ValidationStatus.ok(); } @Override public String getToolTipText(Object object) { Assert.isLegal(object instanceof IParameter, "cell element is not a IParameter"); return ((IParameter) object).getDescription(); } @Override public int getToolTipDisplayDelayTime(Object object) { return 0; } }).name("Value").align(SWT.LEFT).weight(1).buildColumn().buildViewer(); viewer.setComparator(new TemplateParameterViewerUtils.ParameterNameViewerComparator()); viewer.setContentProvider(new ObservableListContentProvider()); // cells validity dbc.addValidationStatusProvider(new MultiValidator() { @Override protected IStatus validate() { for (Iterator<IStatus> iterator = (Iterator<IStatus>) cellsValidationStatusObservable.values() .iterator(); iterator.hasNext();) { IStatus cellValidationStatus = iterator.next(); if (cellValidationStatus != null && !cellValidationStatus.isOK()) { return cellValidationStatus; } } return ValidationStatus.ok(); } }); return viewer; }
From source file:org.jboss.tools.openshift.internal.ui.wizard.newapp.ResourceLabelsPage.java
License:Open Source License
@Override protected void doCreateControls(Composite container, DataBindingContext dbc) { GridLayoutFactory.fillDefaults().margins(10, 10).applyTo(container); Group labelsGroup = new Group(container, SWT.NONE); labelsGroup.setText("Labels"); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, true).applyTo(labelsGroup); GridLayoutFactory.fillDefaults().numColumns(2).margins(6, 6).applyTo(labelsGroup); Composite tableContainer = new Composite(labelsGroup, SWT.NONE); this.viewer = createTable(tableContainer); GridDataFactory.fillDefaults().span(1, 5).align(SWT.FILL, SWT.FILL).grab(true, true) .applyTo(tableContainer);/* ww w . j a v a 2 s . com*/ ValueBindingBuilder.bind(ViewerProperties.singleSelection().observe(viewer)) .to(BeanProperties.value(IResourceLabelsPageModel.PROPERTY_SELECTED_LABEL).observe(model)).in(dbc); viewer.setContentProvider(new ObservableListContentProvider()); viewer.setInput(BeanProperties.list(IResourceLabelsPageModel.PROPERTY_LABELS).observe(model)); Button addButton = new Button(labelsGroup, SWT.PUSH); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).applyTo(addButton); addButton.setText("Add"); addButton.addSelectionListener(onAdd()); Button editExistingButton = new Button(labelsGroup, SWT.PUSH); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).applyTo(editExistingButton); editExistingButton.setText("Edit"); editExistingButton.addSelectionListener(onEdit()); ValueBindingBuilder.bind(WidgetProperties.enabled().observe(editExistingButton)).notUpdatingParticipant() .to(BeanProperties.value(IResourceLabelsPageModel.PROPERTY_SELECTED_LABEL).observe(model)) .converting(new IsNotNullOrReadOnlyBooleanConverter()).in(dbc); Button removeButton = new Button(labelsGroup, SWT.PUSH); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).applyTo(removeButton); removeButton.setText("Remove"); removeButton.addSelectionListener(onRemove()); ValueBindingBuilder.bind(WidgetProperties.enabled().observe(removeButton)).notUpdatingParticipant() .to(BeanProperties.value(IResourceLabelsPageModel.PROPERTY_SELECTED_LABEL).observe(model)) .converting(new IsNotNullOrReadOnlyBooleanConverter()).in(dbc); }
From source file:org.jboss.tools.openshift.internal.ui.wizard.newapp.TemplateListPage.java
License:Open Source License
private void createProjectControls(Composite parent, DataBindingContext dbc) { Label projectLabel = new Label(parent, SWT.NONE); projectLabel.setText("OpenShift project: "); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(projectLabel); StructuredViewer projectsViewer = new ComboViewer(parent); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).grab(true, false) .applyTo(projectsViewer.getControl()); projectsViewer.setContentProvider(new ObservableListContentProvider()); projectsViewer.setLabelProvider(new ObservableTreeItemLabelProvider()); projectsViewer.setInput(BeanProperties.list(ITemplateListPageModel.PROPERTY_PROJECT_ITEMS).observe(model)); IObservableValue selectedProjectObservable = ViewerProperties.singleSelection().observe(projectsViewer); Binding selectedProjectBinding = ValueBindingBuilder.bind(selectedProjectObservable) .converting(new ObservableTreeItem2ModelConverter(IProject.class)) .validatingAfterConvert(new IValidator() { @Override//from w ww .j a va 2 s . co m public IStatus validate(Object value) { if (value instanceof IProject) { return ValidationStatus.ok(); } return ValidationStatus.cancel("Please choose an OpenShift project."); } }).to(BeanProperties.value(ITemplateListPageModel.PROPERTY_PROJECT).observe(model)) .converting(new Model2ObservableTreeItemConverter(TemplateTreeItems.INSTANCE)).in(dbc); ControlDecorationSupport.create(selectedProjectBinding, SWT.LEFT | SWT.TOP, null, new RequiredControlDecorationUpdater(true)); BeanProperties.value(ITemplateListPageModel.PROPERTY_CONNECTION).observe(model) .addValueChangeListener(onConnectionChanged()); StyledText manageProjectsLink = StyledTextUtils.emulateLinkWidget("<a>Manage Projects</a>", new StyledText(parent, SWT.WRAP)); GridDataFactory.fillDefaults().align(SWT.LEFT, SWT.CENTER).indent(8, 0).applyTo(manageProjectsLink); StyledTextUtils.emulateLinkAction(manageProjectsLink, r -> onManageProjectsClicked()); Label filler = new Label(parent, SWT.NONE); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).span(3, 1).applyTo(filler); }