参考博客http://blog.csdn.net/andywangcn/article/details/8257961实现自定义节点的解析
不用多说,如何在 org.eclipse.ui.views扩展点中添加Navigator很简单,这里只给出配置,对应Class类可根据自己需要对org.eclipse.ui.navigator.CommonNavigator类做进一步扩展
<extension
point="org.eclipse.ui.views">
<view
class="org.eclipse.ui.navigator.CommonNavigator"
icon="icons/sample.gif"
id="nwpu.edu.gnc.CNFnavigator"
name="Navigator"
restorable="true">
</view>
</extension>
紧接着配置 org.eclipse.ui.navigator.navigatorContent扩展点,自己的配置如下:
<extension
point="org.eclipse.ui.navigator.navigatorContent">
<navigatorContent
activeByDefault="true"
contentProvider="nwpu.edu.gnc.navigator.NavigatorContentProvider" //指定节点的content如何获取,自己在这个类中实现的是对XML文件的解析及相关操作
icon="icons/alt_window_16.gif"
id="nwpu.edu.gnc.cnf.navigatorContent" //id必须被指定,此id会被在org.eclipse.ui.navigator.viewer扩展点下的viewerContentBinding中作为新的可展示元素添加进来
labelProvider="nwpu.edu.gnc.navigator.NavigatorLableProvider" //提供展示节点的显示图片和文字
name="XML Navigator Content"
priority="normal">
<triggerPoints> //触发点
<or>
<and>
<instanceof
value="org.eclipse.core.resources.IFile"> //提供文件的展示
</instanceof>
<test //设置在指定扩展名为XML的文件处进行节点展开
forcePluginActivation="true"
property="org.eclipse.core.resources.extension"
value="xml">
</test>
</and>
<instanceof
value="nwpu.edu.gnc.project.entity.EntityElement">
</instanceof>
</or>
</triggerPoints>
<possibleChildren>
<or>
<instanceof
value="nwpu.edu.gnc.project.entity.EntityElement"> //设置展开展开元素的类型
</instanceof>
</or>
</possibleChildren>
<actionProvider //提供扩展节点的右键菜单
class="nwpu.edu.gnc.navigator.NodeCommonActionProvider"
id="nwpu.edu.gnc.cnf.navigatorContent.actions" //id 会被org.eclipse.ui.navigator.viewer扩展点下的actionExtension引用
priority="normal">
<enablement>
<or>
<instanceof
value="nwpu.edu.gnc.project.entity.EntityElement"> //指定设置这种Action的节点,这里如果有多个元素不能设置为nwpu.edu.gnc.project.entity.*必须提供一个可以转换所有Entity的一个类,获取到的节点类型就是EntityElement
</instanceof></or></enablement></actionProvider> </navigatorContent> </extension>