private void createImportButtons(Composite container) {
    PlatformUI.getWorkbench()
        .getHelpSystem()
        .setHelp(container, IJavaDebugHelpContextIds.SNIPPET_IMPORTS_DIALOG);
    Composite bcomp =
        SWTFactory.createComposite(
            container,
            container.getFont(),
            1,
            1,
            GridData.VERTICAL_ALIGN_BEGINNING | GridData.HORIZONTAL_ALIGN_FILL,
            0,
            0);
    GridLayout gl = (GridLayout) bcomp.getLayout();
    gl.verticalSpacing = 0;
    // Add type button
    fAddTypeButton =
        SWTFactory.createPushButton(
            bcomp,
            SnippetMessages.getString("SelectImportsDialog.Add_&Type_1"), // $NON-NLS-1$
            SnippetMessages.getString(
                "SelectImportsDialog.Choose_a_Type_to_Add_as_an_Import_2"), //$NON-NLS-1$
            null);
    fAddTypeButton.addSelectionListener(
        new SelectionListener() {
          @Override
          public void widgetSelected(SelectionEvent se) {
            addType();
          }

          @Override
          public void widgetDefaultSelected(SelectionEvent se) {}
        });

    // Add package button
    fAddPackageButton =
        SWTFactory.createPushButton(
            bcomp,
            SnippetMessages.getString("SelectImportsDialog.Add_&Package_3"), // $NON-NLS-1$
            SnippetMessages.getString(
                "SelectImportsDialog.Choose_a_Package_to_Add_as_an_Import_4"), //$NON-NLS-1$
            null);
    fAddPackageButton.addSelectionListener(
        new SelectionListener() {
          @Override
          public void widgetSelected(SelectionEvent se) {
            addPackage();
          }

          @Override
          public void widgetDefaultSelected(SelectionEvent se) {}
        });

    // Remove button
    fRemoveImportsButton =
        SWTFactory.createPushButton(
            bcomp,
            SnippetMessages.getString("SelectImportsDialog.&Remove_5"), // $NON-NLS-1$
            SnippetMessages.getString(
                "SelectImportsDialog.Remove_All_Selected_Imports_6"), //$NON-NLS-1$
            null);
    fRemoveImportsButton.addSelectionListener(
        new SelectionListener() {
          @Override
          public void widgetSelected(SelectionEvent se) {
            removeImports();
          }

          @Override
          public void widgetDefaultSelected(SelectionEvent se) {}
        });
    fRemoveImportsButton.setEnabled(false);
  }
  /**
   * Creates this block's control in the given control.
   *
   * @param ancestor containing control
   * @param useManageButton whether to present a single 'manage...' button to the user that opens
   *     the installed JREs pref page for JRE management, or to provide 'add, remove, edit, and
   *     search' buttons.
   */
  public void createControl(Composite ancestor) {
    Font font = ancestor.getFont();
    Composite parent = SWTFactory.createComposite(ancestor, font, 2, 1, GridData.FILL_BOTH);
    fControl = parent;

    SWTFactory.createLabel(parent, JREMessages.InstalledJREsBlock_15, 2);

    fTable = new Table(parent, SWT.CHECK | SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION);
    GridData gd = new GridData(GridData.FILL_BOTH);
    gd.heightHint = 250;
    gd.widthHint = 350;
    fTable.setLayoutData(gd);
    fTable.setFont(font);
    fTable.setHeaderVisible(true);
    fTable.setLinesVisible(true);

    TableColumn column = new TableColumn(fTable, SWT.NULL);
    column.setText(JREMessages.InstalledJREsBlock_0);
    column.addSelectionListener(
        new SelectionAdapter() {
          @Override
          public void widgetSelected(SelectionEvent e) {
            sortByName();
            fVMList.refresh(true);
          }
        });
    int defaultwidth = 350 / 3 + 1;
    column.setWidth(defaultwidth);

    column = new TableColumn(fTable, SWT.NULL);
    column.setText(JREMessages.InstalledJREsBlock_1);
    column.addSelectionListener(
        new SelectionAdapter() {
          @Override
          public void widgetSelected(SelectionEvent e) {
            sortByLocation();
            fVMList.refresh(true);
          }
        });
    column.setWidth(defaultwidth);

    column = new TableColumn(fTable, SWT.NULL);
    column.setText(JREMessages.InstalledJREsBlock_2);
    column.addSelectionListener(
        new SelectionAdapter() {
          @Override
          public void widgetSelected(SelectionEvent e) {
            sortByType();
            fVMList.refresh(true);
          }
        });
    column.setWidth(defaultwidth);

    fVMList = new CheckboxTableViewer(fTable);
    fVMList.setLabelProvider(new VMLabelProvider());
    fVMList.setContentProvider(new JREsContentProvider());
    fVMList.setUseHashlookup(true);
    // by default, sort by name
    sortByName();

    fVMList.addSelectionChangedListener(
        new ISelectionChangedListener() {
          @Override
          public void selectionChanged(SelectionChangedEvent evt) {
            enableButtons();
          }
        });

    fVMList.addCheckStateListener(
        new ICheckStateListener() {
          @Override
          public void checkStateChanged(CheckStateChangedEvent event) {
            if (event.getChecked()) {
              setCheckedJRE((IVMInstall) event.getElement());
            } else {
              setCheckedJRE(null);
            }
          }
        });

    fVMList.addDoubleClickListener(
        new IDoubleClickListener() {
          @Override
          public void doubleClick(DoubleClickEvent e) {
            if (!fVMList.getSelection().isEmpty()) {
              editVM();
            }
          }
        });
    fTable.addKeyListener(
        new KeyAdapter() {
          @Override
          public void keyPressed(KeyEvent event) {
            if (event.character == SWT.DEL && event.stateMask == 0) {
              if (fRemoveButton.isEnabled()) {
                removeVMs();
              }
            }
          }
        });

    Composite buttons =
        SWTFactory.createComposite(parent, font, 1, 1, GridData.VERTICAL_ALIGN_BEGINNING, 0, 0);

    fAddButton = SWTFactory.createPushButton(buttons, JREMessages.InstalledJREsBlock_3, null);
    fAddButton.addListener(
        SWT.Selection,
        new Listener() {
          @Override
          public void handleEvent(Event evt) {
            addVM();
          }
        });

    fEditButton = SWTFactory.createPushButton(buttons, JREMessages.InstalledJREsBlock_4, null);
    fEditButton.addListener(
        SWT.Selection,
        new Listener() {
          @Override
          public void handleEvent(Event evt) {
            editVM();
          }
        });

    fCopyButton = SWTFactory.createPushButton(buttons, JREMessages.InstalledJREsBlock_16, null);
    fCopyButton.addListener(
        SWT.Selection,
        new Listener() {
          @Override
          public void handleEvent(Event evt) {
            copyVM();
          }
        });

    fRemoveButton = SWTFactory.createPushButton(buttons, JREMessages.InstalledJREsBlock_5, null);
    fRemoveButton.addListener(
        SWT.Selection,
        new Listener() {
          @Override
          public void handleEvent(Event evt) {
            removeVMs();
          }
        });

    SWTFactory.createVerticalSpacer(parent, 1);

    fSearchButton = SWTFactory.createPushButton(buttons, JREMessages.InstalledJREsBlock_6, null);
    fSearchButton.addListener(
        SWT.Selection,
        new Listener() {
          @Override
          public void handleEvent(Event evt) {
            search();
          }
        });

    fillWithWorkspaceJREs();
    enableButtons();
    fAddButton.setEnabled(JavaRuntime.getVMInstallTypes().length > 0);

    JavaRuntime.addVMInstallChangedListener(fListener);
  }