List of usage examples for org.eclipse.jface.databinding.viewers ViewerProperties singleSelection
public static IViewerValueProperty singleSelection()
From source file:org.jboss.tools.openshift.internal.ui.server.ServerSettingsWizardPage.java
License:Open Source License
private void createRouteControls(Composite container, ServerSettingsWizardPageModel model, DataBindingContext dbc) {//from w ww .j a va 2 s . c o m Group routeGroup = new Group(container, SWT.NONE); routeGroup.setText("Route"); GridDataFactory.fillDefaults().span(4, 1).align(SWT.FILL, SWT.FILL).grab(true, false).applyTo(routeGroup); GridLayoutFactory.fillDefaults().applyTo(routeGroup); // additional nesting required because of https://bugs.eclipse.org/bugs/show_bug.cgi?id=478618 Composite routeContainer = new Composite(routeGroup, SWT.None); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, true).applyTo(routeContainer); GridLayoutFactory.fillDefaults().margins(10, 10).numColumns(2).applyTo(routeContainer); Button promptRouteButton = new Button(routeContainer, SWT.CHECK); promptRouteButton.setSelection(true); promptRouteButton.setText("Prompt for route when multiple routes available to show in browser"); GridDataFactory.fillDefaults().align(SWT.LEFT, SWT.CENTER).span(2, 1).applyTo(promptRouteButton); Label routeLabel = new Label(routeContainer, SWT.NONE); routeLabel.setText("Use Route: "); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(routeLabel); StructuredViewer routesViewer = new ComboViewer(routeContainer); GridDataFactory.fillDefaults().span(1, 1).align(SWT.FILL, SWT.CENTER).grab(true, false) .applyTo(routesViewer.getControl()); routesViewer.setContentProvider(new ObservableListContentProvider()); routesViewer.setLabelProvider(new RouteLabelProvider()); routesViewer.setInput(BeanProperties.list(ServerSettingsWizardPageModel.PROPERTY_ROUTES).observe(model)); // routesViewer.setComparer(new IElementComparer() { // // @Override // public boolean equals(Object object1, Object object2) { // if (object1 instanceof IRoute) { // if (!(object2 instanceof IRoute)) { // return false; // } // // IRoute route1 = (IRoute) object1; // IRoute route2 = (IRoute) object2; // // return Objects.equals(route1.getServiceName(), route2.getServiceName()) // && Objects.equals(route1.getURL(), route2.getURL()); // } else if (object2 instanceof IRoute) { // return false; // } else { // return Objects.equals(object1, object2); // } // } // // @Override // public int hashCode(Object element) { // if (element instanceof IRoute) { // IRoute route = (IRoute) element; // return new HashCodeBuilder() // .append(route.getServiceName()) // .append(route.getURL()) // .toHashCode(); // } // return element.hashCode(); // } // }); IObservableValue<IResource> selectedRouteObservable = ViewerProperties.singleSelection() .observe(routesViewer); ValueBindingBuilder.bind(selectedRouteObservable) .to(BeanProperties.value(ServerSettingsWizardPageModel.PROPERTY_ROUTE).observe(model)).in(dbc); final IObservableValue<Boolean> isSelectDefaultRouteObservable = WidgetProperties.selection() .observe(promptRouteButton); final IObservableValue<Boolean> selectDefaultRouteModelObservable = BeanProperties .value(ServerSettingsWizardPageModel.PROPERTY_SELECT_DEFAULT_ROUTE).observe(model); ValueBindingBuilder.bind(isSelectDefaultRouteObservable).converting(new InvertingBooleanConverter()) .to(selectDefaultRouteModelObservable).converting(new InvertingBooleanConverter()).in(dbc); ValueBindingBuilder.bind(WidgetProperties.enabled().observe(routesViewer.getControl())) .notUpdating(selectDefaultRouteModelObservable).in(dbc); ValueBindingBuilder.bind(WidgetProperties.enabled().observe(routeLabel)) .notUpdating(selectDefaultRouteModelObservable).in(dbc); RouteValidator routeValidator = new RouteValidator(isSelectDefaultRouteObservable, selectedRouteObservable); dbc.addValidationStatusProvider(routeValidator); ControlDecorationSupport.create(routeValidator, SWT.LEFT | SWT.TOP, null, new RequiredControlDecorationUpdater(true)); }
From source file:org.jboss.tools.openshift.internal.ui.wizard.common.AbstractProjectPage.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()); final OpenShiftExplorerLabelProvider labelProvider = new OpenShiftExplorerLabelProvider(); projectsViewer.setContentProvider(new ObservableListContentProvider()); projectsViewer.setLabelProvider(new ObservableTreeItemLabelProvider()); projectsViewer.setInput(BeanProperties.list(IProjectPageModel.PROPERTY_PROJECT_ITEMS).observe(model)); projectsViewer.setComparator(ProjectViewerComparator.createProjectTreeSorter(labelProvider)); model.setProjectsComparator(new ProjectViewerComparator(labelProvider).asItemComparator()); IObservableValue selectedProjectObservable = ViewerProperties.singleSelection().observe(projectsViewer); Binding selectedProjectBinding = ValueBindingBuilder.bind(selectedProjectObservable) .converting(new ObservableTreeItem2ModelConverter(IProject.class)) .validatingAfterConvert(new IValidator() { @Override//from ww w. jav a 2s . com public IStatus validate(Object value) { if (value instanceof IProject) { return ValidationStatus.ok(); } return ValidationStatus.cancel("Please choose an OpenShift project."); } }).to(BeanProperties.value(IProjectPageModel.PROPERTY_PROJECT).observe(model)) .converting(new Model2ObservableTreeItemConverter(null)).in(dbc); ControlDecorationSupport.create(selectedProjectBinding, SWT.LEFT | SWT.TOP, null, new RequiredControlDecorationUpdater(true)); IObservableValue connectionObservable = BeanProperties.value(IProjectPageModel.PROPERTY_CONNECTION) .observe(model); DataBindingUtils.addDisposableValueChangeListener(onConnectionChanged(), connectionObservable, projectsViewer.getControl()); 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()); Label filler = new Label(parent, SWT.NONE); GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).span(3, 1) .applyTo(filler); }
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) {/* ww w .ja va 2 s .c o m*/ 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 w w w . j a va 2s . 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()); 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.connection.ConnectionEditor.java
License:Open Source License
private void bindWidgetsToInternalModel(DataBindingContext dbc) { //auth protocol this.selectedAuthTypeBinding = ValueBindingBuilder .bind(ViewerProperties.singleSelection().observe(authTypeViewer)) .validatingAfterGet(/*from w ww . ja v a 2 s. c o m*/ new IsNotNullValidator(ValidationStatus.cancel("Please select an authorization protocol."))) .to(selectedDetailViewObservable).in(dbc); ControlDecorationSupport.create(selectedAuthTypeBinding, SWT.LEFT | SWT.TOP, null, new RequiredControlDecorationUpdater()); }
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 ww w . j a v a2 s . c om*/ 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.j av a 2 s .c om*/ 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 ww . j a v a 2 s . c o m*/ 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 .java 2s. c o 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);/*from w w w . j av a2 s. co 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); }