# Splash Handlers

###### Identifier:

org.eclipse.ui.splashHandlers

###### Since:

Since 3.3

###### Description:

This extension point allows for the contribution of splash handlers. These splash handlers may contribute custom behavior to the splash screen that appears during the start-up procedure that may include (but is not limited to) custom graphics and animation, custom progress reporting, and interactive behaviors.

It is possible to have only one splash handler active at a given time and the decision of which handler to choose from comes down to a product binding. As such, when defining a splash handler you must create two elements in your extension: the definition of the splash handler (represented by a `splashHandler` element) and a product binding (represented by a `splashHandlerProductBinding` element).

The splash life cycle is as follows:

- Eclipse process is launched
- Eclipse launches a native executable that creates the initial splash window (including bitmap)
- OSGi starts
- Workbench starts
- Workbench finds the splash handler suitable for this product and creates it
- init(Shell) is called on the handler
- Workbench initializes and spins the event loop at regular intervals
- Workbench advertises the completion of startup and the dispose() method is invoked on the handler

###### Configuration Markup:

<!ELEMENT extension (splashHandler* , splashHandlerProductBinding*)>

<!ATTLIST extension

point CDATA #REQUIRED

id CDATA #IMPLIED

name CDATA #IMPLIED>

<!ELEMENT splashHandler EMPTY>

<!ATTLIST splashHandler

id CDATA #REQUIRED

class CDATA #REQUIRED>

- id - a unique name that will be used to identify this splash handler.
- class - a class that extends `org.eclipse.ui.splash.AbstractSplashHandler` or `org.eclipse.ui.splash.BasicSplashHandler`.

<!ELEMENT splashHandlerProductBinding EMPTY>

<!ATTLIST splashHandlerProductBinding

splashId CDATA #REQUIRED

productId CDATA #REQUIRED>

- splashId - unique id of a splash handler
- productId - unique id of a product

###### Examples:

The following is an example of this extension point:

       <extension
             point="org.eclipse.ui.splashHandlers">
          <splashHandler
                class="com.xyz.splash.Handler"
                id="com.xyz.splash">
          </splashHandler>
          <splashHandlerProductBinding
                productId="com.xyz.product"
                splashId="com.xyz.splash">
          </splashHandlerProductBinding>
       </extension>

###### API Information:

The value of the `class` attribute must be a fully qualified name of the class that extends `org.eclipse.ui.splash.AbstractSplashHandler`. It is common practice to subclass `org.eclipse.ui.splash.BasicSplashHandler` if the standard progress reporting is desired.

###### Supplied Implementation:

In the absence of a product-bound handler described by an extension of this type the default Eclipse splash is used. This splash is driven by product constants defined in `org.eclipse.ui.branding.IProductConstants` and will display a progress bar and message area at specified locations in specified colors.

Copyright (c) 2007 IBM Corporation and others.
All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html