カスタムのサービスエフェクティビティコンフィギュレーションパネルの作成
「サービスエフェクティビティ」オブジェクトの任意の属性で、「サービスエフェクティビティを追加/編集」ダイアログおよび「サービスエフェクティビティ」フィルタに表示されるフィールドをカスタマイズして、値を割り当てることができます。
このトピックでは、次に示したフィールドでコンフィギュレーションパネルを作成する方法を説明します。パネルとは「タイプ」と「コンテキスト」フィールドの下方の領域を指します。
次の要件を留意してください。
1. ServiceEffectivityConfigType を拡張する Java クラス
一例として次のクラスを参照してください (改行は無視します)。
codebase\com\ptc\arbortext\windchill\serviceEffectivityFilter\client\ui
\renderers\configTypes\SerialNumberDateConfigType.class
2. クラスは、必要なフィールドで GXT レイアウトとコンポーネントを使用します。
3. 属性と、カスタムの ServiceEffectivityConfigType クラスは ServiceEffectivityConfig.xml ファイルに登録されます。
メソッドの概要
次に示す必須メソッドは ServiceEffectivtityConfigType から継承したもので、上書きまたは実装の必要があります。それぞれの詳細については後のセクションで説明します。
• renderConfigType()
• resetConfigType()>
• getLocalizedLabel()
• populateConfigType(JSONObject jsonObject)
• isContextMandatory()
• addDetailSummary()
• initializeConfigType(JSONObject innerObject)
• addConfigType()
• getJsonFromFields()
• getAllowAddingConfigType()
renderConfigType()
このメソッドはパネルと、その中に含まれるフィールドを作成します。
例では、次のエントリがフィールドを設定します。
• 基準パネルは ContentPanel エントリで表されます。
• ContentPanel エントリには「シリアル番号と日付」および「サマリー」領域の NoLegendFieldSet エントリが含まれます。
• 「シリアル番号と日付」領域の FieldSet エントリは、「シリアル番号」フィールドと、「日付」フィールドを表す HorizontalPanel エントリを 1 つずつ含みます。
• 「シリアル番号」フィールドの HorizontalPanel エントリは入力可能な 2 タイプの情報を表す Radio とTextField エントリを含みます。
• 「日付」フィールドのHorizontalPanel エントリは DateTimePicker エントリを含みます。
• 「サマリー」フィールドに表示されるテキストの FieldSet エントリはほかのフィールド値が変更されるたびに更新されます。
• このメソッドでは、有効な入力や、フィールドとボタンの有効化/無効化を制御するためにフィールドへオプションのリスナーが追加されます。
resetConfigType()
このメソッドはすべてのフィールドをクリアしてリセットします。次の操作で使用されます。
• 「サービスエフェクティビティ」フィルタタブ上の「適用予定」テーブルへ基準を追加する際
• 「サービスエフェクティビティ」を追加するために「適用」ボタンをクリックする際
• 必須である場合に、コンテキストを除去する際
この例では、このメソッドはまた、継続する前にコンテキストが必ず選択されているようにするために、すべてのフィールドを無効化します。「サービスエフェクティビティ」タイプでは、コンテキストは必須です。
getLocalizedLabel()
このメソッドは、「サービスエフェクティビティタイプ」の、ローカライズされたリソースの文字列を返します。
「タイプおよび属性の管理」ユーティリティに登録された属性の表示名を使用するためには、getDisplayName()を返します。この値はスーパークラスで設定されています。
populateConfigType(JSONObject jsonObject)
フィルタ基準またはServiceEffectivity オブジェクトが作成されると、フィールド値は JSONObject へ変換されます。このメソッドは JSONObject を取り、このフィールド値を読み取り、UI 内のフィールドをそれらの値に再設定します。
次の操作が発生した際に使用されます。
• フィルタ内の「適用予定」フィルタで行が選択された際
• フィルタが適用され、フィルタタブが再度開かれる際
• 保存済みのフィルタが適用され、タブが開かれる際
• 既存の ServiceEffectivity オブジェクトが編集される際
JSONObject は任意の属性や値を持つことができますが、これらを読み取り処理するにはカスタムのフィルタ委任が必要です。
isContextMandatory()
これは、選択された「サービスエフェクティビティ」タイプでコンテキストフィールドが必須であるかどうかを指定します。また、これが設定されていない場合にフィールドを無効化するか、そしてコンテキストが除去された際にフィールドをクリアするかを制御するために使用します。
addDetailSummary()
「サマリー」フィールドセットが作成された場合にのみ使用されます。このメソッドは、フィールド内のテキストを更新します。「サマリー」フィールドが必須でなければ、このメソッドを実装する必要はありません。
initializeConfigType(JSONObject innerObject)
「サービスエフェクティビティ」フィールドを表す JSONObjectが与えられると、このメソッドは、タブを構成する際に「適用予定」テーブル内のモデルを初期化するために、フィルタタブ内で使用されます。
addConfigType()
「サービスエフェクティビティ」フィルタのタブ内では、このメソッドはモデルを作成して「適用予定」テーブルへ追加します。
detail は、テーブルの「値」列に表示される文字列を表します。
例:
JSONObject latestJSON = getJsonFromFields();
String detail = valueText.getRawValue();
SETabInfoModel cm = new SETabInfoModel(getLocalizedLabel(),
ServiceEffectivityHelper.
getEffContextAsStringFromWidget(getEffContext(), true), detail, latestJSON,
getConfigTypeId());
return cm;
getJsonFromFields()
このメソッドはフィールド内の値セットから JSONObject を作成します。このオブジェクトはサービスエフェクティビティタイプごとに異なり、フィルタ委任によって処理されます。
getAllowAddingConfigType()
このメソッドは、フィールドが検証に合格しなかった場合にフォーム上のボタンを有効化/無効化するために使用する、allowAddingConfigType ブール (boolean) プロパティを返します。