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

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

Introduction

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

Prototype

@Override
    public Control getControl() 

Source Link

Usage

From source file:org.eclipse.debug.internal.ui.launchConfigurations.FavoritesDialog.java

License:Open Source License

/**
 * Creates a fully configured table with the given content provider
 *///from  ww  w. ja  v a  2  s.co  m
private TableViewer createTable(Composite parent, IContentProvider contentProvider) {
    TableViewer tableViewer = new TableViewer(parent, SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION);
    tableViewer.setLabelProvider(DebugUITools.newDebugModelPresentation());
    tableViewer.setContentProvider(contentProvider);
    tableViewer.setInput(DebugUIPlugin.getDefault());
    GridData gd = new GridData(GridData.FILL_BOTH);
    gd.widthHint = 100;
    gd.heightHint = 100;
    tableViewer.getTable().setLayoutData(gd);
    tableViewer.getTable().setFont(parent.getFont());
    tableViewer.addSelectionChangedListener(fSelectionChangedListener);
    tableViewer.getControl().addKeyListener(fKeyListener);
    return tableViewer;
}

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);
    }//w  w  w.j  a v  a 2 s  . co 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);
    }//from w w w.  jav 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   w  ww .  j a v  a2 s  .  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);// ww  w.j  a 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 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 w  w  .j a v a 2 s .  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);
                }
            }
        });
    }
}

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 .  j a  v a  2s.  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 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.ControlFactory.java

License:Open Source License

public static void attachFiltering(Text searchText, final TableViewer viewer, final PatternFilter filter) {
    searchText.addModifyListener(new ModifyListener() {
        @Override/*  www . j  a v a2  s  .c o m*/
        public void modifyText(ModifyEvent e) {
            filter.setPattern(((Text) e.widget).getText());
            viewer.refresh();
            if (viewer.getTable().getItemCount() > 0) {
                Object data = viewer.getTable().getItem(0).getData();
                viewer.setSelection(new StructuredSelection(data));
            }
        }
    });
    searchText.addTraverseListener(new TraverseListener() {

        @Override
        public void keyTraversed(TraverseEvent e) {
            if (e.keyCode == SWT.ARROW_DOWN && viewer.getTable().getItemCount() > 0) {
                viewer.getControl().setFocus();
            }
        }
    });
}

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);
    }// w w  w. j av  a  2s .c  o  m

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

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

    ControlFactory.createTextField(parent, Messages.ModelTooling_Common_Id, 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  ww  w .  j a v  a 2s .  c o  m*/

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

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

    ControlFactory.createTextField(parent, Messages.ModelTooling_Common_Id, 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;
}