Example usage for org.eclipse.jface.viewers CellEditor addListener

List of usage examples for org.eclipse.jface.viewers CellEditor addListener

Introduction

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

Prototype

public void addListener(ICellEditorListener listener) 

Source Link

Document

Adds a listener to this cell editor.

Usage

From source file:com.centurylink.mdw.plugin.designer.properties.editor.TableEditor.java

License:Apache License

private TableViewer createTableViewer(Table table) {
    TableViewer tableViewer = new TableViewer(table);
    tableViewer.setUseHashlookup(true);/* w  w  w.  java  2s.  c  o  m*/

    tableViewer.setColumnProperties(columnProps);

    if (!isReadOnly()) {
        CellEditor[] cellEditors = new CellEditor[columnSpecs.size()];
        for (int i = 0; i < columnSpecs.size(); i++) {
            ColumnSpec colSpec = columnSpecs.get(i);
            CellEditor cellEditor = null;
            if (!colSpec.hidden) {
                if (colSpec.type.equals(TYPE_TEXT)) {
                    if (colSpec.style != 0)
                        cellEditor = new TextCellEditor(table, colSpec.style);
                    else
                        cellEditor = new TextCellEditor(table);
                } else if (colSpec.type.equals(TYPE_CHECKBOX)) {
                    cellEditor = new CheckboxCellEditor(table);
                } else if (colSpec.type.equals(TYPE_COMBO)) {
                    int style = SWT.None;
                    if (colSpec.readOnly)
                        style = style | SWT.READ_ONLY;
                    cellEditor = new ComboBoxCellEditor(table, colSpec.options, style);
                    if (!colSpec.readOnly)
                        cellEditor.addListener(
                                new EditableComboCellEditorListener((ComboBoxCellEditor) cellEditor, i));
                } else if (colSpec.type.equals(WorkflowAssetEditor.TYPE_ASSET)) {
                    int style = SWT.None;
                    if (colSpec.readOnly)
                        style = style | SWT.READ_ONLY;

                    cellEditor = new TreeComboCellEditor(table, style) {
                        @Override
                        protected void doSetValue(Object value) {
                            Object val = getValue();
                            if (val instanceof CTreeComboItem) {
                                CTreeComboItem selItem = (CTreeComboItem) getValue();
                                if (selItem != null) {
                                    super.doSetValue(selItem.getText());
                                    return;
                                }
                            }

                            if (value instanceof String) {
                                String strVal = (String) value;
                                if (strVal.indexOf('/') > 0) {
                                    super.doSetValue(strVal.substring(strVal.indexOf('/') + 1));
                                    return;
                                }
                            }

                            super.doSetValue(value);
                        }
                    };
                    ((TreeComboCellEditor) cellEditor).setSelectionModifier(new SelectionModifier() {
                        public String modify(CTreeComboItem selection) {
                            if (selection.getParentItem() != null) {
                                WorkflowPackage pkg = getProject()
                                        .getPackage(selection.getParentItem().getText());
                                if (pkg == null || pkg.isDefaultPackage())
                                    return selection.getText();
                                else
                                    return pkg.getName() + "/" + selection.getText();
                            } else {
                                // ignore packages
                                return null;
                            }
                        }
                    });

                    // populate the treecombo
                    if (colSpec.source.equals("Process")) {
                        List<WorkflowPackage> packages = getProject().getTopLevelUserVisiblePackages();
                        for (WorkflowPackage pkg : packages) {
                            CTreeComboItem packageItem = ((TreeComboCellEditor) cellEditor)
                                    .addItem(pkg.getName());
                            packageItem.setText(pkg.getName());
                            packageItem.setImage(pkg.getIconImage());
                            for (WorkflowProcess process : pkg.getProcesses()) {
                                CTreeComboItem processItem = new CTreeComboItem(packageItem, SWT.NONE);
                                processItem.setText(process.getLabel());
                                processItem.setImage(process.getIconImage());
                            }
                        }
                    } else {
                        List<WorkflowAsset> assets = getProject()
                                .getAssetList(Arrays.asList(colSpec.assetTypes));
                        Map<String, CTreeComboItem> packageItems = new HashMap<String, CTreeComboItem>();
                        for (WorkflowAsset asset : assets) {
                            String pkgName = asset.getPackage().getName();
                            CTreeComboItem packageItem = packageItems.get(pkgName);
                            if (packageItem == null) {
                                packageItem = ((TreeComboCellEditor) cellEditor).addItem(pkgName);
                                packageItem.setImage(asset.getPackage().getIconImage());
                                packageItems.put(pkgName, packageItem);
                            }
                            CTreeComboItem assetItem = new CTreeComboItem(packageItem, SWT.NONE);
                            assetItem.setText(asset.getLabel());
                            assetItem.setImage(asset.getIconImage());
                        }
                    }
                }
                if (colSpec.listener != null)
                    cellEditor.addListener(colSpec.listener);
                cellEditors[i] = cellEditor;
            }
        }
        tableViewer.setCellEditors(cellEditors);
        tableViewer.setCellModifier(cellModifier);
    }

    return tableViewer;
}

From source file:com.centurylink.mdw.plugin.designer.properties.PackageConfigurationSection.java

License:Apache License

private TableViewer createTableViewer(Table table) {
    TableViewer tableViewer = new TableViewer(table);
    tableViewer.setUseHashlookup(true);//from w ww.  j  a v  a 2  s  .c o  m

    String[] columnProps = new String[columnSpecs.size()];
    for (int i = 0; i < columnSpecs.size(); i++)
        columnProps[i] = columnSpecs.get(i).property;

    tableViewer.setColumnProperties(columnProps);

    CellEditor[] cellEditors = new CellEditor[columnSpecs.size()];
    for (int i = 0; i < columnSpecs.size(); i++) {
        ColumnSpec colSpec = columnSpecs.get(i);
        CellEditor cellEditor = null;
        if (colSpec.style != 0)
            cellEditor = new TextCellEditor(table, colSpec.style);
        else
            cellEditor = new TextCellEditor(table);
        if (colSpec.listener != null)
            cellEditor.addListener(colSpec.listener);
        cellEditors[i] = cellEditor;

        tableViewer.setCellEditors(cellEditors);
        tableViewer.setCellModifier(new PackageConfigCellModifier());
    }

    return tableViewer;
}

From source file:com.mentor.nucleus.bp.model.compare.contentmergeviewer.ElementEditingSupport.java

License:Open Source License

@Override
protected CellEditor getCellEditor(Object element) {
    if (element instanceof ObjectElementComparable) {
        ObjectElement objEle = (ObjectElement) ((ObjectElementComparable) element).getRealElement();
        CellEditor editor = null;
        if (((NonRootModelElement) objEle.getParent()).getModelRoot() instanceof Ooaofooa) {
            editor = CellModifierProvider.getCellEditor((NonRootModelElement) objEle.getParent(),
                    viewer.getTree(), objEle);
        } else {/*from   w  ww  .j  av a  2s. c  om*/
            editor = com.mentor.nucleus.bp.ui.canvas.cells.CellModifierProvider
                    .getCellEditor((NonRootModelElement) objEle.getParent(), viewer.getTree(), objEle);
        }
        final CellEditor finalEditor = editor;
        editor.addListener(new ICellEditorListener() {

            @Override
            public void editorValueChanged(boolean oldValidState, boolean newValidState) {
                if (!newValidState) {
                    viewer.setErrorMessage(finalEditor.getErrorMessage());
                } else {
                    viewer.setErrorMessage("");
                }
            }

            @Override
            public void cancelEditor() {
                viewer.setErrorMessage("");
            }

            @Override
            public void applyEditorValue() {
                viewer.setErrorMessage("");
            }
        });
        return editor;
    }
    return null;
}

From source file:com.rcpcompany.uibindings.internal.cellEditors.SimpleCellEditorFactory.java

License:Open Source License

@Override
public CellEditor create(ICellEditorFactoryContext factoryContext) {
    final IValueBindingCell cell = factoryContext.getCell();

    final IValueBinding labelBinding = cell.getLabelBinding();
    final IBindingContext context = labelBinding.getContext();
    final IObservableValue value = cell.getObjectValue();

    String preferredCellEditor = labelBinding.getArgument(Constants.ARG_PREFERRED_CELL_EDITOR, String.class,
            InternalConstants.CELL_EDITOR_TYPE_CONTROL);

    /*//  w  w  w.  j  a v a  2s. c o m
     * The original value of the cell - used it the edit is canceled.
     */
    final Object originalValue = value.getValue();

    /*
     * The simple case: the boolean editor. This case does not have a visible editor...
     */
    if (InternalConstants.CELL_EDITOR_TYPE_BUTTON.equals(preferredCellEditor)) {
        final Class<?> valueType = labelBinding.getDataType().getDataType();
        if (valueType == Boolean.class || valueType == Boolean.TYPE)
            return new ImmediateCellEditor(new Runnable() {
                @Override
                public void run() {
                    final Boolean v = (Boolean) originalValue;
                    value.setValue(v ? false : true);
                }
            });
        LogUtils.error(labelBinding,
                "modelType '" + value.getValueType() + "' specifies illegal cell editor type: '"
                        + preferredCellEditor + "'. Assumes " + InternalConstants.CELL_EDITOR_TYPE_TEXT);
        preferredCellEditor = InternalConstants.CELL_EDITOR_TYPE_TEXT;
    }

    /*
     * The general case: the widget-based editors
     */
    CellEditor ce;
    final Composite parent = factoryContext.getParent();
    if (InternalConstants.CELL_EDITOR_TYPE_STYLED_TEXT.equals(preferredCellEditor)) {
        ce = new MyStyledTextCellEditor(parent, context);
    } else if (InternalConstants.CELL_EDITOR_TYPE_DIALOG.equals(preferredCellEditor)) {
        ce = new DialogControlCellEditor(parent, cell);
    } else {
        ce = new ControlCellEditor(parent, cell);
    }

    /*
     * The binding for the text while editing
     */
    final IValueBinding editorBinding = context.addBinding().ui(ce.getControl()).model(value);
    if (labelBinding.hasArguments()) {
        editorBinding.getExtraArgumentProviders().add(labelBinding);
    }
    if (labelBinding.eIsSet(IUIBindingsPackage.Literals.BINDING__EXTRA_ARGUMENT_PROVIDERS)) {
        editorBinding.getExtraArgumentProviders().addAll(labelBinding.getExtraArgumentProviders());
    }

    editorBinding.setCell(cell);

    /*
     * Check if a special type has been specified for the cell editor
     */
    final String cellEditorType = labelBinding.getArgument(Constants.ARG_CELL_EDITOR_TYPE, String.class, null);
    if (cellEditorType != null) {
        editorBinding.type(cellEditorType);
    }

    if (ce instanceof ControlCellEditor) {
        ((ControlCellEditor) ce).setEditorBinding(editorBinding);
    } else if (ce instanceof DialogControlCellEditor) {
        ((DialogControlCellEditor) ce).setEditorBinding(editorBinding);
    }

    /*
     * We added a new binding to call finish as well...
     */
    context.finish();

    /*
     * And force an update
     */
    editorBinding.updateUI();

    ce.addListener(new ICellEditorListener() {
        @Override
        public void editorValueChanged(boolean oldValidState, boolean newValidState) {
        }

        @Override
        public void cancelEditor() {
            value.setValue(originalValue);
            editorBinding.updateUI();
            editorBinding.dispose();
        }

        @Override
        public void applyEditorValue() {
            if (editorBinding.getUIObservable() instanceof IUpdatableObservable) {
                final IUpdatableObservable u = (IUpdatableObservable) editorBinding.getUIObservable();
                u.forceUpdateValue();
            }
            editorBinding.updateUI();
            editorBinding.dispose();
        }
    });

    return ce;
}

From source file:de.dfki.iui.mmds.sdk.editors.grammar_rules.EntityEditorPart.java

License:Creative Commons License

@Override
public void createPartControl(Composite parent) {
    super.createPartControl(parent);

    // sash form is used to split the main form into two parts
    SashForm sashForm = new SashForm(frmNewForm.getBody(), SWT.NONE);
    formToolkit.adapt(sashForm);/*from w ww  . j  a v  a  2 s.c  o  m*/
    formToolkit.paintBordersFor(sashForm);

    Section sctnNewSection = formToolkit.createSection(sashForm, Section.DESCRIPTION | Section.TITLE_BAR);
    sctnNewSection.setText("Entity Rules");
    sctnNewSection.setExpanded(true);
    sctnNewSection.setDescription("Create or edit new Rules here");

    entitiesComposite = new ContentListComposite(sctnNewSection, SWT.NONE,
            Grammar_rulesPackage.eINSTANCE.getRuleset_Rules(), Grammar_rulesPackage.eINSTANCE.getEntity(),
            editor, cb);
    formToolkit.adapt(entitiesComposite);
    sctnNewSection.setClient(entitiesComposite);
    final TableViewer entityTableViewer = entitiesComposite.getTableViewer();

    // the first column where the name of the Rule can be viewed and edited
    entitiesComposite.addColumn(getString("_UI_Rule_name_feature"), COLUMN_TYPE.RULENAME);

    // the second column where the user can enable or disable the rule
    entitiesComposite.addColumn(getString("_UI_Rule_enabled_feature"), COLUMN_TYPE.ENABLED);

    // the third column where the type is set
    entitiesComposite.addColumn(getString("_UI_EntityRule_type_feature"), COLUMN_TYPE.TYPE);

    entityTableViewer.setColumnProperties(new String[] { "0", "1", "2" });

    entityTableViewer.setCellModifier(new ICellModifier() {

        @Override
        public boolean canModify(Object element, String property) {
            return true;
        }

        @Override
        public Object getValue(Object element, String property) {
            Object result = null;
            Entity rule = (Entity) element;
            switch (property) {
            case "0":
                if (rule.getName() == null) {
                    result = "";
                } else {
                    result = rule.getName() + "";
                }
                break;
            case "1":
                result = new Boolean(rule.isEnabled());
                break;
            case "2":
                result = true;
                if (rule.getType().equals(EntityType.DYNAMIC)) {
                    result = false;
                }
                break;
            }
            return result;
        }

        @Override
        public void modify(Object element, String property, Object value) {
            TableItem item = (TableItem) element;
            Entity oldValue = (Entity) item.getData();
            EAttribute feature = null;
            switch (property) {
            case "0":
                feature = Grammar_rulesPackage.eINSTANCE.getRule_Name();
                break;
            case "1":
                feature = Grammar_rulesPackage.eINSTANCE.getRule_Enabled();
                break;
            case "2":
                feature = Grammar_rulesPackage.eINSTANCE.getEntity_Type();

                if ((Boolean) value) {
                    value = "static";
                } else {
                    value = "dynamic";
                }
                break;
            }
            if (oldValue.getName() != null) {
                if ((property.equals("0") && !oldValue.getName().equals(value)) || property.equals("1")
                        || property.equals("2")) {
                    if (value.equals("static")) {
                        editor.getEditingDomain().getCommandStack().execute(SetCommand
                                .create(editor.getEditingDomain(), item.getData(), feature, EntityType.STATIC));
                    } else if (value.equals("dynamic")) {
                        editor.getEditingDomain().getCommandStack().execute(SetCommand.create(
                                editor.getEditingDomain(), item.getData(), feature, EntityType.DYNAMIC));
                    } else {
                        editor.getEditingDomain().getCommandStack().execute(
                                SetCommand.create(editor.getEditingDomain(), item.getData(), feature, value));
                    }
                }
            } else {
                editor.getEditingDomain().getCommandStack()
                        .execute(SetCommand.create(editor.getEditingDomain(), item.getData(), feature, value));
            }
        }

    });

    entityTableViewer.setCellEditors(new CellEditor[] { new TextCellEditor(entityTableViewer.getTable()),
            new CheckboxCellEditor(entityTableViewer.getTable()),
            new CheckboxCellEditor(entityTableViewer.getTable()) });

    entityTableViewer.setInput(ruleset);

    entityTableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        // This ensures that we handle selections correctly, i.e. for each
        // selected entity rule a corresponding PhraseValue Pair is
        // shown in the detail view

        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection selection = (IStructuredSelection) entityTableViewer.getSelection();
            if (selection != null && selection.size() == 1) {
                setSelectedRule((Rule) selection.getFirstElement());
                if (selectedRule != null) {
                    editor.setCurrentViewer(entityTableViewer);
                }
            } else {
                setSelectedRule(null);
            }

        }
    });

    Composite rightSide = new Composite(sashForm, SWT.NONE);
    formToolkit.adapt(rightSide);
    formToolkit.paintBordersFor(rightSide);
    rightSide.setLayout(new FillLayout(SWT.HORIZONTAL));

    SashForm sashForm_1 = new SashForm(rightSide, SWT.VERTICAL);
    formToolkit.adapt(sashForm_1);
    formToolkit.paintBordersFor(sashForm_1);

    final Section sctnNewSection_1 = formToolkit.createSection(sashForm_1, Section.TWISTIE | Section.TITLE_BAR);
    formToolkit.paintBordersFor(sctnNewSection_1);
    sctnNewSection_1.setText("Phrase Value Pairs");
    sctnNewSection_1.setExpanded(true);

    phraseMappingComposite = new ContentListComposite(sctnNewSection_1, SWT.NONE,
            Grammar_rulesPackage.eINSTANCE.getEntity_Entries(),
            Grammar_rulesPackage.eINSTANCE.getPhraseValuePair(), editor, cb);
    formToolkit.adapt(phraseMappingComposite);
    sctnNewSection_1.setClient(phraseMappingComposite);

    // phrase Column
    phraseMappingComposite.addColumn(getString("_UI_PhraseMapping_name_feature"), COLUMN_TYPE.RULENAME);

    // value Column
    phraseMappingComposite.addColumn(getString("_UI_PhraseValue_name_feature"), COLUMN_TYPE.RULENAME);

    phraseMappingComposite.getTableViewer().setColumnProperties(new String[] { "0", "1" });

    phraseMappingComposite.getTableViewer().setCellModifier(new ICellModifier() {

        @Override
        public boolean canModify(Object element, String property) {
            return true;
        }

        @Override
        public Object getValue(Object element, String property) {
            String result = "";
            PhraseValuePair pv = (PhraseValuePair) element;
            switch (property) {
            case "0":
                if (pv.getPhrase() == null) {
                    result = "";
                } else {
                    result = pv.getPhrase();
                }
                break;
            case "1":
                if (pv.getValue() == null) {
                    result = "";
                } else {
                    result = pv.getValue();
                }
                break;
            }
            return result;
        }

        @Override
        public void modify(Object element, String property, Object value) {
            TableItem item = (TableItem) element;
            PhraseValuePair pvOld = (PhraseValuePair) item.getData();
            EAttribute feature = null;
            String newString = (String) value;
            switch (property) {
            case "0":
                feature = Grammar_rulesPackage.eINSTANCE.getPhraseValuePair_Phrase();
                break;
            case "1":
                feature = Grammar_rulesPackage.eINSTANCE.getPhraseValuePair_Value();
                break;
            }
            if (!newString.equals(pvOld)) {
                editor.getEditingDomain().getCommandStack()
                        .execute(SetCommand.create(editor.getEditingDomain(), item.getData(), feature, value));
            }
        }
    });

    phraseMappingComposite.getTableViewer().setCellEditors(
            new CellEditor[] { new TextCellEditor(phraseMappingComposite.getTableViewer().getTable()),
                    new TextCellEditor(phraseMappingComposite.getTableViewer().getTable()) });

    phraseMappingComposite.getTableViewer().addSelectionChangedListener(new ISelectionChangedListener() {
        // This ensures that we handle selections correctly, i.e.
        // for each
        // selected entity rule a corresponding PhraseValue Pair is
        // shown in
        // the detail view
        //
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection selection = (IStructuredSelection) entityTableViewer.getSelection();
            if (selection != null) {
                editor.setCurrentViewer(phraseMappingComposite.getTableViewer());
            }

        }
    });

    final Label errorLabel = formToolkit.createLabel(sctnNewSection_1, "", SWT.NONE);
    sctnNewSection_1.setTextClient(errorLabel);
    errorLabel.setForeground(
            getEditorSite().getWorkbenchWindow().getWorkbench().getDisplay().getSystemColor(SWT.COLOR_RED));

    CellEditor[] test = phraseMappingComposite.getTableViewer().getCellEditors();
    final CellEditor e = test[0];
    if (e instanceof TextCellEditor) {
        e.setValidator(new ABNFValidator());
        e.addListener(new ICellEditorListener() {
            @Override
            public void applyEditorValue() {
                setErrorMessage(null);
            }

            @Override
            public void cancelEditor() {
                setErrorMessage(null);
            }

            @Override
            public void editorValueChanged(boolean oldValidState, boolean newValidState) {
                setErrorMessage(e.getErrorMessage());
            }

            private void setErrorMessage(String errorMessage) {
                if (errorMessage != null) {
                    System.out.println(errorMessage);
                    errorLabel.setText(errorMessage);
                    sctnNewSection_1.layout();
                } else {
                    errorLabel.setText("");
                    sctnNewSection_1.layout();
                }
            }
        });
    }

    Section sctnNewSection_2 = formToolkit.createSection(sashForm_1, Section.TWISTIE | Section.TITLE_BAR);
    formToolkit.paintBordersFor(sctnNewSection_2);
    sctnNewSection_2.setText("Interpretation");
    sctnNewSection_2.setExpanded(true);

    treeViewerComposite = new EObjectTreeViewerComposite(sctnNewSection_2, SWT.NONE, editor, entitiesComposite);
    formToolkit.adapt(treeViewerComposite);
    formToolkit.paintBordersFor(treeViewerComposite);
    sctnNewSection_2.setClient(treeViewerComposite);

    sashForm_1.setWeights(new int[] { 1, 1 });
    sashForm.setWeights(new int[] { 1, 1 });
    setSelectedRule(null);

}

From source file:de.dfki.iui.mmds.sdk.editors.grammar_rules.UtteranceEditorPart.java

License:Creative Commons License

/**
 * @param parent//from w  ww. j  a  v  a 2 s . c  om
 *            This class is called from the init() method. Here all the SWT
 *            and JFace components in the form are drawn.
 */
@Override
public void createPartControl(Composite parent) {
    super.createPartControl(parent);

    // sash form is used to split the main form into two parts
    SashForm sashForm = new SashForm(frmNewForm.getBody(), SWT.NONE);
    formToolkit.adapt(sashForm);
    formToolkit.paintBordersFor(sashForm);

    Section sctnNewSection = formToolkit.createSection(sashForm, Section.DESCRIPTION | Section.TITLE_BAR);

    formToolkit.paintBordersFor(sctnNewSection);
    sctnNewSection.setText("Utterance Rules");
    sctnNewSection.setExpanded(true);
    sctnNewSection.setDescription("Create or edit new Rules here");

    utteranceListComposite = new ContentListComposite(sctnNewSection, SWT.NONE,
            Grammar_rulesPackage.eINSTANCE.getRuleset_Rules(), Grammar_rulesPackage.eINSTANCE.getUtterance(),
            editor, cb);
    formToolkit.adapt(utteranceListComposite);
    sctnNewSection.setClient(utteranceListComposite);
    final TableViewer utterancesTableViewer = utteranceListComposite.getTableViewer();

    // the first column where the name of the Rule can be viewed and edited
    utteranceListComposite.addColumn(getString("_UI_Rule_name_feature"), COLUMN_TYPE.RULENAME);

    // the second column where the user can enable or disable the rule
    utteranceListComposite.addColumn(getString("_UI_Rule_enabled_feature"), COLUMN_TYPE.ENABLED);

    utterancesTableViewer.setColumnProperties(new String[] { "0", "1" });

    // setting a cell modifier so the rules can be edited in the TableViewer
    // directly
    utterancesTableViewer.setCellModifier(new ICellModifier() {

        @Override
        public boolean canModify(Object element, String property) {
            return true;
        }

        @Override
        public Object getValue(Object element, String property) {
            Object result = null;
            Rule rule = (Rule) element;
            // checking to see which property should be shown, name or
            // isEnabled and what is going to be shown in the table
            switch (property) {
            case "0":
                if (rule.getName() == null) {
                    result = "";
                } else {
                    result = rule.getName() + "";
                }
                break;
            case "1":
                result = new Boolean(rule.isEnabled());
                break;
            }
            return result;
        }

        @Override
        public void modify(Object element, String property, Object value) {
            // getting the selected element
            TableItem item = (TableItem) element;
            // getting the selected rule
            Rule oldValue = (Rule) item.getData();
            EAttribute feature = null;
            // depending on which property should be edited a different
            // feature is set for the setCommand
            switch (property) {
            case "0":
                feature = Grammar_rulesPackage.eINSTANCE.getRule_Name();
                break;
            case "1":
                feature = Grammar_rulesPackage.eINSTANCE.getRule_Enabled();
                break;
            }
            if (oldValue.getName() != null) {
                // if the name has not changed do nothing
                if ((property.equals("0") && !oldValue.getName().equals(value)) || property.equals("1")) {
                    editor.getEditingDomain().getCommandStack().execute(
                            SetCommand.create(editor.getEditingDomain(), item.getData(), feature, value));

                }
            } else {
                editor.getEditingDomain().getCommandStack()
                        .execute(SetCommand.create(editor.getEditingDomain(), item.getData(), feature, value));
            }
        }

    });

    // setting a cell editor for both properties of the Utterance Rules that
    // need to be edited
    utterancesTableViewer
            .setCellEditors(new CellEditor[] { new TextCellEditor(utterancesTableViewer.getTable()),
                    new CheckboxCellEditor(utterancesTableViewer.getTable()) });
    utterancesTableViewer.setInput(ruleset);

    // on selection changed update the details view (the PhraseMapping Table
    // Viewer and the Interpretation TreeViewer
    utterancesTableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        // This ensures that we handle selections correctly.
        //
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection selection = (IStructuredSelection) utterancesTableViewer.getSelection();
            if (selection != null && selection.size() == 1) {
                setSelectedUtterance((Utterance) selection.getFirstElement());
                editor.setCurrentViewer(utterancesTableViewer);
            } else {
                setSelectedUtterance(null);
            }
        }
    });

    Composite rightSide = new Composite(sashForm, SWT.NONE);
    formToolkit.adapt(rightSide);
    formToolkit.paintBordersFor(rightSide);
    rightSide.setLayout(new FillLayout(SWT.HORIZONTAL));

    SashForm sashForm_1 = new SashForm(rightSide, SWT.VERTICAL);
    formToolkit.adapt(sashForm_1);
    formToolkit.paintBordersFor(sashForm_1);

    final Section sctnNewSection_1 = formToolkit.createSection(sashForm_1, Section.TWISTIE | Section.TITLE_BAR);
    formToolkit.paintBordersFor(sctnNewSection_1);
    sctnNewSection_1.setText("Phrases");
    sctnNewSection_1.setExpanded(true);

    phraseMappingComposite = new ContentListComposite(sctnNewSection_1, SWT.NONE,
            Grammar_rulesPackage.eINSTANCE.getUtterance_Phrases(), EcorePackage.eINSTANCE.getEString(), editor,
            cb);
    formToolkit.adapt(phraseMappingComposite);
    sctnNewSection_1.setClient(phraseMappingComposite);

    // phrase Column
    phraseMappingComposite.addColumn(getString("_UI_PhraseMapping_name_feature"), COLUMN_TYPE.RULENAME);

    phraseMappingComposite.getTableViewer().setColumnProperties(new String[] { "0" });

    // cell modifier for changing the phrases in the table
    phraseMappingComposite.getTableViewer().setCellModifier(new ICellModifier() {

        @Override
        public boolean canModify(Object element, String property) {
            return true;
        }

        @Override
        public Object getValue(Object element, String property) {
            return element;
        }

        @Override
        public void modify(Object element, String property, Object value) {
            TableItem item = (TableItem) element;
            String oldValue = (String) item.getData();
            EAttribute feature = Grammar_rulesPackage.eINSTANCE.getUtterance_Phrases();
            String newString = (String) value;
            if (oldValue == null || !oldValue.equals(newString)) {
                // execute a replace comand where the oldPhrase is
                // updated with a new Phrase
                for (String phrase : selectedUtterance.getPhrases()) {
                    if (phrase.equals(newString)) {
                        errorLabel.setText("Phrases must be unique");
                        sctnNewSection_1.layout();
                        return;
                    }
                }
                ReplaceCommand cmd = new ReplaceCommand(editor.getEditingDomain(), selectedUtterance, feature,
                        oldValue, newString);

                editor.getEditingDomain().getCommandStack().execute(cmd);
            }

        }

    });

    phraseMappingComposite.getTableViewer().setCellEditors(
            new CellEditor[] { new TextCellEditor(phraseMappingComposite.getTableViewer().getTable()) });

    // this label is used to show the error that is given with a wrong
    // Phrase input
    errorLabel = formToolkit.createLabel(sctnNewSection_1, "", SWT.NONE);
    sctnNewSection_1.setTextClient(errorLabel);
    errorLabel.setForeground(
            getEditorSite().getWorkbenchWindow().getWorkbench().getDisplay().getSystemColor(SWT.COLOR_RED));

    // to set a validation of the phrases a listener is added to the cell
    // editor of the phrase mapping table.
    CellEditor[] test = phraseMappingComposite.getTableViewer().getCellEditors();
    for (final CellEditor e : test) {
        if (e instanceof TextCellEditor) {
            // the validator is set to a class designed previously, called
            // ABNF validator
            e.setValidator(new ABNFValidator());
            e.addListener(new ICellEditorListener() {
                @Override
                public void applyEditorValue() {
                    setErrorMessage(null);
                }

                @Override
                public void cancelEditor() {
                    setErrorMessage(null);
                }

                // here the error message is set
                @Override
                public void editorValueChanged(boolean oldValidState, boolean newValidState) {
                    setErrorMessage(e.getErrorMessage());
                }

                // here the error message is set to the a label
                private void setErrorMessage(String errorMessage) {
                    if (errorMessage != null) {
                        errorLabel.setText(errorMessage);
                        sctnNewSection_1.layout();
                    } else {
                        errorLabel.setText("");
                        sctnNewSection_1.layout();
                    }
                }
            });
        }
    }

    Section sctnNewSection_2 = formToolkit.createSection(sashForm_1, Section.TWISTIE | Section.TITLE_BAR);
    formToolkit.paintBordersFor(sctnNewSection_2);
    sctnNewSection_2.setText("Interpretation");
    sctnNewSection_2.setExpanded(true);

    treeViewerComposite = new EObjectTreeViewerComposite(sctnNewSection_2, SWT.NONE, editor,
            utteranceListComposite);
    formToolkit.adapt(treeViewerComposite);
    formToolkit.paintBordersFor(treeViewerComposite);
    sctnNewSection_2.setClient(treeViewerComposite);

    sashForm_1.setWeights(new int[] { 1, 1 });
    sashForm.setWeights(new int[] { 1, 1 });
    setSelectedUtterance(null);
}

From source file:de.ovgu.featureide.fm.ui.editors.featuremodel.commands.renaming.FeatureLabelEditManager.java

License:Open Source License

@Override
protected void initCellEditor() {
    final CellEditor cellEditor = getCellEditor();
    final Control control = cellEditor.getControl();
    final String oldValue = ((FeatureEditPart) getEditPart()).getFeature().getName();

    control.setFont(DEFAULT_FONT);/* w w  w .j  a  va  2 s.  c  o m*/
    cellEditor.setValue(oldValue);

    cellEditor.addListener(new ICellEditorListener() {
        private ToolTip tooltip;

        public void editorValueChanged(boolean oldValidState, boolean newValidState) {
            boolean notvalid;
            closeTooltip();
            String value = (String) cellEditor.getValue();
            if (!value.equals(oldValue)) {
                if (value.equalsIgnoreCase(oldValue))
                    createTooltip(
                            "It is not recommended to change upper and lower case. You currently try to rename "
                                    + oldValue + " to " + value + ".",
                            SWT.ICON_WARNING);
                // TODO #455 wrong usage of extension
                else if ((notvalid = !featureModel.isValidFeatureName(value))
                        && !featureModel.isFeatureModelingComposer())
                    createTooltip("The name need to be a valid Java identifier.", SWT.ICON_ERROR);
                else if (notvalid)
                    createTooltip("The following Characaters are not allowed \", (, )", SWT.ICON_ERROR);
                else if (featureModel.getFeatureNames().contains(value))
                    createTooltip("This name is already used for another feature.", SWT.ICON_ERROR);
            }
        }

        public void cancelEditor() {
            closeTooltip();
        }

        public void applyEditorValue() {
            closeTooltip();
        }

        private void createTooltip(String message, int icon) {
            tooltip = new ToolTip(control.getShell(), SWT.BALLOON | icon);
            tooltip.setAutoHide(false);
            tooltip.setLocation(control.toDisplay(control.getSize().x / 2, control.getSize().y + 5));
            tooltip.setText("Invalid Name");
            tooltip.setMessage(message);
            tooltip.setVisible(true);
        }

        private void closeTooltip() {
            if (tooltip != null) {
                tooltip.setVisible(false);
                tooltip = null;
            }
        }
    });
}

From source file:featureide.fm.ui.editors.featuremodel.commands.renaming.FeatureLabelEditManager.java

License:Open Source License

@Override
protected void initCellEditor() {
    final CellEditor cellEditor = getCellEditor();
    final Control control = cellEditor.getControl();
    final String oldValue = ((FeatureEditPart) getEditPart()).getFeatureModel().getName();

    control.setFont(DEFAULT_FONT);//from  w  ww.  ja  v a 2  s. c  om
    cellEditor.setValue(oldValue);

    cellEditor.addListener(new ICellEditorListener() {
        private ToolTip tooltip;

        @Override
        public void editorValueChanged(boolean oldValidState, boolean newValidState) {
            closeTooltip();
            String value = (String) cellEditor.getValue();
            if (!value.equals(oldValue)) {
                if (value.equalsIgnoreCase(oldValue))
                    createTooltip(
                            "It is not recommended to change upper and lower case. You currently try to rename "
                                    + oldValue + " to " + value + ".",
                            SWT.ICON_WARNING);
                else if (!FeatureRenamingCommand.isValidJavaIdentifier(value))
                    createTooltip("The name need to be a valid Java identifier.", SWT.ICON_ERROR);
                else if (featureModel.getFeatureNames().contains(value))
                    createTooltip("This name is already used for another feature.", SWT.ICON_ERROR);
            }
        }

        @Override
        public void cancelEditor() {
            closeTooltip();
        }

        @Override
        public void applyEditorValue() {
            closeTooltip();
        }

        private void createTooltip(String message, int icon) {
            tooltip = new ToolTip(control.getShell(), SWT.BALLOON | icon);
            tooltip.setAutoHide(false);
            tooltip.setLocation(control.toDisplay(control.getSize().x / 2, control.getSize().y + 5));
            tooltip.setText("Invalid Name");
            tooltip.setMessage(message);
            tooltip.setVisible(true);
        }

        private void closeTooltip() {
            if (tooltip != null) {
                tooltip.setVisible(false);
                tooltip = null;
            }
        }
    });
}

From source file:gov.nasa.ensemble.common.ui.treetable.TreeTableViewer.java

License:Open Source License

private void activateCellEditor(TreeItem item, Object element, Object facet, int columnIndex,
        ITreeTableColumn column) {/*from w w  w.ja  v a 2s. c  o  m*/
    trace.debug("activateCellEditor : " + facet);

    boolean edited = column.editOnActivate(facet, model.getUndoContext(), item, columnIndex);
    if (edited) {
        return;
    }

    CellEditor cellEditor = column.getCellEditor(getTree(), facet);
    if (cellEditorActionHandler != null) {
        cellEditorActionHandler.addCellEditor(cellEditor);
    }
    if (cellEditor == null) {
        return; // no editor
    }
    if (currentCellEditorHelper != null) {
        currentCellEditorHelper.applyEditorValue();
        currentCellEditorHelper = null;
    }
    CellEditorHelper helper = new CellEditorHelper(facet, column, cellEditor, element);
    cellEditor.addListener(helper);
    @SuppressWarnings("unchecked")
    Font font = column.getFont(facet);
    if (font == null) {
        font = getTreeTableLabelProvider().getFont(element);
    }
    cellEditor.activate();
    LayoutData layoutData = cellEditor.getLayoutData();
    treeEditor.grabHorizontal = layoutData.grabHorizontal;
    treeEditor.horizontalAlignment = layoutData.horizontalAlignment;
    treeEditor.minimumWidth = layoutData.minimumWidth;
    Control control = cellEditor.getControl();
    if (control != null) {
        control.setFont(font);
        control.addFocusListener(helper);
        control.forceFocus();
        int[] order = getTree().getColumnOrder();
        int editorIndex = order[columnIndex];
        treeEditor.setEditor(control, item, editorIndex);
    }
    cellEditor.setFocus();
    currentCellEditorHelper = helper;
}

From source file:hydrograph.ui.propertywindow.widgets.listeners.grid.GridChangeListener.java

License:Apache License

/**
 * Attach cell change listener./*w w  w .j  av  a  2s. com*/
 */
public void attachCellChangeListener() {
    for (CellEditor cellEditor : cellEditors) {
        if (cellEditor instanceof TextCellEditor)
            cellEditor.addListener(new GridCellEditorListener(propertyDialogButtonBar));
        else if (cellEditor instanceof CustomComboBoxCellEditor) {
            attachComboChangeListener(cellEditor);
        }
    }
}