@Override
  public void initialize(final Composite parent) {
    final Section section =
        toolkit.createSection(
            parent,
            ExpandableComposite.EXPANDED | ExpandableComposite.TITLE_BAR | Section.DESCRIPTION);
    section.setText("Robot framework");
    section.setDescription(
        "Specify which Robot Framework should be used by this project. Currently following framework is in use:");
    GridDataFactory.fillDefaults().grab(true, true).applyTo(section);

    final Composite sectionInternal = toolkit.createComposite(section);
    GridDataFactory.fillDefaults().grab(true, true).applyTo(sectionInternal);
    GridLayoutFactory.fillDefaults().extendedMargins(0, 0, 0, 10).applyTo(sectionInternal);
    section.setClient(sectionInternal);

    createCurrentFrameworkInfo(sectionInternal);
    createSeparator(sectionInternal);
    createSourceButton(sectionInternal);
    createViewer(sectionInternal);
  }
  private void createCurrentFrameworkInfo(final Composite parent) {
    currentFramework = toolkit.createFormText(parent, true);
    currentFramework.setImage(IMAGE_FOR_LINK, ImagesManager.getImage(RedImages.getRobotImage()));
    GridDataFactory.fillDefaults().grab(true, false).indent(15, 5).applyTo(currentFramework);

    final IHyperlinkListener hyperlinkListener = createHyperlinkListener();
    currentFramework.addHyperlinkListener(hyperlinkListener);
    currentFramework.addDisposeListener(
        new DisposeListener() {
          @Override
          public void widgetDisposed(final DisposeEvent e) {
            currentFramework.removeHyperlinkListener(hyperlinkListener);
          }
        });
  }
  private void createSourceButton(final Composite parent) {
    sourceButton = toolkit.createButton(parent, "Use local settings for this project", SWT.CHECK);
    sourceButton.setEnabled(false);

    sourceButton.addSelectionListener(
        new SelectionAdapter() {
          @Override
          public void widgetSelected(final SelectionEvent event) {
            viewer.getTable().setEnabled(sourceButton.getSelection());

            final Object[] elements = viewer.getCheckedElements();
            File file;
            if (elements.length == 1 && sourceButton.getSelection()) {
              final RobotRuntimeEnvironment env = (RobotRuntimeEnvironment) elements[0];
              file = env.getFile();
            } else {
              file = null;
            }
            editorInput.getProjectConfiguration().assignPythonLocation(file);
            setDirty(true);
          }
        });
  }
 private void createSeparator(final Composite parent) {
   final Label separator = toolkit.createSeparator(parent, SWT.HORIZONTAL);
   GridDataFactory.fillDefaults().indent(0, 10).applyTo(separator);
 }