基本的なカスタマイズ > ユーザーインタフェースのカスタマイズ > Windchill JSP フレームワークを使用した HTML クライアントのカスタマイズ > ブレッドクラムコンポーネント > ソリューション > 手順 - 新しい BreadCrumbDelegate クラスの作成
  
手順 - 新しい BreadCrumbDelegate クラスの作成
BreadCrumbDelegate クラスの作成
ブレッドクラム委任クラスは BreadCrumbDelegate インタフェースを実装する必要があります。このインタフェースには、canHandle()getGenerator() という 2 つのメソッドがあります。
canHandle() メソッドは、BreadCrumbDelegateFactory によって呼び出され、委任のインナークラス AbstractBreadCrumbGenerator (後述) が所定のページのブレッドクラムを作成できるかどうかを判断します。canHandle() メソッドには、ページの URL、URL のコンテキストオブジェクト (存在する場合)、URL のコンテナオブジェクト (存在する場合) が渡されます。true または false を返す必要があります。
BreadCrumbController は、ファクトリによって選択された委任の getGenerator() メソッドを呼び出して、インナークラス AbstractBreadCrumbGenerator の新しいインスタンスを取得します。
* 
ファクトリは各委任の静的インスタンスを 1 つしか作成しないため、委任クラス自身がクラスインスタンス変数を使ったり、ステートフルであったりしてはいけません。
AbstractBreadCrumbGenerator インナークラスの作成
委任クラスは、AbstractBreadCrumbGenerator のサブクラスであるインナークラスを持つ必要があります。インナークラスの getCrumbs() メソッドは、BreadCrumbController によって呼び出されて、クラムの JSONArray を生成します。インナージェネレータクラスの新しいインスタンスは呼び出されるたびに作成されるため、ジェネレータクラスはステートフルでも構いません。
ジェネレータクラスのコンストラクタには、ページの URL、ページのコンテキストオブジェクト (URL で指定された場合)、ページのコンテナ (URL で指定された場合) が渡されます。コンストラクタは、スーパークラスの init() メソッドを呼び出す必要があります。
getCrumbs() メソッドによって配列で返される JSON オブジェクトは、次の形式にする必要があります。
{text: 'display text', url: 'http://my/url'}
以下に例を示します。
[{"text":"Products","url":"app/#ptc1/comp/netmarkets.product.list"},{"text":"Product1","url":"http://<someServer>/Windchill/app/#ptc1/tcomp/infoPage?oid=OR%3Awt.pdmlink.PDMLinkProduct%3A105250&u8=1"}]
クラスの例については、サンプルコードを参照してください。