Example usage for org.eclipse.jface.databinding.viewers ViewerProperties singleSelection

List of usage examples for org.eclipse.jface.databinding.viewers ViewerProperties singleSelection

Introduction

In this page you can find the example usage for org.eclipse.jface.databinding.viewers ViewerProperties singleSelection.

Prototype

public static IViewerValueProperty singleSelection() 

Source Link

Document

Returns a value property for observing the single selection of a ISelectionProvider .

Usage

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);

}