org.eclipse.eef.properties.ui.api

## Interface IEEFSection

All Known Implementing Classes:
  AbstractEEFPropertySection, AbstractEEFSection, EEFLegacySection, EEFSection

    public interface IEEFSection

Represents a section of properties for a given input.

The lifecycle of an IEEFSection is as follows:

- `IEEFSection.createControls()`
- `IEEFSection.setInput()`
- `IEEFSection.aboutToBeShown()`
- `IEEFSection.refresh()`
- `IEEFSection.aboutToBeHidden()`
- `IEEFSection.dispose()`

Implementors of this class should be aware that a section instance might be reused for different input objects (as long as they are valid section inputs). It means that `IEEFSection.setInput` can be called at any time between `IEEFSection.createControls` and `IEEFSection.dispose`.

When an input change event occurs, such as a tab selection or a workbench selection change, an IEEFSection is sent:

- `IEEFSection.setInput()`
- `IEEFSection.refresh()`

When an part activation event occurs, such as the contributor part activation event, an IEEFSection is sent:

- `IEEFSection.setInput()`
- `IEEFSection.aboutToBeShown()`
- `IEEFSection.refresh()`
- `IEEFSection.setInput()`
- `IEEFSection.refresh()`

This is because both a tab selection event and an input selection event have occurred.

This interface should not be extended or implemented. New section instances should be created using `AbstractEEFPropertySection`.

Since:
  1.6.0
See Also:
  `ISection`

### Method Summary

All Methods Instance Methods Abstract Methods
`void` `aboutToBeHidden()` Notifies the section that its controls are about to be hidden.
`void` `aboutToBeShown()` Notifies the section that its controls are about to be shown.
`void` `createControls(org.eclipse.swt.widgets.Composite parent, EEFTabbedPropertySheetPage tabbedPropertySheetPage)` Creates the controls for the section.
`void` `dispose()` Dispose this section.
`int` `getMinimumHeight()` Returns the minimum height needed by this section.
`void` `refresh()` Refresh the contents of the controls displayed in this section.
`void` `setInput(org.eclipse.ui.IWorkbenchPart part, org.eclipse.jface.viewers.ISelection selection)` Notifies the section that the workbench selection has changed.
`boolean` `shouldUseExtraSpace()` Determine whether this section would like extra height space in case there is some left.

### Method Detail

#### createControls

    void createControls(org.eclipse.swt.widgets.Composite parent,
                        EEFTabbedPropertySheetPage tabbedPropertySheetPage)

Creates the controls for the section.

Clients should take advantage of the widget factory provided by the framework to achieve a common look between property sections.

Parameters:
  `parent` - the parent composite for the section.
  `tabbedPropertySheetPage` - the tabbed property sheet page.
See Also:
  `EEFTabbedPropertySheetPage.getWidgetFactory()`

#### setInput

    void setInput(org.eclipse.ui.IWorkbenchPart part,
                  org.eclipse.jface.viewers.ISelection selection)

Notifies the section that the workbench selection has changed.

Parameters:
  `part` - The active workbench part.
  `selection` - The active selection in the workbench part.

#### aboutToBeShown

    void aboutToBeShown()

Notifies the section that its controls are about to be shown. It is expected that sections enable domain related functions in this method, most commonly add listeners.

Since the controls are not visible, the section should wait for the refresh() before updating the section controls.

#### aboutToBeHidden

    void aboutToBeHidden()

Notifies the section that its controls are about to be hidden. It is expected that sections disable domain related functions in this method, most commonly remove listeners.

#### dispose

    void dispose()

Dispose this section.

#### getMinimumHeight

    int getMinimumHeight()

Returns the minimum height needed by this section. A return value of `SWT.DEFAULT` indicates that no minimum height is defined.

Returns:
  the minimum height needed by this section.

#### shouldUseExtraSpace

    boolean shouldUseExtraSpace()

Determine whether this section would like extra height space in case there is some left. Normally this is true when the section is the last to be displayed on a tab or is the only section on a tab.

Returns:
  `true` if this section would like extra height space.

#### refresh

    void refresh()

Refresh the contents of the controls displayed in this section.