自定义表格视图 (步骤 1)
1. 扩展任一预设表格视图类:
表
|
视图类
|
更改对象
|
受影响对象
|
ChangeTaskAffectedItemsTableViews
VarianceAffectedDataTableViews
AffectedDataTableViews
|
更改任务
超差
问题报告和更改请求
|
产生的对象
|
ChangeTaskResultingItemsTableViews
|
更改任务
|
2. 覆盖 getSpecialTableColumnsAttrDefinition() 方法以包括新属性。
3. 将列添加到所有视图中,或仅添至选定视图。
◦ 要将列添加到所有视图,覆盖方法 getDefaultColumns() 并将列插入到适当的位置。
◦ 要将列添加到选定视图,首先覆盖方法 getOOTBTableViews() 以调用 super.getOOTBTableViews(),查找需要更新的视图,并通过更改 TableColumnDefinitions 来更新这些视图。
4. 在自定义服务特性 xconf 文件中添加一个条目,以根据相应表格 id 注册自定义表格视图,如下所示:
<Service context="default"
name="com.ptc.core.htmlcomp.tableview.ConfigurableTable">
<Option
serviceClass="tableViews.custom.DistributingChangeTaskAffectedItemsTableViews"
selector="changeTask_affectedItems_table"
requestor="java.lang.Object"/>
</Service>
5. 传播已创建的 xconf 文件,如下所示:
例如,如果已在 codebase/ext/custom/ 位置创建了 CustomTableView.xconf 和 CustomTableView-service.properties.xconf 文件,则执行以下命令以传播这些 xconf 文件:
xconfmanager -i codebase/ext/custom/CustomTableView.xconf -p
xconfmanager -i codebase/ext/custom/CustomTableView-service.properties.xconf -p
有关这两个文件的内容,请参阅以下各项:
◦ 对于 CustomTableView.xconf 文件:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE Configuration SYSTEM "xconf.dtd">
<Configuration targetFile="codebase/wt.properties">
<!-- Ensure that the file ext/custom/CustomTableView-service.properties.xconf
is appended to the list of custom property files. -->
<Property default="ext/custom/CustomTableView-service.properties.xconf"
name="wt.services.applicationcontext.WTServiceProviderFromProperties.
customPropertyFiles"/>
</Configuration>
◦ 对于 CustomTableView-service.properties.xconf 文件:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE Configuration SYSTEM "xconf.dtd">
<Configuration targetFile="codebase/service.properties">
<Service context="default"
name="com.ptc.core.htmlcomp.tableview.ConfigurableTable">
<Option
serviceClass="tableViews.custom.DistributingChangeTaskAffectedItemsTableViews"
selector="changeTask_affectedItems_table"
requestor="java.lang.Object"/>
</Service>
</Configuration>
示例代码
public class DistributingResultingItemsTableViews extends
ChangeTaskResultingItemsTableViews {
/**
* The distributionList will only be added to the Parts and All views
immediately after
* the name column.
*/
@SuppressWarnings("unchecked")
@Override
public List getOOTBTableViews(String tableId, Locale locale)
throws WTException
{
List<TableViewDescriptor> result =
super.getOOTBTableViews(tableId, locale);
for(TableViewDescriptor descriptor: result) {
if( descriptor.getName().equals(PARTS_VIEW) ||
descriptor.getName()
.equals(ALL_VIEW)) {
Vector<ableColumnDefinition> columns =
descriptor.getTableColumnDefinition();
for(int c = 0; c < columns.size(); c++) {
if( "name".equals(columns.get(c).getName())) {
String key = DistributingChangeRecordConstants.
DISTRIBUTION_ATTRIBUTE;
columns.add(c++,TableColumnDefinition.
newTableColumnDefinition
(key,isColumnLocked(key)));
break;
}
}
}
}
return result;
}
@Override
@SuppressWarnings("unchecked")
public List<?> getSpecialTableColumnsAttrDefinition(Locale locale) {
List<Attribute.TextAttribute> results = (List<TextAttribute>)
super.getSpecialTableColumnsAttrDefinition(locale);
results.add(new Attribute.TextAttribute
(DistributingChangeRecordConstants.
DISTRIBUTION_ATTRIBUTE,
"Distribution List" /*Should be localized label*/, locale));
return results;
}
}