惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
人人都是产品经理
人人都是产品经理
S
Securelist
P
Proofpoint News Feed
H
Help Net Security
S
Schneier on Security
T
Tenable Blog
C
Cisco Blogs
S
Security @ Cisco Blogs
博客园 - 司徒正美
博客园 - 叶小钗
Cisco Talos Blog
Cisco Talos Blog
Google DeepMind News
Google DeepMind News
C
Cybersecurity and Infrastructure Security Agency CISA
Google Online Security Blog
Google Online Security Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Hacker News: Ask HN
Hacker News: Ask HN
NISL@THU
NISL@THU
云风的 BLOG
云风的 BLOG
V
Vulnerabilities – Threatpost
T
The Blog of Author Tim Ferriss
aimingoo的专栏
aimingoo的专栏
W
WeLiveSecurity
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Jina AI
Jina AI
腾讯CDC
WordPress大学
WordPress大学
Simon Willison's Weblog
Simon Willison's Weblog
Vercel News
Vercel News
小众软件
小众软件
N
Netflix TechBlog - Medium
有赞技术团队
有赞技术团队
AWS News Blog
AWS News Blog
雷峰网
雷峰网
Forbes - Security
Forbes - Security
The Hacker News
The Hacker News
博客园 - 聂微东
F
Full Disclosure
量子位
Scott Helme
Scott Helme
宝玉的分享
宝玉的分享
A
About on SuperTechFans
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Schneier on Security
Schneier on Security
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
K
Kaspersky official blog
AI
AI
SecWiki News
SecWiki News
Webroot Blog
Webroot Blog
Martin Fowler
Martin Fowler

博客园 - 刘刚

Google Map [导入]Editor中嵌入Editor [导入]GEF中修改默认的FeedBack [导入](接上篇)关于GEF Feedback的补充 [导入]GEF中导视图的使用 [导入]修改GEF中Connection的端点 [导入]Eclipse中Job API使用总结如下三 [导入]Eclipse中Job API使用总结如下二 [导入]Eclipse中Job API使用总结如下一 [导入]Eclipse调试框架的学习与理解二 [导入]Eclipse调试框架的学习与理解一 [导入]使用JET自动生成代码 [导入]定义自己的Common Navigator三 [导入]定义自己的Common Navigator一 [导入]Eclipse运行(launcher)框架三 [导入]Eclipse运行(launcher)框架二 [导入]Eclipse运行(launcher)框架一 [导入]Eclipse属性页的支持 [导入]GEF理解系列九
[导入]定义自己的Common Navigator二
刘刚 · 2008-01-05 · via 博客园 - 刘刚

网站: JavaEye  作者: liugang594  链接:http://liugang594.javaeye.com/blog/153420  发表时间: 2008年01月05日

声明:本文系JavaEye网站发布的原创博客文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!

这一节和下一节我们都将来关注另一个扩展点:

org.eclipse.ui.navigator.navigatorContent

首先我们先增加一个扩展声明,然后看看它支持什么东西:

acn8

图六

可以看到在这个扩展点下可以定义四个子元素。其中:

      actionProvider:用来定义可以action的。

      commonFilter:定义过滤器

      commonWizard:定义快捷wizard

      navigatorContent:定义内容导航

其中第一和第三个元素通常不需要扩展。而且我发现这两个扩展点几乎没有实现,很奇怪。我们一会可以看到,在navigatorContent元素也有两个同样的扩展,一般都是在这个元素里做扩展。

说了和没说一样,下面就以例子来讲解。

  1. 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扩展点的contentBindingincludes里加上一句:

      <contentExtension

        pattern="com.tibco.cdc.liugang.navigator.filter.pda">

      </contentExtension>

OK,我们已经完成了我们的过滤声明:

acn9

图七

图七中,当我们选中我们扩展的过滤器后,所有的pda文件都已经消失了。

  1. 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文件,则显示它的结构。这主要是要完成contentProviderlabelProvider。我们先完成这个。代码就不贴了。可以参考附件!

需要注意的是:这里我们是要给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文件的内容导航,最后不要忘了把它加到我们的Navigatorviewer声明里去,如下在viewerContentBindingincludes下加上:

      <contentExtension

           pattern="com.tibco.cdc.liugang.navigator.navigatorContent">

</contentExtension>

现在我们的图如下:

acn91

图八

补充:

一个完整的内容导航,我们除了要显示它之外,还需要有一个监听机制,就是eclipse已经实现的resourceChangeListener。这样当外部有修改时,我们的内容也能显示正确。

本文的讨论也很精彩,浏览讨论>>

JavaEye推荐

文章来源:http://liugang594.javaeye.com/blog/153420