2007-12-21

关于插件更新安装的错误

关键字: eclipse插件 update安装
在更新插件的时候出现这样的错误: Unable to complete action for feature "Bstek DataSource Feature" due to errors. The File "C:\DOCUME~1\MACROC~1\LOCALS~1\Temp\eclipse\.update\1198219377796\1198219377798\eclipse4231.tmp" is not a valid JAR file. [error in opening zip file] error in opening zip file The File "C: ...
2007-12-16

最近做eclipse branding, features的一些经验

关键字: branding features
知道eclipse的splash怎么做的吗? 这个一般是要改两个地方: 一个eclipse安装目录下的eclipse.ini文件中,加上如: -showsplash com.genuitec.myeclipse.product 这里的com.genuitec.myeclipse.product就是那个splash.bmp图片(图片名字是写死了的)的工程. 还有一个要改的就是eclipse安装目录configuration文件夹下的config.ini文件, 将osgi.splashPath = platform:/base/plugins/org.eclipse.platform改成splas ...
2007-12-07

GEF学习笔记

关键字: gef draw2d editpart command editpolicy
GEF以前学习过, 而且还按照Dudu的教程做了一遍, 在网上也找了不少资料, 不错的文章也转载了不少,只不过当时对插件开发还只是一知半解, 对图形开发更是没有什么概念,导致的直接后果就是:现在基本上全部忘记光了,于是不得不从头开始,不过这次不仅要知其然, 而且还要知其所以然, 不过理解起来还是比较快的, 不知是拖以前学习的底子的福, 还是因为这么长时间做Eclipse开发来的基础 在理想的情况下,命令应当只知道模型。因此应当尽量避免对EditPart和图形的引用。 图形(Figure)不应该去访问EditPart和Model, 即使Figure要引用EditPart, EditPart ...
2007-11-30

SWT布局深入学习

关键字: SWT Layout
以下内容是学习"The Definitive Guide to SWT and JFace"(SWT/JFace权威指南)做的笔记 对于Window编程来说, 我们一般不会涉及到布局这个概念,因为基本上我们都是直接设置控件的大小, 位置等布局信息, 但是对于java来说就不一样了, 它涉及到跨平台的问题, 控件的位置和大小不是由它本身来控制的,因此我们不会看到控件有x, y, width, height等属性,而必须通过外面LayoutData和Layout来控制控件的位置和大小,这个是使用Java进行客户端编程必须转变的一个观念,当然这个也不是绝对,后面我们也会看到不使用布局的做法,但是我 ...
2007-11-25

Eclipse Action 深入学习笔记(3)

关键字: Eclipse Action Contributition
filter元素是用来指定当前的contribution是否可用, 它的用法跟visibility中的objectState类似, 比如只有选择的对象为只写才可用, 那么可以这样写: xml 代码 <objectContribution ...>      <filter name="readOnly" value="false"/>      ... ...
2007-11-25

Eclipse Action 深入学习笔记(2)

关键字: Eclipse Action Contributition
Object Action 这种Action是跟弹出的上下文菜单相关的, 因此它主要用在org.eclipse.ui.popupMenus扩展点下的objectContribution 节点中, 这里有几个属性需要做一下说明: adaptable:true表示能将选中对象适配为objectClass中指定的类型 nameFilter:这个是用来指定哪种文件类型为当前contribution可用, 比如设置为*.java表示当前action只针对java文件 objectClass:指定contribution只用于那种对象类型 contribution的其他属性跟前面介绍的大同小异 ...
2007-11-25

Eclipse Action 深入学习笔记(1)

关键字: eclipse action
以前做插件用到的ActionSet都只是依葫芦画瓢,没有真正理解它,现在开始好好学习学习,主要是看"Building Commercial-Quality Plug-ins"写的 Action的组成包括几个部分,一个是在plugin.xml中的声明,一个是在Eclipse UI中会用到的IAction实例化对象, 另一个是封装在IActionDelegate中的action执行代码. action的实例化是基于plugin.xml配置文件和IActionDelegate定义的,Eclipse可以先在界面上将action显示出来,直到用户点击了菜单或者工具条按钮才会去真正的加载插件,这也就是所 ...
2007-11-24

JFace Text Editor完全掌握之终极指南(4)

关键字: TextEditor 分割 错误标记 内容辅助 语法高亮 内容大纲
错误标识(Error Marking) Error Marking用来对编辑的文档根据一定的规则进行验证,比如对于XML文档来说,可能是XML DTD或者XML Schema.其实现跟内容大纲比较类似,首先在解析文档的时候对error加以标识.这里我们使用了SAX ErrorHandler来收集和定位所有的error, 接着在生成内容大纲的同时进行验证和error marking,这个工作在文档被加载和文档保存的时候都会进行.   在XMLEditor的validateAndMark()方法中完成对error marking的初始化: java 代码 ...
2007-11-24

JFace Text Editor完全掌握之终极指南(3)

关键字: TextEditor 分割 错误标记 内容辅助 语法高亮 内容大纲
内容大纲 之所以要给编辑器提供内容大纲主要基于两点:一是让用户更好的总览文档全局,二个是能更方便的定位到指定的文档位置 如下图所示   内容大纲能做的三件事: 1.对结构性文档内容的解析,在XML编辑器中,我们需要显示节点的名称,属性名与值,但是不显示节点文档内容 2.能通过内容大纲进行更新,在内容大纲中直接对编辑器内容进行修改,这里我们不做实现 3.导航功能的支持,当在内容大纲中选中了一个节点,那么在编辑器中对应的部分应该立即高亮显示 首先我们要做的工作就是把内容大纲与编辑器关联起来,Eclipse提供了一个接口IContentOutlinePage, 但是我们最简 ...
2007-11-24

JFace Text Editor完全掌握之终极指南(2)

关键字: TextEditor 分割 错误标记 内容辅助 语法高亮 内容大纲
最后一步就是实现各种功能 语法高亮 首先我们要实现的是语法高亮.如下图所示:   从本质上来说,语法高亮就是给分割后的Token指定相应的显示属性,在语法高亮的处理机制里面也需要用到Token, Scanner和Rule这些东西.通过复写SourceViewerConfiguration的getPresentationReconciler()方法来给指定的内容类型添加语法高亮的特性:   java 代码 public IPresentationReconciler getPresentationReconcile ...
2007-11-24

JFace Text Editor完全掌握之终极指南(1)

关键字: TextEditor 分割 错误标记 内容辅助 语法高亮 内容大纲
JFace Text Editor是JFace里面一个功能强大,结构复杂而且非常重要的组件,要掌握它还需要花不少的功夫,下面我们将通过"Building an Eclipse Text Editor with JFace Text"的翻译来掌握它的用法 提到Text Editor,就不得不提到与之密切相关的SourceViewerConfiguration类,Text Editor的许多功能都是通过该类配置上去的,还有一个是IDocumentProvider接口,Text Editor所要编辑的文件对象就是通过该接口提供的. Editor编辑的内容封装在IDocumen ...
2007-11-24

最近的Eclipse plugin开发总结

关键字: aptana
List控件没有提供addDblClickListener方法,如果要处理双击事件,则需要这样处理:   java 代码 list.addListener(SWT.MouseDoubleClick, new Listener() {       public void handleEvent(Event event) {        System. ...
2007-11-24

eclipse3.3关于JavaFileEditorInput兼容性问题的解决

关键字: Eclipse 兼容 JavaFileEditorInput
在eclipse3.3中,JavaFileEditorInput这个internal类已经被干掉了,所以导致在插件中使用了JavaFileEditorInput之后导致编译不通过,为了做到与eclipse3.3以前版本兼容(至少是3.2),需要进行一下变通 通过google,我们发现,虽然eclipse3.3干掉了JavaFileEditorInput类,但是添加了FileStoreEditorInput来处理打开位于workspace之外的文件. 所以解决办法出来了,首先要判断一下当前的eclipse版本: java 代码 private sta ...
2007-11-21

Eclipse WTP Projects Facets实战指南(2)

关键字: Eclipse WTP Facet
修饰工作 给facet在选择列表中添加图标 格式如下: xml 代码 <extension point="org.eclipse.wst.common.project.facet.ui.images">     <image facet="{string}" path="{string}"/> (0 or more)     &nb ...
2007-11-21

Eclipse WTP Projects Facets实战指南(1)

关键字: Eclipse WTP Facets
这个文章基本是"Building Project Facets"的中文版 在WTP中创建Dynamic Web Project工程的时候提供了Project Facets的功能,它让用户在创建web项目的时候,可以像搭积木一下给我们创建的project添加各种功能模块,下面我们通过一个例子来讲解一下WTP中的Project Facets的用法 通常我们给创建的工程可能添加以下元素:资源文件, Builder, Nature标识等, 我们知道Eclipse本身提供了一个Nature的功能,但是Facets跟Nature是有区别的, 给工程添加Nature是用来给Eclip ...
2007-11-05

也说关于WizardPage的动态生成

关键字: WizardPage 动态生成
         在Eclipse中一个Wizard=WizardDialog+Wizard+WizardPage,在这三者中,可以把前者看成后者的容器(container),看看这些类里面的代码就知道,Eclipse自己也是这么认为的,而我们最终看到的东西是WizardPage,在一个Wizard中虽然我们看到的是每一个WizardPage都是在点击next的时候一个一个显示的,但是他们的创建却是在Wizard初始化的时候一起被实例化的,因此这个给我们制造联动效果的WizardPage(也就是后一个WizardP ...
2007-09-03

关于多页编辑器中不同Editor之间的Redo&Undo冲突的解决

关键字: Redo&Undo IUndoManager ContributorActionBar
在我们的插件工具的开发过程中碰到一个问题,就是在编辑xml文件的时候,因为采用了EMF建模,导致在使用Eclipse Forms编辑节点和属性与编辑事件的JavaScript脚本的Editor之间二者的Redo&Undo功能有一定的冲突,EMF的Redo&Undo不可用,当把JavaScript编辑器中TextViewer的UndoManager屏蔽了之后,EMF的Redo&Undo才能正常,开始跟踪调试代码,始终没有找到问题的症结所在,经过几天的摸索,最终找到了答案. 原来跟ContributorActionBar有关,在插件中,对于Editor(这里的Editor ...
2007-08-23

TextEditor原理分析笔记

关键字: TextEditor SourceViewerConfiguration
Editor的语法着色原理:Eclipse使用damage ,repair和reconcile模型来实现语法着色功能,当用户每次修改了document,Reconciler就会去计算文档中哪些可视区域是无效的以及如何去repair之:这里的damage表示需要重新加以显示的文本,repair则表示重新进行显示的方式,而reconcile则是这个重新显示的过程.为了定制damage和repair,需要给TextEditor配置自定义的SourceViewerConfigration,TextEditor中的主要组成部分叫SourceViewer,默认情况下SourceViewer不支持语法着色功 ...
java.lang.IllegalAccessError: tried to access field ... 定义在基类中的属性,在子类的内部类和匿名类中是无法使用的,否则会报出这样的错误,解决方法是调用属性的get方法 在打包的时候,如果在binary build中没有选中META-INF的话,会导致在调用该包中的class的时候出现找不到类的异常错误 在EMF中一个,使用TreeViewer来显示一个EMF模型,要判断一个节点是否能拖拽,主要在于这个方法 Command org.eclipse.emf.edit.provider.ItemProviderAdapter.factor ...
java 代码 String version = System.getProperty("osgi.framework.version"); //$NON-NLS-1$    if (version != null && (version.startsWith("3.2") || version.startsWith("3.3"))) //$NON- ...
在EMF自动生成的editor中,只提供了TreeViewer作为编辑控件,自动生成的代码能让TreeViewer处理Redo&Undo操作,如果还需要对EMF对应的Attribute使用Text, Combo等Widget进行编辑的话,那么如何将这些Widget的编辑也能实现Undo&Redo操作呢? 首先我们来分析一下,对于TreeViewer是如何实现Redo&Undo操作的,在生成的editor代码中有类似这样的一句(这个是我改写后的,实际生成的可能有所区别):为了只针对Redo&Undo对UI进行更新,还需要对RedoAction和UndoAct ...
2007-08-23

Display.asyncExec()用法一则

关键字: asyncExec
有时候我们需要对Text Widget输入框中的内容加以验证,如果输入内容不合法,将使用MessageDialog.openError()显示出错信息对话框,关闭对话框之后,焦点重新回到输入出错的Text Widget,并全选输入内容,但是有一个问题,会导致不断弹出错误信息对话框,其原因不得而知,这时使用Display.asyncExec()来解决,该方法会新开一个线程,并在当前所有调用执行完毕之后执行新开的线程 java 代码 PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable(){}) ...
2007-06-22

EMF序列化注意事项

关键字: EMF 序列化 恢复
在对EMF模型保存成xml文件的时候,有时候如果模型存在bug导致保存过程失败,会出现xml文件的内容全部清空的情况,这样做很不保险,因此需要对出现异常情况要能做到恢复到修改前的样子,其做法是对XMLResourceImpl这个实现类的public void save(Map options) throws IOException方法进行复写,下面是我的做法: java 代码 public void save(Map options) throws IOException {    ...
2007-06-22

插件打包的注意事项

关键字: 插件 打包 发布
如果插件项目中包含属性文件、相关配置文件等资源文件,而且这些文件不是放在class目录下,而是和source同级目录中的话,那么在打包的时候,这些项目不能打包成jar包,而应该打包成plugin文件夹的形式,否则在使用插件的时候,会出现因为找不到相关的资源文件而报错
2007-06-13

最近的eclipse开发总结

关键字: emf 打包 nature
MultiPageEditorPart datasource.xml did not propogate selection for datasource.xml 在插件运行的时候,有时候会出现这样的警告信息,但是没有抛出异常,这个一般是系统把异常捕获,然后以其他的方式对异常进行了处理 emf model加载可能发生异常,一般从org.eclipse.emf.ecore.xmi.impl.XMLLoadImpl.load中的parser.parse(inputSource, handler);加断点跟踪 更直接的跟踪位置在org.eclipse.emf.ecore.xmi.impl.XM ...
IAdaptable是Eclipse插件开发中非常重要的一个接口,在整个插件体系中也起着举足轻重的作用。网上也有不少文章来介绍这个接口的用法,因为我没有碰到那些文章中提到的一些IAdaptable应用场景,所以开始的时候对这个接口不以为然:不就是一个适配器吗?有那么重要吗?随着项目的进展,IAdaptable终于让我体会了它的好处。 先来介绍一下我的项目情况:我的项目是一个开发工具插件,其核心就是各种xml配置文件的编辑器。编辑器的组件体系比较复杂,就像芭比娃娃,一成套一层的,比如多页编辑器中套单页编辑器,单页编辑器中根据不同的内容又分成不同的区块,区块还包含最终的编辑元素,比如te ...
2007-06-08

TextActionHandler的使用以及对EditingDomainActionBarContributor的定制

关键字: Action TextActionHandler EditingDomainActionBarContributor
在使用Eclipse Forms Editor对EMF model进行编辑的时候,由于editor的contributor是继承EditingDomainActionBarContributor,因此Cut, Copy,Paste都是使用EMF的Cut,Copy和Paste,这样在Editor中进行的所有操作都将转换为对EMF model的操作,对于Viewer上的节点来说当然没有什么问题,但是如果是使用Text来进行文本编辑的时候,我们希望执行的是Text中文本的Cut,Copy和Paste,这里就需要将EMF的Action重定向到系统的Global Action,开始试了各种办法,都没有成 ...
2007-06-07

关于插件中图标对象的获取

关键字: ImageDescriptor AbstractUIPlugin Image
默认情况下,插件只能取得gif格式的图片,有时候我们需要获取其他格式的图片,这里就需要自己来写了,最近从另外一个插件aptana下发现它在获取非gif格式图片的一些做法,值得参考 在需要使用图标的地方,需要这样写: java 代码 private static Image fIconFirefox = JSPlugin.getImage("icons/firefox_icon.png");   JSPlugin中取得照片的相关代码要这样写: java 代码 ...
Veloctity默认采用文件加载的方式(FileResourceLoader)来加载模版文件,这就要求模版文件放在系统目录下,比如system32下,或者给出绝对路径,为了让其从class目录下开始查找模版文件,需要将其加载方式指定为按类的方式(ClasspathResourceLoader )进行加载,因此要改写velocity.properties文件:classpath.resource.loader.class = org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader 在eclipse plugin中 ...
2007-05-31

将emf 模型片段转换成xml字符串

关键字: XMLProcessor EMF
EMF可以在xml和model对象之间进行串行化和反串行化,这个主要是利用Resource的相关方法来实现,但是如果需要对某个EMFmodel节点转换成xml字符串,该如何做呢?这里EMF提供了另外一个类XMLProcessor,该类提供了load方法用来将xml文件、字符串或者dom对象转换成EMF模型对象,以及save方法将EMF模型对象转换成xml字符串、xml dom对象或者xml文件。XMLProcessor实际上调用Resource的相关方法来处理的,因此在调用load或者save方法之前需要手工构造相应的Resource对象。   java 代码 ...
macrochen
搜索本博客
我的相册
Ada0e84d-8670-3ebb-8447-7fb0deea5974-thumb
P1090507
共 142 张
存档
最新评论