クラスの作成
Zen Mojo アプリケーションを作成する場合、ほとんどの作業はテンプレート・クラスを定義するタスクです。この作業をできるだけすばやく開始できるようにするために、この章では、相互関連するクラスのセットを開始点として定義する前提作業について説明します。以下のトピックについて説明します。
プラグインの選択とファイルのダウンロード
開発の初期段階で、使用するプラグインを決定する必要があります。場合によっては、プラグインで使用するためのファイルをダウンロードする必要があります。必要なプラグインとファイルのリストは、"Zen Mojo プラグインの使用法" を参照してください。
Zen Mojo ウィザードの使用法
Studio には、このクラス・セットの開始点として使用できる便利なウィザードが用意されています。このウィザードでは、ページ・クラス、テンプレート・クラス、および (オプションで) アプリケーション・クラスを生成します。このウィザードを使用する手順は次のとおりです。
-
[ファイル]→[新規作成] をクリックし、[Zen] をクリックしてから [Zen Mojo サイト] をクリックします。
-
[OK] をクリックします。
-
以下のオプションのいくつかまたはすべての値を指定します。
-
[パッケージ名] — (必須) クラスを含めるパッケージの名前を指定します。
-
[ページ・クラス名] — (必須) ページ・クラスの短いクラス名を指定します。
-
[ページ名] — アプリケーションでの、このページの論理名を指定します。
-
[ページ・マネージャ] — (必須) ページ・マネージャを選択します。
-
[選択されているヘルパー・プラグイン] — このページ・クラスで使用するヘルパー・プラグインを選択します。ヘルパー・プラグインを選択するには、[利用可能なヘルパー・プラグイン] リストの項目をクリックします (ヘルパー・プラグインを [選択されているヘルパー・プラグイン] から削除するには、このリストで該当のプラグインをクリックします)。
-
[テンプレート・クラス名] — (必須) テンプレート・クラスの短いクラス名を指定します。このクラスは、[パッケージ名] で指定されたパッケージに作成されます。
-
[アプリケーション・クラス名] — アプリケーション・クラスがある場合は、その短いクラス名を指定します。指定すると、そのクラスが [パッケージ名]で指定されたパッケージに作成されます。
-
[アプリケーション名] — アプリケーションの論理名を指定します。
-
[ドメイン] — 短い文字列を指定します。このオプションでは、このクラスによって生成されたローカライズ可能な文字列のローカリゼーション・ドメインを指定します。
クラス名以外の、クラスの作成に関する詳細はすべて変更できます。
-
-
[完了] をクリックします。
次に、Studio により、Zen Mojo ページ・クラス、テンプレート・クラス、([アプリケーション・クラス名] を指定した場合には) アプリケーション・クラスが、[パッケージ名] に指定されているパッケージにすべて生成されます。
このページ・クラスには、暫定のパラメータ定義、暫定の pageContents XData ブロック、および空の XData スタイル・ブロックが含まれています。また、選択したヘルパー・プラグインに基づいて、JSINCLUDES および CSSINCLUDES クラス・パラメータも指定します。
テンプレート・クラスには、%OnGetJSONContent()、onGetContent()、およびその他のメソッドの暫定定義が含まれています。
アプリケーション・クラスには (生成された場合)、暫定のパラメータ定義と空の XData Style ブロックが含まれています。
次に、ページ・クラスを調べ、必要に応じて、その pageContents XData ブロックを修正します。この章で後述する、“基本の pageContents 定義の作成” を参照してください。
Zen Mojo クラスの手動作成
Zen Mojo ウィザードを使用する代わりに、初期のアプリケーション・クラス、ページ・クラス、およびテンプレート・クラスを手動で作成できます。このセクションでは、以下の要件について説明します。
Zen Mojo アプリケーション・クラスの定義
Zen Mojo アプリケーション ・クラスはオプションです。
Zen Mojo アプリケーション・クラスを定義するには、%ZEN.Mojo.baseApplicationOpens in a new tab を拡張するクラスを定義します。また、オプションで、このクラスに XData Style ブロックを含めることができます。詳細は、“スタイル・シートの使用法” の章を参照してください。
アプリケーション・クラスのその他のオプションは、%ZEN.Mojo.baseApplicationOpens in a new tab のクラス・リファレンスを参照してください。
Zen Mojo ページ・クラスの定義
基本の Zen Mojo ページ・クラスを作成するには、%ZEN.Mojo.basePageOpens in a new tab を拡張するクラスを作成します。作成したクラスで、以下を実行します。
-
オプションで、APPLICATION パラメータを定義します。値には、前のセクションの対応するアプリケーション・クラスの名前を指定します。以下に例を示します。
Parameter APPLICATION = "ZMdemo.dojo.Application";
-
TEMPLATECLASS パラメータを定義します。値には、この章で後述する Zen Mojo テンプレート・クラスの名前を指定します。以下に例を示します。
Parameter TEMPLATECLASS = "ZMdemo.dojo.baseTemplate";
-
PROVIDERLIST パラメータを定義します。値には、このページに必要なコンテンツ・オブジェクトの名前のコンマ区切りリストを指定します。このリストには、テンプレート・クラスの %OnGetJSONContent() の主な分岐が含まれています (後続のサブセクション “テンプレート・クラスの定義” を参照してください)。以下に例を示します。
Parameter PROVIDERLIST = "data,layout";
-
継承された pageContents XData ブロックをオーバーライドし、このページの基本の定義を作成します (後続のセクション “基本の pageContents 定義の作成” を参照してください)。
この定義では、通常は 1 つ以上のプラグインを使用します。使用するプラグインをメモします。
-
プラグインで必要とされる場合には、JSINCLUDES パラメータと CSSINCLUDES (または CSS3INCLUDES) パラメータを更新します。詳細は、"Zen Mojo プラグインの使用法" を参照してください。
ほとんどの場合、これらのパラメータでは、それぞれ、ページ・インスタンスにロードされる外部の JavaScript ライブラリと CSS スタイル・シートを指定します。ただし、Google マップのヘルパー・プラグインの場合は、JSINCLUDES は Google Maps API の URL を示しています。このライブラリはリストに表示されている順序 (左から右) にロードされます。これは、1 つのライブラリが別のライブラリに依存する場合に重要です。
すべてのプラグインにこれらのパラメータが必要なわけではありません。
-
DOMAIN パラメータを定義します。このパラメータでは、このクラスによって生成されたローカライズ可能な文字列のローカリゼーション・ドメインを指定します。以下に例を示します。
Parameter DOMAIN = "MyZenMojoApp";
このパラメータは必須ではありませんが、常にこれを指定することが推奨されています。
テンプレート・クラスの定義
テンプレート・クラスを作成するには、%ZEN.Mojo.Component.contentTemplateOpens in a new tab を拡張するクラスを作成します。クラス内で、開始点として以下を実行します。
-
NAMESPACE パラメータを定義します。このパラメータは、このテンプレートが属する XML ネームスペースを指定します。Zen Mojo テンプレートごとに、NAMESPACE と短いクラス名の一意の組み合わせが必要です。
以下に例を示します。
Parameter NAMESPACE = "http://www.intersystems.com/zen/mojo/demo/dojo";
-
DOMAIN パラメータを定義します。このパラメータでは、このクラスによって生成されたローカライズ可能な文字列のローカリゼーション・ドメインを指定します。以下に例を示します。
Parameter DOMAIN = "MyZenMojoApp";
このパラメータは必須ではありませんが、常にこれを指定することが推奨されています。
-
onGetContent() メソッドの暫定バージョンを作成します。これは、コンテンツ・オブジェクトのすべての要求のディスパッチャとして機能します。前の章の “onGetContent() の定義” を参照してください。
-
%OnGetJSONContent() の暫定バージョンを作成します。これにより、サーバからデータ・オブジェクトが返されます。前の章の “%OnGetJSONContent() の定義” を参照してください。
-
対応するページ・クラスで、PROVIDERLIST パラメータが、使用可能な各データ・オブジェクトの名前をリスト表示することを確認します。PROVIDERLIST パラメータがデータ・オブジェクトをリスト表示しないかぎり、サーバ側のページ・オブジェクトからデータ・オブジェクトを返すことはできません。
基本の pageContents 定義の作成
このドキュメント内の前述の “Zen Mojo ページの基本的な定義” で説明しているとおり、ページ・クラスの pageContents XData ブロックで、ページの主要領域のコンテンツは定義されます。以下に、この XData ブロックの骨格構造を示します。
XData pageContents [ XMLNamespace = "http://www.intersystems.com/zen" ]
{
<pane xmlns="http://www.intersystems.com/zen" xmlns:mojo="http://www.intersystems.com/zen/mojo" layout="none">
your contents here
</pane>
}
your contents here の場所に、1 つ以上の <mojo:documentView> 要素を組み込みます。これらの要素それぞれについて、ページ・マネージャ・プラグインと必要なすべてのヘルパー・プラグインを含めます (次のセクション “プラグインの登録” を参照してください)。また、各 documentView の ID 属性と、必要に応じて、ongetlayout および ongetdata XML 属性のいずれかまたは両方を指定します。ongetlayout および ongetdata については、以下のような値を使用します。
return zenPage.getContent('contentObject',key,criteria);
getContent() は組み込みのページ・メソッドであり、contentObject は、最終的にテンプレートによって提供されるコンテンツ・オブジェクトの名前であることに注意してください。
以下に例を示します。
XData pageContents [ XMLNamespace = "http://www.intersystems.com/zen" ]
{
<pane xmlns="http://www.intersystems.com/zen"
xmlns:mojo="http://www.intersystems.com/zen/mojo" layout="none">
<mojo:documentView id="mainView" developerMode="true"
ongetlayout ="return zenPage.getContent('mainViewLayout',key,criteria);">
<mojo:mojoDefaultPageManager>
<mojo:HTML5Helper/>
</mojo:mojoDefaultPageManager>
</mojo:documentView>
</pane>
}
この例では、子要素は読みやすくする目的で使用されています。同じようにする必要はありません。
プラグインの登録
各 documentView で使用するために、1 つ以上のプラグインを登録する必要があります。そのためには、以下の操作を実行します。
-
1 つのページ マネージャ・プラグインを <mojo:documentView> の子要素として含めます。
-
1 つまたは複数のヘルパー・プラグインをページ・マネージャ・プラグインの子要素として含めます。
以下に、一般的な構造を示します (わかりやすくするために、余分なインデントを使用していますが、このインデントを含める必要はありません)。
<mojo:documentView id="mainView" other attributes...>
<mojo:somePageManager>
<mojo:someHelper/>
<mojo:anotherHelper/>
<mojo:yetAnotherHelper/>
</mojo:somePageManager>
</mojo:documentView>
詳細は、"Zen Mojo プラグインの使用法" を参照してください。
カスタム・プラグインを使用する場合は、プラグイン競合の可能性があるため、ヘルパー・プラグインをリストする順序を考慮することが重要です。プラグイン競合は、単一の documentView が複数のヘルパー ・プラグインを使用し、それらのプラグインが同じ名前のレイアウト・オブジェクトを保持している場合に発生します。インターシステムズ提供のすべてのプラグインでは、レイアウト・オブジェクトごとに一意の名前が付いていますが、カスタム・プラグインには、インターシステムズのレイアウト・オブジェクトと同じ名前を持つレイアウト・オブジェクトが含まれる可能性があります。これはエラー状態ではなく、むしろ、特別な処理が必要なシナリオです。詳細は、"Zen Mojo プラグインの使用法" の “プラグイン競合の検出および解決” を参照してください。
複数の documentView の使用
使用するプラグインによっては、ページに相互に影響する複数の documentView を含めることができます。例えば、2 つの documentView を横に並べることができます。左側の documentView に、右側の documentView に表示される内容を制御するオプションを表示できます。
一部のプラグインは、1 つの documentView しかサポートしていません。詳細は、"Zen Mojo プラグインの使用法" を参照してください。一般に、ページ・マネージャ・プラグインがモバイル・デバイスでの使用を目的にしている場合、そのプラグインはページ全体を使用し、複数の documentView をサポートしません。
次の手順
開始点として使用する Zen Mojo クラス・セットを作成できたので、以下の手順を実行して Zen Mojo アプリケーションを作成します。
-
"Zen Mojo プラグインの使用法" の関連する章に目を通して、使用しているプラグインに必要な、または推奨される追加の実装手順について学びます。
Important:使用しているページ・マネージャ・プラグインに応じて、ページ・コンテンツを表示するために、ページ・クラスに追加のメソッドを実装する必要がある場合があります。
-
レイアウト・メソッドを作成します。“レイアウト・メソッドの定義” を参照してください。
-
イベント・ハンドラとその他のオプションを定義して、ページの動作を指定します。“コールバックとイベント・ハンドラの概要” の章では、オプションを概説しています。イベント・ハンドラとコールバック内で使用できるオプションの詳細は、以下の章を参照してください。
-
“キーの使用法”
-
“レイアウト・オブジェクトとの対話操作”
-
“サーバへのデータの送信”
-
-
必要に応じて、スタイル情報を定義して適用します。“スタイル・シートの使用法” の章を参照してください。
このドキュメントの後続の章では、追加のトピックについて説明します。