背景技术
一般地,实现GUI(Graphical User Interface)的应用程序(Application)具备:与用户进行交互的GUI部以及接收用户的指令并执行处理的逻辑部。该应用程序的GUI部有时会根据使用该应用程序的场景(S cene)或使用该应用程序的用户而被变更。然而,一部分具有特殊结构的应用程序却存在不仅GUI部需要变更,而且GUI部以及逻辑部两者(即,整个应用程序)都需要变更的问题。
MVC模式(Model-View-Controller)作为解决上述问题的一种结构,为人们所知。根据该MVC模式而设计的应用程序的情况下,通过只变更GUI部(View或Controller),便能够轻易地变更应用程序所提供的GUI。这样,应用MVC模式来设计应用程序的方法的优点是,在变更GUI时,逻辑部(Model)无需被变更仍能够沿用。此外,例如非专利文献1中记载了有关MVC的详细情况。
以下,进一步说明提供GUI的应用程序的具体例子。
作为用于显示因特网(Internet)上的内容的应用程序,例如普遍使用的是以Microsoft(注册商标)公司的Internet Explorer(注册商标)为代表的WEB浏览器。WEB浏览器的画面显示多数情况是通过应用上述MVC模式来实现的。具体而言,WEB浏览器的应用程序中,能够将向用户显示GUI的部分作为GUI部,WEB浏览器访问的服务器所执行的功能作为逻辑部。此时,在不变更逻辑部,而只变更GUI部的情况下,便能够变更WEB浏览器上的GUI。
多数情况下,标准WEB浏览器的GUI部通过HTML(超文本标记语言:Hyper Text Markup Language)等GUI内容(提供GUI的内容)来实现,逻辑部通过程序(Program)来实现。但是,作为WEB浏览器所能够显示的GUI内容,除了WEB浏览器标准支持的HTML文档以外,还存在比HTML文档的表达力更丰富的GUI内容。一般地,为了在现有的WEB浏览器上显示HTML文档以外的、不被WEB浏览器的标准支持的各种GUI内容,是通过将按照每个GUI内容的类型而预备的GUI内容再现部(程序等)插入到现有的WEB浏览器来实现的。
作为HTML文档以外的GUI内容的具体例子,例如有Macromedia Flash(注册商标)、经因特网的标准化团体W3C(万维网:World Wide Web Consortium)标准化了的SVG(可缩放矢量图形:Scalable Vector Graphics)、3D图形的标准格式OpenGL(注册商标)等。这些GUI内容作为WEB浏览器上所显示的GUI部而被广泛地使用。
近年来,上述的GUI内容不仅被用作WEB浏览器上的阅览内容,还被试用到嵌入设备等中,用于提供GUI。
图8是GUI内容的一个例子的模式示意图。GUI内容1301由声音、矢量图形的动画等组合而成,由GUI内容制作装置或程序生成。
GUI内容1301包括多个场景1302a~1302i。并且,各个场景1302a~1302i都分别包含多个按照规定的时间间隔来划分的区间。图8的例子中,场景1302a包含5个区间1303a~1303e。此外,各个场景或各个区间中分配有:指示在再现GUI内容1301期间,使由某一场景迁移到另一场景的处理得以进行的指示,或从某区间迁移到另一区间的处理,或对象(显示内容)。
为了使组装设备等能够再现如图8所示的GUI内容1301,使用具备与所要再现的GUI内容相对应的GUI内容再现部的GUI内容再现装置。GUI内容再现装置除了具有再现应用程序所传递的GUI内容的功能以外,还具有动态地生成GUI内容再现部的功能,或废弃GUI内容再现部的功能。
一般地,提供GUI的设备中包括:按照用户的操作通过操作键或鼠标等输入装置而产生的事件以及逻辑部所产生的事件。所谓的逻辑部所产生的事件,例如终端装置是移动电话的情况下是指,电话来电,邮件来电、通知电池容量不足、闹铃以及日程安排的处理内容的显示等。此外,在以下的说明中,把用于将用户指示传递给GUI内容的事件称为“用户指示事件”,把用于将逻辑指示传递给GUI内容的事件称为“逻辑指示事件”。
用户指示事件与逻辑指示事件分别在任意时刻产生,并被传递给GUI内容。因此,在双方事件分别产生于不同时刻的情况下,不会出现问题,但在两个事件产生于相同时刻的情况下,便会发生竞争,从而有可能妨碍GUI内容再现部的正常动作。因而,为了使两个事件即使在发生竞争的情况下也不出现问题,就需要改变GUI内容再现部。
然而,改变GUI内容再现部所必须的程序的源代码大多都不被公开,所以,实际是很难改变GUI内容再现部的。因此,在不能改变GUI内容再现部的情况下,考虑的一种方法是:将逻辑指示事件分配给用户指示事件的一部份操作,将其作为模拟的逻辑指示事件来使用。图9是运用该方法的现有技术的内容再现系统的结构例图。
但是,该方法中,由于逻辑指示事件本质上属于用户指示事件的一部分,所以当用户指示事件与逻辑指示事件同时产生时,互不相同的多个事件被连续地通知给GUI内容再现部,从而有可能妨碍GUI内容再现部的正常操作。
例如可能存在如下问题:当在产生用户指示事件期间产生逻辑指示事件时,鼠标的光标不会按照用户的意图来显示(鼠标的光标移动到画面显示以外的逻辑事件按钮,显示画面呈鼠标光标消失的状态);此外,当产生逻辑指示事件期间产生用户指示事件时,触发逻辑指示事件的处理变得不稳定(倘若用户的操作使位于显示画面外的逻辑事件按钮上的鼠标的光标移动,执行中的处理便会发生中断)。
因此,本发明的目的在于提供一种利用现有的GUI内容再现部,能够同时处理基于用户操作的事件以及基于逻辑控制的事件的事件处理装置。
非专利文献1:Wolfgang Pree“Design Patterns forObject-Oriented Software DeVelopment”,Addison-WesleyPublishing Company 1995
具体实施方式
在对本发明的事件处理装置进行说明之前,首先对GUI内容的一例进行说明。图1是示出通过再现GUI内容而制作的画面显示内容的模式图。GUI内容101能够在画面上实现GUI,包括显示于画面的用户操作区域102以及不显示于画面的按钮配置区域103。
用户操作区域102是设备的显示画面上向用户提供GUI的区域,通过用户对键盘或指针设备等输入设备的操作,从而产生分配给该操作的用户指示事件。
例如,用户操作区域102中能够配置对象105,该对象105会根据用户指示事件改变显示内容或发出声音。具体而言,GUI内容101的构成为:当用户操作光标指针(图未示)重叠到对象105上时,基于用户的操作所产生的用户指示事件,使对象105的显示内容发生变化或播放音乐、使效果音振动。
按钮配置区域103中设置有逻辑指示事件接收用按钮104。画面上虽然不显示按钮配置区域103,但当逻辑指示事件接收用按钮104被按下时,即光标指针的坐标值包含在显示画面外的逻辑指示接收用按钮104的区域内时,会产生分配给逻辑指示事件接收用按钮104的事件。
设置这样的按钮配置区域103以及逻辑指示接收用按钮104,是为了响应来自应用程序等的逻辑的指示,使事件与用户操作非同步地产生。也就是说,为了在任意的时刻使GUI内容101产生事件,或在任意的时刻向GUI内容101通知事件,逻辑通常使用逻辑指示事件,该逻辑指示事件是被分配到画面上不显示的按钮配置区域103的事件。
GUI内容所产生的事件例如通知如图2所示的URL的事件。GUI内容对逻辑部选择了逻辑指示事件接收用按钮104做出响应,产生将“http://www.xxx.com/xxx.html”通知给逻辑部的事件。当接收到URL后,逻辑部例如对因特网等的GUI内容外部的信息源进行访问,从而通过该URL来获取特定的数据。然后,逻辑部通过将所取得的数据反映给GUI内容,从而能够动态地变更GUI内容的显示内容或声音。现有技术中对GUI内容的具体例子进行了说明。
此外,图1的例子中,按钮配置区域103设置于用户操作区域102的外部,但按钮配置区域103也可以与用户操作区域102的一部分重叠。此外,用户指示事件既可以是鼠标事件也可以是按键事件。并且,GUI内容101产生事件的时刻既可以是光标指针进入逻辑指示事件接收用按钮104内的时刻,也可以是光标指针离开逻辑指示事件接收用按钮104内的时刻。
接着,对本发明的事件处理装置211进行说明。
图3是包含了本发明的一实施方式所涉及的事件处理装置211的内容再现系统的结构示意图。图3所示的内容再现系统包括:事件处理装置211、事件产生单元204、输入操作控制部212、GUI内容再现部209、描绘部213及描绘装置214。能够作为例如移动电话、便携式终端装置等电子设备中的一部分或整个设备,嵌入所述设备中的程序或者集成电路来实现该系统。
事件产生单元204产生用户指示事件及逻辑指示事件。具体而言,应用程序所执行的逻辑201及输入装置202相当于事件产生单元204。输入装置202只要能够基于用户的操作输出信号,不受特别的限定。例如,输入装置202既可以是鼠标或触摸屏等指针设备,也可以是键盘。
输入操作控制部212接收输入装置202所通知的用户指示事件,指示描绘部213追踪用户的操作来描绘光标位置,并且通知事件处理装置211所接收到的用户指示事件。此外,输入操作控制部212接收逻辑201所通知的逻辑指示事件,并将所接收到的逻辑指示事件通知给事件处理装置211。此外,输入操作控制部212也可以不指示描绘部213描绘光标位置而将所接收到的用户指示事件通知给事件处理装置211。
GUI内容再现部209经由输入操作控制部212,再现由用户215或逻辑201登录的GUI内容,并指示描绘部213对再现内容进行描绘更新。并且,GUI内容再现部209根据事件处理装置211所通知的事件执行相应的处理。根据GUI内容的类型来预备的GUI内容再现部可以用作GUI内容再现部209。
描绘部213控制显示器等描绘装置214的描绘。并且,描绘部213向描绘装置214描绘显示内容,该显示内容是GUI内容再现部209按照事件处理装置211的描绘请求,通过再现GUI内容而生成的。
事件处理装置211在GUI内容再现部209再现GUI内容期间,接收输入操作控制部212所通知的事件,并按照所接收的事件,指示描绘部213对再现内容的描绘进行更新。该事件处理装置211包括事件控制部210、事件判定部205、用户操作存储部206,解锁条件部207及锁定控制部208。
事件控制部210将经由输入操作控制部212,从逻辑201或输入装置202接收到的事件传递给事件判定部205,并请求事件的判定。然后,事件控制部210基于事件判定部205的判定结果,对用户操作存储部206、解锁条件部207以及锁定控制部208进行后述的处理。
事件判定部205判定从事件控制部210接收到的事件是输入装置202所通知的用户指示事件还是逻辑201所通知的逻辑指示事件。然后,事件判定部205将判定结果反馈给事件控制部210。具体而言,事件判定部205基于事件判定表来判定所接收到的事件的类型。图4A及图4B是图3所示的事件判定部205所参照的事件判定表的一示例图。
图4A的例子示出:用X—Y坐标系来描述通过再现GUI内容而制作的显示内容时,该显示内容中分配给用户指示事件的区域及分配给逻辑指示事件的区域用XY坐标范围来定义。例如,假设事件判定部205接收到事件产生坐标(100,100)的光标事件。由于事件产生坐标(100,100)包含在由原点(0,0)及终点(200,200)所定义的矩形区域内,所以事件判定部205判定所接收到的事件是用户指示事件。
图4B是定义摁下按键等事件与事件类型的对应关系的例子。
用户操作存储部206储存光标位置(坐标)或事件类型(按键或鼠标)等用户操作的信息。用户操作存储部206也可以将按键代码作为用户操作来储存。解锁条件部207储存事件控制部210所传递的、将要停止描绘更新之前的显示画面的位图信息(解锁条件),并判定更新停止期间事件控制部210所传递的位图与所储存的位图是否相等。此外,也可以用再现画面ID来代替显示画面的位图信息。另外,是声音的情况下,也可以考虑使用音乐播放完的位置(最先开始的时间信息)或效果音的状态(鸣动后/鸣动前的判断或鸣动次数等)。锁定控制部208在被事件控制部210指示停止描绘更新时,向描绘部213请求停止描绘更新,在被指示再次开始描绘更新时,向描绘部213请求再次开始描绘更新。
当事件判定部205返回的结果是用户指示事件时,事件控制部210通知GUI内容再现部209所接收到的事件。而当事件判定部205返回的结果是逻辑指示事件时,事件控制部210执行下述的处理。
(a)将当前的光标位置等用户操作信息储存到用户操作存储部206;
(b)将解锁条件储存到解锁条件部207;
(c)指示锁定控制部208停止描绘更新;
(d)指示输入操作控制部212停止通知用户指示事件;
(e)经由GUI内容再现部209,指示描绘部213停止光标位置的描绘更新。
接着,事件控制部210通知GUI内容再现部209逻辑指示事件,并在被GUI内容再现部209通知已完成了由通知的事件确定的处理时,执行下述的处理。
(f)从用户操作存储部206中获取所储存的用户操作;
(g)将储存在用户操作存储部206中的用户操作作为用户指示事件通知给GUI内容再现部209;
(h)从解锁条件部207获取判定结果,即,是否满足解锁条件;
(i)在处理(h)的判定结果表示满足解锁条件的情况下,指示锁定控制部208再次开始描绘更新;
(j)指示输入操作控制部212再次开始通知用户指示事件
(j)指示输入操作控制部212再次开始通知用户指示事件;
(k)指示描绘部213再次开始光标位置的描绘更新。
此外,输入操作控制部212不一定要指示描绘部213停止光标位置的描绘更新(上述c)。该情况下,描绘部213可以在被锁定控制部208指示再次开始描绘更新(上述i)之前,在从用户操作存储部206中取得的坐标上描绘光标。
图5是事件处理装置211再现GUI内容以及受理用户指示事件时的序列图。图6是事件处理装置211受理逻辑指示事件时的序列图。图7是事件处理装置211所再现的GUI内容的显示过程的说明图。图7的例子示出:鼠标光标重叠在设置于用户操作区域102的对象303对象303上的情况下,所设计的GUI内容为扩大显示对象303。
以下,参照图5~图7,并结合图3,将本发明的事件处理装置211的控制处理具体地分为:GUI内容再现处理、用户指示事件通知处理以及逻辑指示事件通知处理来进行说明。此外,在以下的说明中,假设输入装置202是鼠标的情况,但输入装置202是鼠标以外的情况下,同样的处理也成立。
<A.GUI内容再现处理>
(步骤1)逻辑201经由输入操作控制部212,向GUI内容再现部209通知GUI内容的再现请求;
(步骤1.1)GUI内容再现部209再现逻辑201所指示的GUI内容;
(步骤1.2)GUI内容再现部209通过再现GUI内容来制作描绘内容,并指示描绘部213用所制作的描绘内容来更新画面;
(步骤1.2.1)描绘部213向描绘装置214转送从GUI内容再现部209接收到的描绘内容。从而,描绘装置214的画面上显示GUI内容。
例如,GUI内容作为显示内容含有动画的情况下,按照构成动画的每个帧重复地执行步骤1.1~1.2.1。
<B.用户指示事件通知处理>(图5)
(步骤2)接着,假设在再现GUI内容期间,用户215操作输入装置202,将鼠标光标301重叠在对象303上的情况。
(步骤2.1)输入装置202向输入操作控制部212通知与鼠标动作相对应的鼠标事件;
(步骤2.1.1)输入操作控制部212指示描绘部213描绘鼠标光标;
(步骤2.1.1.1)描绘部213对输入操作控制部212的指示作出响应,向描绘装置214转送鼠标光标的绘图。
通过上述处理,如图7(b)所示,显示出鼠标光标301。
(步骤2.1.2)输入操作控制部212向事件控制部210通知输入装置202所输出的鼠标事件;
(步骤2.1.2.1)事件控制部210向事件判定部205输出鼠标事件所含有的坐标,并指示事件判定;
(步骤2.1.2.1.1)事件判定部205基于事件判定表,判定被通知的坐标是包含在用户操作区域102内,还是包含在按钮配置区域103内。本实施方式中,事件判定部205反馈给事件控制部210的是用户指示事件。
此外,图7(b)的例子中,因鼠标事件坐标位于用户操作区域102,所以被判定为用户指示事件。
(步骤2.1.2.2)事件控制部210向GUI内容再现部209通知鼠标事件;
(步骤2.1.2.2.1)GUI内容再现部209执行分配给事件的处理,并再现显示内容,该显示内容示出对象303被扩大了的状态;
(步骤2.1.2.2.2)GUI内容再现部209指示描绘部213描绘所再现的显示内容;
(步骤2.1.2.2.2.1)描绘部213将描绘内容转送至描绘装置214。
由此,描绘装置214的画面被更新。
上述处理的结果是,例如,当如图7(a)所示那样,鼠标光标301重叠在对象303上时,能够实现如图7(b)所示的,将对象303放大为对象304的用户界面。
<C.逻辑指示事件通知处理>(图6)
接着,考虑与用户操作非同步地、用户操作区域102的显示内容被变更的情况。若假设终端装置是移动电话,那么与用户操作非同步地被显示的内容例如有,电话来电、邮件来电或通知电池容量不足、闹铃、日程安排内容的显示等。这些显示内容随时会产生,并不一定按照用户的指示而产生。于是,使用逻辑指示事件来使必要的信息能够在任意的时刻显示于画面上。
(步骤1)假设在图7(b)的情况下,使表示应用程序接收到新信息的对象305显示于画面上的情况。为了使GUI内容再现部209再现对象305,逻辑201产生逻辑指示事件,该逻辑指示事件示出鼠标光标包含在逻辑指示事件接收用按钮302内。
(步骤1.1)事件控制部210向事件判定部205通知鼠标事件所含有的坐标,并指示事件判定;
(步骤1.1.1)事件判定部205基于事件判定表,判定被通知的坐标是包含在用户操作区域102内,还是包含在按钮配置区域103内。本实施方式中,事件判定部205反馈给事件控制部210的内容是:事件是逻辑指示事件。
(步骤1.2)事件控制部210将用户215正在操作的鼠标光标的坐标储存到用户操作存储部206;
(步骤1.3)事件控制部210从描绘部213获取当前画面所显示的位图。此外,事件控制部210也可以获取GUI内容再现部209正进行缓冲的描绘内容来作为位图,以代替从描绘部213获取的位图。
(步骤1.4)事件控制部210将所取得的位图作为解锁条件储存到解锁条件部207。
(步骤1.5)事件控制部210指示锁定控制部208停止描绘更新。
(步骤1.5.1)锁定控制部208对事件控制部210的停止描绘更新的指示作出响应,指示描绘部213停止向描绘装置214转送描绘内容。
(步骤1.6)事件控制部210指示输入操作控制部212停止通知用户指示事件。并且,事件控制部210指示描绘部213停止光标位置的更新。
通过上述处理,在描绘更新停止期间,描绘装置214上继续保持显示图7(c)所示的画面(画面锁定)。
(步骤1.7)事件控制部210将步骤1中被作为逻辑指示事件而通知的鼠标事件通知给GUI内容再现部209。此时,向图7(d)的逻辑指示事件接收用按钮302通知事件。
(步骤1.7.1)GUI内容再现部209再现分配给鼠标事件的处理。
(步骤1.7.2)GUI内容再现部209指示描绘部213用所再现的显示内容来更新显示画面。此外,也可以省略该步骤1.7.2。通过此更新,成为图7(e)所示的画面(对象305的绘图)。
(步骤1.8)事件控制部210从用户操作存储部206中获取鼠标光标坐标。
(步骤1.9)事件控制部210向GUI内容再现部209输出从用户操作存储部206中获取的鼠标光标坐标,并通知鼠标事件;
(步骤1.9.1)GUI内容再现部209执行再现处理;
(步骤1.9.2)GUI内容再现部209指示描绘部213对更新后的显示内容进行描绘更新;此外,该步骤1.9.2也可以省略。
(步骤1.10)事件控制部210从描绘部213获取更新画面的位图。此外,事件控制部210也可以获取GUI内容再现部209正进行缓冲的描绘内容来作为位图,以代替从描绘部213获取的位图。
(步骤1.11)事件控制部210为了判定是否满足解锁条件,将所取得的位图输出到解锁条件部207。具体而言,解锁条件部207判定步骤1.11中事件控制部210所输出的位图与步骤1.3中所储存的位图是否一致。然后,解锁条件部207在两个位图一致的情况下(图7(g)的对象304),将表示满足解锁条件的信息反馈给事件控制部210(图5的情况),在除此以外的情况下(图7的(f)的对象306),将表示不满足解锁条件的信息反馈给事件控制部210。
(步骤1.12)事件控制部210指示锁定控制部208再次开始显示画面的更新(或从播放结束的位置开始播放音乐);
(步骤1.12.1)锁定控制部208对事件控制部210的再次开始更新的指示作出响应,指示描绘部213再次开始向描绘装置214转送描绘内容;
(步骤1.12.1.1)描绘部213按照锁定控制部208的指示,再次开始向描绘装置214转送描绘内容。
(步骤1.13)事件控制部210指示输入操作控制部212再次开始通知用户指示事件,并且指示描绘部213再次开始光标位置的更新。
经过上述处理,图7(d)~(g)所示的内容在内部按顺序经处理,并完成对象305的显示处理后,如图7(h)所示,解除画面锁定,再现逻辑指示事件被用户指示事件所反映的GUI内容。
如上所述,本发明的一实施方式所涉及的事件处理装置211对逻辑指示事件的产生作出响应,使描绘部213停止画面更新。由此,画面能够继续显示逻辑指示事件将要产生之前的显示内容,从而能够防止鼠标光标的显示违背用户的意图而产生变化。
此外,本发明的事件处理装置211对逻辑指示事件的产生作出响应,指示输入操作控制部212停止通知用户指示事件。由此,能够避免通知用户指示事件时对通知逻辑指示事件所产生的干涉。在停止通知该用户指示事件期间,GUI内容所产生的用户指示事件可以忽视不计。
此外,本发明的事件处理装置211将逻辑201在向事件控制部210通知逻辑指示事件期间所停止的用户操作储存到用户操作存储部206。因此,事件控制部210在逻辑指示事件结束后,能够基于用户操作存储部206所储存的坐标,执行与用户指示事件相对应的处理。
此外,上述实施方式也可以通过计算机来执行储存在存储装置(ROM、RAM、硬盘等)的、计算机能够按顺序执行上述处理的程序来实现。该计算机的概念包括安装在便携式终端装置中的计算机。该情况下,该程序既可以通过存储媒体,被储存到存储装置后来执行,也可以直接由存储媒体来执行。这里所说的存储媒体是指:ROM或RAM、闪存等半导体存储体,软盘或硬盘等磁盘,CD—ROM、DVD、BD等光盘,存储卡等。此外,存储媒体的概念还包括电话线、传输路径等通信媒体。
此外,上述实施方式所涉及的事件处理装置的功能块(图3)也可以通过集成电路LSI来实现。也可将这些功能块个别地做成单芯片,或做成包含一部分或全部的单芯片。本发明中称为LSI,但根据集成度的不同,也可以称为IC、系统LSI、超级(sup er)LSI、特级(ultra)LSI。此外,电路集成的方法不仅仅局限于LSI,也可以通过专用电路或通用处理器来实现。此外,LSI制造后,也可以利用能够进行编程的现场可编程门阵列(Field Programmable GateArray),或LSI内部的电路元件的连接或设定能够重构的可重构处理器(Reconfigurable Processor)。此外,随着半导体技术的进步或派生出另外的技术,若出现了能够取代LSI的电路集成技术,理所当然,也可以应用该技术对功能块进行集成。也有可能应用到生物技术中。