Example usage for org.eclipse.jface.viewers TableViewer setContentProvider

List of usage examples for org.eclipse.jface.viewers TableViewer setContentProvider

Introduction

In this page you can find the example usage for org.eclipse.jface.viewers TableViewer setContentProvider.

Prototype

@Override
public void setContentProvider(IContentProvider provider) 

Source Link

Document

Sets the content provider used by this AbstractTableViewer.

Usage

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 . j a v a2 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);
    }//from   www .ja va2s. c  o 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);/*from w  w w . ja va 2 s  .  c o  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 createBindingContextWiget(Composite parent, final Messages Messages,
        final AbstractComponentEditor editor, String label, String tooltip) {
    {//from  w  ww. j a  v  a2s.  c om
        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);
                }
            }
        });
    }
}

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

License:Open Source License

public static void createStringListWidget(Composite parent, Messages Messages,
        final AbstractComponentEditor editor, String label, String tooltip, final EStructuralFeature feature,
        int vIndent) {
    Label l = new Label(parent, SWT.NONE);
    l.setText(label);//from w  w w . ja  v a2s. c  o m
    if (tooltip != null) {
        l.setToolTipText(tooltip);
    }
    GridData gd = new GridData(GridData.END, GridData.BEGINNING, false, false);
    gd.verticalIndent = vIndent;
    l.setLayoutData(gd);

    final Text t = new Text(parent, SWT.BORDER);
    gd = new GridData(GridData.FILL, GridData.BEGINNING, true, false);
    gd.verticalIndent = vIndent;
    t.setLayoutData(gd);
    t.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.keyCode == SWT.CR || e.keyCode == SWT.LF) {
                handleAddText(editor, feature, t);
            }
        }
    });

    TextPasteHandler.createFor(t);

    final Button btnAdd = new Button(parent, SWT.PUSH | SWT.FLAT);
    btnAdd.setText(Messages.ModelTooling_Common_Add);
    btnAdd.setImage(editor.createImage(ResourceProvider.IMG_Obj16_table_add));
    gd = new GridData(GridData.FILL, GridData.CENTER, false, false);
    gd.verticalIndent = vIndent;
    btnAdd.setLayoutData(gd);
    btnAdd.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            handleAddText(editor, feature, t);
        }
    });

    new Label(parent, SWT.NONE);

    final TableViewer viewer = new TableViewer(parent);
    viewer.setLabelProvider(new LabelProvider());
    viewer.setContentProvider(new ObservableListContentProvider());
    gd = new GridData(GridData.FILL_HORIZONTAL);
    gd.heightHint = 150;
    viewer.getControl().setLayoutData(gd);

    IEMFListProperty prop = EMFProperties.list(feature);
    viewer.setInput(prop.observeDetail(editor.getMaster()));
    viewer.addSelectionChangedListener(new ISelectionChangedListener() {

        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            String strSelected = (String) ((StructuredSelection) event.getSelection()).getFirstElement();
            t.setText(strSelected != null ? strSelected : ""); //$NON-NLS-1$
        }
    });

    Composite compButton = new Composite(parent, SWT.NONE);
    compButton.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;
    compButton.setLayout(gl);

    final Button btnReplace = new Button(compButton, SWT.PUSH | SWT.FLAT);
    // TODO need to add icon for replace
    btnReplace.setText(Messages.ModelTooling_Common_Replace);
    btnReplace.setImage(editor.createImage(ResourceProvider.IMG_Obj16_table_add));
    gd = new GridData(GridData.FILL, GridData.CENTER, false, false);
    gd.verticalIndent = vIndent;
    btnReplace.setLayoutData(gd);
    btnReplace.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            handleReplaceText(editor, feature, t, viewer);
        }
    });

    final Button btnUp = new Button(compButton, SWT.PUSH | SWT.FLAT);
    btnUp.setText(Messages.ModelTooling_Common_Up);
    btnUp.setImage(editor.createImage(ResourceProvider.IMG_Obj16_arrow_up));
    btnUp.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
    btnUp.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();
                    EObject container = (EObject) editor.getMaster().getValue();
                    List<?> l = (List<?>) container.eGet(feature);
                    int idx = l.indexOf(obj) - 1;
                    if (idx >= 0) {
                        Command cmd = MoveCommand.create(editor.getEditingDomain(),
                                editor.getMaster().getValue(), feature, obj, idx);

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

                }
            }
        }
    });

    final Button btnDown = new Button(compButton, SWT.PUSH | SWT.FLAT);
    btnDown.setText(Messages.ModelTooling_Common_Down);
    btnDown.setImage(editor.createImage(ResourceProvider.IMG_Obj16_arrow_down));
    btnDown.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
    btnDown.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();
                    EObject container = (EObject) editor.getMaster().getValue();
                    List<?> l = (List<?>) container.eGet(feature);
                    int idx = l.indexOf(obj) + 1;
                    if (idx < l.size()) {
                        Command cmd = MoveCommand.create(editor.getEditingDomain(),
                                editor.getMaster().getValue(), feature, obj, idx);

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

                }
            }
        }
    });

    final Button btnDelete = new Button(compButton, SWT.PUSH | SWT.FLAT);
    btnDelete.setText(Messages.ModelTooling_Common_Remove);
    btnDelete.setImage(editor.createImage(ResourceProvider.IMG_Obj16_table_delete));
    btnDelete.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
    btnDelete.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            if (!viewer.getSelection().isEmpty()) {
                EObject el = (EObject) editor.getMaster().getValue();
                List<?> ids = ((IStructuredSelection) viewer.getSelection()).toList();
                Command cmd = RemoveCommand.create(editor.getEditingDomain(), el, feature, ids);
                if (cmd.canExecute()) {
                    editor.getEditingDomain().getCommandStack().execute(cmd);
                    if (ids.size() > 0) {
                        viewer.setSelection(new StructuredSelection(ids.get(0)));
                    }
                }
            }
        }
    });

    viewer.addSelectionChangedListener(new ISelectionChangedListener() {

        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            updateUiState(viewer, t, btnAdd, btnReplace, btnDelete, btnDown, btnUp);
        }
    });

    t.addModifyListener(new ModifyListener() {

        @Override
        public void modifyText(ModifyEvent e) {
            updateUiState(viewer, t, btnAdd, btnReplace, btnDelete, btnDown, btnUp);
        }
    });

    updateUiState(viewer, t, btnAdd, btnReplace, btnDelete, btnDown, btnUp);
}

From source file:org.eclipse.e4.tools.emf.ui.internal.common.component.KeyBindingEditor.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());

    if (getEditor().isShowXMIId() || getEditor().isLiveModel()) {
        ControlFactory.createXMIId(parent, this);
    }/*from   w  w w.ja v  a2s .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));

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

        final Text t = new Text(parent, SWT.BORDER);
        TextPasteHandler.createFor(t);
        GridData gd = new GridData(GridData.FILL_HORIZONTAL);
        gd.horizontalSpan = 2;
        t.setLayoutData(gd);
        Binding binding = context.bindValue(textProp.observeDelayed(200, t),
                EMFEditProperties
                        .value(getEditingDomain(), CommandsPackageImpl.Literals.KEY_SEQUENCE__KEY_SEQUENCE)
                        .observeDetail(getMaster()),
                new UpdateValueStrategy().setBeforeSetValidator(new BindingValidator()),
                new UpdateValueStrategy());
        Util.addDecoration(t, binding);
    }

    // ------------------------------------------------------------
    {
        Label l = new Label(parent, SWT.NONE);
        l.setText(Messages.KeyBindingEditor_Command);
        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));
        t.setEditable(false);
        context.bindValue(textProp.observeDelayed(200, t),
                EMFEditProperties.value(getEditingDomain(), CommandsPackageImpl.Literals.KEY_BINDING__COMMAND)
                        .observeDetail(getMaster()),
                new UpdateValueStrategy(),
                new UpdateValueStrategy().setConverter(new CommandToStringConverter(Messages)));

        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) {
                KeyBindingCommandSelectionDialog dialog = new KeyBindingCommandSelectionDialog(b.getShell(),
                        (MKeyBinding) getMaster().getValue(), resource, Messages);
                dialog.open();
            }
        });
    }

    Label l = new Label(parent, SWT.NONE);
    l.setText(Messages.KeyBindingEditor_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);

    viewer.setInput(KEY_BINDING__PARAMETERS.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();
                    MKeyBinding container = (MKeyBinding) getMaster().getValue();
                    int idx = container.getParameters().indexOf(obj) - 1;
                    if (idx >= 0) {
                        Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(),
                                CommandsPackageImpl.Literals.KEY_BINDING__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();
                    MKeyBinding container = (MKeyBinding) getMaster().getValue();
                    int idx = container.getParameters().indexOf(obj) + 1;
                    if (idx < container.getParameters().size()) {
                        Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(),
                                CommandsPackageImpl.Literals.KEY_BINDING__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) {
            handleAddParameter();
        }
    });

    b = new Button(buttonComp, SWT.PUSH | SWT.FLAT);
    b.setText(Messages.ModelTooling_Common_Remove);
    b.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            IStructuredSelection s = (IStructuredSelection) viewer.getSelection();
            if (!s.isEmpty()) {
                MKeyBinding item = (MKeyBinding) getMaster().getValue();
                Command cmd = RemoveCommand.create(getEditingDomain(), item,
                        CommandsPackageImpl.Literals.KEY_BINDING__PARAMETERS, s.toList());
                if (cmd.canExecute()) {
                    getEditingDomain().getCommandStack().execute(cmd);
                }
            }
        }

    });
    b.setImage(createImage(ResourceProvider.IMG_Obj16_table_delete));
    b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));

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

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

    folder.setSelection(0);

    return folder;
}

From source file:org.eclipse.e4.tools.emf.ui.internal.common.component.MenuContributionEditor.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  ww. j av a2s  . 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.MenuContributionEditor_ParentId);
        l.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));

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

        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) {
                MenuIdDialog dialog = new MenuIdDialog(t.getShell(), resource,
                        (MMenuContribution) getMaster().getValue(), getEditingDomain(), modelService, Messages);
                dialog.open();
            }
        });

    }

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

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

        final TableViewer viewer = new TableViewer(parent);
        ObservableListContentProvider cp = new ObservableListContentProvider();
        viewer.setContentProvider(cp);
        viewer.setLabelProvider(new ComponentLabelProvider(getEditor(), Messages));

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

        IEMFListProperty prop = EMFEditProperties.list(getEditingDomain(),
                UiPackageImpl.Literals.ELEMENT_CONTAINER__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(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) {
                Struct struct = (Struct) element;
                return struct.label;
            }
        });

        Struct defaultStruct = new Struct(Messages.MenuContributionEditor_HandledMenuItem,
                MenuPackageImpl.Literals.HANDLED_MENU_ITEM, false);
        childrenDropDown.setInput(new Struct[] {
                new Struct(Messages.MenuContributionEditor_Separator, MenuPackageImpl.Literals.MENU_SEPARATOR,
                        true),
                new Struct(Messages.MenuContributionEditor_Menu, MenuPackageImpl.Literals.MENU, false),
                defaultStruct,
                new Struct(Messages.MenuContributionEditor_DirectMenuItem,
                        MenuPackageImpl.Literals.DIRECT_MENU_ITEM, false),
                new Struct(Messages.MenuContributionEditor_DynamicMenuContribution,
                        MenuPackageImpl.Literals.DYNAMIC_MENU_CONTRIBUTION, false) });
        childrenDropDown.setSelection(new StructuredSelection(defaultStruct));

        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()) {
                    Struct struct = (Struct) ((IStructuredSelection) childrenDropDown.getSelection())
                            .getFirstElement();
                    EClass eClass = struct.eClass;
                    MMenuElement eObject = (MMenuElement) EcoreUtil.create(eClass);

                    Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(),
                            UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN, eObject);

                    if (cmd.canExecute()) {
                        getEditingDomain().getCommandStack().execute(cmd);
                        if (!struct.separator) {
                            getEditor().setSelection(eObject);
                        }
                    }
                }
            }
        });

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

    ControlFactory.createCheckBox(parent, "To Be Rendered", getMaster(), context, WidgetProperties.selection(), //$NON-NLS-1$
            EMFEditProperties.value(getEditingDomain(), UiPackageImpl.Literals.UI_ELEMENT__TO_BE_RENDERED));
    ControlFactory.createCheckBox(parent, "Visible", getMaster(), context, WidgetProperties.selection(), //$NON-NLS-1$
            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);

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

    folder.setSelection(0);

    return folder;
}

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);
    }/*ww w  .ja  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.ModelFragmentsEditor.java

License:Open Source License

private void createFragmentsTab(CTabFolder folder) {

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

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

    {//from w w w.j av a2  s . c  om

        Composite fragCompo = new Composite(parent, SWT.NONE);
        fragCompo.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true, 3, 1));
        GridLayout fragCompoLayout = new GridLayout(1, false);
        fragCompoLayout.marginLeft = 0;
        fragCompoLayout.marginRight = 0;
        fragCompoLayout.marginWidth = 0;
        fragCompoLayout.marginHeight = 0;
        fragCompo.setLayout(fragCompoLayout);

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

        IEMFListProperty prop = EMFProperties.list(FragmentPackageImpl.Literals.MODEL_FRAGMENTS__FRAGMENTS);
        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(4, 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));
        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();
                        MModelFragments container = (MModelFragments) getMaster().getValue();
                        int idx = container.getFragments().indexOf(obj) - 1;
                        if (idx >= 0) {
                            Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(),
                                    FragmentPackageImpl.Literals.MODEL_FRAGMENTS__FRAGMENTS, 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();
                        MModelFragments container = (MModelFragments) getMaster().getValue();
                        int idx = container.getFragments().indexOf(obj) + 1;
                        if (idx < container.getFragments().size()) {
                            Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(),
                                    FragmentPackageImpl.Literals.MODEL_FRAGMENTS__FRAGMENTS, 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) {
                MModelFragment component = MFragmentFactory.INSTANCE.createStringModelFragment();

                Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(),
                        FragmentPackageImpl.Literals.MODEL_FRAGMENTS__FRAGMENTS, component);

                if (cmd.canExecute()) {
                    getEditingDomain().getCommandStack().execute(cmd);
                    getEditor().setSelection(component);
                }
            }
        });

        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<?> elements = ((IStructuredSelection) viewer.getSelection()).toList();

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

}

From source file:org.eclipse.e4.tools.emf.ui.internal.common.component.PerspectiveStackEditor.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 ww .j a  va2 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));
    ControlFactory.createTextField(parent, Messages.ModelTooling_UIElement_AccessibilityPhrase, getMaster(),
            context, textProp, EMFEditProperties.value(getEditingDomain(),
                    UiPackageImpl.Literals.UI_ELEMENT__ACCESSIBILITY_PHRASE));
    ControlFactory.createSelectedElement(parent, this, context,
            Messages.PerspectiveStackEditor_SelectedElement);

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

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

        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();
        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();
                        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));
        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(buttonComp, SWT.PUSH | SWT.FLAT);
        b.setImage(createImage(ResourceProvider.IMG_Obj16_table_add));
        b.setText(Messages.ModelTooling_Common_AddEllipsis);
        b.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
        b.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                handleAddPerspective();
            }
        });

        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<?> 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(), MPerspectiveStack.class);

    folder.setSelection(0);

    return folder;
}