快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

和记娱乐的网址_博格自动化网进入



接着上一节:

我们先办理如下问题:

在界面操作历程中,我们盼望面对的是边框调剂事故,图形移动事故,或者是编辑文本事故,而不是原始的鼠标和键盘事故?

术语定义:

系统UI事故:    一样平常由某些谋略机人机交互硬件发出旌旗灯号,并且经操作系统理解后孕育发生的事故,例如:原始的鼠标的移动、点击和键盘的敲击事故等。

UI营业语义事故: 由系统UI事故和其它UI营业语义事故触发,由UI营业代码理解后孕育发生的事故(操作系统弗成理解,同时无任何领域的营业语义),如2D图形的尺寸调剂,2D图形的点击,2D图形的移动。

(着实不仅限于事故的转义,包括UI的改变,也必要由系统UI语义转换到UI营业语义来应用)

UI营业语义事故在Controller节制中的优和记娱乐的网址点是易于理解、掩护和扩充,详细的主要有以下方面:

a.削减系统UI事故判断逻辑部分代码的重复。比如在Controller部分代码无需分步着大年夜量逻辑重复的代码,当鼠标移动时去判断究竟是一个2D图形的尺寸改变,照样一个2D图形的移动,照样一组2D图形的移动,照样2D图形DragAndDrop的动作。

b.Controlle和记娱乐的网址r部分的代码语义明确。在Controller内部处置惩罚代码和接口中直接面对的是UI营业语义,如图形的移动,图形的尺寸改变,这样、代码易于理解、调试等。

b.Controller部分代码无需为系统UI事故保存状态。如2D图形的移动中,假如这些事故直接在Controller中处置惩罚,从开始MouseDown,到MouseMove,到MouseUp历程中,在Controller中要集中保留这样浩繁状态,极易造成Controller代码详细多头职责的症状,从而患上严重的精神决裂:)。

于是乎GEF的FrameWork有给出以下的办理规划:

图A

如上图A:

GEF经由过程Tools(根interface是Tool),当然在视图上的Menu和Toolbar是经由过程Action发出,这个是eclipse的Workbench机制,在此就不评论争论了。以下是T和记娱乐的网址ool的类承袭树:

图B

从上图B可以看出

从Tool承袭的这些类均处置惩罚一个或者一类UI营业语义事故,此中必要保留中心状态的子类均以XXXTracker形式呈现。

首先这些Tool的实现类经由过程Tool的接口(上图右边),接管界面来的事故,然后调用内部handleXXX,这样经由过程内部函数getTargetRequest()[createTargetRequest()]和getSourceRequest()[createSourceRequest()],把系统UI事故转换为UI营业语义事故叫Request(如图C)。至此Tool会经由过程调用相关联的EditPart的接口将UI营业语义事故看护到EditPart中。于是在Controller(EditPart)中仅仅必要理解处置惩罚Request工具。

图C

下面以ResizeTracker代码为例:

class ResizeTracker

protected Request createSourceRequest() {

ChangeBoundsRequest request和记娱乐的网址;

request = new ChangeBoundsRequest(REQ_RESIZE);

request.setResizeDirection(getResizeDirection());

return request;

}

protected Command getCommand() {

List editparts = getOperationSet();

EditPa和记娱乐的网址rt part;

CompoundCommand command = new CompoundCommand();

command.setDebugLabel("Resize Handle Tracker");//$NON-NLS-1$

for (int i = 0; i

您可能还会对下面的文章感兴趣: