Example usage for org.eclipse.jface.viewers ComboViewer setLabelProvider

List of usage examples for org.eclipse.jface.viewers ComboViewer setLabelProvider

Introduction

In this page you can find the example usage for org.eclipse.jface.viewers ComboViewer setLabelProvider.

Prototype

@Override
public void setLabelProvider(IBaseLabelProvider labelProvider) 

Source Link

Document

The list viewer implementation of this Viewer framework method ensures that the given label provider is an instance of ILabelProvider.

Usage

From source file:org.hawk.ui.emfresource.exeed.EClassSelectionDialog.java

License:Open Source License

@Override
protected Control createDialogArea(Composite parent) {
    final Composite container = new Composite(parent, SWT.NONE);
    final GridLayout layout = new GridLayout();
    layout.numColumns = 2;//from   w w w. ja  v a 2 s .c  om
    container.setLayout(layout);

    final Label lblPackage = new Label(container, SWT.NONE);
    lblPackage.setText("Package:");

    final ComboViewer lPackages = new ComboViewer(container, SWT.BORDER);
    lPackages.setLabelProvider(new LabelProvider());
    lPackages.setContentProvider(new ArrayContentProvider());
    Object[] packages;
    try {
        packages = resource.getRegisteredMetamodels().toArray();
    } catch (Exception e) {
        Activator.logError("Could not retrieve registered metamodels", e);
        packages = new Object[0];
    }
    Arrays.sort(packages);
    lPackages.setInput(packages);
    lPackages.getCombo().setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));

    final Label lblClass = new Label(container, SWT.NONE);
    lblClass.setText("EClass:");

    final ComboViewer lClasses = new ComboViewer(container, SWT.DROP_DOWN);
    lClasses.setLabelProvider(new LabelProvider());
    lClasses.setContentProvider(new ArrayContentProvider());
    lClasses.setInput(new Object[0]);
    lClasses.getCombo().setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));

    lPackages.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            eClass = null;
            if (event.getSelection() instanceof IStructuredSelection) {
                final IStructuredSelection ssel = (IStructuredSelection) event.getSelection();
                if (ssel.getFirstElement() != null) {
                    final String packageURI = (String) ssel.getFirstElement();
                    ePackage = resource.getResourceSet().getPackageRegistry().getEPackage(packageURI);

                    final List<String> eClassNames = new ArrayList<>();
                    if (ePackage != null) {
                        for (EClassifier classifier : ePackage.getEClassifiers()) {
                            if (classifier instanceof EClass) {
                                eClassNames.add(classifier.getName());
                            }
                        }
                    }
                    final Object[] arrClassNames = eClassNames.toArray();
                    Arrays.sort(arrClassNames);
                    lClasses.setInput(arrClassNames);
                }
            }
            checkOKEnabled();
        }
    });

    lClasses.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            if (event.getSelection() instanceof IStructuredSelection) {
                final IStructuredSelection ssel = (IStructuredSelection) event.getSelection();
                if (ssel.getFirstElement() != null) {
                    final String className = (String) ssel.getFirstElement();
                    eClass = (EClass) ePackage.getEClassifier(className);
                }
            }

            checkOKEnabled();
        }
    });

    return container;
}

From source file:org.hibernate.eclipse.launch.AddPropertyDialog.java

License:Open Source License

private void initDefaultNames(ExporterFactory ef2, ComboViewer viewer) {
    viewer.setContentProvider(new IStructuredContentProvider() {

        ExporterFactory localEf;//from  ww  w  . j  a  v a 2  s .c  om

        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
            localEf = (ExporterFactory) newInput;
        }

        public void dispose() {
            localEf = null;
        }

        public Object[] getElements(Object inputElement) {
            Iterator<Map.Entry<String, ExporterProperty>> set = localEf.getDefaultExporterProperties()
                    .entrySet().iterator();
            List<ExporterProperty> values = new ArrayList<ExporterProperty>(4);
            while (set.hasNext()) {
                Map.Entry<String, ExporterProperty> element = set.next();
                //if(!localEf.hasLocalValueFor((String) element.getKey())) {
                ExporterProperty exporterProperty = localEf.getExporterProperty(element.getKey());
                if (exporterProperty != null) {
                    values.add(exporterProperty);
                }
                //}
            }
            return values.toArray(new ExporterProperty[values.size()]);
        }
    });

    viewer.setLabelProvider(new ILabelProvider() {

        public void removeListener(ILabelProviderListener listener) {

        }

        public boolean isLabelProperty(Object element, String property) {
            return false;
        }

        public void dispose() {

        }

        public void addListener(ILabelProviderListener listener) {

        }

        public String getText(Object element) {
            ExporterProperty exporterProperty = ((ExporterProperty) element);
            return exporterProperty.getDescriptionForLabel();
        }

        public Image getImage(Object element) {
            return null;
        }

    });

    viewer.addSelectionChangedListener(new ISelectionChangedListener() {

        private SelectionListener getSelectionListener(ExporterProperty prop) {
            if (!("path".equals(prop.getType()) || "directory".equals(prop.getType()))) //$NON-NLS-1$//$NON-NLS-2$
                return null;
            final boolean isPath = "path".equals(prop.getType()); //$NON-NLS-1$
            return new SelectionListener() {
                public void widgetDefaultSelected(SelectionEvent e) {
                    widgetSelected(e);
                }

                public void widgetSelected(SelectionEvent e) {
                    String title = isPath ? HibernateConsoleMessages.ExporterSettingsTab_select_path
                            : HibernateConsoleMessages.ExporterSettingsTab_select_dir;
                    String description = isPath ? HibernateConsoleMessages.ExporterSettingsTab_select_path2
                            : HibernateConsoleMessages.ExporterSettingsTab_select_dir2;

                    MessageDialog dialog = new MessageDialog(getShell(), title, null, description,
                            MessageDialog.QUESTION,
                            new String[] { HibernateConsoleMessages.CodeGenerationSettingsTab_filesystem,
                                    HibernateConsoleMessages.CodeGenerationSettingsTab_workspace,
                                    IDialogConstants.CANCEL_LABEL },
                            1);
                    int answer = dialog.open();
                    String strPath = null;
                    if (answer == 0) { // filesystem
                        DirectoryDialog dialog2 = new DirectoryDialog(getShell());
                        dialog2.setText(title);
                        dialog2.setMessage(description);

                        String dir = dialog2.open();
                        if (dir != null) {
                            strPath = dir;
                        }
                    } else if (answer == 1) { // workspace                        
                        IPath[] paths = DialogSelectionHelper.chooseFileEntries(getShell(), (IPath) null,
                                new Path[0], title, description, new String[0], isPath, true, false);
                        if (paths != null && paths.length > 0) {
                            strPath = paths[0].toOSString();
                            if (isPath) {
                                for (int i = 1; i < paths.length; i++) {
                                    strPath += ';' + paths[i].toOSString();
                                }
                            }
                        }
                    } else
                        return;
                    String oldPath = ((Text) value).getText();
                    if (isPath && oldPath.trim().length() > 0 && strPath != null)
                        ((Text) value).setText(oldPath + ';' + strPath);
                    else {
                        if (strPath != null)
                            ((Text) value).setText(strPath);
                    }
                }
            };
        }

        public void selectionChanged(SelectionChangedEvent event) {
            if (value == null)
                return;
            IStructuredSelection iss = (IStructuredSelection) event.getSelection();
            if (!iss.isEmpty()) {
                ExporterProperty prop = (ExporterProperty) iss.getFirstElement();
                if ("boolean".equalsIgnoreCase(prop.getType())) { //$NON-NLS-1$
                    disposeBrowseButton();
                    createComboValueComposite(new String[] { String.valueOf(true), String.valueOf(false) });
                    ((Combo) value).select(
                            Boolean.valueOf(ef.getPropertyValue(prop.getName())).booleanValue() ? 0 : 1);
                } else if ("directory".equalsIgnoreCase(prop.getType())//$NON-NLS-1$
                        || "path".equalsIgnoreCase(prop.getType())) { //$NON-NLS-1$
                    disposeBrowseButton();
                    createTextValueComposite(1);
                    ((Text) value).setText(ef.getPropertyValue(prop.getName()));
                    createBrowseButton(getSelectionListener(prop), prop);
                } else {
                    disposeBrowseButton();
                    createTextValueComposite(2);
                    ((Text) value).setText(ef.getPropertyValue(prop.getName()));
                }
            } else {
                createTextValueComposite(2);
            }
        }
    });
    viewer.setInput(ef);
    if (viewer.getCombo().getItemCount() > 0) {
        Object selected = null;
        if (selectedPropertyId != null) {
            selected = ef.getExporterProperty(selectedPropertyId);
        } else {
            selected = viewer.getElementAt(0);
        }
        viewer.setSelection(new StructuredSelection(selected));
        viewer.getCombo().select(viewer.getCombo().getSelectionIndex());
    }
}

From source file:org.jboss.bpmn2.editor.ui.property.MainPropertiesComposite.java

License:Open Source License

private void createSingleItemEditor(final EStructuralFeature reference, Object eGet, Collection values) {
    final ComboViewer combo = new ComboViewer(this, SWT.BORDER);
    Combo c = combo.getCombo();//w w w.  jav  a  2s .co m
    combo.setLabelProvider(LABEL_PROVIDER);
    c.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
    toolkit.adapt(c, true, true);
    widgets.add(c);

    List<Object> l = null;

    if (values != null) {
        l = Arrays.asList(values.toArray());
    } else if (modelHandler != null) {
        l = (List<Object>) modelHandler.getAll(reference.getEType().getInstanceClass());
    }

    combo.add("");
    combo.add(l.toArray());
    if (eGet != null) {
        combo.setSelection(new StructuredSelection(eGet));
    }

    combo.addSelectionChangedListener(new ISelectionChangedListener() {

        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            ISelection selection = combo.getSelection();
            if (selection instanceof StructuredSelection) {
                Object firstElement = ((StructuredSelection) selection).getFirstElement();
                if (firstElement instanceof EObject) {
                    updateEObject(firstElement);
                } else {
                    updateEObject(null);
                }
            }
        }

        public void updateEObject(final Object result) {
            TransactionalEditingDomain domain = bpmn2Editor.getEditingDomain();
            domain.getCommandStack().execute(new RecordingCommand(domain) {
                @Override
                protected void doExecute() {
                    be.eSet(reference, result);
                }
            });
        }
    });
}

From source file:org.jboss.mapper.eclipse.internal.editor.AddCustomFunctionDialog.java

License:Open Source License

@Override
protected Control createDialogArea(final Composite parent) {
    setTitle("Add Custom Operation");
    setMessage("Select or create the Java class and method that implements the custom operation");
    setHelpAvailable(false);//from   w  ww.  j av a2  s  .c  o m
    final Composite area = new Composite(parent, SWT.NONE);
    area.setLayout(GridLayoutFactory.swtDefaults().numColumns(3).create());
    area.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());
    Label label = new Label(area, SWT.NONE);
    label.setText("Class:");
    final Button classButton = new Button(area, SWT.NONE);
    classButton.setLayoutData(
            GridDataFactory.swtDefaults().align(SWT.FILL, SWT.CENTER).grab(true, false).create());
    classButton.setAlignment(SWT.LEFT);
    classButton.setText("< Click to select an existing class >");
    final Button newClassButton = new Button(area, SWT.NONE);
    newClassButton
            .setImage(new DecorationOverlayIcon(JavaUI.getSharedImages().getImage(ISharedImages.IMG_OBJS_CLASS),
                    Util.Decorations.ADD, IDecoration.TOP_RIGHT).createImage());
    label = new Label(area, SWT.NONE);
    label.setText("Method:");
    final ComboViewer methodComboViewer = new ComboViewer(area, SWT.READ_ONLY);
    methodComboViewer.getCombo().setLayoutData(
            GridDataFactory.swtDefaults().span(2, 1).align(SWT.FILL, SWT.CENTER).grab(true, false).create());
    methodComboViewer.setContentProvider(new ArrayContentProvider());
    methodComboViewer.setLabelProvider(new LabelProvider() {

        @Override
        public String getText(final Object element) {
            final IMethod method = (IMethod) element;
            try {
                final StringBuilder builder = new StringBuilder();
                builder.append(Signature.getSignatureSimpleName(method.getReturnType()));
                builder.append(" ");
                builder.append(method.getElementName());
                builder.append("(");
                final String[] types = method.getParameterTypes();
                final String[] names = method.getParameterNames();
                boolean hasPrm = false;
                for (int ndx = 0; ndx < types.length; ndx++) {
                    if (hasPrm) {
                        builder.append(", ");
                    } else {
                        builder.append(" ");
                        hasPrm = true;
                    }
                    builder.append(Signature.getSignatureSimpleName(types[ndx]));
                    builder.append(" ");
                    builder.append(names[ndx]);
                }
                if (hasPrm) {
                    builder.append(" ");
                }
                builder.append(")");
                return builder.toString();
            } catch (final JavaModelException e) {
                return "";
            }
        }
    });
    methodComboViewer.setComparator(new ViewerComparator() {

        @Override
        public int compare(final Viewer viewer, final Object object1, final Object object2) {
            final IMethod method1 = (IMethod) object1;
            final IMethod method2 = (IMethod) object2;
            int comparison = method1.getElementName().compareTo(method2.getElementName());
            if (comparison != 0) {
                return comparison;
            }
            final String[] types1 = method1.getParameterTypes();
            final String[] types2 = method2.getParameterTypes();
            comparison = types1.length - types2.length;
            if (comparison != 0) {
                return comparison;
            }
            for (int ndx = 0; ndx < types1.length; ndx++) {
                comparison = Signature.getSignatureSimpleName(types1[ndx])
                        .compareTo(Signature.getSignatureSimpleName(types2[ndx]));
                if (comparison != 0) {
                    return comparison;
                }
            }
            return 0;
        }
    });
    methodComboViewer.addSelectionChangedListener(new ISelectionChangedListener() {

        @Override
        public void selectionChanged(final SelectionChangedEvent event) {
            methodSelected(methodComboViewer);
        }
    });
    classButton.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(final SelectionEvent event) {
            selectClass(classButton, methodComboViewer);
        }
    });
    newClassButton.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(final SelectionEvent event) {
            createNewClass(classButton, methodComboViewer);
        }
    });
    return area;
}

From source file:org.jboss.mapper.eclipse.internal.editor.AddCustomOperationDialog.java

License:Open Source License

@Override
protected Control createDialogArea(final Composite parent) {
    setTitle("Add Custom Operation");
    setMessage("Select or create the Java class and method that implements the custom operation");
    setHelpAvailable(false);/* w  ww.  j  a v  a2  s . com*/
    final Composite area = new Composite(parent, SWT.NONE);
    area.setLayout(GridLayoutFactory.swtDefaults().numColumns(3).create());
    area.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());
    Label label = new Label(area, SWT.NONE);
    label.setText("Class:");
    final Button classButton = new Button(area, SWT.NONE);
    classButton.setLayoutData(
            GridDataFactory.swtDefaults().align(SWT.FILL, SWT.CENTER).grab(true, false).create());
    classButton.setAlignment(SWT.LEFT);
    classButton.setText("< Click to select an existing class >");
    final Button newClassButton = new Button(area, SWT.NONE);
    newClassButton
            .setImage(new DecorationOverlayIcon(JavaUI.getSharedImages().getImage(ISharedImages.IMG_OBJS_CLASS),
                    Util.ADD_OVERLAY_IMAGE_DESCRIPTOR, IDecoration.TOP_RIGHT).createImage());
    label = new Label(area, SWT.NONE);
    label.setText("Method:");
    final ComboViewer methodComboViewer = new ComboViewer(area, SWT.READ_ONLY);
    methodComboViewer.getCombo().setLayoutData(
            GridDataFactory.swtDefaults().span(2, 1).align(SWT.FILL, SWT.CENTER).grab(true, false).create());
    methodComboViewer.setContentProvider(new ArrayContentProvider());
    methodComboViewer.setLabelProvider(new LabelProvider() {

        @Override
        public String getText(final Object element) {
            final IMethod method = (IMethod) element;
            try {
                final StringBuilder builder = new StringBuilder();
                builder.append(Signature.getSignatureSimpleName(method.getReturnType()));
                builder.append(" ");
                builder.append(method.getElementName());
                builder.append("(");
                final String[] types = method.getParameterTypes();
                final String[] names = method.getParameterNames();
                boolean hasPrm = false;
                for (int ndx = 0; ndx < types.length; ndx++) {
                    if (hasPrm) {
                        builder.append(", ");
                    } else {
                        builder.append(" ");
                        hasPrm = true;
                    }
                    builder.append(Signature.getSignatureSimpleName(types[ndx]));
                    builder.append(" ");
                    builder.append(names[ndx]);
                }
                if (hasPrm) {
                    builder.append(" ");
                }
                builder.append(")");
                return builder.toString();
            } catch (final JavaModelException e) {
                return "";
            }
        }
    });
    methodComboViewer.setComparator(new ViewerComparator() {

        @Override
        public int compare(final Viewer viewer, final Object object1, final Object object2) {
            final IMethod method1 = (IMethod) object1;
            final IMethod method2 = (IMethod) object2;
            int comparison = method1.getElementName().compareTo(method2.getElementName());
            if (comparison != 0) {
                return comparison;
            }
            final String[] types1 = method1.getParameterTypes();
            final String[] types2 = method2.getParameterTypes();
            comparison = types1.length - types2.length;
            if (comparison != 0) {
                return comparison;
            }
            for (int ndx = 0; ndx < types1.length; ndx++) {
                comparison = Signature.getSignatureSimpleName(types1[ndx])
                        .compareTo(Signature.getSignatureSimpleName(types2[ndx]));
                if (comparison != 0) {
                    return comparison;
                }
            }
            return 0;
        }
    });
    methodComboViewer.addSelectionChangedListener(new ISelectionChangedListener() {

        @Override
        public void selectionChanged(final SelectionChangedEvent event) {
            methodSelected(methodComboViewer);
        }
    });
    classButton.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(final SelectionEvent event) {
            selectClass(classButton, methodComboViewer);
        }
    });
    newClassButton.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(final SelectionEvent event) {
            createNewClass(classButton, methodComboViewer);
        }
    });
    return area;
}

From source file:org.jboss.mapper.eclipse.internal.wizards.FirstPage.java

License:Open Source License

void createPage(final Composite parent) {

    final Composite page = new Composite(parent, SWT.NONE);
    setControl(page);/* w  w  w. j  a  v  a2s  .c om*/
    page.setLayout(GridLayoutFactory.swtDefaults().spacing(0, 5).numColumns(3).create());

    // Create project widgets
    Label label = new Label(page, SWT.NONE);
    label.setText("Project:");
    label.setToolTipText("The project that will contain the mapping file.");
    final ComboViewer projectViewer = new ComboViewer(new Combo(page, SWT.READ_ONLY));
    projectViewer.getCombo().setLayoutData(
            GridDataFactory.swtDefaults().grab(true, false).span(2, 1).align(SWT.FILL, SWT.CENTER).create());
    projectViewer.getCombo().setToolTipText(label.getToolTipText());
    projectViewer.setLabelProvider(new LabelProvider() {

        @Override
        public String getText(final Object element) {
            return ((IProject) element).getName();
        }
    });

    // Create ID widgets
    label = new Label(page, SWT.NONE);
    label.setText("ID:");
    label.setToolTipText("The transformation ID that will be shown in the Fuse editor");
    final Text idText = new Text(page, SWT.BORDER);
    idText.setLayoutData(
            GridDataFactory.swtDefaults().span(2, 1).grab(true, false).align(SWT.FILL, SWT.CENTER).create());
    idText.setToolTipText(label.getToolTipText());

    // Create file path widgets
    label = new Label(page, SWT.NONE);
    label.setText("Dozer File path: ");
    label.setToolTipText("The path to the Dozer transformation file.");
    final Text pathText = new Text(page, SWT.BORDER);
    pathText.setLayoutData(
            GridDataFactory.swtDefaults().span(2, 1).grab(true, false).align(SWT.FILL, SWT.CENTER).create());
    pathText.setToolTipText(label.getToolTipText());

    // Create camel file path widgets
    label = new Label(page, SWT.NONE);
    label.setText("Camel File path: ");
    label.setToolTipText("Path to the Camel configuration file.");
    final Text camelFilePathText = new Text(page, SWT.BORDER);
    camelFilePathText.setLayoutData(
            GridDataFactory.swtDefaults().span(1, 1).grab(true, false).align(SWT.FILL, SWT.CENTER).create());
    camelFilePathText.setToolTipText(label.getToolTipText());

    final Button camelPathButton = new Button(page, SWT.NONE);
    camelPathButton.setText("...");
    camelPathButton.setToolTipText("Browse to select an available Camel file.");
    camelPathButton.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(final SelectionEvent event) {
            final IResource res = Util.selectResourceFromWorkspace(getShell(), ".xml", model.getProject());
            if (res != null) {
                final IPath respath = JavaUtil.getJavaPathForResource(res);
                final String path = respath.makeRelative().toString();
                model.setCamelFilePath(path);
                camelFilePathText.setText(path);
                camelFilePathText.notifyListeners(SWT.Modify, new Event());
            }
        }
    });

    // Create source widgets
    Group group = new Group(page, SWT.SHADOW_ETCHED_IN);
    Label fileLabel = new Label(group, SWT.NONE);
    final Text sourcePathText = new Text(group, SWT.BORDER);
    final Button sourcePathButton = new Button(group, SWT.NONE);
    Label typeLabel = new Label(group, SWT.NONE);
    final ComboViewer sourceTypeViewer = new ComboViewer(new Combo(group, SWT.READ_ONLY));
    createFileControls(group, fileLabel, "Source", sourcePathText, sourcePathButton, typeLabel,
            sourceTypeViewer);

    // Create target widgets
    group = new Group(page, SWT.SHADOW_ETCHED_IN);
    fileLabel = new Label(group, SWT.NONE);
    final Text targetPathText = new Text(group, SWT.BORDER);
    final Button targetPathButton = new Button(group, SWT.NONE);
    typeLabel = new Label(group, SWT.NONE);
    final ComboViewer targetTypeViewer = new ComboViewer(new Combo(group, SWT.READ_ONLY));
    createFileControls(group, fileLabel, "Target", targetPathText, targetPathButton, typeLabel,
            targetTypeViewer);

    // Bind project widget to UI model
    projectViewer.setContentProvider(new ObservableListContentProvider());
    IObservableValue widgetValue = ViewerProperties.singleSelection().observe(projectViewer);
    IObservableValue modelValue = BeanProperties.value(Model.class, "project").observe(model);
    UpdateValueStrategy strategy = new UpdateValueStrategy();
    strategy.setBeforeSetValidator(new IValidator() {

        @Override
        public IStatus validate(final Object value) {
            if (value == null) {
                sourcePathButton.setEnabled(false);
                targetPathButton.setEnabled(false);
                return ValidationStatus.error("A project must be selected");
            }
            sourcePathButton.setEnabled(true);
            targetPathButton.setEnabled(true);
            return ValidationStatus.ok();
        }
    });
    ControlDecorationSupport.create(context.bindValue(widgetValue, modelValue, strategy, null), SWT.LEFT);
    projectViewer.setInput(Properties.selfList(IProject.class).observe(model.projects));

    // Bind transformation ID widget to UI model
    widgetValue = WidgetProperties.text(SWT.Modify).observe(idText);
    modelValue = BeanProperties.value(Model.class, "id").observe(model);
    strategy = new UpdateValueStrategy();
    strategy.setBeforeSetValidator(new IValidator() {

        @Override
        public IStatus validate(final Object value) {
            if (value == null || value.toString().trim().isEmpty()) {
                return ValidationStatus.error("A transformation ID must be supplied");
            }
            final String id = value.toString().trim();
            final StringCharacterIterator iter = new StringCharacterIterator(id);
            for (char chr = iter.first(); chr != StringCharacterIterator.DONE; chr = iter.next()) {
                if (!Character.isJavaIdentifierPart(chr)) {
                    return ValidationStatus.error("The transformation ID may only contain letters, "
                            + "digits, currency symbols, or underscores");
                }
            }
            if (model.camelConfigBuilder != null) {
                for (final String endpointId : model.camelConfigBuilder.getTransformEndpointIds()) {
                    if (id.equalsIgnoreCase(endpointId)) {
                        return ValidationStatus.error("A transformation with the supplied ID already exists");
                    }
                }
            }
            return ValidationStatus.ok();
        }
    });
    ControlDecorationSupport.create(context.bindValue(widgetValue, modelValue, strategy, null), SWT.LEFT);

    // Bind file path widget to UI model
    widgetValue = WidgetProperties.text(SWT.Modify).observe(pathText);
    modelValue = BeanProperties.value(Model.class, "filePath").observe(model);
    strategy = new UpdateValueStrategy();
    strategy.setBeforeSetValidator(new IValidator() {

        @Override
        public IStatus validate(final Object value) {
            if (value == null || value.toString().trim().isEmpty()) {
                return ValidationStatus.error("The transformation file path must be supplied");
            }
            if (!(value.toString().trim().isEmpty())) {
                final IFile file = model.getProject().getFile(Util.RESOURCES_PATH + (String) value);
                if (file.exists()) {
                    return ValidationStatus.warning("A transformation file with that name already exists.");
                }
            }
            return ValidationStatus.ok();
        }
    });
    ControlDecorationSupport.create(context.bindValue(widgetValue, modelValue, strategy, null), SWT.LEFT);

    // Bind camel file path widget to UI model
    widgetValue = WidgetProperties.text(SWT.Modify).observe(camelFilePathText);
    modelValue = BeanProperties.value(Model.class, "camelFilePath").observe(model);
    strategy = new UpdateValueStrategy();
    strategy.setBeforeSetValidator(new IValidator() {

        @Override
        public IStatus validate(final Object value) {
            if (value == null || value.toString().trim().isEmpty()) {
                return ValidationStatus.error("The Camel file path must be supplied");
            }
            if (!(value.toString().trim().isEmpty())) {
                File testFile = null;
                final String path = (String) value;
                testFile = new File(model.getProject().getFile(path).getLocationURI());
                if (!testFile.exists()) {
                    testFile = new File(
                            model.getProject().getFile(Util.RESOURCES_PATH + path).getLocationURI());
                    if (!testFile.exists()) {
                        return ValidationStatus.error("The Camel file path must be a valid file location");
                    }
                }
                try {
                    CamelConfigBuilder.loadConfig(testFile);
                } catch (final Exception e) {
                    return ValidationStatus.error("The Camel file path must refer to a valid Camel file");
                }
            }
            return ValidationStatus.ok();
        }
    });
    ControlDecorationSupport.create(context.bindValue(widgetValue, modelValue, strategy, null),
            SWT.LEFT | SWT.TOP);

    final ControlDecorationUpdater sourceUpdator = new ControlDecorationUpdater();
    final ControlDecorationUpdater targetUpdator = new ControlDecorationUpdater();

    // Bind source file path widget to UI model
    widgetValue = WidgetProperties.text(SWT.Modify).observe(sourcePathText);
    modelValue = BeanProperties.value(Model.class, "sourceFilePath").observe(model);
    strategy = new UpdateValueStrategy();
    strategy.setBeforeSetValidator(new IValidator() {

        @Override
        public IStatus validate(final Object value) {
            final String path = value == null ? null : value.toString().trim();
            if (path == null || path.isEmpty()) {
                return ValidationStatus
                        .error("A source file path must be supplied for the supplied target file path");
            }
            if (model.getProject().findMember(path) == null) {
                return ValidationStatus.error("Unable to find a source file with the supplied path");
            }
            return ValidationStatus.ok();
        }
    });
    ControlDecorationSupport.create(context.bindValue(widgetValue, modelValue, strategy, null), SWT.LEFT, null,
            sourceUpdator);

    // Bind target file path widget to UI model
    widgetValue = WidgetProperties.text(SWT.Modify).observe(targetPathText);
    modelValue = BeanProperties.value(Model.class, "targetFilePath").observe(model);
    strategy = new UpdateValueStrategy();
    strategy.setBeforeSetValidator(new IValidator() {

        @Override
        public IStatus validate(final Object value) {
            final String path = value == null ? null : value.toString().trim();
            if (path == null || path.isEmpty()) {
                return ValidationStatus
                        .error("A target file path must be supplied for the supplied source file path");
            }
            if (model.getProject().findMember(path) == null) {
                return ValidationStatus.error("Unable to find a target file with the supplied path");
            }
            return ValidationStatus.ok();
        }
    });
    ControlDecorationSupport.create(context.bindValue(widgetValue, modelValue, strategy, null), SWT.LEFT, null,
            targetUpdator);

    // Bind source type widget to UI model
    sourceTypeViewer.setContentProvider(new ObservableListContentProvider());
    widgetValue = ViewerProperties.singleSelection().observe(sourceTypeViewer);
    modelValue = BeanProperties.value(Model.class, "sourceType").observe(model);
    context.bindValue(widgetValue, modelValue);
    sourceTypeViewer.setInput(Properties.selfList(ModelType.class).observe(Arrays.asList(ModelType.values())));

    // Bind target type widget to UI model
    targetTypeViewer.setContentProvider(new ObservableListContentProvider());
    widgetValue = ViewerProperties.singleSelection().observe(targetTypeViewer);
    modelValue = BeanProperties.value(Model.class, "targetType").observe(model);
    context.bindValue(widgetValue, modelValue);
    targetTypeViewer.setInput(Properties.selfList(ModelType.class).observe(Arrays.asList(ModelType.values())));

    // Set focus to appropriate control
    page.addPaintListener(new PaintListener() {

        @Override
        public void paintControl(final PaintEvent event) {
            if (model.getProject() == null) {
                projectViewer.getCombo().setFocus();
            } else {
                idText.setFocus();
            }
            page.removePaintListener(this);
        }
    });

    for (final Object observable : context.getValidationStatusProviders()) {
        ((Binding) observable).getTarget().addChangeListener(new IChangeListener() {

            @Override
            public void handleChange(final ChangeEvent event) {
                validatePage();
            }
        });
    }

    if (model.getProject() == null) {
        validatePage();
    } else {
        projectViewer.setSelection(new StructuredSelection(model.getProject()));
    }
}

From source file:org.jboss.tools.common.launcher.ui.wizard.NewLauncherProjectWizardPage.java

License:Open Source License

@Override
protected void doCreateControls(final Composite parent, DataBindingContext dbc) {
    GridLayoutFactory.fillDefaults().margins(6, 6).numColumns(2).applyTo(parent);

    //  explanation
    Label explanation = new Label(parent, SWT.WRAP);
    explanation.setText("Launcher will generate an application for you."
            + " By picking a mission you determine what this application will do."
            + " The runtime then picks the software stack that's used to implement this aim.");
    GridDataFactory.fillDefaults().span(2, 1).align(SWT.FILL, SWT.FILL).grab(true, false).applyTo(explanation);

    // missions//w  w w.j a  v  a 2  s. c om
    Label lblMissions = new Label(parent, SWT.NONE);
    lblMissions.setText("Mission:");
    lblMissions.setToolTipText("A specification that describes what your application will do.");
    GridDataFactory.fillDefaults().align(SWT.LEFT, SWT.CENTER).applyTo(lblMissions);
    Combo comboMissions = new Combo(parent, SWT.SINGLE | SWT.DROP_DOWN | SWT.READ_ONLY);
    GridDataFactory.fillDefaults().indent(0, 10).align(SWT.LEFT, SWT.CENTER).hint(300, SWT.DEFAULT)
            .applyTo(comboMissions);
    ComboViewer comboMissionsViewer = new ComboViewer(comboMissions);
    comboMissionsViewer.setContentProvider(new ObservableListContentProvider());
    comboMissionsViewer.setInput(BeanProperties.list(NewLauncherProjectModel.MISSIONS_PROPERTY).observe(model));
    comboMissionsViewer.setLabelProvider(new LabelProvider() {
        @Override
        public String getText(Object element) {
            Mission mission = (Mission) element;
            return mission.getId();
        }
    });
    IObservableValue selectedMissionObservable = BeanProperties
            .value(NewLauncherProjectModel.SELECTED_MISSION_PROPERTY).observe(model);
    ValueBindingBuilder.bind(ViewerProperties.singleSelection().observe(comboMissionsViewer))
            .to(selectedMissionObservable).in(dbc);

    new Label(parent, SWT.None); // filler
    StyledText missionDescription = createStyledText(parent);
    IObservableValue missionDescriptionObservable = PojoProperties
            .value(NewLauncherProjectModel.DESCRIPTION_PROPERTY).observeDetail(selectedMissionObservable);
    ValueBindingBuilder.bind(WidgetProperties.text().observe(missionDescription)).notUpdatingParticipant()
            .to(missionDescriptionObservable).in(dbc);
    missionDescriptionObservable.addValueChangeListener(event -> setToPreferredVerticalSize(getShell()));

    // boosters
    Label lblBoosters = new Label(parent, SWT.NONE);
    lblBoosters.setText("Runtime:");
    lblBoosters.setToolTipText("The framework software used in the application's process.");
    GridDataFactory.fillDefaults().align(SWT.LEFT, SWT.CENTER).applyTo(lblBoosters);
    Combo comboBoosters = new Combo(parent, SWT.SINGLE | SWT.DROP_DOWN | SWT.READ_ONLY);
    GridDataFactory.fillDefaults().align(SWT.LEFT, SWT.CENTER).hint(300, SWT.DEFAULT).applyTo(comboBoosters);
    ComboViewer comboBoostersViewer = new ComboViewer(comboBoosters);
    comboBoostersViewer.setContentProvider(new ObservableListContentProvider());
    comboBoostersViewer.setInput(BeanProperties.list(NewLauncherProjectModel.BOOSTERS_PROPERTY).observe(model));
    comboBoostersViewer.setLabelProvider(new LabelProvider() {
        @Override
        public String getText(Object element) {
            Booster booster = (Booster) element;
            return booster.getRuntime() + " " + booster.getVersion();
        }
    });
    IObservableValue<Booster> selectedBoosterObservable = BeanProperties
            .value(NewLauncherProjectModel.SELECTED_BOOSTER_PROPERTY).observe(model);
    ValueBindingBuilder.bind(ViewerProperties.singleSelection().observe(comboBoostersViewer))
            .to(selectedBoosterObservable).in(dbc);

    new Label(parent, SWT.None); // filler
    StyledText boosterDescription = createStyledText(parent);
    IObservableValue boosterDescriptionObservable = PojoProperties
            .value(NewLauncherProjectModel.DESCRIPTION_PROPERTY).observeDetail(selectedBoosterObservable);
    ValueBindingBuilder.bind(WidgetProperties.text().observe(boosterDescription)).notUpdatingParticipant()
            .to(boosterDescriptionObservable).in(dbc);
    boosterDescriptionObservable.addValueChangeListener(event -> setToPreferredVerticalSize(getShell()));

    // separator
    Label mavenSeparator = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL);
    GridDataFactory.fillDefaults().span(2, 1).align(SWT.FILL, SWT.CENTER).applyTo(mavenSeparator);

    // project name
    createTextWidget(parent, dbc, "Project name:", NewLauncherProjectModel.PROJECT_NAME_PROPERTY,
            new EclipseProjectValidator("Please specify an Eclipse project", "Project already exists"));
    //use default location
    Button buttonUseDefaultLocation = new Button(parent, SWT.CHECK);
    buttonUseDefaultLocation.setText("Use default location");
    GridDataFactory.fillDefaults().span(2, 1).align(SWT.LEFT, SWT.CENTER).applyTo(buttonUseDefaultLocation);
    IObservableValue<Boolean> useDefaultLocationButtonObservable = WidgetProperties.selection()
            .observe(buttonUseDefaultLocation);
    ValueBindingBuilder.bind(useDefaultLocationButtonObservable)
            .to(BeanProperties.value(NewLauncherProjectModel.USE_DEFAULT_LOCATION_PROPERTY).observe(model))
            .in(dbc);

    // location
    Label lblLocation = new Label(parent, SWT.NONE);
    lblLocation.setText("Location:");
    GridDataFactory.fillDefaults().align(SWT.LEFT, SWT.CENTER).applyTo(lblLocation);

    Text txtLocation = new Text(parent, SWT.BORDER);
    GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).grab(true, false).applyTo(txtLocation);
    Binding locationBinding = ValueBindingBuilder.bind(WidgetProperties.text(SWT.Modify).observe(txtLocation))
            .validatingAfterGet(new MandatoryStringValidator("Please specify a location for you project"))
            .converting(
                    IConverter.create(String.class, IPath.class, NewLauncherProjectWizardPage::string2IPath))
            .to(BeanProperties.value(NewLauncherProjectModel.LOCATION_PROPERTY).observe(model)).in(dbc);
    ValueBindingBuilder.bind(WidgetProperties.enabled().observe(txtLocation)).notUpdatingParticipant()
            .to(BeanProperties.value(NewLauncherProjectModel.USE_DEFAULT_LOCATION_PROPERTY).observe(model))
            .converting(new InvertingBooleanConverter()).in(dbc);
    ControlDecorationSupport.create(locationBinding, SWT.LEFT | SWT.TOP, null,
            new RequiredControlDecorationUpdater());

    // separator
    Label launcherSeparator = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL);
    GridDataFactory.fillDefaults().indent(0, 10).span(2, 1).align(SWT.FILL, SWT.CENTER)
            .applyTo(launcherSeparator);

    // maven artifact
    Label mavenArtifactExplanation = new Label(parent, SWT.None);
    mavenArtifactExplanation.setText("Maven Artifact:");
    GridDataFactory.fillDefaults().span(2, 1).align(SWT.FILL, SWT.CENTER).applyTo(mavenArtifactExplanation);
    createTextWidget(parent, dbc, "Artifact id:", NewLauncherProjectModel.ARTIFACTID_PROPERTY,
            new MandatoryStringValidator("Please specify an artifact id"));
    createTextWidget(parent, dbc, "Group id:", NewLauncherProjectModel.GROUPID_PROPERTY,
            new MandatoryStringValidator("Please specify a group id"));
    createTextWidget(parent, dbc, "Version:", NewLauncherProjectModel.VERSION_PROPERTY,
            new MandatoryStringValidator("Please specify a version"));

    loadCatalog();
}

From source file:org.jboss.tools.fuse.transformation.editor.internal.AddCustomFunctionDialog.java

License:Open Source License

@Override
protected void constructContents(final Composite parent) {
    parent.setLayout(GridLayoutFactory.swtDefaults().numColumns(3).create());
    Label label = new Label(parent, SWT.NONE);
    label.setText("Class:");
    final Button classButton = new Button(parent, SWT.NONE);
    classButton.setLayoutData(/*w  w  w .  j a v  a2s .c  o m*/
            GridDataFactory.swtDefaults().align(SWT.FILL, SWT.CENTER).grab(true, false).create());
    classButton.setAlignment(SWT.LEFT);
    classButton.setText("< Click to select an existing class >");
    final Button newClassButton = new Button(parent, SWT.NONE);
    newClassButton
            .setImage(new DecorationOverlayIcon(JavaUI.getSharedImages().getImage(ISharedImages.IMG_OBJS_CLASS),
                    Decorations.ADD, IDecoration.TOP_RIGHT).createImage());
    label = new Label(parent, SWT.NONE);
    label.setText("Method:");
    final ComboViewer methodComboViewer = new ComboViewer(parent, SWT.READ_ONLY);
    methodComboViewer.getCombo().setLayoutData(
            GridDataFactory.swtDefaults().span(2, 1).align(SWT.FILL, SWT.CENTER).grab(true, false).create());
    methodComboViewer.setContentProvider(new ArrayContentProvider());
    methodComboViewer.setLabelProvider(new LabelProvider() {

        @Override
        public String getText(final Object element) {
            final IMethod method = (IMethod) element;
            try {
                final StringBuilder builder = new StringBuilder();
                builder.append(Signature.getSignatureSimpleName(method.getReturnType()));
                builder.append(" ");
                builder.append(method.getElementName());
                builder.append("(");
                final String[] types = method.getParameterTypes();
                final String[] names = method.getParameterNames();
                boolean hasPrm = false;
                for (int ndx = 0; ndx < types.length; ndx++) {
                    if (hasPrm) {
                        builder.append(", ");
                    } else {
                        builder.append(" ");
                        hasPrm = true;
                    }
                    builder.append(Signature.getSignatureSimpleName(types[ndx]));
                    builder.append(" ");
                    builder.append(names[ndx]);
                }
                if (hasPrm) {
                    builder.append(" ");
                }
                builder.append(")");
                return builder.toString();
            } catch (final JavaModelException e) {
                return "";
            }
        }
    });
    methodComboViewer.setComparator(new ViewerComparator() {

        @Override
        public int compare(final Viewer viewer, final Object object1, final Object object2) {
            final IMethod method1 = (IMethod) object1;
            final IMethod method2 = (IMethod) object2;
            int comparison = method1.getElementName().compareTo(method2.getElementName());
            if (comparison != 0) {
                return comparison;
            }
            final String[] types1 = method1.getParameterTypes();
            final String[] types2 = method2.getParameterTypes();
            comparison = types1.length - types2.length;
            if (comparison != 0) {
                return comparison;
            }
            for (int ndx = 0; ndx < types1.length; ndx++) {
                comparison = Signature.getSignatureSimpleName(types1[ndx])
                        .compareTo(Signature.getSignatureSimpleName(types2[ndx]));
                if (comparison != 0) {
                    return comparison;
                }
            }
            return 0;
        }
    });
    methodComboViewer.addSelectionChangedListener(new ISelectionChangedListener() {

        @Override
        public void selectionChanged(final SelectionChangedEvent event) {
            methodSelected(methodComboViewer);
        }
    });
    classButton.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(final SelectionEvent event) {
            selectClass(classButton, methodComboViewer);
        }
    });
    newClassButton.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(final SelectionEvent event) {
            createNewClass(classButton, methodComboViewer);
        }
    });
}

From source file:org.jboss.tools.fuse.transformation.editor.internal.AddCustomTransformationDialog.java

License:Open Source License

@Override
protected void constructContents(Composite parent) {
    parent.setLayout(GridLayoutFactory.swtDefaults().numColumns(3).create());
    Label label = new Label(parent, SWT.NONE);
    label.setText(Messages.AddCustomTransformationDialog_label_Class);
    final Button classButton = new Button(parent, SWT.NONE);
    classButton.setLayoutData(//from  w ww  .  j  a va  2  s  .  c  o m
            GridDataFactory.swtDefaults().align(SWT.FILL, SWT.CENTER).grab(true, false).create());
    classButton.setAlignment(SWT.LEFT);
    classButton.setText(Messages.AddCustomTransformationDialog_button_selectAnExistingClass);
    Button newClassButton = new Button(parent, SWT.NONE);
    newClassButton
            .setImage(new DecorationOverlayIcon(JavaUI.getSharedImages().getImage(ISharedImages.IMG_OBJS_CLASS),
                    Decorations.ADD, IDecoration.TOP_RIGHT).createImage());
    label = new Label(parent, SWT.NONE);
    label.setText(Messages.AddCustomTransformationDialog_label_method);
    final ComboViewer methodComboViewer = new ComboViewer(parent, SWT.READ_ONLY);
    methodComboViewer.getCombo().setLayoutData(
            GridDataFactory.swtDefaults().span(2, 1).align(SWT.FILL, SWT.CENTER).grab(true, false).create());
    methodComboViewer.setContentProvider(new ArrayContentProvider());
    methodComboViewer.setLabelProvider(new LabelProvider() {

        @Override
        public String getText(Object element) {
            IMethod method = (IMethod) element;
            try {
                StringBuilder builder = new StringBuilder();
                builder.append(Signature.getSignatureSimpleName(method.getReturnType()));
                builder.append(" "); //$NON-NLS-1$
                builder.append(method.getElementName());
                builder.append("("); //$NON-NLS-1$
                String[] types = method.getParameterTypes();
                String[] names = method.getParameterNames();
                boolean hasPrm = false;
                for (int ndx = 0; ndx < types.length; ndx++) {
                    if (hasPrm)
                        builder.append(", "); //$NON-NLS-1$
                    else {
                        builder.append(" "); //$NON-NLS-1$
                        hasPrm = true;
                    }
                    builder.append(Signature.getSignatureSimpleName(types[ndx]));
                    builder.append(" "); //$NON-NLS-1$
                    builder.append(names[ndx]);
                }
                if (hasPrm)
                    builder.append(" "); //$NON-NLS-1$
                builder.append(")"); //$NON-NLS-1$
                return builder.toString();
            } catch (JavaModelException e) {
                return ""; //$NON-NLS-1$
            }
        }
    });
    methodComboViewer.setComparator(new ViewerComparator() {

        @Override
        public int compare(Viewer viewer, Object object1, Object object2) {
            IMethod method1 = (IMethod) object1;
            IMethod method2 = (IMethod) object2;
            int comparison = method1.getElementName().compareTo(method2.getElementName());
            if (comparison != 0)
                return comparison;
            String[] types1 = method1.getParameterTypes();
            String[] types2 = method2.getParameterTypes();
            comparison = types1.length - types2.length;
            if (comparison != 0)
                return comparison;
            for (int ndx = 0; ndx < types1.length; ndx++) {
                comparison = Signature.getSignatureSimpleName(types1[ndx])
                        .compareTo(Signature.getSignatureSimpleName(types2[ndx]));
                if (comparison != 0)
                    return comparison;
            }
            return 0;
        }
    });
    methodComboViewer.addSelectionChangedListener(new ISelectionChangedListener() {

        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            methodSelected(methodComboViewer);
        }
    });
    classButton.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent event) {
            try {
                selectClass(classButton, methodComboViewer);
            } catch (JavaModelException e) {
                Activator.error(e);
            }
        }
    });
    newClassButton.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent event) {
            createNewClass(classButton, methodComboViewer);
        }
    });
}

From source file:org.jboss.tools.openshift.express.internal.ui.wizard.connection.ConnectionWizardPage.java

License:Open Source License

protected void doCreateControls(Composite container, DataBindingContext dbc) {
    GridLayoutFactory.fillDefaults().numColumns(2).margins(10, 10).applyTo(container);

    Link signupLink = new Link(container, SWT.WRAP);
    signupLink.setText("If you do not have an account on OpenShift, please sign up <a>here</a>.");
    GridDataFactory.fillDefaults().align(SWT.LEFT, SWT.CENTER).span(2, 1).applyTo(signupLink);
    signupLink.addSelectionListener(onSignupLinkClicked());

    Label fillerLabel = new Label(container, SWT.NONE);
    GridDataFactory.fillDefaults().span(2, 1).hint(SWT.DEFAULT, 6).applyTo(fillerLabel);

    Label connectionLabel = new Label(container, SWT.NONE);
    connectionLabel.setText("Connection:");
    GridDataFactory.fillDefaults().align(SWT.LEFT, SWT.CENTER).hint(100, SWT.DEFAULT).applyTo(connectionLabel);
    Combo connectionCombo = new Combo(container, SWT.DEFAULT);
    GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).grab(true, false).applyTo(connectionCombo);
    final ComboViewer connectionComboViewer = new ComboViewer(connectionCombo);
    connectionComboViewer.setContentProvider(ArrayContentProvider.getInstance());
    connectionComboViewer.setLabelProvider(new ConnectionColumLabelProvider());
    connectionComboViewer.setInput(pageModel.getConnections());
    connectionComboViewer.setComparer(new NewConnectionAwareConnectionComparer());

    Binding selectedConnectionBinding = ValueBindingBuilder
            .bind(ViewerProperties.singleSelection().observe(connectionComboViewer))
            .validatingAfterGet(new IValidator() {

                @Override//from   w w w . j  a  v  a2s  .  co m
                public IStatus validate(Object value) {
                    if (value == null) {
                        return ValidationStatus.cancel("You have to select or create a new connection.");
                    }
                    return ValidationStatus.ok();
                }
            }).to(BeanProperties.value(ConnectionWizardPageModel.PROPERTY_SELECTED_CONNECTION, Connection.class)
                    .observe(pageModel))
            .in(dbc);
    ControlDecorationSupport.create(selectedConnectionBinding, SWT.LEFT | SWT.TOP, null,
            new RequiredControlDecorationUpdater());

    // stack with connection widgets / password widget
    Composite connectionWidgetsContainer = new Composite(container, SWT.NONE);
    GridDataFactory.fillDefaults().span(2, 1).applyTo(connectionWidgetsContainer);
    StackLayout stackLayout = new StackLayout();
    connectionWidgetsContainer.setLayout(stackLayout);
    Composite connectionWidgets = createNewConnectionComposite(connectionWidgetsContainer, dbc);
    Composite passwordWidgets = createExistingConnectionComposite(connectionWidgetsContainer, dbc);

    showConnectionWidgets(pageModel.isCreateNewConnection(), passwordWidgets, connectionWidgets, stackLayout,
            connectionWidgetsContainer);

    BeanProperties.value(ConnectionWizardPageModel.PROPERTY_SELECTED_CONNECTION).observe(pageModel)
            .addValueChangeListener(onNewConnectionSelected(passwordWidgets, connectionWidgets, stackLayout,
                    connectionWidgetsContainer));
}