プロジェクトを選択し、右クリックメニューから「New」>「WOComponent」を選択します(図7.1.1[「WOComponent」を選択])。
図: 「WOComponent」を選択
「New WebObjects Component」ウィンドウが開きます(図7.1.2[「New WebObjects Component」ウィンドウ])。入力する必要のあるフィールドは、コンポーネントの名前のみです。デフォルトでは「MyComponent」になっています。また、ウィンドウ下にあるチェックボックスのうち「Create body tag」と「Create api file」のチェックを外していますが、これはチェックしたままでも構いません。「Finish」をクリックして次に進めます。
図: 「New WebObjects Component」ウィンドウ
MyComponent.javaがソースフォルダに、MyComponent.woとオプションのファイル(*.woo, *.api)がプロジェクトのルートフォルダ(もしくは指定したフォルダ)に生成されます(図7.1.3[生成されたコンポーネント])。
図: 生成されたコンポーネント
プロジェクトのMainコンポーネントを編集してみましょう。パッケージエクスプローラでMain.woを選択し、右クリックメニューから「WOLips Tools」>「Open WO」を選択します(図7.2.1.1[「Open WO」を選択する])。コンポーネントはJavaファイル・HTMLテンプレートファイル・WODファイル・APIファイルの右クリックメニューからでも開くことができます。
図: 「Open WO」を選択する
コンポーネントを開くと、コンポーネントエディタが表示されます(図7.2.1.2[コンポーネントエディタ])。コンポーネントエディタは複数のビューから成り立っており、エディタの最下部には「Component、Preview、API」のタブが並んでいます。ComponentタブはHTMLテンプレートとWODファイルを分割して表示・編集します。PreviewタブはHTMLファイルのプレビューを表示します(※訳註:実装中?)。APIタブはコンポーネントのバインディングと検証の設定を編集します。
図: コンポーネントエディタ
Componentタブをクリックし、HTMLテンプレートに次のタグを記述してください。記述できたら「File」メニューから「Save」を選択してHTMLファイルを保存します。
<webobject name = "ApplicationName"></webobject>
コンポーネントを保存すると、WOLipsは自動的に変更を検証します。コンポーネントにエラーがあれば問題ビューに表示されます(図7.2.2.1[コンポーネントのエラー])。HTMLテンプレートに記述したエレメント(ApplicationName)がWODファイルで定義されていないというエラーが表示されるはずです。
図: コンポーネントのエラー
再びコンポーネントエディタに戻り、ComponentタブをクリックしてWODファイルを修正します。ここでは新しいエレメントを一つ定義し、エレメントの種類を「WOString」、名前を「ApplicationName」と設定します(図7.2.3.1[WODファイルを編集する])。
図: WODファイルを編集する
図のテキストをそのまま入力しても構いませんが、そんな面倒くさいことはせずに、WODエディタの補完機能を利用しましょう。コンポーネントエディタには補完機能があり、Ctrl-スペースを押すことで様々なコードを補完することができます。例えばHTMLテンプレートの<WEBOBJECT>
タグ上でCtrl-スペースを押せば、WODファイルの定義からエレメント名を選択できます。また、HTMLテンプレートで新しい<WEBOBJECT>
タグを定義してから保存すると、WODファイルでCtrl-スペースを押したときに未定義の(WODファイルでまだ定義していない)エレメントが補完候補として表示されます。とにかくあちこちでCtrl-スペースを押して試してください。
それではまず、次のようにWODファイルを編集してみましょう。
エレメントを定義できたら、コンポーネントを保存します。再びコンポーネントが検証されますが、先程とは異なるエラーが表示されるはずです。先程のエラー原因だったエレメントは定義しましたが、今度はWOStringに必要な「value」バインディングをまだバインドしていません。次も補完しながら進めましょう。
次は「value」バインディングにキーをバインドします(図7.2.3.2[キーをvalueにバインドする])。
図: キーをvalueにバインドする
コード補完のデフォルトのキーバインドはCtrl-スペースになっています。もしSpotlightのショートカットキーを設定していたら、Eclipseでコード補完のキーバインドを変更してください。Eclipseのキーバインドを変更する方法は宿題としておきます:-)
Main.javaを開き、新しいメソッドを追加します。現在日時のNSTimestampオブジェクトを返すnow()
メソッドを定義します(図7.2.4.1[新しいメソッドを定義する])。
図: 新しいメソッドを定義する
<webobject name = "Now"></webobject>
ApplicationNameと同様にエレメントを定義します(図7.2.4.2[Nowエレメントを定義する])。
図: Nowエレメントを定義する