建立自訂服務生失效組態面板
針對「服務生失效」物件上的特定屬性,您可以自訂位於「新增/編輯服務生失效」對話方塊中的欄位以及「服務生失效」篩選器以指派其值。
本主題描述如何使用如下所示的欄位建構組態面板。面板就是位於「類型」與「前後關聯」欄位下方的區域。
請注意下列需求:
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 項目,分別用來保存「序號」欄位與「日期」欄位。
• 「序號」欄位的 HorizontalPanel 項目中包含 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 布林內容,如果欄位未通過驗證,其可用於啟用/禁用表單上的按鈕。