[导入]定义自己的Common Navigator二
2008-01-05 22:47
239 查看
网站: JavaEye
作者: liugang594
链接:http://liugang594.javaeye.com/blog/153420
发表时间: 2008年01月05日
声明:本文系JavaEye网站发布的原创博客文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!
这一节和下一节我们都将来关注另一个扩展点:
org.eclipse.ui.navigator.navigatorContent
首先我们先增加一个扩展声明,然后看看它支持什么东西:
图六
可以看到在这个扩展点下可以定义四个子元素。其中:
actionProvider:用来定义可以action的。
commonFilter:定义过滤器
commonWizard:定义快捷wizard
navigatorContent:定义内容导航
其中第一和第三个元素通常不需要扩展。而且我发现这两个扩展点几乎没有实现,很奇怪。我们一会可以看到,在navigatorContent元素也有两个同样的扩展,一般都是在这个元素里做扩展。
说了和没说一样,下面就以例子来讲解。
commonFilter
先讲简单的commonFilter,很显然是用来定义过滤的。在第一节里,我们已经给我们的navigator加了resource的过滤。我们再来加一些。例如,我们想有一个过滤掉全部以pda结尾的文件。那我们可以这样实现:
<commonFilter
activeByDefault="false"
description="this used to filter all files whose extensions is pda"
id="com.tibco.cdc.liugang.navigator.filter.pda"
name="Filter pda files">
<filterExpression>
<and>
<instanceof
value="org.eclipse.core.resources.IFile">
</instanceof>
<test
property="org.eclipse.core.resources.extension"
value="pda">
</test>
</and>
</filterExpression>
</commonFilter>
这样我们就定义好了一个过滤器。不过我们要使用它的话,需要把它加到我们的navigator上,所以在我们第一节定义的viewer扩展点的contentBinding的includes里加上一句:
<contentExtension
pattern="com.tibco.cdc.liugang.navigator.filter.pda">
</contentExtension>
OK,我们已经完成了我们的过滤声明:
图七
图七中,当我们选中我们扩展的过滤器后,所有的pda文件都已经消失了。
navigatorContent
下面来完成一个navigator content扩展。这个稍微有点复杂。首先我们先完成一个声明。如下
<navigatorContent
activeByDefault="true"
contentProvider="com.tibco.cdc.liugang.navigator.content.XMLTreeContentProvider"
icon="icons/alt_window_16.gif"
id="com.tibco.cdc.liugang.navigator.navigatorContent"
labelProvider="com.tibco.cdc.liugang.navigator.content.XMLLabelProvider"
name="XML Navigator Content"
priority="normal">
</navigatorContent>
这里我想做的是:如果是一个xml文件,则显示它的结构。这主要是要完成contentProvider和labelProvider。我们先完成这个。代码就不贴了。可以参考附件!
需要注意的是:这里我们是要给xml文件加一个内容导航,因此在contentProvider里传入的有可能是IFile类型。所以我们要注意我们的contentProvider的实现方法。
定义完了一个内容以后,并不是会自动被显示的,我们需要给它加一个触发点。这就是要在navigatorContent下增加一个子元素“triggerPoints”,triggerPoints用来指示我们的扩展所感兴趣的内容。实际我们的触发点就是一个xml文件,因此我们可以如下实现:
<triggerPoints>
<and>
<instanceof
value="org.eclipse.core.resources.IFile">
</instanceof>
<test
forcePluginActivation="true"
property="org.eclipse.core.resources.extension"
value="xml">
</test>
</and>
</triggerPoints>
其实意思就是:如果选择的是一个文件,并且文件扩展名为“xml”,则触发我们的内容导航。好了, 这样就完成了我们的xml文件的内容导航,最后不要忘了把它加到我们的Navigator的viewer声明里去,如下在viewerContentBinding的includes下加上:
<contentExtension
pattern="com.tibco.cdc.liugang.navigator.navigatorContent">
</contentExtension>
现在我们的图如下:
图八
补充:
一个完整的内容导航,我们除了要显示它之外,还需要有一个监听机制,就是eclipse已经实现的resourceChangeListener。这样当外部有修改时,我们的内容也能显示正确。
本文的讨论也很精彩,浏览讨论>>
JavaEye推荐
文章来源:http://liugang594.javaeye.com/blog/153420
作者: liugang594
链接:http://liugang594.javaeye.com/blog/153420
发表时间: 2008年01月05日
声明:本文系JavaEye网站发布的原创博客文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!
这一节和下一节我们都将来关注另一个扩展点:
org.eclipse.ui.navigator.navigatorContent
首先我们先增加一个扩展声明,然后看看它支持什么东西:
图六
可以看到在这个扩展点下可以定义四个子元素。其中:
actionProvider:用来定义可以action的。
commonFilter:定义过滤器
commonWizard:定义快捷wizard
navigatorContent:定义内容导航
其中第一和第三个元素通常不需要扩展。而且我发现这两个扩展点几乎没有实现,很奇怪。我们一会可以看到,在navigatorContent元素也有两个同样的扩展,一般都是在这个元素里做扩展。
说了和没说一样,下面就以例子来讲解。
commonFilter
先讲简单的commonFilter,很显然是用来定义过滤的。在第一节里,我们已经给我们的navigator加了resource的过滤。我们再来加一些。例如,我们想有一个过滤掉全部以pda结尾的文件。那我们可以这样实现:
<commonFilter
activeByDefault="false"
description="this used to filter all files whose extensions is pda"
id="com.tibco.cdc.liugang.navigator.filter.pda"
name="Filter pda files">
<filterExpression>
<and>
<instanceof
value="org.eclipse.core.resources.IFile">
</instanceof>
<test
property="org.eclipse.core.resources.extension"
value="pda">
</test>
</and>
</filterExpression>
</commonFilter>
这样我们就定义好了一个过滤器。不过我们要使用它的话,需要把它加到我们的navigator上,所以在我们第一节定义的viewer扩展点的contentBinding的includes里加上一句:
<contentExtension
pattern="com.tibco.cdc.liugang.navigator.filter.pda">
</contentExtension>
OK,我们已经完成了我们的过滤声明:
图七
图七中,当我们选中我们扩展的过滤器后,所有的pda文件都已经消失了。
navigatorContent
下面来完成一个navigator content扩展。这个稍微有点复杂。首先我们先完成一个声明。如下
<navigatorContent
activeByDefault="true"
contentProvider="com.tibco.cdc.liugang.navigator.content.XMLTreeContentProvider"
icon="icons/alt_window_16.gif"
id="com.tibco.cdc.liugang.navigator.navigatorContent"
labelProvider="com.tibco.cdc.liugang.navigator.content.XMLLabelProvider"
name="XML Navigator Content"
priority="normal">
</navigatorContent>
这里我想做的是:如果是一个xml文件,则显示它的结构。这主要是要完成contentProvider和labelProvider。我们先完成这个。代码就不贴了。可以参考附件!
需要注意的是:这里我们是要给xml文件加一个内容导航,因此在contentProvider里传入的有可能是IFile类型。所以我们要注意我们的contentProvider的实现方法。
定义完了一个内容以后,并不是会自动被显示的,我们需要给它加一个触发点。这就是要在navigatorContent下增加一个子元素“triggerPoints”,triggerPoints用来指示我们的扩展所感兴趣的内容。实际我们的触发点就是一个xml文件,因此我们可以如下实现:
<triggerPoints>
<and>
<instanceof
value="org.eclipse.core.resources.IFile">
</instanceof>
<test
forcePluginActivation="true"
property="org.eclipse.core.resources.extension"
value="xml">
</test>
</and>
</triggerPoints>
其实意思就是:如果选择的是一个文件,并且文件扩展名为“xml”,则触发我们的内容导航。好了, 这样就完成了我们的xml文件的内容导航,最后不要忘了把它加到我们的Navigator的viewer声明里去,如下在viewerContentBinding的includes下加上:
<contentExtension
pattern="com.tibco.cdc.liugang.navigator.navigatorContent">
</contentExtension>
现在我们的图如下:
图八
补充:
一个完整的内容导航,我们除了要显示它之外,还需要有一个监听机制,就是eclipse已经实现的resourceChangeListener。这样当外部有修改时,我们的内容也能显示正确。
本文的讨论也很精彩,浏览讨论>>
JavaEye推荐
文章来源:http://liugang594.javaeye.com/blog/153420
相关文章推荐
- 【转】python下导入自己定义的模块的方法
- [导入]定义自己的Common Navigator三
- ISV.Config导入以后却发现自己定义的操作栏按钮、工具栏按钮都没出现
- [导入]Access里使用存储过程及用户自己定义的控件里使用参数
- python 中导入自己定义的模块路径
- 记录eclipse 外部导入的工程无法使用自己定义的代码风格问题
- Excel导入数据自己定义的
- python下导入自己定义的模块的方法
- [导入]定义自己的Common Navigator一
- 非常好的自己定义jdbc数据库连接池
- [导入]ASP.NET 2.0 我们自己的联盟
- GitHub定义自己的首页popular面板
- Android-自己定义显示价格的PriceView
- android_将其他的项目导入到自己项目中 module
- 翻译:Laravel-4-Generators 使用自己定义代码生成工具高速进行Laravel开发
- 网页制作——字的颜色自己定义
- struts2学习笔记(5)---自己定义拦截器
- [052] 微信公众平台开发视频公开课第2讲-自己定义菜单开发解说
- Android自己定义截屏功能,相似QQ截屏