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

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

Introduction

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

Prototype

public CheckboxTableViewer(Table table) 

Source Link

Document

Creates a table viewer on the given table control.

Usage

From source file:com.salesforce.ide.deployment.ui.wizards.DeploymentPlanComposite.java

License:Open Source License

private void initialize() {
    setLayout(new GridLayout(5, false));

    lblSummary = new Label(this, SWT.NONE);
    lblSummary.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 5, 0));
    // set count value after table has been loaded
    lblSummary.setText("Found (0) deployment candidates");

    tblDeployPlan = new Table(this, SWT.BORDER | SWT.CHECK | SWT.MULTI | SWT.FULL_SELECTION);
    tblDeployPlan.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 5, 15));
    tblDeployPlan.setLinesVisible(true);
    tblDeployPlan.setHeaderVisible(true);

    tblViewer = new CheckboxTableViewer(tblDeployPlan);
    tblViewer.setContentProvider(new DeploymentPlanContentProvider());
    tblViewer.setLabelProvider(new DeploymentPlanLabelProvider());
    tblViewer.addCheckStateListener(new DeploymentPlanCheckStateListener(deploymentPlanPage));

    Listener sortListener = new DeploymentPlanColumnSortListener(this);

    final TableColumn colActionSelect = new TableColumn(tblDeployPlan, SWT.NONE);
    colActionSelect.setWidth(100);//from w ww.  j  a va 2s .co  m
    colActionSelect.setText("Apply Action?");
    colActionSelect.setAlignment(SWT.CENTER);
    colActionSelect.setData(new ColumnData(DeploymentComponentSorter.SORT_ACTION));
    colActionSelect.addListener(SWT.Selection, sortListener);

    final TableColumn colComponentName = new TableColumn(tblDeployPlan, SWT.NONE);
    colComponentName.setWidth(150);
    colComponentName.setText("Name");
    colComponentName.setData(new ColumnData(DeploymentComponentSorter.SORT_NAME));
    colComponentName.addListener(SWT.Selection, sortListener);

    final TableColumn colPackageName = new TableColumn(tblDeployPlan, SWT.NONE);
    colPackageName.setWidth(100);
    colPackageName.setText("Package");
    colPackageName.setData(new ColumnData(DeploymentComponentSorter.SORT_PACKAGE_NAME));
    colPackageName.addListener(SWT.Selection, sortListener);

    final TableColumn colComponentType = new TableColumn(tblDeployPlan, SWT.NONE);
    colComponentType.setWidth(75);
    colComponentType.setText("Type");
    colComponentType.setData(new ColumnData(DeploymentComponentSorter.SORT_TYPE));
    colComponentType.addListener(SWT.Selection, sortListener);

    btnSelectAll = new Button(this, SWT.NONE);
    btnSelectAll.setText("Select All");
    btnSelectAll.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false, 1, 1));
    btnSelectAll.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            tblViewer.setAllChecked(true);
            btnTestRun.setEnabled(true);
            deploymentPlanPage.setDeploySelectionForAll(true);
            deploymentPlanPage.setEnableNext(true);
        }
    });

    btnDeselectAll = new Button(this, SWT.NONE);
    btnDeselectAll.setText("Deselect All");
    btnDeselectAll.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false, 1, 1));
    btnDeselectAll.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            tblViewer.setAllChecked(false);
            btnTestRun.setEnabled(false);
            deploymentPlanPage.setDeploySelectionForAll(false);
            deploymentPlanPage.setEnableNext(false);
        }
    });

    btnRefresh = new Button(this, SWT.NONE);
    btnRefresh.setText("Refresh Plan");
    btnRefresh.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false, 1, 1));
    btnRefresh.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            deploymentPlanPage.reloadDeploymentView();
        }
    });

    lblActionTooltip = new Label(this, SWT.WRAP);
    lblActionTooltip.setText("Click on row for description");
    lblActionTooltip.setLayoutData(new GridData(SWT.END, SWT.CENTER, true, false, 1, 1));

    Label filler1 = new Label(this, SWT.NONE);
    filler1.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 5, 0));

    Label separator = new Label(this, SWT.HORIZONTAL | SWT.SEPARATOR);
    separator.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 5, 0));

    lblTestDeployment = new Label(this, SWT.WRAP);
    lblTestDeployment.setText(
            DeploymentMessages.getString("DeploymentWizard..DeploymentPlanComposite.Validate.message"));
    lblTestDeployment.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 5, 0));

    btnTestRun = new Button(this, SWT.NONE);
    btnTestRun.setText("Validate Deployment");
    btnTestRun.setLayoutData(new GridData(SWT.BEGINNING, 0, true, false, 5, 0));
    btnTestRun.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            deploymentPlanPage.testDeployment();
        }
    });

    Label filler16 = new Label(this, SWT.NONE);
    filler16.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 5, 0));
    Label filler161 = new Label(this, SWT.NONE);
    filler161.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 5, 0));

    lblByClickingNext = new Label(this, SWT.NONE);
    lblByClickingNext.setText(DeploymentMessages.getString("DeploymentWizard.ReviewComposite.Next.label"));
    lblByClickingNext.setLayoutData(new GridData(SWT.END, SWT.CENTER, true, false, 5, 0));
}

From source file:com.siteview.mde.internal.ui.preferences.OSGiFrameworkPreferencePage.java

License:Open Source License

protected Control createContents(Composite parent) {
    Composite comp = SWTFactory.createComposite(parent, 2, 1, GridData.FILL_BOTH);

    Link text = new Link(comp, SWT.WRAP);
    final IMonitorExtensionPoint point = MDECore.getDefault().getExtensionsRegistry()
            .findExtensionPoint(OSGiFrameworkManager.POINT_ID);
    text.setText((point != null && SchemaRegistry.getSchemaURL(point) != null)
            ? MDEUIMessages.OSGiFrameworkPreferencePage_installed
            : MDEUIMessages.OSGiFrameworkPreferencePage_installed_nolink);
    GridData gd = new GridData();
    gd.horizontalSpan = 2;/*from w w  w  .ja  v a  2 s. co  m*/
    text.setLayoutData(gd);
    text.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            new ShowDescriptionAction(point, true).run();
        }
    });

    fTableViewer = new CheckboxTableViewer(
            new Table(comp, SWT.CHECK | SWT.BORDER | SWT.SINGLE | SWT.FULL_SELECTION));
    fTableViewer.getTable().setLayoutData(new GridData(GridData.FILL_BOTH));
    fTableViewer.setContentProvider(ArrayContentProvider.getInstance());
    fTableViewer.setLabelProvider(new FrameworkLabelProvider());
    fTableViewer.setInput(PDELaunchingPlugin.getDefault().getOSGiFrameworkManager().getSortedFrameworks());
    fTableViewer.addCheckStateListener(new ICheckStateListener() {
        public void checkStateChanged(CheckStateChangedEvent event) {
            IConfigurationElement element = (IConfigurationElement) event.getElement();
            fTableViewer.setCheckedElements(new Object[] { element });
            fDefaultFramework = element.getAttribute(OSGiFrameworkManager.ATT_ID);
            fTableViewer.refresh();
        }
    });
    if (fDefaultFramework != null) {
        IConfigurationElement element = PDELaunchingPlugin.getDefault().getOSGiFrameworkManager()
                .getFramework(fDefaultFramework);
        if (element != null) {
            fTableViewer.setCheckedElements(new Object[] { element });
        }
    }
    Dialog.applyDialogFont(parent);
    PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(), IHelpContextIds.OSGI_PREFERENCE_PAGE);
    return comp;
}

From source file:com.svcdelivery.liquibase.eclipse.internal.ui.DataSourcePage.java

License:Apache License

@Override
public final void createControl(final Composite parent) {
    final Composite root = new Composite(parent, SWT.NONE);
    root.setLayout(new FillLayout());

    Table profilePickerTable = new Table(root, SWT.V_SCROLL | SWT.CHECK | style);
    profilePicker = new CheckboxTableViewer(profilePickerTable);
    profilePicker.setContentProvider(new ConnectionProfileContentProvider());
    profilePicker.setLabelProvider(new ConnectionProfileLabelProvider());
    profilePicker.addCheckStateListener(new ICheckStateListener() {

        @Override/* ww  w  .  j av a2s  . co m*/
        public void checkStateChanged(CheckStateChangedEvent event) {
            Object[] elements = profilePicker.getCheckedElements();
            List<IConnectionProfile> profileList = new ArrayList<IConnectionProfile>();
            for (Object next : elements) {
                if (next instanceof IConnectionProfile) {
                    profileList.add((IConnectionProfile) next);
                }
            }
            profiles = profileList.toArray(new IConnectionProfile[profileList.size()]);
            updatePageComplete();
        }
    });
    profilePicker.setInput(ProfileManager.getInstance().getProfiles());
    setControl(root);
}

From source file:com.svcdelivery.liquibase.eclipse.internal.ui.ProjectDialog.java

License:Apache License

@Override
protected Control createDialogArea(Composite parent) {
    Composite contents = new Composite(parent, SWT.NONE);
    contents.setLayout(new GridLayout());
    Label text = new Label(contents, SWT.NONE);
    text.setText("Select active Liquibase projects.");
    text.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
    Table projectTable = new Table(contents, SWT.CHECK);
    GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
    layoutData.minimumWidth = 250;//from  www .j a v a  2s .  c  o  m
    layoutData.minimumHeight = 300;
    projectTable.setLayoutData(layoutData);
    projectTableViewer = new CheckboxTableViewer(projectTable);
    IContentProvider provider = new ArrayContentProvider();
    IBaseLabelProvider labelProvider = new WorkbenchLabelProvider();
    ICheckStateProvider checkStateProvider = new ProjectStateProvider();
    projectTableViewer.setContentProvider(provider);
    projectTableViewer.setLabelProvider(labelProvider);
    projectTableViewer.setCheckStateProvider(checkStateProvider);
    IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
    projects = root.getProjects();
    projectTableViewer.setInput(projects);
    return contents;
}

From source file:com.symbian.smt.gui.smtwidgets.resources.ResourcesWidget.java

License:Open Source License

private void createResourceFilesComposite(SashForm sash) {
    // The Composite that contains the resource files table, along with a
    // label/*from www. j av  a 2s.co m*/
    Composite resourceFilesComposite = new Composite(sash, SWT.NONE);
    GridData gd = new GridData(SWT.BEGINNING, SWT.FILL, false, true, 1, 1);

    resourceFilesComposite.setLayoutData(gd);
    resourceFilesComposite.setLayout(new GridLayout());

    Label label = new Label(resourceFilesComposite, SWT.NONE);
    gd = new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false, 1, 1);

    label.setLayoutData(gd);
    label.setText("Resource Files");

    // The Table that contains all assigned resource files for the selected
    // resource type
    final Table table = new Table(resourceFilesComposite,
            SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI | SWT.CHECK | SWT.FULL_SELECTION);
    gd = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1);

    table.setLayoutData(gd);

    // The resource type viewer associated with the list
    resourceFilesViewer = new CheckboxTableViewer(table);

    resourceFilesViewer.setContentProvider(new ResourceFilesContentProvider());
    resourceFilesViewer.setLabelProvider(new ResourceFilesLabelProvider());

    resourceFilesViewer.addCheckStateListener(new ICheckStateListener() {

        // When the user changed the checked state of the checkbox in the
        // table, set
        // or unset the isChecked attribute in the corresponding
        // CheckableResourceFilename object
        public void checkStateChanged(CheckStateChangedEvent event) {
            CheckableResourceFilename checkableFilename = (CheckableResourceFilename) event.getElement();
            boolean isSelected = event.getChecked();

            if (isSelected) {
                handleMultipleCheckRules(checkableFilename);
            } else {
                handleNoCheckRules(checkableFilename);
            }
        }

    });
}

From source file:com.tencent.wstt.apt.ui.views.DevicesView.java

License:Open Source License

/**
 * //from w w  w  .  j a  v a2s  .  co  m
* @Title: createTargetPkgTableView  
* @Description:   
* @param parent 
* void 
* @throws
 */
private void createTargetPkgTableView(Composite parent) {
    targetPkgTableViewer = new TableViewer(parent,
            SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL | SWT.CHECK);
    ctv = new CheckboxTableViewer(targetPkgTableViewer.getTable());
    ctv.addCheckStateListener(new ICheckStateListener() {

        @Override
        public void checkStateChanged(CheckStateChangedEvent event) {
            if (isSupportCheckChangePer) {
                GetCurCheckedStateUtil.update();
            } else {
                APTConsoleFactory.getInstance().APTPrint("Operation forbid");
            }
        }
    });

    //  
    for (int i = 0; i < TARGET_COLUMN_NAME.length; i++) {
        new TableColumn(targetPkgTableViewer.getTable(), SWT.LEFT).setText(TARGET_COLUMN_NAME[i]);
    }
    targetPkgTableViewer.getTable().getColumn(0).setWidth(200);
    targetPkgTableViewer.getTable().getColumn(1).setWidth(50);
    // ??
    targetPkgTableViewer.getTable().setHeaderVisible(true);
    targetPkgTableViewer.getTable().setLinesVisible(true);

    targetPkgTableViewer.setContentProvider(new ViewContentProvider());
    targetPkgTableViewer.setLabelProvider(new ViewLabelProvider());

    targetPkgTableViewer.getTable().addMouseListener(new MouseListener() {

        @Override
        public void mouseUp(MouseEvent e) {

        }

        @Override
        public void mouseDown(MouseEvent e) {
        }

        @Override
        public void mouseDoubleClick(MouseEvent e) {
            if (isSupportAddOrDeleteOper) {
                APTState.getInstance().DealWithEventBefore(APTEventEnum.CONFIGRURE_OPER);
                TableItem[] selectData = targetPkgTableViewer.getTable().getSelection();
                if (selectData == null || selectData.length == 0) {
                    return;
                }

                PkgInfo itemData = (PkgInfo) selectData[0].getData();

                targetPkgTableViewer.remove(itemData);
                APTState.getInstance().DealWithEventAfter(APTEventEnum.CONFIGRURE_OPER);
            } else {
                APTConsoleFactory.getInstance().APTPrint("Operation forbid");
            }

        }
    });

    targetPkgTableViewer.getTable().setToolTipText("?????");

    FormData tableViewFormData = new FormData();
    tableViewFormData.left = new FormAttachment(0, 5);
    tableViewFormData.right = new FormAttachment(100, -5);
    tableViewFormData.top = new FormAttachment(pkgNameText, 10);
    tableViewFormData.height = 125;
    Table table = targetPkgTableViewer.getTable();
    table.setLayoutData(tableViewFormData);

}

From source file:com.vectrace.MercurialEclipse.dialogs.RejectsDialog.java

License:Open Source License

@Override
protected Control createDialogArea(Composite parent) {
    getShell().setText(Messages.getString(title, failedChangeSetId));

    Composite container = SWTWidgetHelper.createComposite(parent, 1);
    GridData gd = SWTWidgetHelper.getFillGD(400);
    gd.minimumWidth = 500;// ww  w . jav  a2  s . c  om
    gd.widthHint = container.getBorderWidth();
    container.setLayoutData(gd);
    super.createDialogArea(parent);

    Label label = new Label(container, SWT.WRAP);
    final GridData data = new GridData(SWT.FILL, SWT.TOP, true, false, 1, 1);
    label.setLayoutData(data);
    label.setText(Messages.getString(detail));

    Table table = createTable(container);
    viewer = new CheckboxTableViewer(table);
    viewer.setContentProvider(new ArrayContentProvider());
    viewer.setLabelProvider(new RejectLabelProvider());
    viewer.setInput(rejects);

    viewer.addDoubleClickListener(new IDoubleClickListener() {
        public void doubleClick(DoubleClickEvent event) {
            showRejectedDiff(selectedFile);
        }
    });

    addSelectionListener();

    openAllRejectsCheckBox = SWTWidgetHelper.createCheckBox(container,
            Messages.getString("RejectsDialog.openAllRejects"));

    return container;
}

From source file:com.vectrace.MercurialEclipse.ui.CommitFilesChooser.java

License:Open Source License

public CommitFilesChooser(Composite container, boolean selectable, List<IResource> resources,
        boolean showUntracked, boolean showMissing, boolean showClean) {
    super(container, container.getStyle());
    this.selectable = selectable;
    this.showUntracked = showUntracked;
    this.missing = showMissing;
    this.showClean = showClean;
    this.untrackedFilesFilter = new UntrackedFilesFilter(missing);
    this.committableFilesFilter = new CommittableFilesFilter();

    GridLayout layout = new GridLayout();
    layout.verticalSpacing = 3;//ww  w  .  j  a v  a  2  s .com
    layout.horizontalSpacing = 0;
    layout.marginWidth = 0;
    layout.marginHeight = 0;
    setLayout(layout);

    setLayoutData(SWTWidgetHelper.getFillGD(150));

    Table table = createTable();
    viewer = new CheckboxTableViewer(table);
    viewer.setContentProvider(new ArrayContentProvider());
    CommitResourceLabelProvider labelProvider = new CommitResourceLabelProvider();
    labelProvider.addListener(new ILabelProviderListener() {
        public void labelProviderChanged(LabelProviderChangedEvent event) {
            int count = viewer.getTable().getItemCount();
            for (int i = 0; i < count; i++) {
                CommitResource commitResource = (CommitResource) viewer.getElementAt(i);
                viewer.update(commitResource, null);
            }
        }
    });
    viewer.setLabelProvider(labelProvider);
    viewer.setComparator(new ViewerComparator());
    viewer.addFilter(committableFilesFilter);
    if (!showUntracked) {
        viewer.addFilter(untrackedFilesFilter);
    }

    createOptionCheckbox();
    createShowDiffButton(container);
    createFileSelectionListener();

    makeActions();
    if (resources != null) {
        setResources(resources);
    }
}

From source file:com.xse.eclipseui.table.AbstractTable.java

License:Open Source License

private AbstractTable(final Table table, final Composite parent, final int style) {
    if (null == table) {
        this.table = this.createTable(parent, style);
    } else {//w w w .j  ava  2  s. co m
        this.table = table;
    }

    if ((style & SWT.CHECK) != 0) {
        this.viewer = new CheckboxTableViewer(this.table);
        ((CheckboxTableViewer) this.viewer).setCheckStateProvider(new ICheckStateProvider() {
            @Override
            public boolean isGrayed(final Object element) {
                return AbstractTable.this.grayedItems.contains(element);
            }

            @Override
            public boolean isChecked(final Object element) {
                return AbstractTable.this.checkedItems.contains(element);
            }
        });
    } else {
        this.viewer = new TableViewer(this.table);
    }

    this.table.setHeaderVisible(true);
    this.table.setLinesVisible(true);

    if (this.hasToolTipColumns()) {
        ColumnViewerToolTipSupport.enableFor(this.viewer, ToolTip.NO_RECREATE);
    }

    this.refreshColumns();

    if (this.table.getHorizontalBar() != null) {
        this.table.getHorizontalBar().setVisible(false);
        this.table.pack();
        this.table.getParent().layout();
    }

    this.table.addDisposeListener(new DisposeListenerImplementation(this.table));
}

From source file:com.yoursway.hello.debug.ui.internal.interpreters.InterpretersBlock.java

License:Open Source License

/**
 * Creates this block's control in the given control.
 * //from  w w w  .ja  v a2s.c om
 * @param ancestor
 *            containing control
 * @param useManageButton
 *            whether to present a single 'manage...' button to the user
 *            that opens the installed InterpreterEnvironments pref page for
 *            InterpreterEnvironment management, or to provide 'add, remove,
 *            edit, and search' buttons.
 */
public void createControl(Composite ancestor) {

    Composite parent = new Composite(ancestor, SWT.NULL);
    GridLayout layout = new GridLayout();
    layout.numColumns = 2;
    layout.marginHeight = 0;
    layout.marginWidth = 0;

    Font font = ancestor.getFont();
    parent.setFont(font);
    parent.setLayout(layout);

    fControl = parent;

    GridData data;

    Label tableLabel = new Label(parent, SWT.NONE);
    tableLabel.setText(InterpretersMessages.InstalledInterpretersBlock_15);
    data = new GridData();
    data.horizontalSpan = 2;
    tableLabel.setLayoutData(data);
    tableLabel.setFont(font);

    PixelConverter conv = new PixelConverter(parent);
    data = new GridData(GridData.FILL_BOTH);
    data.widthHint = conv.convertWidthInCharsToPixels(50);
    TableLayoutComposite tblComposite = new TableLayoutComposite(parent, SWT.NONE);
    tblComposite.setLayoutData(data);
    fTable = new Table(tblComposite, SWT.CHECK | SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION);

    data = new GridData(GridData.FILL_BOTH);
    data.widthHint = 350;
    fTable.setLayoutData(data);
    fTable.setFont(font);

    fTable.setHeaderVisible(true);
    fTable.setLinesVisible(true);

    TableColumn column1 = new TableColumn(fTable, SWT.NULL);
    column1.setText(InterpretersMessages.InstalledInterpretersBlock_0);
    column1.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            sortByName();
        }
    });
    tblComposite.addColumnData(new ColumnPixelData(70));

    TableColumn column2 = new TableColumn(fTable, SWT.NULL);
    column2.setText(InterpretersMessages.InstalledInterpretersBlock_2);
    column2.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            sortByType();
        }
    });
    tblComposite.addColumnData(new ColumnPixelData(70));

    TableColumn column3 = new TableColumn(fTable, SWT.NULL);
    column3.setText(InterpretersMessages.InstalledInterpretersBlock_1);
    column3.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            sortByLocation();
        }
    });
    tblComposite.addColumnData(new ColumnPixelData(150));

    fInterpreterList = new CheckboxTableViewer(fTable);
    fInterpreterList.setLabelProvider(new InterpreterLabelProvider());
    fInterpreterList.setContentProvider(new InterpretersContentProvider());
    // by default, sort by name
    sortByName();

    fInterpreterList.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent evt) {
            enableButtons();
        }
    });

    fInterpreterList.addCheckStateListener(new ICheckStateListener() {
        public void checkStateChanged(CheckStateChangedEvent event) {
            if (event.getChecked()) {
                setCheckedInterpreter((IInterpreterInstall) event.getElement());
            } else {
                setCheckedInterpreter(null);
            }
        }
    });

    fInterpreterList.addDoubleClickListener(new IDoubleClickListener() {
        public void doubleClick(DoubleClickEvent e) {
            if (!fInterpreterList.getSelection().isEmpty()) {
                editInterpreter();
            }
        }
    });
    fTable.addKeyListener(new KeyAdapter() {
        public void keyPressed(KeyEvent event) {
            if (event.character == SWT.DEL && event.stateMask == 0) {
                if (fRemoveButton.getEnabled())
                    removeInterpreters();
            }
        }
    });

    Composite buttons = new Composite(parent, SWT.NULL);
    buttons.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
    layout = new GridLayout();
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    buttons.setLayout(layout);
    buttons.setFont(font);

    fAddButton = createPushButton(buttons, InterpretersMessages.InstalledInterpretersBlock_3);
    fAddButton.addListener(SWT.Selection, new Listener() {
        public void handleEvent(Event evt) {
            addInterpreter();
        }
    });

    fEditButton = createPushButton(buttons, InterpretersMessages.InstalledInterpretersBlock_4);
    fEditButton.addListener(SWT.Selection, new Listener() {
        public void handleEvent(Event evt) {
            editInterpreter();
        }
    });

    fRemoveButton = createPushButton(buttons, InterpretersMessages.InstalledInterpretersBlock_5);
    fRemoveButton.addListener(SWT.Selection, new Listener() {
        public void handleEvent(Event evt) {
            removeInterpreters();
        }
    });

    // copied from ListDialogField.CreateSeparator()
    Label separator = new Label(buttons, SWT.NONE);
    separator.setVisible(false);
    GridData gd = new GridData();
    gd.horizontalAlignment = GridData.FILL;
    gd.verticalAlignment = GridData.BEGINNING;
    gd.heightHint = 4;
    separator.setLayoutData(gd);

    fillWithWorkspaceInterpreters();

    enableButtons();
    fAddButton.setEnabled(ScriptRuntime.getInterpreterInstallTypes(getCurrentNature()).length > 0);
}