# Plug-in Content

The Plug-in Content wizard page allows you to customize the plug-in data.

## Plug-in Properties

A Plug-in ID is mandatory and must comply with the plugin.dtd. It is recommended - but not mandatory - for the plug-in ID to match the plug-in project name.

A Plug-in Version is mandatory and must be of the form major.minor.micro.qualifier (e.g. 1.3.0).

A Plug-in Name is the translatable presentation name of the plug-in. This field is required.

A Plug-in Provider is the translatable name of the plug-in provider. This field is optional.

Execution Environment refers to the required execution environment (symbolic representation of a JRE) of your plug-in. This field is optional but recommended to be set.

## Plug-in Options

An activator is a Java class that controls the plug-in's life cycle. It is only needed if you require to do work upon the startup or shutdown of your plug-in.

The choice of whether the plug-in will make contributions to the UI affects the code generated for the activator:

- If the plug-in is a UI plug-in, the activator class extends the org.eclipse.ui.plugin.AbstractUIPlugin class.
- If the plug-in is headless (i.e. non-UI), the activator extends the org.eclipse.core.runtime.Plugin class.
- If the plug-in is targeted for an OSGi framework, the activator implements the org.osgi.framework.BundleActivator interface.

The choice of a UI vs. headless plug-in also controls what templates are available on the next wizard page.

Adding API Analysis to the project will enable static analysis of API usage from the new project.

## Rich Client Application

At a minimum, a rich client application requires a plug-in with an org.eclipse.core.runtime.applications extension. If branding is desired, an org.eclipse.core.runtime.products extension is required. By answering Yes to the question in the Rich Client Application section, you will be required to go to the Templates page where you can choose an RCP template that will generate all the required extensions.