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

推荐订阅源

Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
GbyAI
GbyAI
Stack Overflow Blog
Stack Overflow Blog
Recent Announcements
Recent Announcements
D
DataBreaches.Net
量子位
C
Cybersecurity and Infrastructure Security Agency CISA
G
Google Developers Blog
小众软件
小众软件
Application and Cybersecurity Blog
Application and Cybersecurity Blog
MyScale Blog
MyScale Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Cisco Talos Blog
Cisco Talos Blog
P
Proofpoint News Feed
V
Vulnerabilities – Threatpost
Security Latest
Security Latest
T
Tenable Blog
Vercel News
Vercel News
AWS News Blog
AWS News Blog
Forbes - Security
Forbes - Security
M
MIT News - Artificial intelligence
S
Security Affairs
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Hacker News - Newest:
Hacker News - Newest: "LLM"
美团技术团队
L
Lohrmann on Cybersecurity
博客园 - 司徒正美
Last Week in AI
Last Week in AI
罗磊的独立博客
Project Zero
Project Zero
Cyberwarzone
Cyberwarzone
S
Schneier on Security
S
Secure Thoughts
T
Threatpost
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Google DeepMind News
Google DeepMind News
B
Blog RSS Feed
Y
Y Combinator Blog
F
Full Disclosure
N
Netflix TechBlog - Medium
博客园 - 叶小钗
A
Arctic Wolf
腾讯CDC
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
T
The Exploit Database - CXSecurity.com
Jina AI
Jina AI
Apple Machine Learning Research
Apple Machine Learning Research
C
Check Point Blog
C
CERT Recently Published Vulnerability Notes
www.infosecurity-magazine.com
www.infosecurity-magazine.com

博客园 - 刘刚

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/153413  发表时间: 2008年01月05日

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

所谓的Navigator,可以简单的理解为Eclipse中的资源导航视图,例如:

acn1

Project Explorer视图

acn2 

Project Explorer视图

这一系列,我们就要来实现一个类似的Navigator视图。

一、  定义Navigator

在开始之前,我们先了解一下做Navigator需要的扩展点:

1.      org.eclipse.ui.navigator.viewer

这个扩展点就是用来定义整个Navigator用的。例如:Navigator绑定到哪个View上;它的Content是什么;它的actions是什么;它怎么支持拖动的,等等。

这个扩展点的实质是将一些内容组合到一起来决定这个Navigator的,所以它本身几乎是不需要写代码的。

2.      org.eclipse.ui.navigator.navigatorContent

上一个扩展点,我们讲它需要有content的提供、action的提供者等等。这个扩展点就是用来提供这个用的。

当然,除了上面两个扩展点,我们也说是我们的Navigator需要绑定到一个view上,所以也需要一个org.eclipse.ui.views扩展点,因为这个扩展点比较通用,这里就不具体说了。

Navigator部分的API帮助,可以到以下包去找:org.eclipse.ui.navigator。所以显然你需要把这个插件包添加到依赖项里。

我们在做的时候也可以参照已有的实现:

acn3

图一

图一中,红色部分就是对应需要用到的两个扩展点,蓝色部分就是对应的定义了这个扩展点的插件。我们可以参考它们相应的实现来了解更多的应用方面的知识。

好。下面我们就来开始我们自己的Navigator。首先我们需要有一个插件工程。这个就不说了。首先我们定义一个org.eclipse.ui.views的扩展声明,如下:

   <extension

         point="org.eclipse.ui.views">

      <category

            id="com.tibco.cdc.liugang.navigator.category"

            name="Common Navigator">

      </category>

      <view

            allowMultiple="false"

            category="com.tibco.cdc.liugang.navigator.category"

            class="org.eclipse.ui.navigator.CommonNavigator"

            icon="icons/alt_window_16.gif"

            id="com.tibco.cdc.liugang.navigator.view"

            name="Sample Navigator">

      </view>

   </extension>

这里需要注意的是:

class需要设定为“org.eclipse.ui.navigator.CommonNavigator”,当然你也可以定义自己的实现。一般来说都没有必要。

现在我们已经可以运行,看到一个view了:

acn4

图二

Ok,一个view就定义完了,下面就是我们要关注的两个扩展点的实现了。这一节,我们先讲第一个扩展点org.eclipse.ui.navigator.viewer,后两节会讲到另一个扩展点:org.eclipse.ui.navigator.navigatorContent

所以我们再定义一个org.eclipse.ui.navigator.viewer扩展声明。在继续之前我们先看一下下图:

acn5

图三

其中:viewerActionBinding对应于action的支持,例如选择某个对象,显示一个什么的右键菜单;viewerContentBinding对应于内容提供,就是在这navigator上显示什么内容;viewer对应的就是这个navigator要显示在哪个view上。

这一节里,我们将利用已经有的定义来充实这个扩展点。具体哪些内容可以填充,请到图一的各个实现里去找就可以了。这里我参照resources的实现(后面我们会讲到自定义实现),如下:

   <extension

         point="org.eclipse.ui.navigator.viewer">

      <viewer

            viewerId="com.tibco.cdc.liugang.navigator.view">

      </viewer>

      <viewerActionBinding

            viewerId="com.tibco.cdc.liugang.navigator.view">

         <includes>

            <actionExtension

                  pattern="org.eclipse.ui.navigator.resources.*">

            </actionExtension>

         </includes>

      </viewerActionBinding>

      <viewerContentBinding

            viewerId="com.tibco.cdc.liugang.navigator.view">

         <includes>

            <contentExtension

                  pattern="org.eclipse.ui.navigator.resourceContent">

            </contentExtension>

         </includes>

      </viewerContentBinding>

   </extension>

好,我们现在运行看看:

acn6

图四

OK,我们的view里已经有内容了,而且已经支持了右键菜单了。现在还不支持过滤,如果要支持一个过滤器也是容易的。我们只要加一个content声明就可以了。例如加上:

            <contentExtension

                  pattern="org.eclipse.ui.navigator.resources.*">

            </contentExtension>

加上上面声明,我们就支持所有resource的实现。显示如下:

acn7

图五

看图五中,以“.”开始的资源已经被过滤了。并且我们也支持了一些其他的过滤和内容显示设置。

OK,我们已经初步有了一个自己的Navigator了。下面我们会逐渐的增加更多的内定。

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

JavaEye推荐

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