# RWT Themes

###### Identifier:

org.eclipse.rap.ui.themes

###### Since:

RAP 1.0

###### Description:

This extension point is used to register custom RWT themes. An RWT theme is used to customize the look and feel of applications built with the Remote Application Platform. To create a custom theme, a CSS file must be provided. With this file the styling of one ore more widgets can be customized. A list of themeable widgets and properties can be found in the "RAP Theming Reference". It is also possible to register contributions to existing RWT themes. A theme contribution contains CSS rules that are appended to an existing theme. If more than one contributions are registered for the same theme, the order in which these contributions are appended is undefined. The user of this extension point must ensure that the rules specified in a theme contribution can not interfere with the rules in other theme contributions. Ideally, theme contributions contain only rules for custom variants.

###### Configuration Markup:

<!ELEMENT extension ((theme | themeContribution)+)>

<!ATTLIST extension

point CDATA #REQUIRED

id CDATA #IMPLIED

name CDATA #IMPLIED>

- point - a fully qualified identifier of the target extension point
- id - an optional identifier of the extension instance
- name - an optional name of the extension instance

<!ELEMENT theme EMPTY>

<!ATTLIST theme

id CDATA #REQUIRED

name CDATA #IMPLIED

file CDATA #IMPLIED>

An RWT theme.

- id - a unique name that will be used to identify this theme
- name - an optional name for the theme (currently not used)
- file - a relative path of a `.css` file that contains the theme definitions

<!ELEMENT themeContribution EMPTY>

<!ATTLIST themeContribution

themeId IDREF #REQUIRED

file CDATA #REQUIRED>

A contribution to an existing theme. The contributed CSS rules are appended to the CSS rules of the extended theme.

- themeId - the id of the theme this extension contributes to. Use org.eclipse.rap.rwt.theme.Default to contribute to the default theme.
- file - a relative path of a `.css` file that contains the additional rules to append to the theme

###### Examples:

The following is an example of a theme extension with a new theme:

    <extension point="org.eclipse.rap.ui.themes">
      <theme
          id="my.application.aquablue"
          name="Aqua Blue Theme"
          file="aqua-blue.css" />
    </extension>

The following is an example of a theme extension that defines a contribution to an existing theme:

    <extension point="org.eclipse.rap.ui.themes">
      <themeContribution
          themeId="my.application.aquablue"
          file="aqua-blue-additions.css" />
    </extension>

###### Supplied Implementation:

The RAP demo plugin `org.eclipse.rap.design.example` contains an example of a theme extension.

Copyright (c) 2007, 2015 EclipseSource 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