- 浏览: 254686 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
aquarion:
非常感谢,解决了我的问题
Perspective 自定义设置扩展点 -
zheng_zhen:
好文章,进一步问您一下,请问自己实现的run/debug如何能 ...
【原创】Eclipse Launcher (Run/Debug As 菜单扩展)实现 -
salever:
mwdnjupt 写道http://www.xeclipse. ...
浅析OSGI的bundle依赖 -
mwdnjupt:
http://www.xeclipse.com/?p=1165 ...
浅析OSGI的bundle依赖 -
Tom.X:
插件化、模块化应遵循高内聚、低耦合的原则,尽量不要在各bund ...
浅析OSGI的bundle依赖
原始贴子见http://www.ceclipse.org/read-cec-tid-27222.html
当时大家讨论的是如何拓展IProject,来满足对默认的Project的一些修改,比如将某些文件夹设定为src folder,某些文件夹设定为res folder。
再三思考以后,觉得并不需要使用CNF框架,来对扩展已有的Project Navigator,而是采用一个稍微绕一点的方法来实现,想到SVN和CVS的实现方式了。
需求如下:需要将project中的某些文件夹设定为资源文件夹,以便于在编译、打包时进行特殊处理;
基本思路:因为目前只是对某些文件夹进行特殊处理,而文件夹下面的内容仍然按照默认的方式显示,考虑采用
org.eclipse.ui.decorators给指定的文件夹加上修饰,以区别于普通文件夹,使
org.eclipse.core.resources.markers记录下这些文件夹,以便于编程处理。
实现如下:
1,扩展org.eclipse.core.resources.markers,添加一个marker,记录下资源文件夹类型。
<extension id="org.salever.rcp.marker.resFolderMarker" name="Resource Folder Marker" point="org.eclipse.core.resources.markers"> <persistent value="true"> <!-- 一定要设置为true,否则重启IDE后marker就没了--> </persistent> <super type="org.eclipse.core.resources.bookmark"><!--加上这个类型是为了在book marker view中显示--> </super> </extension>
接着在创建这类文件夹时,给它们加上这个marker,代码很简单
public static void createResourceMarker(IFolder ifolder) throws CoreException { IMarker marker; marker = ifolder.createMarker("org.salever.rcp.marker.resFolderMarker"); marker.setAttribute(IMarker.MESSAGE, "Resource Folder"); marker.setAttribute(IMarker.LOCATION, ifolder.getFullPath().toString()); }
2,扩展org.eclipse.ui.decorators,区别显示res folder
<extension point="org.eclipse.ui.decorators"> <decorator adaptable="true" class="org.salever.rcp.decorator.ResFolderLabelDecorator" <!-- 如果是lightweight的话,实现 ILightweightLabelDecorator--> icon="icons/resourece_decorator.gif" id="org.salever.rcp.decorator.resFolderDecorator" label="Resource Decorator" lightweight="true" location="BOTTOM_RIGHT" state="true"> <enablement> <and> <objectClass name="org.eclipse.core.resources.IFolder"> </objectClass> <objectClass name="org.eclipse.core.resources.IResource"> </objectClass> </and> </enablement> </decorator> </extension>
这个扩展的decorator只对folder类型的资源有效,重点在于类ResFolderLabelDecorator,它需要实现ILightweightLabelDecorator,去给指定的资源添加decorator。主要代码为:
@Override public void decorate(Object element, IDecoration decoration) { if (isResourceFolder(element)) { decoration.addOverlay(RESOURCE_FOLDER_IMAGE, // RESOURCE_FOLDER_IMAGE为decorator // 的图形,ImageDescriptor类型 IDecoration.BOTTOM_LEFT); } } public static boolean isResourceFolder(Object element) { if (!(element instanceof IFolder)) { return false; } try { IMarker[] markers = ((IResource) element).findMarkers( "org.salever.rcp.marker.resFolderMarker", true, IResource.DEPTH_INFINITE); return markers.length > 0; } catch (CoreException e) { // Do nothing. } return false; }
这时候,对于拥有org.salever.rcp.marker.resFolderMarker类型marker的文件夹,IDE就会给它添加一个decorator了,在编译和打包的时候,同样可以通过这个marker,判断指定的文件夹是否为res folder。
3,事情解决,没有用到CNF,因为目前的需求仅仅是区别某些文件夹,如果需要对某些文件进行处理,比如使proerties文件能够将内容展开,就需要使用CNF了。
另见http://www.ceclipse.org/read-cec-tid-27306.html
发表评论
-
基于Spring/Hibernate/Hessian的RCP客户端系统框架
2012-08-14 11:23 2694本文同步发表在 http://www.xeclips ... -
【资料整理】中国Eclipse社区开发资料整理
2012-05-13 21:53 4322前言 中国Eclipse社区(www.ceclipse ... -
【Eclipse plug-in】 org.eclipse.ui.activities 的使用
2011-11-30 15:20 2778整理一下org.eclipse.ui.activities的使 ... -
Eclipse plugin中获取工程的几种办法
2011-10-10 15:56 2811在Eclipse开发中,涉及到Resource的时候,经常会需 ... -
【SDK or Binary】Eclipse 开发版本选择
2011-08-19 14:11 5710前言:老手直接忽略。打开Eclipse的download页面, ... -
Eclipse Spring Application Context XML 小工具
2011-08-18 15:35 2215概述 Spring 开发经常需要配置bean clas ... -
OSGI MANIFEST.MF Header 小结
2011-07-26 10:43 28151 MANIFEST 文件 Bun ... -
【Eclipse所有示例】Eclipse CVS 平台源码
2011-04-21 10:06 1860总有TX上论坛要各种源码,首先并不提倡这种做法,这与间接的 ... -
中文版的Eclipse 帮助文档
2011-04-14 13:43 3533偶然在IBM的一个帮助网站上发现了部分Eclipse的部分的中 ... -
深入 Common Navigator Framework 完整版下载
2011-04-11 15:19 2588写完整个Common Navigator Framework之 ... -
深入 Common Navigator Framework 之 Link with Editor Support
2011-04-11 15:15 19948.1 概述 这个功能简单的说,就是将选中的节点与对应的编辑 ... -
深入 Common Navigator Framework 之 Drag and Drop Support
2011-04-11 15:11 22677.1 概述 顾名思义,Drag and Drop Supp ... -
深入 Common Navigator Framework 之 Action Providers
2011-04-11 15:05 22826.1 概述 有了工程的树形结构显示,自然就要考虑到菜单的配 ... -
深入 Common Navigator Framework 之 Common Wizards
2011-04-11 15:00 18005.1 概述 Common Wizard用于定制Naviga ... -
深入 Common Navigator Framework 之 Common Filters
2011-04-11 14:56 20234.1 概述 Common Filter负责进行节点过滤,类 ... -
深入 Common Navigator Framework 之 navigatorContent
2011-04-07 14:31 24843.1 概述 Eclipse为了方便 ... -
深入 Common Navigator Framework 之 Navigator
2011-04-07 14:18 31202.1 概述 Navigator 是CNF中用来显示资源结构 ... -
深入 Common Navigator Framework 之概述
2011-04-07 14:07 28661.1 概述 CNF,全称Common Navigato ... -
Common Navigator Framework初探
2011-03-30 17:14 4989这篇文章是继《Eclipse RCP/Plugin 入门自学教 ... -
利用Eclipse SDK 学习 Extension Point
2011-03-07 11:27 4184很多Eclipser在开发RCP时候,会遇到Extension ...
相关推荐
SVN 使用指南(含 SVN 服务器的安装与使用) SVN(Subversion)是一种版本控制系统,能够帮助开发团队更好地管理代码仓库。下面是 SVN 使用指南,涵盖了 SVN 服务器的安装与使用、SVN 客户端的安装与使用等内容。 ...
##### SVN服务器搭建与使用 1. **打开VisualSVN Server Manager**: - 启动VisualSVN Server Manager,查看版本库的基本信息,包括状态、日志、用户认证等。 2. **创建版本库**: - 在左侧面板中右键点击 **...
svn+ldap+sasl 认证是指在 svn 服务器中使用 ldap 服务器进行用户认证,实现 svn 服务器的安全认证机制。ldap 服务器是一个目录服务,用于存储和管理用户信息,sasl 则是一个安全认证协议,用于在客户端和服务器之间...
svn服务端安装和使用svn服务端安装和使用svn服务端安装和使用svn服务端安装和使用svn服务端安装和使用svn服务端安装和使用svn服务端安装和使用svn服务端安装和使用svn服务端安装和使用svn服务端安装和使用svn服务端...
SVN 使用教程 SVN(Subversion)是一种开源的版本控制系统,允许多个用户协同工作于同一个项目。通过 SVN,可以追踪文件的变化...通过这篇 SVN 使用教程,你可以学会如何使用 SVN 进行项目管理、版本控制和冲突解决。
使用场景包括但不限于项目需要与使用SVN的团队合作、迁移项目到Git但仍需保留与原SVN仓库的兼容性等。 在安装方面,Mac用户可以通过安装Xcode获得git-svn支持,而Linux用户可以使用包管理工具如apt-get进行安装。...
### SVN使用手册大全知识点梳理 #### 一、SVN简介 Subversion(简称SVN)是一种集中式的版本控制系统,主要用于代码版本管理和团队协作。它能够帮助开发者追踪代码变更历史、协同开发并管理不同版本间的差异。 ###...
PB源码管理SVN使用手册主要介绍了一种替代传统Visual SourceSafe(VSS)的源代码管理系统——Subversion(SVN),并提供了使用SVN管理PowerBuilder(PB)源码的详细步骤。以下是相关知识点的详细说明: 1. **Subversion...
本文将详细介绍如何安装、配置SVN以及如何在Delphi中使用SVN的扩展。 1. **SVN的基本概念** - **版本控制系统**:SVN是一种集中式版本控制系统,它跟踪文件和目录的变化,允许团队成员协同工作,同时保持代码的...
### Eclipse中SVN插件的使用详解 #### 安装与配置 在Eclipse中集成Subversion(简称SVN)插件,能够极大提升团队协作效率,实现代码版本控制、协同开发等功能。首先,确保Eclipse环境已安装,然后通过Help菜单下的...
下注:使用svn revert 提交你得修改 检验历史 svn log svn diff 比较本地修改 比较工作拷贝和版本库 比较版本库与版本库 svn cat svn list 关于历史的最后一个词 其他有用的命令 svn cleanup svn import 摘要 4. ...
Windows下SVN使用指南.ppt
### SVN服务器搭建与客户端使用详解 #### 一、概述 Subversion (SVN) 是一款广泛应用的版本控制系统,主要用于管理代码、文档等文件的历史版本。本文档将详细介绍如何搭建SVN服务器并使用客户端进行基本的操作。 #...
《myEclipse8.5集成SVN与Android SVN使用详解》 在软件开发过程中,版本控制工具的重要性不言而喻,它能够帮助开发者追踪代码的变更历史,协同多人合作,并确保代码的一致性和稳定性。本文将详细介绍如何在...
**Subversion(简称SVN)** 是一个广泛应用于软件开发领域的版本控制系统,它在RCS和CVS的基础上进行了改进和扩展,特别是在分支管理方面提供了更高效、灵活的解决方案。Subversion的设计初衷是成为CVS的现代化替代...
本文将对IT公司内部SVN(Subversion)使用操作规范进行详细解读,并通过一系列具体步骤演示如何进行SVN的主干与分支操作。SVN是一种常用的版本控制系统,广泛应用于软件开发过程中,用于管理代码版本、协作开发等...
svn 使用教程 svn 是一种版本控制系统,主要用于软件开发中的版本控制和项目管理。下面是svn 的使用教程: 一、svn 服务端安装配置 svn 服务端可以通过两种方式安装:官方安装包和图形化服务端。官方安装包需要...
在AltiumDesigner中使用SVN需要设置SVN的调用路径,创建SVN版本控制库,添加工程到版本控制库中,并对修改后的文件进行版本控制。 设置SVN的调用路径可以在参数设置窗口中进行设置。在VersionControl下点击自动检测...