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

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

Introduction

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

Prototype

public ObservableListContentProvider() 

Source Link

Document

Constructs an ObservableListContentProvider.

Usage

From source file:org.eclipse.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);/* ww  w. j av a2  s . com*/
    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.dialogs.AbstractIconDialog.java

License:Open Source License

@Override
protected Control createDialogArea(Composite parent) {
    Composite comp = (Composite) super.createDialogArea(parent);

    getShell().setText(getShellTitle());
    setTitle(getDialogTitle());//  w  w w.  ja  v  a2 s  . co m
    setMessage(getDialogMessage());

    Composite container = new Composite(comp, SWT.NONE);
    container.setLayoutData(new GridData(GridData.FILL_BOTH));
    container.setLayout(new GridLayout(2, false));

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

    final Text t = new Text(container, SWT.BORDER | SWT.SEARCH | SWT.ICON_SEARCH);
    t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

    new Label(container, SWT.NONE);

    viewer = new TableViewer(container);
    GridData gd = new GridData(GridData.FILL_BOTH);
    viewer.getControl().setLayoutData(gd);
    viewer.setContentProvider(new ObservableListContentProvider());
    viewer.setLabelProvider(new StyledCellLabelProvider() {
        @Override
        public void update(ViewerCell cell) {
            IFile file = (IFile) cell.getElement();
            StyledString styledString = new StyledString(file.getProjectRelativePath().toString(), null);

            Image img = icons.get(file);
            if (img == null) {
                InputStream in = null;
                try {
                    in = file.getContents();
                    img = new Image(cell.getControl().getDisplay(), in);
                    icons.put(file, img);
                } catch (CoreException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } finally {
                    if (in != null) {
                        try {
                            in.close();
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }
                }
            }

            String bundle = getBundle(file);
            if (bundle != null) {
                styledString.append(" - " + bundle, StyledString.DECORATIONS_STYLER); //$NON-NLS-1$   
            }

            cell.setImage(img);
            cell.setText(styledString.getString());
            cell.setStyleRanges(styledString.getStyleRanges());
        }
    });

    final WritableList list = new WritableList();
    viewer.setInput(list);
    viewer.addDoubleClickListener(new IDoubleClickListener() {

        public void doubleClick(DoubleClickEvent event) {
            okPressed();
        }
    });

    t.addModifyListener(new ModifyListener() {
        private IconMatchCallback callback;
        private Timer timer = new Timer(true);
        private TimerTask task;

        public void modifyText(ModifyEvent e) {
            if (callback != null) {
                callback.cancel = true;
            }
            if (task != null) {
                task.cancel();
            }
            list.clear();

            clearImages();

            callback = new IconMatchCallback(list);
            task = new SearchThread(callback, t.getText(), project);
            timer.schedule(task, 500);
        }
    });

    getShell().addDisposeListener(new DisposeListener() {

        public void widgetDisposed(DisposeEvent e) {
            clearImages();
        }
    });

    return comp;
}

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

License:Open Source License

@Override
protected Control createDialogArea(Composite parent) {
    Composite comp = (Composite) super.createDialogArea(parent);

    getShell().setText(getShellTitle());
    setTitle(getDialogTitle());/*from  ww  w .  jav  a 2 s. c om*/
    setMessage(getDialogMessage());
    String bundleFilter = (String) context.get("bundle");
    if (E.notEmpty(bundleFilter)) {
        setMessage("Filtering by bundle " + bundleFilter); //$NON-NLS-1$
    }

    Composite container = new Composite(comp, SWT.NONE);
    container.setLayoutData(new GridData(GridData.FILL_BOTH));
    container.setLayout(new GridLayout(2, false));

    Composite compOptions = new Composite(container, SWT.NONE);
    compOptions.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
    compOptions.setLayout(new RowLayout());

    if (E.isEmpty(bundleFilter)) {
        Button btnProject = new Button(compOptions, SWT.RADIO);
        btnProject.setText("Project");
        btnProject.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                searchScope = ResourceSearchScope.PROJECT;
                textSearch.notifyListeners(SWT.Modify, new Event());

            }
        });
        btnProject.setSelection(true);

        Button btnWorkspace = new Button(compOptions, SWT.RADIO);
        btnWorkspace.setText("Workspace");
        btnWorkspace.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                searchScope = ResourceSearchScope.WORKSPACE;
                textSearch.notifyListeners(SWT.Modify, new Event());
            }
        });

        btnWorkspace.setSelection(searchScope == ResourceSearchScope.WORKSPACE);
        btnProject.setSelection(searchScope == ResourceSearchScope.PROJECT);
    } else {
        searchScope = ResourceSearchScope.WORKSPACE;
    }

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

    textSearch = new Text(container, SWT.BORDER | SWT.SEARCH | SWT.ICON_SEARCH);
    textSearch.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

    new Label(container, SWT.NONE);

    viewer = new TableViewer(container, SWT.FULL_SELECTION | SWT.BORDER);
    GridData gd = new GridData(GridData.FILL_BOTH);
    viewer.getControl().setLayoutData(gd);
    viewer.setContentProvider(new ObservableListContentProvider());
    viewer.setLabelProvider(new StyledCellLabelProvider() {
        @Override
        public void update(ViewerCell cell) {
            IFile file = (IFile) cell.getElement();
            StyledString styledString = new StyledString(file.getProjectRelativePath().toString(), null);

            Image img = icons.get(file);
            if (img == null) {
                InputStream in = null;
                try {
                    in = file.getContents();
                    img = new Image(cell.getControl().getDisplay(), in);
                    icons.put(file, img);
                } catch (CoreException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } finally {
                    if (in != null) {
                        try {
                            in.close();
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }
                }
            }

            String bundle = getBundle(file);
            if (bundle != null) {
                styledString.append(" - " + bundle, StyledString.DECORATIONS_STYLER); //$NON-NLS-1$
            }

            cell.setImage(img);
            cell.setText(styledString.getString());
            cell.setStyleRanges(styledString.getStyleRanges());
        }
    });

    final WritableList list = new WritableList();
    viewer.setInput(list);
    viewer.addDoubleClickListener(new IDoubleClickListener() {

        @Override
        public void doubleClick(DoubleClickEvent event) {
            okPressed();
        }
    });

    textSearch.addModifyListener(new ModifyListener() {
        private IconMatchCallback callback;
        private Timer timer = new Timer(true);
        private TimerTask task;

        @Override
        public void modifyText(ModifyEvent e) {
            if (callback != null) {
                callback.cancel = true;
            }
            if (task != null) {
                task.cancel();
            }
            list.clear();

            clearImages();

            callback = new IconMatchCallback(list);
            task = new SearchThread(callback, textSearch.getText(), project, context, searchScope);
            timer.schedule(task, 500);
        }
    });

    getShell().addDisposeListener(new DisposeListener() {

        @Override
        public void widgetDisposed(DisposeEvent e) {
            clearImages();
        }
    });

    textSearch.notifyListeners(SWT.Modify, new Event());

    return comp;
}

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

License:Open Source License

protected void rebuildViewer() {

    viewerList = new WritableList();

    TableViewer oldViewer = viewer;//from   ww w.ja  va2 s.co  m
    viewer = new TableViewer(compOptions, SWT.FULL_SELECTION | SWT.BORDER);
    if (oldViewer != null) {
        viewer.getTable().moveAbove(oldViewer.getTable());
        oldViewer.getTable().dispose();
    }
    GridData gd = new GridData(GridData.FILL_BOTH);
    viewer.getControl().setLayoutData(gd);
    viewer.setContentProvider(new ObservableListContentProvider());
    viewer.setLabelProvider(new StyledCellLabelProvider() {
        @Override
        public void update(ViewerCell cell) {
            ContributionData data;
            if (cell.getElement() instanceof ContributionData) {
                data = (ContributionData) cell.getElement();
            } else if (cell.getElement() instanceof ContributionDataFile) {
                data = ((ContributionDataFile) cell.getElement()).getContributionData();
            } else {
                return;
            }

            StyledString styledString = new StyledString();
            if (data.className != null) {
                styledString.append(data.className, null);
            }

            if (data.bundleName != null) {
                styledString.append(" - " + data.bundleName, StyledString.DECORATIONS_STYLER); //$NON-NLS-1$
            } else if (data.installLocation != null) {
                styledString.append(" - " + data.installLocation, StyledString.DECORATIONS_STYLER); //$NON-NLS-1$
            }

            if (data.sourceType != null) {
                styledString.append(" - ", StyledString.DECORATIONS_STYLER); //$NON-NLS-1$
                styledString.append(data.sourceType + "", StyledString.COUNTER_STYLER); //$NON-NLS-1$
            }

            if (data.iconPath == null) {
                cell.setImage(contributionTypeImage);
            }

            cell.setText(styledString.getString());
            cell.setStyleRanges(styledString.getStyleRanges());
        }
    });
    viewer.addDoubleClickListener(new IDoubleClickListener() {

        @Override
        public void doubleClick(DoubleClickEvent event) {
            okPressed();
        }
    });

    viewer.setInput(viewerList);

    if (oldViewer != null) {
        getViewer().getTable().getParent().layout(true, true);
        getViewer().getTable().getParent().redraw();
    }
}

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

License:Open Source License

@Override
protected Control createDialogArea(Composite parent) {
    Composite comp = (Composite) super.createDialogArea(parent);

    final Image titleImage = new Image(parent.getDisplay(),
            getClass().getClassLoader().getResourceAsStream("/icons/full/wizban/import_wiz.png")); //$NON-NLS-1$
    setTitleImage(titleImage);//www  . ja v  a2  s .c  om
    getShell().addDisposeListener(new DisposeListener() {

        @Override
        public void widgetDisposed(DisposeEvent e) {
            titleImage.dispose();
        }
    });

    getShell().setText(Messages.FindImportElementDialog_ShellTitle);
    setTitle(Messages.FindImportElementDialog_Title);
    setMessage(Messages.FindImportElementDialog_Message);

    Composite container = new Composite(comp, SWT.NONE);
    container.setLayoutData(new GridData(GridData.FILL_BOTH));
    container.setLayout(new GridLayout(2, false));

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

    final Text searchText = new Text(container, SWT.BORDER | SWT.SEARCH | SWT.ICON_SEARCH);
    GridData gd = new GridData(GridData.FILL_HORIZONTAL);
    searchText.setLayoutData(gd);

    l = new Label(container, SWT.PUSH);

    viewer = new TableViewer(container);
    gd = new GridData(GridData.FILL_BOTH);
    gd.heightHint = 200;
    viewer.getControl().setLayoutData(gd);
    viewer.setLabelProvider(new StyledCellLabelProvider() {
        @Override
        public void update(ViewerCell cell) {
            EObject o = (EObject) cell.getElement();
            cell.setImage(editor.getImage(o, searchText.getDisplay()));

            MApplicationElement appEl = (MApplicationElement) o;
            StyledString styledString = new StyledString(editor.getLabel(o) + " (" //$NON-NLS-1$
                    + (appEl.getElementId() == null ? "<" + Messages.FindImportElementDialog_noId + ">" //$NON-NLS-1$//$NON-NLS-2$
                            : appEl.getElementId())
                    + ")", null); //$NON-NLS-1$
            String detailLabel = editor.getDetailLabel(o);
            if (detailLabel != null && !detailLabel.equals(appEl.getElementId())) {
                styledString.append(" - " + detailLabel, StyledString.DECORATIONS_STYLER); //$NON-NLS-1$
            }

            styledString.append(" - " + o.eResource().getURI(), StyledString.COUNTER_STYLER); //$NON-NLS-1$
            cell.setStyleRanges(styledString.getStyleRanges());
            cell.setText(styledString.getString());
        }
    });
    viewer.setContentProvider(new ObservableListContentProvider());
    viewer.addDoubleClickListener(new IDoubleClickListener() {

        @Override
        public void doubleClick(DoubleClickEvent event) {
            okPressed();
        }
    });

    final WritableList list = new WritableList();
    viewer.setInput(list);

    final ClassContributionCollector collector = getCollector();

    searchText.addModifyListener(new ModifyListener() {
        private ModelResultHandlerImpl currentResultHandler;

        @Override
        public void modifyText(ModifyEvent e) {
            if (currentResultHandler != null) {
                currentResultHandler.cancled = true;
            }
            list.clear();
            Filter filter = new Filter(element.eClass(), searchText.getText());
            currentResultHandler = new ModelResultHandlerImpl(list, filter, editor, element.eResource());
            collector.findModelElements(filter, currentResultHandler);
        }
    });

    Button button = new Button(container, SWT.PUSH);
    button.setText(Messages.FindImportElementDialog_ClearCache);
    button.setLayoutData(new GridData(GridData.END, GridData.CENTER, true, false, 2, 1));
    button.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            collector.clearModelCache();
        }
    });

    return comp;
}

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

License:Open Source License

@Override
protected Control createDialogArea(Composite parent) {
    Composite comp = (Composite) super.createDialogArea(parent);

    final Image titleImage = new Image(parent.getDisplay(),
            getClass().getClassLoader().getResourceAsStream("/icons/full/wizban/import_wiz.png")); //$NON-NLS-1$
    setTitleImage(titleImage);/*w  w  w.  j  a v a 2  s .c  om*/
    getShell().addDisposeListener(new DisposeListener() {

        @Override
        public void widgetDisposed(DisposeEvent e) {
            titleImage.dispose();
        }
    });

    getShell().setText(Messages.FindParentReferenceElementDialog_ShellTitle);
    setTitle(Messages.FindParentReferenceElementDialog_Title);
    setMessage(Messages.FindParentReferenceElementDialog_Message);

    Composite container = new Composite(comp, SWT.NONE);
    container.setLayoutData(new GridData(GridData.FILL_BOTH));
    container.setLayout(new GridLayout(2, false));

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

    eClassViewer = new ComboViewer(container);
    eClassViewer.setLabelProvider(new LabelProvider() {
        @Override
        public String getText(Object element) {
            return ((EClass) element).getName();
        }
    });
    eClassViewer.setContentProvider(new ArrayContentProvider());
    List<EClass> eClassList = new ArrayList<EClass>();
    for (InternalPackage p : Util.loadPackages()) {
        eClassList.addAll(p.getAllClasses());
    }
    eClassViewer.setComparator(new ViewerComparator() {
        @Override
        public int compare(Viewer viewer, Object e1, Object e2) {
            EClass ec1 = (EClass) e1;
            EClass ec2 = (EClass) e2;
            return ec1.getName().compareTo(ec2.getName());
        }
    });
    eClassViewer.setInput(eClassList);
    eClassViewer.getCombo().select(0);
    eClassViewer.getControl().setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    eClassViewer.addSelectionChangedListener(new ISelectionChangedListener() {

        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            updateSearch();

        }
    });

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

    searchText = new Text(container, SWT.BORDER | SWT.SEARCH | SWT.ICON_SEARCH);
    GridData gd = new GridData(GridData.FILL_HORIZONTAL);
    searchText.setLayoutData(gd);

    l = new Label(container, SWT.PUSH);

    viewer = new TableViewer(container);
    gd = new GridData(GridData.FILL_BOTH);
    gd.heightHint = 200;
    viewer.getControl().setLayoutData(gd);
    viewer.setLabelProvider(new StyledCellLabelProvider() {
        @Override
        public void update(ViewerCell cell) {
            EObject o = (EObject) cell.getElement();
            AbstractComponentEditor editor = FindParentReferenceElementDialog.this.editor.getEditor()
                    .getEditor(o.eClass());
            cell.setImage(editor.getImage(o, searchText.getDisplay()));

            MApplicationElement appEl = (MApplicationElement) o;

            StyledString styledString = new StyledString(editor.getLabel(o) + " (" //$NON-NLS-1$
                    + (appEl.getElementId() == null ? "<" + Messages.FindParentReferenceElementDialog_NoId + ">" //$NON-NLS-1$//$NON-NLS-2$
                            : appEl.getElementId())
                    + ")", null); //$NON-NLS-1$
            String detailLabel = editor.getDetailLabel(o);
            if (detailLabel != null && !detailLabel.equals(appEl.getElementId())) {
                styledString.append(" - " + detailLabel, StyledString.DECORATIONS_STYLER); //$NON-NLS-1$
            }

            styledString.append(" - " + o.eResource().getURI(), StyledString.COUNTER_STYLER); //$NON-NLS-1$
            cell.setStyleRanges(styledString.getStyleRanges());
            cell.setText(styledString.getString());
        }
    });
    viewer.setContentProvider(new ObservableListContentProvider());
    viewer.addDoubleClickListener(new IDoubleClickListener() {

        @Override
        public void doubleClick(DoubleClickEvent event) {
            okPressed();
        }
    });

    list = new WritableList();
    viewer.setInput(list);

    final ClassContributionCollector collector = getCollector();

    searchText.addModifyListener(new ModifyListener() {

        @Override
        public void modifyText(ModifyEvent e) {
            updateSearch();
        }
    });

    Button button = new Button(container, SWT.PUSH);
    button.setText(Messages.FindParentReferenceElementDialog_ClearCache);
    button.setLayoutData(new GridData(GridData.END, GridData.CENTER, true, false, 2, 1));
    button.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            collector.clearModelCache();
        }
    });
    return comp;
}

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.  j  a va 2s . c om*/

    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   www  .j  a  v  a  2  s  .c om

    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);
    }/*from www.ja va2 s  .c  o m*/

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

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

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

    // ------------------------------------------------------------
    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  .  ja v a 2s .  c o m*/

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

}