CN104866299B - 用于软件应用程序中的焦点管理的方法和系统 - Google Patents

用于软件应用程序中的焦点管理的方法和系统 Download PDF

Info

Publication number
CN104866299B
CN104866299B CN201510088706.2A CN201510088706A CN104866299B CN 104866299 B CN104866299 B CN 104866299B CN 201510088706 A CN201510088706 A CN 201510088706A CN 104866299 B CN104866299 B CN 104866299B
Authority
CN
China
Prior art keywords
focus
node
event
routine
node object
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510088706.2A
Other languages
English (en)
Other versions
CN104866299A (zh
Inventor
彼得·科博泽杰
保罗·平歌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Dadny Inc
Original Assignee
Dadny Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Dadny Inc filed Critical Dadny Inc
Publication of CN104866299A publication Critical patent/CN104866299A/zh
Application granted granted Critical
Publication of CN104866299B publication Critical patent/CN104866299B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/545Gui

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Multimedia (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开一种用于软件应用程序中的焦点管理的方法,其中所述软件应用程序的节点对象的至少一子集形成节点对象层次,且其中所述软件应用程序的所述节点对象层次的每个节点对象包括:第一例程,所述第一例程在返回真时表示所述节点对象是聚焦节点对象;以及第二例程,所述第二例程在返回真时表示所述节点对象是聚焦节点对象或所述节点对象的子级中的至少一个是聚焦节点对象;用于处置传入事件的例程;所述方法包括以下步骤:为所述节点对象层次的每个节点对象提供第三例程,所述第三例程在返回真时表示所述节点对象和所述节点对象的所有子级(除了所述第三例程返回真所针对的那些节点对象)形成具有单个焦点根的单个单焦点区域。

Description

用于软件应用程序中的焦点管理的方法和系统
技术领域
本发明涉及一种用于软件应用程序中的焦点管理的方法和系统。本发明尤其适用于图形用户界面(GUI)软件,其中具有多焦点能力是有利的。
背景技术
在计算中,焦点指示图形用户界面的被选择来接收输入的组件。在键盘上输入或从剪贴板粘贴的文字被发送至具有焦点的组件。使焦点从特定用户界面元素移开被称为与这个元素有关的模糊事件。通常通过将焦点给予另一个元素来使焦点离开一个元素。这意味着焦点事件和模糊事件通常实际上同时发生,但与不同的用户界面元素有关,一个得到焦点并且一个变得模糊(来源:维基百科)。
换句话说,对象焦点本质上是GUI对象的排他性质—组件层次内的仅单个组件可被聚焦。
在这种情况下,通常应用指示聚焦对象的被称为“focused”的布尔性质,通常辅以被称为“has focus”的额外布尔性质。具有设置为真的“focused”性质的对象是对象层次中排他性地聚焦的对象。“has focus”性质与“focused”性质不同之处在于,它意味着给定对象或给定对象的子级中的一个被聚焦。存在“has focus”的对象的链条,直到到达具有设置为真的“is focused”的对象。
本申请案用于所谓的事件捕获或浮升技术。
浮升的主要原理是,在事件触发最深的可能元素之后,事件随后按嵌套顺序触发父级。浮升进行到对象层次的顶部。当事件在对象上发生时,事件将浮升到父级对象,从而触发适当的处理程序。在任何情况下,处理程序可判定事件已完全处理并且停止浮升。
反过来,捕获与浮升相反并且在层次中的顶部对象处开始以便在对象树的层次结构中向下传播。
标题为“Simultaneous input across multiple applications”的已知现有技术专利公布US 8347215B2公开了一个或多个用户可经由如触敏显示屏的输入系统在同一设备上同时与不同应用程序交互。可由多输入系统检测同时用户输入并且使用单个传输框架将所述同时用户输入传输至应用程序。对应于用户输入的应用程序是基于用户输入的输入位置以及相应应用程序的位置和大小来确定。同时用户输入是由每个相应应用程序同时呈现。每个应用程序可能还包括与传统操作系统事件线程并行地运行的次级事件处理线程。次级事件处理线程绕过操作系统事件线程的顺序处理限制,从而提供对输入的大致上同时处理。
这种解决方案的一个缺点是,必须使用不同的焦点管理器。另一个缺点是,必须应用绕过典型事件传播体系结构的特殊次级事件处理线程。因此这是对旧版系统的严重干扰。此外,存在单独的事件分布管理器和多线程事件处理,这例如在后续资源同步方面是非常消耗资源的。
标题为“Method for concurrent data entry and manipulation in multipleapplications”的另一个现有技术公布EP0368779B1公开用于将公用数据输入到多个计算机应用程序中的方法,并且尤其公开用于自动且同时将公用数据输入到多个计算机应用程序中的方法。更确切地说,这个发明涉及容许同时操纵存在于多个计算机应用程序内的公用数据的方法。
这种解决方案的一个缺点是,用户必须在几个组件上进行特殊动作并且所有所选组件必须以相同方式动作。
有时需要使超过一个组件聚焦并且可接收如键盘击键通知的事件。多焦点系统的另一个优点是,单个应用程序可运行可能互不相干的多个子模块。
因此,在软件应用程序中有效实施多焦点系统存在问题。
因此将希望提供用于在软件应用程序中管理多焦点的改进方法。
发明内容
本发明的目标是一种用于软件应用程序中的焦点管理的方法,其中所述软件应用程序的节点对象的至少一子集形成节点对象层次,且其中所述软件应用程序的所述节点对象层次的每个节点对象包括:第一例程,所述第一例程在返回真时表示所述节点对象是聚焦节点对象;以及第二例程,所述第二例程在返回真时表示所述节点对象是聚焦节点对象或所述节点对象的子级中的至少一个是聚焦节点对象;用于处置传入事件的例程;所述方法包括以下步骤:为所述节点对象层次的每个节点对象提供第三例程,所述第三例程在返回真时表示所述节点对象和所述节点对象的所有子级(除了所述第三例程返回真所针对的那些节点对象)形成具有单个焦点根的单个单焦点区域。
优选的是,第一例程是isFocused()例程,第二例程是hasFocus()例程,并且第三例程是isFocusRoot()例程。
优选的是,用于处置传入事件的例程使得它保证正在分派的事件将首先由聚焦焦点根节点对象处理,然后再由聚焦子节点对象处置所述事件。
优选的是,用于处置传入事件的例程包括以下步骤:由焦点根处置事件;将事件分派至焦点根;以及由焦点所有者处置事件。
优选的是,由焦点根处置事件包括以下步骤:检查节点对象是否为聚焦焦点根和随后处置事件。
优选的是,将事件分派至焦点根包括以下步骤:在循环中按逆z顺序循环访问具有焦点的节点对象的所有子节点,除了聚焦的子节点或具有包括给定节点对象的单焦点子段的焦点所有者子节点的子级;将事件分派至被发现是聚焦焦点根的节点对象。
优选的是,由焦点所有者处置事件包括以下步骤:将事件分派至聚焦子节点,或在给定节点对象是聚焦的并且不是焦点根的情况下,由节点对象本身处置事件。
优选的是,所述方法还包括以下步骤:为每个节点对象提供第四例程,所述第四例程取消设置所述第三例程所引用的性质,其中第四例程采用保留焦点参数作为输入并且被配置来:清除所有冲突节点上的焦点,同时将焦点保留在第四例程执行之前焦点所在之处。
优选的是,与父级单焦点子段存在焦点冲突,所考虑的单焦点子段将连接至所述父级单焦点子段。
本发明的另一个目标是一种包括程序代码部件的计算机程序,所述程序代码部件用于当所述程序在计算机上运行时进行根据本发明的方法的所有步骤。
本发明的另一个目标是一种存储计算机可执行指令的计算机可读介质,所述计算机可执行指令当在计算机上执行时进行根据本发明的方法的所有步骤。
本发明的又一个目标是一种用于焦点管理的系统,所述系统包括:可通信地连接至存储器的数据总线;可通信地连接至系统总线的控制器;所述系统还包括:事件源控制器,其用于监视硬件事件源以便接收事件并且借助于事件捕获模块将所述事件通知给事件分派器模块;其中所述事件分派器模块被配置来:在控制器的监督下,管理将事件分派至给定的应用程序对象层次中的相应对象,所述对象存储在对象层次数据库中,其中所述对象层次数据库中的每个对象是根据本发明的前述方法的节点对象。
优选的是,事件分派器模块被配置来根据本发明的方法操作。
优选的是,控制器被配置来执行存储在存储器中的一个或多个软件应用程序。
优选的是,应用程序优选的是包括图形用户界面。
附图说明
在附图上借助于示例性实施方案示出本发明,其中:
图1A和1B呈现简单对象层次实施例;
图2A和图2B呈现经典焦点方法中hasFocus()与isFocused()之间的关系;
图3A和图3B呈现根据本发明的焦点方法;
图4A和图4B呈现根据本发明的焦点方法的不同实施例;
图5A和图5B呈现第一清除焦点方案;
图6A和图6B呈现第二清除焦点方案;
图7A和图7B呈现第三清除焦点方案;
图8A和图8B呈现第一设置焦点根方案;
图9A和图9B呈现第二设置焦点根方案;
图10A和图10B呈现第一取消设置焦点根方案;
图11A和图11B呈现第二取消设置焦点根方案;
图12A和图12B呈现具有焦点保留的第一取消设置焦点根方案;
图13A和图13B呈现具有焦点保留的第二取消设置焦点根方案;
图14呈现为了解释本发明的细节而提供的示例性树节点的简化UML类图;
图15和图16示出根据本发明的事件传播方法的顶层图;
图17、图18和图19呈现事件传播方法的细节;以及
图20呈现根据本发明的系统。
具体实施方式
表示法和命名法
以下详述的一些部分是用可在计算机存储器上进行的数据处理程序、步骤或对数据位的操作的其它符号表示来呈现。因此,计算机执行这类逻辑步骤,因而需要对物理量的物理操纵。
通常,这些量采用能够在计算机系统中被存储、转移、组合、比较和以其它方式操纵的电信号或磁信号的形式。由于常见用途,这些信号被称为位、数据包、消息、值、元素、符号、字符、项目、数字或类似者。
另外,所有此等和类似术语将于适当的物理量相关联并且仅仅是应用于这些量的便利标签。如“处理”或“创建”或“转移”或“执行”或“判断”或“检测”或“获得”或“选择”或“计算”或“生成”或类似者的术语是指计算机系统的动作和过程,所述计算机系统操纵在计算机的寄存器和存储器内表示为物理(电子)量的数据并且将数据变换成在存储器或寄存器或其它这类信息存储体内类似地表示为物理量的其它数据。
图1A呈现简单对象层次实施例。这个实施例包括主窗口对象101(如Java中的JFrame),所述主窗口对象是对象树中的顶部对象。窗口101包括两个子对象102和104,在这种情况下是面板(如Java中的JPanel)和对话窗口(如Java中的JDialog)。每个一级子对象包括二级子对象103、105,在这种情况下是面板和按钮对象(如Java中的JButton)。类似地,在105面板的情况下,存在三级子对象,即按钮106。在按钮106被聚焦的情况下,其它GUI对象不可能也被聚焦。
为了呈现在显示屏上,每个GUI组件必须是包含层次的部分。包含层次是具有顶级容器作为它的根的组件树。在这种情况下,组件101是根。每个根组件具有在所述顶级容器的GUI中包括(直接或间接)可见组件的内容窗格。
图1B呈现以父子关系定位的相同组件以便更好地视觉呈现所述组件在图形用户界面中的关系。
本发明的目标是例如促进例如同时在组件103上以及在组件106上的聚焦。
图2A至13B涉及请求焦点、清除焦点、设置焦点根和取消设置焦点根的不同用途和示例性、非限制性情况。
这些图中的表示法使得圆圈中的水平划线表示给定节点的hasFocus()性质设置为真。此外,圆圈中的垂直划线表示给定节点的isFocused()性质设置为真。此外,围绕给定节点的圆圈画有虚线的圆圈表示层次的给定节点的isFocusRoot()性质设置为真。
图2A和图2B呈现经典单焦点方法中hasFocus()性质与isFocused()性质之间的关系。在图2A中,聚焦元素203具有设置为真的hasFocus()性质和isFocused()性质,而元素202和201仅具有设置为真的hasFocus()性质而isFocused()性质保持设置为假。这是因为元素202和201的子级中的一个被聚焦。
在204元素请求焦点的情况下,将产生图2B所示的布置。204元素不具有焦点并且它的hasFocus()性质和isFocused()性质均设置为假。202组件的先前设置的hasFocus()性质并未也设置为假,因为它的子级均未被聚焦。
另一方面,聚焦元素204具有设置为真的hasFocus()性质和isFocused()性质,而元素205和201仅具有设置为真的hasFocus()性质而isFocused()性质保持设置为假。这同样是因为元素205和201的子级中的一个被聚焦。
本发明向图2A和图2B所示的布置引入节点(有时称为元素或组件)的另一个布尔性质,称为“焦点根”,这指示为isFocusRoot()例程。
因此,关键节点动作是requestFocus()、clearFocus()、setFocusRoot()、unsetFocusRoot(),并且考虑到名称,它们的任务不言而喻。
此外,节点状态(性质)如下:isFocused()、hasFocus()和isFocusRoot()。
图3A和图3B呈现根据本发明的焦点方法。在图3A中,聚焦元素303具有设置为真的hasFocus()性质和isFocused()性质,而元素302具有设置为真的isFocusRoot()性质和设置为真的hasFocus()性质(isFocused()性质设置为假),并且元素301仅具有设置为真的hasFocus()性质而isFocused()性质保持设置为假。这是因为元素302和301的子级中的一个(尤其是303节点)被聚焦。
应注意的是,isFocusRoot()性质可在对象层次的任何节点上设置为真,并且可能有多个对象具有设置为真的isFocusRoot()性质。
在304元素请求焦点的情况下,将产生图3B所示的布置。304元素不具有焦点并且它的hasFocus()性质和isFocused()性质最初均设置为假。301元素、302元素和303元素的配置保持不变,因为isFocusRoot()性质保持设置为真并且具有设置为真的isFocused()性质的节点303不受焦点变化的影响。
另一方面,聚焦元素304具有设置为真的hasFocus()性质和isFocused()性质,而元素305和301仅具有设置为真的hasFocus()性质而isFocused()性质保持设置为假。这同样是因为它们的子级中的一个被聚焦。
图4A和图4B呈现根据本发明的焦点方法的另一个实施例。这个实施例涉及在有两个聚焦对象403和404的情况下请求焦点,所述聚焦对象中的一个在焦点根节点下。
在图4A中,聚焦元素403具有设置为真的hasFocus()性质和isFocused()性质,而元素402具有设置为真的isFocusRoot()性质和设置为真的hasFocus()性质(isFocused()性质设置为假),并且元素401仅具有设置为真的hasFocus()性质而isFocused()性质保持设置为假。这是因为元素402和401的子级中的一个(403节点)被聚焦。
另外,元素404是聚焦元素,即,hasFocus()性质和isFocused()性质均设置为真而isFocusRoot()性质设置为假。因此,405节点和401节点具有设置为真的hasFocus()性质和设置为假的isFocused()性质,并且还具有设置为假的相应isFocusRoot()性质。
将isFocusRoot()性质设置为真在某种意义上创建层次节点的子范围,在这个子范围中存在单焦点布置。例如,针对节点组407存在单焦点布置,并且同时,针对节点组408存在单焦点布置。这种方法因此在对象树层次中创建多个单焦点子段407、408。
更一般来说,设置为真的isFocusRoot()性质表示节点对象和所述节点对象的所有子级(除了具有设置为真的isFocusRoot()性质的其它子级节点对象)形成具有单个焦点根的单个单焦点区域。换句话说,前述单个单焦点区域不包括isFocusRoot()性质设置为真所针对的那些节点对象。
由于这种方法,将如图4B所示来定义示例性焦点变化。
鉴于以上情况,当针对在组408内的节点406请求焦点时,将从403节点清除焦点并且在406节点上设置焦点。这将不会影响组407中存在的节点,如图4B所示。
图5A和图5B呈现第一清除焦点方案。在图5A中,聚焦元素503具有设置为真的hasFocus()性质和isFocused()性质,而元素502具有设置为真的isFocusRoot()性质和设置为真的hasFocus()性质(isFocused()性质设置为假),并且元素501仅具有设置为真的hasFocus()性质而isFocused()性质保持设置为假。这是因为元素502和501的子级中的一个被聚焦。
在图5A的布置中清除焦点将产生图5B的状态,其中502元素保持它的isFocusRoot()设置为真并且hasFocus()性质和isFocused()性质设置为假,而针对节点501和503,将所有三个性质设置为假。因此,对象层次中没有任何聚焦节点。
图6A和图6B呈现第二清除焦点方案。这个方案涉及在有两个聚焦对象603和604的情况下清除焦点,所述聚焦对象中的一个在焦点根节点602下。
在图6A中,聚焦元素603具有设置为真的hasFocus()性质和isFocused()性质,而元素602具有设置为真的相应isFocusRoot()性质和设置为真的hasFocus()性质(isFocused()性质设置为假),并且元素601仅具有设置为真的hasFocus()性质而isFocused()性质保持设置为假。这是因为元素602和601的子级中的一个(603节点)被聚焦。
另外,元素604是聚焦元素,即,hasFocus()性质(isFocused()性质设置为真而isFocusRoot()性质设置为假。因此,前述605节点和601节点具有设置为真的hasFocus()性质和设置为假的isFocused()性质和设置为假的isFocusRoot()性质。
如已经解释的,在这种情况下,针对节点607存在单焦点布置,并且同时,针对节点608存在单焦点布置。由于这种方法,将如图6B所示来定义示例性焦点清除。
鉴于以上情况,当针对在组608内的节点603清除焦点时,在606节点上设置的焦点关于焦点将不受影响。
图7A和图7B呈现第三清除焦点方案。在图7A中,聚焦元素703具有设置为真的hasFocus()性质和isFocused()性质,而元素702具有设置为真的isFocusRoot()性质和设置为真的hasFocus()性质(isFocused()性质设置为假),并且元素701仅具有设置为真的hasFocus()性质而isFocused()性质保持设置为假。这是因为元素702和701的子级中的一个被聚焦。
另外,元素704是聚焦元素,即,hasFocus()性质和isFocused()性质设置为真而isFocusRoot()性质设置为假。因此,705节点和701节点具有设置为真的hasFocus()性质和设置为假的isFocused()性质和具有设置为假的相应isFocusRoot()性质。
如已经解释的,在这种情况下,针对节点707存在单焦点布置,并且同时,针对节点708存在单焦点布置。由于这种方法,将如图7B所示来定义焦点清除的示例性结果。
鉴于以上详细解释,当针对在节点组707内的节点704清除焦点时,hasFocus()性质和isFocused()性质均针对节点704被清除,而hasFocus()性质从705节点被清除,即,设置为假。hasFocus()性质针对701节点保持设置为真,因为701节点的子级中的一个(703节点)当前被聚焦。
以下图8A至9B呈现移动焦点或在给定节点上设置焦点的setFocusRoot()方案的不同实施例。应注意的是,在额外节点上设置焦点根绝不会影响层次树内的当前焦点。
图8A和图8B呈现第一设置焦点根方案。在图8A中,聚焦元素803具有设置为真的hasFocus()性质和isFocused()性质,而元素802具有设置为真的hasFocus()性质(isFocused()性质设置为假且isFocusRoot()性质设置为假),并且元素801仅具有设置为真的hasFocus()性质而isFocusRoot()性质保持设置为假。这是因为元素802和801的子级中的一个(即803节点)被聚焦。
在这个状态下,当所有节点形成单个节点集合时,可能仅有一个聚焦对象,因为没有任何焦点根对象,所述焦点根对象具有设置为真的isFocusRoot()性质。
在这种方案中,针对节点802请求焦点根,这产生图8B所示的布置。在这种情况下,与图8A相比发生变化的唯一元素是,isFocusRoot()性质针对802设置为真。这导致在对象层次内创建两个单焦点子段。即,这些单焦点子段描画为804和805子段。
图9A和图9B呈现第二设置焦点根方案。图9A中节点901至905的布置对应于如图8B所示的状态。通过在节点906上设置另一个焦点根来进一步修改状态,isFocusRoot()性质针对节点906设置为真。这导致两个单焦点子段修改成在同一对象层次内创建的三个单焦点区域。即,这些单焦点子段描画为907、908和909子段。
图10A和图10B呈现第一取消设置焦点根方案。如果焦点根子树内的焦点所有权不与经典单焦点语义发生冲突,那么它可以在取消设置焦点根之后任选地保留。然而正常情况下,unsetFocusRoot()总是调用clearFocus()例程。
在任选布置中,unsetFocusRoot()例程中可能存在如preserveFocus(布尔)的性质,preserveFocus将指示,清除所有冲突节点的焦点,同时将焦点保留在unsetFocusRoot()执行之前焦点所在之处。
在图10A中,聚焦元素1003具有设置为真的hasFocus()性质和isFocused()性质,而元素1002具有设置为真的hasFocus()性质和isFocusRoot()性质(isFocused()性质设置为假),并且元素1001仅具有设置为真的hasFocus()性质而isFocused()性质和isFocusRoot()性质保持设置为假。这是因为元素1002和1001的子级中的一个被聚焦。
在对象树的这种状态下,执行unsetFocusRoot()例程,从而产生图10B的对象层次状态。在这种状态下,所有三个性质(即,hasFocus()、isFocused()和isFocusRoot())针对所有对象设置为假。先前针对对象1001至1003设置为真的性质现在设置为假,因为移除了焦点根并且在层次的1002节点下清除了焦点。
图11A和图11B呈现第二取消设置焦点根方案。在这个方案中,焦点根子树内的焦点所有权与经典焦点语义发生冲突。在这种情况下,在取消设置焦点根之前必须执行清除(即,进行clearFocus())。
在图11A中,聚焦元素1103具有设置为真的hasFocus()性质和isFocused()性质,而元素1102具有设置为真的isFocusRoot()性质和设置为真的hasFocus()性质(isFocused()性质设置为假),并且元素1101仅具有设置为真的hasFocus()性质而isFocused()性质保持设置为假。这是因为元素1101和1102的子级中的一个(1103)被聚焦。
此外,1104节点具有设置为真的hasFocus()性质和isFocused()性质,而元素1105和1101仅具有设置为真的hasFocus()性质而isFocused()性质保持设置为假。这同样是因为元素1105和1101的子级中的一个被聚焦。
如果在对象层次的这种状态下调用针对1102对象取消设置焦点根的请求,那么如图11B所示的输出状态将是最终结果。通过将isFocusRoot()性质和hasFocus()性质设置为假来取消设置焦点根1102,并且在这之前,通过将hasFocus()性质和isFocused()性质设置为假来从1103节点清除焦点。因此,图11B的对象层次中不存在任何焦点根,并且所有节点在经典单焦点布置中操作,直到在对象层次中建立焦点根。
图12A和图12B呈现具有焦点保留的第一取消设置焦点根方案。这是如先前所指示的任选方法。图12A的布置与图10A匹配。然而与图10B相比,差异在于图12B的输出布置。
通过使用设置为真的特殊preserveFocus选项(优选的是布尔型参数),用户可以指示,在调用unsetFocusRoot()例程时,应保留这个单焦点子段1204内的焦点。
因此,如图12B清楚地示出,仅将1202节点的isFocusRoot()性质设置为假,因为与父级单焦点子段1205没有焦点冲突,所考虑的单焦点子段1204将连接至父级单焦点子段1205。
图13A和图13B呈现具有焦点保留的第二取消设置焦点根方案。这是如先前所指示的任选方法。图12A的布置与图11A匹配。然而与图11B相比,差异在于图13B的输出布置。
通过使用设置为真的preserveFocus选项,用户可以指示,在调用unsetFocusRoot()例程时,应保留这个单焦点子段内的焦点。因此,如图13B所示,应清除父级单焦点子段1305中存在的1304焦点,以便在子单焦点子段中被聚焦的节点上保留焦点不变。
在存在对象层次的多个级别的情况下,焦点保留方法仅评估与它的直接父级单焦点子段的潜在冲突。
图14呈现为了解释本发明的细节而提供的示例性对象树节点的简化UML类图。示例性节点类包括:类的属性1401,其代表节点对象的状态;以及标记为1402的方法(类的操作),其形成节点的功能例程。
focused属性1403和focusRoot属性1404优选的是均为指示给定节点对象的当前聚焦状态和焦点根状态的布尔标志(或能够采用两个状态之一的任何其它合适的变量类型)。
这两个属性均优选的是具有用来检索节点对象的给定状态的读取访问方法,分别是isFocused()1405和isFocusRoot()1406。还有hasFocus()1407方法,如果节点对象被聚焦或以节点对象为根的子树内的任何其它节点(所讨论节点对象的子级节点对象)被聚焦,那么hasFocus()1407方法返回真。
focused属性的赋值函数(在计算机科学中,赋值函数方法是用来控制变量的变化的方法。这些方法也广泛称为设值函数方法。设值函数通常伴随有取值函数(也称为访问函数),取值函数返回私有成员变量的值)是requestFocus()方法和clearFocus()方法。requestFocus()方法用来启用focused属性(设置为真),而clearFocus()方法停用相应属性(设置为假)。这两种方法均正确地维持包括节点对象的单焦点子段内的单焦点,并且考虑到树的所有节点的其它焦点相关状态。
类似地,focusRoot属性的赋值函数是setFocusRoot()方法和unsetFocusRoot()方法,其中setFocusRoot()方法用来启用focusRoot属性。unsetFocusRoot()提供用于停用focusRoot属性的手段,其具有preserveFocus选项,preserveFocus选项允许对如何解决将有效创建的包括节点对象的所得单焦点子段内的潜在单焦点问题作出决定。
childrenNodes属性拥有节点对象的直接子节点,所有所述直接子节点从根节点对象开始形成节点树,而在本发明的优选实施方案中,parent属性拥有对父级节点对象的直接引用(除了不具有父级的根节点对象)。
优选的是,也存在特殊focusedChild属性,它指示节点的子节点,所述子节点拥有(或者是)包括节点对象的给定单焦点子段内的焦点所有者。借助于requestFocus()方法/clearFocus()方法和setFocusRoot()方法/unsetFocusRoot()方法维持focusedChild属性。
节点还具有dispatchEvent()方法,这种方法接收事件作为输入并且在节点树内实施事件的传播算法。dispatchEvent()方法决定将请求哪些节点对象和根据哪种顺序请求以用于事件处置,且随后将事件传递至这个节点对象的handleEvent()方法。handleEvent()方法是负责事件“消耗”的节点特殊实施,它结束事件传播或直接忽略事件,从而导致按事件传播顺序由下一个节点对象处置事件。
图15和图16示出根据本发明的事件传播方法。在图15中的步骤1501中,系统(如Java JRE或类似者)将事件传播至正在运行的软件应用程序的节点树。随后,在步骤1502中,根节点对象负责进行对所接收事件的处置。图16中更详细地描绘这种事件处置。图15所示的过程的最后一个步骤是通知过程的结束。
图16呈现每个节点对象通过事件传播算法来定义的过程的顶级。
步骤1601形成节点对象的dispatchEvent()方法入口点,它采用正在分派的事件作为输入(这种事件可以例如从键盘接收并且由如Java运行时环境或类似环境的运行时环境传递至正在运行的应用程序)。
事件传播过程包括按给定顺序执行步骤1602、1603和1604,所述步骤优选的是节点对象的私有子例程,这些私有子例程称为handleByFocusRoot()、dispatchToFocusRoots()和handleByFocusOwner()。这些子例程中的每一个与dispatchEvent()方法类似地采用事件作为参数并且在事件已处理(例程“已消耗”事件)的情况下返回真,或在其它情况下返回假。已处理事件的第一子例程导致在步骤1606中终止dispatchEvent()例程(返回真)。如果这些子例程均未消耗事件,那么例程在步骤1605中结束(返回假)。
在步骤1602、1603和1604中调用的子例程的执行顺序保证正在分派的事件将首先由聚焦焦点根子树处理,然后再由聚焦子节点对象处置所述事件。本发明的重要特征是,通过添加独立焦点根节点来实现可能复杂的层次的扩展性,所述焦点根节点可以在树中的其它节点之前处置事件而不会影响现有树节点的焦点状态。
例如,这类辅助聚焦焦点根节点可以用作当前用户界面组件的模态叠加,它使事件处置逻辑与对象层次树中的其它组件完全分离。
图17呈现前述handleByFocusRoot()子例程,它是事件传播例程的第一步骤,在图16中呈现为步骤1602。
步骤1701形成子例程的入口点,它采用正在处理的事件作为输入。例程包括:在步骤1702和1703中检查节点对象是否为聚焦焦点根,和在是的情况下进行步骤1704中的事件处置。如果处置了所述事件,那么子例程在步骤1705中结束(返回真)。否则,子例程在步骤1706中结束(返回假)。
图18呈现dispatchToFocusRoots()子例程,它是事件传播例程的第二步骤,在图16中呈现为步骤1603。
步骤1801形成子例程的入口点,它采用正在处理的事件作为输入。例程包括循环,这个循环按逆z顺序循环访问具有焦点的节点对象的所有子节点,但这些子节点并不是包括给定节点对象的单焦点子段的焦点所有者子级。循环在步骤1802中起始,并且在步骤1803中检查循环结束条件。
在步骤1804中判断用于事件处理的子节点。在步骤1805和1806中检查强制用于子节点的条件,这确保以这个子节点为根的子树包含至少一个聚焦单焦点子树并且不是节点的当前聚焦子级(其处理推迟到handleByFocusOwner()子例程)。且随后,如果子节点满足条件,那么在步骤1807中将事件分派至所述节点(即,在所述节点上调用dispatchEvent()方法)。如果子节点已消耗事件,那么例程在步骤1808中结束(返回真)。否则,子例程从步骤1803继续循环,且如果没有更多子节点要处理,那么子例程在步骤1809中结束(返回假)。
图19呈现handleByFocusOwner()子例程,它是前述事件传播例程的第三步骤,在图16中呈现为步骤1604。
步骤1901形成子例程的入口点,它采用正在处理的事件作为输入。例程包括将所接收事件分派至聚焦子节点(如果有的话),或在给定节点对象被聚焦的情况下由节点对象本身处置事件。在步骤1902和1903中进行的检查确保事件还没有被聚焦焦点根节点(通过handleByFocusRoot()子例程)处理,并且如果是这样,那么在步骤1904中由节点对象处置事件。
或者,如果在步骤1905中确保存在针对节点对象设置的聚焦子级,那么将事件分派至所述子节点。如果事件由节点对象处置或由聚焦子节点消耗,那么例程在步骤1908中结束(返回真)。否则,子例程在步骤1907中结束(返回假)。
图20呈现根据本发明的系统。系统可使用专门的组件或定制的FPGA(场可编程门阵列)或ASIC(专用集成电路)电路来实现或实现为软件与硬件的组合。系统包括可通信地连接至存储器2003的系统总线2001(例如像I2C)。另外,系统的其它组件可通信地连接至系统总线2001,因此这些组件可由控制器2007管理。
系统还包括事件源2006,其用于监视如计算机键盘或鼠标的硬件事件源以便接收事件并且借助于事件捕获模块2004将所述事件通知给事件分派器模块2005。事件分派器模块2005在控制器2007的监督下,管理将事件分派至给定的应用程序对象层次中的相应对象,所述对象存储在对象层次数据库2002中。对象层次数据库2002中的每个对象是根据图14的定义的节点对象并且事件分派器模块2005根据图15至图19中所定义的方法操作。
控制器2007还可被配置来执行存储在存储器2003中的一个或多个软件应用程序。应用程序优选的是包括图形用户界面。
虽然示例性实施方案描绘三级对象结构,但本领域技术人员将容易将相同方法应用于具有更少或更多对象逻辑级的对象结构。
使用焦点根的多焦点管理允许简单的资源有效的多焦点管理。不需要窗口管理器并且返回到先前聚焦对象非常简单。此外,不需要复杂的焦点管理器,这个管理器具有并行地运行的许多焦点管理器。在控制消耗的节点级上执行事件处理。
另外,应注意的是,可以允许所有对象都是聚焦对象。
可以从最新对象到最旧对象执行事件在分支(这些分支是焦点根)中的分布。
本领域技术人员可容易认识到,用于判断对象序列中的对象的索引的前述方法可由一个或多个计算机程序进行和/或控制。通常通过利用设备的计算资源来执行这类计算机程序。计算机程序可以存储在例如闪存的非易失性存储器中或例如RAM的易失性存储器(或另外,非暂时性计算机可读介质)中,并且由处理单元执行。这些存储器是用于存储计算机程序的示例性记录介质,所述计算机程序包括进行根据本文呈现的技术概念的计算机实施方法的所有步骤的计算机可执行指令。
虽然已参考特定优选实施方案来描绘、描述并且定义本文呈现的本发明,但是前述说明书中的这类参考和实施实例不暗示对本发明的任何限制。然而将显而易见的是,在不背离技术概念的更广阔范围的情况下可对本发明做出各种修改和变化。所呈现的优选实施方案仅仅是示例性的,并且不是本文呈现的技术概念的范围的详尽说明。
因此,保护范围不限于说明书中描述的优选实施方案,而是仅受以下权利要求的限制。
另外,本申请中设想了所附权利要求的任何组合。

Claims (11)

1.一种用于软件应用程序中的焦点管理的方法,其中所述软件应用程序的节点对象的至少一子集形成节点对象层次,且其中所述软件应用程序的所述节点对象层次的每个节点对象包括:
●第一例程(1405),所述第一例程在返回真时表示所述节点对象是聚焦节点对象;以及
●第二例程(1407),所述第二例程在返回真时表示所述节点对象是聚焦节点对象或所述节点对象的子级中的至少一个是聚焦节点对象;
●用于处置传入事件的例程(1601);
所述方法的特征在于,其包括以下步骤:
●为所述节点对象层次的每个节点对象提供第三例程(1406),除了所述第三例程返回真所针对的那些节点对象,所述第三例程在返回真时表示所述节点对象和所述节点对象的所有子级形成具有单个焦点根的单个单焦点区域(805、907、909)。
2.根据权利要求1所述的方法,其特征在于,所述第一例程是isFocused()例程,所述第二例程是hasFocus()例程,并且所述第三例程是isFocusRoot()例程。
3.根据权利要求1所述的方法,其特征在于,所述用于处置传入事件的例程(1601)保证正在分派的事件将首先由聚焦焦点根节点对象处理,然后再由聚焦子节点对象处置所述事件。
4.根据权利要求3所述的方法,其特征在于,所述用于处置传入事件的例程(1601)包括以下步骤:
●由焦点根处置所述事件;
●将所述事件分派至焦点根;以及
●由焦点所有者处置所述事件。
5.根据权利要求4所述的方法,其特征在于,所述由焦点根处置所述事件包括以下步骤:
●检查(1702、1703)所述节点对象是否为聚焦焦点根,和随后:
●处置所述事件(1704)。
6.根据权利要求4所述的方法,其特征在于,所述将所述事件分派至焦点根包括以下步骤:
●在循环中按逆z顺序循环访问具有焦点的所述节点对象的所有子节点,除了聚焦的子节点或具有包括所述节点对象的单焦点子段的焦点所有者子节点的子级;以及
●将所述事件分派至被发现是聚焦焦点根的节点对象。
7.一种存储计算机可执行指令的计算机可读介质,所述计算机可执行指令当在计算机上执行时进行根据权利要求1所述的方法的所有步骤。
8.一种用于焦点管理的系统,所述系统包括:
●可通信地连接至存储器(2003)的系统总线(2001);
●可通信地连接至所述系统总线(2001)的控制器(2007);
所述系统的特征在于,其还包括:
●事件源(2006),其用于监视硬件事件源以便接收事件并且借助于事件捕获模块(2004)将所述事件通知给事件分派器模块(2005);
●其中所述事件分派器模块(2005)被配置来:在所述控制器(2007)的监督下,管理将事件分派至给定的应用程序对象层次中的相应对象,所述对象存储在对象层次数据库(2002)中;
●其中所述对象层次数据库(2002)中的每个对象是根据权利要求1所述的节点对象。
9.根据权利要求8所述的系统,其特征在于,所述事件分派器模块(2005)被配置来根据权利要求4中所定义的方法操作。
10.根据权利要求8所述的系统,其特征在于,所述控制器(2007)被配置来执行存储在所述存储器(2003)中的一个或多个软件应用程序。
11.根据权利要求10所述的系统,其特征在于,所述应用程序包括图形用户界面。
CN201510088706.2A 2014-02-26 2015-02-26 用于软件应用程序中的焦点管理的方法和系统 Active CN104866299B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP14156746.1 2014-02-26
EP14156746 2014-02-26

Publications (2)

Publication Number Publication Date
CN104866299A CN104866299A (zh) 2015-08-26
CN104866299B true CN104866299B (zh) 2018-06-26

Family

ID=50193253

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510088706.2A Active CN104866299B (zh) 2014-02-26 2015-02-26 用于软件应用程序中的焦点管理的方法和系统

Country Status (3)

Country Link
US (1) US9792009B2 (zh)
EP (1) EP2913749A1 (zh)
CN (1) CN104866299B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2913749A1 (en) * 2014-02-26 2015-09-02 Advanced Digital Broadcast S.A. Method and system for focus management in a software application
CN111459582B (zh) * 2019-01-22 2024-07-23 深圳市茁壮网络股份有限公司 一种焦点元素处理方法及装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0368779B1 (en) * 1988-11-07 1996-11-20 International Business Machines Corporation Method for concurrent data entry and manipulation in multiple applications
CN101170636A (zh) * 2007-11-23 2008-04-30 中兴通讯股份有限公司 交互式个人电视终端焦点移动方法
CN101677392A (zh) * 2008-09-19 2010-03-24 中兴通讯股份有限公司 用于交互式个人电视终端的当前焦点移动方法及装置
CN102202240A (zh) * 2011-05-19 2011-09-28 广东星海数字家庭产业技术研究院有限公司 一种机顶盒浏览器控制焦点跳转方法
CN102520854A (zh) * 2011-11-30 2012-06-27 苏州希图视鼎微电子有限公司 一种网页焦点移动及控制Flash导航的方法及其实现装置
US8347215B2 (en) * 2006-03-21 2013-01-01 Microsoft Corporation Simultaneous input across multiple applications

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5687331A (en) * 1995-08-03 1997-11-11 Microsoft Corporation Method and system for displaying an animated focus item
US6971067B1 (en) * 1999-08-23 2005-11-29 Sentillion, Inc. Application launchpad
US7028306B2 (en) * 2000-12-04 2006-04-11 International Business Machines Corporation Systems and methods for implementing modular DOM (Document Object Model)-based multi-modal browsers
US6928619B2 (en) * 2002-05-10 2005-08-09 Microsoft Corporation Method and apparatus for managing input focus and z-order
WO2005029460A1 (en) * 2003-08-21 2005-03-31 Microsoft Corporation Focus management using in-air points
FR2877112B3 (fr) * 2004-10-22 2007-06-08 Nds Ltd Procede de gestion de fenetres d'affichage
US10983695B2 (en) * 2005-10-24 2021-04-20 Kinoma, Inc. Focus management system
US7793223B2 (en) * 2006-05-03 2010-09-07 At&T Intellectual Property I, L.P. Methods, systems, and computer program products for managing user focus change between applications
US7634486B2 (en) * 2006-06-29 2009-12-15 Microsoft Corporation Systems management navigation and focus collection
WO2008084904A1 (en) * 2007-01-10 2008-07-17 Samsung Electronics Co., Ltd. Broadcast receiving apparatus and method for focus management by application
US8522300B2 (en) * 2007-09-21 2013-08-27 Verizon Patent And Licensing Inc. Highlight management for fantasy gaming
US8595642B1 (en) * 2007-10-04 2013-11-26 Great Northern Research, LLC Multiple shell multi faceted graphical user interface
US9588781B2 (en) * 2008-03-31 2017-03-07 Microsoft Technology Licensing, Llc Associating command surfaces with multiple active components
CN101882082B (zh) * 2010-06-23 2015-08-12 中兴通讯股份有限公司 一种Java编辑框本地化的方法和装置
US20120072867A1 (en) * 2010-09-17 2012-03-22 Apple Inc. Presenting pop-up controls in a user interface
US9703468B2 (en) * 2011-09-27 2017-07-11 Z124 Unified desktop independent focus in an application manager
US8762932B2 (en) * 2012-06-06 2014-06-24 Tata Consultancy Services Limited Systems and methods for context understanding for developing a software solution for a project
US8938718B2 (en) * 2012-12-18 2015-01-20 International Business Machines Corporation Managing window focus while debugging a graphical user interface program
US20150088977A1 (en) * 2013-09-20 2015-03-26 Versigraph Inc. Web-based media content management
US11010032B2 (en) * 2014-02-24 2021-05-18 Citrix Systems, Inc. Navigating a hierarchical data set
EP2913749A1 (en) * 2014-02-26 2015-09-02 Advanced Digital Broadcast S.A. Method and system for focus management in a software application

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0368779B1 (en) * 1988-11-07 1996-11-20 International Business Machines Corporation Method for concurrent data entry and manipulation in multiple applications
US8347215B2 (en) * 2006-03-21 2013-01-01 Microsoft Corporation Simultaneous input across multiple applications
CN101170636A (zh) * 2007-11-23 2008-04-30 中兴通讯股份有限公司 交互式个人电视终端焦点移动方法
CN101677392A (zh) * 2008-09-19 2010-03-24 中兴通讯股份有限公司 用于交互式个人电视终端的当前焦点移动方法及装置
CN102202240A (zh) * 2011-05-19 2011-09-28 广东星海数字家庭产业技术研究院有限公司 一种机顶盒浏览器控制焦点跳转方法
CN102520854A (zh) * 2011-11-30 2012-06-27 苏州希图视鼎微电子有限公司 一种网页焦点移动及控制Flash导航的方法及其实现装置

Also Published As

Publication number Publication date
EP2913749A1 (en) 2015-09-02
US9792009B2 (en) 2017-10-17
US20150242081A1 (en) 2015-08-27
CN104866299A (zh) 2015-08-26

Similar Documents

Publication Publication Date Title
CN108290704B (zh) 用于为至少一个电梯确定分配决策的方法和设备
ES2675755T3 (es) Apoyo al análisis de modos de fallo y efectos de un sistema que comprende una pluralidad de componentes
US8428981B2 (en) Method and system for automatically maintaining the consistency of an information system
US9558296B2 (en) Method for processing a graph containing a set of nodes
WO2013093682A1 (en) Detecting cases with conflicting rules
CN104866299B (zh) 用于软件应用程序中的焦点管理的方法和系统
KR102310591B1 (ko) 어노테이션 작업 제어 방법 및 이를 실행하기 위하여 기록매체에 기록된 컴퓨터 프로그램
DE112017002468T5 (de) Schlussfolgern und Lernen basierend auf sensomotorischen Eingabedaten
CN100410886C (zh) 管理任务实例的装置、系统和方法
EP4200749A2 (en) Method and system for evaluating consistency of an engineered system
Jones et al. Reasoning about separation using abstraction and reification
CN110909888A (zh) 泛型决策树构建方法、装置、设备及可读存储介质
CN114579203A (zh) 脚本文件检查方法、装置、电子设备及存储介质
Raj et al. Distributed component-based crawler for AJAX applications
KR102343044B1 (ko) 어노테이션 작업 및 질의 제어 방법 및 이를 실행하기 위하여 기록매체에 기록된 컴퓨터 프로그램
Piest et al. Smarter interoperability based on automatic schema matching and intelligence amplification
Dubois et al. Different ways to identify generalized system of contradictions, a strategic meaning
Miao et al. A tool for supporting requirements formalization based on specification pattern knowledge
Szmuc et al. Modeling UML object event handling with Petri nets
Ostrowski Modern constraint answer set solving
US20240320503A1 (en) Explaining neuro-symbolic reinforcement learning reasoning
TW201339857A (zh) 以衝突規則偵測案件
US20230403286A1 (en) Methods and apparatus for machine learning to generate a decision tree database to identify commands similar to a command of interest
US20230251879A1 (en) Methods and systems for reidentification in a user interface
JP7572971B2 (ja) シーケンスの抽出によるロボティックプロセスオートメーション(rpa)のためのプロセス理解

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
EXSB Decision made by sipo to initiate substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant