ページタイプを追加するために必要な作業は以下のとおりです。
- org.seasar.kvasir.page.Pageインタフェースのサブインタフェースと実装クラスを作成する
- org.seasar.kvasir.page.PageMoldクラスのサブクラスを作成する
- org.seasar.kvasir.page.type.PageTypeインタフェースの実装クラスを作成する
- ページタイプのためのアイコンを作成する
- pageTypes拡張ポイントにプラグインするためのエントリをplugin.xmlに追加する
- plugin.diconに作成したPageTypeコンポーネントを追加する
例としてcom.exampleプラグインで「glossary」(用語集)というページタイプを追加する場合について説明します。
org.seasar.kvasir.page.Pageインタフェースのサブインタフェースと実装クラスを作成する
Kvasir/Soraの中で用語集ページタイプのページオブジェクトを扱うためのインタフェースとして、com.example.pageType.Glossaryインタフェースを作成します。GlossaryインタフェースはPageインタフェースのサブインタフェースとします。
public interface Glossary extends Page { String TYPE = "glossary"; }
org.seasar.kvasir.page.PageMoldクラスのサブクラスを作成する
用語集ページを新規作成するための情報を指定するためのクラスとして、com.example.pageType.GlossaryMoldクラスを作成します。
GlossaryMoldインタフェースはPageMoldクラスのサブクラスとします。
public class GlossaryMold extends PageMold { public GlossaryMold() { super.setType(Glossary.TYPE); } public GlossaryMold(String name) { this(); setName(name); } @Override public PageMold setType(String type) { throw new UnsupportedOperationException(); } }
org.seasar.kvasir.page.type.PageTypeインタフェースの実装クラスを作成する
作成するページタイプのメタ情報をKvasir/Soraに伝えるためのクラスとして、com.example.pageType.GlossaryPageTypeクラスを作成します。GlossaryPageTypeクラスはPageTypeインタフェースの実装クラスとします。ベースクラスとしてorg.seasar.kvasir.page.type.AbstractPageTypeを利用することができます。
public class GlossaryPageType extends AbstractPageType { public static final String ID = Glossary.TYPE; public String getId() { return ID; } public Class<? extends Page> getInterface() { return Glossary.class; } public Page wrapPage(Page page) { return new GlossaryImpl(page); } public PageMold newPageMold() { return new GlossaryMold(); } public String convertFieldToPropertyName(String field) { return null; } public boolean isNumericField(String field) { return false; } }
ページタイプのためのアイコンを作成する
追加するページタイプをWebサイト上で視覚的に表現するためのアイコンを作成してsrc/main/plugin/conf/glossary/ディレクトリに配置します。アイコンとしては可視状態を表わすicon.gifと、不可視状態を表わすicon_concealed.gifを作成します。
アイコンの名前と画像フォーマットは任意ですが、不可視状態を表わすアイコンの名前から拡張子を除いた部分は可視状態を表わすアイコンの名前から拡張子を除いた部分に「_concealed」を付与したものである必要があります。
アイコンの大きさは16×16として下さい。
pageTypes拡張ポイントにプラグインするためのエントリをplugin.xmlに追加する
com.exampleプラグインのplugin.xmlにorg.seasar.kvasir.page.pageTypes拡張ポイントにglossaryページタイプをプラグインするためのエントリを追加します。
<extension point="org.seasar.kvasir.page.pageTypes"> <page-type id="glossaryPageType" icon-resource-path="conf/glossary/icon.gif" /> </extension>
icon-resource-path属性の値には作成した可視状態を表わすアイコンのプラグインディレクトリ相対パスを指定します。
作成したPageTypeコンポーネントをplugin.diconに追加する
src/main/plugin/conf/plugin.diconにGlossaryPageTypeコンポーネントのためのエントリを追加します。
<component name="glossaryPageType" class="com.example.pageType.GlossaryPageType" />
name属性はplugin.xmlに追加したpage-typeエレメントのid属性と同じ値にするようにして下さい。
以上でページタイプが追加されます。