public PluginPackageGeneralSection(PluginPackageFormPage page, Composite parent) {
    super(page, parent, ExpandableComposite.TITLE_BAR | Section.DESCRIPTION);

    this.page = page;

    initialize(page.getManagedForm());

    getSection().clientVerticalSpacing = FormLayoutFactory.SECTION_HEADER_VERTICAL_SPACING;
    getSection().setData("part", this); // $NON-NLS-1$

    createClient(getSection(), page.getEditor().getToolkit());
  }
  @Override
  protected void createClient(Section section, FormToolkit toolkit) {
    GridData gd = new GridData(GridData.FILL_BOTH);
    gd.minimumWidth = 250;
    gd.grabExcessVerticalSpace = true;

    section.setText(Msgs.general);
    section.setDescription(Msgs.specifyPluginPackageProperties);
    section.setLayout(FormLayoutFactory.createClearTableWrapLayout(false, 1));
    section.setLayoutData(gd);

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

    IActionBars actionBars = page.getEditor().getEditorSite().getActionBars();

    createNameEntry(client, toolkit, actionBars);
    createChangeLogEntry(client, toolkit, actionBars);
    createModuleGroupIdEntry(client, toolkit, actionBars);
    createPageUrlEntry(client, toolkit, actionBars);
    createModuleIncrementalVersionEntry(client, toolkit, actionBars);
    createAuthorEntry(client, toolkit, actionBars);
    createTagsEntry(client, toolkit, actionBars);
    createLicensesEntry(client, toolkit, actionBars);
    createShortDescriptionEntry(client, toolkit, actionBars);
    createSpeedFiltersEntry(client, toolkit, actionBars);
    toolkit.paintBordersFor(client);

    section.setClient(client);

    getModel().addModelChangedListener(this);
  }