Custom Table Views (Step 1)
1. Extend one of the out-of-the-box Table View classes:
Table
|
View Class
|
Change Object
|
Affected Objects
|
ChangeTaskAffectedItemsTableViews
VarianceAffectedDataTableViews
AffectedDataTableViews
|
Change Task
Variance
Problem Report and Change Request
|
Resulting Objects
|
ChangeTaskResultingItemsTableViews
|
Change Task
|
2. Override the getSpecialTableColumnsAttrDefinition() method to include the new attributes.
3. Add the column to all views or only to selected views.
◦ To add the column to all views, override the method getDefaultColumns() and insert the column in the appropriate location.
◦ To add a column to selected views override the method getOOTBTableViews() first calling the super.getOOTBTableViews(), find the view(s) needed to be updated and update those views by changing the TableColumnDefinitions.
4. Add an entry for registering a custom table view against a respective table id in a custom service property xconf file as follows:
<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. Propagate the created xconf files as shown below:
For example, if you have created CustomTableView.xconf and CustomTableView-service.properties.xconf files at the location codebase/ext/custom/, then execute the below command to propagate the xconf files:
xconfmanager -i codebase/ext/custom/CustomTableView.xconf -p
xconfmanager -i codebase/ext/custom/CustomTableView-service.properties.xconf -p
For the content of both the files, refer the following:
◦ For the CustomTableView.xconf file:
<?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>
◦ For the CustomTableView-service.properties.xconf file:
<?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>
Sample Code
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;
}
}