在更新插件的时候出现这样的错误:
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: ...
知道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 ...
GEF以前学习过, 而且还按照Dudu的教程做了一遍, 在网上也找了不少资料, 不错的文章也转载了不少,只不过当时对插件开发还只是一知半解, 对图形开发更是没有什么概念,导致的直接后果就是:现在基本上全部忘记光了,于是不得不从头开始,不过这次不仅要知其然, 而且还要知其所以然, 不过理解起来还是比较快的, 不知是拖以前学习的底子的福, 还是因为这么长时间做Eclipse开发来的基础
在理想的情况下,命令应当只知道模型。因此应当尽量避免对EditPart和图形的引用。
图形(Figure)不应该去访问EditPart和Model, 即使Figure要引用EditPart, EditPart ...
以下内容是学习"The Definitive Guide to SWT and JFace"(SWT/JFace权威指南)做的笔记
对于Window编程来说, 我们一般不会涉及到布局这个概念,因为基本上我们都是直接设置控件的大小, 位置等布局信息, 但是对于java来说就不一样了, 它涉及到跨平台的问题, 控件的位置和大小不是由它本身来控制的,因此我们不会看到控件有x, y, width, height等属性,而必须通过外面LayoutData和Layout来控制控件的位置和大小,这个是使用Java进行客户端编程必须转变的一个观念,当然这个也不是绝对,后面我们也会看到不使用布局的做法,但是我 ...
filter元素是用来指定当前的contribution是否可用, 它的用法跟visibility中的objectState类似, 比如只有选择的对象为只写才可用, 那么可以这样写:
xml 代码
<objectContribution ...>
<filter name="readOnly" value="false"/>
... ...
Object Action
这种Action是跟弹出的上下文菜单相关的, 因此它主要用在org.eclipse.ui.popupMenus扩展点下的objectContribution 节点中, 这里有几个属性需要做一下说明:
adaptable:true表示能将选中对象适配为objectClass中指定的类型
nameFilter:这个是用来指定哪种文件类型为当前contribution可用, 比如设置为*.java表示当前action只针对java文件
objectClass:指定contribution只用于那种对象类型
contribution的其他属性跟前面介绍的大同小异
...
以前做插件用到的ActionSet都只是依葫芦画瓢,没有真正理解它,现在开始好好学习学习,主要是看"Building Commercial-Quality Plug-ins"写的
Action的组成包括几个部分,一个是在plugin.xml中的声明,一个是在Eclipse UI中会用到的IAction实例化对象, 另一个是封装在IActionDelegate中的action执行代码. action的实例化是基于plugin.xml配置文件和IActionDelegate定义的,Eclipse可以先在界面上将action显示出来,直到用户点击了菜单或者工具条按钮才会去真正的加载插件,这也就是所 ...
错误标识(Error Marking)
Error Marking用来对编辑的文档根据一定的规则进行验证,比如对于XML文档来说,可能是XML DTD或者XML Schema.其实现跟内容大纲比较类似,首先在解析文档的时候对error加以标识.这里我们使用了SAX ErrorHandler来收集和定位所有的error, 接着在生成内容大纲的同时进行验证和error marking,这个工作在文档被加载和文档保存的时候都会进行.
在XMLEditor的validateAndMark()方法中完成对error marking的初始化:
java 代码
...
内容大纲
之所以要给编辑器提供内容大纲主要基于两点:一是让用户更好的总览文档全局,二个是能更方便的定位到指定的文档位置
如下图所示
内容大纲能做的三件事:
1.对结构性文档内容的解析,在XML编辑器中,我们需要显示节点的名称,属性名与值,但是不显示节点文档内容
2.能通过内容大纲进行更新,在内容大纲中直接对编辑器内容进行修改,这里我们不做实现
3.导航功能的支持,当在内容大纲中选中了一个节点,那么在编辑器中对应的部分应该立即高亮显示
首先我们要做的工作就是把内容大纲与编辑器关联起来,Eclipse提供了一个接口IContentOutlinePage, 但是我们最简 ...
最后一步就是实现各种功能
语法高亮
首先我们要实现的是语法高亮.如下图所示:
从本质上来说,语法高亮就是给分割后的Token指定相应的显示属性,在语法高亮的处理机制里面也需要用到Token, Scanner和Rule这些东西.通过复写SourceViewerConfiguration的getPresentationReconciler()方法来给指定的内容类型添加语法高亮的特性:
java 代码
public IPresentationReconciler getPresentationReconcile ...
JFace Text Editor是JFace里面一个功能强大,结构复杂而且非常重要的组件,要掌握它还需要花不少的功夫,下面我们将通过"Building an Eclipse Text Editor with JFace Text"的翻译来掌握它的用法
提到Text Editor,就不得不提到与之密切相关的SourceViewerConfiguration类,Text Editor的许多功能都是通过该类配置上去的,还有一个是IDocumentProvider接口,Text Editor所要编辑的文件对象就是通过该接口提供的.
Editor编辑的内容封装在IDocumen ...
List控件没有提供addDblClickListener方法,如果要处理双击事件,则需要这样处理:
java 代码
list.addListener(SWT.MouseDoubleClick, new Listener() {
public void handleEvent(Event event) {
System. ...
在eclipse3.3中,JavaFileEditorInput这个internal类已经被干掉了,所以导致在插件中使用了JavaFileEditorInput之后导致编译不通过,为了做到与eclipse3.3以前版本兼容(至少是3.2),需要进行一下变通
通过google,我们发现,虽然eclipse3.3干掉了JavaFileEditorInput类,但是添加了FileStoreEditorInput来处理打开位于workspace之外的文件.
所以解决办法出来了,首先要判断一下当前的eclipse版本:
java 代码
private sta ...
修饰工作
给facet在选择列表中添加图标
格式如下:
xml 代码
<extension point="org.eclipse.wst.common.project.facet.ui.images">
<image facet="{string}" path="{string}"/> (0 or more)
&nb ...
这个文章基本是"Building Project Facets"的中文版
在WTP中创建Dynamic Web Project工程的时候提供了Project Facets的功能,它让用户在创建web项目的时候,可以像搭积木一下给我们创建的project添加各种功能模块,下面我们通过一个例子来讲解一下WTP中的Project Facets的用法
通常我们给创建的工程可能添加以下元素:资源文件, Builder, Nature标识等, 我们知道Eclipse本身提供了一个Nature的功能,但是Facets跟Nature是有区别的, 给工程添加Nature是用来给Eclip ...
在Eclipse中一个Wizard=WizardDialog+Wizard+WizardPage,在这三者中,可以把前者看成后者的容器(container),看看这些类里面的代码就知道,Eclipse自己也是这么认为的,而我们最终看到的东西是WizardPage,在一个Wizard中虽然我们看到的是每一个WizardPage都是在点击next的时候一个一个显示的,但是他们的创建却是在Wizard初始化的时候一起被实例化的,因此这个给我们制造联动效果的WizardPage(也就是后一个WizardP ...
在我们的插件工具的开发过程中碰到一个问题,就是在编辑xml文件的时候,因为采用了EMF建模,导致在使用Eclipse Forms编辑节点和属性与编辑事件的JavaScript脚本的Editor之间二者的Redo&Undo功能有一定的冲突,EMF的Redo&Undo不可用,当把JavaScript编辑器中TextViewer的UndoManager屏蔽了之后,EMF的Redo&Undo才能正常,开始跟踪调试代码,始终没有找到问题的症结所在,经过几天的摸索,最终找到了答案.
原来跟ContributorActionBar有关,在插件中,对于Editor(这里的Editor ...
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 ...
有时候我们需要对Text Widget输入框中的内容加以验证,如果输入内容不合法,将使用MessageDialog.openError()显示出错信息对话框,关闭对话框之后,焦点重新回到输入出错的Text Widget,并全选输入内容,但是有一个问题,会导致不断弹出错误信息对话框,其原因不得而知,这时使用Display.asyncExec()来解决,该方法会新开一个线程,并在当前所有调用执行完毕之后执行新开的线程
java 代码
PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable(){}) ...
在对EMF模型保存成xml文件的时候,有时候如果模型存在bug导致保存过程失败,会出现xml文件的内容全部清空的情况,这样做很不保险,因此需要对出现异常情况要能做到恢复到修改前的样子,其做法是对XMLResourceImpl这个实现类的public void save(Map options) throws IOException方法进行复写,下面是我的做法:
java 代码
public void save(Map options) throws IOException {
...
如果插件项目中包含属性文件、相关配置文件等资源文件,而且这些文件不是放在class目录下,而是和source同级目录中的话,那么在打包的时候,这些项目不能打包成jar包,而应该打包成plugin文件夹的形式,否则在使用插件的时候,会出现因为找不到相关的资源文件而报错
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,开始试了各种办法,都没有成 ...
默认情况下,插件只能取得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中 ...
EMF可以在xml和model对象之间进行串行化和反串行化,这个主要是利用Resource的相关方法来实现,但是如果需要对某个EMFmodel节点转换成xml字符串,该如何做呢?这里EMF提供了另外一个类XMLProcessor,该类提供了load方法用来将xml文件、字符串或者dom对象转换成EMF模型对象,以及save方法将EMF模型对象转换成xml字符串、xml dom对象或者xml文件。XMLProcessor实际上调用Resource的相关方法来处理的,因此在调用load或者save方法之前需要手工构造相应的Resource对象。
java 代码
...
- 浏览: 245371 次
- 来自: 上海

- 详细资料
搜索本博客
我的相册
P1090507
共 142 张
共 142 张
最近加入圈子
链接
最新评论
-
TextActionHandler的使用 ...
引用能不能实现 把html格式的内容粘贴到text中 用什么好的方法 我已经很久 ...
-- by macrochen -
最近的jBPM项目总结
引用请问楼主是哪里的啊? 目前在昆明做项目
-- by macrochen -
最近的jBPM项目总结
引用看那几个页面截图, 好像 dorado? 是的,是dorado+jbpm的项 ...
-- by macrochen -
jBPM学习笔记(更新中...)
引用不知道JBPM的流程上下文是怎么做的处理?我对Shark引擎比较熟悉,在新建 ...
-- by macrochen -
jBPM学习笔记(更新中...)
引用楼主有没有对pvm做过研究? 还没呢
-- by macrochen






评论排行榜