基于上下文对象的导航痕迹
此示例将说明如何根据页面的上下文对象创建导航痕迹。此示例的导航痕迹由 FolderedBreadCrumbDelegate 创建。这是一个默认委派,如果可能,即没有其他委派声明处理页面的功能时,系统将调用该委派来创建导航痕迹。这可通过以下代码完成:
@Override
public boolean canHandle(Persistable p, WTContainer container, String url)
throws WTException {
return true;
}
FolderedBreadCrumbDelegate 首先尝试使用任何可能存在的已传入 WTContainer (在本例中为 "container")。如果未传入任何容器,则委派将使用可持续上下文对象 (在本例中为 "p") 来确定对象在系统中的位置。如果可持续对象本身是一个容器,则将其用作痕迹。如果可持续对象不是容器,则尝试获取可持续对象的容器作为痕迹。如果以上所有选项均失败,则只返回一个空痕迹。
public class FolderedBreadCrumbDelegate implements BreadCrumbDelegate {
…
@Override
public AbstractBreadCrumbGenerator getGenerator(Persistable p,
WTContainer container, String url) throws WTException {
return new FolderedCrumbGenerator(p, container);
}
public class FolderedCrumbGenerator extends AbstractBreadCrumbGenerator {
protected Persistable p;
protected WTContainer container;
public FolderedCrumbGenerator(Persistable p, WTContainer container) throws WTException {
init();
// If a container is present, use it. Else if p is itself a
// container, use that. Otherwise get p's
// container.
if (container != null) {
this.container = container;
} else if (p instanceof WTContainer) {
this.container = (WTContainer) p;
} else if (p instanceof WTContained) {
this.container = ((WTContained) p).getContainer();
}
this.p = p;
}
@Override
public JSONArray getCrumbs() {
// Try to add the container crumbs.
try {
addContainerCrumbs(container);
} catch (Exception e) {
addCrumb(getSecuredInfoCrumb());
}
// Try to add the trail of parent folder crumbs.
try {
addFoldersIfNeeded(container, p);
} catch (Exception e) {
addCrumb(getSecuredInfoCrumb());
}
return crumbs;
}
…
访问 haiku 示例的信息页面链接时,您可以看到导航痕迹显示:此特定对象位于 > 下。注意:仅具有足够权限的用户才能查看此对象的信息页面。
示例的位置
要导航至产品中的此示例,请转至 > > > (基于上下文对象)。
|
默认情况下,Windchill UI 中不会启用“组件目录”。有关启用组件目录的说明,请参阅启用自定义实用程序。
|
此示例的操作
无
此示例的操作模型
无
此示例使用的文件
• com\ptc\windchill\enterprise\navigation\breadcrumb\FolderedBreadCrumbDelegate.java
• com\ptc\core\components\components.wt.properties.xconf