Hello,
I am fairly new to VMWare plugin development. And am quite a rookie.
I am facing a problem in plugin. I have created Custom views with the following objects, lets call them
A, B, C & D
Every A has a list of B's (B's appear on A's related items tab)
Every A has a list of C's (C's appear on A's related items tab)
Every A has a list of D's (D's appear on A's related items tab)
The tabs appear correctly on the A work space, but when I go to B, C or D workspaces, the tabs disapper I just see a grey space, where the tabs supposed to be present.
Also, I if I browse on the left navigation panel, the flow works correctly. If I browse using the double-click on the table items in the right, the Left Navigation disappears for B, C and D.
My plugin XML is attached
<?xml version="1.0" encoding="UTF-8"?>
<!--
vmwarepluginui plugin metadata.
The <plugin> tag doesn't contain any moduleUri property because it is an HTML plugin.
-->
<plugin id="com.mycompany.vmwarePluginui.vmwarepluginui"
defaultBundle="com_mycompany_vmwarePluginui">
<resources>
<resource locale="{locale}">
<module uri="locales/vmwarePlugin-ui-{locale}.swf"/>
</resource>
</resources>
<resources>
<resource locale="{locale}">
<module uri="locales/com_mycompany_vmwarePluginui-{locale}.properties"/>
</resource>
</resources>
<!-- Home view shortcut -->
<extension id="com.mycompany.vmwarePluginui.homeShortcut">
<extendedPoint>vise.home.shortcuts</extendedPoint>
<object>
<name>#{app.name}</name>
<icon>#{application.icon}</icon>
<categoryUid>vsphere.core.controlcenter.monitoringCategory</categoryUid>
<targetViewUid>com.vmware.samples.A.summary</targetViewUid>
</object>
</extension>
<!--<extension id="com.mycompany.vmwarePluginui.BPointer">
<extendedPoint>vise.navigator.nodespecs</extendedPoint>
<object>
<title>B Detail</title>
<parentUid>com.vmware.samples.A.summary</parentUid>
<navigationTargetuid>com_mycompany_vmwarePluginui_B.summary</navigationTargetuid>
<icon>#{application.icon}</icon>
</object>
</extension> -->
<!-- Main view -->
<extension id="com.mycompany.vmwarePluginui.BDetails">
<extendedPoint>vise.global.views</extendedPoint>
<object>
<name>#{app.name}</name>
<componentClass className="com.vmware.vsphere.client.htmlbridge.HtmlView">
<object>
<root>
<url>/vsphere-client/vmwarepluginui/resources/AXListing1.html</url>
</root>
</object>
</componentClass>
</object>
</extension>
<extension id="com.mycompany.vmwarePluginui.main">
<extendedPoint>vise.global.views</extendedPoint>
<object>
<name>#{app.name}</name>
<componentClass className="com.vmware.vsphere.client.htmlbridge.HtmlView">
<object>
<root>
<url>/vsphere-client/vmwarepluginui/resources/AXListing1.html</url>
</root>
</object>
</componentClass>
</object>
</extension>
<!-- Host monitor sample view -->
<extension id="com.vmware.samples.A.summary">
<extendedPoint>com_mycompany_vmwarePluginui_A.summaryViews</extendedPoint>
<object>
<name>#{monitorTab.label}</name>
<componentClass className="com.vmware.vsphere.client.htmlbridge.HtmlView">
<object>
<root>
<url>/vsphere-client/vmwarepluginui/resources/ADetailsGrid.html</url>
</root>
</object>
</componentClass>
</object>
</extension>
<extension id="com.vmware.samples.B.summary">
<extendedPoint>com_mycompany_vmwarePluginui_B.summaryViews</extendedPoint>
<object>
<name>B Summary</name>
<componentClass className="com.vmware.vsphere.client.htmlbridge.HtmlView">
<object>
<root>
<url>/vsphere-client/vmwarepluginui/resources/BDetails.html</url>
</root>
</object>
</componentClass>
</object>
</extension>
<extension id="com.vmware.samples.C.summary">
<extendedPoint>com_mycompany_vmwarePluginui_C.summaryViews</extendedPoint>
<object>
<name>B Summary</name>
<componentClass className="com.vmware.vsphere.client.htmlbridge.HtmlView">
<object>
<root>
<url>/vsphere-client/vmwarepluginui/resources/CDetails.html</url>
<dialogTitle>WSSDK Summary Sample</dialogTitle>
<dialogSize>440,400</dialogSize>
</root>
</object>
</componentClass>
</object>
</extension>
<extension id="com.vmware.samples.D.summary">
<extendedPoint>com_mycompany_vmwarePluginui_D.summaryViews</extendedPoint>
<object>
<name>B Summary</name>
<componentClass className="com.vmware.vsphere.client.htmlbridge.HtmlView">
<object>
<root>
<url>/vsphere-client/vmwarepluginui/resources/DDetails.html</url>
</root>
</object>
</componentClass>
</object>
</extension>
<extension id="com.mycompany.vmwarePluginui.NavigatorItem">
<extendedPoint>vise.navigator.nodespecs</extendedPoint>
<object>
<title>Xoriant Plugin</title>
<icon>#{navigator.icon}</icon>
<parentUid>vsphere.core.navigator.solutionsCategory</parentUid>
<navigationTargetuid>com.vmware.samples.A.summary</navigationTargetuid>
</object>
</extension>
<templateInstance id="com.vmware.samples.lists.allAs">
<templateId>vsphere.core.inventorylist.objectCollectionTemplate</templateId>
<variable name="namespace" value="com_mycompany_vmwarePluginui_A"/>
<variable name="title" value="X SubA"/>
<variable name="icon" value="#{navigator.icon}"/>
<variable name="objectType" value="X:A"/>
<variable name="listViewId" value="com_mycompany_vmwarePluginui_A.list"/>
<variable name="parentUid" value="com.mycompany.vmwarePluginui.NavigatorItem"/>
</templateInstance>
<templateInstance id="com_mycompany_vmwarePluginui.viewTemplateInstance">
<templateId>vsphere.core.inventory.objectViewTemplate</templateId>
<variable name="namespace" value="com_mycompany_vmwarePluginui_A"/>
<variable name="objectType" value="X:A"/>
<!-- remove the Related Objects tab since it is empty -->
<relationsViewId>com_mycompany_vmwarePluginui.related</relationsViewId>
</templateInstance>
<extension id="com.vmware.samples.A.list.sampleColumns">
<!-- This extension point is created by objectViewTemplate above -->
<extendedPoint>com_mycompany_vmwarePluginui_A.list.columns</extendedPoint>
<object>
<!-- XML representation of com.vmware.ui.lists.ColumnSetContainer -->
<items>
<!-- Chassis ID column -->
<com.vmware.ui.lists.ColumnContainer>
<uid>com_mycompany_vmwarePluginui_A.column.id</uid>
<dataInfo>
<com.vmware.ui.lists.ColumnDataSourceInfo>
<headerText>ID</headerText>
<requestedProperties>
<String>id</String>
</requestedProperties>
<exportProperty>id</exportProperty>
</com.vmware.ui.lists.ColumnDataSourceInfo>
</dataInfo>
</com.vmware.ui.lists.ColumnContainer>
<!-- Chassis ID column -->
<com.vmware.ui.lists.ColumnContainer>
<uid>com_mycompany_vmwarePluginui_A.column.gid</uid>
<dataInfo>
<com.vmware.ui.lists.ColumnDataSourceInfo>
<headerText>Global Resource ID</headerText>
<requestedProperties>
<String>globalResourceId</String>
</requestedProperties>
<exportProperty>globalResourceId</exportProperty>
<sortProperty>globalResourceId</sortProperty>
</com.vmware.ui.lists.ColumnDataSourceInfo>
</dataInfo>
</com.vmware.ui.lists.ColumnContainer>
<!-- Chassis name column -->
<com.vmware.ui.lists.ColumnContainer>
<uid>com_mycompany_vmwarePluginui_A.column.name</uid>
<dataInfo>
<com.vmware.ui.lists.ColumnDataSourceInfo>
<!-- Column header -->
<headerText>Name</headerText>
<!-- Object property whose text value will be displayed (array of 1 element) -->
<requestedProperties>
<String>name</String>
</requestedProperties>
<!-- Use sortProperty to allow column to be sorted with header click -->
<sortProperty>name</sortProperty>
<!-- Use exportProperty to allow column data to be exported -->
<exportProperty>name</exportProperty>
</com.vmware.ui.lists.ColumnDataSourceInfo>
</dataInfo>
</com.vmware.ui.lists.ColumnContainer>
</items>
</object>
</extension>
<templateInstance id="com.vmware.samples.lists.allBs">
<templateId>vsphere.core.inventorylist.objectCollectionTemplate</templateId>
<variable name="namespace" value="com_mycompany_vmwarePluginui_B"/>
<variable name="title" value="X B"/>
<variable name="icon" value="#{navigator.icon}"/>
<variable name="objectType" value="X:B"/>
<variable name="listViewId" value="com_mycompany_vmwarePluginui_B.list"/>
<variable name="parentUid" value="com.vmware.samples.A.list.sampleColumns"/>
</templateInstance>
<templateInstance id="com_mycompany_vmwarePluginui.viewTemplateInstanceVol">
<templateId>vsphere.core.inventory.objectViewTemplate</templateId>
<variable name="namespace" value="com_mycompany_vmwarePluginui_B"/>
<variable name="objectType" value="X:B"/>
<!-- remove the Related Objects tab since it is empty -->
<relationsViewId>com_mycompany_vmwarePluginui.related</relationsViewId>
</templateInstance>
<extension id="com.vmware.samples.B.list.related">
<!-- This extension point is created by objectViewTemplate above -->
<extendedPoint>com_mycompany_vmwarePluginui_B.list.columns</extendedPoint>
<object>
<!-- XML representation of com.vmware.ui.lists.ColumnSetContainer -->
<items>
<!-- Chassis ID column -->
<com.vmware.ui.lists.ColumnContainer>
<uid>com_mycompany_vmwarePluginui_B.column.id</uid>
<dataInfo>
<com.vmware.ui.lists.ColumnDataSourceInfo>
<headerText>ID</headerText>
<requestedProperties>
<String>id</String>
</requestedProperties>
<exportProperty>id</exportProperty>
</com.vmware.ui.lists.ColumnDataSourceInfo>
</dataInfo>
</com.vmware.ui.lists.ColumnContainer>
<!-- Chassis ID column -->
<com.vmware.ui.lists.ColumnContainer>
<uid>com_mycompany_vmwarePluginui_B.column.gid</uid>
<dataInfo>
<com.vmware.ui.lists.ColumnDataSourceInfo>
<headerText>Global Resource ID</headerText>
<requestedProperties>
<String>globalResourceId</String>
</requestedProperties>
<exportProperty>globalResourceId</exportProperty>
<sortProperty>globalResourceId</sortProperty>
</com.vmware.ui.lists.ColumnDataSourceInfo>
</dataInfo>
</com.vmware.ui.lists.ColumnContainer>
<!-- Chassis name column -->
<com.vmware.ui.lists.ColumnContainer>
<uid>com_mycompany_vmwarePluginui_B.column.name</uid>
<dataInfo>
<com.vmware.ui.lists.ColumnDataSourceInfo>
<!-- Column header -->
<headerText>Name</headerText>
<!-- Object property whose text value will be displayed (array of 1 element) -->
<requestedProperties>
<String>name</String>
</requestedProperties>
<!-- Use sortProperty to allow column to be sorted with header click -->
<sortProperty>name</sortProperty>
<!-- Use exportProperty to allow column data to be exported -->
<exportProperty>name</exportProperty>
</com.vmware.ui.lists.ColumnDataSourceInfo>
</dataInfo>
</com.vmware.ui.lists.ColumnContainer>
<com.vmware.ui.lists.ColumnContainer>
<uid>com_mycompany_vmwarePluginui_B.type</uid>
<dataInfo>
<com.vmware.ui.lists.ColumnDataSourceInfo>
<!-- Column header -->
<headerText>Type</headerText>
<!-- Object property whose text value will be displayed (array of 1 element) -->
<requestedProperties>
<String>BType</String>
</requestedProperties>
<!-- Use sortProperty to allow column to be sorted with header click -->
<sortProperty>BType</sortProperty>
<!-- Use exportProperty to allow column data to be exported -->
<exportProperty>BType</exportProperty>
</com.vmware.ui.lists.ColumnDataSourceInfo>
</dataInfo>
</com.vmware.ui.lists.ColumnContainer>
</items>
</object>
</extension>
<templateInstance id="com.vmware.samples.lists.allCs">
<templateId>vsphere.core.inventorylist.objectCollectionTemplate</templateId>
<variable name="namespace" value="com_mycompany_vmwarePluginui_C"/>
<variable name="title" value="X C"/>
<variable name="icon" value="#{navigator.icon}"/>
<variable name="objectType" value="X:C"/>
<variable name="listViewId" value="com_mycompany_vmwarePluginui_C.list"/>
<variable name="parentUid" value="com.vmware.samples.A.list.sampleColumns"/>
</templateInstance>
<templateInstance id="com_mycompany_vmwarePluginui.viewTemplateInstanceCs">
<templateId>vsphere.core.inventory.objectViewTemplate</templateId>
<variable name="namespace" value="com_mycompany_vmwarePluginui_C"/>
<variable name="objectType" value="X:C"/>
<!-- remove the Related Objects tab since it is empty-->
<excludedExtension>com_mycompany_vmwarePluginui.related</excludedExtension>
</templateInstance>
<extension id="com.vmware.samples.C.list.related">
<!-- This extension point is created by objectViewTemplate above -->
<extendedPoint>com_mycompany_vmwarePluginui_C.list.columns</extendedPoint>
<object>
<!-- XML representation of com.vmware.ui.lists.ColumnSetContainer -->
<items>
<!-- Chassis ID column -->
<com.vmware.ui.lists.ColumnContainer>
<uid>com_mycompany_vmwarePluginui_C.column.id</uid>
<dataInfo>
<com.vmware.ui.lists.ColumnDataSourceInfo>
<headerText>ID</headerText>
<requestedProperties>
<String>id</String>
</requestedProperties>
<exportProperty>id</exportProperty>
</com.vmware.ui.lists.ColumnDataSourceInfo>
</dataInfo>
</com.vmware.ui.lists.ColumnContainer>
<!-- Chassis ID column -->
<com.vmware.ui.lists.ColumnContainer>
<uid>com_mycompany_vmwarePluginui_C.column.gid</uid>
<dataInfo>
<com.vmware.ui.lists.ColumnDataSourceInfo>
<headerText>Global Resource ID</headerText>
<requestedProperties>
<String>globalResourceId</String>
</requestedProperties>
<exportProperty>globalResourceId</exportProperty>
<sortProperty>globalResourceId</sortProperty>
</com.vmware.ui.lists.ColumnDataSourceInfo>
</dataInfo>
</com.vmware.ui.lists.ColumnContainer>
<!-- Chassis name column -->
<com.vmware.ui.lists.ColumnContainer>
<uid>com_mycompany_vmwarePluginui_C.column.name</uid>
<dataInfo>
<com.vmware.ui.lists.ColumnDataSourceInfo>
<!-- Column header -->
<headerText>Name</headerText>
<!-- Object property whose text value will be displayed (array of 1 element) -->
<requestedProperties>
<String>name</String>
</requestedProperties>
<!-- Use sortProperty to allow column to be sorted with header click -->
<sortProperty>name</sortProperty>
<!-- Use exportProperty to allow column data to be exported -->
<exportProperty>name</exportProperty>
</com.vmware.ui.lists.ColumnDataSourceInfo>
</dataInfo>
</com.vmware.ui.lists.ColumnContainer>
</items>
</object>
</extension>
<templateInstance id="com.vmware.samples.lists.allDs">
<templateId>vsphere.core.inventorylist.objectCollectionTemplate</templateId>
<variable name="namespace" value="com_mycompany_vmwarePluginui_D"/>
<variable name="title" value="Ds"/>
<variable name="icon" value="#{navigator.icon}"/>
<variable name="objectType" value="X:D"/>
<variable name="listViewId" value="com_mycompany_vmwarePluginui_D.list"/>
<variable name="parentUid" value="com.vmware.samples.A.list.sampleColumns"/>
</templateInstance>
<templateInstance id="com_mycompany_vmwarePluginui.viewTemplateInstanceDs">
<templateId>vsphere.core.inventory.objectViewTemplate</templateId>
<variable name="namespace" value="com_mycompany_vmwarePluginui_D"/>
<variable name="objectType" value="X:D"/>
<!-- remove the Related Objects tab since it is empty-->
<excludedExtension>com_mycompany_vmwarePluginui.related</excludedExtension>
</templateInstance>
<extension id="com.vmware.samples.D.list.related">
<!-- This extension point is created by objectViewTemplate above -->
<extendedPoint>com_mycompany_vmwarePluginui_D.list.columns</extendedPoint>
<object>
<!-- XML representation of com.vmware.ui.lists.ColumnSetContainer -->
<items>
<!-- Chassis ID column -->
<com.vmware.ui.lists.ColumnContainer>
<uid>com_mycompany_vmwarePluginui_D.column.id</uid>
<dataInfo>
<com.vmware.ui.lists.ColumnDataSourceInfo>
<headerText>ID</headerText>
<requestedProperties>
<String>id</String>
</requestedProperties>
<exportProperty>id</exportProperty>
</com.vmware.ui.lists.ColumnDataSourceInfo>
</dataInfo>
</com.vmware.ui.lists.ColumnContainer>
<com.vmware.ui.lists.ColumnContainer>
<uid>com_mycompany_vmwarePluginui_D.column.name</uid>
<dataInfo>
<com.vmware.ui.lists.ColumnDataSourceInfo>
<headerText>Name</headerText>
<requestedProperties>
<String>instanceId</String>
</requestedProperties>
<exportProperty>name</exportProperty>
<sortProperty>name</sortProperty>
</com.vmware.ui.lists.ColumnDataSourceInfo>
</dataInfo>
</com.vmware.ui.lists.ColumnContainer>
<!-- Chassis ID column -->
<com.vmware.ui.lists.ColumnContainer>
<uid>com_mycompany_vmwarePluginui_D.column.gid</uid>
<dataInfo>
<com.vmware.ui.lists.ColumnDataSourceInfo>
<headerText>Global Resource ID</headerText>
<requestedProperties>
<String>globalResourceId</String>
</requestedProperties>
<exportProperty>globalResourceId</exportProperty>
<sortProperty>globalResourceId</sortProperty>
</com.vmware.ui.lists.ColumnDataSourceInfo>
</dataInfo>
</com.vmware.ui.lists.ColumnContainer>
</items>
</object>
</extension>
<extension id="com.vmware.samples.relateditems.specs.chassis">
<extendedPoint>vise.relateditems.specs</extendedPoint>
<object>
<type>X:A</type>
<!-- relationsViewId references the "related items view" extension created
by the object template. It must be defined for the related items view to
be shown on the right-hand side.
-->
<relationsViewId>com.vmware.samples.A.list.sampleColumns</relationsViewId>
<relationSpecs>
<!--1 -->
<com.vmware.ui.relateditems.model.RelationSpec>
<id>rackForChassis</id>
<icon>#{navigator.icon}</icon>
<label>B View</label>
<relation>B</relation>
<targetType>X:B</targetType>
<listViewId>com_mycompany_vmwarePluginui_B.list</listViewId>
</com.vmware.ui.relateditems.model.RelationSpec>
<!--2 -->
<com.vmware.ui.relateditems.model.RelationSpec>
<id>rackForChassis1</id>
<icon>#{C.icon}</icon>
<label>C View</label>
<relation>C</relation>
<targetType>X:C</targetType>
<listViewId>com_mycompany_vmwarePluginui_C.list</listViewId>
</com.vmware.ui.relateditems.model.RelationSpec>
<com.vmware.ui.relateditems.model.RelationSpec>
<id>rackForChassis2</id>
<icon>#{D.icon}</icon>
<label>D View</label>
<relation>D</relation>
<targetType>X:D</targetType>
<listViewId>com_mycompany_vmwarePluginui_D.list</listViewId>
</com.vmware.ui.relateditems.model.RelationSpec>
</relationSpecs>
</object>
</extension>
<!-- 'createChassis' list action is defined in a separate extension without any
objectType metadata because it is global. It should not show up in the
chassis object menu as it does not belong to any chassis object. -->
<extension id="com.vmware.samples.chassisa.listActionSet">
<extendedPoint>vise.actions.sets</extendedPoint>
<object>
<actions>
<!-- Create Chassis -->
<com.vmware.actionsfw.ActionSpec>
<uid>com.vmware.samples.chassisa.createChassis</uid>
<label>Add B</label>
<icon>#{sampleAction1.icon}</icon>
<delegate>
<className>com.vmware.vsphere.client.htmlbridge.HtmlActionDelegate</className>
<object><root>
<!-- execute the action on client-side (html view in a modal dialog) -->
<actionUrl>/vsphere-client/vmwarepluginui/resources/addB.html</actionUrl>
<dialogTitle>Add B</dialogTitle>
<dialogSize>500,300</dialogSize>
<dialogIcon>#{sampleAction1.icon}</dialogIcon>
</root></object>
</delegate>
<!-- All context-less actions should be marked as private to prevent them
from showing up in all menus.-->
<privateAction>true</privateAction>
</com.vmware.actionsfw.ActionSpec>
</actions>
</object>
</extension>
<extension id="com.vmware.samples.chassisa.actionSet">
<extendedPoint>vise.actions.sets</extendedPoint>
<object>
<actions>
<com.vmware.actionsfw.ActionSpec>
<uid>com.vmware.samples.chassisa.deleteChassis</uid>
<label>Delete B</label>
<icon>#{sampleAction2.icon}</icon>
<delegate>
<className>com.vmware.vsphere.client.htmlbridge.HtmlActionDelegate</className>
<object><root>
<!-- execute the action on client-side (html view in a modal dialog) -->
<actionUrl>/vsphere-client/vmwarepluginui/resources/deleteB.html</actionUrl>
<dialogTitle>Delete B</dialogTitle>
<dialogSize>400,150</dialogSize>
<dialogIcon>#{sampleAction2.icon}</dialogIcon>
</root></object>
</delegate>
<!-- All context-less actions should be marked as private to prevent them
from showing up in all menus.-->
</com.vmware.actionsfw.ActionSpec>
</actions>
</object>
<metadata>
<!-- This filters the actions to be visible only on B -->
<objectType>X:B</objectType>
</metadata>
</extension>
<!-- Global actions in the chassis list, i.e. actions that don't require a
selected object and appear in the toolbar LHS => createChassis here. -->
<extension id="com.vmware.sample.chassis.listAction">
<extendedPoint>vmware.prioritization.listActions</extendedPoint>
<object>
<prioritizedIds>
<String>com.vmware.samples.chassisa.createChassis</String>
</prioritizedIds>
<regionId>com_mycompany_vmwarePluginui_B.list</regionId>
</object>
</extension>
</plugin>