高度なカスタマイズ > ビジネスロジックのカスタマイズ > Product Family Management のカスタマイズ > 「オカレンス」タブでの場所のカスタマイズ
  
「オカレンス」タブでの場所のカスタマイズ
Matrix Editor の「オカレンス」タブに、カスタム場所文字列フォーマットを追加できます。個々の座標値の変換を必要な場所文字列フォーマットにオーバーライドできます。カスタム場所文字列フォーマットは属性パネルレイアウトとテーブル列またはツリー列に表示されます。個々のカスタム座標値は属性パネルレイアウトとテーブル列またはツリー列に表示されます。さらに、値が修正されると「オカレンス」タブでそれらの値が同期化されます。カスタマイズを行うには、以下のメソッドを実装します。
ExampleGWTLocationCellEditor および CustomLocationWidget: これらは「場所」文字列と個々の座標値の間で双方向の変換を行います。
ExampleGWTLocationCellRenderer: このメソッドは属性パネルレイアウトとテーブル列でレンダリングを行います。
ExampleGWTDataUtility: このメソッドは属性 occurrenceMatrixLocationExampleGWTLocationCellEditorExampleGWTLocationCellRenderer を示します。cat-dataUtilities.properties.xconfExampleGWTDataUtility を属性 occurrenceMatrixLocation にバインドします。
"場所" 文字列に対する貼り付けまたは修正は、カスタマイズを使用して個々の座標値に適切に変換されます。プリファレンス「配置のオカレンスへの貼り付けを許可」が有効になっている必要があります。任意の座標値に対する修正は、カスタマイズを使用して場所文字列値に変換されます。不適切なユーザー入力に関連する検証がカスタム場所文字列フォーマットのコンテキストに存在するか確認します。カスタマイズで使用するために "場所" 文字列を適切に変換する、サポートされている "ユーティリティ" API が使用可能であることを確認します。サポートされている API 呼び出しを介した "場所" 文字列に対する修正は、カスタマイズを使用して個々の座標値に変換されます。サポートされている API 呼び出しを介した個々の座標値に対する修正は、カスタマイズを使用して "場所" 文字列フォーマットに変換されます。
* 
場所フィールドをカスタマイズするソリューションは、Matrix Editor 内のその他の属性をカスタマイズするときと同じアプローチに従います。
カスタム GWT モジュールを作成して ME アプリケーションでクライアント側 GWT コードをコンパイルします。既成のレンダラーとは異なる属性表示を行うカスタム GWT 属性レンダラーを作成します。データユーティリティクラスでこのレンダラーを指定します (使用するメソッドは set Rendere ())
部品、部品マスター、ベースラインメンバーリンクまたは親子リンクに定義されているすべてのカスタム属性にカスタム GWT 属性エディタを作成します。これにより、属性値の編集と保存が可能になります。
前提条件
カスタマイズを適用するには、次のことを理解している必要があります。
JAVA を使用した基本的な Web 開発
GWT
カスタムタグ
HTML フォーム
カスタマイズポイント
ExampleGWTLocationCellEditor の実装
ExampleGWTLocationCellEditor メソッドは CustomTreeCellEditor を拡張して HasWidgets インタフェースを実装します。これはコンストラクタで CustomLocationWidgetLocationField に提供し、specialKeyEvents を処理します。
CustomLocationWidget の実装
CustomLocationWidget は、すでに 6 個のフィールドが作成され、フィールド同期化のために必要なすべてのイベントが登録されている LocationPasteWidget を拡張します。オーバーライドする主なメソッドは以下のとおりです。
protected void createPastePanel(): ここで locationPasteField を作成して mainPanel に配置する必要があります。
protected void syncFocusFields(): 個々のフィールドと locationPasteField の間で同期化を行います。このメソッドは、場所の入力と個々のフィールドの間で同期化が必要になるたびに実行されます。たとえば、場所入力フィールドに正確な場所を貼り付けた場合などです。
protected void syncLocationPasteField(): locationPasteField と個々のフィールドの間で同期化を行います。このメソッドは、個々のフィールドと単一の場所入力の間で同期化が必要になるたびに実行されます。たとえば、場所フィールドのいずれかを修正した場合などです。
LocationPasteField の実装
LocationPasteField は、場所文字列を貼り付けることができる入力フィールドです。これは FocusTextField<String> を拡張します。オーバーライドする主なメソッドは以下のとおりです。
protected boolean validateFormat (): このメソッドはユーザーが指定した場所文字列を検証します。場所入力が変更されるたびに検証が行われます。
public String[] getErrorMessages(): validatateFormat メソッドが false を返した場合にユーザーに表示されるメッセージの配列を返します。
protected boolean isAllowableCharacter(char key): 指定した文字が locationPasteField で使用可能であるかどうかを検証します。使用できない場合、その文字はフィールドに追加されません。
ExampleGWTLocationCellRenderer の実装
ExampleGWTLocationCellRendererCustomCellRenderer<M> を拡張する必要があります。カスタマイズするレンダーメソッドをオーバーライドします。
ExampleGWTDataUtility の実装
ExampleGWTLocationCellEditorExampleGWTLocationCellRenderer を示す必要があります。
場所属性への ExampleGWTDataUtility のバインド
以下のエントリをファイル <WT_HOME>/codebase/com/ptc/cat/cat-dataUtilities.properties.xconf に追加します。
<Option serviceClass="com.ptc.cat.dataUtilities.ExampleGWTDataUtility"
requestor="java.lang.Object"
selector="occurrenceMatrixLocation"
cardinality="duplicate"/>
xconfmanager –pf コマンドを実行することでこの変更を適用します。
ユーザーが指定した場所の検証のカスタマイズ
LocationPasteField で protected boolean validateFormat を実装します。
同期化中の場所入力と個々の場所フィールドの間の変換のカスタマイズ
フィールドの同期化中に場所入力と個々の場所フィールドの間の変換をカスタマイズするには、CustomLocationWidget で protected void syncFocusFields() を実装します。
同期化中の個々の場所フィールドと場所入力の間の変換のカスタマイズ
フィールドの同期化中に個々の場所フィールドと場所入力の間の変換をカスタマイズするには、CustomLocationWidget で protected void syncLocationPasteField () を実装します。
属性パネルレイアウトとテーブルツリー列での場所フォーマットのカスタマイズ
「属性」パネルレイアウトとテーブル列またはツリー列に表示される場所フォーマットをカスタマイズするには、ExampleGWTLocationCellRenderer でレンダーメソッドをオーバーライドします。
サンプルコード
以下のサンプルコードは、場所フォーマットを %vX%vY%vZ%aX%aY%aZ から %aZ%aY%aZ%vZ%vY%vX にカスタマイズするときに使用できます。
ExampleGWTLocationCellEditor.java
CustomLocationWidget.java
ExampleGWTLocationCellRenderer.java
ExampleGWTDataUtility.java