カスタマイズポイント
JcaTableConfig クラス API は各種テーブルレベルのカスタマイズポイントとして使用できます。JcaColumnConfig クラス API は各種テーブル列レベルのカスタマイズポイントとして使用できます。
テーブルコンポーネントのカスタムビュー jsp の設定
MVC インフラストラクチャではテーブルとツリーにデフォルトの JSP が用意されています。ほとんどの場合、デフォルトビューをオーバーライドする必要はありません。独自の方法でテーブルモデルをレンダーする必要がある場合、テーブルまたはツリーのコンフィギュレーションオブジェクトに対してビューパスを設定できます。ビューパスは WEB-INF/jsp からの相対パスでなければなりません。これにより、JSP にはクライアントが直接アクセスするのではなく、MVC ビルダーのみがアクセスします。つまり、JSP は <モジュールルート>/src_web/WEB-INF/jsp/<モジュールディレクトリ>/aCustomView.jsp のサブフォルダにチェックインされている必要があります。
テーブルビルダークラス:
TableConfig table = factory.newTableConfig ();
…
table.setView("/myModule/aCustomView.jsp");
カスタムビュー jsp (/WEB-INF/jsp/<モジュールディレクトリ>/aCustomView.jsp) は以下のようになります。
<%@ taglib uri="http://www.ptc.com/windchill/taglib/jcaMvc" prefix="mvc"%>
…
… /* custom code here */
…
<mvc:table/>
…
…/* custom code here */
テーブルビルダークラスの再使用
あるビルダーで定義されている API を新規ビルダーの作成時に再使用できます。一般的には、ほかのビルダーを拡張するのではなく、必要なビルダーをテーブル実装のインスタンスフィールドとして保存しておくのがよいでしょう。これは継承よりも構成が好まれるという一般的な経験則に基づきます。コンフィギュレーションビルダーを再使用する予定がある場合、コンポーネントのコンフィギュレーションファクトリが設定されている必要があります。
例:
@ComponentBuilder("my.builder")
public class MyBuilder extends AbstractComponentBuilder {
private final OtherBuilder otherBuilder = new OtherBuilder ();
@Override
public ComponentConfig buildComponentConfig(ComponentParams params) throws WTException{
…
}
@Override
public void setComponentConfigFactory(ComponentConfigFactory configFactory) {
super.setComponentConfigFactory(configFactory);
otherBuilder.setComponentConfigFactory(configFactory);
}
}
並べ替え可能な列の設定
並べ替え動作
• 次のような状況ではテーブルがクライアント側で並べ替えられます。
1. テーブルが非同期データソース対応のテーブルであり、アプリケーションチームがビルダーの結果プロセッサで 'preSorted' プロパティを true に設定していない。
2. ユーザーが並べ替えの基準を明示的に変更し、ユーザーがテーブルを再び開いた場合 (並べ替えの持続性)。
• 次のような状況ではテーブルがクライアント側で並べ替えられません。
1. アプリケーションチームがテーブルビルダーの結果プロセッサで 'preSorted' プロパティを true に設定している。
2. 同期データソース対応のテーブルである場合。
• クライアント側での並べ替え中、データチャンクがクライアントにロードされると、クライアントの並べ替え基準に従ってストアに追加されます。
• データのロード中にユーザーが並べ替えを実行すると、データはクライアント側で並べ替えられます。後からロードされたデータチャンクも並べ替え後の順序で追加されます。
• 複数列の並べ替え: Shift キーを押しながら並べ替える "マルチクリックで並べ替え" 機能を使用すると、複数の列を同時に並べ替えることができます。ただし、一度に並べ替えることができるのは最大 3 列までという制限があります。
• バージョン列の並べ替えはサーバー側で行われます。
デフォルトの並べ替えの設定
列に setDefaultSort(true) を使用することで、テーブル列をデフォルトの並べ替え列に設定できます。方向を設定するため、昇順の場合は setAscending() に値 'true' を指定し、降順の場合は 'false' を指定します。
ColumnConfig col = factory.newColumnConfig(“name”, true);
col.setDefaultSort(true);
col.setAscending(false);
テーブルビルダーで前述のように列を設定した場合、テーブルは次のように表示されます。
取り消し線機能の設定
JCA テーブルコンポーネントでは、個々の行に "取り消し線を設定" できます。
次のようなコンフィギュレーションによって取り消し線を付ける行を指定できます。
非表示の列に取り消し線を設定
ID "strikeThroughRow" で列 dataStoreOnly を追加します。ブール列に need 属性を指定します。
例:
ColumnConfig strikeThroughColumn = factory.newColumnConfig("strikeThroughRow",
false);
strikeThroughColumn.setDataStoreOnly(true);
strikeThroughColumn.setNeed("someColumnId");
行の値に取り消し線を設定
AbstractBooleanValueDataUtility を拡張する新しいデータユーティリティを列に定義します。
ブールを返すには抽象メソッド getBooleanAttributeValue() のみを定義します。返るブールを指定するカスタムコードを記述できます。ブールはその行に取り消し線を付けるかどうかを示します。
例
ビルダーで定義され JcaTableConfig に追加される列:
ColumnConfig col = factory.newColumnConfig("myCol", false);
この列のデータユーティリティの対応するマッピング:
<Service name="com.ptc.core.components.descriptor.DataUtility">
<Option serviceClass="com.ptc.windchill.enterprise.myModule.dataUtilities
.MyStrikeThroughRowDataUtility" requestor="java.lang.Object"
selector="myCol" cardinality="duplicate"/>
</Service>
新規データユーティリティクラス:
public class MyStrikeThroughRowDataUtility extends AbstractBooleanValueDataUtility {
public boolean getBooleanAttributeValue (String component_id, Object datum, ModelContext mc) throws WTException {
/* some logic to return Boolean value*/
}
}
既存のブール列を取り消し線列として設定
テーブルビルダーでブール値列を取り消し線列として設定できます。このため、この列の値に基づいて、行に取り消し線を付けるかどうかを決定できます。
例:
TableConfig tableconfig = factory.newTableConfig(‘myTable’);
ColumnConfig aBooleanColumn = factory.newColumnConfig("aBooleanColumn", false);
Tableconfig.setRowStrikeThroughColumn(aBooleanColumn);