高级自定义 > 业务逻辑自定义 > 产品系列管理自定义 > 在具体值选项卡中自定义位置
  
在具体值选项卡中自定义位置
您可以在矩阵编辑器的“具体值”选项卡中添加自定义 Location 字符串格式。您可以覆盖将单个坐标值转换为所需的 Location 字符串格式。自定义 Location 字符串格式会显示在“属性”面板布局和表格或树列中。自定义单个坐标值会显示在“属性”面板布局和表格或树列中。此外,“具体值”选项卡会在值修改时保持其同步。进行自定义时,可实现以下方法:
ExampleGWTLocationCellEditorCustomLocationWidget:这些方法负责在 Location 字符串和各个坐标值之间进行双向转换。
ExampleGWTLocationCellRenderer:此方法负责在属性面板布局和表格列中进行呈现。
ExampleGWTDataUtility:此方法用于指示 occurrenceMatrixLocation 属性的 ExampleGWTLocationCellEditorExampleGWTLocationCellRenderer。在 cat-dataUtilities.properties.xconf 中绑定 ExampleGWTDataUtilityoccurrenceMatrixLocation 属性。
使用自定义将对 "Location" 字符串的粘贴或修改正确转换为各个坐标值。必须启用首选项“允许将位置粘贴到具体值”。使用自定义将对任何坐标值的修改正确转换为 Location 字符串值。验证是否在自定义 Location 字符串格式的上下文中显示与不正确的用户输入相关的任何验证。验证受支持的 "utility" API 是否可用,以便正确转换用于自定义的 "Location" 字符串。通过调用受支持的 API 对 "Location" 字符串进行的任何修改都将使用自定义来转换各个坐标值。通过调用受支持的 API 对单个坐标值进行的任何修改都将使用自定义来转换 "Location" 字符串格式。
* 
用于自定义 Location 字段的解决方案将采用与矩阵编辑器中自定义其他属性相同的方法。
创建自定义 GWT 模块并在 ME 应用程序中编译客户端 GWT 代码 创建自定义 GWT 属性呈现器,以不同于预置呈现器的方式显示属性。在数据实用程序类中指定呈现器 (使用的方法是 setRendere())
针对部件、部件主数据、基线成员链接或使用关系链接定义的任何自定义属性创建自定义 GWT 属性编辑器,以便编辑和保存属性值。
先决条件
要应用自定义,必须了解以下内容:
使用 JAVA 的基本 Web 开发
GWT
自定义标记
HTML 表单
自定义点
实现 ExampleGWTLocationCellEditor
ExampleGWTLocationCellEditor 方法可扩展 CustomTreeCellEditor 和实现 HasWidgets 接口。该方法可在构造函数的 LocationField 中提供 CustomLocationWidget,并处理 specialKeyEvents
实现 CustomLocationWidget
CustomLocationWidget 可扩展已创建和注册了六个单独字段的 LocationPasteWidget,以便同步这些字段的所有必要事件。要覆盖的关键方法有:
protected void createPastePanel()locationPasteField 必须在此处创建并放置在 mainPanel 中。
protected void syncFocusFields():负责在各个字段和 locationPasteField 之间进行同步。每次在 Location 输入和各个字段之间进行同步时,都会执行此方法。例如,在 Location 输入字段中粘贴正确的位置时,即会执行此方法。
protected void syncLocationPasteField():负责在 locationPasteField 和各个字段之间进行同步。每次在各个字段和单个 Location 输入之间需要同步时,都会执行此方法。例如,在修改其中一个 Location 字段时,即会执行此方法。
实现 LocationPasteField
LocationPasteField 是输入字段,可在其中粘贴 Location 字符串。由此可扩展 FocusTextField<String>。要覆盖的关键方法有:
protected boolean validateFormat ():此方法用于验证用户给出的 Location 字符串。每次在 Location 输入发生更改时都会进行验证。
public String[] getErrorMessages():如果 validatateFormat 方法返回 false,则返回向用户发出的消息的数组。
protected boolean isAllowableCharacter(char key):验证是否允许在 locationPasteField 中使用给定字符。如果不允许,则不会将其添加到此字段中。
实现 ExampleGWTLocationCellRenderer
ExampleGWTLocationCellRenderer 必须扩展 CustomCellRenderer<M>。覆盖要自定义的 render 方法。
实现 ExampleGWTDataUtility
需要指示 ExampleGWTLocationCellEditorExampleGWTLocationCellRenderer
绑定 ExampleGWTDataUtility 与 Location 属性
将以下条目添加到 <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 命令传播此更改。
自定义针对用户所提供 Location 的验证
实现 LocationPasteField 中的 protected boolean validateFormat
在同步期间自定义 Location 输入和各个 Location 字段之间的转换
要在同步字段时自定义 Location 输入和各个 Location 字段之间的转换,请实现 CustomLocationWidget 中的 protected void syncFocusFields()
在同步期间自定义各个 Location 字段和 Location 输入之间的转换
要在同步字段时自定义各个 Location 字段和 Location 输入之间的转换,请实现 CustomLocationWidget 中的 protected void syncLocationPasteField ()
在属性面板布局和表树列中自定义 Location 格式
要自定义显示在“属性”面板布局和表格或树列中的 Location 格式,请覆盖 ExampleGWTLocationCellRenderer 中的 render 方法。
示例代码
以下是可用于自定义从 %vX%vY%vZ%aX%aY%aZ%aZ%aY%aZ%vZ%vY%vX 的 Location 格式的示例代码。
ExampleGWTLocationCellEditor.java
CustomLocationWidget.java
ExampleGWTLocationCellRenderer.java
ExampleGWTDataUtility.java