GEF入门系列(二、GEF概述)

C# 制作加密狗 使其限制软件使用次数 C# 加密狗实现软件加密 阅读详情

在前面的帖子已经提到,GEF(Graphical Editor Framework)是一个图形化编辑框架,它允许开发人员以图形化的方式展示和编辑模型,从而提升用户体验。这样的应用程序有很多,例如:UML类图编辑器、图形化XML编辑器、界面设计工具以及图形化数据库结构设计工具等等。归结一下,可以发现它们在图形化编辑方面具有以下共同之处:

  • 提供一个编辑区域和一个工具条,用户在工具条里选择需要的工具,以拖动或单击的方式将节点或连接放置在编辑区域;
  • 节点可以包含子节点;
  • 用户能够查看和修改某个节点或连接的大部分属性;
  • 连接端点锚定在节点上;
  • 提供上下文菜单和键盘命令;
  • 提供图形的缩放功能;
  • 提供一个大纲视图,显示编辑区域的缩略图,或是树状模型结构;
  • 支持撤消/重做功能;
  • 等等。

 
图1 基于GEF的界面设计工具(Visual Editor,VE)的工作界面

GEF最早是Eclipse的一个内部项目,后来逐渐转变为Eclipse的一个开源工具项目,Eclipse的不少其他子项目都需要它的支持。Eclipse 3.0版本花了很大功夫在从Platform中剥离各种功能部件上,包括GEF和IDE在内的很多曾经只能在Eclipse内部使用的工具成为可以独立使用的软件/插件包了。理论上我们是可以脱离Eclipse用GEF包构造自己的应用程序的,但由于它们之间天然的联系,而且Eclipse确实是一个很值得支持的开发平台,所以我还是推荐你在Eclipse中使用它。

GEF的优势是提供了标准的MVC(Model-View-Control)结构,开发人员可以利用GEF来完成以上这些功能,而不需要自己重新设计。与其他一些MVC编辑框架相比,GEF的一个主要设计目标是尽量减少模型和视图之间的依赖,好处是可以根据需要选择任意模型和视图的组合,而不必受开发框架的局限(不过实际上还是很少有脱离Draw2D的实现)。

现在来看看GEF是如何实现MVC框架的吧,在这个帖子里我们先概括介绍一下它的各个组成部分,以后将结合例子进行更详细的说明。


图2 GEF结构图

模型:GEF的模型只与控制器打交道,而不知道任何与视图有关的东西。为了能让控制器知道模型的变化,应该把控制器作为事件监听者注册在模型中,当模型发生变化时,就触发相应的事件给控制器,后者负责通知各个视图进行更新。

典型的模型对象会包含PropertyChangeSupport类型的成员变量,用来维护监听器成员即控制器;对于与其他对象具有连接关系的模型,要维护连入/连出的连接列表;如果模型对应的节点具有大小和位置信息,还要维护它们。这些变量并不是模型本身必须的信息,维护它们使模型变得不够清晰,但你可以通过构造一些抽象模型类(例如让所有具有连接的模型对象继承Node类)来维持它们的可读性。

相对来讲GEF中模型是MVC中最简单的一部分。

控制器:我们知道,在MVC结构里控制器是模型与视图之间的桥梁,也是整个GEF的核心。它不仅要监听模型的变化,当用户编辑视图时,还要把编辑结果反映到模型上。举个例子来说,用户在数据库结构图上删除一个表时,控制器应该从模型中删除这个表对象、表中的字段对象、以及与这些对象有关的所有连接。当然在GEF中这些操作不是由直接控制器完成的,这个稍后就会说到。

GEF中的控制器是所谓的EditPart对象,更确切的说应该是一组EditPart对象共同组成了GEF的控制器这部分,每一个模型对象都对应一个EditPart对象。你的应用程序中需要有一个EditPartFactory对象负责根据给定模型对象创建对应的EditPart对象,这个工厂类将被视图利用。

RootEditPart是一种特殊的EditPart,它和你的模型没有任何关系,它的作用是把EditPartViewer和contents(应用程序的最上层EditPart,一般代表一块画布)联系起来,可以把它想成是contents的容器。EditPartViewer有一个方法setRootEditPart()专门用来指定视图对应的RooEditPart。


图3 EditPart对象

用户的编辑操作被转换为一系列请求(Request),有很多种类的请求,这些种类在GEF里被称为角色(Role),GEF里有图形化和非图形化这两大类角色,前者比如Layout Role对应和布局有关的的操作,后者比如Connection Role对应和连接有关的操作等等。角色这个概念是通过编辑策略(EditPolicy)来实现的,EditPolicy的主要功能是根据请求创建相应的命令(Command),而后者会直接操作模型对象。对每一个EditPart,你都可以"安装"一些EditPolicy,用户对这个EditPart的特定操作会被交给已安装的对应EditPolicy处理。这样做的直接好处是可以在不同EditPart之间共享一些重复操作。

在GEF SDK提供的帮助文档(GEF开发指南)里有一份详细的EditPolicy、Role和Request类型列表,这里就不赘述了。

视图:前面说过,GEF的视图可以有很多种,GEF目前提供了图形(GraphicalViewer)和树状(TreeViewer)这两种,前者利用Draw2D图形(IFigure)作为表现方式,多用于编辑区域,后者则多用于实现大纲展示。视图的任务同样繁重,除了模型的显示功能以外,还要提供编辑功能、回显(Feedback)、工具提示(ToolTip)等等。

GEF使用EditPartViewer作为视图,它的作用和JFace中的Viewer十分类似,而EditPart就相当于是它的ContentProvider和LabelProvider,通过setContents()方法来指定。我们经常使用的Editor是一个GraphicalEditorWithPalette(GEF提供的Editor,是EditorPart的子类,具有图形化编辑区域和一个工具条),这个Editor使用GraphicalEditViewer和PaletteViewer这两个视图类,PaletteViewer也是GraphicalEditViewer的子类。开发人员要在configureGraphicalViewer()和initializeGraphicalViewer()这两个方法里对EditPartViewer进行定制,包括指定它的contents和EditPartFactory等等。

EditPartViewer同时也是ISelectionProvider,这样当用户在编辑区域做选择操作时,注册的SelectionChangeListener就可以收到选择事件。EditPartViewer会维护各个EditPart的选中状态,如果没有被选中的EditPart,则缺省选中的是作为contents的EditPart。

初步了解了GEF的MVC实现方式,让我们看看典型的GEF应用程序是什么样子的。大部分GEF应用程序都实现为Eclipse的Editor,也就是说整个编辑区域是放置在一个Editor里的。所以典型的GEF应用程序具有一个图形编辑区域包含在一个Editor(例如GraphicalEditorWithPalette)里,可能有一个大纲视图和一个属性页,一个用于创建EditPart实例的EditPartFactory,一些表示业务的模型对象,与模型对象对应的一些EditPart,每个EditPart对应一个IFigure的子类对象显示给用户,一些EditPolicy对象,以及一些Command对象。

GEF应用程序的工作方式如下: EditPartViewer接受用户的操作,例如节点的选择、新增或删除等等,每个节点都对应一个EditPart对象,这个对象有一组按操作Role分开的EditPolicy,每个EditPolicy会对应一些Command对象,Command最终对模型进行直接修改。用户的操作转换为Request分配给适当的EditPolicy,由后者创建适当的Command来修改模型,这些Command会保留在EditDomain(专门用于维护EditPartViewer、Command等信息的对象,一般每个Editor对应唯一一个该对象)的命令堆栈里,用于实现撤消/重做功能。

以上介绍了GEF中一些比较重要的概念,不知道看过之后你是否对它有了一个大概的印象。如果没有也没关系,因为在后面的帖子里将会有结合例子的讲解,我们使用的实例就是序言里提到的第六个项目。

参考资料:

  • GEF开发指南
  • Eclipse Development - Using the Graphical Editing Framework and the Eclipse Modeling Framework
加密狗原理、使用与故障排查全指南:从硬件锁到软件卫士 软件授权与保护是软件工程和数字资产管理中的基础环节,其核心原理在于通过特定机制确保软件仅被授权用户使用。加密狗(又称硬件密钥)作为一种主流的硬件加密技术,通过内置的专用芯片和加密算法(如RSA、AES),采用“挑战-应答”动态验证机制,为高价值专业软件提供高强度保护,有效防止软件盗版与未授权访问。这项技术在工程实践中至关重要,广泛应用于机器视觉、无线通信测试、工业设计等专业领域,保障了企业软件资产的安全与工作连续性。本文聚焦于加密狗的实战应用,针对常见的“加密狗未检测到”等故障,提供从驱动安装、物理连接到系 阅读详情

相关推荐

南方CASS9.0测绘软件与ET199加密狗使用详解

CASS9.0测绘软件是南方数码科技有限公司推出的地理信息处理平台,它历经多年发展,已经成为测绘行业中应用广泛的软件之一。当前,CASS9.0在持续优化的过程中,结合最新的GIS技术和用户反馈,不断提升软件的性能和用户体验。加密狗是一种常见的软件保护设备,其内部包含有专门的芯片,用以存储加密数据和执行特定的加密算法。ET199加密狗在设计时采用了先进的芯片技术,确保了其物理结构的复杂性和数据处理能力。工作时,加密狗通过USB接口与计算机连接,通过特定的驱动程序识别,从而实现其保护功能。

weixin_28931507的博客 1085

Eclipse插件开发:GEF入门系列宝典_gef_

由于工作的需要,最近开始研究GEF(Graphical Editor Framework)这个框架,它可以用来给用户提供图形化编辑模型的功能,从而提升用户体验,典型的应用如图形化的流程设计器、UML类图编辑器等等。

AT2000无加密狗版专业设计软件实战使用指南

AT2000作为宏华集团推出的专业级服装数字化设计与打版系统,广泛应用于服装企业、设计工作室及教育培训机构。其核心功能涵盖维制版、三维试衣模拟、工艺单生成、排料优化以及数据导出等全流程支持。该软件不仅具备高精度的版型处理能力,还集成了智能算法,能够实现自动放码、对格对条、缝份添加等专业操作,极大提升了服装研发效率。在实际应用中,AT2000被用于高级定制、快时尚开发、虚拟样衣展示等多个场景,尤其在配合三维人体扫描技术时,展现出强大的协同设计潜力。

weixin_35578748的博客 1183

[Eclipse]GEF入门系列(三、应用实例)

构造一个GEF应用程序通常分为这么几个步骤:设计模型、设计EditPart和Figure、设计EditPolicy和Command,其中 EditPart是最主要的一部分,因为在实现它的时候不可避免的要使用到EditPolicy,而后者又涉及到Command。 现在我们来看个例子,它的功能非常简单,用户可以在画布上增加节点(Node)和节点间的连接,可以直接编辑节点的名称以及改变节点的...

diaozhuo4700的博客 373

[Eclipse]GEF入门系列GEF概述

在前面的帖子已经提到,GEF(Graphical Editor Framework)是一个图形化编辑框架,它允许开发人员以图形化的方式展示和编辑模型,从而提升用户体验。这样的应用程序有很多,例如:UML类图编辑器、图形化XML编辑器、界面设计工具以及图形化数据库结构设计工具等等。归结一下,可以发现它们在图形化编辑方面具有以下共同之处: 提供一个编辑区域和一个工具条,用户在工具条里选...

diaozhuo4700的博客 479

探索Eclipse Graphical Editing Framework(GEF):构建图形化应用的新时代

探索Eclipse Graphical Editing Framework(GEF):构建图形化应用的新时代 项目地址:https://gitcode.com/gh_mirrors/ge/gef 1、项目介绍 Eclipse Graphical Editing Framework (GEF) 是一个强大的工具包,专为在Eclipse环境中集成和创建图形化应用程序而设计。它提供了一系列组件,包括[D...

gitblog_00092的博客 889

GEF(Graphical Editor Framework) Eclipse项目入门系列(1)---概述

GEF的英文全称是Graphical Editor Framework。GEF的中文书籍在市面上面基本没有的。但是很多的Eclipse次开发项目可能却需要用到EclipseGEF的相关技术。GEF是一个Eclipse的项目之一,著名的XMind软件(http://www.xmind.net/)就是基于GEF开发的,如下图说示意,做出来的界面非常的漂亮和灵活,另外,WindowBuilder工具(http://www.eclipse.org/wb)也是基GEF开发的,此外Apache的一个BPEL的一个

超越梦想,一起飞!!! 3980

怎么使用USB Redirector远程共享软件加密狗

怎么使用USB Redirector远程共享软件加密狗 一,软件介绍: 1,USB Redirector(服务器端/共享端/插狗端) 2,USB Redirector Client(客户端/接收端) 软件下载地址:https://pan.baidu.com/s/1rK7QNQI_VyIhvNc0vkQU-A 提取码:akso ,使用说明: ...

weixin_30322405的博客 2万+

你的软件使用加密狗来加密保护了吗?

圣天诺HASP加密狗官方网站:http://www.sentinelhasp.com/产品化的软件,如果未经保护进行销售会很容易被别人复制现在用硬件USB加密狗来加密保护软件是较好的方法购买加密狗后,会得到开发工具包外壳加密几乎是自动完成的如果同时使用代码加密,按照提供的例子,将相关函数嵌入到自己的软件中使用方便、安全我们很愿意与您分享这种硬件USB加密狗的加密方式欢迎咨询探讨...

afxozmdb15984的博客 180

唐诗三百首加密软件如何使用_加密狗保护软件现状如何,加密锁会过时吗?浅析硬件加密锁的优势...

在当今的软件开发中,灵活的软件许可策略是软件商获利的关键。过去,基于硬件的安全许可证加密狗是软件保护的首选,可防止未经授权的使用或对高端专有应用程序的非法篡改。如今,随着许多业务领域中订阅许可和SaaS的趋势,最终用户越来越习惯于基于软件的许可激活或云许可。尽管如此,无论是在性能还是在销量上,加密狗(亦或称加密锁)在软件保护方面仍处于主导地位。无论软件开发商在软件行业所处的位置如何,他都有责任与许...

weixin_39739661的博客 171

地磅称重软件支持Win7至Windows12系统 无需加密狗 多电脑不限时使用

专业地磅称重软件,兼容Win7到Windows12系统,操作简便,无需加密狗,不限设备不限时,支持自定义磅单打印,安装快捷服务到位。

haoziyuan168的博客 400

WIBU-KEY加密狗驱动软件使用说明

WIBU-KEY加密狗驱动软件使用说明 目录 1、应用程序WIBU-KEY的安装和启动 2、WIBU-KEY的应用 3、加密解锁 a、解锁申请文件RTC文件的生成 b、解锁文件RTU文件的使用 4、网络版的设定 a、网络服务器启动 b、网络版服务器的设定 c、客户端的设定 注:请首先确认所使用电脑USB接口是否能够正常工作,已确保Lan...

weixin_33786077的博客 5501

加密狗 共享 远程不识别_拒绝盗版,正版行业软件共享使用的新思路

本内容来源于@什么值得买SMZDM.COM|作者:嗨皮小玩子相信不少企业都会接触专用软件,有些软件价格死贵,而且每年还要额外服务费,我们公司里就有一套行业软件,采用了双重加密机制,只能在订制的机器上运行,要知道,这一台机器居然要3万。价格贵,加上用的频率不是特别高,每周用的次数不超3次,所以,就只采购了一台,放在行政办公室里大家共同使用。虽然用的不多,但是每次用的人不一样,再说了老是往别人的办公室...

weixin_39830225的博客 338

组态王7.5SP4版软件与加密狗匹配开发版+运行版使用分享

组态软件与加密狗匹配开发版+运行版使用分享,组态软件按照文章这样样操作就可以正常打开和运行了。希望对大家有帮助。

ogxogx的专栏 7589

英飞凌的中文编程软件6.0版本,英飞凌编程工具无需加密狗就能直接使用

英飞凌的中文编程软件汉化版。这款6.0版本的英飞凌编程工具无需额外的加密狗就能直接使用,并且后续版本将提供终身免费更新服务。英飞凌为中国开发者提供了几款中文编程软件,其中最为人熟知的是AURIX™ Development Studio和DAVE™开发平台。**AURIX™ Development Studio** 这款免费的集成开发环境(IDE)由英飞凌专为基于TriCore™架构的AURIX™微控制器系列设计而成。它是在Eclipse IDE的基础上构建的,并集成了C编译器、TASKING调试工具、多核调

htzss1990的博客 505

加密狗并不是插上就能用‌

加密狗并不是插上就能用‌,其使用情况取决于具体的加密狗类型以及相应的软件或系统设置。‌ ‌对于大多数加密狗‌:在安装相应的软件或驱动程序后,插入电脑USB接口即可进行授权或认证,实现即插即用的功能。这类加密狗通常用于软件授权、身份认证等场景,插上后软件能够检测到加密狗并进行相应的验证,从而允许用户正常使用软件或访问受保护的资源。 ‌对于某些特定类型的加密狗‌:如设备加密狗,可能需要更复杂的设置或配置过程。例如,在智能设备出厂前预装的加密狗系统,可能需要设置使用时间、提醒用户结款等参数。这类加密狗的使用不仅涉

m0_64918536的博客 1511

Halcon正版软件加密狗使用指南

据悉,Halcon将在2020年11月20日发布新版本Halcon20.11,目前的最新版仍为20.05。 如果你购买正版的软件(分开发版和运行版,假定两个版本你都买了),将会得到一个开发狗和一个运行狗以及对应的开发版license和运行版license。 ------------------------------------------------------------------------------ 开发版使用指南: (1) 下载你购买对应的版本的full v...

Color Space的博客 1万+
上一篇: GEF入门系列(一、Draw2D)
下一篇: GEF入门系列(三、应用实例)
kernel_engine
博客等级 码龄21年 6粉丝 16原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值