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

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

Introduction

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

Prototype

public ObservableListContentProvider() 

Source Link

Document

Constructs an ObservableListContentProvider.

Usage

From source file:org.eclipse.cdt.internal.docker.launcher.ContainerPropertyTab.java

License:Open Source License

/**
 * Same as//from   w  w w . j a v a 2s .c  o m
 * {@link ViewerSupport#bind(StructuredViewer, IObservableList, org.eclipse.core.databinding.property.value.IValueProperty[])
 * but with a custom LabelProvider, DataVolumesLabelProvider
 *
 * @param viewer
 * @param input
 * @param labelProperties
 */
private void bind(final StructuredViewer viewer, final IObservableList input,
        final IBeanValueProperty[] labelProperties) {
    final ObservableListContentProvider contentProvider = new ObservableListContentProvider();
    if (viewer.getInput() != null) {
        viewer.setInput(null);
    }
    viewer.setContentProvider(contentProvider);
    viewer.setLabelProvider(new DataVolumesLabelProvider(
            Properties.observeEach(contentProvider.getKnownElements(), labelProperties)));
    if (input != null) {
        viewer.setInput(input);
    }

}

From source file:org.eclipse.e4.demo.contacts.views.ListView.java

License:Open Source License

@Inject
public ListView(Composite parent, EMenuService menuService) {
    // Table composite (because of TableColumnLayout)
    final Composite tableComposite = new Composite(parent, SWT.NONE);
    tableComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    final TableColumnLayout tableColumnLayout = new TableColumnLayout();
    tableComposite.setLayout(tableColumnLayout);

    // Table viewer
    contactsViewer = new TableViewer(tableComposite, SWT.FULL_SELECTION);
    contactsViewer.getTable().setHeaderVisible(true);
    // contactsViewer.getTable().setLinesVisible(true);
    contactsViewer.setComparator(new ContactViewerComparator());

    contactsViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection selection = (IStructuredSelection) event.getSelection();
            selectionService.setSelection(selection.getFirstElement());
        }/*from   w w w  . j av a 2s.co m*/
    });

    // First name column
    final TableViewerColumn firstNameColumn = new TableViewerColumn(contactsViewer, SWT.NONE);
    firstNameColumn.getColumn().setText("First Name");
    tableColumnLayout.setColumnData(firstNameColumn.getColumn(), new ColumnWeightData(40));

    // Last name column
    final TableViewerColumn lastNameColumn = new TableViewerColumn(contactsViewer, SWT.NONE);
    lastNameColumn.getColumn().setText("Last Name");
    tableColumnLayout.setColumnData(lastNameColumn.getColumn(), new ColumnWeightData(60));

    menuService.registerContextMenu(contactsViewer.getControl(), "contacts.popup");

    ObservableListContentProvider contentProvider = new ObservableListContentProvider();

    contactsViewer.setContentProvider(contentProvider);

    IObservableMap[] attributes = BeansObservables.observeMaps(contentProvider.getKnownElements(),
            Contact.class, new String[] { "firstName", "lastName" });
    contactsViewer.setLabelProvider(new ObservableMapLabelProvider(attributes));

    contactsViewer.setInput(ContactsRepositoryFactory.getContactsRepository().getAllContacts());

    GridLayoutFactory.fillDefaults().generateLayout(parent);
}

From source file:org.eclipse.e4.demo.e4photo.ExifTable.java

License:Open Source License

@PostConstruct
void init() {// w ww .j  a  va2s  . com
    parent.setLayout(new FillLayout());

    viewer = new TableViewer(parent,
            SWT.SINGLE | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
    viewer.getTable().setHeaderVisible(true);
    viewer.getTable().setLinesVisible(true);

    viewer.getTable().setData("org.eclipse.e4.ui.css.id", "exif");
    viewer.getTable().setData("org.eclipse.e4.ui.css.CssClassName", "properties");

    JSONObject restoredState = null;
    try {
        if (persistedState != null)
            restoredState = new JSONObject(persistedState);
    } catch (JSONException e) {
        //discard persisted state and start with fresh state
    }
    final JSONObject state = restoredState != null ? restoredState : new JSONObject();

    String[] columnNames = new String[] { "name", "make", "model", "orientation", "software", "timestamp",
            "gpsLatitude", "gpsLongitude", "exposure", "iso", "aperture", "exposureComp", "flash", "width",
            "height", "focalLength", "whiteBalance", "lightSource", "exposureProgram" };

    for (int i = 0; i < columnNames.length; i++) {
        TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
        final TableColumn c = column.getColumn();
        final String name = columnNames[i];
        c.setText(name);
        String width = state.optString(name, null);
        if (width != null) {
            c.setWidth(Integer.parseInt(width));
        } else {
            c.pack();
        }
        c.addControlListener(new ControlAdapter() {
            @Override
            public void controlResized(ControlEvent e) {
                try {
                    state.put(name, Integer.toString(c.getWidth()));
                } catch (JSONException e1) {
                    //cannot happen because name is not null
                }
                setPersistedState(state.toString());
            }
        });
    }

    ObservableListContentProvider contentProvider = new ObservableListContentProvider();
    viewer.setContentProvider(contentProvider);

    viewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            Object selected = ((StructuredSelection) event.getSelection()).getFirstElement();
            if (eventAdmin != null)
                EventUtils.post(eventAdmin, EVENT_NAME, selected);
        }
    });

    viewer.setLabelProvider(new ObservableMapLabelProvider(
            PojoObservables.observeMaps(contentProvider.getKnownElements(), Exif.class, columnNames)));

    viewer.setInput(inputList);
}

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);
    }//ww  w.  ja  v a 2s. 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, 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.BindingContextEditor.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());

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

    if (getEditor().isShowXMIId() || getEditor().isLiveModel()) {
        ControlFactory.createXMIId(parent, this);
    }/*from  www  .  java 2  s.  c  o  m*/

    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.BindingContextEditor_Name, master, context, textProp,
            EMFEditProperties.value(getEditingDomain(), CommandsPackageImpl.Literals.BINDING_CONTEXT__NAME),
            Messages.BindingContextEditor_NameWarning);
    ControlFactory.createTextField(parent, Messages.BindingContextEditor_Description, master, context, textProp,
            EMFEditProperties.value(getEditingDomain(),
                    CommandsPackageImpl.Literals.BINDING_CONTEXT__DESCRIPTION));

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

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

    GridData gd = new GridData(GridData.FILL_BOTH);
    viewer.getControl().setLayoutData(gd);
    viewer.setLabelProvider(new ComponentLabelProvider(getEditor(), Messages));

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

    Composite buttonComp = new Composite(parent, SWT.NONE);
    buttonComp.setLayoutData(new GridData(GridData.FILL, GridData.END, false, false));
    GridLayout gl = new GridLayout();
    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));
    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();
                    MBindingContext container = (MBindingContext) getMaster().getValue();
                    int idx = container.getChildren().indexOf(obj) - 1;
                    if (idx >= 0) {
                        Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(),
                                CommandsPackageImpl.Literals.BINDING_CONTEXT__CHILDREN, obj, idx);

                        if (cmd.canExecute()) {
                            getEditingDomain().getCommandStack().execute(cmd);
                            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));
    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();
                    MBindingContext container = (MBindingContext) getMaster().getValue();
                    int idx = container.getChildren().indexOf(obj) + 1;
                    if (idx < container.getChildren().size()) {
                        Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(),
                                CommandsPackageImpl.Literals.BINDING_CONTEXT__CHILDREN, obj, idx);

                        if (cmd.canExecute()) {
                            getEditingDomain().getCommandStack().execute(cmd);
                            viewer.setSelection(new StructuredSelection(obj));
                        }
                    }

                }
            }
        }
    });

    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, true, false));
    b.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            handleAddContext();
        }
    });

    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));
    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(),
                        CommandsPackageImpl.Literals.BINDING_CONTEXT__CHILDREN, keybinding);
                if (cmd.canExecute()) {
                    getEditingDomain().getCommandStack().execute(cmd);
                }
            }
        }
    });

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

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

    folder.setSelection(0);

    return folder;
}

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

License:Open Source License

private Composite createForm(Composite parent, EMFDataBindingContext context, IObservableValue 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);

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

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

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

        Text t = new Text(parent, SWT.BORDER);
        GridData gd = new GridData(GridData.FILL_HORIZONTAL);
        gd.horizontalSpan = 2;
        t.setLayoutData(gd);
        context.bindValue(textProp.observeDelayed(200, t),
                EMFEditProperties
                        .value(getEditingDomain(),
                                ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID)
                        .observeDetail(getMaster()));
    }

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

        Text t = new Text(parent, SWT.BORDER);
        t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
        t.setEditable(false);
        context.bindValue(textProp.observeDelayed(200, t), EMFEditProperties
                .value(getEditingDomain(),
                        FeaturePath.fromList(CommandsPackageImpl.Literals.BINDING_TABLE__BINDING_CONTEXT,
                                ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID))
                .observeDetail(getMaster()));

        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) {
                BindingContextSelectionDialog dialog = new BindingContextSelectionDialog(b.getShell(),
                        getEditor().getModelProvider(), Messages);
                if (dialog.open() == Window.OK) {
                    Command cmd = SetCommand.create(getEditingDomain(), getMaster().getValue(),
                            CommandsPackageImpl.Literals.BINDING_TABLE__BINDING_CONTEXT,
                            dialog.getSelectedContext());
                    if (cmd.canExecute()) {
                        getEditingDomain().getCommandStack().execute(cmd);
                    }
                }
            }
        });
    }

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

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

        GridData gd = new GridData(GridData.FILL_BOTH);
        viewer.getControl().setLayoutData(gd);
        viewer.setLabelProvider(new ComponentLabelProvider(getEditor(), Messages));

        IEMFListProperty prop = EMFProperties.list(CommandsPackageImpl.Literals.BINDING_TABLE__BINDINGS);
        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();
        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));
        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();
                        MBindingTable container = (MBindingTable) getMaster().getValue();
                        int idx = container.getBindings().indexOf(obj) - 1;
                        if (idx >= 0) {
                            Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(),
                                    CommandsPackageImpl.Literals.BINDING_TABLE__BINDINGS, obj, idx);

                            if (cmd.canExecute()) {
                                getEditingDomain().getCommandStack().execute(cmd);
                                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));
        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();
                        MBindingTable container = (MBindingTable) getMaster().getValue();
                        int idx = container.getBindings().indexOf(obj) + 1;
                        if (idx < container.getBindings().size()) {
                            Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(),
                                    CommandsPackageImpl.Literals.BINDING_TABLE__BINDINGS, obj, idx);

                            if (cmd.canExecute()) {
                                getEditingDomain().getCommandStack().execute(cmd);
                                viewer.setSelection(new StructuredSelection(obj));
                            }
                        }

                    }
                }
            }
        });

        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, true, false));
        b.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                handleAddKeyBinding();
            }
        });

        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));
        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(),
                            CommandsPackageImpl.Literals.BINDING_TABLE__BINDINGS, keybinding);
                    if (cmd.canExecute()) {
                        getEditingDomain().getCommandStack().execute(cmd);
                    }
                }
            }
        });
    }

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

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

    folder.setSelection(0);

    return folder;
}

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

License:Open Source License

private Composite createForm(Composite parent, EMFDataBindingContext context, IObservableValue 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);

    if (getEditor().isShowXMIId() || getEditor().isLiveModel()) {
        ControlFactory.createXMIId(parent, this);
    }// w  w w  .ja  va2  s .  co  m

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

    ControlFactory.createTextField(parent, Messages.ModelTooling_Common_Id,
            Messages.ModelTooling_CommandId_tooltip, master, context, textProp,
            EMFEditProperties.value(getEditingDomain(),
                    ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID),
            Messages.ModelTooling_Empty_Warning);
    ControlFactory.createTextField(parent, Messages.CommandEditor_Name, master, context, textProp,
            EMFEditProperties.value(getEditingDomain(), CommandsPackageImpl.Literals.COMMAND__COMMAND_NAME));
    ControlFactory.createTextField(parent, Messages.CommandEditor_LabelDescription, master, context, textProp,
            EMFEditProperties.value(getEditingDomain(), CommandsPackageImpl.Literals.COMMAND__DESCRIPTION));

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

        Text t = new Text(parent, SWT.BORDER);
        TextPasteHandler.createFor(t);
        GridData gd = new GridData(GridData.FILL_HORIZONTAL);
        t.setLayoutData(gd);
        t.setEditable(false);
        context.bindValue(textProp.observeDelayed(200, t),
                EMFEditProperties
                        .value(getEditingDomain(),
                                FeaturePath.fromList(CommandsPackageImpl.Literals.COMMAND__CATEGORY,
                                        ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID))
                        .observeDetail(getMaster()));

        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) {
                CommandCategorySelectionDialog dialog = new CommandCategorySelectionDialog(b.getShell(),
                        getEditor().getModelProvider(), (MCommand) getMaster().getValue(), Messages);
                dialog.open();
            }
        });
    }

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

        final TableViewer viewer = new TableViewer(parent, SWT.FULL_SELECTION | SWT.MULTI | SWT.BORDER);
        ObservableListContentProvider cp = new ObservableListContentProvider();
        viewer.setContentProvider(cp);
        viewer.setLabelProvider(new ComponentLabelProvider(getEditor(), Messages));

        GridData gd = new GridData(GridData.FILL_BOTH);
        viewer.getControl().setLayoutData(gd);

        IEMFEditListProperty mProp = EMFEditProperties.list(getEditingDomain(),
                CommandsPackageImpl.Literals.COMMAND__PARAMETERS);
        viewer.setInput(mProp.observeDetail(getMaster()));

        Composite buttonComp = new Composite(parent, SWT.NONE);
        buttonComp.setLayoutData(new GridData(GridData.FILL, GridData.END, false, false));
        GridLayout gl = new GridLayout();
        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));
        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();
                        MCommand container = (MCommand) getMaster().getValue();
                        int idx = container.getParameters().indexOf(obj) - 1;
                        if (idx >= 0) {
                            Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(),
                                    CommandsPackageImpl.Literals.COMMAND__PARAMETERS, obj, idx);

                            if (cmd.canExecute()) {
                                getEditingDomain().getCommandStack().execute(cmd);
                                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));
        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();
                        MCommand container = (MCommand) getMaster().getValue();
                        int idx = container.getParameters().indexOf(obj) + 1;
                        if (idx < container.getParameters().size()) {
                            Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(),
                                    CommandsPackageImpl.Literals.COMMAND__PARAMETERS, obj, idx);

                            if (cmd.canExecute()) {
                                getEditingDomain().getCommandStack().execute(cmd);
                                viewer.setSelection(new StructuredSelection(obj));
                            }
                        }

                    }
                }
            }
        });

        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, true, false));
        b.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                handleAddCommandParameter();
            }
        });

        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));
        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(),
                            CommandsPackageImpl.Literals.COMMAND__PARAMETERS, keybinding);
                    if (cmd.canExecute()) {
                        getEditingDomain().getCommandStack().execute(cmd);
                    }
                }
            }
        });
    }

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

    createContributedEditorTabs(folder, context, getMaster(), MCommand.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 createMapProperties(Composite parent, final Messages Messages,
        final AbstractComponentEditor editor, String label, String tooltip, final EStructuralFeature feature,
        int vIndent) {
    Label l = new Label(parent, SWT.NONE);
    l.setText(label);/*ww  w.j  av a 2 s . co m*/
    if (tooltip != null) {
        l.setToolTipText(tooltip);
    }
    GridData gd = new GridData(GridData.END, GridData.BEGINNING, false, false);
    gd.verticalIndent = vIndent;
    l.setLayoutData(gd);

    final TableViewer tableviewer = new TableViewer(parent);
    tableviewer.getTable().setHeaderVisible(true);
    ObservableListContentProvider cp = new ObservableListContentProvider();
    tableviewer.setContentProvider(cp);
    gd = new GridData(GridData.FILL_HORIZONTAL);
    gd.heightHint = 80;
    gd.verticalIndent = vIndent;
    tableviewer.getControl().setLayoutData(gd);

    TableViewerColumn column = new TableViewerColumn(tableviewer, SWT.NONE);
    column.getColumn().setText(Messages.ControlFactory_Key);
    column.getColumn().setWidth(200);
    column.setLabelProvider(new ColumnLabelProvider() {
        @SuppressWarnings("unchecked")
        @Override
        public String getText(Object element) {
            Entry<String, String> entry = (Entry<String, String>) element;
            return entry.getKey();
        }
    });

    final TextCellEditor keyEditor = new TextCellEditor(tableviewer.getTable());
    column.setEditingSupport(new EditingSupport(tableviewer) {

        @Override
        protected void setValue(Object element, Object value) {
            Command cmd = SetCommand.create(editor.getEditingDomain(), element,
                    ApplicationPackageImpl.Literals.STRING_TO_STRING_MAP__KEY,
                    value.toString().trim().length() == 0 ? null : value.toString());
            if (cmd.canExecute()) {
                editor.getEditingDomain().getCommandStack().execute(cmd);
                tableviewer.refresh();
                tableviewer.getTable().getColumn(0).pack();
            }
        }

        @Override
        protected Object getValue(Object element) {
            Entry<String, String> entry = (Entry<String, String>) element;
            return entry.getKey();
        }

        @Override
        protected CellEditor getCellEditor(Object element) {
            return keyEditor;
        }

        @Override
        protected boolean canEdit(Object element) {
            return true;
        }
    });

    // FIXME How can we react upon changes in the Map-Value?
    column = new TableViewerColumn(tableviewer, SWT.NONE);
    column.getColumn().setText(Messages.ControlFactory_Value);
    column.getColumn().setWidth(200);
    column.setLabelProvider(new ColumnLabelProvider() {
        @SuppressWarnings("unchecked")
        @Override
        public String getText(Object element) {
            Entry<String, String> entry = (Entry<String, String>) element;
            return entry.getValue();
        }
    });

    final TextCellEditor cellEditor = new TextCellEditor(tableviewer.getTable());
    column.setEditingSupport(new EditingSupport(tableviewer) {

        @Override
        protected void setValue(Object element, Object value) {
            Command cmd = SetCommand.create(editor.getEditingDomain(), element,
                    ApplicationPackageImpl.Literals.STRING_TO_STRING_MAP__VALUE,
                    value.toString().trim().length() == 0 ? null : value.toString());
            if (cmd.canExecute()) {
                editor.getEditingDomain().getCommandStack().execute(cmd);
                tableviewer.refresh();
            }
        }

        @SuppressWarnings("unchecked")
        @Override
        protected Object getValue(Object element) {
            Entry<String, String> entry = (Entry<String, String>) element;
            return entry.getValue() == null ? "" : entry.getValue(); //$NON-NLS-1$
        }

        @Override
        protected CellEditor getCellEditor(Object element) {
            return cellEditor;
        }

        @Override
        protected boolean canEdit(Object element) {
            return true;
        }
    });

    IEMFEditListProperty prop = EMFEditProperties.list(editor.getEditingDomain(), feature);
    IObservableList observableList = prop.observeDetail(editor.getMaster());
    tableviewer.setInput(observableList);
    observableList.addListChangeListener(new IListChangeListener() {

        @Override
        public void handleListChange(ListChangeEvent event) {
            tableviewer.getTable().getColumn(0).pack();
        }
    });

    final Composite buttonComp = new Composite(parent, SWT.NONE);
    buttonComp.setLayoutData(new GridData(GridData.FILL, GridData.END, false, false));
    GridLayout gl = new GridLayout();
    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_AddEllipsis);
    b.setImage(editor.createImage(ResourceProvider.IMG_Obj16_table_add));
    b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
    b.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            Dialog dialog = new Dialog(buttonComp.getShell()) {
                private Text key;
                private Text value;

                @Override
                protected Control createDialogArea(Composite parent) {
                    getShell().setText(Messages.ControlFactory_KeyValueShellTitle);
                    Composite comp = (Composite) super.createDialogArea(parent);
                    Composite container = new Composite(comp, SWT.NONE);
                    container.setLayout(new GridLayout(2, false));
                    container.setLayoutData(new GridData(GridData.FILL_BOTH));

                    Label l = new Label(container, SWT.NONE);
                    l.setText(Messages.ControlFactory_Key);

                    key = new Text(container, SWT.BORDER);
                    key.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

                    l = new Label(container, SWT.NONE);
                    l.setText(Messages.ControlFactory_Value);

                    value = new Text(container, SWT.BORDER);
                    value.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

                    return comp;
                }

                @Override
                protected void okPressed() {
                    if (key.getText().trim().length() > 0) {
                        BasicEMap.Entry<String, String> entry = (org.eclipse.emf.common.util.BasicEMap.Entry<String, String>) ApplicationFactoryImpl.eINSTANCE
                                .createStringToStringMap();
                        entry.setHash(key.hashCode());
                        entry.setKey(key.getText());
                        entry.setValue(value.getText().trim().length() > 0 ? value.getText() : null);
                        Command cmd = AddCommand.create(editor.getEditingDomain(),
                                editor.getMaster().getValue(), feature, entry);
                        if (cmd.canExecute()) {
                            editor.getEditingDomain().getCommandStack().execute(cmd);
                            super.okPressed();
                        }
                    }
                }
            };
            dialog.open();

        }
    });

    b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
    b.setText(Messages.ModelTooling_Common_Remove);
    b.setImage(editor.createImage(ResourceProvider.IMG_Obj16_table_delete));
    b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
    b.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            IStructuredSelection selection = (IStructuredSelection) tableviewer.getSelection();
            if (!selection.isEmpty()) {
                Command cmd = RemoveCommand.create(editor.getEditingDomain(), editor.getMaster().getValue(),
                        feature, selection.toList());
                if (cmd.canExecute()) {
                    editor.getEditingDomain().getCommandStack().execute(cmd);
                }
            }
        }
    });
}

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);// www.j a  va  2 s  .  c om
    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.ControlFactory.java

License:Open Source License

public static void createBindingContextWiget(Composite parent, final Messages Messages,
        final AbstractComponentEditor editor, String label, String tooltip) {
    {/* w w w .ja v a 2s .c  o m*/
        Label l = new Label(parent, SWT.NONE);
        l.setText(label);
        if (tooltip != null) {
            l.setToolTipText(tooltip);
        }
        l.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));

        final TableViewer viewer = new TableViewer(parent);
        GridData gd = new GridData(GridData.FILL_BOTH);
        gd.heightHint = 120;
        viewer.getControl().setLayoutData(gd);
        viewer.setContentProvider(new ObservableListContentProvider());
        viewer.setLabelProvider(new ComponentLabelProvider(editor.getEditor(), Messages));
        viewer.setInput(EMFProperties.list(CommandsPackageImpl.Literals.BINDINGS__BINDING_CONTEXTS)
                .observeDetail(editor.getMaster()));

        final Composite buttonComp = new Composite(parent, SWT.NONE);
        buttonComp.setLayoutData(new GridData(GridData.FILL, GridData.END, false, false));
        GridLayout gl = new GridLayout();
        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(editor.createImage(ResourceProvider.IMG_Obj16_arrow_up));
        b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
        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();
                        MBindings container = (MBindings) editor.getMaster().getValue();
                        int idx = container.getBindingContexts().indexOf(obj) - 1;
                        if (idx >= 0) {
                            Command cmd = MoveCommand.create(editor.getEditingDomain(),
                                    editor.getMaster().getValue(),
                                    CommandsPackageImpl.Literals.BINDINGS__BINDING_CONTEXTS, obj, idx);

                            if (cmd.canExecute()) {
                                editor.getEditingDomain().getCommandStack().execute(cmd);
                                viewer.setSelection(new StructuredSelection(obj));
                            }
                        }

                    }
                }
            }
        });

        b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
        b.setText(Messages.ModelTooling_Common_Down);
        b.setImage(editor.createImage(ResourceProvider.IMG_Obj16_arrow_down));
        b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
        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();
                        MBindings container = (MBindings) editor.getMaster().getValue();
                        int idx = container.getBindingContexts().indexOf(obj) + 1;
                        if (idx < container.getBindingContexts().size()) {
                            Command cmd = MoveCommand.create(editor.getEditingDomain(),
                                    editor.getMaster().getValue(),
                                    CommandsPackageImpl.Literals.BINDINGS__BINDING_CONTEXTS, obj, idx);

                            if (cmd.canExecute()) {
                                editor.getEditingDomain().getCommandStack().execute(cmd);
                                viewer.setSelection(new StructuredSelection(obj));
                            }
                        }

                    }
                }
            }
        });

        b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
        b.setText(Messages.ModelTooling_Common_AddEllipsis);
        b.setImage(editor.createImage(ResourceProvider.IMG_Obj16_table_add));
        b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
        b.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                BindingContextSelectionDialog dialog = new BindingContextSelectionDialog(buttonComp.getShell(),
                        editor.getEditor().getModelProvider(), Messages);
                if (dialog.open() == IDialogConstants.OK_ID) {
                    Command cmd = AddCommand.create(editor.getEditingDomain(), editor.getMaster().getValue(),
                            CommandsPackageImpl.Literals.BINDINGS__BINDING_CONTEXTS,
                            dialog.getSelectedContext());
                    if (cmd.canExecute()) {
                        editor.getEditingDomain().getCommandStack().execute(cmd);
                    }
                }
            }
        });

        b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
        b.setText(Messages.ModelTooling_Common_Remove);
        b.setImage(editor.createImage(ResourceProvider.IMG_Obj16_table_delete));
        b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
        b.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                Command cmd = RemoveCommand.create(editor.getEditingDomain(), editor.getMaster().getValue(),
                        CommandsPackageImpl.Literals.BINDINGS__BINDING_CONTEXTS,
                        ((IStructuredSelection) viewer.getSelection()).toList());
                if (cmd.canExecute()) {
                    editor.getEditingDomain().getCommandStack().execute(cmd);
                }
            }
        });
    }
}