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.bonitasoft.studio.validators.ui.property.section.ValidatorsPropertySection.java

License:Open Source License

/**
 * Create a FilteredTree to list all validators on the Validable.
 * @param mainComposite/*from  ww w.  jav  a  2 s. co m*/
 */
protected void createListOfValidators(Composite mainComposite) {
    // ----------------left panel : tree + buttons
    tableViewer = new TableViewer(mainComposite,
            SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION | SWT.V_SCROLL | SWT.H_SCROLL);
    getWidgetFactory().adapt(tableViewer.getTable(), false, false);
    GridData gridData = new GridData(SWT.CENTER, SWT.TOP, false, false);
    gridData.widthHint = 300;
    gridData.heightHint = 150;
    tableViewer.getTable().setLayoutData(gridData);
    //validatorList.setLayoutData(new GridData(300, 150));
    tableViewer.setLabelProvider(new ValidatorLabelProvider());
    //TODO : bind the list of validator
    tableViewer.setContentProvider(new IStructuredContentProvider() {

        @Override
        public void inputChanged(Viewer arg0, Object arg1, Object arg2) {
        }

        @Override
        public void dispose() {
        }

        @Override
        public Object[] getElements(Object inputElement) {
            if (inputElement instanceof Validable) {
                return ((Validable) inputElement).getValidators().toArray();
            } else {
                return new Object[0];
            }
        }
    });
    tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {

        @Override
        public void selectionChanged(SelectionChangedEvent event) {

            currentValidator = (Validator) ((IStructuredSelection) tableViewer.getSelection())
                    .getFirstElement();
            enableFields(!tableViewer.getSelection().isEmpty());
            if (currentValidator != null) {
                if (expressionContext != null) {
                    expressionContext.dispose();
                }
                expressionContext = new EMFDataBindingContext();

                parameterExpressionViewer.setEditingDomain(getEditingDomain());
                Expression selection = currentValidator.getParameter();
                if (selection == null) {
                    selection = ExpressionFactory.eINSTANCE.createExpression();
                    getEditingDomain().getCommandStack().execute(SetCommand.create(getEditingDomain(),
                            currentValidator, FormPackage.Literals.VALIDATOR__PARAMETER, selection));

                }
                if (currentValidator != null) {
                    parameterExpressionViewer.setContext(currentValidator);
                } else {
                    parameterExpressionViewer.setContext(getValidable());
                }

                parameterExpressionViewer.setInput(currentValidator);

                expressionContext
                        .bindValue(ViewerProperties.singleSelection().observe(parameterExpressionViewer),
                                EMFEditProperties
                                        .value(getEditingDomain(), FormPackage.Literals.VALIDATOR__PARAMETER)
                                        .observe(currentValidator));

            }

            if (currentValidator != null) {
                labelExpressionViewer.setEditingDomain(getEditingDomain());
                Expression selection = currentValidator.getDisplayName();
                if (selection == null) {
                    selection = ExpressionFactory.eINSTANCE.createExpression();
                    getEditingDomain().getCommandStack().execute(SetCommand.create(getEditingDomain(),
                            currentValidator, FormPackage.Literals.VALIDATOR__DISPLAY_NAME, selection));
                }
                if (currentValidator != null) {
                    labelExpressionViewer.setContext(currentValidator);
                } else {
                    labelExpressionViewer.setContext(getValidable());
                }

                labelExpressionViewer.setInput(currentValidator);
                expressionContext.bindValue(ViewerProperties.singleSelection().observe(labelExpressionViewer),
                        EMFEditProperties
                                .value(getEditingDomain(), FormPackage.Literals.VALIDATOR__DISPLAY_NAME)
                                .observe(currentValidator));

            }
            updateButton();
        }
    });

}

From source file:org.eclipse.e4.tools.emf.ui.internal.common.component.AreaEditor.java

License:Open Source License

private Composite createForm(Composite parent, final EMFDataBindingContext context, WritableValue master,
        boolean isImport) {
    CTabFolder folder = new CTabFolder(parent, SWT.BOTTOM);

    CTabItem item = new CTabItem(folder, SWT.NONE);
    item.setText(Messages.ModelTooling_Common_TabDefault);

    parent = createScrollableContainer(folder);
    item.setControl(parent.getParent());

    if (getEditor().isShowXMIId() || getEditor().isLiveModel()) {
        ControlFactory.createXMIId(parent, this);
    }/*w w  w .  ja  va 2s .c o  m*/

    IWidgetValueProperty textProp = WidgetProperties.text(SWT.Modify);

    if (isImport) {
        ControlFactory.createFindImport(parent, Messages, this, context);
        folder.setSelection(0);
        return folder;
    }

    ControlFactory.createTextField(parent, Messages.ModelTooling_Common_Id, getMaster(), context, textProp,
            EMFEditProperties.value(getEditingDomain(),
                    ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID));
    ControlFactory.createTextField(parent, Messages.AreaEditor_LabelLabel, master, context, textProp,
            EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__LABEL));
    ControlFactory.createTextField(parent, Messages.AreaEditor_Tooltip, master, context, textProp,
            EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__TOOLTIP));

    // ------------------------------------------------------------
    {
        Label l = new Label(parent, SWT.NONE);
        l.setText(Messages.AreaEditor_IconURI);
        l.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));

        final Text t = new Text(parent, SWT.BORDER);
        TextPasteHandler.createFor(t);
        t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
        context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties
                .value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__ICON_URI).observeDetail(master));

        new ImageTooltip(t, Messages) {

            @Override
            protected URI getImageURI() {
                MUILabel part = (MUILabel) getMaster().getValue();
                String uri = part.getIconURI();
                if (uri == null || uri.trim().length() == 0) {
                    return null;
                }
                return URI.createURI(part.getIconURI());
            }
        };

        final Button b = new Button(parent, SWT.PUSH | SWT.FLAT);
        b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, false, false));
        b.setImage(createImage(ResourceProvider.IMG_Obj16_zoom));
        b.setText(Messages.ModelTooling_Common_FindEllipsis);
        b.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                AreaIconDialogEditor dialog = new AreaIconDialogEditor(b.getShell(), eclipseContext, project,
                        getEditingDomain(), (MApplicationElement) getMaster().getValue(), Messages);
                dialog.open();
            }
        });
    }

    // ------------------------------------------------------------
    {
        Label l = new Label(parent, SWT.NONE);
        l.setText(Messages.AreaEditor_Orientation);
        l.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));

        ComboViewer viewer = new ComboViewer(parent);
        GridData gd = new GridData(GridData.FILL_HORIZONTAL);
        gd.horizontalSpan = 2;
        viewer.getControl().setLayoutData(gd);
        viewer.setContentProvider(new ArrayContentProvider());
        viewer.setLabelProvider(new LabelProvider() {
            @Override
            public String getText(Object element) {
                return ((Boolean) element).booleanValue() ? Messages.AreaEditor_Horizontal
                        : Messages.AreaEditor_Vertical;
            }
        });
        viewer.setInput(new Boolean[] { Boolean.TRUE, Boolean.FALSE });
        IViewerValueProperty vProp = ViewerProperties.singleSelection();
        context.bindValue(vProp.observe(viewer),
                EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.GENERIC_TILE__HORIZONTAL)
                        .observeDetail(getMaster()));
    }

    ControlFactory.createSelectedElement(parent, this, context, Messages.AreaEditor_SelectedElement);
    ControlFactory.createTextField(parent, Messages.AreaEditor_ContainerData, getMaster(), context, textProp,
            EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_ELEMENT__CONTAINER_DATA));

    {
        Label l = new Label(parent, SWT.NONE);
        l.setText(Messages.AreaEditor_Controls);
        l.setLayoutData(new GridData(GridData.END, GridData.BEGINNING, false, false));

        final TableViewer viewer = new TableViewer(parent);
        GridData gd = new GridData(GridData.FILL_BOTH);
        viewer.getControl().setLayoutData(gd);
        ObservableListContentProvider cp = new ObservableListContentProvider();
        viewer.setContentProvider(cp);
        viewer.setLabelProvider(new ComponentLabelProvider(getEditor(), Messages));

        IEMFListProperty prop = EMFProperties.list(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN);
        viewer.setInput(prop.observeDetail(getMaster()));

        Composite buttonComp = new Composite(parent, SWT.NONE);
        buttonComp.setLayoutData(new GridData(GridData.FILL, GridData.END, false, false));
        GridLayout gl = new GridLayout(2, false);
        gl.marginLeft = 0;
        gl.marginRight = 0;
        gl.marginWidth = 0;
        gl.marginHeight = 0;
        buttonComp.setLayout(gl);

        Button b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
        b.setText(Messages.ModelTooling_Common_Up);
        b.setImage(createImage(ResourceProvider.IMG_Obj16_arrow_up));
        b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 2, 1));
        b.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                if (!viewer.getSelection().isEmpty()) {
                    IStructuredSelection s = (IStructuredSelection) viewer.getSelection();
                    if (s.size() == 1) {
                        Object obj = s.getFirstElement();
                        MElementContainer<?> container = (MElementContainer<?>) getMaster().getValue();
                        int idx = container.getChildren().indexOf(obj) - 1;
                        if (idx >= 0) {
                            if (Util.moveElementByIndex(getEditingDomain(), (MUIElement) obj,
                                    getEditor().isLiveModel(), idx)) {
                                viewer.setSelection(new StructuredSelection(obj));
                            }
                        }

                    }
                }
            }
        });

        b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
        b.setText(Messages.ModelTooling_Common_Down);
        b.setImage(createImage(ResourceProvider.IMG_Obj16_arrow_down));
        b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 2, 1));
        b.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                if (!viewer.getSelection().isEmpty()) {
                    IStructuredSelection s = (IStructuredSelection) viewer.getSelection();
                    if (s.size() == 1) {
                        Object obj = s.getFirstElement();
                        MElementContainer<?> container = (MElementContainer<?>) getMaster().getValue();
                        int idx = container.getChildren().indexOf(obj) + 1;
                        if (idx < container.getChildren().size()) {
                            if (Util.moveElementByIndex(getEditingDomain(), (MUIElement) obj,
                                    getEditor().isLiveModel(), idx)) {
                                viewer.setSelection(new StructuredSelection(obj));
                            }
                        }

                    }
                }
            }
        });

        final ComboViewer childrenDropDown = new ComboViewer(buttonComp);
        childrenDropDown.getControl().setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
        childrenDropDown.setContentProvider(new ArrayContentProvider());
        childrenDropDown.setLabelProvider(new LabelProvider() {
            @Override
            public String getText(Object element) {
                EClass eclass = (EClass) element;
                return eclass.getName();
            }
        });
        childrenDropDown.setInput(new EClass[] { BasicPackageImpl.Literals.PART_SASH_CONTAINER,
                BasicPackageImpl.Literals.PART_STACK, BasicPackageImpl.Literals.PART,
                BasicPackageImpl.Literals.INPUT_PART, AdvancedPackageImpl.Literals.AREA,
                AdvancedPackageImpl.Literals.PLACEHOLDER });
        childrenDropDown.setSelection(new StructuredSelection(BasicPackageImpl.Literals.PART_SASH_CONTAINER));

        b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
        b.setImage(createImage(ResourceProvider.IMG_Obj16_table_add));
        b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, false, false));
        b.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                if (!childrenDropDown.getSelection().isEmpty()) {
                    EClass eClass = (EClass) ((IStructuredSelection) childrenDropDown.getSelection())
                            .getFirstElement();
                    handleAddChild(eClass);
                }
            }
        });

        b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
        b.setText(Messages.ModelTooling_Common_Remove);
        b.setImage(createImage(ResourceProvider.IMG_Obj16_table_delete));
        b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 2, 1));
        b.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                if (!viewer.getSelection().isEmpty()) {
                    List<?> elements = ((IStructuredSelection) viewer.getSelection()).toList();

                    Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(),
                            UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, elements);
                    if (cmd.canExecute()) {
                        getEditingDomain().getCommandStack().execute(cmd);
                    }
                }
            }
        });
    }

    ControlFactory.createCheckBox(parent, Messages.ModelTooling_UIElement_ToBeRendered, getMaster(), context,
            WidgetProperties.selection(),
            EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_ELEMENT__TO_BE_RENDERED));
    ControlFactory.createCheckBox(parent, Messages.ModelTooling_UIElement_Visible, getMaster(), context,
            WidgetProperties.selection(),
            EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_ELEMENT__VISIBLE));

    item = new CTabItem(folder, SWT.NONE);
    item.setText(Messages.ModelTooling_Common_TabSupplementary);

    parent = createScrollableContainer(folder);
    item.setControl(parent.getParent());

    ControlFactory.createTextField(parent, Messages.ModelTooling_UIElement_AccessibilityPhrase, getMaster(),
            context, textProp, EMFEditProperties.value(getEditingDomain(),
                    UiPackageImpl.Literals.UI_ELEMENT__ACCESSIBILITY_PHRASE));
    ControlFactory.createStringListWidget(parent, Messages, this, Messages.ModelTooling_ApplicationElement_Tags,
            ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__TAGS, VERTICAL_LIST_WIDGET_INDENT);
    ControlFactory.createMapProperties(parent, Messages, this,
            Messages.ModelTooling_Contribution_PersistedState,
            ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__PERSISTED_STATE, VERTICAL_LIST_WIDGET_INDENT);

    if (project == null) {
        createUITreeInspection(folder);
    }

    createContributedEditorTabs(folder, context, getMaster(), MArea.class);

    folder.setSelection(0);

    return folder;
}

From source file:org.eclipse.e4.tools.emf.ui.internal.common.component.ControlFactory.java

License:Open Source License

public static void createSelectedElement(Composite parent, final AbstractComponentEditor editor,
        final EMFDataBindingContext context, String label) {
    Label l = new Label(parent, SWT.NONE);
    l.setText(label);/*w  w w.  j  a  v a 2s .c  o m*/
    l.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));

    ComboViewer viewer = new ComboViewer(parent);
    GridData gd = new GridData(GridData.FILL_HORIZONTAL);
    gd.horizontalSpan = 2;
    viewer.getControl().setLayoutData(gd);
    IEMFEditListProperty listProp = EMFEditProperties.list(editor.getEditingDomain(),
            UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN);
    IEMFEditValueProperty labelProp = EMFEditProperties.value(editor.getEditingDomain(),
            UiPackageImpl.Literals.UI_LABEL__LABEL);
    IEMFEditValueProperty idProp = EMFEditProperties.value(editor.getEditingDomain(),
            ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID);

    IViewerValueProperty vProp = ViewerProperties.singleSelection();

    final Binding[] binding = new Binding[1];
    final IObservableValue uiObs = vProp.observe(viewer);
    final IObservableValue mObs = EMFEditProperties
            .value(editor.getEditingDomain(), UiPackageImpl.Literals.ELEMENT_CONTAINER__SELECTED_ELEMENT)
            .observeDetail(editor.getMaster());
    editor.getMaster().addValueChangeListener(new IValueChangeListener() {

        @Override
        public void handleValueChange(ValueChangeEvent event) {
            if (binding[0] != null) {
                binding[0].dispose();
            }

        }
    });

    final IObservableList list = listProp.observeDetail(editor.getMaster());
    ObservableListContentProvider cp = new ObservableListContentProvider();
    viewer.setContentProvider(cp);
    IObservableMap[] attributeMaps = { labelProp.observeDetail(cp.getKnownElements()),
            idProp.observeDetail(cp.getKnownElements()) };
    viewer.setLabelProvider(new ObservableMapLabelProvider(attributeMaps) {
        @Override
        public String getText(Object element) {
            EObject o = (EObject) element;
            String rv = o.eClass().getName();

            if (element instanceof MUILabel) {
                MUILabel label = (MUILabel) element;
                if (!Util.isNullOrEmpty(label.getLabel())) {
                    return rv + " - " + label.getLabel().trim(); //$NON-NLS-1$
                }

            }

            if (element instanceof MApplicationElement) {
                MApplicationElement appEl = (MApplicationElement) element;
                if (!Util.isNullOrEmpty(appEl.getElementId())) {
                    return rv + " - " + appEl.getElementId(); //$NON-NLS-1$
                }
            }

            return rv + "[" + list.indexOf(element) + "]"; //$NON-NLS-1$//$NON-NLS-2$
        }
    });
    viewer.setInput(list);

    editor.getMaster().addValueChangeListener(new IValueChangeListener() {

        @Override
        public void handleValueChange(ValueChangeEvent event) {
            binding[0] = context.bindValue(uiObs, mObs);
        }
    });
}

From source file:org.eclipse.e4.tools.emf.ui.internal.common.component.MenuEditor.java

License:Open Source License

protected Composite createForm(Composite parent, EMFDataBindingContext context, WritableValue master,
        boolean rootMenu, boolean isImport) {
    CTabFolder folder = new CTabFolder(parent, SWT.BOTTOM);

    CTabItem item = new CTabItem(folder, SWT.NONE);
    item.setText(Messages.ModelTooling_Common_TabDefault);

    parent = createScrollableContainer(folder);
    item.setControl(parent.getParent());

    if (getEditor().isShowXMIId() || getEditor().isLiveModel()) {
        ControlFactory.createXMIId(parent, this);
    }// w  w  w  . j  a  v  a 2  s . co m

    IWidgetValueProperty textProp = WidgetProperties.text(SWT.Modify);

    if (isImport) {
        ControlFactory.createFindImport(parent, Messages, this, context);
        folder.setSelection(0);
        return folder;
    }

    ControlFactory.createTextField(parent, Messages.ModelTooling_Common_Id, master, context, textProp,
            EMFEditProperties.value(getEditingDomain(),
                    ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID));

    // ------------------------------------------------------------
    if (!rootMenu) {
        ControlFactory.createTranslatedTextField(parent, Messages.MenuEditor_LabelLabel, master, context,
                textProp, EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__LABEL),
                resourcePool, project);
    }

    ControlFactory.createTextField(parent, Messages.MenuEditor_Mnemonics, master, context, textProp,
            EMFEditProperties.value(getEditingDomain(), MenuPackageImpl.Literals.MENU_ELEMENT__MNEMONICS));

    {
        Label l = new Label(parent, SWT.NONE);
        l.setText(Messages.MenuEditor_Children);
        l.setLayoutData(new GridData(GridData.END, GridData.BEGINNING, false, false));

        Composite buttonComp = new Composite(parent, SWT.NONE);
        GridData span2 = new GridData(GridData.FILL, GridData.BEGINNING, false, false, 2, 1);
        buttonComp.setLayoutData(span2);
        GridLayout gl = new GridLayout(2, false);
        gl.marginLeft = 0;
        gl.marginRight = 0;
        gl.marginWidth = 0;
        gl.marginHeight = 0;
        buttonComp.setLayout(gl);

        final ComboViewer childrenDropDown = new ComboViewer(buttonComp);
        childrenDropDown.getControl().setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
        childrenDropDown.setContentProvider(new ArrayContentProvider());
        childrenDropDown.setLabelProvider(new LabelProvider() {
            @Override
            public String getText(Object element) {
                Struct struct = (Struct) element;
                return struct.label;
            }
        });

        Struct defaultStruct = new Struct(Messages.MenuEditor_HandledMenuItem,
                MenuPackageImpl.Literals.HANDLED_MENU_ITEM, false);
        childrenDropDown.setInput(new Struct[] {
                new Struct(Messages.MenuEditor_Separator, MenuPackageImpl.Literals.MENU_SEPARATOR, true),
                new Struct(Messages.MenuEditor_Menu, MenuPackageImpl.Literals.MENU, false), defaultStruct,
                new Struct(Messages.MenuEditor_DirectMenuItem, MenuPackageImpl.Literals.DIRECT_MENU_ITEM,
                        false),
                new Struct(Messages.MenuEditor_DynamicMenuContribution,
                        MenuPackageImpl.Literals.DYNAMIC_MENU_CONTRIBUTION, false) });
        childrenDropDown.setSelection(new StructuredSelection(defaultStruct));

        Button b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
        b.setText(Messages.ModelTooling_Common_AddEllipsis);
        b.setImage(createImage(ResourceProvider.IMG_Obj16_table_add));
        b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, false, false));
        b.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                if (!childrenDropDown.getSelection().isEmpty()) {
                    Struct struct = (Struct) ((IStructuredSelection) childrenDropDown.getSelection())
                            .getFirstElement();
                    EClass eClass = struct.eClass;
                    handleAdd(eClass, struct.separator);
                }
            }
        });

        new Label(parent, SWT.None);

        final TableViewer viewer = new TableViewer(parent);
        ObservableListContentProvider cp = new ObservableListContentProvider();
        viewer.setContentProvider(cp);

        GridData gd = new GridData(GridData.FILL, GridData.FILL, true, true, 2, 1);
        viewer.getControl().setLayoutData(gd);
        viewer.setLabelProvider(new ComponentLabelProvider(getEditor(), Messages));

        IEMFListProperty prop = EMFEditProperties.list(getEditingDomain(),
                UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN);
        viewer.setInput(prop.observeDetail(master));

        new Label(parent, SWT.None);

        Composite buttonComp2 = new Composite(parent, SWT.NONE);
        buttonComp2.setLayoutData(span2);
        buttonComp2.setLayout(new FillLayout());

        b = new Button(buttonComp2, SWT.PUSH | SWT.FLAT);
        b.setText(Messages.ModelTooling_Common_Up);
        b.setImage(createImage(ResourceProvider.IMG_Obj16_arrow_up));
        b.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                if (!viewer.getSelection().isEmpty()) {
                    IStructuredSelection s = (IStructuredSelection) viewer.getSelection();
                    if (s.size() == 1) {
                        Object obj = s.getFirstElement();
                        MElementContainer<?> container = (MElementContainer<?>) getMaster().getValue();
                        int idx = container.getChildren().indexOf(obj) - 1;
                        if (idx >= 0) {
                            if (Util.moveElementByIndex(getEditingDomain(), (MUIElement) obj,
                                    getEditor().isLiveModel(), idx)) {
                                viewer.setSelection(new StructuredSelection(obj));
                            }
                        }

                    }
                }
            }
        });

        b = new Button(buttonComp2, SWT.PUSH | SWT.FLAT);
        b.setText(Messages.ModelTooling_Common_Down);
        b.setImage(createImage(ResourceProvider.IMG_Obj16_arrow_down));
        b.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                if (!viewer.getSelection().isEmpty()) {
                    IStructuredSelection s = (IStructuredSelection) viewer.getSelection();
                    if (s.size() == 1) {
                        Object obj = s.getFirstElement();
                        MElementContainer<?> container = (MElementContainer<?>) getMaster().getValue();
                        int idx = container.getChildren().indexOf(obj) + 1;
                        if (idx < container.getChildren().size()) {
                            if (Util.moveElementByIndex(getEditingDomain(), (MUIElement) obj,
                                    getEditor().isLiveModel(), idx)) {
                                viewer.setSelection(new StructuredSelection(obj));
                            }
                        }

                    }
                }
            }
        });

        b = new Button(buttonComp2, SWT.PUSH | SWT.FLAT);
        b.setText(Messages.ModelTooling_Common_Remove);
        b.setImage(createImage(ResourceProvider.IMG_Obj16_table_delete));
        b.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                if (!viewer.getSelection().isEmpty()) {
                    List<?> keybinding = ((IStructuredSelection) viewer.getSelection()).toList();
                    Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(),
                            UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, keybinding);
                    if (cmd.canExecute()) {
                        getEditingDomain().getCommandStack().execute(cmd);
                    }
                }
            }
        });
    }

    // ------------------------------------------------------------
    if (!rootMenu) {
        ControlFactory.createTranslatedTextField(parent, Messages.MenuEditor_Tooltip, master, context, textProp,
                EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__TOOLTIP),
                resourcePool, project);
    }

    // ------------------------------------------------------------
    if (!rootMenu) {
        Label l = new Label(parent, SWT.NONE);
        l.setText(Messages.MenuEditor_IconURI);
        l.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));

        Text t = new Text(parent, SWT.BORDER);
        TextPasteHandler.createFor(t);
        t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
        context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties
                .value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__ICON_URI).observeDetail(master));

        new ImageTooltip(t, Messages) {

            @Override
            protected URI getImageURI() {
                MUILabel part = (MUILabel) getMaster().getValue();
                String uri = part.getIconURI();
                if (uri == null || uri.trim().length() == 0) {
                    return null;
                }
                return URI.createURI(part.getIconURI());
            }
        };

        final Button b = new Button(parent, SWT.PUSH | SWT.FLAT);
        b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, false, false));
        b.setImage(createImage(ResourceProvider.IMG_Obj16_zoom));
        b.setText(Messages.ModelTooling_Common_FindEllipsis);
        b.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                MenuIconDialogEditor dialog = new MenuIconDialogEditor(b.getShell(), eclipseContext, project,
                        getEditingDomain(), (MMenu) getMaster().getValue(), Messages);
                dialog.open();
            }
        });
    }

    {
        Label l = new Label(parent, SWT.NONE);
        l.setText(Messages.ModelTooling_UIElement_VisibleWhen);
        l.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));

        ComboViewer combo = new ComboViewer(parent);
        combo.getControl().setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 2, 1));
        combo.setContentProvider(new ArrayContentProvider());
        combo.setLabelProvider(new LabelProvider() {
            @Override
            public String getText(Object element) {
                if (element instanceof EClass) {
                    EClass eClass = (EClass) element;
                    return eClass.getName();
                }

                return super.getText(element);
            }
        });
        List<Object> list = new ArrayList<Object>();
        list.add(Messages.MenuItemEditor_NoExpression);
        list.add(UiPackageImpl.Literals.CORE_EXPRESSION);
        list.addAll(getEditor().getFeatureClasses(UiPackageImpl.Literals.EXPRESSION,
                UiPackageImpl.Literals.UI_ELEMENT__VISIBLE_WHEN));
        combo.setInput(list);
        context.bindValue(ViewerProperties.singleSelection().observe(combo),
                EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_ELEMENT__VISIBLE_WHEN)
                        .observeDetail(getMaster()),
                new UpdateValueStrategy().setConverter(new EClass2EObject(Messages)),
                new UpdateValueStrategy().setConverter(new EObject2EClass(Messages)));
    }

    ControlFactory.createCheckBox(parent, Messages.ModelTooling_UIElement_ToBeRendered, getMaster(), context,
            WidgetProperties.selection(),
            EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_ELEMENT__TO_BE_RENDERED));
    ControlFactory.createCheckBox(parent, Messages.ModelTooling_UIElement_Visible, getMaster(), context,
            WidgetProperties.selection(),
            EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_ELEMENT__VISIBLE));

    item = new CTabItem(folder, SWT.NONE);
    item.setText(Messages.ModelTooling_Common_TabSupplementary);

    parent = createScrollableContainer(folder);
    item.setControl(parent.getParent());

    ControlFactory.createTextField(parent, Messages.ModelTooling_UIElement_AccessibilityPhrase, getMaster(),
            context, textProp, EMFEditProperties.value(getEditingDomain(),
                    UiPackageImpl.Literals.UI_ELEMENT__ACCESSIBILITY_PHRASE));
    ControlFactory.createStringListWidget(parent, Messages, this, Messages.CategoryEditor_Tags,
            ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__TAGS, VERTICAL_LIST_WIDGET_INDENT);
    ControlFactory.createMapProperties(parent, Messages, this,
            Messages.ModelTooling_Contribution_PersistedState,
            ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__PERSISTED_STATE, VERTICAL_LIST_WIDGET_INDENT);

    if (project == null) {
        createUITreeInspection(folder);
    }

    createContributedEditorTabs(folder, context, getMaster(), MMenu.class);

    folder.setSelection(0);

    return folder;
}

From source file:org.eclipse.e4.tools.emf.ui.internal.common.component.MenuItemEditor.java

License:Open Source License

protected CTabFolder createForm(Composite parent, EMFDataBindingContext context, WritableValue master,
        boolean isImport) {
    CTabFolder folder = new CTabFolder(parent, SWT.BOTTOM);

    CTabItem item = new CTabItem(folder, SWT.NONE);
    item.setText(Messages.ModelTooling_Common_TabDefault);

    parent = createScrollableContainer(folder);
    item.setControl(parent.getParent());

    IWidgetValueProperty textProp = WidgetProperties.text(SWT.Modify);
    IWidgetValueProperty checkProp = WidgetProperties.selection();
    IWidgetValueProperty enabled = WidgetProperties.enabled();

    if (getEditor().isShowXMIId() || getEditor().isLiveModel()) {
        ControlFactory.createXMIId(parent, this);
    }//from   www . j av a2 s .  c om

    if (isImport) {
        ControlFactory.createFindImport(parent, Messages, this, context);
        folder.setSelection(0);
        return folder;
    }

    ControlFactory.createTextField(parent, Messages.ModelTooling_Common_Id, master, context, textProp,
            EMFEditProperties.value(getEditingDomain(),
                    ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID));

    if (this.getClass() != MenuItemEditor.class) {
        // ------------------------------------------------------------
        {
            Label l = new Label(parent, SWT.NONE);
            l.setText(Messages.MenuItemEditor_Type);
            l.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));

            ComboViewer viewer = new ComboViewer(parent);
            viewer.setContentProvider(new ArrayContentProvider());
            viewer.setInput(new ItemType[] { ItemType.CHECK, ItemType.PUSH, ItemType.RADIO });
            GridData gd = new GridData();
            gd.horizontalSpan = 2;
            viewer.getControl().setLayoutData(gd);
            IObservableValue itemTypeObs = EMFEditProperties
                    .value(getEditingDomain(), MenuPackageImpl.Literals.ITEM__TYPE).observeDetail(master);
            context.bindValue(ViewerProperties.singleSelection().observe(viewer), itemTypeObs);
        }
    }

    ControlFactory.createTranslatedTextField(parent, Messages.MenuItemEditor_Label, master, context, textProp,
            EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__LABEL), resourcePool,
            project);
    ControlFactory.createTextField(parent, Messages.MenuItemEditor_Mnemonics, getMaster(), context, textProp,
            EMFEditProperties.value(getEditingDomain(), MenuPackageImpl.Literals.MENU_ELEMENT__MNEMONICS));
    ControlFactory.createTranslatedTextField(parent, Messages.MenuItemEditor_Tooltip, master, context, textProp,
            EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__TOOLTIP), resourcePool,
            project);

    // ------------------------------------------------------------
    {
        Label l = new Label(parent, SWT.NONE);
        l.setText(Messages.MenuItemEditor_IconURI);
        l.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));

        Text t = new Text(parent, SWT.BORDER);
        TextPasteHandler.createFor(t);
        t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
        context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties
                .value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__ICON_URI).observeDetail(master));

        new ImageTooltip(t, Messages) {

            @Override
            protected URI getImageURI() {
                MUILabel part = (MUILabel) getMaster().getValue();
                String uri = part.getIconURI();
                if (uri == null || uri.trim().length() == 0) {
                    return null;
                }
                return URI.createURI(part.getIconURI());
            }
        };

        final Button b = new Button(parent, SWT.PUSH | SWT.FLAT);
        b.setImage(createImage(ResourceProvider.IMG_Obj16_zoom));
        b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, false, false));
        b.setText(Messages.ModelTooling_Common_FindEllipsis);
        b.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                MenuItemIconDialogEditor dialog = new MenuItemIconDialogEditor(b.getShell(), eclipseContext,
                        project, getEditingDomain(), (MMenuItem) getMaster().getValue(), Messages);
                dialog.open();
            }
        });
    }

    {
        Label l = new Label(parent, SWT.NONE);
        l.setText(Messages.MenuItemEditor_Enabled);
        l.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));

        Button b = new Button(parent, SWT.CHECK);
        b.setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, false, false, 2, 1));
        context.bindValue(checkProp.observe(b), EMFEditProperties
                .value(getEditingDomain(), MenuPackageImpl.Literals.ITEM__ENABLED).observeDetail(getMaster()));
    }

    {
        Label l = new Label(parent, SWT.NONE);
        l.setText(Messages.MenuItemEditor_Selected);
        l.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));

        Button b = new Button(parent, SWT.CHECK);
        b.setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, false, false, 2, 1));
        context.bindValue(checkProp.observe(b), EMFEditProperties
                .value(getEditingDomain(), MenuPackageImpl.Literals.ITEM__SELECTED).observeDetail(getMaster()));

        UpdateValueStrategy t2m = new UpdateValueStrategy();
        t2m.setConverter(new Converter(boolean.class, ItemType.class) {

            @Override
            public Object convert(Object fromObject) {
                return null;
            }
        });
        UpdateValueStrategy m2t = new UpdateValueStrategy();
        m2t.setConverter(new Converter(ItemType.class, boolean.class) {

            @Override
            public Object convert(Object fromObject) {
                return fromObject == ItemType.CHECK || fromObject == ItemType.RADIO;
            }
        });

        context.bindValue(enabled.observe(b), EMFEditProperties
                .value(getEditingDomain(), MenuPackageImpl.Literals.ITEM__TYPE).observeDetail(getMaster()), t2m,
                m2t);

    }

    {
        Label l = new Label(parent, SWT.NONE);
        l.setText(Messages.ModelTooling_UIElement_VisibleWhen);
        l.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));

        ComboViewer combo = new ComboViewer(parent);
        combo.getControl().setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 2, 1));
        combo.setContentProvider(new ArrayContentProvider());
        combo.setLabelProvider(new LabelProvider() {
            @Override
            public String getText(Object element) {
                if (element instanceof EClass) {
                    EClass eClass = (EClass) element;
                    return eClass.getName();
                }

                return super.getText(element);
            }
        });
        List<Object> list = new ArrayList<Object>();
        list.add(Messages.MenuItemEditor_NoExpression);
        list.add(UiPackageImpl.Literals.CORE_EXPRESSION);
        list.addAll(getEditor().getFeatureClasses(UiPackageImpl.Literals.EXPRESSION,
                UiPackageImpl.Literals.UI_ELEMENT__VISIBLE_WHEN));
        combo.setInput(list);
        context.bindValue(ViewerProperties.singleSelection().observe(combo),
                EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_ELEMENT__VISIBLE_WHEN)
                        .observeDetail(getMaster()),
                new UpdateValueStrategy().setConverter(new EClass2EObject(Messages)),
                new UpdateValueStrategy().setConverter(new EObject2EClass(Messages)));
    }

    createFormSubTypeForm(parent, context, master);

    ControlFactory.createCheckBox(parent, Messages.ModelTooling_UIElement_ToBeRendered, getMaster(), context,
            WidgetProperties.selection(),
            EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_ELEMENT__TO_BE_RENDERED));
    ControlFactory.createCheckBox(parent, Messages.ModelTooling_UIElement_Visible, getMaster(), context,
            WidgetProperties.selection(),
            EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_ELEMENT__VISIBLE));

    item = new CTabItem(folder, SWT.NONE);
    item.setText(Messages.ModelTooling_Common_TabSupplementary);

    parent = createScrollableContainer(folder);
    item.setControl(parent.getParent());

    ControlFactory.createTextField(parent, Messages.ModelTooling_UIElement_AccessibilityPhrase, getMaster(),
            context, textProp, EMFEditProperties.value(getEditingDomain(),
                    UiPackageImpl.Literals.UI_ELEMENT__ACCESSIBILITY_PHRASE));

    ControlFactory.createStringListWidget(parent, Messages, this, Messages.CategoryEditor_Tags,
            ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__TAGS, VERTICAL_LIST_WIDGET_INDENT);
    ControlFactory.createMapProperties(parent, Messages, this,
            Messages.ModelTooling_Contribution_PersistedState,
            ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__PERSISTED_STATE, VERTICAL_LIST_WIDGET_INDENT);

    if (project == null) {
        createUITreeInspection(folder);
    }

    createContributedEditorTabs(folder, context, getMaster(), MMenuItem.class);

    folder.setSelection(0);

    return folder;
}

From source file:org.eclipse.e4.tools.emf.ui.internal.common.component.PartSashContainerEditor.java

License:Open Source License

private Composite createForm(Composite parent, final EMFDataBindingContext context, WritableValue master,
        boolean isImport) {
    CTabFolder folder = new CTabFolder(parent, SWT.BOTTOM);

    CTabItem item = new CTabItem(folder, SWT.NONE);
    item.setText(Messages.ModelTooling_Common_TabDefault);

    parent = createScrollableContainer(folder);
    item.setControl(parent.getParent());

    if (getEditor().isShowXMIId() || getEditor().isLiveModel()) {
        ControlFactory.createXMIId(parent, this);
    }//w  w w.j  av a 2  s . c o m

    IWidgetValueProperty textProp = WidgetProperties.text(SWT.Modify);

    if (isImport) {
        ControlFactory.createFindImport(parent, Messages, this, context);
        folder.setSelection(0);
        return folder;
    }

    ControlFactory.createTextField(parent, Messages.ModelTooling_Common_Id, master, context, textProp,
            EMFEditProperties.value(getEditingDomain(),
                    ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID));
    ControlFactory.createTextField(parent, Messages.ModelTooling_UIElement_AccessibilityPhrase, getMaster(),
            context, textProp, EMFEditProperties.value(getEditingDomain(),
                    UiPackageImpl.Literals.UI_ELEMENT__ACCESSIBILITY_PHRASE));

    // ------------------------------------------------------------
    {
        Label l = new Label(parent, SWT.NONE);
        l.setText(Messages.PartSashContainerEditor_Orientation);
        l.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));

        ComboViewer viewer = new ComboViewer(parent);
        GridData gd = new GridData(GridData.FILL_HORIZONTAL);
        gd.horizontalSpan = 2;
        viewer.getControl().setLayoutData(gd);
        viewer.setContentProvider(new ArrayContentProvider());
        viewer.setLabelProvider(new LabelProvider() {
            @Override
            public String getText(Object element) {
                return ((Boolean) element).booleanValue() ? Messages.PartSashContainerEditor_Horizontal
                        : Messages.PartSashContainerEditor_Vertical;
            }
        });
        viewer.setInput(new Boolean[] { Boolean.TRUE, Boolean.FALSE });
        IViewerValueProperty vProp = ViewerProperties.singleSelection();
        context.bindValue(vProp.observe(viewer),
                EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.GENERIC_TILE__HORIZONTAL)
                        .observeDetail(getMaster()));
    }

    ControlFactory.createSelectedElement(parent, this, context,
            Messages.PartSashContainerEditor_SelectedElement);
    ControlFactory.createTextField(parent, Messages.PartSashContainerEditor_ContainerData, master, context,
            textProp,
            EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_ELEMENT__CONTAINER_DATA));

    {

        Label l = new Label(parent, SWT.NONE);
        l.setText(Messages.PartSashContainerEditor_Controls);
        l.setLayoutData(new GridData(GridData.END, GridData.BEGINNING, false, false));

        Composite buttonCompTop = new Composite(parent, SWT.NONE);
        GridData span2 = new GridData(GridData.FILL, GridData.BEGINNING, false, false, 2, 1);
        buttonCompTop.setLayoutData(span2);
        GridLayout gl = new GridLayout(2, false);
        gl.marginLeft = 0;
        gl.marginRight = 0;
        gl.marginWidth = 0;
        gl.marginHeight = 0;
        buttonCompTop.setLayout(gl);

        final ComboViewer childrenDropDown = new ComboViewer(buttonCompTop);
        childrenDropDown.getControl().setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
        childrenDropDown.setContentProvider(new ArrayContentProvider());
        childrenDropDown.setLabelProvider(new LabelProvider() {
            @Override
            public String getText(Object element) {
                FeatureClass eFeatureClass = (FeatureClass) element;
                return eFeatureClass.eClass.getName();
            }
        });
        List<FeatureClass> eClassList = new ArrayList<FeatureClass>();
        eClassList.add(new FeatureClass("PartSashContainer", BasicPackageImpl.Literals.PART_SASH_CONTAINER)); //$NON-NLS-1$
        eClassList.add(new FeatureClass("PartStack", BasicPackageImpl.Literals.PART_STACK)); //$NON-NLS-1$
        eClassList.add(new FeatureClass("Part", BasicPackageImpl.Literals.PART)); //$NON-NLS-1$
        eClassList.add(new FeatureClass("InputPart", BasicPackageImpl.Literals.INPUT_PART)); //$NON-NLS-1$
        eClassList.add(new FeatureClass("Area", AdvancedPackageImpl.Literals.AREA)); //$NON-NLS-1$
        eClassList.add(new FeatureClass("Placeholder", AdvancedPackageImpl.Literals.PLACEHOLDER)); //$NON-NLS-1$
        eClassList.addAll(getEditor().getFeatureClasses(BasicPackageImpl.Literals.PART_SASH_CONTAINER,
                UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN));
        childrenDropDown.setInput(eClassList);
        childrenDropDown.setSelection(new StructuredSelection(eClassList.get(0)));

        Button b = new Button(buttonCompTop, SWT.PUSH | SWT.FLAT);
        b.setText(Messages.ModelTooling_Common_AddEllipsis);
        b.setImage(createImage(ResourceProvider.IMG_Obj16_table_add));
        b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, false, false));
        b.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                if (!childrenDropDown.getSelection().isEmpty()) {
                    EClass eClass = ((FeatureClass) ((IStructuredSelection) childrenDropDown.getSelection())
                            .getFirstElement()).eClass;
                    handleAddChild(eClass);
                }
            }
        });

        new Label(parent, SWT.NONE);

        final TableViewer viewer = new TableViewer(parent);
        GridData gd = new GridData(GridData.FILL, GridData.FILL, true, true, 2, 1);
        viewer.getControl().setLayoutData(gd);
        ObservableListContentProvider cp = new ObservableListContentProvider();
        viewer.setContentProvider(cp);
        viewer.setLabelProvider(new ComponentLabelProvider(getEditor(), Messages));

        IEMFListProperty prop = EMFProperties.list(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN);
        viewer.setInput(prop.observeDetail(getMaster()));

        new Label(parent, SWT.NONE);

        Composite buttonCompBot = new Composite(parent, SWT.NONE);
        buttonCompBot.setLayoutData(new GridData(GridData.FILL, GridData.END, false, false, 2, 1));
        buttonCompBot.setLayout(new FillLayout());

        b = new Button(buttonCompBot, SWT.PUSH | SWT.FLAT);
        b.setText(Messages.ModelTooling_Common_Up);
        b.setImage(createImage(ResourceProvider.IMG_Obj16_arrow_up));
        b.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                if (!viewer.getSelection().isEmpty()) {
                    IStructuredSelection s = (IStructuredSelection) viewer.getSelection();
                    if (s.size() == 1) {
                        Object obj = s.getFirstElement();
                        MElementContainer<?> container = (MElementContainer<?>) getMaster().getValue();
                        int idx = container.getChildren().indexOf(obj) - 1;
                        if (idx >= 0) {
                            if (Util.moveElementByIndex(getEditingDomain(), (MUIElement) obj,
                                    getEditor().isLiveModel(), idx)) {
                                viewer.setSelection(new StructuredSelection(obj));
                            }
                        }

                    }
                }
            }
        });

        b = new Button(buttonCompBot, SWT.PUSH | SWT.FLAT);
        b.setText(Messages.ModelTooling_Common_Down);
        b.setImage(createImage(ResourceProvider.IMG_Obj16_arrow_down));
        b.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                if (!viewer.getSelection().isEmpty()) {
                    IStructuredSelection s = (IStructuredSelection) viewer.getSelection();
                    if (s.size() == 1) {
                        Object obj = s.getFirstElement();
                        MElementContainer<?> container = (MElementContainer<?>) getMaster().getValue();
                        int idx = container.getChildren().indexOf(obj) + 1;
                        if (idx < container.getChildren().size()) {
                            if (Util.moveElementByIndex(getEditingDomain(), (MUIElement) obj,
                                    getEditor().isLiveModel(), idx)) {
                                viewer.setSelection(new StructuredSelection(obj));
                            }
                        }

                    }
                }
            }
        });

        b = new Button(buttonCompBot, SWT.PUSH | SWT.FLAT);
        b.setText(Messages.ModelTooling_Common_Remove);
        b.setImage(createImage(ResourceProvider.IMG_Obj16_table_delete));
        b.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                if (!viewer.getSelection().isEmpty()) {
                    List<?> elements = ((IStructuredSelection) viewer.getSelection()).toList();

                    Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(),
                            UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, elements);
                    if (cmd.canExecute()) {
                        getEditingDomain().getCommandStack().execute(cmd);
                    }
                }
            }
        });
    }

    ControlFactory.createCheckBox(parent, Messages.ModelTooling_UIElement_ToBeRendered, getMaster(), context,
            WidgetProperties.selection(),
            EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_ELEMENT__TO_BE_RENDERED));
    ControlFactory.createCheckBox(parent, Messages.ModelTooling_UIElement_Visible, getMaster(), context,
            WidgetProperties.selection(),
            EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_ELEMENT__VISIBLE));

    item = new CTabItem(folder, SWT.NONE);
    item.setText(Messages.ModelTooling_Common_TabSupplementary);

    parent = createScrollableContainer(folder);
    item.setControl(parent.getParent());

    ControlFactory.createStringListWidget(parent, Messages, this, Messages.CategoryEditor_Tags,
            ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__TAGS, VERTICAL_LIST_WIDGET_INDENT);
    ControlFactory.createMapProperties(parent, Messages, this,
            Messages.ModelTooling_Contribution_PersistedState,
            ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__PERSISTED_STATE, VERTICAL_LIST_WIDGET_INDENT);

    if (project == null) {
        createUITreeInspection(folder);
    }

    createContributedEditorTabs(folder, context, getMaster(), MPartSashContainer.class);

    item = new CTabItem(folder, SWT.NONE);
    item.setText("Bla Bla");

    item.setControl(createPreviewTab(folder));

    folder.setSelection(0);

    return folder;
}

From source file:org.eclipse.e4.tools.emf.ui.internal.common.component.ToolItemEditor.java

License:Open Source License

protected void createFormSubTypeForm(Composite parent, CTabFolder folder, EMFDataBindingContext context,
        final WritableValue master) {
    IWidgetValueProperty textProp = WidgetProperties.text(SWT.Modify);
    IWidgetValueProperty checkProp = WidgetProperties.selection();
    IWidgetValueProperty enabled = WidgetProperties.enabled();

    // ------------------------------------------------------------
    {/*from   w  w w . ja v  a 2  s .c o  m*/
        Label l = new Label(parent, SWT.NONE);
        l.setText(Messages.ToolItemEditor_Type);
        l.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));

        ComboViewer viewer = new ComboViewer(parent);
        viewer.setContentProvider(new ArrayContentProvider());
        viewer.setInput(new ItemType[] { ItemType.CHECK, ItemType.PUSH, ItemType.RADIO });
        GridData gd = new GridData();
        gd.horizontalSpan = 2;
        viewer.getControl().setLayoutData(gd);
        IObservableValue itemTypeObs = EMFEditProperties
                .value(getEditingDomain(), MenuPackageImpl.Literals.ITEM__TYPE).observeDetail(master);
        context.bindValue(ViewerProperties.singleSelection().observe(viewer), itemTypeObs);
    }

    ControlFactory.createTextField(parent, Messages.ToolItemEditor_Label, master, context, textProp,
            EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__LABEL));
    ControlFactory.createTextField(parent, Messages.ModelTooling_UIElement_AccessibilityPhrase, getMaster(),
            context, textProp, EMFEditProperties.value(getEditingDomain(),
                    UiPackageImpl.Literals.UI_ELEMENT__ACCESSIBILITY_PHRASE));
    ControlFactory.createTextField(parent, Messages.ToolItemEditor_ToolTip, master, context, textProp,
            EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__TOOLTIP));

    // ------------------------------------------------------------
    {
        Label l = new Label(parent, SWT.NONE);
        l.setText(Messages.ToolItemEditor_IconURI);
        l.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));

        Text t = new Text(parent, SWT.BORDER);
        TextPasteHandler.createFor(t);
        t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
        context.bindValue(textProp.observe(t), EMFEditProperties
                .value(getEditingDomain(), UiPackageImpl.Literals.UI_LABEL__ICON_URI).observeDetail(master));

        new ImageTooltip(t, Messages) {

            @Override
            protected URI getImageURI() {
                MUILabel part = (MUILabel) getMaster().getValue();
                String uri = part.getIconURI();
                if (uri == null || uri.trim().length() == 0) {
                    return null;
                }
                return URI.createURI(part.getIconURI());
            }
        };

        final Button b = new Button(parent, SWT.PUSH | SWT.FLAT);
        b.setText(Messages.ModelTooling_Common_FindEllipsis);
        b.setImage(createImage(ResourceProvider.IMG_Obj16_zoom));
        b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, false, false));
        b.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                ToolItemIconDialogEditor dialog = new ToolItemIconDialogEditor(b.getShell(), eclipseContext,
                        project, getEditingDomain(), (MToolItem) getMaster().getValue(), Messages);
                dialog.open();
            }
        });
    }

    {
        Label l = new Label(parent, SWT.NONE);
        l.setText(Messages.ToolItemEditor_Menu);
        l.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));

        createRemoveMenu = new Button(parent, SWT.CHECK);
        createRemoveMenu.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                MToolItem item = (MToolItem) getMaster().getValue();
                if (item.getMenu() == null) {
                    addMenu();
                } else {
                    removeMenu();
                }
            }
        });
        createRemoveMenu.setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, false, false, 2, 1));
    }

    {
        Label l = new Label(parent, SWT.NONE);
        l.setText(Messages.ToolItemEditor_Enabled);
        l.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));

        Button b = new Button(parent, SWT.CHECK);
        b.setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, false, false, 2, 1));
        context.bindValue(checkProp.observe(b), EMFEditProperties
                .value(getEditingDomain(), MenuPackageImpl.Literals.ITEM__ENABLED).observeDetail(getMaster()));
    }

    {
        Label l = new Label(parent, SWT.NONE);
        l.setText(Messages.ToolItemEditor_Selected);
        l.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));

        Button b = new Button(parent, SWT.CHECK);
        b.setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, false, false, 2, 1));
        context.bindValue(checkProp.observe(b), EMFEditProperties
                .value(getEditingDomain(), MenuPackageImpl.Literals.ITEM__SELECTED).observeDetail(getMaster()));

        UpdateValueStrategy t2m = new UpdateValueStrategy();
        t2m.setConverter(new Converter(boolean.class, ItemType.class) {

            @Override
            public Object convert(Object fromObject) {
                return null;
            }
        });
        UpdateValueStrategy m2t = new UpdateValueStrategy();
        m2t.setConverter(new Converter(ItemType.class, boolean.class) {

            @Override
            public Object convert(Object fromObject) {
                return fromObject == ItemType.CHECK || fromObject == ItemType.RADIO;
            }
        });

        context.bindValue(enabled.observe(b), EMFEditProperties
                .value(getEditingDomain(), MenuPackageImpl.Literals.ITEM__TYPE).observeDetail(getMaster()), t2m,
                m2t);

    }

    {
        Label l = new Label(parent, SWT.NONE);
        l.setText(Messages.ModelTooling_UIElement_VisibleWhen);
        l.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));

        ComboViewer combo = new ComboViewer(parent);
        combo.getControl().setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 2, 1));
        combo.setContentProvider(new ArrayContentProvider());
        combo.setLabelProvider(new LabelProvider() {
            @Override
            public String getText(Object element) {
                if (element instanceof EClass) {
                    EClass eClass = (EClass) element;
                    return eClass.getName();
                }

                return super.getText(element);
            }
        });
        List<Object> list = new ArrayList<Object>();
        list.add(Messages.ToolItemEditor_NoExpression);
        list.add(UiPackageImpl.Literals.CORE_EXPRESSION);
        list.addAll(getEditor().getFeatureClasses(UiPackageImpl.Literals.EXPRESSION,
                UiPackageImpl.Literals.UI_ELEMENT__VISIBLE_WHEN));
        combo.setInput(list);
        context.bindValue(ViewerProperties.singleSelection().observe(combo),
                EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_ELEMENT__VISIBLE_WHEN)
                        .observeDetail(getMaster()),
                new UpdateValueStrategy().setConverter(new EClass2EObject(Messages)),
                new UpdateValueStrategy().setConverter(new EObject2EClass(Messages)));
    }
    // ------------------------------------------------------------

    createSubTypeFormElements(parent, context, master);

    ControlFactory.createCheckBox(parent, Messages.ModelTooling_UIElement_ToBeRendered, getMaster(), context,
            WidgetProperties.selection(),
            EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_ELEMENT__TO_BE_RENDERED));
    ControlFactory.createCheckBox(parent, Messages.ModelTooling_UIElement_Visible, getMaster(), context,
            WidgetProperties.selection(),
            EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_ELEMENT__VISIBLE));

    CTabItem item = new CTabItem(folder, SWT.NONE);
    item.setText(Messages.ModelTooling_Common_TabSupplementary);

    parent = createScrollableContainer(folder);
    item.setControl(parent.getParent());

    ControlFactory.createStringListWidget(parent, Messages, this, Messages.ModelTooling_ApplicationElement_Tags,
            ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__TAGS, VERTICAL_LIST_WIDGET_INDENT);
    ControlFactory.createMapProperties(parent, Messages, this,
            Messages.ModelTooling_Contribution_PersistedState,
            ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__PERSISTED_STATE, VERTICAL_LIST_WIDGET_INDENT);
}

From source file:org.eclipse.e4.tools.emf.ui.internal.common.component.TrimBarEditor.java

License:Open Source License

private Composite createForm(Composite parent, EMFDataBindingContext context, WritableValue master,
        boolean isImport) {
    CTabFolder folder = new CTabFolder(parent, SWT.BOTTOM);

    CTabItem item = new CTabItem(folder, SWT.NONE);
    item.setText(Messages.ModelTooling_Common_TabDefault);

    parent = createScrollableContainer(folder);
    item.setControl(parent.getParent());

    if (getEditor().isShowXMIId() || getEditor().isLiveModel()) {
        ControlFactory.createXMIId(parent, this);
    }//from  w  w w .j av  a2s.co  m

    IWidgetValueProperty textProp = WidgetProperties.text(SWT.Modify);

    if (isImport) {
        ControlFactory.createFindImport(parent, Messages, this, context);
        folder.setSelection(0);
        return folder;
    }

    ControlFactory.createTextField(parent, Messages.ModelTooling_Common_Id, master, context, textProp,
            EMFEditProperties.value(getEditingDomain(),
                    ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID));
    ControlFactory.createTextField(parent, Messages.ModelTooling_UIElement_AccessibilityPhrase, getMaster(),
            context, textProp, EMFEditProperties.value(getEditingDomain(),
                    UiPackageImpl.Literals.UI_ELEMENT__ACCESSIBILITY_PHRASE));

    // ------------------------------------------------------------
    {
        Label l = new Label(parent, SWT.NONE);
        l.setText(Messages.TrimBarEditor_Side);
        l.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));

        ComboViewer viewer = new ComboViewer(parent);
        viewer.setContentProvider(new ArrayContentProvider());
        viewer.setInput(SideValue.values());
        GridData gd = new GridData();
        gd.horizontalSpan = 2;
        viewer.getControl().setLayoutData(gd);
        IObservableValue sideValueObs = EMFEditProperties
                .value(getEditingDomain(), UiPackageImpl.Literals.GENERIC_TRIM_CONTAINER__SIDE)
                .observeDetail(master);
        context.bindValue(ViewerProperties.singleSelection().observe(viewer), sideValueObs);
    }

    // ------------------------------------------------------------
    {
        Label l = new Label(parent, SWT.NONE);
        l.setText(Messages.TrimBarEditor_Controls);
        l.setLayoutData(new GridData(GridData.END, GridData.BEGINNING, false, false));

        Composite buttonCompTop = new Composite(parent, SWT.NONE);
        buttonCompTop.setLayoutData(new GridData(GridData.FILL, GridData.END, false, false, 2, 1));
        GridLayout gl = new GridLayout(2, false);
        gl.marginLeft = 0;
        gl.marginRight = 0;
        gl.marginWidth = 0;
        gl.marginHeight = 0;
        buttonCompTop.setLayout(gl);

        final ComboViewer typeViewer = new ComboViewer(buttonCompTop, SWT.READ_ONLY);
        typeViewer.setContentProvider(new ArrayContentProvider());
        typeViewer.setLabelProvider(new LabelProvider() {
            @Override
            public String getText(Object element) {
                return ((EClass) element).getName();
            }
        });
        typeViewer.setInput(
                new Object[] { MenuPackageImpl.Literals.TOOL_BAR, MenuPackageImpl.Literals.TOOL_CONTROL });
        typeViewer.setSelection(new StructuredSelection(MenuPackageImpl.Literals.TOOL_BAR));
        typeViewer.getControl().setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));

        Button b = new Button(buttonCompTop, SWT.PUSH | SWT.FLAT);
        b.setImage(createImage(ResourceProvider.IMG_Obj16_table_add));
        b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, false, false));
        b.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                EClass eClass = (EClass) ((IStructuredSelection) typeViewer.getSelection()).getFirstElement();
                handleAddChild(eClass);
            }
        });

        new Label(parent, SWT.NONE);

        final TableViewer viewer = new TableViewer(parent);
        viewer.setLabelProvider(new ComponentLabelProvider(editor, Messages));
        viewer.setContentProvider(new ObservableListContentProvider());
        GridData gd = new GridData(GridData.FILL, GridData.FILL, true, true, 2, 1);
        viewer.getControl().setLayoutData(gd);

        IEMFListProperty prop = EMFProperties.list(UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN);
        viewer.setInput(prop.observeDetail(getMaster()));

        new Label(parent, SWT.NONE);

        Composite buttonCompBot = new Composite(parent, SWT.NONE);
        buttonCompBot.setLayoutData(new GridData(GridData.FILL, GridData.END, false, false, 2, 1));
        buttonCompBot.setLayout(new FillLayout());

        b = new Button(buttonCompBot, SWT.PUSH | SWT.FLAT);
        b.setText(Messages.ModelTooling_Common_Up);
        b.setImage(createImage(ResourceProvider.IMG_Obj16_arrow_up));
        b.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                if (!viewer.getSelection().isEmpty()) {
                    IStructuredSelection s = (IStructuredSelection) viewer.getSelection();
                    if (s.size() == 1) {
                        Object obj = s.getFirstElement();
                        MElementContainer<?> container = (MElementContainer<?>) getMaster().getValue();
                        int idx = container.getChildren().indexOf(obj) - 1;
                        if (idx >= 0) {
                            if (Util.moveElementByIndex(getEditingDomain(), (MUIElement) obj,
                                    getEditor().isLiveModel(), idx)) {
                                viewer.setSelection(new StructuredSelection(obj));
                            }
                        }

                    }
                }
            }
        });

        b = new Button(buttonCompBot, SWT.PUSH | SWT.FLAT);
        b.setText(Messages.ModelTooling_Common_Down);
        b.setImage(createImage(ResourceProvider.IMG_Obj16_arrow_down));
        b.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                if (!viewer.getSelection().isEmpty()) {
                    IStructuredSelection s = (IStructuredSelection) viewer.getSelection();
                    if (s.size() == 1) {
                        Object obj = s.getFirstElement();
                        MElementContainer<?> container = (MElementContainer<?>) getMaster().getValue();
                        int idx = container.getChildren().indexOf(obj) + 1;
                        if (idx < container.getChildren().size()) {
                            if (Util.moveElementByIndex(getEditingDomain(), (MUIElement) obj,
                                    getEditor().isLiveModel(), idx)) {
                                viewer.setSelection(new StructuredSelection(obj));
                            }
                        }

                    }
                }
            }
        });

        b = new Button(buttonCompBot, SWT.PUSH | SWT.FLAT);
        b.setText(Messages.ModelTooling_Common_Remove);
        b.setImage(createImage(ResourceProvider.IMG_Obj16_table_delete));
        b.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                if (!viewer.getSelection().isEmpty()) {
                    List<?> elements = ((IStructuredSelection) viewer.getSelection()).toList();

                    Command cmd = RemoveCommand.create(getEditingDomain(), getMaster().getValue(),
                            UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, elements);
                    if (cmd.canExecute()) {
                        getEditingDomain().getCommandStack().execute(cmd);
                    }
                }
            }
        });
    }

    ControlFactory.createCheckBox(parent, Messages.ModelTooling_UIElement_ToBeRendered, getMaster(), context,
            WidgetProperties.selection(),
            EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_ELEMENT__TO_BE_RENDERED));
    ControlFactory.createCheckBox(parent, Messages.ModelTooling_UIElement_Visible, getMaster(), context,
            WidgetProperties.selection(),
            EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_ELEMENT__VISIBLE));

    item = new CTabItem(folder, SWT.NONE);
    item.setText(Messages.ModelTooling_Common_TabSupplementary);

    parent = createScrollableContainer(folder);
    item.setControl(parent.getParent());

    ControlFactory.createStringListWidget(parent, Messages, this, Messages.CategoryEditor_Tags,
            ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__TAGS, VERTICAL_LIST_WIDGET_INDENT);
    ControlFactory.createMapProperties(parent, Messages, this,
            Messages.ModelTooling_Contribution_PersistedState,
            ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__PERSISTED_STATE, VERTICAL_LIST_WIDGET_INDENT);

    if (project == null) {
        createUITreeInspection(folder);
    }

    createContributedEditorTabs(folder, context, getMaster(), MTrimBar.class);

    folder.setSelection(0);

    return folder;
}

From source file:org.eclipse.e4.xwt.databinding.JFaceXWTDataBinding.java

License:Open Source License

protected static IObservable observePropertyValue(Object object, String propertyName,
        UpdateSourceTrigger updateSourceTrigger) {
    if (object instanceof Viewer) {
        if ("input".equals(propertyName)) {
            Viewer viewer = (Viewer) object;
            SimpleValueProperty property = (SimpleValueProperty) ViewerProperties.input();
            IObservableValue observableValue = new SimplePropertyObservableValue(XWT.getRealm(), viewer,
                    property);//from  w w  w  . ja  v  a 2 s.co m
            return new TypedViewerObservableValueDecorator(observableValue, viewer);
        } else if ("singleSelection".equals(propertyName)) {
            Viewer viewer = (Viewer) object;
            SimpleValueProperty property = (SimpleValueProperty) ViewerProperties.singleSelection();
            IObservableValue observableValue = new SimplePropertyObservableValue(XWT.getRealm(), viewer,
                    property);
            return new TypedViewerObservableValueDecorator(observableValue, viewer);
        }
        return observePropertyValue((Viewer) object, propertyName, updateSourceTrigger);
    } else if (object instanceof MenuItem) {
        //
        // TODO https://bugs.eclipse.org/bugs/show_bug.cgi?id=280157
        // testcase:
        // org.eclipse.e4.xwt.tests.databinding.bindcontrol.BindMenuItem
        //
        if (ENABLED.equalsIgnoreCase(propertyName)) {
            return new MenuItemEnabledObservableValue((MenuItem) object);
        } else if (SELECTION.equalsIgnoreCase(propertyName)) {
            return new MenuItemSelectionObservableValue((MenuItem) object);
        }
    } else if (object instanceof Control) {
        return observePropertyValue((Control) object, propertyName, updateSourceTrigger);
    }
    return null;
}

From source file:org.eclipse.e4.xwt.tests.snipppets.Snippet026AnonymousBeanProperties.java

License:Open Source License

private void bindUI() {
    ISetProperty treeChildrenProperty = new DelegatingSetProperty() {
        ISetProperty modelGroups = BeanProperties.set(ApplicationModel.class, "groups");
        ISetProperty groupContacts = BeanProperties.set(ContactGroup.class, "contacts");

        protected ISetProperty doGetDelegate(Object source) {
            if (source instanceof ApplicationModel)
                return modelGroups;
            if (source instanceof ContactGroup)
                return groupContacts;
            return null;
        }//  w  ww . jav a  2  s .  com
    };

    ViewerSupport.bind(contactViewer, model, treeChildrenProperty,
            BeanProperties.values(new String[] { "name", "status" }));

    contactViewer.expandAll();

    final IObservableValue selection = ViewerProperties.singleSelection().observe(contactViewer);

    DataBindingContext dbc = new DataBindingContext();

    dbc.bindValue(WidgetProperties.text(SWT.Modify).observe(nameText),
            BeanProperties.value("name").observeDetail(selection));

    statusViewer.setContentProvider(new ArrayContentProvider());
    statusViewer.setInput(statuses);

    dbc.bindValue(ViewerProperties.singleSelection().observe(statusViewer),
            BeanProperties.value("status").observeDetail(selection));

    dbc.bindValue(WidgetProperties.enabled().observe(statusViewer.getControl()), new ComputedValue() {
        protected Object calculate() {
            return Boolean.valueOf(selection.getValue() instanceof Contact);
        }
    });
}