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

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

Introduction

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

Prototype

public ViewerComparator() 

Source Link

Document

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

Usage

From source file:org.eclipse.ui.dialogs.WizardNewProjectReferencePage.java

License:Open Source License

/** (non-Javadoc)
 * Method declared on IDialogPage./*  w  w w  . j a  va 2s .c  o m*/
 */
public void createControl(Composite parent) {

    Font font = parent.getFont();

    Composite composite = new Composite(parent, SWT.NONE);
    composite.setLayout(new GridLayout());
    composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    composite.setFont(font);

    PlatformUI.getWorkbench().getHelpSystem().setHelp(composite,
            IIDEHelpContextIds.NEW_PROJECT_REFERENCE_WIZARD_PAGE);

    Label referenceLabel = new Label(composite, SWT.NONE);
    referenceLabel.setText(REFERENCED_PROJECTS_TITLE);
    referenceLabel.setFont(font);

    referenceProjectsViewer = CheckboxTableViewer.newCheckList(composite, SWT.BORDER);
    referenceProjectsViewer.getTable().setFont(composite.getFont());
    GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);

    data.heightHint = getDefaultFontHeight(referenceProjectsViewer.getTable(), PROJECT_LIST_MULTIPLIER);
    referenceProjectsViewer.getTable().setLayoutData(data);
    referenceProjectsViewer.setLabelProvider(WorkbenchLabelProvider.getDecoratingWorkbenchLabelProvider());
    referenceProjectsViewer.setContentProvider(getContentProvider());
    referenceProjectsViewer.setComparator(new ViewerComparator());
    referenceProjectsViewer.setInput(ResourcesPlugin.getWorkspace());

    setControl(composite);
}

From source file:org.eclipse.ui.ide.examples.projectsnapshot.ProjectRefreshSnapshotImportWizardPage.java

License:Open Source License

/**
 * Create the checkbox list for the found projects.
 * /*from www.j a va  2  s.co  m*/
 * @param workArea
 */
private void createProjectsList(Composite workArea) {

    Label title = new Label(workArea, SWT.NONE);
    title.setText(Messages.ProjectRefreshSnapshotImportWizardPage_selectProject);

    Composite listComposite = new Composite(workArea, SWT.NONE);
    GridLayout layout = new GridLayout();
    layout.numColumns = 2;
    layout.marginWidth = 0;
    layout.makeColumnsEqualWidth = false;
    listComposite.setLayout(layout);

    listComposite.setLayoutData(
            new GridData(GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL | GridData.FILL_BOTH));

    projectsList = new CheckboxTreeViewer(listComposite, SWT.BORDER);
    GridData listData = new GridData(GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL | GridData.FILL_BOTH);
    listData.heightHint = 100;
    projectsList.getControl().setLayoutData(listData);

    projectsList.setContentProvider(new ITreeContentProvider() {

        /*
         * (non-Javadoc)
         * 
         * @see
         * org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java
         * .lang.Object)
         */
        public Object[] getChildren(Object parentElement) {
            return null;
        }

        /*
         * (non-Javadoc)
         * 
         * @see
         * org.eclipse.jface.viewers.IStructuredContentProvider#getElements
         * (java.lang.Object)
         */
        public Object[] getElements(Object inputElement) {
            return getValidProjects();
        }

        /*
         * (non-Javadoc)
         * 
         * @see
         * org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java
         * .lang.Object)
         */
        public boolean hasChildren(Object element) {
            return false;
        }

        /*
         * (non-Javadoc)
         * 
         * @see
         * org.eclipse.jface.viewers.ITreeContentProvider#getParent(java
         * .lang.Object)
         */
        public Object getParent(Object element) {
            return null;
        }

        /*
         * (non-Javadoc)
         * 
         * @see org.eclipse.jface.viewers.IContentProvider#dispose()
         */
        public void dispose() {

        }

        /*
         * (non-Javadoc)
         * 
         * @see
         * org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse
         * .jface.viewers.Viewer, java.lang.Object, java.lang.Object)
         */
        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
        }

    });

    projectsList.setLabelProvider(new LabelProvider() {
        /*
         * (non-Javadoc)
         * 
         * @see
         * org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object)
         */
        public String getText(Object element) {
            return ((ProjectRecord) element).getProjectLabel();
        }
    });

    projectsList.addCheckStateListener(new ICheckStateListener() {
        /*
         * (non-Javadoc)
         * 
         * @see
         * org.eclipse.jface.viewers.ICheckStateListener#checkStateChanged
         * (org.eclipse.jface.viewers.CheckStateChangedEvent)
         */
        public void checkStateChanged(CheckStateChangedEvent event) {
            checkForComplete();
        }
    });

    projectsList.setInput(this);
    projectsList.setComparator(new ViewerComparator());
}

From source file:org.eclipse.ui.ide.markers.compatibility.internal.QuickFixPage.java

License:Open Source License

/**
 * @param control//from   w  ww.j  a v  a  2  s.  co  m
 */
private void createResolutionsList(Composite control) {
    resolutionsList = new ListViewer(control, SWT.BORDER | SWT.SINGLE | SWT.V_SCROLL);
    resolutionsList.setContentProvider(new IStructuredContentProvider() {
        /*
         * (non-Javadoc)
         * 
         * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
         */
        public Object[] getElements(Object inputElement) {
            return resolutions.keySet().toArray();
        }

        /*
         * (non-Javadoc)
         * 
         * @see org.eclipse.jface.viewers.IContentProvider#dispose()
         */
        public void dispose() {

        }

        /*
         * (non-Javadoc)
         * 
         * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,
         *      java.lang.Object, java.lang.Object)
         */
        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {

        }
    });

    resolutionsList.setLabelProvider(new LabelProvider() {
        /*
         * (non-Javadoc)
         * 
         * @see org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object)
         */
        public String getText(Object element) {
            return ((IMarkerResolution) element).getLabel();
        }
    });

    resolutionsList.setInput(this);

    resolutionsList.setComparator(new ViewerComparator() {
        /*
         * (non-Javadoc)
         * 
         * @see org.eclipse.jface.viewers.ViewerComparator#compare(org.eclipse.jface.viewers.Viewer,
         *      java.lang.Object, java.lang.Object)
         */
        public int compare(Viewer viewer, Object e1, Object e2) {
            return ((IMarkerResolution) e1).getLabel().compareTo(((IMarkerResolution) e1).getLabel());
        }
    });

    resolutionsList.addSelectionChangedListener(new ISelectionChangedListener() {
        /*
        * (non-Javadoc)
        * 
        * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
        */
        public void selectionChanged(SelectionChangedEvent event) {

            markersTable.refresh();

            IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
            if (window == null)
                return;
            IWorkbenchPage page = window.getActivePage();
            if (page == null)
                return;

        }

    });
}

From source file:org.eclipse.ui.ide.markers.compatibility.internal.TypesConfigurationArea.java

License:Open Source License

public void createContents(Composite parent) {

    Composite composite = new Composite(parent, SWT.NONE);
    composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    GridLayout layout = new GridLayout();
    layout.numColumns = 2;/* www .j a va 2s.c om*/
    composite.setLayout(layout);

    Tree tree = new Tree(composite,
            SWT.CHECK | SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI | SWT.FULL_SELECTION | SWT.BORDER);
    tree.setLinesVisible(true);
    tree.setHeaderVisible(false);
    TableLayout tableLayout = new TableLayout();
    tree.setLayout(tableLayout);
    tableLayout.addColumnData(new ColumnWeightData(100, true));
    new TreeColumn(tree, SWT.NONE, 0);

    typesViewer = new CheckboxTreeViewer(tree);
    initializeFontMetrics(tree);

    GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
    gridData.widthHint = Dialog.convertVerticalDLUsToPixels(getFontMetrics(), 100);
    gridData.heightHint = Dialog.convertVerticalDLUsToPixels(getFontMetrics(), 75);

    final ITreeContentProvider typesContentProvider = getTypesContentProvider();
    typesViewer.getControl().setLayoutData(gridData);
    typesViewer.setContentProvider(typesContentProvider);
    typesViewer.setLabelProvider(new LabelProvider() {
        /*
         * (non-Javadoc)
         * 
         * @see org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object)
         */
        public String getText(Object element) {
            return ((TypesEntry) element).getLabel();
        }
    });
    typesViewer.setComparator(new ViewerComparator() {
        /*
         * (non-Javadoc)
         * 
         * @see org.eclipse.jface.viewers.ViewerComparator#compare(org.eclipse.jface.viewers.Viewer,
         *      java.lang.Object, java.lang.Object)
         */
        public int compare(Viewer viewer, Object e1, Object e2) {
            return ((TypesEntry) e1).getLabel().compareTo(((TypesEntry) e2).getLabel());
        }
    });
    typesViewer.addCheckStateListener(new ICheckStateListener() {
        public void checkStateChanged(CheckStateChangedEvent event) {
            Object element = event.getElement();
            boolean checked = event.getChecked();
            setChildrenChecked(element, checked);
            setParentCheckState(element, checked);
        }

        /**
         * Set the check state of the children of element to
         * <code>true</code>.
         * 
         * @param element
         * @param checked
         */
        private void setChildrenChecked(Object element, boolean checked) {

            Object[] children = typesContentProvider.getChildren(element);
            if (children.length > 0) {
                for (int i = 0; i < children.length; i++) {
                    typesViewer.setChecked(children[i], checked);
                }
            }

        }

        /**
         * Update the parent check state based on the state of the element
         * 
         * @param element
         * @param checked
         */
        private void setParentCheckState(Object element, boolean checked) {

            Object parent = typesContentProvider.getParent(element);
            if (parent == null)
                return;

            Object[] children = typesContentProvider.getChildren(parent);

            for (int i = 0; i < children.length; i++) {// At least one
                // different
                if (typesViewer.getChecked(children[i]) != checked) {
                    typesViewer.setGrayChecked(parent, true);
                    return;
                }
            }
            // All are the same - update the parent
            typesViewer.setChecked(parent, checked);

        }
    });

    Composite buttonComposite = new Composite(composite, SWT.NONE);
    GridLayout buttonLayout = new GridLayout();
    buttonLayout.marginWidth = 0;
    buttonComposite.setLayout(buttonLayout);
    GridData buttonsData = new GridData();
    buttonsData.verticalAlignment = GridData.BEGINNING;
    buttonComposite.setLayoutData(buttonsData);

    Button selectAllButton = new Button(buttonComposite, SWT.PUSH);
    selectAllButton.setText(MarkerMessages.filtersDialog_selectAllTypes);
    selectAllButton.addSelectionListener(getSelectAllButtonListener(typesContentProvider, true));
    setButtonLayoutData(selectAllButton);

    Button deselectAllButton = new Button(buttonComposite, SWT.PUSH);
    deselectAllButton.setText(MarkerMessages.filtersDialog_deselectAllTypes);
    deselectAllButton.addSelectionListener(getSelectAllButtonListener(typesContentProvider, false));
    setButtonLayoutData(deselectAllButton);
}

From source file:org.eclipse.ui.internal.activities.ws.ActivityEnabler.java

License:Open Source License

/**
 * Create the controls./*from  ww w . ja  v  a 2s .  co  m*/
 * 
 * @param parent
 *            the parent in which to create the controls.
 * @return the composite in which the controls exist.
 */
public Control createControl(Composite parent) {
    GC gc = new GC(parent);
    gc.setFont(JFaceResources.getDialogFont());
    FontMetrics fontMetrics = gc.getFontMetrics();
    gc.dispose();

    Composite composite = new Composite(parent, SWT.NONE);
    composite.setLayout(createGridLayoutWithoutMargins(1, fontMetrics));

    new Label(composite, SWT.NONE).setText(strings.getProperty(ActivitiesPreferencePage.ACTIVITY_NAME,
            ActivityMessages.ActivityEnabler_activities) + ':');

    dualViewer = new CheckboxTreeViewer(composite);
    dualViewer.setComparator(new ViewerComparator());
    dualViewer.setLabelProvider(new ActivityCategoryLabelProvider());
    dualViewer.setContentProvider(provider);
    dualViewer.setInput(activitySupport);
    GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
    dualViewer.getControl().setLayoutData(data);

    Composite buttonComposite = new Composite(composite, SWT.NONE);
    buttonComposite.setLayout(createGridLayoutWithoutMargins(2, fontMetrics));

    Button selectAllButton = new Button(buttonComposite, SWT.PUSH);
    selectAllButton.setText(ActivityMessages.ActivityEnabler_selectAll);
    selectAllButton.addSelectionListener(new SelectionAdapter() {
        /*
         * (non-Javadoc)
         * 
         * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
         */
        public void widgetSelected(SelectionEvent e) {
            toggleTreeEnablement(true);
        }
    });
    setButtonLayoutData(selectAllButton, fontMetrics);

    Button deselectAllButton = new Button(buttonComposite, SWT.PUSH);
    deselectAllButton.setText(ActivityMessages.ActivityEnabler_deselectAll);
    deselectAllButton.addSelectionListener(new SelectionAdapter() {
        /*
         * (non-Javadoc)
         * 
         * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
         */
        public void widgetSelected(SelectionEvent e) {
            toggleTreeEnablement(false);
        }
    });
    setButtonLayoutData(deselectAllButton, fontMetrics);

    new Label(composite, SWT.NONE).setText(ActivityMessages.ActivityEnabler_description);

    descriptionText = new Text(composite, SWT.READ_ONLY | SWT.WRAP | SWT.BORDER | SWT.V_SCROLL);
    data = new GridData(SWT.FILL, SWT.FILL, true, false);
    data.heightHint = Dialog.convertHeightInCharsToPixels(fontMetrics, 5);
    descriptionText.setLayoutData(data);
    setInitialStates();

    dualViewer.addCheckStateListener(checkListener);
    dualViewer.addSelectionChangedListener(selectionListener);

    dualViewer.setSelection(new StructuredSelection());

    Dialog.applyDialogFont(composite);

    return composite;
}

From source file:org.eclipse.ui.internal.dialogs.ContentTypesPreferencePage.java

License:Open Source License

/**
 * @param composite/*  w ww .  j av  a2  s  .com*/
 */
private void createContentTypesTree(Composite composite) {
    {
        Label label = new Label(composite, SWT.NONE);
        label.setFont(composite.getFont());
        label.setText(WorkbenchMessages.ContentTypes_contentTypesLabel);
        GridData data = new GridData();
        data.horizontalSpan = 2;
        label.setLayoutData(data);
    }
    {
        contentTypesViewer = new TreeViewer(composite, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
        contentTypesViewer.getControl().setFont(composite.getFont());
        contentTypesViewer.setContentProvider(new ContentTypesContentProvider());
        contentTypesViewer.setLabelProvider(new ContentTypesLabelProvider());
        contentTypesViewer.setComparator(new ViewerComparator());
        contentTypesViewer.setInput(Platform.getContentTypeManager());
        GridData data = new GridData(GridData.FILL_BOTH);
        data.horizontalSpan = 2;
        contentTypesViewer.getControl().setLayoutData(data);

        contentTypesViewer.addSelectionChangedListener(new ISelectionChangedListener() {

            /*
             * (non-Javadoc)
             * 
             * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
             */
            public void selectionChanged(SelectionChangedEvent event) {
                IContentType contentType = (IContentType) ((IStructuredSelection) event.getSelection())
                        .getFirstElement();
                fileAssociationViewer.setInput(contentType);

                if (contentType != null) {
                    String charset = contentType.getDefaultCharset();
                    if (charset == null) {
                        charset = ""; //$NON-NLS-1$
                    }
                    charsetField.setText(charset);
                } else {
                    charsetField.setText(""); //$NON-NLS-1$
                }

                charsetField.setEnabled(contentType != null);
                addButton.setEnabled(contentType != null);
                setButton.setEnabled(false);
            }
        });
    }
}

From source file:org.eclipse.ui.internal.dialogs.SavePerspectiveDialog.java

License:Open Source License

/**
 * Creates and returns the contents of the upper part 
 * of this dialog (above the button bar).
 *
 * @param parent the parent composite to contain the dialog area
 * @return the dialog area control/* w  ww . j a  v  a 2  s.  c  o m*/
 */
protected Control createDialogArea(Composite parent) {
    Font font = parent.getFont();
    // Run super.
    Composite composite = (Composite) super.createDialogArea(parent);

    // description
    Label descLabel = new Label(composite, SWT.WRAP);
    descLabel.setText(WorkbenchMessages.SavePerspectiveDialog_description);
    descLabel.setFont(parent.getFont());

    // Spacer.
    Label label = new Label(composite, SWT.NONE);
    GridData data = new GridData();
    data.heightHint = 8;
    label.setLayoutData(data);

    // Create name group.
    Composite nameGroup = new Composite(composite, SWT.NONE);
    nameGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    GridLayout layout = new GridLayout();
    layout.numColumns = 2;
    layout.marginWidth = layout.marginHeight = 0;
    nameGroup.setLayout(layout);

    // Create name label.
    label = new Label(nameGroup, SWT.NONE);
    label.setText(WorkbenchMessages.SavePerspective_name);
    label.setFont(font);

    // Add text field.
    text = new Text(nameGroup, SWT.BORDER);
    text.setFocus();
    data = new GridData(GridData.FILL_HORIZONTAL);
    data.widthHint = convertWidthInCharsToPixels(TEXT_WIDTH);
    text.setLayoutData(data);
    text.setFont(font);
    text.addModifyListener(this);

    // Spacer.
    label = new Label(composite, SWT.NONE);
    data = new GridData();
    data.heightHint = 5;
    label.setLayoutData(data);

    // Another label.
    label = new Label(composite, SWT.NONE);
    label.setText(WorkbenchMessages.SavePerspective_existing);
    label.setFont(font);

    // Add perspective list.
    list = new TableViewer(composite, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
    list.setLabelProvider(new PerspectiveLabelProvider());
    list.setContentProvider(new PerspContentProvider());
    list.addFilter(new ActivityViewerFilter());
    list.setComparator(new ViewerComparator());
    list.setInput(perspReg);
    list.addSelectionChangedListener(this);
    list.getTable().setFont(font);

    // Set perspective list size.
    Control ctrl = list.getControl();
    GridData spec = new GridData(GridData.FILL_BOTH);
    spec.widthHint = convertWidthInCharsToPixels(LIST_WIDTH);
    spec.heightHint = convertHeightInCharsToPixels(LIST_HEIGHT);
    ctrl.setLayoutData(spec);

    // Set the initial selection
    if (initialSelection != null) {
        StructuredSelection sel = new StructuredSelection(initialSelection);
        list.setSelection(sel, true);
    }
    text.selectAll();

    // Return results.
    return composite;
}

From source file:org.eclipse.ui.internal.dialogs.SelectPerspectiveDialog.java

License:Open Source License

/**
 * Create a new viewer in the parent./*from   w w  w.  ja v  a 2  s .  c o  m*/
 * 
 * @param parent the parent <code>Composite</code>.
 */
private void createViewer(Composite parent) {
    // Add perspective list.
    list = new TableViewer(parent, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
    list.getTable().setFont(parent.getFont());
    list.setLabelProvider(new DelegatingLabelProviderWithTooltip(new PerspectiveLabelProvider(),
            PlatformUI.getWorkbench().getDecoratorManager().getLabelDecorator(ContributingPluginDecorator.ID)) {
        protected Object unwrapElement(Object element) {
            if (element instanceof PerspectiveDescriptor) {
                element = ((PerspectiveDescriptor) element).getConfigElement();
            }
            return element;
        }
    });
    list.setContentProvider(new PerspContentProvider());
    list.addFilter(activityViewerFilter);
    list.setComparator(new ViewerComparator());
    list.setInput(perspReg);
    list.addSelectionChangedListener(this);
    list.addDoubleClickListener(new IDoubleClickListener() {
        public void doubleClick(DoubleClickEvent event) {
            handleDoubleClickEvent();
        }
    });
}

From source file:org.eclipse.ui.internal.ide.dialogs.ProjectReferencePage.java

License:Open Source License

protected Control createContents(Composite parent) {
    PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(),
            IIDEHelpContextIds.PROJECT_REFERENCE_PROPERTY_PAGE);

    Composite composite = new Composite(parent, SWT.NONE);

    initialize();/*from w ww .  jav a2 s . c  om*/

    createDescriptionLabel(composite);

    listViewer = CheckboxTableViewer.newCheckList(composite, SWT.TOP | SWT.BORDER);

    if (!project.isOpen())
        listViewer.getControl().setEnabled(false);

    listViewer.setLabelProvider(WorkbenchLabelProvider.getDecoratingWorkbenchLabelProvider());
    listViewer.setContentProvider(getContentProvider(project));
    listViewer.setComparator(new ViewerComparator());
    listViewer.setInput(project.getWorkspace());
    try {
        listViewer.setCheckedElements(project.getDescription().getReferencedProjects());
    } catch (CoreException e) {
        //don't initial-check anything
    }

    //check for initial modification to avoid work if no changes are made
    listViewer.addCheckStateListener(new ICheckStateListener() {
        public void checkStateChanged(CheckStateChangedEvent event) {
            modified = true;
        }
    });

    applyDialogFont(composite);

    GridLayoutFactory.fillDefaults().generateLayout(composite);

    return composite;
}

From source file:org.eclipse.ui.internal.keys.NewKeysPreferencePage.java

License:Open Source License

private final void createDataControls(final Composite parent) {
    GridLayout layout;//from   www  .  ja v  a  2s .  c  om
    GridData gridData;

    // Creates the data area.
    final Composite dataArea = new Composite(parent, SWT.NONE);
    layout = new GridLayout(2, true);
    layout.marginWidth = 0;
    dataArea.setLayout(layout);
    gridData = new GridData();
    gridData.grabExcessHorizontalSpace = true;
    gridData.horizontalAlignment = SWT.FILL;
    dataArea.setLayoutData(gridData);

    // LEFT DATA AREA
    // Creates the left data area.
    final Composite leftDataArea = new Composite(dataArea, SWT.NONE);
    layout = new GridLayout(3, false);
    leftDataArea.setLayout(layout);
    gridData = new GridData();
    gridData.grabExcessHorizontalSpace = true;
    gridData.verticalAlignment = SWT.TOP;
    gridData.horizontalAlignment = SWT.FILL;
    leftDataArea.setLayoutData(gridData);

    // The command name label.
    final Label commandNameLabel = new Label(leftDataArea, SWT.NONE);
    commandNameLabel.setText(NewKeysPreferenceMessages.CommandNameLabel_Text);

    // The current command name.
    commandNameValueLabel = new Label(leftDataArea, SWT.NONE);
    gridData = new GridData();
    gridData.grabExcessHorizontalSpace = true;
    gridData.horizontalSpan = 2;
    gridData.horizontalAlignment = SWT.FILL;
    commandNameValueLabel.setLayoutData(gridData);

    final Label commandDescriptionlabel = new Label(leftDataArea, SWT.LEAD);
    commandDescriptionlabel.setText(NewKeysPreferenceMessages.CommandDescriptionLabel_Text);
    gridData = new GridData();
    gridData.verticalAlignment = SWT.BEGINNING;
    commandDescriptionlabel.setLayoutData(gridData);

    fDescriptionText = new Text(leftDataArea, SWT.MULTI | SWT.WRAP | SWT.BORDER | SWT.READ_ONLY);

    // The binding label.
    final Label bindingLabel = new Label(leftDataArea, SWT.NONE);
    bindingLabel.setText(NewKeysPreferenceMessages.BindingLabel_Text);

    // The key sequence entry widget.
    fBindingText = new Text(leftDataArea, SWT.BORDER);
    gridData = new GridData();
    gridData.grabExcessHorizontalSpace = true;
    gridData.horizontalAlignment = SWT.FILL;
    gridData.widthHint = 200;
    fBindingText.setLayoutData(gridData);

    fBindingText.addFocusListener(new FocusListener() {
        public void focusGained(FocusEvent e) {
            fBindingService.setKeyFilterEnabled(false);
        }

        public void focusLost(FocusEvent e) {
            fBindingService.setKeyFilterEnabled(true);
        }
    });
    fBindingText.addDisposeListener(new DisposeListener() {
        public void widgetDisposed(DisposeEvent e) {
            if (!fBindingService.isKeyFilterEnabled()) {
                fBindingService.setKeyFilterEnabled(true);
            }
        }
    });

    fKeySequenceText = new KeySequenceText(fBindingText);
    fKeySequenceText.setKeyStrokeLimit(4);
    fKeySequenceText.addPropertyChangeListener(new IPropertyChangeListener() {
        public final void propertyChange(final PropertyChangeEvent event) {
            if (!event.getOldValue().equals(event.getNewValue())) {
                final KeySequence keySequence = fKeySequenceText.getKeySequence();
                if (!keySequence.isComplete()) {
                    return;
                }

                BindingElement activeBinding = (BindingElement) keyController.getBindingModel()
                        .getSelectedElement();
                if (activeBinding != null) {
                    activeBinding.setTrigger(keySequence);
                }
                fBindingText.setSelection(fBindingText.getTextLimit());
            }
        }
    });

    // Button for adding trapped key strokes
    final Button addKeyButton = new Button(leftDataArea, SWT.LEFT | SWT.ARROW);
    addKeyButton.setToolTipText(NewKeysPreferenceMessages.AddKeyButton_ToolTipText);
    gridData = new GridData();
    gridData.heightHint = fSchemeCombo.getCombo().getTextHeight();
    addKeyButton.setLayoutData(gridData);

    // Arrow buttons aren't normally added to the tab list. Let's fix that.
    final Control[] tabStops = dataArea.getTabList();
    final ArrayList newTabStops = new ArrayList();
    for (int i = 0; i < tabStops.length; i++) {
        Control tabStop = tabStops[i];
        newTabStops.add(tabStop);
        if (fBindingText.equals(tabStop)) {
            newTabStops.add(addKeyButton);
        }
    }
    final Control[] newTabStopArray = (Control[]) newTabStops.toArray(new Control[newTabStops.size()]);
    dataArea.setTabList(newTabStopArray);

    // Construct the menu to attach to the above button.
    final Menu addKeyMenu = new Menu(addKeyButton);
    final Iterator trappedKeyItr = KeySequenceText.TRAPPED_KEYS.iterator();
    while (trappedKeyItr.hasNext()) {
        final KeyStroke trappedKey = (KeyStroke) trappedKeyItr.next();
        final MenuItem menuItem = new MenuItem(addKeyMenu, SWT.PUSH);
        menuItem.setText(trappedKey.format());
        menuItem.addSelectionListener(new SelectionAdapter() {

            public void widgetSelected(SelectionEvent e) {
                fKeySequenceText.insert(trappedKey);
                fBindingText.setFocus();
                fBindingText.setSelection(fBindingText.getTextLimit());
            }
        });
    }
    addKeyButton.addSelectionListener(new SelectionAdapter() {

        public void widgetSelected(SelectionEvent selectionEvent) {
            Point buttonLocation = addKeyButton.getLocation();
            buttonLocation = dataArea.toDisplay(buttonLocation.x, buttonLocation.y);
            Point buttonSize = addKeyButton.getSize();
            addKeyMenu.setLocation(buttonLocation.x, buttonLocation.y + buttonSize.y);
            addKeyMenu.setVisible(true);
        }
    });

    // The when label.
    final Label whenLabel = new Label(leftDataArea, SWT.NONE);
    whenLabel.setText(NewKeysPreferenceMessages.WhenLabel_Text);

    // The when combo.
    fWhenCombo = new ComboViewer(leftDataArea);
    gridData = new GridData();
    gridData.grabExcessHorizontalSpace = true;
    gridData.horizontalAlignment = SWT.FILL;
    gridData.horizontalSpan = 2;
    ViewerComparator comparator = new ViewerComparator();
    fWhenCombo.setComparator(comparator);
    fWhenCombo.getCombo().setVisibleItemCount(ITEMS_TO_SHOW);
    fWhenCombo.getCombo().setLayoutData(gridData);
    fWhenCombo.setContentProvider(new ModelContentProvider());
    fWhenCombo.setLabelProvider(new ListLabelProvider());
    fWhenCombo.addSelectionChangedListener(new ISelectionChangedListener() {
        public final void selectionChanged(final SelectionChangedEvent event) {
            ContextElement context = (ContextElement) ((IStructuredSelection) event.getSelection())
                    .getFirstElement();
            if (context != null) {
                keyController.getContextModel().setSelectedElement(context);
            }
        }
    });
    IPropertyChangeListener whenListener = new IPropertyChangeListener() {

        // Sets the combo selection when a new keybinding is selected?
        public void propertyChange(PropertyChangeEvent event) {
            if (event.getSource() == keyController.getContextModel()
                    && CommonModel.PROP_SELECTED_ELEMENT.equals(event.getProperty())) {
                Object newVal = event.getNewValue();
                StructuredSelection structuredSelection = newVal == null ? null
                        : new StructuredSelection(newVal);
                fWhenCombo.setSelection(structuredSelection, true);
            }
        }
    };
    keyController.addPropertyChangeListener(whenListener);

    // RIGHT DATA AREA
    // Creates the right data area.
    final Composite rightDataArea = new Composite(dataArea, SWT.NONE);
    layout = new GridLayout(1, false);
    rightDataArea.setLayout(layout);
    gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
    rightDataArea.setLayoutData(gridData);

    new Label(rightDataArea, SWT.NONE); // filler

    // The description label.
    final Label descriptionLabel = new Label(rightDataArea, SWT.NONE);
    descriptionLabel.setText(NewKeysPreferenceMessages.ConflictsLabel_Text);
    gridData = new GridData();
    gridData.grabExcessHorizontalSpace = true;
    gridData.horizontalAlignment = SWT.FILL;
    descriptionLabel.setLayoutData(gridData);

    conflictViewer = new TableViewer(rightDataArea,
            SWT.SINGLE | SWT.V_SCROLL | SWT.BORDER | SWT.FULL_SELECTION);
    Table table = conflictViewer.getTable();
    table.setHeaderVisible(true);
    TableColumn bindingNameColumn = new TableColumn(table, SWT.LEAD);
    bindingNameColumn.setText(NewKeysPreferenceMessages.CommandNameColumn_Text);
    bindingNameColumn.setWidth(150);
    TableColumn bindingContextNameColumn = new TableColumn(table, SWT.LEAD);
    bindingContextNameColumn.setText(NewKeysPreferenceMessages.WhenColumn_Text);
    bindingContextNameColumn.setWidth(150);
    gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
    //gridData.horizontalIndent = 10;
    table.setLayoutData(gridData);
    TableLayout tableLayout = new TableLayout();
    tableLayout.addColumnData(new ColumnWeightData(60));
    tableLayout.addColumnData(new ColumnWeightData(40));
    table.setLayout(tableLayout);
    conflictViewer.setContentProvider(new IStructuredContentProvider() {

        public Object[] getElements(Object inputElement) {
            if (inputElement instanceof Collection) {
                return ((Collection) inputElement).toArray();
            }
            return new Object[0];
        }

        public void dispose() {
        }

        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
        }
    });
    conflictViewer.setLabelProvider(new BindingElementLabelProvider() {
        public String getColumnText(Object o, int index) {
            BindingElement element = (BindingElement) o;
            if (index == 0) {
                return element.getName();
            }
            return element.getContext().getName();
        }
    });
    conflictViewer.addSelectionChangedListener(new ISelectionChangedListener() {

        // When the conflict viewer's selection changes, update the
        // model's current selection
        public void selectionChanged(SelectionChangedEvent event) {
            ModelElement binding = (ModelElement) ((IStructuredSelection) event.getSelection())
                    .getFirstElement();
            BindingModel bindingModel = keyController.getBindingModel();
            if (binding != null && binding != bindingModel.getSelectedElement()) {
                StructuredSelection selection = new StructuredSelection(binding);

                bindingModel.setSelectedElement(binding);
                conflictViewer.setSelection(selection);

                boolean selectionVisible = false;
                TreeItem[] items = fFilteredTree.getViewer().getTree().getItems();
                for (int i = 0; i < items.length; i++) {
                    if (items[i].getData().equals(binding)) {
                        selectionVisible = true;
                        break;
                    }
                }

                if (!selectionVisible) {
                    fFilteredTree.getFilterControl().setText(""); //$NON-NLS-1$
                    fFilteredTree.getViewer().refresh();
                    bindingModel.setSelectedElement(binding);
                    conflictViewer.setSelection(selection);
                }
            }
        }
    });

    IPropertyChangeListener conflictsListener = new IPropertyChangeListener() {
        public void propertyChange(PropertyChangeEvent event) {
            if (event.getSource() == keyController.getConflictModel()
                    && CommonModel.PROP_SELECTED_ELEMENT.equals(event.getProperty())) {
                if (keyController.getConflictModel().getConflicts() != null) {
                    Object newVal = event.getNewValue();
                    StructuredSelection structuredSelection = newVal == null ? null
                            : new StructuredSelection(newVal);
                    conflictViewer.setSelection(structuredSelection, true);
                }
            } else if (ConflictModel.PROP_CONFLICTS.equals(event.getProperty())) {
                conflictViewer.setInput(event.getNewValue());
            } else if (ConflictModel.PROP_CONFLICTS_ADD.equals(event.getProperty())) {
                conflictViewer.add(event.getNewValue());
            } else if (ConflictModel.PROP_CONFLICTS_REMOVE.equals(event.getProperty())) {
                conflictViewer.remove(event.getNewValue());
            }
        }
    };
    keyController.addPropertyChangeListener(conflictsListener);

    IPropertyChangeListener dataUpdateListener = new IPropertyChangeListener() {

        public void propertyChange(PropertyChangeEvent event) {
            BindingElement bindingElement = null;
            boolean weCare = false;
            if (event.getSource() == keyController.getBindingModel()
                    && CommonModel.PROP_SELECTED_ELEMENT.equals(event.getProperty())) {
                bindingElement = (BindingElement) event.getNewValue();
                weCare = true;
            } else if (event.getSource() == keyController.getBindingModel().getSelectedElement()
                    && ModelElement.PROP_MODEL_OBJECT.equals(event.getProperty())) {
                bindingElement = (BindingElement) event.getSource();
                weCare = true;
            }
            if (bindingElement == null && weCare) {
                commandNameValueLabel.setText(""); //$NON-NLS-1$
                fDescriptionText.setText(""); //$NON-NLS-1$
                fBindingText.setText(""); //$NON-NLS-1$
            } else if (bindingElement != null) {
                commandNameValueLabel.setText(bindingElement.getName());
                String desc = bindingElement.getDescription();
                fDescriptionText.setText(desc == null ? "" : desc); //$NON-NLS-1$
                KeySequence trigger = (KeySequence) bindingElement.getTrigger();
                fKeySequenceText.setKeySequence(trigger);
            }
        }
    };
    keyController.addPropertyChangeListener(dataUpdateListener);

}