Top > Extensions > TaskPain
* タスクペイン [#tdaeba1a]
タスクペイン、作業ペイン、toolpanel などと呼ばれている、Impress の作業ペインと同様のものが 3.3 から拡張機能として作成、配布できます。Apache OpenOffice 4.0 で削除されました。サイドバーへの組み込みを考えてください。

- http://wiki.services.openoffice.org/wiki/Framework/Article/Tool_Panels

例えば、以下のような拡張機能になります。
- http://hermione.s41.xrea.com/pukiwiki/index.php?OOobbs2%2F195

#contents
** 概要 [#ib66f3e8]
ツールパネルが拡張機能から登録されると、表示 - 作業ペインの項目がメニューに追加されます。この項目を選択するとデフォルトではウィンドウの右側の部分に埋め込まれた形の作業ペインが表示されます。作業ペインはフローティング、またはドッキング状態にできます。ドッキング状態ではボーダーにあるボタンで折りたたんでおくこともできます。

拡張機能からこの作業ペインにツールパネルを追加するには、二つのコンフィグレーションと一つの UNO コンポーネントの実装が必要です。

** WindowState [#f1e46645]
まず、ツールパネルを追加したいコンポーネントの WindowState コンフィグレーションに項目を追加します。各種コンポーネントのコンフィグレーションは /org.openoffice.Office.UI 以下にあります。

ここでは、Calc で利用できるツールパネルを追加します。/org.openoffice.Office.UI.CalcWindowState になります。Writer では WriterWindowState になります。
#code(xcu){{
<?xml version='1.0' encoding='UTF-8'?>
<oor:component-data 
	xmlns:install="http://openoffice.org/2004/installation" 
	xmlns:oor="http://openoffice.org/2001/registry" 
	xmlns:xs="http://www.w3.org/2001/XMLSchema" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	oor:name="CalcWindowState" 
	oor:package="org.openoffice.Office.UI">
	<node oor:name="UIElements">
		<node oor:name="States">
			<node oor:name="private:resource/toolpanel/mytools.calc/WatchWindow" oor:op="replace">
				<prop oor:name="UIName" oor:type="xs:string">
					<value xml:lang="en-US">Watch Window</value>
					<value xml:lang="ja">ウォッチウィンドウ</value>
				</prop>
				<prop oor:name="ImageURL" oor:type="xs:string">
					<value>vnd.sun.star.extension://mytools.calc.WatchWindow/images/icon.png</value>
				</prop>
			</node>
		</node>
	</node>
</oor:component-data>
}}
States ノードの子ノードとして項目を追加しています。ノード名として private:resource/toolpanel/ で始まる独自のツールパネル URI を指定します。このとき、独自の名前になるようにします。

UIName にはツールパネルのタイトルとして表示する名前を指定します。ローカライズした値も指定できます。

ImageURL にはアイコンを指定します。3.3 からは vnd.sun.star.extension://EXTENSION_ID/PATH_TO_FILE の形式の URI が利用できます。

ここで登録したツールパネルの URI を処理するファクトリを次に設定します。
** Factories [#z4fe14e9]
登録した URI を処理してツールパネルを作成するコンポーネントなどを指定します。/org.openoffice.Office.UI.Factories 以下になります。

#code(xcu){{
<?xml version='1.0' encoding='UTF-8'?>
<oor:component-data 
	xmlns:install="http://openoffice.org/2004/installation" 
	xmlns:oor="http://openoffice.org/2001/registry" 
	xmlns:xs="http://www.w3.org/2001/XMLSchema" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	oor:name="Factories" 
	oor:package="org.openoffice.Office.UI">
	<node oor:name="Registered">
		<node oor:name="UIElementFactories">
			<node oor:name="private:resource/toolpanel/mytools.calc/WatchWindow" oor:op="replace">
				<prop oor:name="Type">
					<value>toolpanel</value>
				</prop>
				<prop oor:name="Name">
					<value>mytools.calc</value>
				</prop>
				<prop oor:name="Module">
					<value/>
				</prop>
				<prop oor:name="FactoryImplementation">
					<value>mytools.calc.WatchWindow</value>
				</prop>
			</node>
		</node>
	</node>
</oor:component-data>
}}
UIElementFactories 以下に子ノードとして独自の名前を持ったノードを追加してファクトリの設定を行います。ここでは上記のツールパネルの URI としていますが、同じにする必要はありません。一つのファクトリで複数のツールパネルを生成させるように登録できます。

Type には toolpanel を指定します。

Name に指定した名前と一致する URI のツールパネルの処理がこのファクトリに対して要求されます。指定する名前は private:resource/toolpanel/ 以降の部分で前方一致です。ここでは mytools.calc から始まる URI のツールパネルが処理されます。上記の様に /WatchWindow が続いていても前方一致して処理が要求されます。

Module 利用できるコンポーネントを指定します。空にするとどのコンポーネントからも利用できます。上記の WindowState に対して登録がなければ作業ペインにツールパネルが表示されませんが、ユーザーが勝手に追加できるため、ここで制限しておくべきです。

FactoryImplementation にはこのツールパネルを作成するファクトリの UNO コンポーネントの実装名を指定します。コンポーネントは com.sun.star.ui.XUIElementFactory インターフェースをサポートしている必要があります。

** ファクトリコンポーネント [#kb5f1339]
Factories で登録した実装名を持つファクトリコンポーネントを用意します。次の二つのインターフェースをサポートしたコンポーネントです。

- com.sun.star.lang.XServiceInfo ファクトリを名前指定で探すときに利用される。
- com.sun.star.ui.XUIElementFactory 要求のあったリソース URI に対してツールパネルを作成する。

createUIElement の最初の引数にリソース URI が渡され、上記のファクトリの登録時に指定したものと一致するか確認したり、リソース URI によって作成するパネルを変更したりします。ファクトリは作成し終えたツールパネルに特に関与しません。

2番目の引数は css.beans.PropertyValue[] で Frame にそのツールパネルが入る作業ペインの所属するドキュメントフレームが渡されます。ドキュメントにはここからアクセスできます。
ParentWindow にはツールパネルとしてコントロールなどを配置するときに親ウィンドウとして利用するウィンドウが渡されます。コントロールを配置する必要があるのなら確保しておく必要があります。

メソッドの返り値は com.sun.star.ui.XUIElement インターフェースをサポートする UNO コンポーネントです。独自に実装しなければいけません。また、com.sun.star.ui.XToolPanel インターフェースもサポートしている必要があります。
** ウィンドウの実装 [#v0d94f29]
ツールパネルにコントロールを配置するには、ダイアログとは少し異なるウィンドウを作成する必要があります。ウィンドウを作成したことがなければ難しいかもしれません。

** パッケージング [#cf71a9a9]
いつものファイルと同じように拡張機能パッケージに入れます。特に他のときと異なる点はありませんが、バージョン依存性として description.xml ファイル内で 3.3 以降を指定しておいた方がよいです。

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes