说明性实施例的详细描述
在以下各个说明性实施例的描述中,对附图进行了参考,附图构成各个实施例的一部分,且在其中作为示例示出了可在其中实现本发明的各个实施例。可以理解,可利用其它实施例,且可作出结构和功能上的修改,而不背离本发明的范围。
图1示出了可在其上实现本发明的合适的计算系统环境100的示例。计算系统环境100只是合适的计算环境的一个示例,并不旨在对本发明的使用范围或功能提出任何限制。也不应该把计算环境100解释为对示例性计算系统环境100中示出的任一组件或其组合有任何依赖性或要求。
本发明可用众多其它通用或专用计算系统环境或配置来操作。适合在本发明中使用的公知的计算系统、环境和/或配置的示例包括,但不限于,个人计算机、服务器计算机、手持或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费者电子产品、网络PC、小型机、大型机、包含上述系统或设备中的任一个的分布式计算机环境等。
本发明可在诸如程序模块等由计算机执行的计算机可执行指令的通用语境中描述。一般而言,程序模块包括例程、程序、对象、组件、数据结构等,它们执行特定任务或实现特定抽象数据类型。本发明也可以在分布式计算环境中实现,其中任务由通过通信网络链接的远程处理设备执行。在分布式计算环境中,程序模块可以位于包括存储器存储设备在内的本地和远程计算机存储介质中。
参考图1A,用于实现本发明的一个示例性系统包括计算机110形式的通用计算设备。计算机110的组件可以包括,但不限于,处理单元120、系统存储器130和将包括系统存储器在内的各种系统组件耦合至处理单元120的系统总线121。系统总线121可以是若干类型的总线结构中的任一种,包括存储器总线或存储器控制器、外围总线和使用各种总线体系结构中的任一种的局部总线。作为示例,而非限制,这样的体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、扩展的ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线和外围部件互连(PCI)总线(也被称为Mezzanine总线)。
计算机110通常包括各种计算机可读介质。计算机可读介质可以是能够被计算机110访问的任何可用介质,且包括易失性和非易失性介质、可移动和不可移动介质。作为示例,而非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以任何方法或技术实现的用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,随机存取存储器(RAM)、只读存储器(ROM)、电可擦可编程只读存储器(EEPROM)、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁性存储设备、或能用于存储所需信息且可以由计算机110访问的任何其它介质。通信介质通常具体化为诸如载波或其它传输机制等已调制数据信号中的计算机可读指令、数据结构、程序模块或其它数据,且包含任何信息传递介质。术语“已调制数据信号”指的是这样一种信号,其一个或多个特征以在信号中编码信息的方式被设定或更改。作为示例,而非限制,通信介质包括诸如有线网络或直接线连接的有线介质,以及诸如声学、RF、红外线和其它无线介质的无线介质。上述中任一个的组合也应包括在计算机可读介质的范围之内。
系统存储器130包括易失性和/或非易失性存储器形式的计算机存储介质,诸如ROM 131和RAM 132。基本输入/输出系统133(BIOS)包含有助于诸如启动时在计算机110中元件之间传递信息的基本例程,它通常被存储在ROM 131中。RAM 132通常包含处理单元120可以立即访问和/或目前正在操作的数据和/或程序模块。作为示例,而非限制,图1A示出了操作系统134、应用程序135、其它程序模块136和程序数据137。
计算机110也可以包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图1A示出了从不可移动、非易失性磁介质中读取或向其写入的硬盘驱动器141,从可移动、非易失性磁盘152中读取或向其写入的磁盘驱动器151,以及从诸如CD ROM或其它光学介质等可移动、非易失性光盘156中读取或向其写入的光盘驱动器155。可以在示例性操作环境下使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括,但不限于,盒式磁带、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等。硬盘驱动器141通常由诸如接口140等不可移动存储器接口连接至系统总线121,磁盘驱动器151和光盘驱动器155通常由诸如接口150等的可移动存储器接口连接至系统总线121。
以上描述和在图1A中示出的驱动器及其相关联的计算机存储介质为计算机110提供了对计算机可读指令、数据结构、程序模块和其它数据的存储。例如,在图1A中,硬盘驱动器141被示为存储操作系统144、应用程序145、其它程序模块146和程序数据147。注意,这些组件可以与操作系统134、应用程序135、其它程序模块136和程序数据137相同或不同。操作系统144、应用程序145、其它程序模块146和程序数据147在这里被标注了不同的标号是为了说明至少它们是不同的副本。用户可以通过输入设备,诸如数码相机163、键盘162和定点设备161(通常指鼠标、跟踪球或触摸垫)向计算机110输入命令和信息。其它输入设备(未示出)可以包括笔、指示笔和图形输入板、麦克风、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等。这些和其它输入设备通常由耦合至系统总线121的用户输入接口160连接至处理单元120,但也可以由其它接口或总线结构,诸如并行端口、游戏端口或通用串行总线(USB)连接。监视器191或其它类型的显示设备也经由接口,诸如视频接口190连接至系统总线121。除监视器以外,计算机也可以包括其它外围输出设备,诸如扬声器197和打印机196,它们可以通过输出外围接口195连接。
计算机110可使用至一个或多个远程计算机,诸如远程计算机180的逻辑连接在网络化环境下操作。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其它常见网络节点,且通常包括上文相对于计算机110描述的许多或所有元件,尽管在图1A中只示出存储器存储设备181。图1A中所示逻辑连接包括局域网(LAN)171和广域网(WAN)173,但也可以包括其它网络。这样的连网环境在办公室、企业范围计算机网络、内联网和因特网中是常见的。
当在LAN联网环境中使用时,计算机110通过网络接口或适配器170连接至LAN 171。当在WAN联网环境中使用时,计算机110通常包括调制解调器172或用于通过诸如因特网等WAN 173建立通信的其它装置。调制解调器172可以是内置或外置的,它可以通过用户输入接口160或其它合适的机制连接至系统总线121。在网络化环境中,相对于计算机110描述的程序模块或其部分可以存储在远程存储器存储设备中。作为示例,而非限制,图1A示出了远程应用程序185驻留在存储器设备181上。可以理解,所示的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其它手段。
可以理解,所示网络连接是示例性的,且可使用在计算机之间建立通信链路的其它手段。假定了各种公知协议,诸如TCP/IP、因特网、FTP、HTTP等中任何一个的存在,且系统可在客户机-服务器配置中操作以允许用户从基于web的服务器检索网页。可使用各种常规web浏览器中的任何一个来显示和操纵网页上的数据。
编程接口(或简称为接口)可被视为用于允许一个或多个代码段与一个或多个其它代码段所提供的功能通信或对其访问的任何机制、过程、协议。或者,编程接口可被视为系统中能够通信上耦合至其它组件的一个或多个机制、方法、功能调用、模块等的一组件的一个或多个机制、方法、功能调用、模块、对象等。前述语句中的术语“代码段”旨在包括一条或多条指令或代码行,且包括例如代码模块、对象、子例程、函数等,而不考虑所应用的术语是什么或者代码段是否被单独编译、或者代码段是否作为源、中间或目标代码来提供、代码段是否在运行时系统或进程中利用、或者它们是否位于相同或不同的机器上或跨多台机器分布、或者代码段所表示的功能是否全部使用软件实现、全部使用硬件实现或使用硬件和软件的组合。
概念上,编程接口一般可如图1B或图1C中所示地查看。图1B示出接口“接口1”为第一和第二代码段可经其通信的管道。图1C将接口示为包括接口对象I1和I2(它们可以是或可以不是第一和第二代码段的一部分),它们允许系统的第一和第二代码段经由介质M来通信。在图1C的视图中,可将接口对象I1和I2认为是同一系统的分开的接口,也可认为对象I1和I2加上介质M构成了接口。尽管图1B和1C示出双向流和位于流两侧的接口,但某些实现可使信息仅在一个方向上流动(或如下所述没有信息流),或仅在一侧有接口对象。作为示例,而非限制,诸如应用程序编程接口(API)、入口点、方法、函数、子例程、远程过程调用、以及组件对象模型(COM)接口等术语均被包含在编程接口的定义内。
这一编程接口的各方面可包括第一代码段将信息发送给第二代码段的方法(其中,“信息”按其最广义来使用,包括数据、命令、请求等);第二代码段接收信息的方法;以及信息的结构、序列、句法、组织、模式、定时和内容。在这一点上,底层传输介质本身对接口的操作而言是无关紧要的,无论该介质是有线还是无线的,或者是其组合,只要信息按照接口所定义的方式传输。在某些情况中,信息可以不在常规意义上的一个或两个方向上传递,因为信息传送或者是经由另一介质(例如,信息被置于与代码段之间的信息流分开的缓冲区、文件等中)或不存在,如当一个代码段仅访问第二代码段所执行的功能时。例如取决于代码段是否是松耦合或紧耦合配置的系统中的一部分,任何或所有这些方面在给定情况中可能是重要的,因此该列表应被认为是说明性而非限定性的。
编程接口的概念为本领域的技术人员所知,并可从本发明的前述详细描述中清楚。然而,存在实现编程接口的其它方式,且除非明确排除,否则这些也旨在包括在本说明书所附的权利要求书中。这些其它方式可能看似比图1B和1C的简单视图更高级或更复杂,但是它们仍执行完成相同的总体结果的类似功能。现在将简要描述编程接口的一些说明性替换实现。
A.分解(factoring)
从一个代码段到另一个代码段的通信可通过将通信分成多个离散通信来间接完成。这在图1D和1E中示意性描述。如图所示,某些接口可按照可分功能集来描述。因此,图1B和1C的接口功能可被分解来实现相同的结果,就如在数学上可提供24或2乘2乘3乘2一样。从而,如图1D中所示,接口“接口1”提供的功能可被细分以将接口的通信转换成多个接口“接口1A”、“接口1B”、“接口1C”等,而同时仍实现相同的结果。如图1E中所示,接口I1提供的功能可被细分成多个接口I1a、I1b、I1c等,同时仍实现相同的结果。类似地,从第一代码段接收信息的第二代码段的接口I2可被分解成多个接口I2a、I2b、I2c等。当分解时,随第一代码段所包括的接口的数目不必与随第二代码段所包括的接口的数目匹配。在图1D和1E中任一情况中,接口“接口1”和I1的功能本质分别与图1B和1C的保持相同。接口的分解也可遵循结合、交换和其它的数学性质,使得分解难以识别。例如,操作的顺序可能是不重要的,因此接口实现的功能可在到达该接口之前由另一代码或接口良好实现,或由系统的单独组件执行。而且,程序设计领域的普通技术人员可以理解,存在进行实现相同的结果的不同功能调用的各种方式。
B.重定义
在某些情况中,有可能忽略、添加或重定义编程接口的特定方面(例如,参数)而仍实现预期的结果。这在图1F和1G中示出。例如,假定图1B的接口“接口1”包括函数调用Square(input,precision,output),即包括三个参数input(输入)、precision(精度)和output(输出),并从第一代码段向第二代码段发出的一个调用。如果中间参数precision在给定情形中无关紧要,则如图1F中所示,它可无妨被忽略甚至使用meaningless(无意义)(在该情况中)的参数来替换。也可添加无关紧要的附加参数。在任一情况中,square(求平方)的功能可被实现,只要在第二代码段对input求平方之后返回output。precision对计算系统的某些下游或其它部分而言可能很好地作为有意义的参数;然而,一旦认识到precision对计算平方的狭窄用途而言不必要时,它可被替换或忽略。例如,可传递诸如生日等无意义的值来代替传递有效的precision值而不会对结果造成不利影响。类似地,如图1G中所示,接口I1被接口I1′替换,它被重定义来忽略参数或向接口添加参数。接口I2可类似地被重定义为接口I2′,它被重定义来忽略不必要的参数或可在别处处理的参数。此处的重点在于在某些情况中,编程接口可包括诸如参数等对某种用途而言不需要的各方面,因此它们可被忽略或重定义或在别处为其它用途而处理。
C.内联代码编写(inline coding)
将两个单独代码模块的某些或全部功能合并使得其间的“接口”改变形式也是可行的。例如,图1B和1C的功能可分别被转换成图1H和1I的功能。在图1H中,图1B的之前的第一和第二代码段被合并成包含两者的模块。在这种情况中,代码段仍可彼此通信,但接口可适应更适于单个模块的形式。因此,例如正式的Call和Return语句可能不再必需,但根据接口“接口1”的类似处理或响应仍有效。类似地,如图1I中所示,来自图1C的接口I2的一部分(或全部)可被内联地写入接口I1以形成接口I1″。如图所示,接口I2被划分成I2a和I2b,接口部分I2a与接口I1内联地编写代码来形成接口I1″。对一个具体的示例,考虑来自图1C的接口I1执行函数调用square(input,output),该函数调用由接口I2接收,在由第二代码段处理随input传递的值(对其求平方)之后,将求平方后的结果随output传回。在这样的情况中,第二代码段执行的处理(对input求平方)可由第一代码段在不调用接口的情况下执行。
D.脱离(divorce)
从一个代码段到另一个代码段的通信可通过将通信分成多个离散通信来间接完成。这在图1J和1K中示意性地示出。如图1J中所示,提供一个或多个中间件(脱离接口,因为它们将功能和/或接口函数从原始接口脱离)来转换对第一接口“接口1”的通信以使其遵循不同的接口,在该情况中为接口“接口2A”、“接口2B”和“接口2C”。这可例如在存在被设计成与例如根据接口1协议的操作系统通信的应用程序库,而该操作系统然后被改为使用不同的接口,在该情况中为接口2A、接口2B和接口2C时进行。重点在于第二代码段使用的原始接口被改变了,使得它不再与第一代码段使用的接口兼容,因此使用中介来使新老接口兼容。类似地,如图1K中所示,随脱离接口DI1可引入第三代码段来接收来自接口I1的通信,并使用脱离接口DI2将接口功能发送给例如被重新设计成与DI2一起工作但提供相同的功能结果的接口I2a和I2b。类似地,DI1和DI2可一起工作将图1C的接口I1和I2的功能转换到新操作系统,而同时提供相同或类似的功能结果。
E.重写
又一可能的变型是动态重写代码以使用别的但实现相同的总体结果的东西来替换接口功能。例如,可能存在其中将以中间语言(例如,Microsoft IL、JavaByteCode等)呈现的代码段提供给执行环境(诸如由.Net框架提供的、Java运行时环境、或其它类似的运行时类型环境)中的运行时编译(Just-in-Time,JIT)编译器或解释器的系统。可编写JIT编译器以便于将来自第一代码段的通信动态转换到第二代码段,即使其遵循如由第二代码段(原始或不同的第二代码段)所需的不同接口。这在图1L和1M中示出。如图1L中可见,该方式类似于上述脱离情形。它例如可在已安装的应用程序库被设计成与根据接口1协议的操作系统通信,但该操作系统然后被改为使用不同的接口时进行。JIT编译器可被用来使来自已安装应用程序库的运行时通信遵循操作系统的新接口。如图1M中所示,动态重写接口的这种方式也可被应用于动态分解以及更改接口。
还注意到,也可按照各种方式、串行和/或并行地或使用其它介入代码来组合上述经由替换实施例实现与接口相同或类似的结果的情形。因此,以上呈现的替换实施例不是互斥的,而是可被混合、匹配和组合来产生与图1B和1C中所呈现的一般情形相同或等效的情形。还注意到,与大多数编程构造一样,存在此处未描述的实现接口的相同或类似功能的其它类似方式,但它们仍由本发明的精神和范围表示,即,注意到它们至少部分是由作为接口的值的基础的接口所表示的功能及其允许的有利结果。
图2示出了图形用户界面系统常见的常规窗口管理情形200。如图所示,多个打开的应用程序窗口被位于前面的其它更大的窗口部分或完全遮挡。具体地,图2示出了Z形顺序配置的四个窗口203a-203d的情形200,其中应用程序窗口203d在该Z形顺序中比窗口203a、203b和203c高。应用程序窗口203a-203被示为位于桌面空间201内。
桌面空间201是允许显示对应于应用程序的窗口的显示区。底部的任务栏210指示可见或被最小化的当前正在使用的应用程序窗口。任务栏210是诸如激活、移动、隐藏和最小化等用于列出和允许操纵窗口的屏幕上窗口远程控制的具体实现。窗口203a由任务栏按钮213a表示,窗口203b由任务栏按钮213b表示,窗口203c由任务栏按钮213c表示,而窗口203d由任务栏按钮213d表示。如该示例中所示,四个窗口203a-203d被示为打开。沿各个窗口的标题栏区223a-223d示出了窗口203a-203d的内容的文件名。这些文件名可由操作窗口的应用程序生成和/或可由用户定制。每一窗口203a-203d的同一文件名在相应的任务栏按钮213a-213d中示出。
窗口203a-203d由应用程序使用来向用户显示内容。与窗口203a相关联的应用程序可以是与对应于窗口203b、203c和/或203d的应用程序相同或不同的应用程序。窗口203a-203d中的每一个独立于窗口203a-203d中的其它窗口并处于其外部。如此处所使用的,当第一窗口不被包含在第二窗口内且第二窗口不被包含在第一窗口内时,第一窗口处于第二窗口外部。应理解,如果两个窗口仅仅是重叠,则第一窗口不被包含在第二窗口中。
如图2中所示,用户显式地打开这组应用程序窗口203a-203d以便完成任务。任务可涉及从每一打开的应用程序窗口203a-203d中获得信息或内容。例如,该任务可能需要因特网浏览器窗口和来自图形编辑应用程序的两个窗口。如果用户打开了与该第一任务无关的其它应用程序窗口,则这些现有的应用程序窗口203a-203d将在桌面空间201中保持不变。使用现有的窗口管理解决方案,用户可单独最小化与第一任务相关联的应用程序窗口203a-203d中的每一个以将其从视图中移除。为了返回至原始任务,用户将必须个别恢复每一最小化的应用程序窗口203a-203d。
如图3A中所示,根据本发明的各方面,提供用户界面控件330来将一组当前打开和/或活动的应用程序窗口203a-203d声明为一窗口组。图3A示出根据本发明的至少一个方面的包括归组控件330的窗口管理系统的示例。如此处所使用的,术语“声明”和“声明了”此处被定义为指启动创建两个独立且外部的应用程序窗口之间的关系的动作。
在情形300a中,用户将指针331移向应用程序窗口归组控件330。尽管在任务栏区210中示出,但本领域的技术人员应理解,归组控件元素330可位于其它位置,诸如在桌面空间201内。此外,尽管在图3A中被示为可激励(actuatable)的按钮,但可按其它方式启动归组控件330来将应用程序窗口归组。例如,在一个实施例中,用户可执行单个键/按钮敲击和/或键/按钮敲击的序列来将两个或更多窗口归组,诸如应用程序窗口203a-203d。用户可在键盘上按下预定义的键击序列来将应用程序窗口归组。在本发明的另一实施例中,用户可点击任务栏按钮213a并将其拖曳至任务栏按钮213b以启动用于将窗口203a和窗口203b归组的过程。在又一实施例中,用户可点击诸如电子鼠标等输入设备上的激励按钮来通过激励任务栏按钮213a和213b直接或间接地将应用程序窗口213a和213b归组。本领域的技术人员应理解,本发明不限于此处所包括的示例。
回到图3A,在按下归组控件330之后,窗口203a-203d可被归组到一起,然后该组可被共同缩小至如图3B中所示的缩略图340a的大小。按下归组控件330的一个说明性示例在图3B的情形300b中示出。在该示例情形300b中,窗口203a-203b的分组被缩小至桌面空间201中的缩略图340a。此外,从任务栏区210处移除了任务栏按钮213a-213d。尽管在该示例中未示出,但应理解,相应的任务栏按钮213a-213d中的一个或多个仍可保留在任务栏区210内。
已归组的窗口是可作为该组的表示来被一起管理,例如保存、刷新等的一组窗口。将窗口归组到一起减少了用户必须执行的窗口管理工作量,并减少了由重叠窗口组成的工作表面的视觉混乱。此外,一组窗口可保持在一起,使得该组窗口可在稍后被恢复。任何应用程序窗口可被添加至应用程序窗口203a-203d的缩略图340a或在稍后从中移除。
为了使之前最小化的应用程序窗口从缩略图340a还原,用户可移动指针331并激励,例如点击缩略图340a。响应于用户对桌面图标340a的点击,窗口203a-203d的分组被还原至其在归组控件330执行之前的状态。在该示例中,窗口的外观与其在图3A中的相同。
图3C示出了根据本发明的至少一个方面在归组控件330执行之后的窗口管理系统的其它示例。如图3B中所示,情形300c可将窗口203a-203d的分组示为某种类型的图标340b而非应用程序窗口203a-203d的缩略图340a。或者和/或此外,可创建任务栏按钮340c来表示窗口203a-203d的分组。与缩略图340a一样,可通过对图标340b和/或任务栏按钮340c的激励来还原窗口203a-203d。在这一示例中,窗口的外观再次与其在图3A中的相同。
图4示出了根据本发明的至少一个方面在归组控件330执行之后的窗口管理系统的另一示例。在此情形400中,四个打开的应用程序窗口203a-203d的一部分,例如其中三个被声明为一组并被缩小成缩略图440。因此,在本发明的一个实施例中,用户可选择将窗口203a-203c归组,而同时保持窗口203d在桌面空间210中打开并活动。可使用众多其它的方法来允许对少于桌面空间201中的所有打开窗口进行归组,而本发明不限于任何一个方法。本领域的技术人员应理解,可被最小化至任务栏区210的打开窗口也可通过对归组控件330的激励被包括在窗口组中。在其它实施例中,系统可被配置成仅对打开且活动的窗口归组,即使它们与另一打开的窗口重叠,而不将任何最小化的窗口归组。
一旦窗口组被声明并最小化至缩略图340a,用户可继续打开新的应用程序窗口,或还原之前最小化的应用程序窗口。在窗口组被隐式声明之后打开的窗口可被认为是第二窗口组的成员。图5A示出了其中窗口组340a被声明并被最小化而另外的应用程序窗口503a和503b随后被打开的情形500a。这些应用程序窗口是第二窗口组的成员。类似于窗口203a-203d,窗口503a和503b在任务栏区210中具有相应的任务栏按钮513a和513b。
一旦窗口组被声明并被最小化之后,用户可通过经由标准的、预先存在的打开机制,诸如对缩略图340a双击或右击并从上下文菜单中选择‘打开组’来打开该组以便恢复该组。如图5A中所示,用户将指针331移至缩略图组340a。如图5B中所示,打开该组导致应用程序窗口203a-203d从缩略图组340a以动画方式变为全屏,而同时应用程序窗口503a-503b被系统声明为应用程序窗口的第二分组,并以动画方式变成缩略图540。本领域的技术人员应理解,在恢复第一窗口组之后第二窗口组可被自动声明。或者,系统可被配置成要求用户主动地声明第二窗口组。
图5B示出了经由缩略图340a打开第一窗口组的情形500b。第二组随后被最小至缩略图540,从而取代第一组的位置作为缩略图340a。一旦窗口组被恢复之后,正常的窗口交互起效。可移动、激活和关闭个别应用程序窗口。应理解,窗口503a和503b可通过另一窗口组已经存在的事实而被隐式归组。因此,用户不必再次激励归组控件330来将窗口503a和503b归组。
本领域的技术人员应理解,本发明的各方面不限于图中所示的窗口和/或组的数目,且可创建任何数目的不同窗口组。此外,应理解,根据本发明的各方面,可添加一个或多个窗口或从窗口组中移除窗口。此外,一个窗口组中的应用程序窗口也可在另一窗口组中出现。此外,本发明的各方面允许窗口组跨机器的开始和/或注销/登录会话来被保存和还原。
本发明的各方面支持对窗口组的窗口操作。例如,激励窗口组以关闭、保存或刷新内容的命令可使该组内的所有窗口关闭、保存或刷新其内容。命令可以是对整个组全局的、对组内一窗口子集专用的、或对一个应用程序窗口专用的。当应用程序窗口处于两个分开的组内时,对一个组中的应用程序窗口执行的命令可被配置成对另一组内的同一应用程序窗口执行或不执行相同的操作。此外,随着新应用程序窗口被添加至组和/或从组中移除,命令选项可改变。例如,如果包括各自能够执行刷新操作的两个窗口的组中添加了不具有刷新其内容的能力的新窗口,则刷新命令不再是当用户操纵该窗口组时可用的选项。取决于系统如何被配置,用于将窗口作为组来使用的命令可以是或可以不是动态的。
图6是根据本发明的至少一个方面用于将多个应用程序窗口归组的方法的说明性示例的流程图。该过程在步骤601处开始,在那里打开了多个应用程序窗口。在步骤603处,接收到将多个打开的应用程序窗口声明为一组的输入。该过程移至步骤605,在那里作出关于所有打开的窗口是否要被归组到一起的判断。如果所有打开的窗口要被归组到一起,则该过程移至步骤607,在那里,这多个窗口的全部被声明为一组,该过程然后前进至步骤611。如果步骤605的判断发现不是所有打开的窗口都要被归组到一起,则该过程前进至步骤609,在那里这多个窗口的一部分被声明为一组,且该过程前进至步骤611。在步骤611处,显示应用程序窗口组的表示。随着在步骤611中显示了窗口的表示,该过程可结束。应理解,步骤611可以是诸如缩略图340a的缩略图、诸如图标340b的图标、和/或诸如任务栏按钮340c的任务栏按钮。
该过程也可继续至步骤613,在那里作出是否接收到要对表示中的应用程序组执行操作的输入。一种类型的操作可包括保存该表示内应用程序窗口的内容的操作。如果未接收到输入,则该过程结束。如果在步骤613处接收到输入,则该过程移至步骤615,在那里对该组内的应用程序窗口执行该操作。在这一保存内容的情况中,如果操作是全局的,则保存每一应用程序窗口的内容。或者,如果该操作是针对该组中的应用程序窗口的一个子集或单个应用程序窗口的,则该操作仅对该操作所针对的子集或一个窗口执行。
从步骤615处,该过程移至步骤617,在那里作出是否接收到恢复来自组中的应用程序窗口的输入。例如,用户可决定她想要使应用程序窗口还原至其原始状态。如果未接收到输入,则该过程结束。如果在步骤617处接收到输入,则该过程移至步骤619,在那里该应用程序窗口被还原至其在桌面空间中的原始状态,该过程结束。
图7是根据本发明的至少一个方面用于在多个窗口分组之间切换的方法的说明性示例的流程图。该过程在步骤701处开始,在那里打开了多个应用程序窗口。在步骤703处,接收到将多个打开的应用程序窗口声明为一组的输入。在步骤705处,这些应用程序窗口被声明为第一组。前进至步骤707,显示了应用程序窗口第一组的表示。
在步骤709处,接收到打开至少一个新应用程序窗口的输入。在步骤711处,打开了至少一个新的应用程序窗口。应理解,该至少一个新应用程序窗口可以是与第一应用程序窗口组中的相同的应用程序窗口。自步骤711,该过程中的两种行进之一可如步骤713-721的实线所定义,以及由步骤723-729的虚线定义。如第一种行进中所示,自步骤711,该过程前进至步骤713,在那里接收到将该至少一个新应用程序窗口声明为一组的输入。在步骤715处,该至少一个新应用程序窗口被声明为第二组。前进至步骤717,显示了该至少一个应用程序窗口的第二组的表示。在步骤719处,作出是否接收到恢复来自所选的第一或第二组的应用程序窗口的输入的判断。如果否,则该过程等待,直到作出并接收了选择。如果在步骤719接收到输入,则该过程前进至步骤721,在那里所选组的应用程序窗口被还原成其桌面空间中的原始状态,该过程结束。
如在由步骤之间的虚线所定义的第二种行进中,自步骤711,该过程前进至步骤723,在那里作出是否接收到恢复来自第一组的应用程序窗口的输入的判断。如果否,则该过程等待,直到接收到输入。如果在步骤723处接收到输入,则该过程前进至步骤725,在那里该系统自动将桌面空间中的至少一个应用程序窗口声明为第二组。因为用户决定返回至第一应用程序窗口组,因此该系统隐式地将新应用程序窗口归组到一新组。该过程前进至步骤727,在那里显示了第二应用程序窗口组的表示。在步骤729处,第一组的应用程序窗口被还原至其桌面空间中的原始状态,该过程结束。本领域的技术人员应理解,用户可按需通过遵循上述步骤中的一个或多个来在应用程序窗口组之间切换。
另一实施例是程序上控制声明并将窗口直接归组到一组。例如,诸如MicrosoftOffice等一个或多个应用程序可共享由多个文档组成的项目的概念。这些文档可被同时打开成一组,或项目中的新文档在被用户打开时被自动添加到一组。
关于应用程序编程接口(API),本发明的各方面可由API执行。例如,公有API可与操作系统接口来允许操作系统提供本发明的各个特征。在一个实施例中,用于处理表示已归组窗口的数据的软件体系结构可包括被配置成将第一打开的窗口和第二打开的窗口归组到一组的组件、和访问该组件的应用程序接口。API可接收将两个窗口归组的请求,访问必要的功能以执行操作,然后将结果发回给操作系统。操作系统可使用从API提供的数据来执行本发明各个特征。
令应用程序利用窗口组的API包括程序上将窗口归组和解除归组,以及令应用程序指示当对一组实现诸如保存、打印、刷新内容、比较版本、编译源代码等命令时如何处理窗口的状态。该状态信息允许当一组被恢复且相应的应用程序窗口被还原时该组中的应用程序窗口被还原至适当的状态而非默认状态。例如,被声明为一组的最小化窗口可被还原成原始状态。
尽管示出了如此处所述具体化本发明的各方面的说明性系统和方法,但本领域的技术人员可以理解,本发明不限于这些实施例。尤其考虑到前述教导时,本领域的技术人员可对其作出修改。例如,前述实施例的各元素中的每一个可被单独或组合或与其它实施例的元素子组合来利用。也可领会和理解,可作出修改,而不背离本发明真正的精神和范围。因此,该描述应被认为是说明性的而非对本发明的限制。