Example usage for org.eclipse.jface.viewers ViewerComparator ViewerComparator

List of usage examples for org.eclipse.jface.viewers ViewerComparator ViewerComparator

Introduction

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

Prototype

public ViewerComparator() 

Source Link

Document

Creates a new ViewerComparator , which uses the default comparator to sort strings.

Usage

From source file:org.eclipse.e4.examples.di.product.parts.SamplePart.java

License:Open Source License

@PostConstruct
public void createComposite(Composite parent) {
    parent.setLayout(new GridLayout(1, false));

    txtInput = new Text(parent, SWT.BORDER);
    txtInput.setMessage("Enter text to mark part as dirty");
    txtInput.addModifyListener(new ModifyListener() {
        @Override//from w ww  . ja  v a  2s .com
        public void modifyText(ModifyEvent e) {
            dirty.setDirty(true);
        }
    });
    txtInput.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

    Label info = new Label(parent, SWT.NONE);
    info.setText("Plug-in Authors:");

    tableViewer = new TableViewer(parent);

    tableViewer.setLabelProvider(new AuthorLabelProvider());
    tableViewer.setContentProvider(new IStructuredContentProvider() {

        @Override
        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {

        }

        @Override
        public void dispose() {

        }

        @Override
        public Object[] getElements(Object inputElement) {
            if (inputElement instanceof Collection) {
                return ((Collection) inputElement).toArray();
            }
            return null;
        }
    });
    tableViewer.getTable().setLayoutData(new GridData(GridData.FILL_BOTH));
    ViewerComparator comparator = new ViewerComparator();
    tableViewer.setComparator(comparator);

    // TODO 1.3 Call the extended object supplier
    createLegacyReader();
    // createDiReader();

    tableViewer.setInput(pluginAuthors);
}

From source file:org.eclipse.e4.tools.bundles.spy.BundleSpyPart.java

License:Open Source License

private void addColumn(final TableViewer parentTable, int width, String title, final int column) {
    TableViewerColumn col = new TableViewerColumn(bundlesTableViewer, SWT.NONE);
    col.getColumn().setWidth(width);//from   ww  w  . j ava  2  s.  c  o m
    col.getColumn().setText(title);

    final BundleDataProvider bdp = ContextInjectionFactory.make(BundleDataProvider.class, ctx);
    bdp.setColumn(column);
    col.setLabelProvider(bdp);

    col.getColumn().addSelectionListener(new SelectionAdapter() {

        private int turnAround = 1;

        @Override
        public void widgetSelected(SelectionEvent e) {
            turnAround *= -1;
            parentTable.setComparator(new ViewerComparator() {
                @Override
                public int compare(Viewer viewer, Object e1, Object e2) {
                    if (BundleDataProvider.COL_STATE == column) {
                        Bundle b1 = (Bundle) e1;
                        Bundle b2 = (Bundle) e2;
                        return turnAround(Integer.compare(b1.getState(), b2.getState()));
                    }

                    return turnAround(bdp.getText(e1).compareTo(bdp.getText(e2)));
                }
            });
        }

        private int turnAround(int compare) {
            return compare * turnAround;
        }
    });

}

From source file:org.eclipse.e4.tools.css.spy.CssSpyDialog.java

License:Open Source License

/**
 * Create contents of the dialog./*from  w  w  w . j a  v  a  2  s  .  co m*/
 *
 * @param parent
 */
@Override
protected Control createDialogArea(Composite parent) {
    Composite outer = (Composite) super.createDialogArea(parent);

    Composite top = new Composite(outer, SWT.NONE);
    GridLayoutFactory.swtDefaults().numColumns(2).applyTo(top);
    cssSearchBox = new Text(top, SWT.BORDER | SWT.SEARCH | SWT.ICON_SEARCH | SWT.ICON_CANCEL);
    cssSearchBox.setMessage("CSS Selector");
    cssSearchBox.setToolTipText("Highlight matching widgets");
    GridDataFactory.fillDefaults().grab(true, false).applyTo(cssSearchBox);

    showAllShells = new Button(top, SWT.CHECK);
    showAllShells.setText("All shells");
    GridDataFactory.swtDefaults().applyTo(showAllShells);
    GridDataFactory.fillDefaults().applyTo(top);

    SashForm sashForm = new SashForm(outer, SWT.VERTICAL);
    sashForm.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));

    // / THE WIDGET TREE
    Composite widgetsComposite = new Composite(sashForm, SWT.NONE);

    widgetTreeViewer = new TreeViewer(widgetsComposite, SWT.BORDER | SWT.MULTI);
    widgetTreeProvider = new WidgetTreeProvider();
    widgetTreeViewer.setContentProvider(widgetTreeProvider);
    widgetTreeViewer.setAutoExpandLevel(0);
    widgetTreeViewer.getTree().setLinesVisible(true);
    widgetTreeViewer.getTree().setHeaderVisible(true);
    ColumnViewerToolTipSupport.enableFor(widgetTreeViewer);

    TreeViewerColumn widgetTypeColumn = new TreeViewerColumn(widgetTreeViewer, SWT.NONE);
    widgetTypeColumn.getColumn().setWidth(100);
    widgetTypeColumn.getColumn().setText("Widget");
    widgetTypeColumn.setLabelProvider(new ColumnLabelProvider() {
        @Override
        public String getText(Object item) {
            CSSStylableElement element = CssSpyDialog.getCSSElement(item);
            return element.getLocalName() + " (" + element.getNamespaceURI() + ")";
        }
    });

    TreeViewerColumn widgetClassColumn = new TreeViewerColumn(widgetTreeViewer, SWT.NONE);
    widgetClassColumn.getColumn().setText("CSS Class");
    widgetClassColumn.getColumn().setWidth(100);
    widgetClassColumn.setLabelProvider(new ColumnLabelProvider() {
        @Override
        public String getText(Object item) {
            CSSStylableElement element = CssSpyDialog.getCSSElement(item);
            if (element.getCSSClass() == null) {
                return null;
            }
            String classes[] = element.getCSSClass().split(" +");
            return classes.length <= 1 ? classes[0] : classes[0] + " (+" + (classes.length - 1) + " others)";
        }

        @Override
        public String getToolTipText(Object item) {
            CSSStylableElement element = CssSpyDialog.getCSSElement(item);
            if (element == null) {
                return null;
            }
            StringBuilder sb = new StringBuilder();
            sb.append(element.getLocalName()).append(" (").append(element.getNamespaceURI()).append(")");
            if (element.getCSSClass() != null) {
                sb.append("\nClasses:\n  ");
                Activator.join(sb, element.getCSSClass().split(" +"), "\n  ");
            }
            return sb.toString();
        }
    });

    TreeViewerColumn widgetIdColumn = new TreeViewerColumn(widgetTreeViewer, SWT.NONE);
    widgetIdColumn.getColumn().setWidth(100);
    widgetIdColumn.getColumn().setText("CSS Id");
    widgetIdColumn.setLabelProvider(new ColumnLabelProvider() {
        @Override
        public String getText(Object item) {
            CSSStylableElement element = CssSpyDialog.getCSSElement(item);
            return element.getCSSId();
        }
    });

    TreeColumnLayout widgetsTableLayout = new TreeColumnLayout();
    widgetsTableLayout.setColumnData(widgetTypeColumn.getColumn(), new ColumnWeightData(50));
    widgetsTableLayout.setColumnData(widgetIdColumn.getColumn(), new ColumnWeightData(40));
    widgetsTableLayout.setColumnData(widgetClassColumn.getColumn(), new ColumnWeightData(40));
    widgetsComposite.setLayout(widgetsTableLayout);

    // / HEADERS
    Composite container = new Composite(sashForm, SWT.NONE);
    container.setLayout(new GridLayout(2, true));

    Label lblCssProperties = new Label(container, SWT.NONE);
    lblCssProperties.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1));
    lblCssProperties.setText("CSS Properties");

    Label lblCssRules = new Label(container, SWT.NONE);
    lblCssRules.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1));
    lblCssRules.setText("CSS Rules");

    // // THE CSS PROPERTIES TABLE
    Composite propsComposite = new Composite(container, SWT.BORDER);
    GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1);
    gridData.minimumHeight = 50;
    propsComposite.setLayoutData(gridData);

    cssPropertiesViewer = new TableViewer(propsComposite,
            SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
    cssPropertiesViewer.setContentProvider(new CSSPropertiesContentProvider());
    cssPropertiesViewer.getTable().setLinesVisible(true);
    cssPropertiesViewer.getTable().setHeaderVisible(true);
    cssPropertiesViewer.setComparator(new ViewerComparator());

    final TextCellEditor textCellEditor = new TextCellEditor(cssPropertiesViewer.getTable());
    TableViewerEditor.create(cssPropertiesViewer,
            new TableViewerFocusCellManager(cssPropertiesViewer,
                    new FocusCellOwnerDrawHighlighter(cssPropertiesViewer)),
            new ColumnViewerEditorActivationStrategy(cssPropertiesViewer),
            ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR
                    | ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION);

    TableViewerColumn propName = new TableViewerColumn(cssPropertiesViewer, SWT.NONE);
    propName.getColumn().setWidth(100);
    propName.getColumn().setText("Property");
    propName.setLabelProvider(new ColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            return ((CSSPropertyProvider) element).getPropertyName();
        }
    });

    TableViewerColumn propValue = new TableViewerColumn(cssPropertiesViewer, SWT.NONE);
    propValue.getColumn().setWidth(100);
    propValue.getColumn().setText("Value");
    propValue.setLabelProvider(new ColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            try {
                return ((CSSPropertyProvider) element).getValue();
            } catch (Exception e) {
                System.err.println("Error fetching property: " + element + ": " + e);
                return null;
            }
        }
    });
    propValue.setEditingSupport(new EditingSupport(cssPropertiesViewer) {
        @Override
        protected CellEditor getCellEditor(Object element) {
            // do the fancy footwork here to return an appropriate editor to
            // the value-type
            return textCellEditor;
        }

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

        @Override
        protected Object getValue(Object element) {
            try {
                String value = ((CSSPropertyProvider) element).getValue();
                return value == null ? "" : value;
            } catch (Exception e) {
                return "";
            }
        }

        @Override
        protected void setValue(Object element, Object value) {
            try {
                if (value == null || ((String) value).trim().length() == 0) {
                    return;
                }
                CSSPropertyProvider provider = (CSSPropertyProvider) element;
                provider.setValue((String) value);
            } catch (Exception e) {
                MessageDialog.openError(getShell(), "Error", "Unable to set property:\n\n" + e.getMessage());
            }
            cssPropertiesViewer.update(element, null);
        }
    });

    TableColumnLayout propsTableLayout = new TableColumnLayout();
    propsTableLayout.setColumnData(propName.getColumn(), new ColumnWeightData(50));
    propsTableLayout.setColumnData(propValue.getColumn(), new ColumnWeightData(50));
    propsComposite.setLayout(propsTableLayout);

    // / THE CSS RULES
    cssRules = new Text(container, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI);
    cssRules.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));

    // / THE CSS PROPERTIES TABLE (again)
    showUnsetProperties = new Button(container, SWT.CHECK);
    showUnsetProperties.setText("Show unset properties");
    showCssFragment = new Button(container, SWT.PUSH);
    showCssFragment.setText("Show CSS fragment");
    showCssFragment.setToolTipText("Generates CSS rule block for the selected widget");

    // and for balance
    new Label(container, SWT.NONE);

    // / The listeners

    cssSearchBox.addModifyListener(new ModifyListener() {
        private Runnable updater;
        private IProgressMonitor monitor;

        public void modifyText(ModifyEvent e) {
            if (monitor != null) {
                monitor.setCanceled(false);
            }
            display.timerExec(200, updater = new Runnable() {
                public void run() {
                    if (updater == this) {
                        performCSSSearch(monitor = new NullProgressMonitor());
                    }
                }
            });
        }
    });
    cssSearchBox.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.keyCode == SWT.ARROW_DOWN && (e.stateMask & SWT.MODIFIER_MASK) == 0) {
                widgetTreeViewer.getControl().setFocus();
            }
        }
    });

    widgetTreeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            updateForWidgetSelection(event.getSelection());
            showCssFragment.setEnabled(!event.getSelection().isEmpty());
        }
    });
    if (isLive()) {
        container.addMouseMoveListener(new MouseMoveListener() {
            public void mouseMove(MouseEvent e) {
                update();
            }
        });
    }

    if (shouldDismissOnLostFocus()) {
        container.addFocusListener(new FocusAdapter() {
            @Override
            public void focusLost(FocusEvent e) {
                setReturnCode(Window.OK);
                close();
            }
        });
    }
    container.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.character == SWT.ESC) {
                cancelPressed();
            } else if (e.character == SWT.CR | e.character == SWT.LF) {
                okPressed();
            }
        }
    });
    showAllShells.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            updateWidgetTreeInput();
        }
    });

    outer.addDisposeListener(new DisposeListener() {
        public void widgetDisposed(DisposeEvent e) {
            dispose();
        }
    });

    showUnsetProperties.setSelection(true);
    showUnsetProperties.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            if (showUnsetProperties.getSelection()) {
                cssPropertiesViewer.removeFilter(unsetPropertyFilter);
            } else {
                cssPropertiesViewer.addFilter(unsetPropertyFilter);
            }
        }
    });

    showCssFragment.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            showCssFragment();
        }

        @Override
        public void widgetDefaultSelected(SelectionEvent e) {
            widgetSelected(e);
        }
    });

    update();
    sashForm.setWeights(new int[] { 50, 50 });
    widgetTreeViewer.getControl().setFocus();
    return outer;
}

From source file:org.eclipse.e4.tools.css.spy.CssSpyPart.java

License:Open Source License

/**
 * Create contents of the spy.//from  w  w w .  j a v  a 2  s .  c  om
 *
 * @param parent
 */
@PostConstruct
protected Control createDialogArea(Composite parent, IEclipseContext ctx) {
    outer = parent;
    outer.setLayout(new GridLayout());
    outer.setLayoutData(new GridData(GridData.FILL_BOTH));

    Composite top = new Composite(outer, SWT.NONE);
    GridLayoutFactory.swtDefaults().numColumns(3).applyTo(top);
    cssSearchBox = new Text(top, SWT.BORDER | SWT.SEARCH | SWT.ICON_SEARCH | SWT.ICON_CANCEL);
    cssSearchBox.setMessage("CSS Selector");
    cssSearchBox.setToolTipText("Highlight matching widgets");
    GridDataFactory.fillDefaults().grab(true, false).applyTo(cssSearchBox);

    followSelection = new Button(top, SWT.CHECK);
    followSelection.setSelection(true);
    followSelection.setText("Follow UI Selection");
    GridDataFactory.swtDefaults().applyTo(followSelection);

    showAllShells = new Button(top, SWT.CHECK);
    showAllShells.setText("All shells");
    GridDataFactory.swtDefaults().applyTo(showAllShells);

    GridDataFactory.fillDefaults().applyTo(top);

    SashForm sashForm = new SashForm(outer, SWT.VERTICAL);
    sashForm.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));

    // / THE WIDGET TREE
    Composite widgetsComposite = new Composite(sashForm, SWT.NONE);

    widgetTreeViewer = new TreeViewer(widgetsComposite, SWT.BORDER | SWT.MULTI);
    widgetTreeProvider = new WidgetTreeProvider();
    widgetTreeViewer.setContentProvider(widgetTreeProvider);
    widgetTreeViewer.setAutoExpandLevel(0);
    widgetTreeViewer.getTree().setLinesVisible(true);
    widgetTreeViewer.getTree().setHeaderVisible(true);
    ColumnViewerToolTipSupport.enableFor(widgetTreeViewer);

    TreeViewerColumn widgetTypeColumn = new TreeViewerColumn(widgetTreeViewer, SWT.NONE);
    widgetTypeColumn.getColumn().setWidth(100);
    widgetTypeColumn.getColumn().setText("Widget");
    widgetTypeColumn.setLabelProvider(new ColumnLabelProvider() {
        @Override
        public String getText(Object item) {
            CSSStylableElement element = CssSpyPart.getCSSElement(item);
            return element.getLocalName() + " (" + element.getNamespaceURI() + ")";
        }
    });

    TreeViewerColumn widgetClassColumn = new TreeViewerColumn(widgetTreeViewer, SWT.NONE);
    widgetClassColumn.getColumn().setText("CSS Class");
    widgetClassColumn.getColumn().setWidth(100);
    widgetClassColumn.setLabelProvider(new ColumnLabelProvider() {
        @Override
        public String getText(Object item) {
            CSSStylableElement element = CssSpyPart.getCSSElement(item);
            if (element.getCSSClass() == null) {
                return null;
            }
            String classes[] = element.getCSSClass().split(" +");
            return classes.length <= 1 ? classes[0] : classes[0] + " (+" + (classes.length - 1) + " others)";
        }

        @Override
        public String getToolTipText(Object item) {
            CSSStylableElement element = CssSpyPart.getCSSElement(item);
            if (element == null) {
                return null;
            }
            StringBuilder sb = new StringBuilder();
            sb.append(element.getLocalName()).append(" (").append(element.getNamespaceURI()).append(")");
            if (element.getCSSClass() != null) {
                sb.append("\nClasses:\n  ");
                Util.join(sb, element.getCSSClass().split(" +"), "\n  ");
            }
            return sb.toString();
        }
    });

    TreeViewerColumn widgetIdColumn = new TreeViewerColumn(widgetTreeViewer, SWT.NONE);
    widgetIdColumn.getColumn().setWidth(100);
    widgetIdColumn.getColumn().setText("CSS Id");
    widgetIdColumn.setLabelProvider(new ColumnLabelProvider() {
        @Override
        public String getText(Object item) {
            CSSStylableElement element = CssSpyPart.getCSSElement(item);
            return element.getCSSId();
        }
    });

    TreeColumnLayout widgetsTableLayout = new TreeColumnLayout();
    widgetsTableLayout.setColumnData(widgetTypeColumn.getColumn(), new ColumnWeightData(50));
    widgetsTableLayout.setColumnData(widgetIdColumn.getColumn(), new ColumnWeightData(40));
    widgetsTableLayout.setColumnData(widgetClassColumn.getColumn(), new ColumnWeightData(40));
    widgetsComposite.setLayout(widgetsTableLayout);

    // / HEADERS
    Composite container = new Composite(sashForm, SWT.NONE);
    container.setLayout(new GridLayout(2, true));

    Label lblCssProperties = new Label(container, SWT.NONE);
    lblCssProperties.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1));
    lblCssProperties.setText("CSS Properties");

    Label lblCssRules = new Label(container, SWT.NONE);
    lblCssRules.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1));
    lblCssRules.setText("CSS Rules");

    // // THE CSS PROPERTIES TABLE
    Composite propsComposite = new Composite(container, SWT.BORDER);
    GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1);
    gridData.minimumHeight = 50;
    propsComposite.setLayoutData(gridData);

    cssPropertiesViewer = new TableViewer(propsComposite,
            SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
    cssPropertiesViewer.setContentProvider(new CSSPropertiesContentProvider());
    cssPropertiesViewer.getTable().setLinesVisible(true);
    cssPropertiesViewer.getTable().setHeaderVisible(true);
    cssPropertiesViewer.setComparator(new ViewerComparator());

    final TextCellEditor textCellEditor = new TextCellEditor(cssPropertiesViewer.getTable());
    TableViewerEditor.create(cssPropertiesViewer,
            new TableViewerFocusCellManager(cssPropertiesViewer,
                    new FocusCellOwnerDrawHighlighter(cssPropertiesViewer)),
            new ColumnViewerEditorActivationStrategy(cssPropertiesViewer),
            ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR
                    | ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION);

    TableViewerColumn propName = new TableViewerColumn(cssPropertiesViewer, SWT.NONE);
    propName.getColumn().setWidth(100);
    propName.getColumn().setText("Property");
    propName.setLabelProvider(new ColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            return ((CSSPropertyProvider) element).getPropertyName();
        }
    });

    TableViewerColumn propValue = new TableViewerColumn(cssPropertiesViewer, SWT.NONE);
    propValue.getColumn().setWidth(100);
    propValue.getColumn().setText("Value");
    propValue.setLabelProvider(new ColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            try {
                return ((CSSPropertyProvider) element).getValue();
            } catch (Exception e) {
                System.err.println("Error fetching property: " + element + ": " + e);
                return null;
            }
        }
    });
    propValue.setEditingSupport(new EditingSupport(cssPropertiesViewer) {
        @Override
        protected CellEditor getCellEditor(Object element) {
            // do the fancy footwork here to return an appropriate
            // editor to
            // the value-type
            return textCellEditor;
        }

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

        @Override
        protected Object getValue(Object element) {
            try {
                String value = ((CSSPropertyProvider) element).getValue();
                return value == null ? "" : value;
            } catch (Exception e) {
                return "";
            }
        }

        @Override
        protected void setValue(Object element, Object value) {
            try {
                if (value == null || ((String) value).trim().length() == 0) {
                    return;
                }
                CSSPropertyProvider provider = (CSSPropertyProvider) element;
                provider.setValue((String) value);
            } catch (Exception e) {
                MessageDialog.openError(activeShell, "Error", "Unable to set property:\n\n" + e.getMessage());
            }
            cssPropertiesViewer.update(element, null);
        }
    });

    TableColumnLayout propsTableLayout = new TableColumnLayout();
    propsTableLayout.setColumnData(propName.getColumn(), new ColumnWeightData(50));
    propsTableLayout.setColumnData(propValue.getColumn(), new ColumnWeightData(50));
    propsComposite.setLayout(propsTableLayout);

    // / THE CSS RULES
    cssRules = new Text(container, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI);
    cssRules.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));

    // / THE CSS PROPERTIES TABLE (again)
    showUnsetProperties = new Button(container, SWT.CHECK);
    showUnsetProperties.setText("Show unset properties");
    showCssFragment = new Button(container, SWT.PUSH);
    showCssFragment.setText("Show CSS fragment");
    showCssFragment.setToolTipText("Generates CSS rule block for the selected widget");

    // and for balance
    new Label(container, SWT.NONE);

    // / The listeners

    cssSearchBox.addModifyListener(new ModifyListener() {
        private Runnable updater;
        private IProgressMonitor monitor;

        @Override
        public void modifyText(ModifyEvent e) {
            if (monitor != null) {
                monitor.setCanceled(false);
            }
            display.timerExec(200, updater = new Runnable() {
                @Override
                public void run() {
                    if (updater == this) {
                        performCSSSearch(monitor = new NullProgressMonitor());
                    }
                }
            });
        }
    });
    cssSearchBox.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.keyCode == SWT.ARROW_DOWN && (e.stateMask & SWT.MODIFIER_MASK) == 0) {
                widgetTreeViewer.getControl().setFocus();
            }
        }
    });

    widgetTreeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            updateForWidgetSelection(event.getSelection());
            showCssFragment.setEnabled(!event.getSelection().isEmpty());
        }
    });
    if (isLive()) {
        container.addMouseMoveListener(e -> {
            if (followSelection.getSelection()) {
                update();
            }
        });
    }

    showAllShells.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            updateWidgetTreeInput();
        }
    });

    outer.addDisposeListener(e -> dispose());

    showUnsetProperties.setSelection(true);
    showUnsetProperties.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            if (showUnsetProperties.getSelection()) {
                cssPropertiesViewer.removeFilter(unsetPropertyFilter);
            } else {
                cssPropertiesViewer.addFilter(unsetPropertyFilter);
            }
        }
    });

    showCssFragment.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            showCssFragment();
        }

        @Override
        public void widgetDefaultSelected(SelectionEvent e) {
            widgetSelected(e);
        }
    });

    sashForm.setWeights(new int[] { 50, 50 });
    widgetTreeViewer.getControl().setFocus();

    return outer;
}

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

License:Open Source License

@Override
protected Control createDialogArea(Composite parent) {
    getShell().setText(Messages.FeatureSelectionDialog_ShellTitle);
    setTitle(Messages.FeatureSelectionDialog_DialogTitle);
    setMessage(Messages.FeatureSelectionDialog_DialogMessage);

    Composite composite = (Composite) super.createDialogArea(parent);

    final Image packageImage = new Image(getShell().getDisplay(),
            getClass().getClassLoader().getResourceAsStream("/icons/full/obj16/EPackage.gif")); //$NON-NLS-1$
    final Image classImage = new Image(getShell().getDisplay(),
            getClass().getClassLoader().getResourceAsStream("/icons/full/obj16/class_obj.gif")); //$NON-NLS-1$
    final Image featureImage = new Image(getShell().getDisplay(),
            getClass().getClassLoader().getResourceAsStream("/icons/full/obj16/field_public_obj.gif")); //$NON-NLS-1$
    final Image newTitleImage = new Image(getShell().getDisplay(),
            getClass().getClassLoader().getResourceAsStream("/icons/full/wizban/fieldrefact_wiz.png")); //$NON-NLS-1$

    setTitleImage(newTitleImage);/*  ww  w  .ja v a 2s  .co m*/

    composite.addDisposeListener(new DisposeListener() {

        @Override
        public void widgetDisposed(DisposeEvent e) {
            packageImage.dispose();
            classImage.dispose();
            featureImage.dispose();
            newTitleImage.dispose();
        }
    });

    Composite container = new Composite(composite, 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.FeatureSelectionDialog_Filter);

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

    searchText.addModifyListener(new ModifyListener() {

        @Override
        public void modifyText(ModifyEvent e) {
            if (filter != null) {
                filter.setPattern(searchText.getText());
                if (viewer != null) {
                    viewer.refresh();
                    if (searchText.getText().length() > 0) {
                        viewer.expandAll();
                    } else {
                        viewer.collapseAll();
                    }
                }
            }
        }
    });
    new Label(container, SWT.NONE);
    viewer = new TreeViewer(container);
    GridData gd = new GridData(GridData.FILL_BOTH);
    gd.heightHint = 200;
    viewer.getControl().setLayoutData(gd);
    viewer.setContentProvider(new ContentProviderImpl());
    viewer.setLabelProvider(new LabelProviderImpl(packageImage, classImage, featureImage));
    viewer.addDoubleClickListener(new IDoubleClickListener() {

        @Override
        public void doubleClick(DoubleClickEvent event) {
            okPressed();
        }
    });
    viewer.setComparator(new ViewerComparator() {
        @Override
        public int compare(Viewer viewer, Object e1, Object e2) {
            if (e1.getClass() == InternalPackage.class) {
                return ((InternalPackage) e1).ePackage.getNsURI()
                        .compareTo(((InternalPackage) e2).ePackage.getNsURI());
            } else if (e1.getClass() == InternalClass.class) {
                return ((InternalClass) e1).eClass.getName().compareTo(((InternalClass) e2).eClass.getName());
            } else if (e1.getClass() == InternalFeature.class) {
                return ((InternalFeature) e1).feature.getName()
                        .compareTo(((InternalFeature) e2).feature.getName());
            }
            return super.compare(viewer, e1, e2);
        }
    });
    viewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection selection = (IStructuredSelection) event.getSelection();
            Button buttonOk = getButton(IDialogConstants.OK_ID);
            if (!selection.isEmpty() && selection.getFirstElement().getClass() == InternalFeature.class)
                buttonOk.setEnabled(true);
            else
                buttonOk.setEnabled(false);
        }
    });

    filter = new ViewerFilterImpl();

    viewer.addFilter(filter);

    viewer.setInput(Util.loadPackages());

    return composite;
}

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);//ww w  .  ja  v  a  2s . com
    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.ModelFragmentsEditor.java

License:Open Source License

private void createImportsTab(CTabFolder folder) {

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

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

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

    final ViewerElement tableElement = ViewerElement.create(context, parent, this);
    tableElement.getViewer().setContentProvider(new ObservableListContentProvider());
    tableElement.getViewer().setLabelProvider(new ComponentLabelProvider(getEditor(), Messages));

    tableElement.getDropDown().setContentProvider(new ArrayContentProvider());
    tableElement.getDropDown().setLabelProvider(new LabelProvider() {
        @Override
        public String getText(Object element) {
            FeatureClass eclass = (FeatureClass) element;
            return eclass.label;
        }
    });
    tableElement.getDropDown().setComparator(new ViewerComparator() {
        @Override
        public int compare(Viewer viewer, Object e1, Object e2) {
            FeatureClass eClass1 = (FeatureClass) e1;
            FeatureClass eClass2 = (FeatureClass) e2;
            return eClass1.label.compareTo(eClass2.label);
        }
    });

    tableElement.getButtonAdd().addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            EClass eClass = ((FeatureClass) ((IStructuredSelection) tableElement.getDropDown().getSelection())
                    .getFirstElement()).eClass;
            EObject eObject = EcoreUtil.create(eClass);

            Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(),
                    FragmentPackageImpl.Literals.MODEL_FRAGMENTS__IMPORTS, eObject);

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

    tableElement.getButtonRemove().addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            if (!tableElement.getViewer().getSelection().isEmpty()) {
                List<?> elements = ((IStructuredSelection) tableElement.getViewer().getSelection()).toList();

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

    tableElement.getButtonDown().addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            if (!tableElement.getViewer().getSelection().isEmpty()) {
                IStructuredSelection s = (IStructuredSelection) tableElement.getViewer().getSelection();
                if (s.size() == 1) {
                    Object obj = s.getFirstElement();
                    MModelFragments container = (MModelFragments) getMaster().getValue();
                    int idx = container.getImports().indexOf(obj) + 1;
                    if (idx < container.getImports().size()) {
                        Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(),
                                FragmentPackageImpl.Literals.MODEL_FRAGMENTS__IMPORTS, obj, idx);

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

                }
            }
        }
    });

    tableElement.getButtonUp().addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            if (!tableElement.getViewer().getSelection().isEmpty()) {
                IStructuredSelection s = (IStructuredSelection) tableElement.getViewer().getSelection();
                if (s.size() == 1) {
                    Object obj = s.getFirstElement();
                    MModelFragments container = (MModelFragments) getMaster().getValue();
                    int idx = container.getImports().indexOf(obj) - 1;
                    if (idx >= 0) {
                        Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(),
                                FragmentPackageImpl.Literals.MODEL_FRAGMENTS__IMPORTS, obj, idx);

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

    List<FeatureClass> list = new ArrayList<FeatureClass>();
    Util.addClasses(ApplicationPackageImpl.eINSTANCE, list);
    list.addAll(getEditor().getFeatureClasses(FragmentPackageImpl.Literals.MODEL_FRAGMENT,
            FragmentPackageImpl.Literals.MODEL_FRAGMENTS__IMPORTS));

    tableElement.getDropDown().setInput(list);
    tableElement.getDropDown().getCombo().select(0);

    IEMFListProperty prop = EMFProperties.list(FragmentPackageImpl.Literals.MODEL_FRAGMENTS__IMPORTS);
    tableElement.getViewer().setInput(prop.observeDetail(getMaster()));
}

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

License:Open Source License

private Composite createForm(Composite parent) {
    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  v  a2s .c o m*/

    IWidgetValueProperty textProp = WidgetProperties.text(SWT.Modify);
    {
        Label l = new Label(parent, SWT.NONE);
        l.setText(Messages.StringModelFragment_ParentId);
        l.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));

        Composite comp = new Composite(parent, SWT.NONE);
        GridData gd = new GridData(GridData.FILL_HORIZONTAL);
        gd.horizontalSpan = 2;
        comp.setLayoutData(gd);
        GridLayout gl = new GridLayout(2, false);
        gl.marginWidth = gl.marginHeight = 0;
        gl.verticalSpacing = 0;
        gl.marginLeft = gl.marginBottom = gl.marginRight = gl.marginTop = 0;
        comp.setLayout(gl);

        Text t = new Text(comp, SWT.BORDER);
        TextPasteHandler.createFor(t);
        // t.setEditable(false);
        gd = new GridData(GridData.FILL_HORIZONTAL);
        t.setLayoutData(gd);
        context.bindValue(textProp.observeDelayed(200, t),
                EMFEditProperties
                        .value(getEditingDomain(),
                                FragmentPackageImpl.Literals.STRING_MODEL_FRAGMENT__PARENT_ELEMENT_ID)
                        .observeDetail(getMaster()));

        final Button b = new Button(comp, SWT.PUSH | SWT.FLAT);
        b.setText(Messages.ModelTooling_Common_FindEllipsis);
        b.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                FindParentReferenceElementDialog dialog = new FindParentReferenceElementDialog(b.getShell(),
                        StringModelFragment.this, (MStringModelFragment) getMaster().getValue(), Messages);
                dialog.open();
            }
        });
    }

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

        Composite comp = new Composite(parent, SWT.NONE);
        GridData gd = new GridData(GridData.FILL_HORIZONTAL);
        gd.horizontalSpan = 2;
        comp.setLayoutData(gd);
        GridLayout gl = new GridLayout(2, false);
        gl.marginWidth = gl.marginHeight = 0;
        gl.verticalSpacing = 0;
        gl.marginLeft = gl.marginBottom = gl.marginRight = gl.marginTop = 0;
        comp.setLayout(gl);

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

        final Button button = new Button(comp, SWT.PUSH | SWT.FLAT);
        button.setText(Messages.ModelTooling_Common_FindEllipsis);
        button.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                FeatureSelectionDialog dialog = new FeatureSelectionDialog(button.getShell(),
                        getEditingDomain(), (MStringModelFragment) getMaster().getValue(), Messages);
                dialog.open();
            }
        });

    }

    ControlFactory.createTextField(parent, Messages.StringModelFragment_PositionInList, getMaster(), context,
            textProp, EMFEditProperties.value(getEditingDomain(),
                    FragmentPackageImpl.Literals.STRING_MODEL_FRAGMENT__POSITION_IN_LIST));

    // ------------------------------------------------------------
    {

        final ViewerElement tableElement = ViewerElement.create(eclipseContext, parent, this);

        tableElement.getViewer().setContentProvider(new ObservableListContentProvider());
        tableElement.getViewer().setLabelProvider(new ComponentLabelProvider(getEditor(), Messages));

        tableElement.getDropDown().setContentProvider(new ArrayContentProvider());
        tableElement.getDropDown().setLabelProvider(new LabelProvider() {
            @Override
            public String getText(Object element) {
                FeatureClass eclass = (FeatureClass) element;
                return eclass.label;
            }
        });

        tableElement.getDropDown().setComparator(new ViewerComparator() {
            @Override
            public int compare(Viewer viewer, Object e1, Object e2) {
                FeatureClass eClass1 = (FeatureClass) e1;
                FeatureClass eClass2 = (FeatureClass) e2;
                return eClass1.label.compareTo(eClass2.label);
            }
        });

        tableElement.getDropDown().setContentProvider(new ArrayContentProvider());
        tableElement.getDropDown().setLabelProvider(new LabelProvider() {
            @Override
            public String getText(Object element) {
                FeatureClass eclass = (FeatureClass) element;
                return eclass.label;
            }
        });

        tableElement.getDropDown().setComparator(new ViewerComparator() {
            @Override
            public int compare(Viewer viewer, Object e1, Object e2) {
                FeatureClass eClass1 = (FeatureClass) e1;
                FeatureClass eClass2 = (FeatureClass) e2;
                return eClass1.label.compareTo(eClass2.label);
            }
        });

        tableElement.getButtonAdd().addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                EClass eClass = ((FeatureClass) ((IStructuredSelection) tableElement.getDropDown()
                        .getSelection()).getFirstElement()).eClass;
                EObject eObject = EcoreUtil.create(eClass);
                setElementId(eObject);
                Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(),
                        FragmentPackageImpl.Literals.MODEL_FRAGMENT__ELEMENTS, eObject);

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

        tableElement.getButtonRemove().addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                if (!tableElement.getViewer().getSelection().isEmpty()) {
                    List<?> elements = ((IStructuredSelection) tableElement.getViewer().getSelection())
                            .toList();

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

        tableElement.getButtonDown().addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                if (!tableElement.getViewer().getSelection().isEmpty()) {
                    IStructuredSelection s = (IStructuredSelection) tableElement.getViewer().getSelection();
                    if (s.size() == 1) {
                        Object obj = s.getFirstElement();
                        MModelFragment container = (MModelFragment) getMaster().getValue();
                        int idx = container.getElements().indexOf(obj) + 1;
                        if (idx < container.getElements().size()) {
                            Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(),
                                    FragmentPackageImpl.Literals.MODEL_FRAGMENT__ELEMENTS, obj, idx);

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

        tableElement.getButtonUp().addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                if (!tableElement.getViewer().getSelection().isEmpty()) {
                    IStructuredSelection s = (IStructuredSelection) tableElement.getViewer().getSelection();
                    if (s.size() == 1) {
                        Object obj = s.getFirstElement();
                        MModelFragment container = (MModelFragment) getMaster().getValue();
                        int idx = container.getElements().indexOf(obj) - 1;
                        if (idx >= 0) {
                            Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(),
                                    FragmentPackageImpl.Literals.MODEL_FRAGMENT__ELEMENTS, obj, idx);

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

        List<FeatureClass> list = new ArrayList<FeatureClass>();
        Util.addClasses(ApplicationPackageImpl.eINSTANCE, list);
        list.addAll(getEditor().getFeatureClasses(FragmentPackageImpl.Literals.MODEL_FRAGMENT,
                FragmentPackageImpl.Literals.MODEL_FRAGMENT__ELEMENTS));

        tableElement.getDropDown().setInput(list);
        tableElement.getDropDown().getCombo().select(0);

        IEMFListProperty prop = EMFProperties.list(FragmentPackageImpl.Literals.MODEL_FRAGMENT__ELEMENTS);
        tableElement.getViewer().setInput(prop.observeDetail(getMaster()));

    }

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

    folder.setSelection(0);

    return folder;
}

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

License:Open Source License

private Composite createForm(Composite parent, EMFDataBindingContext context, WritableValue master) {
    CTabFolder folder = new CTabFolder(parent, SWT.BOTTOM);
    composite = folder;/* ww w  .jav a  2  s.  c o  m*/

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

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

    tableElement = ViewerElement.create(eclipseContext, parent, this);
    tableElement.getViewer().setContentProvider(new ObservableListContentProvider());
    tableElement.getViewer().setLabelProvider(new ComponentLabelProvider(getEditor(), Messages));

    tableElement.getDropDown().setContentProvider(new ArrayContentProvider());
    tableElement.getDropDown().setLabelProvider(new LabelProvider() {
        @Override
        public String getText(Object element) {
            FeatureClass eclass = (FeatureClass) element;
            return eclass.label;
        }
    });
    tableElement.getDropDown().setComparator(new ViewerComparator() {
        @Override
        public int compare(Viewer viewer, Object e1, Object e2) {
            FeatureClass eClass1 = (FeatureClass) e1;
            FeatureClass eClass2 = (FeatureClass) e2;
            return eClass1.label.compareTo(eClass2.label);
        }
    });

    tableElement.getButtonAdd().addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            EClass eClass = ((FeatureClass) ((IStructuredSelection) tableElement.getDropDown().getSelection())
                    .getFirstElement()).eClass;
            EObject eObject = EcoreUtil.create(eClass);

            Command cmd = AddCommand.create(getEditingDomain(), getMaster().getValue(),
                    FragmentPackageImpl.Literals.MODEL_FRAGMENTS__IMPORTS, eObject);

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

    tableElement.getButtonRemove().addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            if (!tableElement.getViewer().getSelection().isEmpty()) {
                List<?> elements = ((IStructuredSelection) tableElement.getViewer().getSelection()).toList();

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

    tableElement.getButtonDown().addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            if (!tableElement.getViewer().getSelection().isEmpty()) {
                IStructuredSelection s = (IStructuredSelection) tableElement.getViewer().getSelection();
                if (s.size() == 1) {
                    Object obj = s.getFirstElement();
                    MModelFragments container = (MModelFragments) getMaster().getValue();
                    int idx = container.getImports().indexOf(obj) + 1;
                    if (idx < container.getImports().size()) {
                        Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(),
                                FragmentPackageImpl.Literals.MODEL_FRAGMENTS__IMPORTS, obj, idx);

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

                }
            }
        }
    });

    tableElement.getButtonUp().addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            if (!tableElement.getViewer().getSelection().isEmpty()) {
                IStructuredSelection s = (IStructuredSelection) tableElement.getViewer().getSelection();
                if (s.size() == 1) {
                    Object obj = s.getFirstElement();
                    MModelFragments container = (MModelFragments) getMaster().getValue();
                    int idx = container.getImports().indexOf(obj) - 1;
                    if (idx >= 0) {
                        Command cmd = MoveCommand.create(getEditingDomain(), getMaster().getValue(),
                                FragmentPackageImpl.Literals.MODEL_FRAGMENTS__IMPORTS, obj, idx);

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

    List<FeatureClass> list = new ArrayList<FeatureClass>();
    Util.addClasses(ApplicationPackageImpl.eINSTANCE, list);
    list.addAll(getEditor().getFeatureClasses(FragmentPackageImpl.Literals.MODEL_FRAGMENT,
            FragmentPackageImpl.Literals.MODEL_FRAGMENTS__IMPORTS));

    tableElement.getDropDown().setInput(list);
    tableElement.getDropDown().getCombo().select(0);

    folder.setSelection(0);

    return folder;
}

From source file:org.eclipse.e4.ui.internal.progress.ProgressManagerUtil.java

License:Open Source License

/**
 * Return a viewer comparator for looking at the jobs.
 * //w  ww. jav a 2 s. co  m
 * @return ViewerComparator
 */
static ViewerComparator getProgressViewerComparator() {
    return new ViewerComparator() {
        @SuppressWarnings({ "unchecked", "rawtypes" })
        @Override
        public int compare(Viewer testViewer, Object e1, Object e2) {
            return ((Comparable) e1).compareTo(e2);
        }
    };
}