Contributing to universal intro

In order to hook into to the universal intro, developers should have a product-based eclipse application. This requires the use of the org.eclipse.runtime.products extension point (the assumption is that the product has already been defined):

   <extension
         id="foo"
         point="org.eclipse.core.runtime.products">
      <product
            application="org.eclipse.ui.ide.workbench"
            description="Product Foo to use for testing the universal intro"
            name="Product Foo">
      </product>
   </extension>

For this example, assume that the extension is defined in the plugin.xml file in the com.example.intro plug-in. A long-standing feature of the eclipse intro support is the ability to hook products and intros using the product-intro binding:

   <extension
         point="org.eclipse.ui.intro">
      <introProductBinding
            introId="org.eclipse.ui.intro.universal"
            productId="com.example.intro.foo"/>
   </extension>

The extension above binds the universal intro implementation (org.eclipse.ui.intro.universal) and our product id.

Universal intro customization is split between product branding properties and preferences. Product branding properties are set by the product and cannot be modified. They include product title, branding image and branding image text:

   <product
         application="org.eclipse.ui.ide.workbench"
         description="Product Foo to use for testing the universal intro"
         name="Product Foo">
      <property
            name="introTitle"
            value="Welcome to Product Bar"/>
      <property
            name="introBrandingImage"
            value="product:eclipse.png"/>
      <property
            name="introBrandingImageText"
            value="XYZ Company"/>
   </product>

Product properties whose values represent a file name relative to the product bundle must be qualified with the 'product:' prefix. The following properties are supported:

The universal intro supports replacing file-based properties such as introBrandingImage with a theme-specific alternative. For example, a product may contribute a introBrandingImage as "product:gizmo.png", but this image does not match the the com.acme.theme theme. A more suitable image can be placed in the product bundle in com.acme.theme/gizmo.png. When a replacement image is not found, the resolver will fall back to the general image gizmo.png image found at the root of the product bundle.

Second half of universal intro variables are accessible as preferences. The split is due to the fact that these variables can be configured by users and are exposed in the new Welcome preference page. The initial values for these preferences should be placed in the 'plugin_customization.ini' file that is referenced from the product extension. These preferences are: