博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
eclipse学习点滴
阅读量:3535 次
发布时间:2019-05-20

本文共 1794 字,大约阅读时间需要 5 分钟。

近一段事件在研究eclipse,记录点滴,防止忘记

1.带调色板的GEF编辑器的拖拽

在调色板的ViewerProvider中定义拖拽源

viewer.addDragSourceListener(new TemplateTransferDragSourceListener(viewer));

在编辑器中定义目的地监听

_viewer.addDropTargetListener(new LocalSelectionDropTargetListener(_viewer));

_viewer.addDropTargetListener(new PDTemplateTransferDropTargetListener(_viewer));
_viewer.addDropTargetListener(new ResouceDropTargetListener(_viewer));

主要注意的是定义的源是PDTemplateTransferDropTargetListener类型的监听,他会自动判断是否是匹配的类型,所以其他的监听是不会执行的,他会自动区分类型,不是依靠的isEnable进行判断的。

 

2.拖拽到容器内的处理过程

在定义Editor的时候会根据textEditor的model取得DocumentEditPart,然后会设置EditPart的值(通过工厂取得)

在拖拽的过程中,取得EditPart,然后根据取得其对应的策略,通过策略取得对应的Command,然后执行Command

执行完成以后会调用postPostExecute更新执行结果

 

3.HTMLEditor(wtp中得控件),在初始化GraphicEditor的时候一定要先初始化TextEditor,他需要TextEditor的model设定GraphicEditor属性

 

4.调色板上拖拽图标的内容

主要采用扩展机制,如果定义了扩展的机制,就采用扩展机制的,如果没有定义,采用默认的。

 

5.所有拖拽的小图标都是TagToolPaletteEntry的对象

 

6.EditPart中得setContents,他是用来设置Viewer的内容,他包含二个方法,一个是

public void setContents(EditPart editpart) {

getRootEditPart().setContents(editpart);
}

 

另外一个是

public void setContents(Object contents) {

Assert.isTrue(getEditPartFactory() != null,
"An EditPartFactory is required to call setContents(Object)");//$NON-NLS-1$
setContents(getEditPartFactory().createEditPart(null, contents));
}

 

6.GEF退拽生成对象的原理

视图添加拖拽addDropTargetListener,添加的监听是个TemplateTransferDropTargetListener的子类,其中TemplateTransferDropTargetListener包含了一个方法getFactory是制定对象生成的工厂类。

实际拖拽过来如何判断需要那个工厂类,需要看TemplateTransferDropTargetListener中使用getFactory的方法

protected Request createTargetRequest() {

// Look at the data on templatetransfer.
// Create factory
CreateRequest request = new CreateRequest();
request.setFactory(getFactory(TemplateTransfer.getInstance()
.getTemplate()));
return request;
}

也就是说在生成的request中已经 包含了使用工厂类的类别,就可以根据拖拽对象的不同生成对应的对象。

 

7.排序的常量是PositionConstants

转载地址:http://lnmhj.baihongyu.com/

你可能感兴趣的文章
分布式文件系统FastDfs的搭建
查看>>
Springboot项目利用Java客户端调用FastDFS
查看>>
全文检索工具elasticsearch的安装和简单介绍
查看>>
利用Kibana学习全文检索工具elasticsearch
查看>>
SpringBoot在Test测试类或自定义类中通过@Autowired注入为null
查看>>
使用docker搭建YAPI服务
查看>>
西南科技大学OJ题 邻接表到邻接矩阵1056
查看>>
西南科技大学OJ题 有向图的出度计算1057
查看>>
西南科技大学OJ题 有向图的最大出度计算1059
查看>>
西南科技大学OJ题 带权有向图计算1063
查看>>
oracle主键自增触发器编写
查看>>
String与StringBuilder与StringBuffer三者的差别
查看>>
各种IO流之间的关系和区别
查看>>
SSM如何实现上传单图片
查看>>
SSM环境下java如何实现语音识别(百度语音识别版)
查看>>
ajax方法参数的用法和他的含义
查看>>
数据库基础技巧及用法
查看>>
实用方法:无request参数时获得当前的request的方法
查看>>
JS操作数组常用实用方法
查看>>
java实现MD5多次进行加密加盐操作
查看>>