- 浏览: 28190 次
- 性别:
- 来自: 广州
最新评论
文章列表
根据官方1.9的代码和使用手册画出的几个理解图。
web.xml配置与启动流程
数据库配置
数据库操作
一、GEF简介
GEF(Graphical Editing Framework)是一个图形化编辑框架,它允许开发人员以图形化的方式展示和编辑模型,从而提升用户体验。
GEF的优势是提供了标准的MVC(Model-View-Control)结构,开发人员可以利用GEF来完成以上这些功 ...
一些网站
http://www.ibm.com/developerworks/cn/linux/opensource/os-gef/
http://www.eclipse.org/gef/
http://gdwrx-winson.iteye.com/blog/445668
一些网站
http://www.ibm.com/developerworks/cn/linux/opensource/os-gef/
http://www.eclipse.org/gef/
http://gdwrx-winson.iteye.com/blog/445668
在Draw2d中,Lightweight是gef图形系统的”shell”及”display”,其在swt中的代理是canvas,所以所有的GEF的事件来源于这个canvas,下面就看下gef事件处理的流程,首先肯定要监听canvas的事件,这个通过LightweightSystem的addListeners函数注册其内的canvas的各种事件监听器。
1.SWT层事件监听器安装:
Class ScrollingGraphicalViewer. createControl(Composite parent)
Class FigureCanvas(int style, Composite par ...
GEF中Editor创建的时序图
- 博客分类:
- eclipse开发
以eclipse网站上例子A Shape Diagram Editor为例
org.eclipse.core.resources.builders用于提供一种操作,这种操作可以在IResource改变的时候自动去build,如同改变java文件,会自动进行build,显示错误一样,我们扩展这个builder,并且在自己的项目中使用。我们要做的就是实现build的过程,至于时机由eclipse控制
<extension
id="builder的ID"
name="builder的NAME"
point="org.ecl ...
org.eclipse.ui.decorators这个扩展点可以为对应的节点添加不同的图标显示。
使用方式都差不多,以下就转载一下使用方式:
1、添加扩展点 org.eclipse.ui.decorators
2、修改plugin.xml
<extension
point="org.eclipse.ui.decorators">
<decorator
id="my.ui.decorator"
label="IFolder Decorator& ...
eclipse插件开发中常使用命令来声明实现一个菜单,具体步骤是:1.声明一个命令;2.创建使用该命令的菜单项;3.创建该命令对应的处理器(handler)。
1.通过org.eclipse.ui.commands扩展点声明一个command,每个command即为一个ui ...
在eclipse插件开发过程中,需要引入很多的第三方jar包,但经常的会出现一个 NoClassDefFoundError的异常,看起来和ClassNotFoundException非常的类似,应该都为类加载时异常。
在一次开发过程中遇到这个问题,通过网上的一篇文章,我了解了这两个异常的区别:http://blog.csdn.net/lang_m/article/details/552805。
了解了这两个类的区别后,卧稍微总结了一下eclipse插件开发过程中引起NoClassDefFoundError的可能原因。
1.所需要的jar包,配置了在开发过程中配 ...
适配器(Adapter)
- 博客分类:
- Java设计模式
适配器模式通常可以适用于:
Adapter pattern可以将以前实现的类包装建出新的类,一旦类出现bug,在确定既有类没bug的情况下,只要重点检查Adapter参与者类,即是已有的类需要符合新建的接口,在不改动原有类的情况下,使用适配器模型来符合该接口(API)。
版本更新与兼容性要求时,也可以考虑适配器模式来兼容Version2与Version1。
模式参与者:
Target:决定现在需要什么方法的参与者,如下例的NoteBookVoltage
Client:利用Target的方法来完成事情,如下例的Main
Adapte ...
迭代器(Iterator)
- 博客分类:
- Java设计模式
迭代器模式属于行为型模式,提供一种方法顺序访问一个聚合对象中得各个元素,而又不需要关心、暴露该对象的内部实现。
使用迭代器模式来实现一个书架,类图如下:
Aggregate:表示使用迭代器的集合接口(本身创建Iterator)
BookShelf:实现Aggregate接口的书架类,创建对应的Iterator
Iterator:定义访问和遍历元素的接口
BookShelfIterator:具体实现Iterator,对BookShelf进行遍历和跟踪的类
Eclipse事件与通讯
- 博客分类:
- eclipse开发
在开发Eclipse插件开发rcp过程中需要用到很多的事件监听,稍稍的统计一下比较基础的和经常会用到的事件。
SWT/JFACE事件:
1.鼠标事件:MouseListener,MouseMoveListener,MouseTrackListener
2.键盘事件:Keylistener
3.焦点事件:FocusListener
4.组件窗口控制事件:ControlListener
5.选择事件:SelectionListener
6.Viewer的拖拽事件:DragSourceAdapter,ViewerDropAdapter
...
在第二步中需要有个PluginClassCodeGenerator类,是用来生产插件工程的启动类Activator,在eclipse源码中,也需要依赖向导中保存的一些上下文信息,也需要进行改造,改造后如下。
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.ArrayList;
import org.eclipse.core.resources ...
在第一步完成后,我从pde的向导代码入手看eclipse生成代码的机制,发现经过一些小改造,其实完全可以脱离向导的实现,因为在向导中,eclipse保存一些信息作为创建插件工程的必须项。
有兴趣的话可以看看eclipse的最终实现类:NewProjectCreationOperation,最终调用这类的execute(IProgressMonitor monitor)方法。
经过改造后的类如下:
import java.util.ArrayList;
import java.util.Set;
import java.util.TreeSet;
import ...