`

最近的Eclipse plugin开发总结

阅读更多

List控件没有提供addDblClickListener方法,如果要处理双击事件,则需要这样处理:

 

java 代码

  1. list.addListener(SWT.MouseDoubleClick, new Listener() {   
  2.    public void handleEvent(Event event) {   
  3.     System.out.println(event);   
  4.    }});  

在WizardPage中要实现想到的前进和后退需要这么使用
((WizardDialog)getWizard().getContainer()).showPage(getNextPage());
而不能简单的通过wizardPage的setVisibile()来设置可见和不可见

ed.getCommandStack().execute(command);和command.execute()是有区别的,前者会告诉editor当前的EditorInput已经发生改变,而后者不会

在保存emf模型的时候,遍历每一个emf节点,都会执行org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.saveElementID该方法
保存属性执行org.eclipse.emf.ecore.xmi.impl.XMLSaveImpl.saveDataTypeSingle(EObject o, EStructuralFeature f)该方法

如何定义扩展点
我们可以给插件定义扩展来增加插件的灵活性,满足用户的定制要求.
每一个扩展点都必须包括一个唯一标识符用来标识当前定义的扩展点,在使用扩展点的时候的扩展点id就是插件全限定+这个唯一标识符,而且每一个扩展点都会关联一个schema文件,该文件用来告诉用户如何使用该扩展点,不过该schema文件不是必须的,但是他可以为我们定义的扩展点进行验证并自动生成相关的文档信息,schema文件以<extension-point-id></extension-point-id>.exsd的格式存放在插件所在目录的schema文件夹下
图片文件之类的,在定义扩展点属性的时候,必须将其kind属性设置为resource,而如果是java类的话,则需要将kind属性设置为java

Display.syncExec() and asyncExec()方法的区别,前者是同步执行,这里的"步"可以理解是管道,也就是在一个管道中挨个执行线程(当前线程+指定线程),后者是异步执行,也就是它可以另起一个管道来执行指定的线程.syncExec在指定的线程执行完毕之后才返回,asyncExec无论指定的线程是否结束都返回到当前的线程

获得IWorkBenchWindow的方法:
IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();

得到pluginId要这么用:
CommonPlugin.getDefault().getBundle().getSymbolicName()

根据pluginId得到一个bundle
Bundle bundle = Platform.getBundle(pluginId);

通过调用Display.getCurrent()来知道当前线程是否是UI线程。如果Display.getCurrent()返回为空,表示当前不是UI线程。只有一个UI线程,其他的都是非UI线程

Job的join方法表示当前job执行完成之后再执行job后面的代码,否则这个顺序是无序的

在非UI线程中调用UI线程会抛出SWTException异常,要解决这个问题需要使用Display.syncExec()或者asyncExec()方法,还有一种解决方法就是用时UIJob,不过必须复写runInUIThread()方法,将逻辑代码放在该方法中执行而不是run()方法中

打开对话框查找多个制定类型的文件可以参考org.eclipse.jdt.internal.ui.wizards.buildpaths.LibrariesWorkbookPage.openExtJarFileDialog()方法

java.lang.VerifyError: (xxx) Wrong return type in function问题的解决
一般出现这种错误是由于java complier和jre的版本不一致导致的,一般在升级的时候很容易碰到,比如有时候指定在java 1.4下编译,但是实际上我们的程序在java5.0下跑
还有一种可能就是升级之后,原来的类已经从一个包里面移动到另外一个包下面了,而加载classpath的时候存在两份

跟踪键盘事件的时候, 在该方法下加断点void org.eclipse.swt.widgets.TypedListener.handleEvent(Event e)

对于显示tooltip提示信息需要在void org.eclipse.swt.widgets.TypedListener.handleEvent(Event e)中监听SWT.MouseHover类型的事件

aptana js editor中的提示信息的获得通过com.aptana.ide.editors.unified.hover.LexemeTextHover.getHoverInfo(ITextViewer textViewer, IRegion hoverRegion)
取得

在aptana中对文档的分割使用到Lexme的概念, 而所有的提示, 自动提示功能都是建立在Lexme的基础上的

aptana加载内容提示配置文件在com.aptana.ide.editor.js.JSLanguageEnvironment中实现

向日志中添加一条出错信息:
IStatus status = new Status(IStatus.ERROR,
  "org.eclipse.jface", //$NON-NLS-1$
  0, message, new Exception());
Policy.getLog().log(status);

IWorkspace ws = ResourcesPlugin.getWorkspace();用来取得workspace对象

分享到:
评论

相关推荐

    maven2 plugin for eclipse

    在开发过程中我们回遇到这么一种情况,比如你建了 两个项目,一个为 project1 一个为project2 而这两个项目都用到一个jar 包。比如junit.jar 如果两个项目各自导入 junit.jar 不仅对磁盘空间是一个浪费,而且也不好...

    在Eclipse中开发struts应用程序

    配置和开发struts应用项目三.总结参考资料关于作者一.下载并安装EasyStruts包1.EasyStruts是开放源代码组织sourceforge.net上的一个项目,目前最新的版本是0.64,可以在它的网站...

    Eclipse RCP Plug-in开发自学教程(Eclipse3.6)

    最近抽些时间,更新到eclipse3.6上来,既作为为广大Eclipser入门plugin/RCP开发的一个方便之门,也是对自己近年来学习的一个总结吧。 每一章都会单独提取出来,并尽可能的独立于其他章节,更新中的源代码工程也会...

    springside-3.3.3-src.zip

     它以RoR式的简约风格,将Java社区众多优秀轻量级开源项目整军为一个黏合的框架,以构件式的开发架构,配合Ant与Eclipse plugin的生成工具,作为大家开发Java企业应用的方便起点。  同时,它的示例代码充分演示了...

    flex and blazed blazeds简单例子

    2,eclipse的flex插件:FB3_WWEJ_Plugin.exe 3,必须得到blazeds.war,网上很多,可以进行下载(附件中配备) 下来,演示例子。 1,创建web项目: 我的项目是hello 2,将blazeds.war放入tomcat中,启动,将blazeds...

    android开发指南

    为Eclipse配置Android Plugin - 第三章(3) 10 第四章 浏览Android SDK 11 浏览Android SDK - 第四章(1) 11 Android SDK是什么 - 第四章(2) 12 Android 文档 - 第四章(3) 12 Android示例 - 第四章(4) 13 ...

    Maven权威指南 很精典的学习教程,比ANT更好用

    总结 2. 安装和运行Maven 2.1. 验证你的Java安装 2.2. 下载Maven 2.3. 安装Maven 2.3.1. 在Mac OSX上安装Maven 2.3.2. 在Microsoft Windows上安装Maven 2.3.3. 在Linux上安装Maven 2.3.4. 在FreeBSD或...

    springmybatis

    mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包。这些软件工具均可以到各自的官方网站上下载。 首先建立一个名字为 MyBaits 的 dynamic web project 1. 现阶段,你可以...

    Ext Js权威指南(.zip.001

    第1章 ext js 4开发入门 / 1 1.1 学习ext js必需的基础知识 / 1 1.2 json概述 / 3 1.2.1 认识json / 3 1.2.2 json的结构 / 3 1.2.3 json的例子 / 4 1.2.4 在javascript中使用json / 4 1.2.5 在.net中使用...

Global site tag (gtag.js) - Google Analytics