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

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

Introduction

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

Prototype

public Table getTable() 

Source Link

Document

Returns this table viewer's table control.

Usage

From source file:com.trivadis.loganalysis.ui.ChartCustomizationPanel.java

License:Open Source License

public ChartCustomizationPanel(final List<IValueProvider> valueProviders, final Composite section,
        final int style, final FormToolkit toolkit, final IChart chart) {
    super(section, style);
    this.valueProviders = valueProviders;
    this.setLayout(new GridLayout(2, false));
    final Composite left = toolkit.createComposite(this, SWT.BORDER);
    left.setLayout(new GridLayout(1, false));
    left.setLayoutData(new GridDataBuilder().heightHint(220).build());
    new Label(left, SWT.BOLD).setText("Series:");
    series = new WritableList(chart.getSeries(), Serie.class);
    final TableViewer tableViewer = tableSeries(left, toolkit);
    chart.addPropertyChangeListener(Chart.PROPERTY_SERIES, new PropertyChangeListener() {
        public void propertyChange(final PropertyChangeEvent evt) {
            tableViewer.refresh();/*  ww  w.  j  a  va  2s.c  om*/
        }
    });

    final Button chkShowOldCollections = new Button(left, SWT.CHECK);
    chkShowOldCollections.setSelection(false);
    chkShowOldCollections.setText("Old Collections");

    final Button chkShowYoungCollections = new Button(left, SWT.CHECK);
    chkShowYoungCollections.setSelection(false);
    chkShowYoungCollections.setText("Young Collections");

    bindCheckbox(chkShowYoungCollections, Chart.class, chart, "showYoungCollections");
    bindCheckbox(chkShowOldCollections, Chart.class, chart, "showOldCollections");

    new Label(left, SWT.NONE).setLayoutData(new GridDataBuilder().fillVertical().build());
    tableViewer.getTable().setLayoutData(new GridDataBuilder().fillVertical().build());
    final Composite right = toolkit.createComposite(this, SWT.BORDER);
    right.setLayoutData(new GridDataBuilder().heightHint(220).build());
    right.setLayout(new GridLayout(2, false));

    final Label lblTitleRight = new Label(right, SWT.BOLD);
    lblTitleRight.setText("Add Serie:");
    lblTitleRight.setLayoutData(new GridDataBuilder().horizontalSpan(2).build());
    new Label(right, SWT.NONE).setText("Label:");
    txtLabel = new Text(right, SWT.BORDER);

    new Label(right, SWT.NONE).setText("X-Axis:");
    final ComboViewer cboXAxis = comboAxisSelection(right, "X-Axis:");

    new Label(right, SWT.NONE).setText("Y-Axis:");
    final ComboViewer cboYAxis = comboAxisSelection(right, "Y-Axis:");

    new Label(right, SWT.NONE).setText("");
    final Composite pnlCheckboxes = composite(right, SWT.NONE, new FillLayoutBuilder().vertical());
    final Button chkLine = new Button(pnlCheckboxes, SWT.CHECK);
    chkLine.setSelection(true);
    chkLine.setText("line");

    button(chart, left, "Remove Serie", new SelectionAdapter() {
        @Override
        public void widgetSelected(final SelectionEvent e) {
            final ISelection selection = tableViewer.getSelection();
            if (selection instanceof StructuredSelection) {
                final Serie element = (Serie) ((StructuredSelection) selection).getFirstElement();
                if (element != null) {
                    series.remove(element);
                    chart.removed(element);
                }
            }
        }

    });
    new Label(right, SWT.NONE).setLayoutData(new GridDataBuilder().horizontalSpan(2).fill().build());
    new Label(right, SWT.NONE);
    button(chart, right, "Add Serie", new SelectionAdapter() {
        @Override
        public void widgetSelected(final SelectionEvent e) {
            final IValueProvider xValue = getValue(cboXAxis);
            final IValueProvider yValue = getValue(cboYAxis);
            if (areAxisSelected(xValue, yValue) && isLabelNotEmpty() && hasSpace()) {
                final Serie serie = new Serie(txtLabel.getText(),
                        new Axis(AxisType.X, "", new Color(255, 0, 0), xValue),
                        new Axis(AxisType.Y, "", new Color(255, 255, 0), yValue));
                serie.setDotted(!chkLine.getSelection());
                series.add(serie);
                chart.added(serie);
            }
        }

        protected boolean hasSpace() {
            return series.size() < MAX_NUMBER_OF_SERIES;
        }

        protected boolean isLabelNotEmpty() {
            return txtLabel.getText() != null && !txtLabel.getText().equals("");
        }

        protected boolean areAxisSelected(final IValueProvider xValue, final IValueProvider yValue) {
            return xValue != null && yValue != null;
        }

        private IValueProvider getValue(final ComboViewer cboXAxis) {
            IValueProvider retVal = null;
            final ISelection selection = cboXAxis.getSelection();
            if (selection instanceof StructuredSelection) {
                final StructuredSelection ss = (StructuredSelection) selection;
                retVal = (IValueProvider) ss.getFirstElement();
            }
            return retVal;
        }

    });
}

From source file:com.worldline.awltech.i18ntools.editor.ui.EditorDefaultMessageEditingSupport.java

License:Open Source License

public EditorDefaultMessageEditingSupport(TableViewer viewer) {
    super(viewer);
    this.viewer = viewer;
    this.cellEditor = new TextCellEditor(viewer.getTable());
}

From source file:com.worldline.awltech.i18ntools.editor.ui.EditorLocalizedMessageEditingSupport.java

License:Open Source License

public EditorLocalizedMessageEditingSupport(TableViewer viewer) {
    super(viewer);
    this.viewer = viewer;
    this.cellEditor = new TextCellEditor(viewer.getTable());
}

From source file:de.blizzy.backup.ErrorsDialog.java

License:Open Source License

@Override
protected Control createDialogArea(Composite parent) {
    Composite composite = (Composite) super.createDialogArea(parent);
    ((GridLayout) composite.getLayout()).numColumns = 1;

    TableViewer viewer = new TableViewer(composite,
            SWT.SINGLE | SWT.FULL_SELECTION | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
    viewer.setContentProvider(new ErrorsContentProvider());
    viewer.setLabelProvider(new ErrorsLabelProvider(parent.getDisplay()));

    Table table = viewer.getTable();
    TableLayout layout = new TableLayout();
    table.setLayout(layout);/*w  w w.  ja va 2 s . c  o m*/
    table.setHeaderVisible(true);
    table.setLinesVisible(true);
    GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
    gd.widthHint = convertWidthInCharsToPixels(80);
    gd.heightHint = convertHeightInCharsToPixels(15);
    table.setLayoutData(gd);

    TableColumn col = new TableColumn(table, SWT.LEFT);
    col.setText(Messages.Title_Date);
    layout.addColumnData(new ColumnPixelData(convertWidthInCharsToPixels(16) + 20, true));

    col = new TableColumn(table, SWT.LEFT);
    col.setText(Messages.Title_FileOrFolder);
    layout.addColumnData(new ColumnWeightData(40, true));

    col = new TableColumn(table, SWT.LEFT);
    col.setText(Messages.Title_Error);
    layout.addColumnData(new ColumnWeightData(40, true));

    viewer.setInput(errors);

    return composite;
}

From source file:de.defmacro.dandelion.internal.ui.views.apropos.AproposView.java

License:Open Source License

private TableColumn makeColumn(final TableViewer viewer, final int style, final TSortBy sortBy) {
    TableColumn column = new TableColumn(viewer.getTable(), style);
    column.addSelectionListener(new ColumnSortListener(viewer, sortBy));
    return column;
}

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

License:Creative Commons License

protected void addElementToTable(TableViewer tableViewer, EObject container, EStructuralFeature feature,
        Object newValue) {/* w ww  .  j  av a2 s .com*/
    Command cmd = AddCommand.create(editor.getEditingDomain(), container, feature, newValue);
    editor.getEditingDomain().getCommandStack().execute(cmd);
    Table table = tableViewer.getTable();
    tableViewer.refresh();
    tableViewer.setSelection(new StructuredSelection(tableViewer.getElementAt(table.getItemCount() - 1)), true);
    // hickhack
    if (newValue instanceof PhraseMapping) {
        ((PhraseMapping) newValue).setDescription(String.valueOf(table.getItemCount()));
    }

}

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

License:Creative Commons License

protected void moveUpSelectedElements(TableViewer tableViewer, EObject container, EStructuralFeature feature) {
    CompoundCommand subcommands = new CompoundCommand();
    int[] selectedIndices = tableViewer.getTable().getSelectionIndices();
    Arrays.sort(selectedIndices);
    if (selectedIndices[0] == 0)
        return;/*from w  w  w .  j a va  2s .  co m*/
    for (int i = 0; i < selectedIndices.length; ++i) {
        int sourceIndex, targetIndex;
        if (feature instanceof EAttribute) {
            sourceIndex = selectedIndices[i];
            targetIndex = selectedIndices[i] - 1;
        } else {
            sourceIndex = ((List<?>) container.eGet(feature))
                    .indexOf(tableViewer.getElementAt(selectedIndices[i]));
            targetIndex = ((List<?>) container.eGet(feature))
                    .indexOf(tableViewer.getElementAt(selectedIndices[i] - 1));
        }
        subcommands.append(
                new MoveCommand(editor.getEditingDomain(), container, feature, sourceIndex, targetIndex));
    }
    editor.getEditingDomain().getCommandStack().execute(subcommands.unwrap());
}

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

License:Creative Commons License

protected void moveDownSelectedElements(TableViewer tableViewer, EObject container,
        EStructuralFeature feature) {//from ww  w .  ja  v  a 2s .  c  o  m
    CompoundCommand subcommands = new CompoundCommand();
    int[] selectedIndices = tableViewer.getTable().getSelectionIndices();
    Arrays.sort(selectedIndices);
    ArrayUtils.reverse(selectedIndices);
    if (selectedIndices[0] == tableViewer.getTable().getItemCount() - 1)
        return;
    for (int i = 0; i < selectedIndices.length; ++i) {
        int sourceIndex, targetIndex;
        if (feature instanceof EAttribute) {
            sourceIndex = selectedIndices[i];
            targetIndex = selectedIndices[i] + 1;
        } else {
            sourceIndex = ((List) container.eGet(feature))
                    .indexOf(tableViewer.getElementAt(selectedIndices[i]));
            targetIndex = ((List) container.eGet(feature))
                    .indexOf(tableViewer.getElementAt(selectedIndices[i] + 1));
        }
        subcommands.append(
                new MoveCommand(editor.getEditingDomain(), container, feature, sourceIndex, targetIndex));
    }
    editor.getEditingDomain().getCommandStack().execute(subcommands.unwrap());
}

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);/*  www . j  a  v  a2 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.SemanticMappingEditorPart.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  w  w .j  a  v  a  2s. com*/
    formToolkit.paintBordersFor(sashForm);

    SashForm sashForm_2 = new SashForm(sashForm, SWT.VERTICAL);
    formToolkit.adapt(sashForm_2);
    formToolkit.paintBordersFor(sashForm_2);

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

    rulesComposite = new ContentListComposite(sctnNewSection, SWT.NONE,
            Grammar_rulesPackage.eINSTANCE.getRuleset_Rules(),
            Grammar_rulesPackage.eINSTANCE.getSemanticMapping(), editor, cb);
    formToolkit.adapt(rulesComposite);
    sctnNewSection.setClient(rulesComposite);
    final TableViewer rulesTableViewer = rulesComposite.getTableViewer();

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

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

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

    rulesTableViewer.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;
            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) {
            TableItem item = (TableItem) element;
            Rule oldValue = (Rule) 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;
            }
            if (oldValue.getName() != null) {
                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));
            }
        }
    });

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

    rulesTableViewer.setInput(ruleset);

    rulesTableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection selection = (IStructuredSelection) rulesTableViewer.getSelection();
            if (selection != null && selection.size() == 1) {
                setSelectedSemanticMapping((SemanticMapping) selection.getFirstElement());
                editor.setCurrentViewer(rulesTableViewer);
            } else {
                setSelectedSemanticMapping(null);
            }
        }
    });

    Section sctnSemanticMappingInterpretation = formToolkit.createSection(sashForm_2,
            Section.TWISTIE | Section.TITLE_BAR);
    formToolkit.paintBordersFor(sctnSemanticMappingInterpretation);
    sctnSemanticMappingInterpretation.setText("Semantic Mapping Interpretation");
    sctnSemanticMappingInterpretation.setExpanded(true);

    ruleTreeViewerComposite = new EObjectTreeViewerComposite(sctnSemanticMappingInterpretation, SWT.NONE,
            editor, rulesComposite);
    formToolkit.adapt(ruleTreeViewerComposite);
    formToolkit.paintBordersFor(ruleTreeViewerComposite);
    sctnSemanticMappingInterpretation.setClient(ruleTreeViewerComposite);

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

    SashForm sashForm_3 = new SashForm(sashForm_1, SWT.NONE);
    formToolkit.adapt(sashForm_3);
    formToolkit.paintBordersFor(sashForm_3);

    Section sctnPhraseMappings = formToolkit.createSection(sashForm_3, Section.TWISTIE | Section.TITLE_BAR);
    formToolkit.paintBordersFor(sctnPhraseMappings);
    sctnPhraseMappings.setText("Phrase Mappings");
    sctnPhraseMappings.setExpanded(true);

    phraseMappingComposite = new ContentListComposite(sctnPhraseMappings, SWT.NONE,
            Grammar_rulesPackage.eINSTANCE.getSemanticMapping_PhraseMappings(),
            Grammar_rulesPackage.eINSTANCE.getPhraseMapping(), editor, cb);

    final TableViewer phraseMappingTableViewer = phraseMappingComposite.getTableViewer();

    formToolkit.adapt(phraseMappingComposite);
    sctnPhraseMappings.setClient(phraseMappingComposite);

    // name Column
    phraseMappingComposite.addColumn("Description", COLUMN_TYPE.RULENAME);

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

    phraseMappingTableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        // This ensures that we handle selections correctly.
        //
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection selection = (IStructuredSelection) phraseMappingTableViewer.getSelection();
            if (selection != null && selection.size() == 1) {
                setSelectedPhraseMapping((PhraseMapping) selection.getFirstElement());
                editor.setCurrentViewer(phraseMappingTableViewer);
            } else {
                setSelectedPhraseMapping(null);
            }
        }
    });

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

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

        @Override
        public Object getValue(Object element, String property) {
            Object result = null;
            PhraseMapping selectedPhraseM = (PhraseMapping) element;
            if (selectedPhraseM != null) {
                if (selectedPhraseM.getDescription() == null) {
                    result = "";
                } else {
                    result = selectedPhraseM.getDescription() + "";
                }
            }
            return result;
        }

        @Override
        public void modify(Object element, String property, Object value) {
            TableItem item = (TableItem) element;
            PhraseMapping oldPhraseM = (PhraseMapping) item.getData();
            EAttribute feature = Grammar_rulesPackage.eINSTANCE.getPhraseMapping_Description();
            if (oldPhraseM.getDescription() == null || !oldPhraseM.getDescription().equals(value)) {
                editor.getEditingDomain().getCommandStack()
                        .execute(SetCommand.create(editor.getEditingDomain(), oldPhraseM, feature, value));
            }
        }
    });

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

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

    phraseComposite = new ContentListComposite(sctnNewSection_1, SWT.NONE,
            Grammar_rulesPackage.eINSTANCE.getPhraseMapping_Phrases(), EcorePackage.eINSTANCE.getEString(),
            editor, cb);
    formToolkit.adapt(phraseComposite);
    sctnNewSection_1.setClient(phraseComposite);
    TableViewer phraseTableViewer = phraseComposite.getTableViewer();

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

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

    phraseTableViewer.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.getPhraseMapping_Phrases();
            String newString = (String) value;
            if (oldValue == null || !oldValue.equals(newString)) {
                // execute a replace command where the oldPhrase is
                // updated with a new Phrase
                for (String phrase : selectedPhraseMapping.getPhrases()) {
                    if (phrase.equals(newString)) {
                        errorLabel.setText("Phrases must be unique");
                        sctnNewSection_1.layout();
                        return;
                    }
                }
                ReplaceCommand cmd = new ReplaceCommand(editor.getEditingDomain(), selectedPhraseMapping,
                        feature, oldValue, newString);

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

    phraseTableViewer.setCellEditors(new CellEditor[] { new TextCellEditor(phraseTableViewer.getTable()) });
    errorLabel = formToolkit.createLabel(sctnNewSection_1, "", SWT.NONE);
    sctnNewSection_1.setTextClient(errorLabel);
    errorLabel.setForeground(
            getEditorSite().getWorkbenchWindow().getWorkbench().getDisplay().getSystemColor(SWT.COLOR_RED));

    sashForm_3.setWeights(new int[] { 124, 159 });

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

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

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

    setSelectedSemanticMapping(null);
}