Package org.eclipse.ui

# Interface IWorkbenchPart3

All Superinterfaces:
  `IAdaptable`, `IWorkbenchPart`, `IWorkbenchPart2`

All Known Implementing Classes:
  `AbstractDebugView`, `AbstractDecoratedTextEditor`, `AbstractMultiEditor`, `AbstractTextEditor`, `CommonNavigator`, `CommonSourceNotFoundEditor`, `ContentOutline`, `EditorPart`, `org.eclipse.ui.internal.views.markers.ExtendedMarkersView`, `FormEditor`, `FormPage`, `MarkerSupportView`, `MultiEditor`, `MultiPageEditorPart`, `PageBookView`, `ProjectExplorer`, `PropertySheet`, `SharedHeaderFormEditor`, `StatusTextEditor`, `TemplatesView`, `TextEditor`, `ViewPart`, `WorkbenchPart`

public interface IWorkbenchPart3 extends IWorkbenchPart2
A part can provide arbitrary properties. The properties will be persisted between sessions by the part reference, and will be available from the part reference as well as the part. The properties can only be set on a part, not on the reference. The properties will be available to the IPresentablePart.

Setting a property must fire a PropertyChangeEvent.

Since:
  3.3

## Field Summary

### Fields inherited from interface org.eclipse.ui.IWorkbenchPart

`PROP_TITLE`

## Method Summary

Modifier and Type
Method
Description
`void`
`addPartPropertyListener(IPropertyChangeListener listener)`
Add a listener for changes in the arbitrary properties set.
`Map<String,String>`
`getPartProperties()`
Return an unmodifiable map of the arbitrary properties.
`String`
`getPartProperty(String key)`
Return the value for the arbitrary property key, or `null`.
`void`
`removePartPropertyListener(IPropertyChangeListener listener)`
Remove a change listener from the arbitrary properties set.
`void`
`setPartProperty(String key, String value)`
Set an arbitrary property on the part.

### Methods inherited from interface org.eclipse.core.runtime.IAdaptable

`getAdapter`

### Methods inherited from interface org.eclipse.ui.IWorkbenchPart

`addPropertyListener, createPartControl, dispose, getSite, getTitle, getTitleImage, getTitleToolTip, removePropertyListener, setFocus`

### Methods inherited from interface org.eclipse.ui.IWorkbenchPart2

`getContentDescription, getPartName`

## Method Details

### addPartPropertyListener

void addPartPropertyListener(IPropertyChangeListener listener)
Add a listener for changes in the arbitrary properties set.

Note: this is a different set of properties than the ones covered by the IWorkbenchPartConstants.PROP_* constants.

Parameters:
  `listener` - Must not be `null`.

### removePartPropertyListener

void removePartPropertyListener(IPropertyChangeListener listener)
Remove a change listener from the arbitrary properties set.

Note: this is a different set of properties than the ones covered by the IWorkbenchPartConstants.PROP_* constants.

Parameters:
  `listener` - Must not be `null`.

### getPartProperty

String getPartProperty(String key)
Return the value for the arbitrary property key, or `null`.

Parameters:
  `key` - the arbitrary property. Must not be `null`.
Returns:
  the property value, or `null`.

### setPartProperty

void setPartProperty(String key, String value)
Set an arbitrary property on the part. It is the implementor's responsibility to fire the corresponding PropertyChangeEvent.

A default implementation has been added to WorkbenchPart.

Parameters:
  `key` - the arbitrary property. Must not be `null`.
  `value` - the property value. A `null` value will remove that property.

### getPartProperties

Map<String,String> getPartProperties()
Return an unmodifiable map of the arbitrary properties. This method can be used to save the properties during workbench save/restore.

Returns:
  A Map of the properties. Must not be `null`.