- 浏览: 649208 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (170)
- Android (10)
- Java (35)
- PHP (3)
- Linux (3)
- Powerdesigner (2)
- dedcms (1)
- nginx (1)
- Flex (9)
- REST (2)
- Google App Engine (1)
- mysql (6)
- JAVA开源项目 (1)
- Eclipse (18)
- Eclipse Orion (1)
- Dojo (2)
- UML (1)
- Eclipse GEF EMF (4)
- Eclipse 插件开发 (6)
- OSGI (2)
- DeDeCMS (1)
- Maqetta (2)
- JavaScript (1)
- nginx php (1)
- Dojo V1.7 (2)
- Spring3 (4)
- Hibernate3 (4)
- MongoDB (3)
- Scala (2)
- DSL (1)
- Python (3)
- Maven (1)
- Tomcat (3)
- XMPP (2)
- Apache (4)
- NodeJS (1)
- SQLSERVER (2)
- HTML5 (1)
- Nexus (1)
- web服务器 (2)
- Jetty (2)
- weixin (1)
- ngrok (1)
- 网络与信息安全 (1)
最新评论
-
wangyudong:
配置有点晕,开源社区上找了一个开源的Holer,只需要设置Ac ...
用ngrok实现外网访问本地WEB项目的方法 -
lolo968:
你收集的资料没有链接
基于OSGI的框架开发小结(转) -
smartdog:
使用的maven的版本很老的,而且写的不是很清楚,建议可以参考 ...
Maven多项目依赖配置 -
Tom.X:
OSGi联盟官网:http://osgia.com
基于OSGI的框架开发小结(转) -
Miller003:
你好,我在本地测试时,删除catalina.jar和tomca ...
基于Tomcat7的HTML5 WebSocket 应用示例
无论在哪一个开发工具中,资源管理器无疑都是使用最频繁的功能之一,因此一个资源器好用与否在很大程度上就决定了一个开发工具的易用程度。我们常用的Eclipse工具中的Java资源管理器就是一个非常优秀的资源管理器,所以在EOS Studio中,我们也照样抄袭它的功能,但是Java的资源管理器做了非常多的功能。如果从头开始做一个相似的资源管理器将是一个非常大的工作量,无论技术风险还是项目时间,都是非常可观的。幸好Eclipse还提供了一个优秀的插件org.eclipse.ui.navigator(以下简称为CNF,即Common Navigator Framework),这个插件提供了完整而且灵活的扩展机制,可以帮助开发人员进行各种相应的类资源管理器功能。其实这个插件在WTP在自己的项目中提供的,最早是用来开发数据库视图的(根源在于RAD6.0,但在WTP中,源代码被大量重写,所以直接就写成WTP),这个插件有足够的实力证明了自己的优秀,随后在Eclipse3.2版本中,它正式成为Eclipse UI层的核心插件之一,默认的Eclipse平台上有一个Project Explorer视图,就是基于它开发的一个资源管理器视图,它允许各种插件提供相应的内容,从而定制适合于各种环境下的资源管理器,下图显示了它的界面和相应的扩展功能。
左面是一个对应的资源管理器,而右面的对话框则显示了当前资源管理器提供的扩展功能,可以方便用户选择各种资源管理视图的处理方式。
Studio在org.eclipse.ui.navigator的基础上开发了资源管理视图,以及相应的功能,因此要扩展和维护Studio的资源管理器,就需要先了解org.eclipse.ui.navigator这个插件,特别是它的扩展机制。
org.eclipse.ui.navigator尽管只提供了以下三个扩展点,却涉及到expression,还有wizard,filter等一堆内容,所以还是比较复杂的。
org.eclipse.ui.navigator.viewer |
用来在视图和扩展之间建立关系 |
org.eclipse.ui.navigator.navigatorContent |
用来提供模型,菜单以及过滤器等内容 |
org.eclipse.ui.navigator.linkHelper |
用来支持文件与资源管理器联动 |
现在先用一个简单的实例方便开发人员上手,以便进一步了解相关的内容。这个实例就是使用现有的资源,无须编写一行代码,仅仅是通过plugin.xml的配置来配置出一个简单的Java资源管理器。
首先,请先通过向导新建一个Eclipse插件项目org.demo.navigator,如下图所示:
在新建完项目以后,请导入以下插件:
org.eclipse.core.runtime |
Eclipse的核心之一 |
org.eclipse.core.resources |
Eclipse的资源模型 |
org.eclipse.ui |
Eclipse的UI框架 |
org.eclipse.ui.navigator |
我们本章要讲的插件 |
org.eclipse.ui.navigator.resources |
一个基于org.eclipse.ui.navigator的插件,提供了ProjectExplorer视图 |
然后在Eclipse扩展配置的功能页面中,进行了一系列配置以后,可以得到以下的内容,心急的同学可以将该内容复制到plugin.xml文件中,然后运行该插件,即可看到一个简单的Eclipse资源管理器。
<?xml version="1.0" encoding="UTF-8"?> <?eclipse version="3.2"?> <plugin> <extension point="org.eclipse.ui.views"> <view category="org.eclipse.ui" class="org.eclipse.ui.navigator.CommonNavigator" id="org.demo.navigator.view" name="DemoNavigator"/> </extension> <extension point="org.eclipse.ui.navigator.viewer"> <viewer viewerId="org.demo.navigator.view"/> <viewerContentBindingviewerId="org.demo.navigator.view"> <includes> <contentExtension pattern="org.demo.navigator.*"/> <actionExtension pattern="org.demo.navigator.*"/> </includes> </viewerContentBinding> </extension> <extension point="org.eclipse.ui.navigator.navigatorContent"> <navigatorContent contentProvider="org.eclipse.ui.internal.navigator.resources.workbench.ResourceExtensionContentProvider" id="org.demo.navigator.content" labelProvider="org.eclipse.ui.internal.navigator.resources.workbench.ResourceExtensionLabelProvider" name="DemoNavigator"> <enablement> <or> <instanceofvalue="org.eclipse.core.resources.IResource"/> <adapt type="org.eclipse.core.resources.IProject"/> </or> </enablement> </navigatorContent> </extension> </plugin> |
尽管我们并没有写任何一行Java代码,但是却已经提供了一个具有基本功能的资源管理器,由此可以该插件的强大。
现在针对对应的配置图来讲述相应的内容:
在这个例子,使用了三个扩展点,分别是:org.eclipse.ui.views,org.eclipse.ui.navigator.viewer和org.eclipse.ui.navigator.navigatorContent。
Eclipse插件开发人员对于org.eclipse.ui.views一定不陌生,因为这是Eclipse中最常用的一个扩展点,它用来定义Eclipse的视图,象属性视图,大纲视图都是通过该扩展点来定义的。
org.eclipse.ui.navigator.viewer则是CNF的一个基本扩展点,它提供了将org.eclipse.ui.navigator.navigatorContent与一个CommonNavigator绑定的功能。
<extension point="org.eclipse.ui.navigator.viewer"> <viewer viewerId="org.demo.navigator.view"/> <viewerContentBindingviewerId="org.demo.navigator.view"> <includes> <contentExtension pattern="org.demo.navigator.*"/> <actionExtension pattern="org.demo.navigator.*"/> </includes> </viewerContentBinding> </extension> |
这段代码表示所有名称符合"org.demo.navigator.*"的org.eclipse.ui.navigator.navigatorContent都可作为资源管理器的树模型扩展。
最后一个扩展点org.eclipse.ui.navigator.navigatorContent的配置则是CNF框架中最为复杂的一个点,在例子中,则只采用了最简单的配置信息。
<extension point="org.eclipse.ui.navigator.navigatorContent"> <navigatorContent contentProvider="org.eclipse.ui.internal.navigator.resources.workbench.ResourceExtensionContentProvider" id="org.demo.navigator.content" labelProvider="org.eclipse.ui.internal.navigator.resources.workbench.ResourceExtensionLabelProvider" name="DemoNavigator"> <enablement> <or> <instanceofvalue="org.eclipse.core.resources.IResource"/> <adapt type="org.eclipse.core.resources.IProject"/> </or> </enablement> </navigatorContent> </extension> |
每一个org.eclipse.ui.navigator.navigatorContent扩展点都有相应的contentProvider和labelProvider属性,用来定制树模型以及相应的显示功能。而enablement则表示,在何种情况下,才会调用激活这个指定的扩展功能。enablement则采用了org.eclipse.core.expression中定义的扩展点,支持各种复杂的表达式,方便开发人员定义各种条件。
发表评论
-
JVM系列三:JVM参数设置、分析(转)
2014-09-28 15:04 1040不管是YGC还是Full GC,GC过程中都会对导致程序运 ... -
Java中static、final用法小结 (转)
2012-08-26 10:51 1942一、final 1.final变量: ... -
java位操作符总结(转)
2012-08-17 11:16 1250以下是java位操作符的小总结,具体如下:二进制负数以它 ... -
Servlet生命周期与工作原理(转)
2012-08-14 16:57 1021Servlet生命周期与工作原理 Servle ... -
java堆与栈 java String分配内存空间(详解)转
2012-08-10 15:44 1260栈内存 堆内存 ... -
java类继承总结一 父类类型与子类类型之间的转化问题(转)
2012-08-06 21:13 8646java类继承总结一 父类类型与子类类型之间的转化问 ... -
java堆和栈小结(转)
2012-08-05 21:45 1024(1)JAVA中基本数据类型直 ... -
Java常见异常(Runtime Exception )小结--转
2012-08-02 21:04 1303Java常见异常(Runtime Exception ) ... -
java.lang.NoClassDefFoundError: org.objectweb.asm.Type
2012-06-03 15:27 2434在使用spring3的aop时,出现如下的错误: ja ... -
Bean named '*' must be of type [*], but was actually of type [$Proxy16]
2012-06-03 14:14 28259在用junit测试dao接口时,出现以下的错误 Caused ... -
saveOrUpdate is not valid without active transaction
2012-06-03 13:07 6816在使用Spring+Hibernate的框架时,在applic ... -
spring BeanCreationException confusion about mapping
2012-05-31 20:08 1348在进行spring3+rest配置时,出现了以下的错误: C ... -
如何获取新浪微博的登录参数
2012-05-23 20:32 76741、用Chrome的开发者工具或者Firefox的Firebu ... -
Java 程序中使用相对和绝对路径读取文件
2012-05-21 14:24 9121在Java中用File对象来创建文件时,绝对路径一般是不会出现 ... -
线程安全与线程不安全
2012-04-26 16:43 1190线程安全是针对多线程来讲的,如果所使用的公用变量在多线程 ... -
StringBuilder、StringBuffer和String的关系
2012-04-26 16:33 9741. String 类 S ... -
插件开发中如何正确使用第三方jar包
2012-04-21 20:48 2443在进行eclipse插件开发过程中,除了引用Eclipse本身 ... -
Errors running builder 'JavaScript Validator' on project '......'.
2012-04-21 20:36 31297在编译java工程时,如果出现 “Errors occu ... -
The method *** of type *** must override a superclass method
2012-04-21 20:34 1322如果在实现接口时,出现了“The metho *** o ... -
Java 1.6动态编译器 null问题
2012-03-16 10:45 15311、在java程序中用JavaCompiler compile ...
相关推荐
使用CommonNavigator开发资源管理器.doc
使用CommonNavigator开发资源管理器.pdf
Common Navigator Framework学习资料
Eclipse RCP CNF(Common Navigator)的例子,在导航视图右键可以新建项目,项目图标可以正常显示
Common Navigator Framework (CNF) 是一套帮助用户开发基于 eclipse 的内容导航视图的框架,通过这套框架开发者可以迅速地将特定的资源与模型无缝地集成到 eclipse 中,并利用其提供的的 API 以树型的结构展示出来...
CommonNavigatorCommonNavigator
附件代码 博文链接:https://liugang594.iteye.com/blog/153420
对eclipse插件开发中导航视图内容的描述,个人理解
salever_Common_Navigator_Framework_分析
javaweb资源管理器,带文件上传下载备份功能。 功能尚算完整,可以用来学习apache common fileupload
对应我的博客讲解http://blog.csdn.net/sidihuo/article/details/40188203
用VB实现类似资源管理的程序 EnumDeskVB ---------- A VB5 example demonstrating how to dynamically create both the treeview and listview controls exposed by the common control library Comctl32.dll at ...
clim2, Common Lisp接口管理器 通用Lisp接口管理器描述这里 repo的内容可以在 Allegro 8.2和更高版本中编译和工作。 没有任何工作可以以使它的在它的他公共Lisps上工作,尽管有很多它的他conditionalization的。有关...
windows XP的文件管理显示方式中的缩略图,对于photoshop产生的...使用方法:把psicon.inf和psicon.dll拷贝到:C:\Program Files\Common Files\Adobe\Shell文件夹下,然后鼠标右击psicon.inf文件,选“安装”命令即可
而WBEM(Web Based Enterprise Management)和CIM(Common Information Model)的出现则很好的解决了这一问题,目前已经成为了企业信息统一资源管理的标准。在WBEM和CIM框架的基础上构建了网络资源管理系统模型,并详细...
Laravel开发-common 常见资源,如类、助手、特性等
收集的一些常用类Common,对开发和学习都有相当大的帮助。
使用您的团队密码管理器CommonKey保护您公司的密钥,以进行共享和协作! CommonKey帮助公司在团队之间安全地管理和共享密码。抛弃填充了密码的Google文档,提高生产力,并通过单击按钮来控制用户访问。专为协作和...