GEF中的反馈

GEF 学习系列之六:图元的选择框和反馈显示 图元的选择框和反馈对于非矩形的图元,默认情况下在选中时任然显示一个矩形的选中框,在选择框上显示了东南西北四个句柄,在GEF中,这些也是可以订制的,具体方法如下:1)     修改内容视图控制器的布局编辑策略ShapesXYLayoutEditPolicy,覆盖其方法EditPolicycreateChildEditPolicy 阅读详情

什么是反馈?
 所谓反馈,是指操作时显示的一些提示信息,是对用户操作的某种响应,比如拖动某个图形时,我们一般会看到一个虚影,这就是反馈。
 它告诉了用户这个图形在松开鼠标之后将会被放置在什么地方,这是一种很好的提高用户友好度的方式,也是反馈的主要目的。
 
 反馈有两种:Source Feedback(源反馈)和Target Feedback(目标反馈)。鼠标操作的图形叫源,鼠标移到时经过的地方叫目的。
 如果你的鼠标停在一个矩形上,那么那个矩形就是目标,由目标提供的反馈就叫目标反馈。
 一般我们在GEF中见到的反馈都是一些视觉上的效果,比如虚影。如果你愿意,你可以播放一段音乐或者别的什么,所以反馈并不限于
 视觉效果。对于视觉上的效果而言,GEF提供了一个缺省的层,叫Feedback  Layer(反馈层),我们看到有关反馈的图形都是添加到反馈层的。
 
 还有一个问题就是反馈的触发时机。反馈到底是在什么时候才会出现呢?对于源反馈,它是在拖动的时候触发的,对于目标反馈,鼠标的移动,进入或者拖动都有可能触发。但是这只是一般的情况,是GEF缺省的情况。如果你需要在更多的场合显示反馈,需要多实现一些方法罢了,但是也并不复杂。
 
 显示反馈的方法原型,可查看EditPart的源码:
 
 void showSourceFeedback(Request request)
 void showTargetFeedback(Request request)
 方法的参数为Request对象。所以Request对象是我们判断显示何种反馈的主要依据。GEF的缺省的Request类型都定义在RequestConstants接口中,而我们也可以自定义Request。于是,"显示什么样的反馈"这个问题也清楚了。
 
 
 
 自定义Feedback
 通过阅读AbstractEditPart的源码可以发现,它实际是把showSourceFeedback和showTargetFeedback都转发给了EditPolicy来完成,所以自定义Feedback正确的做法应该是实现一个自定义的EditPolicy并安装到EditPart中。这里又有一个问题,应该安装到哪个角色上呢?
 和拖动相关的角色叫Primary Drag,这个角色是的Policy是由父类提供的。
 
 
 代码如下:/**
 * Shows or updates source feedback for the given
 * <code>Request</code>. By default, this responsibility is delegated to this part's
 * EditPolicies.  Subclasses should rarely extend this method.
 * <P>
 * <table>
 *   <tr>
 *     <td><img src="../doc-files/important.gif"/>
 *     <td>It is recommended that feedback be handled by EditPolicies, and not directly by
 *     the EditPart.
 *   </tr>
 * </table>
 * @see EditPolicy#showSourceFeedback(Request)
 * @see EditPart#showSourceFeedback(Request)
 * @param request the Request
 */
public void showSourceFeedback(Request request) {
 if (!isActive())
  return;
 EditPolicyIterator i = getEditPolicyIterator();
 while (i.hasNext())
  i.next()
   .showSourceFeedback(request);
}

 

附:

反馈技术
视觉反馈是一个图形化编辑器用户界面重要的组成部分。GEF用很多方法为用户提供反馈。
1.改变光标。当在图形化编辑器上选定目标时,改变光标来显示所选的目标是否支持该工具的操作。
2.区别被选的和被聚焦的部分。一般的,在相同类型的部分中,一个被选择的部分应该和没有被选择的部分明显的区分。
这个可以通过在部分外增加一个被选择图形或改变部分的颜色或形状。
3.展示操作柄(handle):操作柄也是一个图形元素,一般出现在部分的四周,它表示图形可以被移动或是改变大小。
一般反馈技术是由编辑策略[EditPolicy]实现的。具体实现的是EditPolicy的子类GraphicalEditPolicy。
GEF提供一个反馈层,所有的反馈都在该层上显示。层本身就是一个图形,只不过对用户来说是透明的。

Feedback Control of Dynamic Systems (7th Edition) Feedback Control of Dynamic Systems (7th Edition) 描述动态系统的反馈控制 立即下载

相关推荐

eclipse插件开发框架GEF API文档

eclipse插件开发框架GEF API文档 eclipse插件开发框架GEF API文档

反馈学习

文章目录一、反馈式学习二、结构化2.1 自上而下套框架2.2 自下而上提炼框架2.3 框架的生长三、容器化3.1 时间一份份输出3.2 内容一份份输出3.3 空间化四、总结 本篇文章将讲述我自己的学习方法——反馈式学习。每个人对学习方法都有不同的理解,可能某个人对某...

黄豆酱都灵 1131

Feedback Control of Dynamics Systems-1. part 2

Feedback Control of+Dynamics Systems-1.part2

前端网页文本选中出现一个反馈按钮,鼠标点击之后可以进行文档反馈

最近有一个需求,就是增强文档的反馈能力,类似于腾讯云文档一样,如图: 当我们选中一些文本之后,会有一个 文档反馈的 tooltip 提示框,点击之后会有表单提交,不过这个文档技术比较牛的点就是,点击反馈提示框之后,还会自动截屏,存放图片,方便管理者查看。 参考文章 先放出参考文章吧,还是 css 世界作者大佬的,虽然时间是 2011 年,但是那会实现的到现在依旧还是可以的,如果大家能看懂的话,可以直接看参考文章即可。 js页面文字选中后分享到新浪微博实现 我的解决代码 以下仅个人使用代码,大部分情况能够通

超逸の学习技术博客 1511

Eclipse Development - using the gef and the emf

This redbook is written for developers who use the Eclipse SDK to develop plug-in code. It is intended for a technical readership and for developers who already have good knowledge and experience in Eclipse plug-in development. We expect that you understand the concepts of Eclipse views and editors, and have some familiarity with Draw2D.

feedback-html2canvas:使用feedback.js 插件存储库和带有布局Bootstrap 3 的html2canvas

Feedback.js 和 html2canvas.js 与 Bootstrap 3 使用feedback.js 插件存储库和带有布局Bootstrap 3 的html2canvas 反馈.js html2canvas.js 引导程序 3

Feedback(反馈)详述一

Feedback用于对gef编辑器操作的反馈,最常见的是一些鬼影效果。     1.Feedback的调用: 每个gef编辑器都有一个EditDomain对象,EditDomain主要是用于触发事件用的,这样说真的很不负责任。但是,事件的转发确实是它的主要责任之一。首先它会获取到事件源,然后获取到当前活动的ActiveTool,然后转发给当前活动的ActiveTool。至于事件是如何...

leng1987021的博客 3120

newCef3Demo.zip

mfc基于cef_binary_3.2704.1414.g185cd6c_windows32集成libcef浏览器内核并实现c++与js调用,用cmake构建成vs。

反馈

weixin_43205692的博客 200

【深度排查】VScode 远程 SSH 连接失败:从网络握手到服务部署的全链路诊断指南

本文详细解析了VScode远程SSH连接失败的常见原因及解决方案,从基础网络排查到SSH服务配置,再到VScode特有的问题处理。特别针对Ubuntu和TrueNAS系统提供了具体配置建议,帮助开发者快速解决'Could not establish connection'等连接问题,提升远程开发效率。

weixin_30301449的博客 447

Unity线性空间下PSD透明贴图黑边问题:原理分析与三种解决方案

在计算机图形学中,颜色空间转换与Alpha混合是渲染管线的基础环节。伽马空间与线性空间的差异源于显示设备与人眼感知的特性,现代渲染引擎采用线性工作流以实现更真实的光照计算。然而,当图像处理软件(如Photoshop)导出的纹理数据与游戏引擎(如Unity)的预期格式不匹配时,就会引发技术问题,影响视觉保真度与开发效率。具体表现为,在线性空间下进行Alpha Blend混合时,带透明通道的纹理边缘常出现异常黑边或颜色失真,其核心根源在于纹理数据是否经过“预乘”处理与sRGB标记的解读冲突。这一问题的解决对于提

weixin_34198762的博客 381

GEF 进阶,第六部分: Feedback

简介: Feedback(反馈)指的是GEF中对用户操作的一种回显,这种回显一般来说是视觉上的,但是也不一定。完全可以由用户来定制。本文介绍Feedback的相关概念,并通过实例演示其定制过程。 Feedback(反馈)指的是GEF中对用户操作的一种回显,这种回显一般来说是视觉上的,但是也不一定。完全可以由用户来定制。本文介绍Feedback的相关概念,并通过实例演示其定制过程。

wwj13141988的专栏 847

相机SDK开发C++篇-常用开发函数封装讲解(迈德威视相机)

/ 软触发失败,返回false } return true;= (nRet = CameraSetSysOption("NumBuffers", QString("%1").arg(getImageBufferNodeNum()).toLocal8Bit().data()))) { setLastErrorMsg("相机#%1设置缓存区数量错误,错误码:%2").arg(getCameraIndex()).arg(nRet);

GodJhin的博客 1542

Feedback(反馈)

Feedback(反馈): 所谓反馈,是指操作时显示的一些提示信息,是对用户操作的某种响应,比如拖动某个图形时,我们一般会看到一个虚影,这就是反馈。 它告诉了用户这个图形在松开鼠标之后将会被放置在什么地方,这是一种很好的提高用户友好度的方式,也是反馈的主要目的。 反馈有两种:Source Feedback(源反馈)和Target Feedback(目标反馈)。鼠标操作的图形叫源,鼠标移到时...

leng1987021的博客 1638

什么!!!寒假就要准备暑期实习

介绍暑期实习,从作用,时间线,投递渠道,技术准备,常见问题,经验教训几个方面介绍暑期实习

今天不coding的博客 1726

CANoe/CAPL ,远程邮件通知

CANoe/CAPL ,远程邮件通知

蚂蚁小兵 3037

GEF 一篇不错的文章

1.Draw2D技术 轻量级框架:轻量级框架[LightweightSystem类]把SWT和Draw2D 连接起来,它把鼠标事件和画图事件从SWT 转发给Draw2D的图形上。它是Draw2D的核心类。 LightweightSystem 主要包含三个组成部件: 1.根图形[The root figure]: 根图形是RootFigure类的实例,应用程序的根图形必须建立在它之上。它继承了

Hello Eclipse Plugin 黑夜 3274

STM32F103RCT6的FLASH读写操作

STM32F103RCT6是一款常用的32位微控制器,它具有内置的FLASH存储器,可以用于存储程序代码和数据。在本文中,我们将详细介绍如何进行STM32F103RCT6的FLASH读写操作,并提供相应的源代码。写入数据时,我们通过将数据直接写入FLASH地址来完成。通过使用适当的API和规则,我们可以有效地读取和写入数据。写入FLASH时,我们需要按特定的规则进行编程。首先,我们需要包含适当的头文件和定义相关的宏和变量,以便在代码中使用FLASH API。类型的指针,我们可以直接读取FLASH中的数据。

UplKubernetes的博客 1034

GEF的若干总结

1.一般来说可以继承三种EditPart,分别是  org.eclipse.gef.editparts.AbstractGraphicalEditPart      用于一般图形  org.eclipse.gef.editparts.AbstractConnectionEditPart    用于连线  org.eclipse.gef.editparts.AbstractTreeEditPa...

qq123zhz的专栏 132

【DEIM创新改进】全网首发、独家特征融合创新改进篇 | CVPR2025 | 引入RLAB残差线性注意力特征融合块,有效融合并强调多尺度特征,有效减少信息丢失,助力DEIM目标检测有效涨点

本文提出了一种改进DEIM网络模型的新方法RLAB(残差线性注意力特征融合模块),用于医学图像生物标志物分割。RLAB模块通过多尺度残差精炼和注意力机制,有效整合编码器跳跃连接与解码器特征图,提升特征对齐和关键区域关注能力。实验表明,该方法在MoNuSeg、DSB等四个医学图像数据集上显著优于现有方法,最高提升4.03%的绝对性能。文章详细介绍了RLAB的网络结构、核心代码实现方式,并提供了将模块集成到DEIM模型的具体步骤。

Ai缝合怪、助力小伙伴高效发论文 349

【ATC/DTC方法第一期】经典平均/昼夜温度周期ATC/DTC方法介绍(含Python代码实现)

【ATC/DTC方法第一期】经典平均/昼夜温度周期ATC/DTC方法介绍(含Python代码实现)

WW、forever的博客 485

基于Eclipse GEF关键技术的分析与研究

[size=large][b]2.Draw2D技术[/b][/size] 轻量级框架:轻量级框架[LightweightSystem类]把SWT和Draw2D 连接起来,它把鼠标事件和画图事件从SWT 转发给Draw2D的图形上。它是Draw2D的核心类。 LightweightSystem 主要包含三个组成部件: 1.根图形[The root figure]: 根图形是Root...

rason2008的博客 155

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

GEF的一些总结

1.一般来说可以继承三种EditPart,分别是  org.eclipse.gef.editparts.AbstractGraphicalEditPart      用于一般图形  org.eclipse.gef.editparts.AbstractConnectionEditPart    用于连线  org.eclipse.gef.editparts.AbstractTreeEditPa...

zhongkem的专栏 155

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

上一篇: GEF中如何实现Direct Edit
下一篇: GEF中常用策略
cuser_online
博客等级 码龄17年 77粉丝 403原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值