タイプピッカーの設定
タイプアイテムの表示または割当用にタイプピッカーを作成します。
バックグラウンド
タイプピッカーの共通コンポーネントはタイプアイテムの表示または割当に使用します。たとえば、サーチアプリケーションでサーチを実行するオブジェクトのタイプを選択したり、作成アプリケーションで特定のタイプのアイテムを作成したりします。編集アプリケーションやビューアプリケーションの場合にはこれを使用してタイプを表示できます。このコンポーネントは作成、編集、サーチ、ビューのコンテキスト/モードで使用できます。
範囲/適用可能性/前提条件
• タイプピッカーの動作がサイト/組織プリファレンスの visualization 表示 (リストまたはツリー)、デフォルトタイプ、フィルタ基準などによって駆動される場合、関連情報を抽出してコンポーネントに渡すものと見なされます。
• サーチモードを除き、コンポーネントによってアクセス制御ポリシーが適用されます。
• この共通コンポーネントを実装する <マイページ>.jsp ファイルには "/netmarkets/jsp/begin.jspf" または "/netmarkets/jsp/beginPopuf.jspf" ファイルおよび "/netmarkets/jsp/end.jspf" ファイルが含まれると仮定します。
予測される結果
フォーマットに応じて、ドロップダウン、テーブル、またはツリーが表示されます。
• ドロップダウンフォーマットのタイプピッカー
• テーブルフォーマットのタイプピッカー
• ツリーフォーマットのタイプピッカー
ソリューション
タイプアイテムの表示または割当にタイプピッカー共通コンポーネントを使用します。
前提となる知識
このドキュメンテーションについて理解するには、以下のことを理解している必要があります。
• JSP、JavaScript、およびカスタム taglib に関連した基本的な開発
• リソースバンドルファイルカスタマイズの管理
• Windchill xconfmanager の概念
• Windchill タイプ識別子
ソリューションエレメント
エレメント | タイプ | 説明 |
---|
picker.tld | tld | タイプピッカーのタグ定義が含まれている Tag Library Descriptor (TLD) ファイル。 ランタイム場所: <Windchill>\codebase\WEB-INF\tlds\ |
typePickerResource.java | Java | このファイルを使用して、タイプピッカーポップアップのコンテンツをローカライズします。 |
<ユアページ>.jsp | jsp | jsp ファイルが含まれているタイプピッカー共通コンポーネントの実装。 |
wt.properties | properties | ここで 'wt.typepickerexclude' プロパティを定義できます。 ランタイム場所: <Windchill>\codebase\wt.properties |
このソリューションは次の操作にも適用可能です。
1. コンテナにタイプ階層内のすべてのタイプの特定のサブセットが表示されることを指定する。
2. 示されているタイプに、カスタムサブクラスの基準を含むフィルタ基準を指定する。
3. 使用するルート/基本タイプ (OOTB またはカスタム) を指定する。
4. ドロップダウンまたはテーブル/ツリーポップアップメニューとして起動するタイプピッカーを含める。
5. インスタンス化可能でないタイプを選択対象として表示するかどうかを指定する。
手順 - タイプピッカーの共通コンポーネントの設定
1. 必要なコンポーネントを含めます。
"/netmarkets/jsp/begin.jspf" または "/netmarkets/jsp/beginPopuf.jspf" ファイルと "/netmarkets/jsp/end.jspf" ファイルなど、必要なコンポーネントを設定 jsp ファイルに含めます。また、ピッカーのtaglib ディレクティブ (uri=”http://www.ptc.com/windchill/taglib/picker”) を宣言する必要があります。
2. タイプピッカーを設定します。
<%@ taglib uri="http://www.ptc.com/windchill/taglib/picker" prefix="p"%>
<%@ include file="/netmarkets/jsp/util/begin.jspf"%>
----
----
<!-- TYPE PICKER CONFIGURE START -->
< p:typePicker id="typePickerTest" label="Type : " mode="SEARCH" >
<p:pickerParam name="seedType" value="wt.epm.EPMDocument" />
<p:pickerParam name="type" value="BOTH" />
<pr:pickerParam name="displayHierarchy" value="false" />
<p:pickerParam name="showRoot" value="true" />
</p:typePicker>
<!-- TYPE PICKER CONFIGURE END -->
----
----
<%@ include file="/netmarkets/jsp/util/end.jspf"%>
カスタマイズポイント
typePicker タグの属性
パラメータ | デフォルト値 | 有効な値 | 必須 | 説明 |
---|
id | - | 任意の値 | Yes | ページで使用されている複数のタイプピッカーの識別に使用されます。ID の値に "." (ドット) を含めることはできません。 |
label | - | 任意の値 | いいえ | ピッカーラベルとして使用されます。 |
mode | SEARCH | - | いいえ | タイプピッカーが使用されるモードを定義します。これは com.ptc.core.ui.resources.ComponentMode で定義されている値のいずれかでなければなりません。 |
field | - | - | いいえ | ターゲットエレメントに、選択したエレメント属性が設定されます。com.ptc.core.components.rendering.AbstractGuiComponent のサブクラスである必要があります。現在は TextBox および ComboBox をサポートしています。 |
renderContext | - | - | いいえ | オブジェクトは com.ptc.core.components.rendering.RenderingContext のインスタンスである必要があります。指定しない場合、コンポーネントによって作成されます。 |
objectType | typepicker | - | いいえ | これは *actions.xml でピッカー操作が指定されているオブジェクトタイプです。 <Windchill>\codebase\config\actions\EnterpriseUI-actions.xml |
actionName | typePicker | - | いいえ | これは、*actions.xml でピッカー操作に対して指定される操作名です。 |
pickerParam タグの属性
パラメータ | デフォルト値 | 有効な値 | 必須 | 説明 |
---|
adminDomainRef | | - | いいえ | 管理ドメイン参照の文字列表現 (wt.admin.AdminDomainRef)。アクセス制御権限をチェックするために使用されます。 |
containerRef | | - | いいえ | コンテナ参照の文字列表現 ((wt.inf.container.WTContainerRef))。このコンテナに指定されたタイプの入力に使用されます。 adminDomainRef が指定されている場合、ユーザーがこれを入力した場合でも containerRef はここから計算されます。 adminDomainRef が指定されていない場合、入力された containerRef にはデフォルトの AdminDomain が使用され、containerRef が指定されていない場合、デフォルトの WTContainer (Exchange コンテナ) が使用されます。 |
lifeCycleState | | - | いいえ | 状態の文字列表現 (wt.lifecycle.State)。アクセス制御権限のチェック中に使用されます。 |
seedType | - | - | いいえ | Windchill タイプ識別子の有効な論理表現または外部表現を受け入れます。複数の値がサポートされ、作成/編集/ビューモードではこれは必須です。 |
filterType | - | - | いいえ | Windchill タイプ識別子の有効な論理表現または外部表現を受け入れます。複数値がサポートされます。 タイプおよびその子孫は、ピッカーエレメントからフィルタされます。 |
defaultType | - | - | いいえ | Windchill タイプ識別子の有効な論理表現または外部表現を受け入れます。単一選択の場合は、1 つの値のみです。複数の値がサポートされ、編集/ビューモードではこれは必須です。空白や "Select a Type" などの値もサポートできます。 |
appOption | - | - | いいえ | 区切り記号 "$" で区切られたローカライズされた表示名および値。複数の値がサポートされています。 |
format | dropdown | - | いいえ | 値は、com.ptc.windchill.enterprise.picker.type.server.TypePickerFormat で定義される列挙定数値のいずれかでなければなりません。使用可能な値は dropdown、table、tree です。 |
select | single | - | いいえ | 使用可能な値は single および multi です。 |
type | BOTH | - | いいえ | 値は、com.ptc.windchill.enterprise.picker.type.server.TypePickerTypes で定義される列挙定数値のいずれかでなければなりません。可能な値は ROOT_TYPES (seedTypes のみを表示)、SOFT_TYPES (ソフトタイプのみを表示)、BOTH (モデル化されたタイプとソフトタイプを表示) です。 |
displayHierarchy | false | false / true | いいえ | ブール値の文字列表現を受け入れます。これはピッカーエレメントが階層表示されるドロップダウンフォーマットでのみ有効です。 |
showInstantiable | false | false / true | いいえ | ブール値の文字列表現を受け入れます。true の場合、インスタンス化のみが表示されます。false の場合、インスタンス化と非インスタンス化の両方が表示されます。 |
showRoot | true | false / true | いいえ | ブール値の文字列表現を受け入れます。true の場合、I レベルのエレメントとして seedTypes を表示します。 |
componentId | Foundation.allSearch | - | いいえ | componentId は 'APP_ID+.+COMPONENT_NAME' として定義されます。 有効な APP_ID は、ProjectLink、Foundation、または PDMLink です。これは "サーチ" モードで <Windchill>\codebase\com\ptc\windchill\enterprise\search\server\SearchableTypes.properties から I レベルのタイプをサーチするときに使用されます。Null を渡すとデフォルトで Default になります。 |
pickerCallBack | typePickerPopulateTargetElement | - | いいえ | 選択したエレメントの属性をターゲットエレメントに設定するために呼び出される javaScript 関数。これはドロップダウンには適用されません。 |
pickedDataFetcher | netmarkets/jsp/typepicker/typePicker_dataFetcher.jsp | - | いいえ | AJAX 呼び出しで選択したエレメントの属性をフェッチするために呼び出される jsp ファイル。このファイルは <Windchill>/codebase に存在し、値として相対パスを指定します。これはドロップダウンには適用されません。 |
filterByInterface | - | 有効な Windchill インタフェース | いいえ | 有効な Windchill インタフェースの文字列表現。これは単一値パラメータです (filterByInterface= "wt.index.Indexable" など)。 filterByInterface パラメータが設定されている場合、インタフェースを実装する seedType のサブタイプのみがタイプ階層に表示される必要があります。ここでは、タイプピッカーは、インデックス可能なインタフェースを実装する seedType のサブタイプのみを表示します。 seedType は、このパラメータが設定されていれば、インスタンス化できない場合でも常に選択できます。 fliterByInterface が ShowInstantiable=true とともに設定されている場合、タイプピッカーではインタフェースを実装するインスタンス化可能なタイプしか使用できません。 |
additionalTypes | - | 有効な Windchill 抽象クラス | いいえ | 有効な Windchill 抽象クラスの文字列表現。これは複数値パラメータです (additionalTypes= "wt.meeting.Meeting, wt.org.WTPrincipal" など)。 このパラメータが指定する抽象クラスはすべてタイプピッカーで使用できます。ただし、これらは seedType のサブクラスであり、filterByInterface パラメータが指定するインタフェースを実装する必要があります。 このパラメータは filterByParameter に依存しています。タイプピッカーフレームワークは、filterByInterface が設定されている場合にのみ、このパラメータを考慮します。 |
showInternalNameAsTooltip | false | false / true | いいえ | ブール値の文字列表現を受け入れます。 true の場合はツールヒントをタイプの内部名として表示し、そうでない場合はタイプの名前を表示します。 |
ドロップダウンまたはテーブル/ツリーポップアップメニューとして起動するタイプピッカーの設定
• "ドロップダウン" フォーマットのタイプピッカー
< p:typePicker id="typePickerTest" label="Type : " mode="SEARCH" >
<p:pickerParam name="format" value="dropdown" />
</p:typePicker>
• "テーブル" フォーマットのタイプピッカー
< p:typePicker id="typePickerTest" label="Type : " mode="SEARCH" >
<p:pickerParam name="format" value="table" />
</pr:typePicker>
• "ツリー" フォーマットのタイプピッカー
< p:typePicker id="typePickerTest" label="Type : " mode="SEARCH" >
<p:pickerParam name="format" value="tree" />
</p:typePicker>
フィルタ基準を使用したタイプピッカーの設定
• "filterType" パラメータを使用したフィルタ
< p:typePicker id="typePickerTest" label="Type : " mode="SEARCH" >
<p:pickerParam name="seedType" value="wt.doc.WTDocument" />
<p:pickerParam name="filterType" value="com.ptc.ReferenceDocument" />
</p:typePicker>
• wt.properties で定義されているプロパティを使用したフィルタ
プロパティは <Windchill>/codebase/wt.properties.xconf で定義され、xconfmanager を介して wt.properties ファイルに反映されます。
プロパティ | 説明 | 例 |
---|
wt.typepickerexcludedelimiter | wt.typepickerexcludedelimiter=<delimiter string> これは 'wt.typepickerexclude' プロパティに使用する区切り記号を定義し、デフォルト値は ',' です。 | wt.typepickerexcludedelimiter=; |
wt.typepickerexclude/<mode>/<root type> | wt.typepickerexclude/<mode>/<root type>=<タイプ識別子の外部文字列表現の区切りリスト> • ‘mode’は、com.ptc.core.ui.resources.ComponentMode で定義される値のいずれかでなければいけません。 • ‘mode’識別子を指定しない場合、プロパティはすべてのモードに適していると見なされます。 • 複数の値は wt.typepickerexcludedelimiter プロパティによって区切ります。 • 指定された seedType とルートタイプが一致する場合、リストされているタイプとそのすべてのモデル化されたサブタイプおよびソフトタイプがタイプピッカーから除外されます。 | wt.typepickerexclude/CREATE/wt.doc.WTDocument=WCTYPE|wt.doc.WTDocument|org.r_and_d.Agenda wt.typepickerexclude/wt.doc.WTDocument=WCTYPE|wt.doc.WTDocument|org.r_and_d. Meeting |
wt.typepickerexclude/<mode>/<container type> | wt.typepickerexclude/<mode>/<container type>=<delimited list of external string representation of type identifier> • ‘mode’は、com.ptc.core.ui.resources.ComponentMode で定義される値のいずれかでなければいけません。 • ‘mode’識別子を指定しない場合、プロパティはすべてのモードに適していると見なされます。 • 複数の値は wt.typepickerexcludedelimiter プロパティによって区切ります。 • 指定された containerRef とコンテナタイプが一致する場合、リストされているタイプとそのすべてのモデル化されたサブタイプおよびソフトタイプがタイプピッカーから除外されます。 | wt.typepickerexclude/CREATE/wt.pdmlink.PDMLinkProduct =WCTYPE|wt.doc.WTDocument|org.r_and_d.Agenda wt.typepickerexclude/wt.pdmlink.PDMLinkProduct =WCTYPE|wt.doc.WTDocument|org.r_and_d.General |
プロパティから抽出された除外タイプが集約されます。前述の例の結果では、rootType が WTDocument、コンテナが PDMLinkProduct、操作が CREATE の場合、'Agenda'、'Plan'、'General' とそのタブタイプはフィルタによって除外されます。その他すべてのオペレーションでは、'Meeting' および 'General' とそのサブタイプのみがフィルタによって除外されます。
ルート/基本タイプを使用したタイプピッカーの設定
< p:typePicker id="typePickerTest" label="Type : " mode="CREATE" >
<p:pickerParam name="seedType" value="wt.part.WTPart" />
</picker:typePicker>
インスタンス化を使用した/使用しないタイプピッカーの設定
< p:typePicker id="typePickerTest" label="Type : " mode="SEARCH" >
<p:pickerParam name="seedType" value="wt.part.WTPart" />
<p:pickerParam name="showInstantiable" value="true" />
</p:typePicker>
ピッカーコールバック関数を使用したタイプピッカーの設定
< p:typePicker id="typePickerTest" label="Type : " mode="SEARCH" >
<p:pickerParam name="seedType" value="wt.part.WTPart" />
<p:pickerParam name="pickerCallBack" value="myCallBack" />
</p:typePicker>
pickerCallBack 作成時の注意事項
• この javaScript 関数は、選択した要素の属性をターゲットエレメントに設定するために呼び出されます。
• ユーザーが指定した関数が、タイプピッカーが挿入されているページで使用可能でなければなりません。
• pickerCallBack 関数の署名は "call_back_function(JSON_Object, Picker_Id, Field_Id)" です。
例
function mycallBack(JSONObjects, pickerId, targetId) {
var elements = JSONObjects.pickedObjects;
var targetElement = document.getElementById(targetId);
//update Target Element
if ((targetElement.type == "text") || (targetElement.type ==
"hidden")) {
--------
}else {
--------
}
//update hidden field
var valueElement = document.getElementById(pickerId);
-----
return true;
}
ピッカーデータフェッチャを使用したタイプピッカーの設定
< picker:typePicker id="typePickerTest" label="Type : "
mode="SEARCH" >
<picker:pickerParam name="seedType"
value="wt.part.WTPart" />
<picker:pickerParam name="pickedDataFetcher"
value="myfolder/myDataFetcher.jsp" />
</picker:typePicker>
pickedDataFetcher 作成時の注意事項
• pickedDataFetcher のレスポンスには、タイプピッカーと同じ ID の <DIV> タグが含まれている必要があります。<DIV> タグのコンテンツが抽出および評価されて JSON オブジェクトが作成されます。一般的なレスポンスの例
<DIV id=”Type_Picker_Id” >
{"pickedObjects":
[
{"type" : "Part" , "theType" : "wt.part.WTPart "},
{"type" : "Document" , "theType" : "wt.doc.WTDocument”}
]
}
</DIV>
タイプピッカーからの選択/設定した情報へのアクセス
• ターゲットエレメントに GUIComponent (フィールドから) および RenderingContext (renderContext から) を指定し、
◦ GUIComponent Id が設定されていない場合、タイプピッカー CC によって GUIComponent Id がタイプピッカー ID に設定されます。
◦ RenderingContext の ContextString が設定されていない場合、タイプピッカーではこれは設定されません。
• ターゲットエレメントに GUIComponent を指定し、RenderingContext は指定しない場合
◦ タイプピッカーではデフォルトの RenderingContext が使用され、その ContextString は設定されません。
• ターゲットエレメントに GUIComponent と RenderingContext を指定しない場合
◦ タイプピッカーによって適切な GUIComponent が作成され、タイプピッカーの ID がこれに設定されます。
ドロップダウンフォーマット
• (ページをサブミットした後で) ページ内の選択した値にアクセスする場合
HTML_NAME_OF_TARGET_ELEMENT = RenderingContext.getContextString
()+"___"
+ GUIComponent.getId() + GuiComponentUtil.COMBO_BOX;
• コマンド内の選択した値にアクセスする場合、NmCommandBean を介してその値を取得できます。
HashMap comboBox_hmap = commandBean.getChangedComboBox();
Object comboBox = comboBox_hmap.get(GUIComponent_Id);
テーブル/ツリーポップアップフォーマット
• ページ内のターゲットエレメント (テキストボックスまたはコンボボックス) にアクセスする場合
◦ テキストボックス
HTML_NAME_OF_TARGET_ELEMENT = RenderingContext.getContextString
()+"___"
+ GUIComponent.getId() + GuiComponentUtil.TEXT_BOX;
◦ コンボボックス
HTML_NAME_OF_TARGET_ELEMENT = RenderingContext.getContextString
()+"___"
+ GUIComponent.getId() + GuiComponentUtil.COMBO_BOX;
• 選択した値は区切り記号 (",") で区切ってページ内の "input" 非表示エレメントに保存されます。
• コマンド内の選択した値にアクセスする場合、NmCommandBean を介してその値を取得できます。
String selected_value = cb.getTextParameter(Type_Picker_Id);