## Platform and Equinox API

Here are descriptions of some of the changes of interest to plug-in developers made to the Eclipse Platform and SWT for the 4.31 release of Eclipse.

- Platform Changes

New features oriented towards end-users of the platform can be viewed in the What's New section of the Eclipse Platform User Guide.

## Platform Changes

Viewer Limit in JFace

The API method `org.eclipse.jface.viewers.ColumnViewer.setDisplayIncrementally(int incrementSize)` was added to JFace. If `incrementSize` is set to some positive value, the viewer will initially show no more than this number of child elements per parent element. Additionally, the viewer provides a mechanism for a user to show more elements, if available, as needed. This API solves the problem with UI hangs in case a viewer tries to display a very large number of child elements per parent element.

This feature is currently implemented in `org.eclipse.jface.viewers.TableViewer` and `org.eclipse.jface.viewers.TreeViewer` but is not enabled by default; `incrementSize` is `0` by default. Each concrete viewer implementation is responsible to enable this feature if needed.

Note that even though this feature is designed to be backwards compatible API, there remains the possibility of regressions when converting existing viewer to use the new API. Please fully test your code when enabling this functionality!

Viewer Limit in Workbench | Complementary to the JFace API above, `org.eclipse.ui.IWorkbenchPreferenceConstants` and `org.eclipse.ui.views.WorkbenchViewerSetup` API's were added. This API provides default workbench preference access and a convenient way for viewers to use default workbench values without writing extra code to listen for preference changes.

Deprecation of Equinox Bundles

The following Equinox bundles are deprecated for removal:

- `org.eclipse.osgi.services`
  Its content has been replaced by the official OSGi bundles published to Maven-Central and it only re-exports these `org.osgi.service.*` bundles. Consumers are already encouraged to replace their requirements on the bundle `org.eclipse.osgi.services` with imports of the actual required `org.osgi.service.*` packages. This allows the OSGi runtime to choose any suitable, available provider of the package.
- `org.eclipse.equinox.device`
  This implementation of the `org.osgi.service.device` service is not known to have any users and did not receive updates in the past. It is deprecated for removal from future releases without replacement. In case there are users after all, they can continue to use past releases, use an alternative implementation, or get in contact with the Equinox team.