jdt调测杂技2

DecoratinScheduler中有ManagedWorkbenchLabelDecorator

DecorationScheduler中有DecorationReference保存和element相关的信息,

 

DecoratingJavaLabelProvider 继承 DelegatingStyledCellLabelProvider

DelegatingStyledCellLabelProvider代理PackageExplorerLabelProvider

PackageExplorerLabelProvider继承JavaUILabelProvider,其中包含JavaElementLabel

JavaElementLabel对JREContainer的字符串做第一次装饰,除了获取字符内容外,还对vm版本进行颜色装饰。

JavaUILabel中的decorator(是个装饰器的list,但只有一个PackageExplorerProblemsDecorator)叠加

DecoratingStyledCellLabelProvider中对使用DecoratorManager中的ManagedWorkbenchLabelDecorator再进行一次装饰

将TreeItem中的data由原来的只有element数据,改变成数组,将element数据以及stylerange追加到里面

key为org.eclipse.jfacestyled_label_key_0

JavaElementImageProvider中对于ClasspathContainer是通过PackageFragmentRootContainer中的WorkbenchAdapterImpl获取的Image。

JavaUILabelProvider中的PorblemsLabelDecorator对于图片进行二次装饰,computeAdornmentFlags()

 

 

对于eclipse原本就支持的一个ProjectExplorer的视图中NavigatorDecoratingLabelProvider也是可以参考的例子,

其中的内置类StyledLabelProviderAdapter中包含的NavigatorContentServiceLabelProvider,会从NavigatorContentService中获取可能的label扩展点findPossibleLabelExtensions(),找到对应的JavaNavigatorLabelProvider(委托给PackageExplorerLabelProvider)来进行装饰,jdt在其基础上进行了基于javaproject的图片装饰,添加了“J“的小图标.

对于ProjectExplorer中的project的图片,Project类的getAdapter是WorkbenchProject(WorkbenchResource),通过该类找到了对应的基础图片。

 

WorkbenchPlugin中IEclipseContext获取sharedImages,WorkbenchImages持有sharedImages。

读取到了多个natureImage

ImageDescriptorRegistry中将ImageDescriptor转换创建成Image,并缓存起来。

此时已经是符合要求的overlay的图片。通过后续的装饰其实是装饰其他部位,比如该文件是否有问题。通过workspace.getMarkerManager().findMaxProblemSeverity来标记是否有问题,装饰图片的左下角的overlay。

ImageDescriptor的createImage方法中调用其子类的CompositeImageDescriptor的getImageData()方法,然后drawCompositeImage(),最终由JavaElementImageDescriptor实现。

 

对于PackageExplorerPart中的流程,是在JavaElementImageProvider进行computeDescriptor()中,没有走workbenchAdatper的流程,而是走自身的getJavaImageDescriptor()流程,但是从如下分支最终还是走到了获取WorkbenchAdapter中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先了解一下flexBuilder FlexBuilder 2.0 是建立在 eclipse 3.1基础上的 FlexBuilder 3.2.1 是建立在eclipse 3.2.1基础上的 所以要想支持vss 首先要准备eclipse 3.1 或者 eclipse3.2.1 就看你用什么版本的flexbuilder FlexBuilder 3使用 vss1.6.1; FlashBuilder 4使用 vss 1.6.2; 1. 下下载一个vss插件 最新版本是1.6.2 下载地址:http://sourceforge.net/projects/vssplugin/ (或者http://download.csdn.net/detail/ch_kexin/4925652) 放入 flexbuilder 目录的plugin 目录下 打开flexbuilder 很多人都会发现不能用 当然这也是让很多人忘而却步的地方 2. 为什么不能用? 原因是flexbuilder中 精简了eclipse 中的一些组建 ,vss插件又需要,怎么办? 刚准备的eclipse 就发挥了用处 下载一个eclipse (请下载对应的版本) 然后解开 将eclipse 的plugin 目录下的 org.eclipse.jdt.* 的目录和文件 全部拷贝到 flexbuilder 的plugin (若为myEclipse则是将myEclipse下eclipse\plugins) flashbuilder也一样 ----下面是在FlexBuilder中配置VSS ------- 1. 首先绑定项目到VSS。就算打开的项目是从VSS里获取的,第一次打开也需要手动绑定。选中图中最后一个菜单中的选项:Share Project进入新界面后,选中VSS Configuration Wizard进入如下界面。 2. 填上客户端用户名、密码、服务器端VSS目录、项目目录、项目在VSS里的目录。 VSS Repository supports multiple checkouts.不选,此项是VSS支持多人同时签出。根据实际情况决定是否选中。 3.单击Finish。配置VSS完毕。 4.配置完毕。 VSS配置完成后。项目并未与VSS有任何关联,此时需要 Update State来关联到VSS。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值