概要サポート

概要サポートは、拡張ポイントおよびワークベンチ・パーツの集合で、これによってプラグインは、 プラットフォーム製品を新規ユーザーに紹介することに特化したページを定義できます。 通常、概要情報は製品を最初に起動したときに表示されます。 個々のプラグインは、既知の製品概要構成に概要情報をコントリビュートすることができますが、概要サポートは、 通常は製品レベルで構成されています。

ワークベンチの観点からすると、概要サポートのルートは、概要部分にあります。 この部分は、拡張定義で指定されています。 ワークベンチの初期化時に、ワークベンチは概要ページ用にスペースを予約する概要サイトを作成します。 そのサイトに対する概要部分の実装は、製品構成情報を使用して決定されます。 概要部分が一度表示されると、以下の 2 つのモード間で切り替わります。

概要部分を設定した場合は、概要情報と共に構成する必要があります。 これは、概要構成を使用して行います。概要構成は拡張機能を使用してコントリビュートすることもできます。 個々のプラグインは、固有の拡張機能を使用して基本製品概要構成に追加できます。

これらの概念をより理解するために、プラットフォーム SDK 概要ページを例として取り上げます。

概要部分の定義

IIntroPart インターフェースおよびorg.eclipse.ui.intro 拡張ポイントは、 指定した製品にユーザー固有の概要サポートを作成するために使用できる汎用的なメカニズムを構成しています。 この拡張機能の主な目的は、IIntroPart を実装するクラスを定義し、製品 ID と概要部分の結合を指定することです。 例えば、次のコントリビューションは、始動時にワークベンチによって表示される仮想概要部分を定義するものです。


<extension
	point="org.eclipse.ui.intro">
	<intro
		class="com.example.SampleIntroPart"
		id="someId">
		icon="someIcon.gif"
	</intro>
	<introProductBinding
		introId="someId"
		productId="com.example.someProductId">
	</introProductBinding>
</extension>
このコントリビューションは、最初に概要部分を定義して、その定義に ID 「someId」を割り当てます。 次にこの概要部分を ID が「com.example.someProductId」の製品に結合します。 プラットフォームの始動時に、クラス属性に指定されているクラスがワークベンチによってインスタンス化され、 製品の紹介としてユーザーに表示されます。 これは、IIntroPart インターフェースへの最低レベルの統合です。

プラットフォームは、 CustomizableIntroPart という名前の固有の IIntroPart 実装を提供します。 これによって概要のコンテンツおよび表示のカスタマイズが可能になります。 次の断片は、ワークベンチの概要部分を定義しています。 ここでは概要部分を実装するメカニズムについては説明しません。これは、概要のコンテンツの定義に焦点を当てているためです。 (詳細を知る必要がある場合には、拡張ポイントの資料および上記 javadoc を参照してください。)


<extension
	point="org.eclipse.ui.intro">
	<intro
		class="org.eclipse.ui.intro.config.CustomizableIntroPart"
		id="org.eclipse.platform.intro">
	</intro>
	<introProductBinding
		introId="org.eclipse.platform.intro"
		productId="org.eclipse.platform">
	</introProductBinding>
</extension>
上記のコントリビューションは、Eclipse SDK プラットフォームで使用される概要部分としてCustomizableIntroPart を定義します。 この説明の残りの部分では、この部分の使用方法および拡張方法について示します。

CustomizableIntroPart の使用

プラットフォームの CustomizableIntroPart で拡張ポイント org.eclipse.ui.intro.config を使用することによって、概要のコンテンツおよび表示をカスタマイズできます。 (この概要構成は、 org.eclipse.ui.intro.configExtension 拡張ポイントを使用して拡張できます。) この構造によって、製品のプラグイン開発者は、最初から概要部分スキームを実装することに集中するのではなく、 概要コンテンツの開発に集中できます。 異なる概要クラスが指定されている場合には、これらの 2 つの拡張ポイントは使用されず、 指定したクラスは、概要コンテンツ・フォーマットおよび構成に対して固有のスキームを実装する必要があります。

概要構成の定義

org.eclipse.ui.intro.config では、コンテンツを表示するためのコンテンツ構成の ID、および概要コンテンツに対する固有の定義を含む XML ファイル名を記述します。 指定されている CustomizableIntroPart では、 概要構成が 1 つだけ定義されていることが前提になっています。 (最初に検出された概要構成のみが、CustomizableIntroPartで表示可能です。)


<extension
	id="intro"
	point="org.eclipse.ui.intro.config">
	<config
		introId="org.eclipse.platform.intro"
		id="org.eclipse.platform.introConfig"
		content="$nl$/introContent.xml">
	<presentation
		home-page-id="root" standby-page-id="standby">
			<implementation
 				ws="win32"
				style="css/shared.css"
				kind="html"
				os="win32">
			</implementation>
			<implementation
				kind="swt">
			</implementation>
	</presentation>
	</config>
</extension>
ファイルのパスは、プラグイン・ディレクトリーへの相対パスです。 (ディレクトリー名で使用されている $nl$ 変数は、このファイルが、 ターゲット環境の各国語に対応するディレクトリーに配置されていることを意味していることに注意してください。)

構成拡張機能によって、コンテンツと、そのコンテンツの表示の両方を指定できます。 content エレメントがページの定義にフォーカスしているのに対して、presentation エレメントは、ページの表示方法を記述する表示関連の属性を記述します。 概要ホーム・ページのページ ID (フル・モード) の指定は必須で、待機ページ ID (待機モード) はオプションです。 ホーム・ページは、製品の最初の起動時に表示されるページです。 プレゼンテーションは、ページを表示するための 1 つ以上の実装を指定できます。 実装は、プラットフォームおよびウィンドウ操作システムごとに指定されます。 これによって、ページ・コンテンツを表示するためのプラットフォーム特化特性を利用できます。 例えば、Windows プラットフォームには、堅固な HTML ブラウザー・ウィジェットがあります。 このため HTML ベースの実装が概要コンテンツで使用されます。 この機能を持たない他のプラットフォームは、ページ記述を SWT ベースのフォームにマップする SWT ベースの実装を使用します。 ウィンドウ操作システムまたはオペレーティング・システムのいずれかを指定しない実装は、汎用実装として扱われます。 すべてのプラットフォームで概要を表示するには、汎用実装を定義することが重要です。 ワークベンチは、現行のオペレーティング・システムおよびウィンドウ操作システムに一致する実装を最初に検索します。 一致する実装が検出されなかった場合には、汎用実装が選択されます。 これら詳細のほとんどは、製品構成レベルで処理されます。このためここではこれ以上の説明は控えます。

概要コンテンツの定義

ここでは、コンテンツ自体について説明します。 コンテンツは、ページの用語で記述されます。 すべてのページには、id 属性があります。 この ID は、ホーム・ページと待機ページ、およびページへの参照があるその他の場所を定義する際に使用される ID です。 その他の関連する属性は、定義されているページの種類によって異なります。 ページには、以下の 2 つの基本型があります。

コンテンツ定義フォーマットを理解する最良の方法は、SDK の実装をブラウズすることです。 次の断片は、SDK ルート・ページのコンテンツの最初の部分だけを示しています。 これは表示される最初の概要ページです。


<introContent>
  <page alt-style="css/root_swt.properties" style="css/root.css" id="root" style-id="page">
    <title style-id="intro-header">Welcome to Eclipse Platform 3.0</title>
    <group id="links-background">
      <group id="page-links">
        <link label="Overview" url="http://org.eclipse.ui.intro/showPage?id=overview" id="overview" style-id="left">
          <text>Find out what Eclipse is all about</text>
        </link>
        <link label="Tutorials" url="http://org.eclipse.ui.intro/showPage?id=tutorials" id="tutorials" style-id="left">
          <text>Let us guide you through Eclipse end-to-end tutorials</text>
        </link>
        <link label="Samples" url="http://org.eclipse.ui.intro/showPage?id=samples" id="samples" style-id="right">
          <text>Explore Eclipse development through code samples</text>
        </link>
        <link label="Whats New" url="http://org.eclipse.ui.intro/showPage?id=news" id="news" style-id="right">
          <text>Find out what is new in this release</text>
        </link>
      </group>
    </group>

ページ上のエレメントは、特定の実装から filteredFrom することもできます。 このエレメントによって、ページの設計者は、特定のプラットフォームを念頭にいれて設計できます。 ページおよびそのコンテンツを記述する場合に使用可能なより強力な属性が多数あります。 org.eclipse.ui.intro.config については拡張ポイントの資料を参照し、 有効なエレメント、サブエレメント、およびその属性の詳細情報については、関連付けられた 概要コンテンツ・ファイルのフォーマット仕様を参照してください。

概要構成の拡張

概要構成は、以下の 3 つの方法で拡張できます。

概要構成のコンテンツの拡張

プラグインは、概要コンテンツを他の場所で定義されたページに組み込むことができます。 ただし、ページの定義では、新規コンテンツに対するロケーション・プレースホルダーとして機能する anchor 属性を定義する必要があります。 SDK 概説ページは、概要ページ上に JDT および PDE 関連エレメントを追加するための 2 つのアンカーを定義します。

    
<group id="page-content">
	<text style-id="page-title" id="page-title">OVERVIEW</text>
	<text style-id="page-description" id="page-description">Eclipse is a kind of universal tool platform - an open extensible IDE for anything and nothing in particular. It provides a feature-rich development environment that allows the developer to efficiently create tools that integrate seamlessly into the Eclipse Platform.</text>
	<group id="overview-links">
		<link label="Workbench basics" url="http://org.eclipse.ui.intro/showHelpTopic?id=/org.eclipse.platform.doc.user/concepts/concepts-2.htm" id="basics">
			<text>Learn about basic Eclipse workbench concepts</text>
        </link>
        <link label="Team support" url="http://org.eclipse.ui.intro/showHelpTopic?id=/org.eclipse.platform.doc.user/concepts/concepts-26.htm" id="team">
			<text>Find out how to collaborate with other developers</text>
        </link>
		<anchor id="jdtAnchor"/>
		<anchor id="pdeAnchor"/>
	</group>
</group>
これらのアンカーは、ページにコンテンツを追加するプラグインから参照できます。 コンテンツは、org.eclipse.ui.intro.configExtension 拡張を使用して追加されます。 ページ・コンテンツの拡張だけでなく、この拡張ポイントによって、待機コンテンツ・パーツおよびカスタム・アクションをコントリビュートすることができます。

既存の概要構成を拡張するために、configExtension エレメントを使用できます。 このエレメントで、拡張される概要構成の configId、および新規コンテンツを記述する content ファイルを指定します。

 
<extension
	point="org.eclipse.ui.intro.configExtension">
	<configExtension
		configId="org.eclipse.platform.introConfig"
		content="$nl$/overviewExtensionContent.xml"/>
    ...
</extension>
コンテンツ・ファイルのフォーマットは、 拡張コンテンツが挿入されるアンカーへのパスを定義する extensionContent エレメントを含んでいる必要があることを除いて、 概要構成コンテンツのフォーマットと似ています。
 
<introContent>
	<extensionContent alt-style="css/swt.properties" style="css/overview.css" path="overview/page-content/overview-links/jdtAnchor">
		<link label="Java development" url="http://org.eclipse.ui.intro/showHelpTopic?id=/org.eclipse.jdt.doc.user/gettingStarted/qs-BasicTutorial.htm" id="java">
			<text>Get familiar with developing Java programs using Eclipse</text>
		</link>
	</extensionContent>
</introContent>
カスタム・コンテンツを概要の事前定義アンカー・ポイントにコントリビュートすると、既定の製品は、上記のorg.eclipse.ui.intro を使用して、 その製品自体をその概要に結合できます。 製品が稼働すると、拡張されていた概要が、追加のコンテンツとともに表示されます。 これによって、製品は、密接に関連する製品の概要を自身のキー・コンテンツと共に再使用しながら、 独自のブランドとその他製品固有の情報を持つことができます。

既定の概要は、関連する製品の概要の断片を選択して組み込むこともできます。 この場合には、製品は固有の概要および概要構成を定義でき、 コンテンツ・ファイルで include を使用して、他の概要構成に定義されている重要なエレメントを参照できます。 このメカニズムは、関連する製品が別の製品の上に構築されているような状況で有用で、 高水準な製品のキー概念にユーザーを導入する必要があります。

待機コンテンツ・パーツのコントリビュート

プラグインは、概要ページが待機モードの場合に代替のコンテンツを表示するためのパーツを実装することもできます。 例えば、プラットフォームは、関連する概要コンテンツに対して虎の巻を表示する待機パーツを定義します。 パーツは、専門化された URL を持つページ・リンクを使用して起動されます。 待機パーツは、http://org.eclipse.ui.intro/showStandby?partId=somePartId などの待機パーツを表示するための特殊なコマンドを含んでいる URL を使用して起動されます。 パーツは、org.eclipse.ui.intro.configExtension 拡張機能の standbyContentPart サブエレメントに定義されています。 パーツには、IDpluginId、および class が指定されている必要があります。 クラスは IStandbyContentPart を実装する必要があります。 次の断片は、プラットフォームが虎の巻を表示する待機パーツを定義する方法を示しています。

 
<extension point="org.eclipse.ui.intro.configExtension">
	<standbyContentPart
		id="org.eclipse.platform.cheatsheet"
		class="org.eclipse.platform.internal.CheatSheetStandbyContent"
		pluginId="org.eclipse.platform"/>
</extension>
この虎の巻は、link サブエレメントを使用して概要ページから起動できます。 このサブエレメントの URL は、http://org.eclipse.ui.intro/showStandby?partId=org.eclipse.platform.cheatsheet&input=org.eclipse.pde.helloworld です。 この IntroURL は、org.eclipse.platform.cheatsheet 待機コンテンツ・パーツを起動し、その入力を「org.eclipse.pde.helloworld」に設定します。 待機パーツを実装するための詳しいメカニズムについては、本書では取り扱いません。 詳しくは、『IStandbyContentPart』および関連するクラスを参照してください。

カスタム IntroURL アクションの定義

プラグインは、org.eclipse.ui.intro.configExtension 拡張ポイントを使用して、ページ内のリンク・エレメントに対する URL 値として、使用可能な独自のカスタム・アクションをコントリビュートすることができます。 例えば、次のリンクを考えてみます。

http://org.eclipse.ui.intro/runAction?pluginId=org.eclipse.pde.ui&class=org.eclipse.pde.ui.internal.samples.ShowSampleAction&id=org.eclipse.sdk.samples.swt.examples

この IntroURL は、ShowSampleAction という名前のアクション・クラスを実行します。 このアクション・クラスは、「org.eclipse.pde.ui」プラグインのパッケージ「org.eclipse.pde.ui.internal.samples」に存在します。 実行するサンプルの ID は「org.eclipse.sdk.samples.swt.examples」です。

この概要 URL のカスタム・バージョンを定義するために、以下のマークアップを使用できます。

 
<extension point="org.eclipse.ui.intro.configExtension">
	<action
		name="myCommand"
		replaces="runAction?pluginID=org.eclipse.pde.ui&class=org.eclipse.pde.ui.internal.samples.ShowSampleAction">
	</action>
</extension>
上記拡張機能を利用して、次の URL を使用して同じアクションを実行できます。

http://org.eclipse.ui.intro/myCommand?id=org.eclipse.sdk.samples.swt.examples

アクション「myCommand」は、replaces 属性の値によって置換され、すべての残りの URL パラメーターが最後に追加されます。 置換が実行されると、結果の URL は次のように拡張して戻されます。

http://org.eclipse.ui.intro/runAction?pluginId=org.eclipse.pde.ui&class=org.eclipse.pde.ui.internal.samples.ShowSampleAction&id=org.eclipse.sdk.samples.swt.examples

特記事項。