用于对事件进行处理的方法和设备技术

技术编号:2841177 阅读:195 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种用于记录GUI事件以及用于持久地识别事件的目标GUI组件以便随后回放所记录事件的方法、计算机程序产品和数据处理系统。根据本发明专利技术的优选实施例,通过以明确限定的次序遍历组件层级结构,为每一个GUI组件分配一个数字标识符。随着在遍历中访问这些GUI组件,根据组件被访问的次序顺序地对组件进行编号。当接收到事件时,将这些事件与对应于事件的目标组件的编号一起进行记录。在GUI程序的后续执行中,再次以相同的次序对层级结构进行遍历,这使得以相同的方式将标识编号分配给组件。因此,通过将每个记录的事件应用到经由编号进行识别的相应的目标组件,可以回放所记录的事件。

【技术实现步骤摘要】

本专利技术一般涉及面向对象的图形用户界面(GUI)领域。更具体地,本专利技术提供了一种用于在事件驱动的面向对象的图形用户界面(GUI)中对事件进行记录和重放的方法、计算机程序产品和数据处理系统。
技术介绍
最早的交互式计算机依赖于电传打字机(TTY)或文本终端与操作人进行交互通信。人-机交互(HCI)的这些早期的形式只能实现基于文本或基于字符的信息交换。今天,许多计算机软件产品利用图形用户界面或GUI。GUI是可视的人-机交互手段,其除了文本或字符之外还利用图片或者其他可视的表示形式。大多数GUI系统使用显示在用户显示屏上并由用户输入激活的可视控件。典型的可视控件包括但并不局限于按钮、文本框(用来输入文本)、单选按钮、复选框、选择框和菜单栏。在一个典型的GUI中,指示设备,如鼠标,用来在显示屏上移动光标并激活可视控件。GUI还常常包括静态显示组件,如标签和图标等,它们是用于显示的,但是其本身通常不具有输入功能。但是有时,当这些静态显示组件在显示屏上相对于显示屏上其他特征移动时,它们可以起到输入的作用(比如拖放一个文件的图标到回收站可以表示删除一个文件)。很多GUI是所谓的“窗口”界面,因为它们将信息可视地排列在面板形式的显示屏上或叠置于称作“桌面”的背景上的“窗口”上。在很多系统中,窗口可以被指示设备拖放到显示屏上的不同位置,被放大、缩小或者同其他的窗口交迭。典型地,一个窗口将含有多个可视控件以允许用户通过激活窗口中的控件来与计算机程序进行交互。一种叫做“对话框”的特定形式的窗口,就是在需要由用户进行一些输入时,由程序显示的。窗口、可视控件以及静态显示组件,都称作GUI组件,因为它们都是GUI的构造模块。有些GUI组件,比如窗口,叫做“容器组件”(或简称为“容器”),因为它们可以包含其他的组件。例如,一个窗口可以包含可视控件,诸如按钮或者菜单栏;以及静态显示组件,诸如文本标签和图标等。一个容器还可以包含另一个容器。比如,在某些基于窗口的文字处理器中,文字处理器本身占用一个(主)窗口,同时正在编辑的每个文件占用在主窗口内的另一窗口。容器组件包括窗口,但也可以包括其他的可视的或者不可视的组件。比如,由美国芒廷维尤市(Mountain View)的SUN微系统公司出品的JAVATM编程语言,其中就详细定义了各种各样的可视容器组件,诸如窗口和对话框;以及不可视的容器组件,诸如“java.awt.Panel”容器组件,它可以单独地用于将多个可容纳的组件分组为一个单个的单元。容器的许多例子包括但不局限于窗口、对话框、面板、页签面板、记事本页面,或可包含一个或多个其他GUI组件的任意其他GUI组件。用于在GUI组件上提供基本的操作的实际功能性,比如显示组件或者检测在组件处导入的用户输入(如通过指示设备在组件处指示或点击)等等,通常由系统级别的软件来提供,比如由操作系统来完成。一般来说,应用程序将对系统级别的软件进行调用以创建和维护GUI,同时系统级别的软件检测在特定GUI组件处导入的用户输入事件,并且向负责这些GUI组件的应用程序发出事件通告。比如,华盛顿的雷德蒙德市(Redmond)的微软公司出品的WINDOWS操作系统可以提供用于创建GUI并且将用户输入事件转发给适当的应用程序的服务。WINDOWS操作系统的主界面本身也是一个GUI。在其他的设置中,较高级的系统软件可以在操作系统内核的顶层进行操作(例如,作为后台程序或后台进程)来提供GUI服务。例如,是一个开放源代码的GUI引擎,其作为操作系统中的进程运行。X11采用客户机-服务器模型,其中,一个X11服务器进程接受来自应用程序(客户机)的用于提供GUI服务的请求并将与特定GUI组件有关的用户输入事件转发给与这些组件相关联的应用程序。作为替代,应用程序也可以有自己的代码来提供GUI服务。典型地,该代码来自用于执行基本GUI操作的可重复使用的代码库。现在的许多编程语言实现都具有用于产生GUI的内置功能,这通常通过为由系统级别的软件所提供的GUI服务提供界面来完成,或者通过包括低级别GUI代码的库并在该编程语言中为之提供界面来完成。比如JAVATM编程语言就是面向对象的编程语言,其包括用于定义GUI的标准应用编程接口(API)。当前JAVATM编程语言标准包括的两个API是抽象窗口工具包(AWT)API和Swing API(其是在AWT API的基础上建立起来的)。在作为典型的面向对象的GUI API的JAVATM编程语言中,每一种类型的GUI组件都被定义成一个类。在面向对象的编程语言中,一个类就是一个数据类型的定义,其包括数据的集合,称为成员变量;可以针对数据执行的操作的集合,称为方法(或者作为替代,称为成员函数)。所定义的数据类型中的数据的一个实际的集合称为对象。在面向对象的编程(OOP)的概念中,一个对象被称为类的一个“实例”,因为它是根据类定义的数据结构。在面向对象的程序设计语言中,用来产生一个对象的运行时进程称为“实例化”,并且在运行时存在的对象称为是“已实例化的”。面向对象的编程语言还提供所谓的“继承性”。使用继承性,可以根据一个或几个现有的类(也叫“基”类)来定义一个新的类(称为“派生”类),以便派生类继承基类的一个或多个成员变量或方法。比如在JAVATM编程语言的AWT API中,“容器”就是称为“组件”的基类的一个派生类,“容器”将包括“组件”的至少某些方法和成员变量。因此,可以说,“容器”是由“组件”派生出来的。在很多例子中,派生类将包含并非从基类继承而来的其他的方法或成员变量。并且,可以将一个派生类编写为替换掉(override)基类的用于特定方法的代码。比如一个基类“组件”可能具有一个方法叫做“显示”(show),用来显示GUI组件,派生类“容器”继承了该方法。因为显示一个容器(可能还包含其他的一些组件)比显示一个普通的GUI组件更特殊,所以“容器”类会定义与“组件”类的代码不同的用于“显示”的代码。这一点非常重要,因为在大多数面向对象的语言中,派生类中的对象被看作是基类的更特殊的实例。因此,“容器”对象可以存储在属于“组件”类型的变量中,或者采用“组件”作为参量的方法还可以采用“容器”作为参量,因为“容器”可以继承“组件”的特征(即,成员变量和方法)。这种将派生类的对象看作它们好像仍是基类的实例的能力称为“多态”。在一个面向对象的GUI API(诸如由JAVATM编程语言提供的那些)中, GUI组件被实例化为对象,并且在实例化的对象之间建立关系,以便定义GUI组件相对于彼此的位置和行为。比如“包含关系”就是GUI组件之间的关系,其将容器组件关联到由该容器组件所包含的组件。例如,在JAVATM编程语言中,组件典型地通过容器的一个称为“加入”(add)的方法来进入与容器的包含关系中。一个典型的GUI组件具有定义该组件的特征的一个或多个属性。比如在典型的窗口GUI中的“按钮”组件将具有用于定义该按钮在显示屏上的大小、显示在按钮表面上的文本和图形、该按钮的背景色、与该按钮相关联的快捷键等等的属性。通常,实例化GUI组件的一部分程序代码(比如,函数、方法、子程序、步骤等)还将包含用于将该组件的属性设定为期望值的多行代码。例如,在本文档来自技高网...

【技术保护点】
一种计算机实现的方法,包括:    根据对图形用户界面组件层级结构进行的有序遍历,为所述层级结构中的多个组件分配标识符;    检测事件;    将与所述事件相关联的目标组件的相应标识符与所述事件一起进行记录。

【技术特征摘要】
US 2005-12-21 11/315,3831.一种计算机实现的方法,包括根据对图形用户界面组件层级结构进行的有序遍历,为所述层级结构中的多个组件分配标识符;检测事件;将与所述事件相关联的目标组件的相应标识符与所述事件一起进行记录。2.根据权利要求1所述的方法,其中所述对所述层级结构进行的有序遍历是深度优先遍历。3.根据权利要求1所述的方法,其中所述标识符是数字标识符。4.根据权利要求1所述的方法,其中将所述事件连同与从前一事件开始已经逝去的时间量相对应的延迟量一起进行记录。5.根据权利要求1所述的方法,其中将所述事件记录在持久存储器中。6.根据权利要求1所述的方法,还包括通过再现关于所述目标组件的所记录事件,回放所记录事件,其中使用所记录的标识符来识别所述目标组件。7.根据权利要求1所述的方法,还包括对所述组件层级结构进行修改以获得已修改的层级结构;以及根据对所述已修改的层级结构进行的有序遍历为所述多个组件分配新的标识符。8.根据权利要求7所述的方法,还包括生成一个定义到所述新的标识符的映射的关联数据结构。9.根据权利要求1所述的方法,还包括将另外的组件增加到所述组件层级结构;...

【专利技术属性】
技术研发人员:巴里A费根鲍姆
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1