Example usage for org.eclipse.jface.viewers CheckboxTableViewer setCheckStateProvider

List of usage examples for org.eclipse.jface.viewers CheckboxTableViewer setCheckStateProvider

Introduction

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

Prototype

public void setCheckStateProvider(ICheckStateProvider checkStateProvider) 

Source Link

Document

Sets the ICheckStateProvider for this CheckboxTreeViewer .

Usage

From source file:com.amalto.workbench.dialogs.SelectImportedModulesDialog.java

License:Open Source License

CheckboxTableViewer createTableViewer(Composite parent, String columnName, IContentProvider contentProvider,
        ILabelProvider lableProvider) {/*from  w  w w .java2s.  com*/
    Composite com = new Composite(parent, SWT.NONE);
    com.setLayout(new GridLayout(1, false));
    final CheckboxTableViewer viewer = CheckboxTableViewer.newCheckList(com,
            SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.CHECK | SWT.BORDER);
    viewer.setCheckStateProvider(new ICheckStateProvider() {

        public boolean isChecked(Object element) {
            return true;
        }

        public boolean isGrayed(Object element) {
            return false;
        }
    });
    GridDataFactory.fillDefaults().grab(true, true).applyTo(viewer.getControl());
    viewer.getTable().setLinesVisible(true);
    viewer.setContentProvider(contentProvider);
    viewer.getTable().setHeaderVisible(true);
    TableLayout lay = new TableLayout();
    TableColumn column = new TableColumn(viewer.getTable(), SWT.CENTER);
    column.setText(columnName);
    lay.addColumnData(new ColumnWeightData(200, 100));
    viewer.getTable().setLayout(lay);
    viewer.setLabelProvider(lableProvider);

    ToolBar toolBar = new ToolBar(com, SWT.HORIZONTAL | SWT.FLAT);

    createToolBarItem(toolBar, Messages.RepositoryCheckTreeViewer_SelectAll, new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            viewer.setAllChecked(true);
        }
    });
    createToolBarItem(toolBar, Messages.RepositoryCheckTreeViewer_DeselectAll, new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            viewer.setAllChecked(false);
        }
    });
    return viewer;
}

From source file:com.archimatetool.editor.preferences.ConnectionsPreferencePage.java

License:Open Source License

private CheckboxTableViewer createRelationsTable(Composite parent) {
    final CheckboxTableViewer viewer = CheckboxTableViewer.newCheckList(parent, SWT.BORDER);
    GridData gd = new GridData(GridData.FILL_HORIZONTAL);
    gd.heightHint = 80;/*from ww w. j  av a  2 s . c o  m*/
    viewer.getTable().setLayoutData(gd);

    viewer.setLabelProvider(new LabelProvider() {
        @Override
        public String getText(Object element) {
            return ArchimateLabelProvider.INSTANCE.getDefaultName((EClass) element);
        }

        @Override
        public Image getImage(Object element) {
            return ArchimateLabelProvider.INSTANCE.getImage(element);
        }
    });

    viewer.setContentProvider(new IStructuredContentProvider() {
        @Override
        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
        }

        @Override
        public void dispose() {
        }

        @Override
        public Object[] getElements(Object inputElement) {
            return ConnectionPreferences.RELATION_KEYMAP.keySet().toArray();
        }
    });

    viewer.setCheckStateProvider(new ICheckStateProvider() {
        @Override
        public boolean isGrayed(Object element) {
            return false;
        }

        @Override
        public boolean isChecked(Object element) {
            int value = (Integer) viewer.getInput();
            return (value & ConnectionPreferences.RELATION_KEYMAP.get(element)) != 0;
        }
    });

    return viewer;
}

From source file:de.fhg.igd.mapviewer.server.wms.wizard.pages.LayersDialog.java

License:Open Source License

/**
 * @see TitleAreaDialog#createDialogArea(Composite)
 *///  ww w .  j  av a 2s  .  c o m
@Override
protected Control createDialogArea(Composite parent) {
    Composite page = new Composite(parent, SWT.NONE);
    GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
    page.setLayoutData(data);
    page.setLayout(new FillLayout());

    CheckboxTableViewer table = CheckboxTableViewer.newCheckList(page, SWT.V_SCROLL | SWT.BORDER);

    TableColumn names = new TableColumn(table.getTable(), SWT.NONE);
    names.setWidth(200);
    names.setText(Messages.LayersDialog_2);
    TableColumn descs = new TableColumn(table.getTable(), SWT.NONE);
    descs.setWidth(200);
    descs.setText(Messages.LayersDialog_3);

    // labels
    table.setLabelProvider(new LayerLabelProvider());
    table.setCheckStateProvider(new LayerCheckStateProvider());
    table.addCheckStateListener(new ICheckStateListener() {

        @Override
        public void checkStateChanged(CheckStateChangedEvent event) {
            ((Layer) event.getElement()).setSelected(event.getChecked());
        }

    });

    // content
    table.setContentProvider(new IStructuredContentProvider() {

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

        @Override
        public void dispose() {
            // ignore
        }

        @Override
        @SuppressWarnings("unchecked")
        public Object[] getElements(Object inputElement) {
            return ((List<Layer>) inputElement).toArray();
        }
    });

    table.setInput(layers);
    table.getTable().setLinesVisible(true);
    table.getTable().setHeaderVisible(true);

    // pack columns
    names.pack();
    descs.pack();

    return page;
}

From source file:de.tobject.findbugs.properties.PathsProvider.java

License:Open Source License

protected PathsProvider(TableViewer viewer, FindbugsPropertyPage propertyPage) {
    this.propertyPage = propertyPage;
    this.paths = new ArrayList<IPathElement>();
    this.viewer = viewer;
    if (viewer instanceof CheckboxTableViewer) {
        CheckboxTableViewer tv = (CheckboxTableViewer) viewer;
        tv.setCheckStateProvider(this);
        tv.addCheckStateListener(new ICheckStateListener() {
            public void checkStateChanged(CheckStateChangedEvent event) {
                boolean checked = event.getChecked();
                IPathElement element = (IPathElement) event.getElement();
                element.setEnabled(checked);
                handleContendChanged();//w ww  .  ja  v a 2  s  . com
            }
        });
    }
    this.control = viewer.getTable();
    listeners = new ListenerList();
    viewer.setContentProvider(this);
}

From source file:era.foss.typeeditor.spectype.AttributeDefinitionDetailViewer.java

License:Open Source License

/**
 * Show UI elements for DatatypeDefintionEnumeration
 *//*from   w w w .jav a 2  s.com*/
private void createDetailsEnumeration() {
    final AttributeDefinitionEnumeration attributeDefinitionEnum = (AttributeDefinitionEnumeration) master
            .getValue();

    // create label for multiValued property
    Label label = new Label(detailComposite, SWT.NONE);
    label.setText(Ui.getUiName(ErfPackage.Literals.ATTRIBUTE_DEFINITION_ENUMERATION__MULTI_VALUED));
    label.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false));

    // create checkbox for multiValued property
    EAttribute[] isMultiValued = { ErfPackage.Literals.ATTRIBUTE_DEFINITION_ENUMERATION__MULTI_VALUED };
    BindingCheckBox multiValuedCheckbox = new BindingCheckBox(detailComposite, SWT.NONE);
    multiValuedCheckbox.setLayoutData(new GridData(SWT.LEFT, SWT.DEFAULT, true, false));
    multiValuedCheckbox.bind(editingDomain, isMultiValued, master);

    // create checkbox for enabling default value
    Button defaultValueCheckbox = createDefaultValueCheckbox(attributeDefinitionEnum,
            ErfPackage.Literals.ATTRIBUTE_DEFINITION_ENUMERATION__DEFAULT_VALUE);

    // create table for selecting default EnumValue elements
    Table defaultValueTable = new Table(detailComposite,
            SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION | SWT.CHECK);
    defaultValueTable.setLinesVisible(true);
    defaultValueTable.setHeaderVisible(true);

    final CheckboxTableViewer defaultValueTableViewer = new CheckboxTableViewer(defaultValueTable);
    defaultValueTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));

    final ObservableListContentProvider cp = new ObservableListContentProvider();
    defaultValueTableViewer.setContentProvider(cp);

    TableViewerColumn column = new TableViewerColumn(defaultValueTableViewer, SWT.NONE);

    column.getColumn().setResizable(false);
    column.getColumn().setMoveable(false);
    column.getColumn().setText(Ui.getUiName(ErfPackage.Literals.ATTRIBUTE_VALUE_ENUMERATION__VALUES));
    column.getColumn().pack();

    // set label provider
    IValueProperty elementProperty = EMFEditProperties.value(editingDomain,
            FeaturePath.fromList(new EStructuralFeature[] { ErfPackage.Literals.IDENTIFIABLE__LONG_NAME }));
    IObservableMap attributeMap = elementProperty.observeDetail(cp.getKnownElements());
    column.setLabelProvider(new ObservableMapCellLabelProvider(attributeMap));

    // Add provider for the check stare of the table viewer
    // A value is checked if it is referred by the Default value of the AttributeDefintionEnumeration
    defaultValueTableViewer.setCheckStateProvider(new ICheckStateProvider() {
        @Override
        public boolean isGrayed(Object element) {
            return false;
        }

        @Override
        public boolean isChecked(Object element) {
            AttributeValueEnumeration enumDefaultValue = attributeDefinitionEnum.getDefaultValue();
            return enumDefaultValue != null && enumDefaultValue.getValues().contains(element);
        }
    });

    // If a EnumValue is selected add it to the list of Default values for the AttributeDefintionEnumeration
    // Otherwise remove it from the list of default values
    defaultValueTableViewer.addCheckStateListener(new ICheckStateListener() {

        @Override
        public void checkStateChanged(CheckStateChangedEvent event) {
            // we don't need to check if the default value object is null as
            // in this case table viewer is disabled
            assert (attributeDefinitionEnum.getDefaultValue() != null);

            EnumValue enumValue = ((EnumValue) event.getElement());
            Command command = null;

            if (event.getChecked() == true) {
                command = AddCommand.create(editingDomain, attributeDefinitionEnum.getDefaultValue(),
                        ErfPackage.Literals.ATTRIBUTE_VALUE_ENUMERATION__VALUES, enumValue);
            } else {
                command = RemoveCommand.create(editingDomain, attributeDefinitionEnum.getDefaultValue(),
                        ErfPackage.Literals.ATTRIBUTE_VALUE_ENUMERATION__VALUES, enumValue);
            }
            editingDomain.getCommandStack().execute(command);
        }
    });

    // observe values of DatatypeDefinition selected for the AttributeDefintionEnumeration
    IEMFListProperty enumerationProperty = EMFProperties.list(
            FeaturePath.fromList(new EStructuralFeature[] { ErfPackage.Literals.ATTRIBUTE_DEFINITION__TYPE,
                    ErfPackage.Literals.DATATYPE_DEFINITION_ENUMERATION__SPECIFIED_VALUES }));
    IObservableList dataTypeEnumValueObserver = enumerationProperty.observe(attributeDefinitionEnum);
    defaultValueTableViewer.setInput(dataTypeEnumValueObserver);

    // only enable table viewer in case a default value exists
    dataBindingContext.bindValue(SWTObservables.observeEnabled(defaultValueTable),
            SWTObservables.observeSelection(defaultValueCheckbox));

}

From source file:net.rim.ejde.internal.ui.editors.model.factories.ControlFactory.java

License:Open Source License

/**
 * Builds an icon table control onto the given composite body
 *
 * @param body// w  w w.ja va  2 s . c o  m
 * @param toolkit
 * @param label
 * @param toolTipText
 * @param style
 * @param columns
 * @param columnProperties
 * @param input
 * @param contentProvider
 * @param labelProvider
 * @param checkStateProvider
 * @param selectionListener
 * @return
 */
public static final Viewer buildIconTableControl(Composite body, FormToolkit toolkit, String label,
        String toolTipText, Integer style, Integer columns, String columnProperties[], Set<Icon> input,
        IStructuredContentProvider contentProvider, ITableLabelProvider labelProvider,
        ICheckStateProvider checkStateProvider, SelectionListener selectionListener) {
    CheckboxTableViewer viewer = (CheckboxTableViewer) buildTableControl(body, toolkit, label, toolTipText,
            style, columns, columnProperties, contentProvider, labelProvider, input);

    // Add icon specific table properties
    if (checkStateProvider != null) {
        viewer.setCheckStateProvider(checkStateProvider);
    }

    Table table = viewer.getTable();
    table.setData(TABLE_TEXT_INDEX_KEY, 2);
    table.setData(CONTROL_TITLE_KEY, "Icons");

    if (selectionListener != null) {
        table.addSelectionListener(selectionListener);
    }

    GridData gridData = ((GridData) table.getLayoutData());
    gridData.heightHint = 55;
    table.setHeaderVisible(true);

    TableColumn focusColumn = new TableColumn(table, SWT.NONE);
    focusColumn.setText(Messages.BlackBerryProjectPropertiesPage_Table_RolloverIcon_Column_Label);
    focusColumn.pack();

    TableColumn iconColumn = new TableColumn(table, SWT.NONE);
    iconColumn.setText(Messages.BlackBerryProjectPropertiesPage_Table_Icon_Column_Label);
    iconColumn.pack();

    TableColumn pathColumn = new TableColumn(table, SWT.NONE);
    pathColumn.setText(Messages.BlackBerryProjectPropertiesPage_Table_File_Column_Label);
    pathColumn.setWidth(300);

    return viewer;
}

From source file:org.eclipse.edt.debug.internal.ui.java.EGLJavaDebugPreferencePage.java

License:Open Source License

private CheckboxTableViewer createTableViewer(Composite parent) {
    // For TableColumnLayout to work, it must be applied to a composite that contains nothing but the table.
    Composite tableComp = new Composite(parent, SWT.NONE);
    tableComp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

    CheckboxTableViewer viewer = CheckboxTableViewer.newCheckList(tableComp, SWT.SINGLE | SWT.BORDER);
    Table table = viewer.getTable();//ww w. j a  va2  s. co  m
    table.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    table.setLinesVisible(true);
    table.setHeaderVisible(true);

    TableViewerColumn categoryColumn = new TableViewerColumn(viewer, SWT.NONE);
    categoryColumn.getColumn().setText(EGLJavaMessages.TypeFiltersCategoryColumn);
    categoryColumn.getColumn().setResizable(true);
    categoryColumn.getColumn().setMoveable(false);

    TableViewerColumn stepTypeColumn = new TableViewerColumn(viewer, SWT.NONE);
    stepTypeColumn.getColumn().setText(EGLJavaMessages.TypeFiltersBehaviorColumn);
    stepTypeColumn.getColumn().setResizable(true);
    stepTypeColumn.getColumn().setMoveable(false);
    stepTypeColumn.setEditingSupport(new EditingSupport(viewer));

    viewer.setLabelProvider(new LabelProvider());
    viewer.setContentProvider(new ArrayContentProvider());
    viewer.setCheckStateProvider(new CheckStateProvider());
    viewer.addCheckStateListener(new CheckStateListener());

    TableColumnLayout layout = new TableColumnLayout();
    tableComp.setLayout(layout);
    layout.setColumnData(categoryColumn.getColumn(), new ColumnWeightData(50, true));
    layout.setColumnData(stepTypeColumn.getColumn(), new ColumnWeightData(40, true));

    return viewer;
}

From source file:org.eclipse.emf.ecp.internal.ui.composites.CheckedEStructuralFeatureCompositeImpl.java

License:Open Source License

/**
 * //  w w w.  j  a  v a  2  s  .co  m
 * {@inheritDoc}
 * 
 * @see org.eclipse.emf.ecp.internal.ui.composites.SelectModelElementCompositeImpl#createViewer(org.eclipse.swt.widgets.Composite)
 */
@Override
protected CheckboxTableViewer createViewer(Composite composite) {
    final CheckboxTableViewer tableViewer = CheckboxTableViewer.newCheckList(composite,
            SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION);
    tableViewer.setLabelProvider(getLabelProvider());
    provider = new FilteredViewerContentProvider(tableViewer);
    tableViewer.setContentProvider(provider);
    tableViewer.setCheckStateProvider(provider);
    tableViewer.setInput(getInput());
    return tableViewer;
}

From source file:org.eclipse.ice.client.widgets.moose.MOOSETreePropertySection.java

License:Open Source License

/**
 * Adds the default and additional columns to the provided
 * <code>TableViewer</code>. This should only be invoked on
 * CheckboxTableViewers./*from  w  w  w .j  a v  a2 s. c  om*/
 */
@Override
protected void addTableViewerColumns(TableViewer tableViewer) {
    if (tableViewer != null) {
        TableColumn column;
        ICellContentProvider contentProvider;

        // // ---- Create the placeholder CheckBox column. ---- //
        checkColumn = new TableViewerColumn(tableViewer, SWT.LEFT);
        column = checkColumn.getColumn();
        column.setText("Enabled");
        column.setToolTipText("If checked, the parameter will be written " + "to the input file.\n"
                + "If unchecked, the parameter " + "will be commented out in the input file.");
        column.setResizable(true);

        // Create the check state manager. It also functions as the cell
        // content provider for the first column.
        TableCheckStateManager checkStateManager = new TableCheckStateManager(tableViewer) {
            @Override
            public boolean setValue(Object element, Object value) {
                boolean changed = super.setValue(element, value);
                // If the value changed, mark the associated ICEFormEditor
                // as dirty.
                if (changed && getFormEditor() != null) {
                    getFormEditor().setDirty(true);
                }
                return changed;
            }
        };

        // Create a MOOSECheckStateProvider which sets the FormEditor as
        // dirty when the checkbox's value is changed.
        contentProvider = checkStateManager;

        // Add a blank label provider. Nothing should appear in the first
        // column except for the checkboxes.
        checkColumn.setLabelProvider(new CellColumnLabelProvider(contentProvider));

        // Set the content provider and listener for the CheckBox column
        CheckboxTableViewer checkedTableViewer = (CheckboxTableViewer) tableViewer;
        checkedTableViewer.setCheckStateProvider(checkStateManager);
        checkedTableViewer.addCheckStateListener(checkStateManager);

        // Create the default columns.
        super.addTableViewerColumns(tableViewer);

        // ---- Create the description/comments column. ---- //
        descriptionColumn = new TableViewerColumn(tableViewer, SWT.LEFT);
        column = descriptionColumn.getColumn();
        column.setText("Comments");
        column.setToolTipText(
                "Comments about the property. These are " + "stored as comments in the input file.");
        column.setResizable(true);
        // Create an ICellContentProvider for a column that shows the
        // descriptions of Entries. Then hook it up as a label provider and
        // for editing support.
        contentProvider = new DescriptionCellContentProvider() {
            @Override
            public boolean setValue(Object element, Object value) {
                boolean changed = super.setValue(element, value);
                // If the value changed, mark the associated ICEFormEditor
                // as dirty.
                if (changed && getFormEditor() != null) {
                    getFormEditor().setDirty(true);
                }
                return changed;
            }
        };
        descriptionColumn.setLabelProvider(new CellColumnLabelProvider(contentProvider));
        descriptionColumn.setEditingSupport(new TextCellEditingSupport(tableViewer, contentProvider));
        // ------------------------------------------------- //
    }

    return;
}

From source file:org.eclipse.ui.internal.dialogs.cpd.CustomizePerspectiveDialog.java

License:Open Source License

private Composite createShortCutsPage(Composite parent) {
    GridData data;//from w  w  w  . j  a  v a 2s.c o  m

    Composite menusComposite = new Composite(parent, SWT.NONE);
    GridLayout layout = new GridLayout();
    menusComposite.setLayout(layout);

    // Select... label
    Label label = new Label(menusComposite, SWT.WRAP);
    label.setText(NLS.bind(WorkbenchMessages.Shortcuts_selectShortcutsLabel, perspective.getDesc().getLabel()));
    data = new GridData(SWT.FILL, SWT.CENTER, true, false);
    label.setLayoutData(data);

    Label sep = new Label(menusComposite, SWT.HORIZONTAL | SWT.SEPARATOR);
    sep.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));

    SashForm sashComposite = new SashForm(menusComposite, SWT.HORIZONTAL);
    data = new GridData(SWT.FILL, SWT.FILL, true, true);
    sashComposite.setLayoutData(data);

    // Menus List
    Composite menusGroup = new Composite(sashComposite, SWT.NONE);
    layout = new GridLayout();
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    menusGroup.setLayout(layout);
    menusGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

    label = new Label(menusGroup, SWT.WRAP);
    label.setText(WorkbenchMessages.Shortcuts_availableMenus);
    label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));

    Combo menusCombo = new Combo(menusGroup, SWT.READ_ONLY);
    menusCombo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
    ComboViewer menusViewer = new ComboViewer(menusCombo);
    menusViewer.setContentProvider(TreeManager.getTreeContentProvider());
    menusViewer.setLabelProvider(TreeManager.getLabelProvider());

    // Categories Tree
    label = new Label(menusGroup, SWT.WRAP);
    label.setText(WorkbenchMessages.Shortcuts_availableCategories);
    label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));

    final CheckboxTreeViewer menuCategoriesViewer = new CheckboxTreeViewer(menusGroup);
    menuCategoriesViewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    menuCategoriesViewer.setLabelProvider(TreeManager.getLabelProvider());
    menuCategoriesViewer.setContentProvider(TreeManager.getTreeContentProvider());
    menuCategoriesViewer.setComparator(new WorkbenchViewerComparator());
    menuCategoriesViewer.setCheckStateProvider(new CategoryCheckProvider());
    menuCategoriesViewer.addCheckStateListener(new ICheckStateListener() {
        @Override
        public void checkStateChanged(CheckStateChangedEvent event) {
            Category category = (Category) event.getElement();
            category.setItemsState(event.getChecked());
            updateCategoryAndParents(menuCategoriesViewer, category);
        }
    });

    treeManager.addListener(new CheckListener() {
        @Override
        public void checkChanged(TreeItem changedItem) {
            if (changedItem instanceof Category) {
                menuCategoriesViewer.update(changedItem, null);
            } else if (changedItem instanceof ShortcutItem) {
                ShortcutItem item = (ShortcutItem) changedItem;
                if (item.getCategory() != null) {
                    item.getCategory().update();
                    updateCategoryAndParents(menuCategoriesViewer, item.getCategory());
                }
            }
        }
    });

    // Menu items list
    Composite menuItemsGroup = new Composite(sashComposite, SWT.NONE);
    layout = new GridLayout();
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    menuItemsGroup.setLayout(layout);
    menuItemsGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

    label = new Label(menuItemsGroup, SWT.WRAP);
    label.setText(WorkbenchMessages.Shortcuts_allShortcuts);
    label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));

    final CheckboxTableViewer menuItemsViewer = CheckboxTableViewer.newCheckList(menuItemsGroup,
            SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
    Table menuTable = menuItemsViewer.getTable();
    menuTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    menuItemsViewer.setLabelProvider(new ShortcutLabelProvider());
    menuItemsViewer.setCheckStateProvider(TreeManager.getCheckStateProvider());
    menuItemsViewer.addCheckStateListener(treeManager.getViewerCheckStateListener());
    treeManager.getCheckListener(menuItemsViewer);

    menuItemsViewer.setContentProvider(new TreeManager.TreeItemContentProvider() {
        @Override
        public Object[] getChildren(Object parentElement) {
            if (parentElement instanceof Category) {
                return ((Category) parentElement).getContributionItems().toArray();
            }
            return super.getChildren(parentElement);
        }
    });
    menuItemsViewer.setComparator(new WorkbenchViewerComparator());

    // update menuCategoriesViewer, and menuItemsViewer on a change to
    // menusViewer
    menusViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            Category category = (Category) ((IStructuredSelection) event.getSelection()).getFirstElement();
            menuCategoriesViewer.setInput(category);
            menuItemsViewer.setInput(category);
            if (category.getChildrenCount() != 0) {
                setSelectionOn(menuCategoriesViewer, category.getChildren().get(0));
            }
        }
    });

    // update menuItemsViewer on a change to menuCategoriesViewer
    menuCategoriesViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            Category category = (Category) ((IStructuredSelection) event.getSelection()).getFirstElement();
            menuItemsViewer.setInput(category);
        }
    });

    menuTable.setHeaderVisible(true);
    int[] columnWidths = new int[shortcutMenuColumnWidths.length];
    for (int i = 0; i < shortcutMenuColumnWidths.length; i++) {
        columnWidths[i] = convertHorizontalDLUsToPixels(shortcutMenuColumnWidths[i]);
    }
    for (int i = 0; i < shortcutMenuColumnHeaders.length; i++) {
        TableColumn tc = new TableColumn(menuTable, SWT.NONE, i);
        tc.setResizable(true);
        tc.setText(shortcutMenuColumnHeaders[i]);
        tc.setWidth(columnWidths[i]);
    }
    sashComposite.setWeights(new int[] { 30, 70 });

    menusViewer.setInput(shortcuts);

    if (shortcuts.getChildrenCount() > 0) {
        setSelectionOn(menusViewer, shortcuts.getChildren().get(0));
    }

    return menusComposite;
}