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.pde.api.tools.ui.internal.wizards.TargetBasedApiBaselineWizardPage.java

License:Open Source License

@Override
public void createControl(Composite parent) {
    Composite comp = SWTFactory.createComposite(parent, 4, 1, GridData.FILL_HORIZONTAL);
    SWTFactory.createWrapLabel(comp, WizardMessages.ApiProfileWizardPage_5, 1);
    nametext = SWTFactory.createText(comp, SWT.BORDER | SWT.SINGLE, 3,
            GridData.FILL_HORIZONTAL | GridData.BEGINNING);
    nametext.addModifyListener(new ModifyListener() {
        @Override// ww w.j a va  2 s  .  c  o m
        public void modifyText(ModifyEvent e) {
            setPageComplete(pageValid());
        }
    });

    SWTFactory.createVerticalSpacer(comp, 1);
    targetsViewer = CheckboxTableViewer.newCheckList(comp, SWT.MULTI | SWT.BORDER);
    GridDataFactory.fillDefaults().span(3, 1).grab(true, true).applyTo(targetsViewer.getControl());

    targetsViewer.setLabelProvider(new TargetLabelProvider());
    targetsViewer.setContentProvider(ArrayContentProvider.getInstance());
    targetsViewer.addCheckStateListener(new ICheckStateListener() {
        @Override
        public void checkStateChanged(CheckStateChangedEvent event) {
            if (event.getChecked()) {
                targetsViewer.setCheckedElements(new Object[] { event.getElement() });
                selectedTargetDefinition = (ITargetDefinition) event.getElement();
            } else {
                selectedTargetDefinition = null;
            }
            updateButtons();
            setPageComplete(pageValid());
        }
    });

    // add the targets
    ITargetPlatformService service = getTargetService();
    if (service != null) {
        for (ITargetHandle handle : service.getTargets(null)) {
            try {
                fTargets.add(handle.getTargetDefinition());
            } catch (CoreException e) {
                PDECore.log(e);
            }
        }
        if (fTargets.isEmpty()) {
            // Ensure we have at least a default TP
            try {
                fTargets.add(service.getWorkspaceTargetDefinition());
            } catch (CoreException e) {
                PDECore.log(e);
            }
        }
        targetsViewer.setInput(fTargets);
    }

    targetsViewer.setComparator(new ViewerComparator() {
        @Override
        public int compare(Viewer viewer, Object e1, Object e2) {
            String name1 = ((ITargetDefinition) e1).getName();
            String name2 = ((ITargetDefinition) e2).getName();
            if (name1 == null) {
                return -1;
            }
            if (name2 == null) {
                return 1;
            }
            return name1.compareToIgnoreCase(name2);
        }
    });

    reloadbutton = SWTFactory.createPushButton(comp, WizardMessages.ApiProfileWizardPage_12, null);
    reloadbutton.setEnabled(targetsViewer.getCheckedElements().length == 1);
    reloadbutton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            doReload();
        }
    });

    SWTFactory.createWrapLabel(comp, WizardMessages.ApiProfileWizardPage_13, 4);
    Tree tree = new Tree(comp, SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION);
    GridData gd = new GridData(GridData.FILL_BOTH);
    gd.heightHint = 100;
    gd.horizontalSpan = 4;
    tree.setLayoutData(gd);
    treeviewer = new TreeViewer(tree);
    treeviewer.setLabelProvider(new ApiToolsLabelProvider());
    treeviewer.setContentProvider(new ContentProvider());
    treeviewer.setComparator(new ViewerComparator());
    treeviewer.setInput(getCurrentComponents());
    treeviewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            updateButtons();
        }
    });
    treeviewer.addFilter(new ViewerFilter() {
        @Override
        public boolean select(Viewer viewer, Object parentElement, Object element) {
            if (element instanceof IApiComponent) {
                IApiComponent component = (IApiComponent) element;
                try {
                    if (component.isSourceComponent() || component.isSystemComponent()) {
                        return false;
                    }
                } catch (CoreException e) {
                    ApiPlugin.log(e);
                }
                return true;
            }
            return !(element instanceof SystemLibraryApiComponent);
        }
    });

    setControl(comp);
    if (fProfile != null) {
        nametext.setText(fProfile.getName());

        ITargetDefinition found = null;
        // Use isDerivedFromTarget as the target may have had its
        // sequence number bumped several times
        for (ITargetDefinition target : fTargets) {
            if (ApiModelFactory.isDerivedFromTarget(fProfile, target)) {
                found = target;
                break;
            }
        }
        if (found != null) {
            selectedTargetDefinition = found;
            targetsViewer.setCheckedElements(new Object[] { found });
        }
    }
    initialize();
    updateButtons();
    setPageComplete(pageValid());
    PlatformUI.getWorkbench().getHelpSystem().setHelp(comp, IApiToolsHelpContextIds.APIPROFILES_WIZARD_PAGE);
    Dialog.applyDialogFont(comp);
}

From source file:org.eclipse.pde.internal.ds.ui.editor.sections.DSProvideSection.java

License:Open Source License

protected void createClient(Section section, FormToolkit toolkit) {
    section.setDescription(Messages.DSProvideSection_description);
    section.setExpanded(true);/* ww  w . j a v a  2  s .  c om*/
    section.setLayout(FormLayoutFactory.createClearGridLayout(false, 1));

    GridData data = new GridData(GridData.FILL_BOTH);
    data.grabExcessVerticalSpace = true;
    section.setLayoutData(data);

    Composite container = createClientContainer(section, 2, toolkit);
    EditableTablePart tablePart = getTablePart();
    tablePart.setEditable(isEditable());

    createViewerPartControl(container, SWT.FULL_SELECTION | SWT.MULTI, 2, toolkit);
    fProvidesTable = tablePart.getTableViewer();
    fProvidesTable.setContentProvider(new ContentProvider());
    fProvidesTable.setLabelProvider(new DSLabelProvider());
    fProvidesTable.setComparator(new ViewerComparator());
    fProvidesTable.addDoubleClickListener(this);

    makeActions();

    IDSModel model = getDSModel();
    if (model != null) {
        fProvidesTable.setInput(model);
        model.addModelChangedListener(this);
    }
    toolkit.paintBordersFor(container);
    section.setClient(container);
    updateTitle();
}

From source file:org.eclipse.pde.internal.runtime.logview.LogView.java

License:Open Source License

private ViewerComparator getViewerComparator(byte sortType) {
    if (sortType == PLUGIN) {
        return new ViewerComparator() {
            public int compare(Viewer viewer, Object e1, Object e2) {
                LogEntry entry1 = (LogEntry) e1;
                LogEntry entry2 = (LogEntry) e2;
                return getComparator().compare(entry1.getPluginId(), entry2.getPluginId()) * PLUGIN_ORDER;
            }//  w w w .j ava  2  s .  c  om
        };
    } else if (sortType == MESSAGE) {
        return new ViewerComparator() {
            public int compare(Viewer viewer, Object e1, Object e2) {
                LogEntry entry1 = (LogEntry) e1;
                LogEntry entry2 = (LogEntry) e2;
                return getComparator().compare(entry1.getMessage(), entry2.getMessage()) * MESSAGE_ORDER;
            }
        };
    } else {
        return new ViewerComparator() {
            public int compare(Viewer viewer, Object e1, Object e2) {
                long date1 = ((LogEntry) e1).getDate().getTime();
                long date2 = ((LogEntry) e2).getDate().getTime();
                if (date1 == date2) {
                    int result = fLogs.indexOf(e2) - fLogs.indexOf(e1);
                    if (DATE_ORDER == DESCENDING)
                        result *= DESCENDING;
                    return result;
                }
                if (DATE_ORDER == DESCENDING)
                    return date1 > date2 ? DESCENDING : ASCENDING;
                return date1 < date2 ? DESCENDING : ASCENDING;
            }
        };
    }
}

From source file:org.eclipse.pde.internal.ui.compare.PluginStructureViewerCreator.java

License:Open Source License

public Viewer createViewer(Composite parent, CompareConfiguration config) {
    StructureDiffViewer viewer = new StructureDiffViewer(parent, config);
    viewer.setStructureCreator(new PluginStructureCreator());
    viewer.setComparator(new ViewerComparator() {
        public int compare(Viewer viewer, Object e1, Object e2) {
            if (e1 instanceof DiffNode) {
                if (e2 instanceof DiffNode) {
                    ITypedElement e1Element = ((DiffNode) e1).getAncestor();
                    ITypedElement e2Element = ((DiffNode) e2).getAncestor();
                    if (!(e1Element instanceof DocumentRangeNode))
                        e1Element = ((DiffNode) e1).getLeft();
                    if (!(e2Element instanceof DocumentRangeNode))
                        e2Element = ((DiffNode) e2).getLeft();
                    if (e1Element instanceof DocumentRangeNode && e2Element instanceof DocumentRangeNode) {
                        float e1off = getRelativeOffset(((DocumentRangeNode) e1Element));
                        float e2off = getRelativeOffset(((DocumentRangeNode) e2Element));
                        return e1off - e2off < 0 ? -1 : 1;
                    }//  w w w .java  2 s. c o m
                    return 0;
                }
                return -1;
            }
            return 1;
        }

        // we may be comparing the ancestor to the left (local) document
        // since the lengths may be different, base the comparison on the relative position in the doc
        private float getRelativeOffset(DocumentRangeNode node) {
            float absoluteOffset = node.getRange().getOffset();
            float documentLength = node.getDocument().getLength();
            return absoluteOffset / documentLength;
        }
    });
    return viewer;
}

From source file:org.eclipse.pde.internal.ui.editor.actions.SortAction.java

License:Open Source License

/**
 * @param viewer//  w  w  w .jav a  2s. co  m
 * @param tooltipText
 * @param sorter
 * @param defaultSorter
 * @param listener
 * @param useMiniImage
 */
public SortAction(StructuredViewer viewer, String tooltipText, ViewerComparator sorter,
        ViewerComparator defaultSorter, IPropertyChangeListener listener) {

    super(tooltipText, IAction.AS_CHECK_BOX);
    // Set the tooltip
    setToolTipText(tooltipText);
    // Set the image
    setImageDescriptor(PDEPluginImages.DESC_ALPHAB_SORT_CO);
    // Set the default comparator
    fDefaultComparator = defaultSorter;
    // Set the viewer
    fViewer = viewer;
    // Set the comparator
    // If one was not specified, use the default
    if (sorter == null) {
        fComparator = new ViewerComparator();
    } else {
        fComparator = sorter;
    }
    // Determine if the viewer is already sorted
    // Note: Most likely the default comparator is null
    if (viewer.getComparator() == fDefaultComparator) {
        fSorted = false;
    } else {
        fSorted = true;
    }
    // Set the status of this action depending on whether it is sorted or
    // not
    setChecked(fSorted);
    // If a listener was specified, use it
    if (listener != null) {
        addListenerObject(listener);
    }
}

From source file:org.eclipse.pde.internal.ui.editor.category.DownloadStatsSection.java

License:Open Source License

protected void createClient(Section section, FormToolkit toolkit) {
    fModel = (ISiteModel) getPage().getModel();
    fModel.addModelChangedListener(this);

    section.setLayout(FormLayoutFactory.createClearGridLayout(false, 1));
    GridData data = new GridData(GridData.FILL_BOTH);
    section.setLayoutData(data);/*  w  w w  . j  av a 2 s  .c om*/

    // Create and configure client
    Composite client = toolkit.createComposite(section);
    client.setLayout(FormLayoutFactory.createSectionClientGridLayout(false, 1));
    client.setLayoutData(new GridData(GridData.FILL_BOTH));

    Composite urlContainer = toolkit.createComposite(client);
    urlContainer.setLayout(FormLayoutFactory.createSectionClientGridLayout(false, 2));
    urlContainer.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

    // Create form entry
    IActionBars actionBars = getPage().getPDEEditor().getEditorSite().getActionBars();
    fURLEntry = new FormEntry(urlContainer, toolkit, PDEUIMessages.StatsSection_url, SWT.NONE);
    fURLEntry.setFormEntryListener(new FormEntryAdapter(this, actionBars) {
        public void textValueChanged(FormEntry entry) {
            try {
                getStatsInfo().setURL(entry.getValue());
            } catch (CoreException e) {
                PDEPlugin.log(e);
            }
        }

    });
    fURLEntry.setEditable(isEditable());

    Composite container = createClientContainer(client, 2, toolkit);
    createViewerPartControl(container, SWT.MULTI, 2, toolkit);
    container.setLayoutData(new GridData(GridData.FILL_BOTH));

    TablePart tablePart = getTablePart();
    fArtifactTable = tablePart.getTableViewer();
    fArtifactTable.setContentProvider(new ArtifactsContentProvider());
    fArtifactTable.setLabelProvider(new CategoryLabelProvider());
    fArtifactTable.setComparator(new ViewerComparator() {
        @Override
        public int category(Object element) {
            if (element instanceof SiteFeatureAdapter)
                return 0;
            return 1;
        }
    });
    data = (GridData) tablePart.getControl().getLayoutData();
    data.minimumWidth = 200;
    fArtifactTable.setInput(getStatsInfo());
    tablePart.setButtonEnabled(0, isEditable());
    tablePart.setButtonEnabled(1, isEditable());
    tablePart.setButtonEnabled(2, isEditable());
    tablePart.setButtonEnabled(3, isEditable());

    toolkit.paintBordersFor(container);

    section.setClient(client);
    section.setText(PDEUIMessages.StatsSection_title);
    section.setDescription(PDEUIMessages.StatsSection_description);
}

From source file:org.eclipse.pde.internal.ui.editor.category.RepositoryReferenceSection.java

License:Open Source License

@Override
protected void createClient(Section section, FormToolkit toolkit) {
    fModel = (ISiteModel) getPage().getModel();
    fModel.addModelChangedListener(this);

    section.setLayout(FormLayoutFactory.createClearGridLayout(false, 1));
    GridData sectionData = new GridData(GridData.FILL_BOTH);
    sectionData.verticalSpan = 2;/*  w  w w  .  j  a v  a  2  s.  co  m*/
    section.setLayoutData(sectionData);

    Composite container = createClientContainer(section, 2, toolkit);
    createViewerPartControl(container, SWT.MULTI | SWT.FULL_SELECTION, 2, toolkit);
    container.setLayoutData(new GridData(GridData.FILL_BOTH));

    TablePart tablePart = getTablePart();
    fRepositoryTable = tablePart.getTableViewer();

    final Table table = fRepositoryTable.getTable();

    final TableColumn locationColumn = new TableColumn(table, SWT.LEFT);
    locationColumn.setText(PDEUIMessages.UpdatesSection_LocationColumn);
    locationColumn.setWidth(240);

    final TableColumn enabledColumn = new TableColumn(table, SWT.LEFT);
    enabledColumn.setText(PDEUIMessages.UpdatesSection_EnabledColumn);
    enabledColumn.setWidth(120);

    GridData data = (GridData) tablePart.getControl().getLayoutData();
    data.minimumWidth = 200;

    tablePart.setButtonEnabled(0, isEditable());
    tablePart.setButtonEnabled(1, isEditable());

    table.setHeaderVisible(true);
    toolkit.paintBordersFor(container);

    table.addControlListener(new ControlListener() {

        public void controlMoved(ControlEvent e) {
        }

        public void controlResized(ControlEvent e) {
            int size = table.getSize().x;
            locationColumn.setWidth(size / 6 * 5);
            enabledColumn.setWidth(size / 6 * 1);
        }

    });

    fRepositoryTable.setLabelProvider(new LabelProvider());
    fRepositoryTable.setContentProvider(new ContentProvider());
    fRepositoryTable.setComparator(new ViewerComparator() {
        @Override
        public int compare(Viewer viewer, Object e1, Object e2) {
            IRepositoryReference r1 = (IRepositoryReference) e1;
            IRepositoryReference r2 = (IRepositoryReference) e2;
            return super.compare(viewer, r1.getURL(), r2.getURL());
        }
    });
    fRepositoryTable.setInput(getSite());
    createEditors();

    section.setClient(container);

    section.setText(PDEUIMessages.RepositorySection_title);
    section.setDescription(PDEUIMessages.RepositorySection_description);
}

From source file:org.eclipse.pde.internal.ui.editor.plugin.ExportPackageSection.java

License:Open Source License

@Override
protected void createClient(Section section, FormToolkit toolkit) {
    section.setText(PDEUIMessages.ExportPackageSection_title);
    if (isFragment())
        section.setDescription(PDEUIMessages.ExportPackageSection_descFragment);
    else/*ww  w  .ja  v a 2 s  .  c o m*/
        section.setDescription(PDEUIMessages.ExportPackageSection_desc);

    Composite container = createClientContainer(section, 2, toolkit);
    createViewerPartControl(container, SWT.MULTI, 2, toolkit);
    TablePart tablePart = getTablePart();
    fPackageViewer = tablePart.getTableViewer();
    fPackageViewer.setContentProvider(new ExportPackageContentProvider());
    fPackageViewer.setLabelProvider(PDEPlugin.getDefault().getLabelProvider());
    fPackageViewer.setComparator(new ViewerComparator() {
        @Override
        public int compare(Viewer viewer, Object e1, Object e2) {
            String s1 = e1.toString();
            String s2 = e2.toString();
            if (s1.indexOf(" ") != -1) //$NON-NLS-1$
                s1 = s1.substring(0, s1.indexOf(" ")); //$NON-NLS-1$
            if (s2.indexOf(" ") != -1) //$NON-NLS-1$
                s2 = s2.substring(0, s2.indexOf(" ")); //$NON-NLS-1$
            return super.compare(viewer, s1, s2);
        }
    });
    toolkit.paintBordersFor(container);
    section.setClient(container);
    GridData gd = new GridData(GridData.FILL_BOTH);
    if (((ManifestEditor) getPage().getEditor()).isEquinox()) {
        gd.verticalSpan = 2;
        gd.minimumWidth = 300;
    }
    section.setLayout(FormLayoutFactory.createClearGridLayout(false, 1));
    section.setLayoutData(gd);
    makeActions();

    IBundleModel model = getBundleModel();
    fPackageViewer.setInput(model);
    model.addModelChangedListener(this);
    updateButtons();
}

From source file:org.eclipse.pde.internal.ui.editor.plugin.ImportPackageSection.java

License:Open Source License

@Override
protected void createClient(Section section, FormToolkit toolkit) {
    section.setText(PDEUIMessages.ImportPackageSection_required);
    if (isFragment())
        section.setDescription(PDEUIMessages.ImportPackageSection_descFragment);
    else/*from w ww  .j a  va 2  s  .co  m*/
        section.setDescription(PDEUIMessages.ImportPackageSection_desc);

    Composite container = createClientContainer(section, 2, toolkit);
    createViewerPartControl(container, SWT.MULTI, 2, toolkit);
    TablePart tablePart = getTablePart();
    fPackageViewer = tablePart.getTableViewer();
    fPackageViewer.setContentProvider(new ImportPackageContentProvider());
    fPackageViewer.setLabelProvider(new PDELabelProvider() {

        @Override
        public Image getObjectImage(PackageObject obj) {
            if (!(obj instanceof ImportPackageObject))
                return super.getObjectImage(obj);
            int flags = 0;
            if (((ImportPackageObject) obj).isOptional())
                flags = SharedLabelProvider.F_OPTIONAL;
            ImageDescriptor desc = JavaUI.getSharedImages().getImageDescriptor(ISharedImages.IMG_OBJS_PACKAGE);
            return get(desc, flags);
        }

    });
    fPackageViewer.setComparator(new ViewerComparator() {
        @Override
        public int compare(Viewer viewer, Object e1, Object e2) {
            String s1 = e1.toString();
            String s2 = e2.toString();
            if (s1.indexOf(" ") != -1) //$NON-NLS-1$
                s1 = s1.substring(0, s1.indexOf(" ")); //$NON-NLS-1$
            if (s2.indexOf(" ") != -1) //$NON-NLS-1$
                s2 = s2.substring(0, s2.indexOf(" ")); //$NON-NLS-1$
            return super.compare(viewer, s1, s2);
        }
    });
    toolkit.paintBordersFor(container);
    section.setClient(container);
    section.setLayout(FormLayoutFactory.createClearGridLayout(false, 1));
    section.setLayoutData(new GridData(GridData.FILL_BOTH));
    makeActions();

    IBundleModel model = getBundleModel();
    fPackageViewer.setInput(model);
    model.addModelChangedListener(this);
    updateButtons();
}

From source file:org.eclipse.pde.internal.ui.editor.product.JRESection.java

License:Open Source License

protected void createClient(Section section, FormToolkit toolkit) {

    section.setLayout(FormLayoutFactory.createClearGridLayout(false, 1));
    GridData data = new GridData(GridData.FILL_HORIZONTAL);
    data.horizontalSpan = 2;/* ww w  .j  av  a  2 s. c om*/
    section.setLayoutData(data);

    section.setText(PDEUIMessages.ProductJRESection_title);
    section.setDescription(PDEUIMessages.ProductJRESection_desc);

    Composite client = toolkit.createComposite(section);
    client.setLayout(FormLayoutFactory.createSectionClientGridLayout(false, 3));
    client.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

    fTabFolder = new CTabFolder(client, SWT.FLAT | SWT.TOP);
    toolkit.adapt(fTabFolder, true, true);
    GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
    fTabFolder.setLayoutData(gd);
    gd.heightHint = 2;
    gd.horizontalSpan = 3;
    gd.grabExcessHorizontalSpace = true;
    toolkit.getColors().initializeSectionToolBarColors();
    Color selectedColor = toolkit.getColors().getColor(IFormColors.TB_BG);
    fTabFolder.setSelectionBackground(new Color[] { selectedColor, toolkit.getColors().getBackground() },
            new int[] { 100 }, true);

    fTabFolder.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            refresh();
        }
    });
    fTabFolder.setUnselectedImageVisible(false);

    FormText text = toolkit.createFormText(client, false);
    text.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
    text.setText(PDEUIMessages.ProductJRESection_eeName, false, false);

    fEEsCombo = new ComboViewerPart();
    fEEsCombo.createControl(client, toolkit, SWT.SINGLE | SWT.BORDER | SWT.READ_ONLY);
    fEEsCombo.getControl().setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    fEEsCombo.setLabelProvider(new EELabelProvider());
    fEEsCombo.setComparator(new ViewerComparator());
    fEEsCombo.setItems(VMUtil.getExecutionEnvironments());
    fEEsCombo.addItem("", 0); //$NON-NLS-1$
    fEEsCombo.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            if (!fBlockChanges) {
                Object selection = ((IStructuredSelection) event.getSelection()).getFirstElement();
                setEE(selection instanceof IExecutionEnvironment ? (IExecutionEnvironment) selection : null);
                fEEButton.setEnabled(selection instanceof IExecutionEnvironment);
            }
        }
    });
    fEEsCombo.setEnabled(isEditable());

    fExecutionEnvironmentsButton = toolkit.createButton(client, PDEUIMessages.ProductJRESection_browseEEs,
            SWT.PUSH);
    GridDataFactory.fillDefaults().applyTo(fExecutionEnvironmentsButton);
    fExecutionEnvironmentsButton.addListener(SWT.Selection, new Listener() {
        public void handleEvent(Event event) {
            PreferencesUtil
                    .createPreferenceDialogOn(getSection().getShell(), "org.eclipse.jdt.debug.ui.jreProfiles", //$NON-NLS-1$
                            new String[] { "org.eclipse.jdt.debug.ui.jreProfiles" }, null) //$NON-NLS-1$
                    .open();
        }
    });
    fExecutionEnvironmentsButton.setEnabled(isEditable());

    fEEButton = toolkit.createButton(client, PDEUIMessages.ProdctJRESection_bundleJRE, SWT.CHECK);
    GridData buttonLayout = new GridData(GridData.FILL_HORIZONTAL);
    buttonLayout.horizontalSpan = 2;
    fEEButton.setLayoutData(buttonLayout);
    fEEButton.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            getJVMLocations().setIncludeJREWithProduct(getOS(fLastTab), fEEButton.getSelection());
        }
    });
    fEEButton.setEnabled(isEditable());

    createTabs();
    toolkit.paintBordersFor(client);
    section.setClient(client);
    // Register to be notified when the model changes
    getProductModel().addModelChangedListener(this);
}