#
Intro Part Configuration

###### Identifier:

org.eclipse.ui.intro.config

###### Since:

3.0

###### Description:

This extension point is used to register an intro configuration. This configuration provides presentation implementations and content for a given intro contribution. An intro appears when the workbench is first launched and as a choice from the "Help" menu. The intro is typically used to introduce a user to a product built on Eclipse.

The intros are organized into pages which usually reflect a particular category of introductory material. For instance, a What's New page may introduce new concepts or functionality since previous versions. The content defined by one intro configuration can be referenced and extended from other plug-ins using the org.eclipse.ui.intro.configExtension extension point.

###### Configuration Markup:

<!ELEMENT extension (handle? , config+)>

<!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 config (presentation)>

<!ATTLIST config

introId CDATA #REQUIRED

id CDATA #REQUIRED

content CDATA #REQUIRED>

A config element can be used to configure a customizable Intro Part. A config element must specify an id, an introId, and a content file. The intro content file is an XML file that describes the pages, groups and links that the intro has.

- introId - the id of an intro part contribution that this configuration will be associated with.
- id - a unique name that can be used to identify this intro configuration
- content - an intro content file. The content file is an XML file that contains the specifics of the intro (intro content file format specification). The content file is parsed at run time by the intro framework. Based on the settings in this file, a certain number of pages, groups, and links are shown to the user when the intro is opened.

<!ELEMENT presentation (implementation+ , launchBar?)>

<!ATTLIST presentation

home-page-id CDATA #REQUIRED

standby-page-id CDATA #IMPLIED>

Presentation element that defines all the possible implementations of an intro part's presentation. It can have one or more implementation defined in it. Only one implementation will be chosen at startup, based the os/ws attributes of the implementations. Otherwise, the first one with no os/ws attributes defined will be chosen.

- home-page-id - the id of the home (root) page, which is the first page of the introduction. This page can be used as an entry point to the other main pages that make up the intro.
- standby-page-id - an optional attribute to define the id of the standby page. The standby page will be shown to the user when the Intro is set to standby.

<!ELEMENT implementation (head?)>

<!ATTLIST implementation

kind (swt|html)

style CDATA #IMPLIED

os CDATA #IMPLIED

ws CDATA #IMPLIED>

The presentation of the Platform's out of the box experience has two implementations. One of them is SWT Browser based, while the other is UI Forms based. The customizable intro part can be configured to pick one of those two presentations based on the current OS and WS. The type of the implementation can be swt or html.

- kind - Specifies the type of this implementation. The swt kind indicates a UI Forms based implementation, and the html kind indicates an SWT Browser based implementation
- style - The shared style that will be applied to all pages presented by this intro presentation implementation.
- os - The optional operating system specification used when choosing the presentation's implementation. It can be any of the os designators defined by Eclipse, e.g., win32, linux, etc (see Javadoc for `org.eclipse.core.runtime.Platform`).
- ws - The optional windowing system specification used when choosing the presentation's implementation. It can be any of the ws designators defined by Eclipse (see Javadoc for `org.eclipse.core.runtime.Platform`).

<!ELEMENT launchBar (handle? , shortcut*)>

<!ATTLIST launchBar

location (left|bottom|right) "right"

bg CDATA #IMPLIED

fg CDATA #IMPLIED>

Launch bar works in conjuction with 'switchToLaunchBar' command. When executed, the command will close intro and create a launch bar in one of the trim areas of the main window. The launch bar will contain at least one button that would allow users to return to the last intro page. Optionally, it can contain additional buttons defined using `shortcut` elements. These buttons can be used to quickly go to a certain intro page. since 3.1

- location - the location of the launch bar relative to the content area in the main window.
- bg - background color that will be applied to the launch bar if specified. Expected format is hex, as in: #rrggbb (for example, #80a4a1).
- fg - foreground color that will be used to paint the border of the launch bar if specified. Expected format is hex, as in: #rrggbb (for example, #80a4a1).

<!ELEMENT shortcut EMPTY>

<!ATTLIST shortcut

tooltip CDATA #IMPLIED

icon CDATA #REQUIRED

url CDATA #REQUIRED>

a button will be created in the intro launch bar for each shortcut element. The URL defined in the shortcut will be executed when the button is pressed. since 3.1

- tooltip - a tooltip to be used for this shortcut
- icon - a relative path to the image icon that should be used for this shortcut in the intro launch bar.
- url - the URL to execute when the shortcut in the launch bar is activated

<!ELEMENT handle EMPTY>

<!ATTLIST handle

close (true | false) "true"

image CDATA #IMPLIED>

an optional element that controls how launch bar handle is rendered. since 3.1

- close - an optional flag that controls if the handle will have a close button (default is `true`).
- image - a plug-in-relative path of the branding image to be tiled on the handle.

<!ELEMENT introContent (page+ , group* , extensionContent*)>

The introContent element defines the body of the intro content file. The content file is made up of pages, shared groups that can be included in multiple pages, and extensions to anchor points defined in other configurations.

<!ELEMENT page (group* | link* | text* | head* | img* | include* | html* | title? | anchor* | contentProvider*)>

<!ATTLIST page

url CDATA #IMPLIED

id CDATA #REQUIRED

style CDATA #IMPLIED

alt-style CDATA #IMPLIED

filteredFrom (swt|html)

content CDATA #IMPLIED

style-id CDATA #IMPLIED>

This element is used to describe a page to be displayed. The intro can display both dynamic and static pages.
Content for dynamic pages is generated from the subelements of the page, described below. The style or alt-style will be applied depending on the presentation. The styles can be further enhanced by referencing the id or class-id.
Static pages allow for the reuse of existing HTML documents within one's introduction, and can be linked to from any static or dynamic page. Static pages are not defined in a page element, they are simply html files that can be linked to by other pages.
The home page, whose id is specified in the presentation element of the intro config extension point, can have a url indicating that it is a static page. If no url is specified then the home page is assumed to be dynamic. All other pages described using the page element are dynamic.
Also note that when the SWT presentation is used and a static page is to be displayed, an external brower is launched and the current page remains visible.
The subelements used in a dynamic page are as follows: A group subelement is used to group related content and apply style across the grouped content. A link subelement defines a link which can be used to link to a static or dynamic page and run an intro action/command. A link is normally defined at the page level to navigate between main pages versus links within a page. A text subelement defines textual content at the page level. A head subelement is only applicable for the Web based presentation and allows for additional html to be added to the HTML head section. This is useful for adding java scripts or extra style sheets. An img subelement defines image content for the page level. An include subelement allows for reuse of any element other than a page. An html subelement is only applicable for the Web based presentation and allows for the embedding or inclusion of html into the page's content. Embedding allows for a fully defined html file to be embeded within an HTML object by referencing the html file. Inclusion allows for including an html snippet directly from an html file. A title subelement defines the title of the page. An anchor subelement defines a point where external contributions can be made by an <extensionContent> element.

- url - The optional relative path to an HTML file. When using the Web based presentation, this HTML file will be displayed instead of any content defined for this page. This attribute is only applicable to the home page, which is identified in the presentation element of the intro config extension point. It is ignored for all other pages.
- id - A unique name that can be used to identify this page.
- style - A relative path to a CSS file which is applied to the page only when using the Web based presentation. The path is relative to the location of this xml content file.
- alt-style - A relative path to a SWT presentation properies file which is applied to the page only when using the SWT based presentation. The path is relative to the location of this xml content file.
- filteredFrom - an optional attribute that allows for filtering a given element out of a specific implementation. For example, if a group has filteredFrom = swt, it means that this group will not appear as content in the swt implementation.
- content - an optional attribute which can define the location of an introContent.xml file that represents the content of this page. When this attribute is defined, all children and attributes in this page element, except id, are ignored. This is because the content of this page is now assumed to reside in the xml file pointed to by the content file attribute. When resolving to the content of this file, the page with an id that matches the id defined in this page element is chosen. This seperation of pages can be used when performance is an issue, as the content of a page is now loaded more lazily. If the content of the external file is XHTML, then the page is rendered as is. TO DO (finish docs) since 3.1
- style-id - A means to classifiy the page into a given category so that a common style may be applied.

<!ELEMENT group (group* | link* | text* | img* | include* | html* | anchor* | contentProvider*)>

<!ATTLIST group

id CDATA #REQUIRED

label CDATA #IMPLIED

style-id CDATA #IMPLIED

filteredFrom (swt|html) >

Used to group related content, content that should have similar style applied, or content that will be included together in other pages.

- id - unique identifier of the group
- label - a label or heading for this group
- style-id - A means to classifiy this group into a given category so that a common style may be applied.
- filteredFrom - an optional attribute that allows for filtering a given element out of a specific implementation. For example, if a group has filteredFrom = swt, it means that this group will not appear as content in the swt implementation.

<!ELEMENT head EMPTY>

<!ATTLIST head

src CDATA #REQUIRED

encoding CDATA #IMPLIED>

Direct HTML to include in a page's HEAD content area. It allows for additional html to be added to the HTML HEAD section. This is useful for adding java srcipts or extra styles sheets. This markup is only to be used with an HTML based intro part implementation. It is simply ignored in the case of a UI Forms implementation. A page can have more than one head element. An implementation can have one and only one head element (since it is a shared across all pages).

- src - relative or absolute URL to a file containing HTML to include directly into the HTML head section.
- encoding - an optional attribute to specify the encoding of the inlined file containing the head snippet. Default is UTF-8. Since 3.0.1

<!ELEMENT title EMPTY>

<!ATTLIST title

id CDATA #IMPLIED

style-id CDATA #IMPLIED

filteredFrom (swt|html) >

a snippet of text that can optionally contain escaped HTML tags. It is only used as a Page Title, and so a given page can have a maximum of one title element.

- id - unique identifier of this title.
- style-id - A means to classifiy this element into a given category so that a common style may be applied
- filteredFrom - an optional attribute that allows for filtering a given element out of a specific implementation. For example, if a group has filteredFrom = swt, it means that this group will not appear as content in the swt implementation.

<!ELEMENT link (text? , img?)>

<!ATTLIST link

id CDATA #IMPLIED

label CDATA #IMPLIED

url CDATA #REQUIRED

style-id CDATA #IMPLIED

filteredFrom (swt|html) >

Can link to a static HTML file, an external web site, or can run an Intro URL action.

- id - A unique id that can be used to identify this link
- label - The text name of this link
- url - A valid URL to an external web site, a static html file, or an Intro URL that represents an Intro action. All intro URLs have the following form: http://org.eclipse.ui.intro/<action name>?param1=value1&param2=value2 and will be processed by the intro framework.
  The predefined actions will be described using this format:

  action name - descripton of action
  action parameter1 - description of parameter
  action parameter2 (optional) - description of parameter
  action parameter3 (optional) = ("true" | "false") "false" - description of parameter, choice of either true or false and "false" is the default

  The following predefined actions are included in the intro framework:

  close - closes the intro part
  no parameters required
  navigate - navigate through the intro pages in a given direction or return to the home page
  direction = ("backward" | "forward" | "home") - specifies the direction to navigate
  openBrowser - open the url in an external browser, using the workbench Browser support. since 3.1
  url - a valid URL to an external web site or a local HTML file
  pluginId (optional) - if the url is relative, then it is relative to a plugin. Specify here the id of the plug-in containing the file.
  openURL - open the url embedded in the current welcome page. The page pointed to by the url occupies the full size of the intro page. since 3.1
  url - a valid URL to an external web site or a local HTML file
  pluginId (optional) - if the url is relative, then it is relative to a plugin. Specify here the id of the plug-in containing the file.
  runAction - runs the specified action
  class - the fully qualified class name of the class that implements one of `org.eclipse.ui.intro.config.IIntroAction`, `org.eclipse.jface.actino.IAction`, or `org.eclipse.ui.IActionDelegate`
  pluginId - The id of the plug-in which contains the class.
  standby (optional) = ("true" | "false") "false" - indicate whether to set the intro into standby mode after executing the action
  additional parameters - any additional parameters are passed to actions that implement `org.eclipse.ui.intro.config.IIntroAction`
  setStandbyMode - sets the state of the intro part
  standby = ("true" | "false") - true to put the intro part in its partially visible standy mode, and false to make it fully visible
  showHelp - Open the help system.
  no parameters required
  showHelpTopic - Open a help topic.
  id - the URL of the help resource. (See Javadoc for `org.eclipse.ui.help.WorkbenchHelp.displayHelpResource`
  embed - if true, indicates that the Help topic needs to be displayed embedded in the current page. This is equivalent to openURL() command, but for Help System topics. The embedded URL occupies the full real-estate of the current page. since 3.1
  embedTarget - if specified, then embed is true by default and the embedded URL is inserted inside the div with the specified path. The path is relative to the page and so it should not start with the page id. The children of the div are replaced by the content of the URL. Only one div per page can be used as an embed target. since 3.1
  showMessage - Displays a message to the user using a standard information dialog.
  message - the message to show the user
  showStandby - Sets the intro part to standby mode and shows the standbyContentPart with the given input
  partId - the id of the standbyContentPart to show
  input - the input to set on the standbyContentPart
  showPage - show the intro page with the given id
  id - the id of the intro page to show
  standby (optional) = ("true" | "false") "false" - indicate whether to set the intro into standby mode after showing the page

- style-id - A means to classifiy this link into a given category so that a common style may be applied.
- filteredFrom - an optional attribute that allows for filtering a given element out of a specific implementation. For example, if a group has filteredFrom = swt, it means that this group will not appear as content in the swt implementation.

<!ELEMENT text EMPTY>

<!ATTLIST text

id CDATA #IMPLIED

style-id CDATA #IMPLIED

filteredFrom (swt|html) >

a snippet of text that can optionally contain escaped HTML tags. It can include b and li tags. It can also contain anchors for urls. If multiple paragraphs are needed, then the text can be divided into multiple sections each begining and ending with the p tag.

- id - unique identifier of this text.
- style-id - A means to classifiy this element into a given category so that a common style may be applied
- filteredFrom - an optional attribute that allows for filtering a given element out of a specific implementation. For example, if a group has filteredFrom = swt, it means that this group will not appear as content in the swt implementation.

<!ELEMENT img EMPTY>

<!ATTLIST img

id CDATA #REQUIRED

src CDATA #REQUIRED

alt CDATA #IMPLIED

style-id CDATA #IMPLIED

filteredFrom (swt|html) >

An image that represents intro content and not presentation (as opposed to decoration images defined in styles).

- id - unique identifier of this image
- src - the file to load the image from
- alt - the alternative text to use when the image can not be loaded and as tooltip text for the image.
- style-id - A means to classifiy this image into a given category so that a common style may be applied.
- filteredFrom - an optional attribute that allows for filtering a given element out of a specific implementation. For example, if a group has filteredFrom = swt, it means that this group will not appear as content in the swt implementation.

<!ELEMENT html (img | text)>

<!ATTLIST html

id CDATA #REQUIRED

src CDATA #REQUIRED

type (inline|embed)

style-id CDATA #IMPLIED

filteredFrom (swt|html)

encoding CDATA #IMPLIED>

direct HTML to include in the page either by embedding the entire document, or inlining a snippet of HTML in-place. A fallback image or text must be defined for alternative swt presentation rendering.
Embedding allows for a fully defined html file to be embedded within the dynamic page's content. An HTML object element is created that references the html file.
Inclusion allows for including an html snippet directly from a file into the dynamic html page.

- id - unique identifier of this HTML element
- src - relative or absolute URL to a file containing HTML
- type - if 'embed', a valid (full) HTML document will be embedded using HTML 'OBJECT' tag. If 'inline', value of 'src' will be treated as a snippet of HTML to emit 'in-place'. (if type is not specified, this html object is ignored by the intro configuration).
- style-id - A means to classifiy this HTML element into a given category so that a common style may be applied.
- filteredFrom - an optional attribute that allows for filtering a given element out of a specific implementation. For example, if a group has filteredFrom = swt, it means that this group will not appear as content in the swt implementation.
- encoding - an optional attribute to specify the encoding of the inlined file (in the case where type=inline is specified). If not specified, the default is UTF-8. Since 3.0.1

<!ELEMENT include EMPTY>

<!ATTLIST include

configId CDATA #IMPLIED

path CDATA #REQUIRED

merge-style (true | false) >

expands an element targeted by the given path and optional configId attributes. Path should uniquely address an element within the specified configuration. It could point to a shared group defined at the configuration level, or any element in a page.

- configId - identifier of a configuration where the included element is defined. If specified, it is assumed that the element to be included is specified in another configuration, and not the enclosing configuration. In this case, that external config is loaded and the element is resolved from that new config. If not specified, enclosing (parent) configuration of this include is assumed.
- path - the path that uniquely represents the target element within the configuration (e.g. page/group1/group2). It may be a group element, or any element that may be contained in a group. You can not include a page.
- merge-style - if `true`, style belonging to the page that owns the included element will be added to list of styles of the including page. If `false` (the default), the including page is responsible for controlling properties of the included element.

<!ELEMENT anchor EMPTY>

<!ATTLIST anchor

id CDATA #REQUIRED>

an anchor is the element used to declare extensibility. It is a location in the configurtaion that allows for external contributions. Only anchors are valid target values for the path attribute in an extensionContent

- id - unique id to identify this anchor.

<!ELEMENT extensionContent (text | group | link | html | include)>

<!ATTLIST extensionContent

style CDATA #IMPLIED

alt-style CDATA #IMPLIED

path CDATA #REQUIRED

content CDATA #IMPLIED>

The content to be added to the target anchor. Only one extensionContent is allowed in a given configExtension because if this extension could not be resolved (if the config could not be found, or the target anchor element could not be found) then the pages and/or groups in the extension need to be ingnored.

- style - A relative path to a CSS file which is applied to the page only when using the Web based presentation.
- alt-style - A relative path to a SWT presentation properies file which is applied to the page only when using the SWT based presentation.
- path - the path that uniquely represents the path to an anchor. (e.g. page/group1/group2/anchorId) within the target configuration to be extended. It can only be an anchor which can be in any page or group, including shared groups at configuration level.
- content - if content is defined, it is assumed that the extension content is defined in an external XHTML file. In that case the resource pointed to by this content attribute is loaded and the path attribute is now resolved in this external file. since 3.1

<!ELEMENT contentProvider (text?)>

<!ATTLIST contentProvider

id CDATA #REQUIRED

pluginId CDATA #IMPLIED

class CDATA #REQUIRED>

A proxy for an intro content provider, which allows an intro page to dynamically pull data from various sources (e.g., the web, eclipse, etc) and provide content at runtime based on this dynamic data. If the IIntroContentProvider class that is specified in the class attribute can not be loaded, then the contents of the text element will be rendered instead. This is a dynamic version of the html intro tag. While the html tag allows for embedding or inlining a static html content into the generated html intro page, the contentProvider tag allows for dynamic creation of that content at runtime. Another difference between the tags is that the html tag is only supported for the HTML presentation, while this contentProvider tag is supported for both the HTML and SWT presentations. Since 3.0.1

- id - unique identifier of this content provider element. It is a required attribute because having a unique id is what prevents the intro framework from reinstantiating this content provider class and recreating its content.
- pluginId - The id of the plugin that contains the IContentProvider class specified by the class attribute. This is an optional attribute that should be used if the class doesn't come from the same plugin that defined the markup.
- class - A class that implements the IContentProvider interface

###### Examples:

Here is a sample usage of the config extension point.

    <extension id="intro" point="org.eclipse.ui.intro.config">
       <config
          introId="com.org.xyz.intro"
          id="com.org.xyz.introConfig"
          content="introContent.xml">
          <presentation
             home-page-id="root"
             title="%intro.title">
             <implementation
                ws="win32"
                style="css/shared.css"
                kind="html"
                os="win32">
             </implementation>
             <implementation
                style="css/shared_swt.properties"
                kind="swt">
             </implementation>
          </presentation>
       </config>
    </extension>

###### API Information:

For further details see the spec for the org.eclipse.ui.intro.config API package.

###### Supplied Implementation:

The intro contributed by the org.eclipse.platform plugin is the only implementation within Eclipse.

Copyright (c) 2004 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