Example usage for org.eclipse.jface.databinding.viewers ObservableListContentProvider ObservableListContentProvider

List of usage examples for org.eclipse.jface.databinding.viewers ObservableListContentProvider ObservableListContentProvider

Introduction

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

Prototype

public ObservableListContentProvider() 

Source Link

Document

Constructs an ObservableListContentProvider.

Usage

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