`

Feedback(反馈)详述一

    博客分类:
  • GEF
 
阅读更多

Feedback用于对gef编辑器操作的反馈,最常见的是一些鬼影效果。

 

 

1.Feedback的调用:

每个gef编辑器都有一个EditDomain对象,EditDomain主要是用于触发事件用的,这样说真的很不负责任。但是,事件的转发确实是它的主要责任之一。首先它会获取到事件源,然后获取到当前活动的ActiveTool,然后转发给当前活动的ActiveTool。至于事件是如何响应的,如何处理的,都是由Tool来处理的。(关于EditDomain和tool这块在另一篇文章里面有描述)

由于事件的响应都是由ActiveTool处理的,EditDomain只做转发,所以,最源头调用Feedback的地方是各个ActiveTool,这个获取一下引用就能够找到了,包括最终销毁Feedback效果也是在ActiveTool里面处理的。

 

 

2.Feedback的创建:

尽管调用是在ActiveTool里面,但是创建却是在EditPart里面,在EditPart接口里面定义了四个方法:

 

void eraseSourceFeedback(Request request);

void eraseTargetFeedback(Request request);

void showSourceFeedback(Request request);

void showTargetFeedback(Request request);
 

这还没完,我们可以看看AbstractEditPart里面对这些方法的实现,这里只贴出一个:

 

public void showSourceFeedback(Request request) {
		if (!isActive())
			return;
		EditPolicyIterator i = getEditPolicyIterator();
		while (i.hasNext())
			i.next().showSourceFeedback(request);
	}
 

从代码可以看出,其实gef的默认实现是调用EditPolicy里面的实现。现在就要弄清楚了,其实EditPart和EditPolicy里面都能够实现Feedback效果。具体在那里实现,完全看这个效果的粒度,如果它针对所有的请求都有效,可以直接在EditPart里面实现,如果只针对部分请求有效,就实现在EditPolicy里面。

 

 

3.Feedback的实现:

其最基本的实现原理是:在编辑器的根上有一个Feedback Layer,所有的与Feedback效果相关的IFigure,都是画在这个层上面的,所以一般打印是不会打印出Feedback的效果的。一个gef编辑器的最底层的容器是一个由多个层组成的IFigure,这个网上查一下就很清楚了。

 

一般我们需要获取图片的画,主要是获取打印Layer,然后通过对打印层的部分在内存中重画成一个image对象,然后保存到文件中,这个是打印层主要的用法。还有连线层,专门是放线的。Feedback专门用于显示反馈效果的。 

 

在GraphicalEditPolicy里面有一个addFeedback(IFigure figure)方法,把自己想显示的效果实现在这个地方,就能显示了。

 

protected void addFeedback(IFigure figure) {
		getFeedbackLayer().add(figure);
	}
 

具体的实现细节自己把握。

 

 

分享到:
评论

相关推荐

    参考资料-性格测试feedback fail.zip

    "参考资料-性格测试feedback fail.zip"中的内容可能涉及一个性格测试过程,其中反馈环节出现了问题或未达到预期。这个压缩包包含了一个名为"参考资料-性格测试feedback fail.pdf"的文件,可能是对测试结果分析或解释...

    毕业论文已改=feedback 2-论文.zip

    这篇名为"毕业论文已改=feedback 2-论文.zip"的压缩包文件,很可能包含了学生对论文的修订版本,以及导师或评审给出的反馈意见。在本文中,我们将探讨论文写作的关键要素,特别是针对IT领域的论文,以及如何根据反馈...

    大模型-大模型反馈训练基础认知视频

    本资源围绕“大模型-大模型反馈训练基础认知视频”展开,旨在帮助我们理解大模型及其核心训练技术——反馈训练(RLHF,Reinforcement Learning with Human Feedback)的基础概念。 大模型,顾名思义,是指规模庞大...

    基于 MATLAB 的 EEG 神经反馈训练系统

    标题 "基于 MATLAB 的 EEG 神经反馈训练系统" 提示我们关注的焦点是使用 MATLAB 进行一种特殊的应用——EEG(脑电图)神经反馈训练。这涉及到生物医学信号处理、神经科学以及心理学等领域。MATLAB 是一个强大的数学...

    Cooperative control of multi-agent system based on two-delay feedback

    文章的最后部分详述了如何通过找到所有分解子系统控制参数区域的交集来解析获得一组分布式H∞两延时反馈控制参数,并通过仿真结果验证了所提方法的有效性。 关键词包括:多智能体系统、时延、两延时控制器和H∞性能...

    债券交易系统市场参与方数据接口规范

    3. 回报库:zq_feedback.dbf则记录了交易处理的结果,如成交状态、成交价格、成交量等反馈信息。 四、申报处理逻辑描述 这部分详述了交易申报的处理流程,包括从申报的接收、验证、匹配到执行的各个环节,确保交易...

    二维搜索峰值matlab代码-real_time_vibrotactile_feedback_3D_trajectories:请参阅下面此页面

    运行算法的步骤详述如下: 为实验和对照条件两者: 通过指定沿轨迹应出现过Kong点的分数点(m1、m2 等),在starting_point.m 中设置所需的过Kong点数。 以弧度(theta1、theta2 等)为单位设置角度,在这些角度应在...

    模拟技术大学 运算放大器学习资料

    "Stability Analysis of Current Feedback Amplifiers.pdf"涉及电流反馈放大器(CFA)的稳定性分析。相比于电压反馈运放,电流反馈运放有更快的瞬态响应和更宽的带宽,但稳定性的分析更为复杂,此文档可能提供了深入...

    ThemeGallery 公司模板

    6. **feedback.htm**:这是一个用户反馈或联系我们页面,提供了一种方式让访客向公司发送询问、建议或投诉。通常包括表单字段,如姓名、电子邮件、主题和消息内容。 7. **contactus.htm**:与"feedback.htm"类似,...

    电子政务平台服务器集群负载调度算法分析.pdf

    作者在实际环境下,基于动态反馈的最小链接算法(Dynamic Feedback Load Balancing)进行实验,发现该算法在处理湖南省电子政务平台的并发访问需求时,表现出最优的性能。这种算法考虑了服务器的实时状态,动态调整...

    培训师的英文简历模板.doc

    7. **评估与反馈(Evaluation and Feedback)**:说明您如何评估学生技能水平,如在游泳教练工作中判断学员是否达到下一阶段技能标准。 8. **自我提升(Continuous Learning)**:除了上述经验,还可以提到任何继续...

    PMBus_Specification_Part_II

    4. 反馈与评论:规范中提供了关于向何处发送反馈和评论(Where to Send Feedback and Comments)的具体信息,帮助用户参与到规范的更新和改进中来。 5. 相关文档:规范涉及了与电源系统管理相关的一系列文档,包括...

    基于观察者的输出反馈事件触发控制,以实现多智能体系统的共识

    输出反馈控制(Output Feedback Control)则是指控制输入仅依赖于系统输出信号的控制方法。在本研究中,结合这三种技术,提出了一种新的控制策略,以实现多智能体系统的一致性。 3. 集中式与分布式控制方案 集中式...

    操作系统实验进程调度(MFC源码+实验报告)

    3. **多级反馈队列调度算法**(Multi-Level Feedback Queue Scheduling): 这是一种结合了时间片轮转和优先级调度的算法。系统设置多个调度队列,每个队列对应不同长度的时间片和优先级。新进程首先进入最高优先级...

    带有不同视场约束的多导弹分布式协同制导.pdf

    - **反馈线性化**(Feedback linearization):一种控制策略,用于简化系统动态并提高控制性能。 - **矩阵理论**(Matrix theory):数学分支,用于处理线性映射的问题,通常用于分析和设计控制系统。 综上所述,本...

    ThemeGallery 风景模板

    3. **feedback.htm**:这通常是用户反馈或联系表单的页面,用于收集访客的意见和建议。设计时需包含输入字段、提交按钮,并可能涉及到邮件发送功能,确保用户的信息能被正确地发送到指定邮箱。 4. **Package.htm**...

    feedmereadmes:免费的README编辑和反馈,使您的开源项目不断发展。 查看README成熟度模型以帮助您继续前进

    【feedmereadmes】是一个专为开源项目设计的平台,旨在提供免费的README编辑和反馈服务,以促进项目的持续发展。README文件是任何开源项目的重要组成部分,它为潜在用户、贡献者和维护者提供了项目的基本信息和使用...

    IPv6_Fundamentals_A_Straightforward.pdf

    此外,Cisco Press鼓励读者提供反馈,以提升书籍质量并满足读者需求,反馈邮箱为`feedback@ciscopress.com`。 总之,《IPv6 Fundamentals》第二版是一本全面的指南,适合网络管理员、IT专业人士以及希望了解下一代...

Global site tag (gtag.js) - Google Analytics