掌桥专利:专业的专利平台
掌桥专利
首页

用于协作应用的可扩展和可适应的工具集

文献发布时间:2023-06-19 13:27:45


用于协作应用的可扩展和可适应的工具集

背景技术

存在允许用户进行协作的多种不同的系统和应用。例如,一些系统允许人们通过使用实况视频流、实况音频流以及其他形式的实时的基于文本或基于图像的介质进行协作。一些系统还允许用户在通信会话期间共享文件。此外,一些系统为用户提供用于编辑共享文件的内容的工具。

尽管现有系统允许用户共享和编辑文件的内容,但是一些现有系统具有许多缺点。例如,一些系统在通信会话结束之后不维持在特定类型的经编辑的内容和经共享的文件之间的关联。在一个特定示例中,一些协作应用(在本文中也被称为“应用”)提供允许用户为文件创建补充内容的工具,诸如投票、聚焦于选定内容的图形突出、专门的墨迹注释等。然而,一旦通信会话结束,补充内容可能与相关联的文件分开保存。因此,如果用户想要在通信会话结束之后查看投票结果和相关联的文档,则该用户不得不执行多个手动步骤来取回投票数据和文档。此外,通常没有指示文档的哪个部分或方面与所述投票结果相关联。

在另一示例中,当协作应用涉及用于编辑不同类型文件的内容的可用工具的多样性时,协作应用通常受到限制。例如,协作应用通常显示用于编辑不同文件类型的相同工具集,例如,无论用户是在编辑文字处理文档还是电子表格文件,都会显示标准的剪切和粘贴工具。该缺点要求用户利用除了协作应用之外的不同应用以便访问专用工具。使用多个不同的应用来访问专用工具是低效的,并且最终导致不必要地使用诸如带宽、处理资源和存储器等的计算资源。

能够被用于解决上述缺点的一种解决方案是:一些应用能够增加用户可用工具的数量。然而,显示大量工具的这种解决方案是对屏幕空间的低效使用。这最终损害用户体验。基于这些缺点,不断需要改进协作应用。

发明内容

在本文中所公开的技术描述了一种用于动态地选择和显示用于协作应用的可扩展和可适应工具集的系统。协作应用能够提供共享内容编辑工作空间,例如画布,其能够动态地选择和显示上下文相关的工具集以及由外部应用提供的个体工具。所述可适应工具集允许应用为用户提供对用于与内容进行交互的各种工具的访问,并且通过基于用户的活动选择和显示特定工具集来促进对编辑工作空间的更有效使用。所述应用还能够提供以图形方式将位置与由工具使用所创建的内容相关联(例如,固定(pin))的智能挂钩。

在一个例示性示例中,应用可以修改上下文工具集以当地图在共享内容编辑工作空间内被打开时包括用于测量距离的“测量”工具。仅有当在协作应用中打开地图时,所述测量工具才可以出现在所述上下文工具集中。所述智能挂钩能够将所述测量工具的使用与地图上的特定位置相关联,从而将第一用户对所述测量工具的使用示出为被固定到该特定位置。因此,如果第二用户在协作应用中打开所述地图,则所述智能挂钩将向所述协作应用提供引用所述特定位置的数据。然后,第二用户将看到在所述地图上与第一用户相同的位置处示出的测量工具的使用。

所述协作应用可以包括上下文工具集和共享工作空间,例如画布,多个用户在其中进行交互并且协作地编辑内容。可以在画布内打开一个或多个应用。在画布中被打开的应用能够包括生产力应用,诸如文字处理应用、电子表格应用、演示应用、图形应用等。能够在画布中被访问的应用被称为画布应用。在所述画布中被打开的画布应用自身可以打开诸如文件的内容的一个或多个源。当所述画布应用在所述画布中打开文件时,所述画布应用相对于所述文件的功能可能不同。例如,所述上下文工具集可以包括特定于在所述画布中被打开的应用的工具。另外,所述上下文工具集可以提供实现外部应用的功能的新工具。

所述上下文工具集可以自动地改变对根据在所述协作应用的所述画布中被打开的所述画布应用而提供的工具的选择。因此,当文字处理应用在所述画布中被打开时,将示出与在图表应用在所述画布中被打开时不同的工具集。所述工具是在工具选择元件中被提供的,所述工具选择元件可以被实现为工具栏、工具菜单、或者作为提供可扩展和可适应工具选择的另一种类型的用户界面(UI)元件。

在所述画布应用中可用的工具也可以由既不是协作应用也不是画布应用的“第三方”或外部应用来提供。所述外部应用不像画布应用那样打开并且不占用所述画布。相反,所述外部应用以一个或多个工具的形式向协作应用贡献功能,所述工具扩展了所述工具集中的可用工具。由外部应用提供的工具可以跨多个画布使用,并且不一定基于在所述协作应用内被打开的画布应用的类型而改变。因此,例如,一旦外部应用的工具被提供给所述协作应用,无论画布中被打开的画布应用如何,该外部应用工具都可用。

来自任意源的工具可以被用于创建工具使用的特定实例,其能够被固定到在所述画布中被打开的内容上的特定位置。所述固定由所述协作应用来调解,因此固定工具可能仅在文件或者其他类型的内容在所述协作应用的画布中被打开时可见。工具使用的特定实例是文件中对工具的单次使用。例如,创建“便签”的工具可以被用于创建在包含短篇故事的文字处理文档上使用的第一便签和由包含简历的不同文字处理文档使用的第二便签。工具自身是相同的,但是在短篇小说和简历上使用的具体实例是与单独文件的不同使用。在单个文件内也可能存在多个使用工具的实例,诸如在同一文件上放置多个便签。

使用工具的每个实例都与特定的内容集相关联,而不仅仅与打开所述内容的画布应用相关联。可以相对于文件中的特定位置进行与内容的关联。在使用工具的特定实例与文件中的位置之间的这种关联被称为“固定”。固定在使用工具时的特定实例与显示内容中的特定对象或位置之间创建链接。固定不仅仅将工具的使用与覆盖在文件顶部的“玻璃窗格”相关联,而且将工具链接到文件中所包含并且在画布中被显示的实际实体。所述实体可以是文件中的对象,诸如但不限于文本文档的段落或者图表中的形状。不同类型的文件可以呈现不同类型的对象,工具的使用可能被固定到这些不同类型的对象上。固定不从工具栏、菜单等中移除工具,而仅仅将使用该工具的一个实例与文件中的位置相关联。

由外部应用提供的工具可以在协作应用内的、与所述画布的其余部分分开的专用用户界面区域中创建。为了呈现由外部应用创建的任意UI元素,所述画布的一部分可以将数据传入和传出所述外部应用,而不被所述协作应用改变。所述画布的该部分可以形成直接呈现来自所述外部应用的内容并且允许所述协作应用的用户与该外部应用进行交互而无需单独地启动所述外部应用的“容器”。例如,所述容器可以显示为在所述画布内的窗口,其示出由所述外部应用提供的文本、图像、数据等。

来自外部应用的工具可以通过渲染可扩展控件来呈现在协作应用的工具选择元件中。表示所述外部应用工具的所述可扩展控件可以是图标、文本标签等。用户与所述工具选择元件进行交互以选择所述外部应用工具。对所述外部应用工具的该选择由所述系统来接收。

所述系统也从用户交互接收在所述画布中被打开的内容上的位置的指示。用户可以通过选择所显示的内容内的位置或对象来提供该指示。这提供了在所述外部应用与所述内容中的特定对象或位置之间的关联。

一旦已经提供了所述位置,表示所述工具的锚点(例如,图标)就被放置在所述位置处。这在由所述协作应用创建的所述UI内提供了在所述外部应用的特定使用实例与在所述文件上的位置之间的视觉关联。所述锚点被固定所述文件中放置其的位置处。

包括所述文件的标识符(诸如文件名、来自外部应用的工具的标识符以及位置的标识符)的智能挂钩由所述协作应用来存储。所述智能挂钩是一种将所述文件和所述工具使用的特定实例拼接在一起的方式。所述智能挂钩包括维持在工具使用的实例与文件中的对象之间的关联的数据。即使所述对象被移动,所述关联也将所述工具维持在相对于所述文件中的对象的相同位置处。当所述文件在所述画布中被重新打开时,所述智能挂钩允许将表示来自所述外部应用的所述工具的锚点放置在所述文件上的相同位置处。因此,即使在通信会话已经结束之后,如果相同的文件在所述协作应用内被再次打开,则将记住并且恢复到所述工具的链接和使用所述工具的所述特定位置。

这通过将工具的使用固定到所述文件中的特定位置来创建经改进的UI和用户体验。因此,用户无需手动地记住在所述工具与所述文件之间的关联。同样地,如何相对于所述文件中的位置使用所述工具的完整上下文被存储在所述智能挂钩中,并且每当该文件随后在所述画布中被打开时都可用。这减少了对诸如处理力和存储器的计算资源的使用,因为单个应用(即,协作应用)而不是多个应用能够提供工具、与画布应用中的特定位置的关联以及从所述外部应用对数据/功能的访问。

另外,将所述画布的一部分用作用于示出来自所述外部应用的内容的专用容器创建了更紧凑的UI,其不需要用户在单独的窗口中打开多个应用。其还将通过所述外部应用生成的内容与在所述画布中被打开的所述文件上的特定位置紧密链接在一起。因此,不需要单独的记录保存、笔记、电子邮件消息等来解释外部应用的使用如何与所述文件相关。除了减少用户错误或误解之外,该技术还减少了用于存储和传送工具使用的额外注释或者其他结果所需的计算机资源。这能够直接导致更有效地使用诸如存储器、网络带宽、处理力等的计算资源,因为关于在画布中被打开的文件的多种类型的用户交互和通信由协作应用而不是多个单独的应用来管理。

根据阅读以下详细描述和回顾相关联的附图,除了上文明确描述的那些特征和技术优点之外的特征和技术优点将是显而易见的。提供本概述以简化形式介绍在下文的详细描述中进一步描述的概念的选择。本概述并不意图识别所要求保护的主题的关键或基本特征,也并不意图用作确定所要求保护的主题的范围的帮助。例如,术语“技术”可以指代以上和遍及整个文档所描述的上下文所允许的(一种或多种)系统、(一种或多种)方法、计算机可读指令、(一个或多个)模块、算法、硬件逻辑单元和/或(一个或多个)操作。

附图说明

参考附图描述具体实施方式。在图中,附图标记最左边的(一个或多个)数字识别该附图标记首次出现的图。不同图中相同的附图标记指示相似或相同的项目。对多个项目中的单个项目进行的引用可以使用带有字母序列的字母的附图标记来引用每个单独的项目。对项目的一般引用可以使用不具有字母序列的特定附图标记。

图1A图示了协作应用的UI,其示出了在具有可扩展工具栏和被固定到文字处理文件的工具的画布中被打开的文字处理文件。

图1B图示了协作应用的UI,其示出了在所述画布中被打开的图表文件,图1A的可扩展工具栏具有不同的工具选择和被固定到图表文件中的对象的工具。

图2图示了协作应用的UI,其示出了画布、自适应且可扩展的工具菜单、自适应且可扩展的工具栏以及用于呈现外部应用的UI的专用区域。

图3A图示了提供协作应用、(一个或多个)画布应用和(一个或多个)外部应用的示例性计算设备。

图3B图示了画布应用的示例和外部应用的示例。

图4图示了用于将工具的特定实例与画布中的应用上的指定位置链接的智能挂钩的示例性数据结构。

图5A图示了UI的第一视图,其示出了被固定到文字处理文档中的文本段落的工具图标。

图5B图示了图5A的UI的第二视图,其示出了工具图标与相关联的文本段落一起被移动到UI上的不同位置。

图6A图示了UI的第一视图,其示出了被固定到图表文档中的对象的工具图标。

图6B图示了图6A的UI的第二视图,其示出了工具图标与相关联的对象一起被移动到UI上的不同位置。

图7A图示了呈现具有工具栏的地图应用的示例性UI,所述工具栏包括特定于地图应用的测量工具和地图固定工具。

图7B图示了呈现具有工具菜单的地图应用的示例性UI,所述工具菜单包括特定于地图应用的测量工具和地图固定工具。

图8A图示了在具有可扩展工具栏的画布中呈现草图应用的示例性UI。

图8B图示了具有扩展的工具栏的图8A的示例性UI,所述工具栏示出了表示外部应用的多个图标,并且将表示所述外部应用中的一个外部应用的工具图标固定到草图应用中被打开的绘图上的位置。

图8C图示了图8A的示例性UI,其示出了表示外部应用的工具图标被扩展以创建用于呈现从外部应用提供的数据的容器。

图9是图示了对工具的选择和在协作应用的画布中被打开的内容上的位置处固定表示所述工具的锚点的示例性流程图。

图10是图示了在协作应用的画布中打开内容时将表示工具的锚点放置在内容上的先前指定的位置处的示例性流程图。

图11是示出了用于在本文中所公开的技术的例示性操作环境的各方面的计算系统图。

图12是计算架构图,其示出了能够实现在本文中所公开的技术的各方面的计算设备的配置和操作的各方面。

具体实施方式

图1A图示了协作应用的示例性UI 100,其中,在文字处理应用内打开了文本文件102。所述协作应用是可以保存多种内容以供多个用户同时和/或顺序与之交互的软件应用。所述协作应用可以包括诸如聊天功能、实况视频流、实况音频流以及文件共享的功能。协作应用的示例包括MICROSOFT TEAMS、SLACK、GOOGLE HANGOUTS和FACEBOOK WORKPLACE。所述协作应用可以是任意类型的应用,并且不仅限于具有特定类型的功能的应用(例如,视频流送、音频流送等)。

UI 100还包括工具栏104A,其呈现了对协作应用的用户可用的工具集合。工具栏104A是上下文的并且是可扩展的,因为工具基于上下文而改变并且可以添加额外的工具。工具栏104A中的工具可以包括外部应用工具106,其是在该示例中由具有圆角的正方形内的风格化字母P表示的可扩展控件。外部应用工具106是可以被添加到工具栏104A的可扩展控件的示例。外部应用工具106可以访问投票应用的功能。当被添加到所述协作应用的工具栏104A时,所述投票应用然后可以对在所述协作应用中被打开的所有画布应用可用。

工具栏104A还可以包括与文字处理应用相关联的上下文工具108B。上下文工具108B由圆圈中的风格化字母G来表示。上下文工具108B可以是语法检查工具。上下文工具108B特定于文字处理应用。因此,工具栏104A可以在文字处理应用被打开时而不是在其他类型的画布应用在所述协作应用内被打开时示出上下文工具108B。包括或不包括上下文工具108B是工具栏104A能够基于上下文如何改变的示例。

示例性UI 100还示出了锚点110A的示例,其指示工具被固定到文本文件102的一部分的位置。锚点110A可以在UI 100中被渲染为图标、符号、文本、或者来自工具栏104A的工具或协作应用可用的另一工具的其他表示。锚点110A可以与文本文件102中的特定位置相关联,使得如果文本文件102中的对应对象(例如,段落、句子、单词等)移动,则锚点110A的位置将移动。锚点110A还可以跨多个会话持续,从而在下次打开文本文件102时,其将出现在相同的位置。

图1B图示了类似于图1的示例性UI 100的示例性UI 112,但是其包括图标文件114而不是文本文件102。在示例性UI 112中的工具栏104B与来自图1A的示例性UI 100中的工具栏104A相似但是不相同。在该示例性UI 112中,打开了不同类型的应用,图表应用而不是文字处理应用。该工具栏104B包括与图1A的工具栏104A不同的上下文工具108B。具体而言,所述语法检查工具不再可用(语法检查对图表文件114具有使用限制),但是在工具栏104B中包括提供对齐形状的功能的上下文工具108B。这个用于对齐形状的上下文工具108B被添加到工具栏104B,因为在协作应用中被打开的应用是图表应用。包括用于对齐形状的上下文工具108B并且省略用于语法检查的上下文工具108A是工具栏104中的工具集基于上下文而适应的示例。

外部应用工具106仍然被包含在工具栏104B中。外部应用工具106在工具栏104中的存在基于外部应用被加载、链接、关联或者以其他方式对协作应用可用。可以基于在协作应用中被打开的文件的数据类型来选择外部应用工具106的可用性。

示例性UI 112还包括与图1A中的锚点110A不同的锚点110B。锚点110B表示与图表文件114中的矩形“D”相关联的工具使用的特定实例。锚点110B可以表示与图1A中所示的锚点110A相同或不同的工具的使用。即使锚点110A、110B两者都表示对相同的工具的使用,其也示出了在不同应用内的不同文件中使用该工具的单独实例。锚点110B也可以以与图1A中的锚点110A被固定到文本文件102中的对象相同的方式被固定到图表文件114中的对象(即,矩形“D”)。如在图1A中的锚点110A,每次图表文件114在协作应用112中被打开时,该锚点110B也可以随着矩形“D”移动并且出现在相同的位置处。

图2图示了包含画布202的协作应用的示例性UI 200。示例性UI 200通过提供额外细节和UI元素扩展了图1的UI 100和UI 112。

所述协作应用中的画布202是UI中保存来自所述协作应用或者来自一个或多个其他应用的内容的区域。任意类型的应用可以在画布202中被打开。可以在画布202中被打开的应用的示例包括生产力应用,如文字处理应用、电子表格应用、图表应用、演示应用、照片或视频编辑应用等。在协作应用中被打开并且通过画布202访问的应用可以被称为画布应用。

画布202能够用作共享工作空间,其中加入协作会话的多个用户可以彼此通信并且与在画布202中被打开的画布应用中的一个画布应用中被打开的文件进行交互。然而,画布202也可以由单个用户使用而无需与其他用户协作。多个用户能够以与用户如何与作为画布202外部的独立实例运行的那些应用交互相同或相似的方式与在画布202中被打开的画布应用协作地交互。然而,访问画布202内的应用提供额外功能,诸如协作地查看和操纵文件的能力,以及添加当在画布202外部使用时在画布应用中可能不可用的工具和特征。

画布202可以提供任意一种或多种不同类型的工具选择元件。工具选择元件可以被实现为例如工具菜单204或工具栏104。工具栏104可以被实现为能够由用户移动到画布202内的各个位置的浮动工具栏。除了在画布202中被打开的应用中可用的任何工具或功能之外,还呈现了由协作应用通过工具选择元件提供的工具。因为所述工具选择元件是作为画布202的一部分生成的,所以这些工具可能在应用在画布202的外部被启动时不可用。

通过工具菜单204、工具栏104或者另一工具选择元件可用的工具是上下文感知的可扩展工具集的一部分。所述工具集是可扩展的,因为可以通过协作应用、画布应用或者通过外部应用来向其添加额外工具。所述工具集是上下文感知的,因为可用的特定工具可以取决于协作应用的上下文,诸如在画布202中被打开的应用的类型或者正在使用协作应用的方式(例如,在演示模式中)。在该可扩展工具集中可用的工具在该示例性UI 200中被图示为工具菜单204和工具栏104。所述工具集可以包括画布工具206、外部应用工具106以及上下文工具108。

画布工具206包括标准工具或通用工具,其可以是协作应用的内置部分并且可用于所有或几乎所有画布应用,并且当在画布202中没有画布应用被打开时可能可用。画布工具206的示例可以包括用于注释的铅笔、用于突出文本的荧光笔、用于添加注释的便签工具以及用于捕获画布202中所显示的内容的图像的快照工具。这些仅仅是工具的示例,并且可以包括其他类型的工具作为画布工具206之一。画布工具206通常提供广泛适用于许多不同场景并且具有许多不同类型的画布应用的功能。

外部应用工具106提供对外部应用的功能和数据的访问。外部应用不是协作应用,也不是在画布202中被打开的主要应用。然而,创建外部应用的开发商或公司可以与创建协作应用或画布应用的开发商或公司相同。一个或多个外部应用可以在画布202内被实现为外部应用的小实例。因此,通过画布202中的外部应用工具106可用的外部应用的特征和功能可以仅包括外部应用在作为独立应用运行时提供的特征和功能性的子集。

外部应用的一个示例是用于进行调查或者生成投票的应用。当作为独立应用操作时,该示例性投票应用可以提供与生成投票或调查相关的大量功能;经由电子邮件、网页等来传播投票或调查;并且分析结果。然而,在画布202内实现的投票应用的小实例可能仅提供进行简单投票的能力。这是仅提供完整应用中可用特征的子集的应用的小实例的示例。

画布应用可以提供用于与外部应用进行通信的应用编程接口(API)。任何第三方开发商或软件生产商都可以创建与协作应用进行交互(例如,通过API)的外部应用,以便将该外部应用的功能添加到画布202。尽管在该示例性UI 100中仅示出了一个外部应用工具106,但是在工具菜单204或工具栏104中可以包括任意数量的外部应用工具106。

因此,外部应用工具106通常提供与由协作应用或者由在画布202中被打开的画布应用提供的功能不同的专用功能。外部应用工具106可以通过插件或者其他修改而被添加到协作应用,并且可用于在画布202中被打开的任何画布应用。因此,外部应用工具106不一定被绑定到或者基于在画布202中被打开的画布应用。

上下文工具108是可以基于底层画布应用的需要而被注入到画布202中的特定于上下文的工具。例如,如果地图应用在画布202中被打开,则其可以提供测量距离和在地图上标记位置的测量工具和地图固定工具。如果不同类型的画布应用在画布202中被打开,则将添加不同类型的工具。这些是可以基于上下文被添加到工具菜单204或工具栏104的可扩展工具的示例。

上下文工具108可以由在画布202中被打开的画布应用来创建和指定。因此,上下文工具108的定义、图标、名称、功能等可以不由协作应用提供,而是由在画布202中被打开的画布应用来提供。通常,上下文工具108特定于单个应用或者一类应用(例如,所有文字处理应用、所有地图应用等),并且提供与该画布应用的特征相关的功能。

可扩展工具还可以包括基于对所述协作应用的使用而被添加到工具选择元件的工具。例如,如果协作应用被配置为演示模式,则工具栏104或者其他工具选择元件可以包括特定于演示的工具,诸如用于指示画布202内的位置的激光定点工具或者用于创建记录的消息的语音笔记工具。这些类型的可扩展工具可以呈现在工具选择元件中,而不考虑在画布202中被打开的(一个或多个)特定画布应用,但是基于协作应用的配置或设置(诸如针对演示模式的设置)而呈现。

协作应用的该示例性UI 200还包括用于呈现来自外部应用的内容的UI208的专用区域。UI 208的该专用区域可以用作保存外部应用的小实例的容器,并且可以被称为“容器”。在容器208中呈现的UI元素和数据由独立于协作应用的外部应用或者在画布202中被打开的任何画布应用来提供。尽管仅示出了一个容器208,但是外部应用的示例性UI 200可以包括针对一个或多个外部应用的任意数量的专用区域。

容器208可以具有特定的尺寸和/或形状。例如,所述外部应用可以指定针对容器208的形状和/或尺寸。所述形状可以是正方形、矩形或者其他形状。可以根据纵横比和一个或多个其他特性来定义所述形状。可以根据像素、点、厘米、屏幕空间的百分比等来定义尺度。可以基于在协作应用与外部应用之间诸如经由API的通信来实现对该容器208的创建。在一个示例中,所述协作应用可以将其总屏幕尺寸和画布202的纵横比通知给所述外部应用,并且所述外部应用可以以针对画布202内的区域的特定尺寸和形状的请求进行响应。在一个示例中,所述协作应用可以提供能够专供外部应用使用的区域的最大尺寸,并且该外部应用可以指示其将使用多少空间。容器208的尺寸和形状可以基于显示器的尺寸、在画布202中被打开的画布应用的类型以及外部应用而变化。

容器208可以被认为是示例性UI 200的通过区域,在其中从外部应用接收在容器208中所显示的内容并且将输入的输入发送到外部应用。这使得用户能够通过UI 200与外部应用进行交互,而无需打开单独的窗口或者创建不同的UI。通过容器208输入和接收的数据可以与在UI 200的其他部分中输入和接收的数据分开管理。在一个示例中,所述协作应用以及在画布202中被打开的任意画布应用可能无法访问通过针对外部应用的UI 208的专用区域的任意数据。这种类型的分离和划分为UI 200提供了高级别的定制,因为除了容器208的尺寸和形状之外,对由外部应用提供的内容或功能没有强加任何限制。容器208中呈现的外部应用可以使用与呈现协作应用的系统不同的视觉主题、不同的字体、不同的语言、不同的操作系统等。这些差异对用户来说可能是在视觉上明显的。

锚点110可以表示在画布202内的位置处使用外部应用工具的特定实例。锚点110是外部应用工具的视觉表示,其与在画布202中被打开的画布应用的文件中的特定位置相关联。诸如通过利用鼠标点击、鼠标悬停、用手指触摸触摸屏或者其他技术对该锚点110的激活能够导致容器208出现。如果锚点110在画布202内被移动,则容器208也移动。容器208当被移动时可以保持其尺寸和形状。

图3示出了用于实现协作应用304的示例性计算设备302的框图300。用户306可以与计算设备302进行交互以访问协作应用304和其他应用,诸如画布应用308和外部应用310。计算设备302可以是任意类型的计算设备,诸如台式计算机、膝上型计算机、平板计算机、手持计算设备等。

计算设备302可以包括协作应用304。在一个示例中,协作应用304可以是基于网络的应用或者被托管在诸如服务器或基于云的系统的远程计算设备(未示出)上的应用。计算设备302还可以包括一个或多个画布应用308、一个或多个外部应用310以及可以在画布中被打开的一个或多个内容源312。一个或多个内容源312可以是一个或多个文件,每个文件可以具有相关联的数据类型。例如,所述数据类型可以是TXT文件、.docx文件、DWG文件、TSV文件等。数据类型可能与文件类型相关。

协作应用304可以包括能够打开画布应用308并且呈现一个或多个工具的画布202。协作应用304还可以包括额外功能,诸如管理语音呼叫、电话会议、群聊或者其他协作相关工具的能力。在协作应用304中的另一API 316允许画布应用308将关于特定上下文工具108的信息传送给协作应用304。因此,例如,通过(一个或多个)API 316,协作应用304可以将特定上下文工具108添加到工具菜单204或工具栏104。额外的API 316使得外部应用310能够将工具添加到工具菜单204或工具栏104,并且与协作应用304的用户306交换数据。由外部应用310访问的API 316可以描述提供由外部应用310提供的工具的功能的容器208。(一个或多个)API 316可以允许容器208的各方面的规范,诸如尺寸和形状。(一个或多个)API 316还可以描述外部应用310定义位置的方式,诸如通过使用坐标系或者通过参考画布应用308内的特定类型的对象。

当协作应用304是在计算设备302上的活动应用时,计算设备302的用户界面(UI)318可以呈现画布202。画布202可以与在图1A中所示的UI 100、在图1B中所示的UI 112或者在图2中所示的UI 200中的任意一个相同或相似。UI 318还可以基于在计算设备302上活动的不同应用、操作系统等呈现其他UI,诸如来自容器208内的外部应用310内的UI。

计算设备302可以被通信地连接到一个或多个服务器322(A)-322(N)。除了在计算设备302上本地可用的那些之外,(一个或多个)服务器322还可以向计算设备302和协作应用304提供对软件、文件和数据结构的访问。例如,任何智能挂钩数据302、内容或(一个或多个)文件312、(一个或多个)画布应用308和(一个或多个)外部应用310可以被存储在(一个或多个)服务器322上,而不是或者除了被存储在计算设备302上。

图3B示出了(一个或多个)画布应用308和(一个或多个)外部应用310的多个示例。(一个或多个)画布应用308可以是由协作应用304识别出并且能够在画布202中被打开的一个或多个应用,诸如生产力应用。(一个或多个)画布应用308的示例包括但不限于:地图应用308A、文字处理应用308B、绘图应用308C、草图应用308N等。(一个或多个)画布应用308A-308N中的任意画布应用可以包括代码330A-330N,其为计算设备302提供指令以运行相应的画布应用308。可以执行代码330以将画布应用308作为独立应用来运行。代码330或代码330的子集可以当画布应用308在应用304内被打开时被执行。

画布应用308A-308N的清单332A-322N包括描述将画布应用308打开到画布202中可以如何改变在图2中所示的工具菜单204或工具栏104中的工具选择元件的数据。能够在清单332中描述由(一个或多个)画布应用308提供的任意上下文工具108。清单332可以提供表示上下文工具108的图标、名称或者其他可扩展控件以供在工具菜单204或工具栏104中使用。在一个示例中,清单332还可以指示要从工具选择元件中移除的画布工具306中的一个或多个画布工具。例如,当地图应用322在画布314中被打开时,清单332可以指示协作应用304从画布工具集306中移除荧光笔工具。

针对任意画布应用308的清单332声明画布应用308是一类应用的成员。特定类型的应用可以与特定工具集相关联。例如,将自身声明为地图应用而不仅仅是该特定地图应用308A的任意应用都可以与包括测量工具和地图固定工具的工具集相关联。作为额外示例,将自身声明为草图应用308N的任意画布应用308可以与涉及图形应用的预定工具集相关联。

通过使用清单332来声明与一类应用的关联,(一个或多个)画布应用308不必识别特定工具,而是能够利用在一类应用与一个或多个上下文工具108之间的预先定义关系。与给定类的应用相关联的上下文工具108的集合可以由协作应用304来维持。因此,这些上下文工具108可以驻留在协作应用304内,并且每当指定类的应用在画布202中被打开时都被包含在画布202中。

清单332可以声明画布应用308是一类应用的成员,并且也可以指定特定于该特定应用的一个或多个额外工具。因此,在图2的工具菜单204或工具栏104中可用的上下文工具108可能来自画布应用308和/或来自由协作应用304针对特定类的应用而维持的工具。

(一个或多个)外部应用310可以包括未在画布202中被打开但是可以在协作应用304内被使用的一个或多个应用。外部应用310的一个示例是被用于进行投票或调查的投票应用310A。投票应用310A提供了一个或多个工具(例如,进行投票的工具),其向协作应用304添加功能。该功能(诸如进行投票的能力)是由协作应用304自身提供的功能或者(一个或多个)画布应用308中的任意画布应用提供的功能的补充。投票应用310A提供表示工具的可扩展控件336A。表示所述工具的可扩展控件336A可以被实现为用于包含在工具栏104中的图标、用于包含在工具菜单204中的文本,或者通过文本、图片、符号等图形表示UI内的工具的空间的任意其他方式。

投票应用310A还包括代码338A,其当被执行时实现投票应用310A的功能。代码338A可以由计算设备302打开并且运行,或者其可以由网站或者其他远程计算设备运行。在该示例中,代码338A可以提供用于生成和收集对投票的响应的功能。这可以是当作为与协作应用304分离的独立应用操作时用于投票应用310A的代码的子集。投票应用310A还为由投票应用310A提供的任意工具提供工具标识符(ID)340A。工具ID 340为使用工具的特定实例提供独有标签或名称。因此,在投票应用310A的上下文中,工具ID 340识别投票的内容,诸如问题和可能的答案以及响应于投票而接收到的任意数据。因为每个工具ID 340A对于工具的特定实例是独有的,所以可能存在由投票应用310A维持多个工具ID 340A。

外部应用310的其他示例包括工作流应用310B和百科全书应用310N。工作流应用310B管理对用户的任务和责任的分配以及跟踪那些任务的进展。工作流应用310B可以包括图形元素336B、代码338B和(一个或多个)工具ID 340B。百科全书应用310N提供诸如来自诸如维基或在线百科全书之类的百科全书信息源的文章或定义的内容。百科全书应用310N还可以包括图形元素336N、代码338N和(一个或多个)工具ID 340N。

返回到图3A,工具的每次使用可以与画布202中被打开的文件的内容的特定“位置”或显示相关联。在工具、使用位置和特定于该特定使用的任何内容(“补充内容”)之间的链接(“关联”)可以通过“智能挂钩”进行维持。智能挂钩是将工具与在画布202中被打开的文件中的显示内容相关联的数据结构。所述智能挂钩包含在画布202中重新创建画布202、画布应用308、特定内容312(诸如网页或文件)、来自文件的显示内容上的位置以及工具之间的关联所需的数据。在一个示例中,智能挂钩数据320可以由协作应用304来存储和管理。然而,智能挂钩数据320可以替代地由提供在智能挂钩数据320中引用的工具的(一个或多个)画布应用308中的一个画布应用来存储。智能挂钩数据320包含足以将工具使用的特定实例和来自文件的特定显示内容拼接在一起的数据,但是不一定包含来自文件或应用的任何数据。换言之,智能挂钩可以提供“谁”和“哪里”,但是不能提供“什么”。智能挂钩数据320可以包含针对任意类型的工具的数据,所述工具诸如是画布工具206、外部应用工具106或上下文工具108。

图4示出了智能挂钩400的示例性数据结构。智能挂钩也可以被简称为“挂钩”。智能挂钩400表示在工具与画布之间的挂钩,所述挂钩通过将工具的实例拼接到由协作应用(诸如在图2和图3A中所示的画布202)生成的UI上的特定位置而隐式地将彼此相链接。用于实现该拼接的智能挂钩400可以由所述协作应用来管理和存储。API可以定义智能挂钩400的特征,并且提供使用具有通用语言的API的应用来传送构成智能挂钩400的数据的类型和结构。

智能挂钩400可以包括应用标识符(ID)402。画布应用ID 402识别特定画布应用308。画布应用ID 402可以识别例如特定文字处理应用、特定图形应用、特定绘图应用、特定电子表格应用或者其他类型的应用。智能挂钩400中所包括的内容标识符(ID)404识别可以在画布中被打开的特定内容,诸如文件或网页。换言之,内容ID 404根据当画布活动时在画布中被打开的内容来识别特定画布。举例来说,画布应用ID 402可以识别图表应用,并且然后,内容ID 404可以识别由图表应用打开的图表文件。

位置标识符(ID)406也被包含在智能挂钩400中。位置ID 406识别由文件ID 404表示的文件中的位置。所述文件内的位置可以以任意多种方式来表示。位置ID 406以协作应用和任意画布应用或者提供用于固定在画布上的工具的外部应用都能理解的方式来表示位置。

在一个示例中,位置可以通过一组坐标来表示,所述一组坐标指示文件上相对于坐标系的位置。例如,位置可以被表示为一组x、y坐标,其中,坐标系(0,0)的原点被设置为画布的中心。在不存在用于传达位置信息的任何其他技术或标准的情况下,使用一组坐标可以是表示位置的默认方式。由画布应用ID 402表示的画布应用可以指定表示位置的方式。当位置通过一组坐标来表示时,即使底层文件的内容或位置发生变化,该位置也可以在由协作应用呈现的UI内保持不变。

在一个示例中,位置可以被链接到由文件ID 404表示的文件中的普遍理解的对象。所述对象的类型可以根据由画布应用ID 402所表示的应用的类型而变化。例如,在文字处理应用中,对象可以是段落、页面和行号、文本短语、单个词语等。作为另外的示例,在地图应用中,所述对象可以是地理地标或地理定位,诸如纬度和经度。注意,尽管纬度和经度表示坐标系,但是该坐标系基于画布应用(即,特定地图)中所包含的内容,这与表示由协作应用生成的UI的坐标系不同。作为另外的示例,图表应用可以使用诸如正方形、矩形、圆形、线条等的图表元素作为普遍理解的对象。当位置与文件中普遍理解的对象相关联时,所述位置将随着该对象的位置变化而在由协作应用呈现的UI内变化。因此,利用智能挂钩400被固定到该对象上的任何工具都将随着对象移动而移动。

如果智能挂钩400引用由外部应用提供的工具,则智能挂钩400还可以包括外部应用标识符(ID)408。外部应用ID 408指示特定的外部应用。例如,外部应用ID 408可以指示智能挂钩400引用由投票应用而不是一些其他外部应用创建的对象。

在智能挂钩400中的工具标识符(ID)410识别工具使用的特定实例。工具ID 410还可以提供指向与工具使用相关联的内容的指针或者其他指示。例如,如果所述工具是便签工具,则工具ID 410可以指示便签内容所在的位置。因此,工具ID 410指示工具如何在一个特定实例中使用,而不仅仅是所述工具的名称或身份。

智能挂钩400还可以包括时间戳412和用户标识符(ID)414。时间戳412指示工具与应用中的位置之间的关联的创建的时间和/或日期。用户ID 414指示创建由智能挂钩400表示的关联的用户(例如,用户306)。时间戳412可以被用于管理智能挂钩400的不同版本。用户ID 414可以被用于提供与用户ID 414相关联的用户的正确的工具-文件链接。

在一个示例中,智能挂钩数据242可以被本地存储在计算设备302上,如在图3中所示的,例如作为智能挂钩数据320。然而,智能挂钩400可以替代地或另外地远程存储在网络或基于云的存储位置上。当智能挂钩400被存储在网络可访问位置中并且不仅在计算设备302的本地存储设备上时,由用户ID 414表示的用户能够从能够访问存储位置的任何计算设备访问他的或她的智能挂钩400(即,并且具有被固定在他或她在给定文件中选择的位置的工具)。智能挂钩400可以另外地或替代地与由文件ID 404表示的文件相关联,使得在协作应用的画布中打开该文件的任何用户将看到被固定在由智能挂钩400指示的位置处的工具。

图5A和图5B图示了协作应用UI的两个视图,其示出了工具的固定位置如何与在协作应用的画布中被打开的文件的底层内容一起移动。示例性UI 500呈现在协作应用的画布中被打开的文字处理应用的第一视图。在该示例中,存在表示便签工具的固定锚点502。便签工具可以是在图2中引入的画布工具206的示例。锚点502是与在画布中被打开的文件中的特定位置相关联的工具的视觉表示。所述视觉表示可以具有但不限于图钉头部的外观,并且可以包括与工具相关联的图标,所述图标与在工具栏104中显示的该工具的图标相同或相似。

示例性UI 504示出了文字处理应用的第二视图,其中,锚点502已经与文字处理文件的段落[0003]一起移动。在该示例中,文字处理文件的段落是便签工具的该实例被固定到的对象。API(诸如在图3中所示的API 316)可以指定段落是被用于定义文字处理应用内的位置的对象类型。利用在锚点502与文件中的对象之间创建的这种关联,锚点502不会被卡在画布内的固定位置处,而是根据相关联对象(即,段落[0003])的位置变化而改变位置。这是被固定到在画布中被打开的文件内的普遍理解的对象的工具的示例。

图6A和图6B图示了协作应用UI的两个视图,其示出了工具的固定位置如何与在应用的画布中被打开的文件的底层内容一起移动。示例性UI 600呈现包括工具栏104的图表应用的第一视图。在该示例中,存在与图表对象(矩形“B”)相关联的锚点602。锚点602表示便签工具。

在图6B中,示例性UI 604示出了锚点502相对于图6A的UI 600被移动到UI 604内的不同位置,因为工具被固定到的对象已经移动到图表文件内的不同位置。相关联的对象矩形“B”可以由图表应用内的独有对象标识符或代码来表示。该独有对象标识符或代码可以是被包含在将便签工具的该实例拼接到矩形“B”的智能挂钩中的位置ID 406。

图7A和图7B示出了地图应用的示例,其中,通过工具栏104或工具菜单在协作应用的UI中呈现与地图应用相关联的上下文、特定于地图的工具。图7A示出了示例性UI 700,其中,地图应用在协作应用的画布中被打开。所述地图应用与不作为由所述协作应用呈现的通用工具集的一部分的特定工具相关联。这些工具是早先介绍的上下文工具108的示例。所述工具在该示例性UI 700中被示为工具栏104中工具集的一部分。

在该示例性UI 700中的工具栏104包括由标尺图标表示的测量工具702以及由图钉图标表示的地图固定工具704。这些是未被包含在与其他类型的应用一起呈现的工具栏中的工具,诸如,例如在图5A和图5B中所示的文字处理应用。测量工具702可以执行特定于地图的功能,诸如测量两点之间的距离。示例性UI 700示出了使用测量工具702来生成测量距离706的示例。由测量工具702提供的功能可以仅当地图应用在协作应用的画布中被打开时才可用于所述地图应用。

图7B示出了示例性UI 708,其包括在图7A中所示的相同地图应用和地图文件。在该示例性UI 708中,工具被示出在工具菜单204中而不是工具栏104中。工具菜单204也是工具选择元件的示例。所述工具选择元件可以使用任何种类的UI设计和界面选项来实现,并且并不限于工具栏104或工具菜单204。该示例性UI 708示出了地图固定工具704的使用。地图固定工具704可以被用于指定在协作应用内被打开的地图文件上的位置。例如,地图固定工具704可以被用于将固定工具808放置在地图上的位置处。地图文件内的固定工具808的位置可以使用诸如街道地址或地理位置之类的普遍理解的对象来表示。

在图7A和图7B中所示的测量工具702和地图固定工具704可以在与地图应用相关联的清单内描述,诸如在图3中所示的清单332。在一个示例中,协作应用中的插件可以引用清单332来获得与地图应用相关联的任何工具。在一个示例中,清单332可以通过API被呈现给所述协作应用。清单332提供用于修改工具选择元件以包括表示测量工具702和地图固定工具704的可扩展控件336(例如,用于包含在工具栏104中的图标或者用于包含在工具菜单204中的文本)的指令。

图8A、8B和8C示出了草图应用,所述草图应用已经打开了文件,所述文件包含在协作应用的画布内的建筑物外部的草图。

图8A示出了示例性UI 800,其包括协作应用的画布内的工具栏104。所述工具栏包括“工具”图标802以显示除了在工具栏104的该视图中所示的工具之外的额外工具。通过使用定点设备(诸如鼠标或手指)或者通过使用键盘或语音命令来激活“工具”图标802来扩展工具栏104以示出额外工具选项。

图8B示出了示例性UI 804,其中,工具栏104被扩展以示出三个外部应用工具。所述外部应用工具可以包括由扩展工具栏中的图标806表示的投票工具。该图标806可以被选择并且与画布中的文件上的位置相关联以创建将投票工具的实例与外部设计草图上的位置相关联的固定工具808。固定工具808可以由与工具栏104中表示投票工具的图标806相同或相似的图标来表示。投票工具与文件上的位置的所述关联可以由协作应用来捕获,并且被协作应用记录为智能挂钩。在一些示例性实现方式中,所述画布应用而不是协作应用可以创建和/或存储智能挂钩。

图8C示出了示例性UI 810,其中,诸如通过选择或鼠标悬停激活固定工具808打开用于投票应用的容器208。当在协作应用中在草图应用中被重新打开时,固定工具808可以在其原始位置(即,图8B中设置的位置)被添加到UI 810。例如,在图8C所示的UI 810可以表示在由图8B的UI 804表示的第一会话被关闭之后的后来的会话。

容器208呈现由投票应用提供的内容。该内容可以在不经协作应用修改的情况下呈现,并且可以与示例性UI 810的其他部分不同,诸如通过具有不同的样式、字体、配色方案、分辨率、语言等。在该示例中,容器208呈现具有三个选项的投票。对选项之一的用户选择创建被传递到投票应用并且可以由投票应用与固定工具808相关联地保存的数据。固定工具808的后续激活可以调用来自投票应用的数据并且呈现容器208内的投票的结果。因此,点击或者以其他方式激活固定工具808启动由固定工具808表示的外部应用的功能。这使得能够在画布应用(即,草图应用)内使用投票应用的至少一部分功能,而无需单独地启动投票应用或者打开额外窗口。

图9和图10是图示了与可扩展工具和将工具对象固定到协作应用中的画布上相关的例程900和1000的各方面的图。本领域普通技术人员应当理解,在本文中所公开的方法的操作不一定以任何特定次序呈现,并且以(一个或多个)替代次序执行一些或所有操作是可能的并且被设想到。为便于描述和例示说明,已经按演示次序呈现了所述操作。在不背离随附的权利要求的范围的情况下,可以添加、省略、一起执行和/或同时执行操作。

还应当理解,所例示的方法能够在任何时间结束并且不需要全部执行。方法的一些或所有操作和/或基本上等效的操作能够通过执行被包括在计算机存储介质上的计算机可读指令来执行,如在本文中所定义的。在说明书和权利要求中所使用的术语“计算机可读指令”以及其变体在本文中被宽泛地使用以包括例程、应用、应用模块、程序模块、程序、组件、数据结构、算法等。计算机可读指令能够在各种系统配置上实现,包括单处理器或多处理器系统、小型计算机、大型计算机、个人计算机、手持计算设备、基于微处理器的可编程消费者电子产品、其组合等。

因此,应当意识到,在本文中所描述的逻辑操作被实现为:(1)在诸如在本文中所描述的那些的计算系统上运行的计算机实现的动作或程序模块的序列,和/或(2)计算系统内的互连机器逻辑电路或电路模块。实现方式是取决于计算系统的性能和其他要求的选择问题。因此,逻辑操作可以以软件、固件、专用数字逻辑以及其任何组合来实现。

另外,在图9和图10中所示的操作能够与上文所描述的示例性呈现UI相关联地实现。例如,在本文中所描述的(一个或多个)各种设备和/或(一个或多个)模块能够生成、发送、接收和/或显示与画布、工具和/或外部应用的内容相关联的数据。

图9示出了用于在协作应用的画布上固定表示外部应用的锚点的例程900。例程900还包括通过创建智能挂钩来“脱水”在画布、应用、文件的显示内容的位置和工具之间的关系的操作。如在本文中所使用的,脱水指代存储指向彼此相关的其他数据的多个指针,而不必存储所有其他数据自身。

在操作902处,画布应用在协作应用的画布内被打开。所述画布应用可以是生产力应用或者另一种类型的应用,其包括在本公开中先前讨论的任何类型的应用。在协作应用内打开画布应用可以由用户从呈现先前与协作应用相关联的应用的选择的协作应用的菜单中选择画布应用来执行。打开画布应用可能导致画布应用占据由协作应用呈现的UI的全部或显著全部画布部分。

在操作904处,文件在画布应用中被打开。在画布应用中打开文件可能导致在协作应用的画布内呈现文件的内容。画布应用可能能够打开一种或多种文件类型。(一种或多种)具体的文件类型取决于画布应用。

在操作906处,表示外部应用的工具的可扩展控件在画布中所显示的工具选择元件中被渲染。可以基于文件的数据类型来选择所述可扩展控件。因此,文件的类型可以确定哪些类型的可扩展控件在UI中可用。所述工具选择元件可以是工具栏、工具菜单或者其他类型的可扩展控件。在一个示例中,工具选择元件还可以包括表示画布工具的可扩展控件或者表示上下文工具的可扩展控件中的至少一种。表示工具的可扩展控件可以是图标、符号、文本或者被包含在UI中的其他标记。因此工具选择元件(例如,工具栏)包括外部应用工具(例如,投票工具)以及画布工具(例如,便签工具)和上下文工具(例如,测量工具或地图固定工具)中的一个或者这两者。

可以响应于在画布中打开画布应用来将表示上下文工具的可扩展控件添加到工具选择元件。因此,打开画布应用可能导致协作应用更新对工具的选择,而无需进一步的特定用户输入(例如,自动将上下文工具添加到工具栏)。上下文工具是提供特定于画布应用的功能的工具。在一个示例中,协作应用引用与画布应用相关联的清单。如果清单指定在工具选择元件上包含上下文工具,则协作应用将表示上下文工具的可扩展控件添加到工具选择元件并且使对应的工具功能可用。

在操作908处,通过与工具选择元件的交互来接收对外部应用的工具的选择。通过应用与该画布交互的任何用户都可以通过用于从菜单、工具栏等中选择工具的常规技术来选择外部应用工具。

在操作910处,从用户输入接收在画布中被打开的文件的内容的显示内的位置的指示。所述位置可以由用户选择画布上的点或者文件内的对象来指示。在一个示例中,所述位置包括表示文件上相对于坐标系的位置的一组坐标,诸如表示与参考位置的偏移的一组x、y坐标。在一个示例中,位置包括文件中对象的标识符,诸如对象的名称、对象ID等。对象的类型基于画布应用。例如,文字处理应用可以使用页码和行号来表示对象,而地图应用可以使用街道地址。

在操作912处,表示来自外部应用的工具的锚点被放置在所述位置处。所述协作应用可以通过示出所述位置的“图钉”或者其他UI指定来指示对外部应用工具的使用。所述锚点通常较小并且在视觉上不显眼,从而文件的内容可以很容易地被查看而不会被锚点覆盖或遮挡。

在操作914处,包括文件的标识符、外部应用的工具的标识符和位置的标识符的智能挂钩被存储。所述智能挂钩包含的信息使得当在画布中重新打开所述文件时,表示所述外部应用工具的锚点能够被放置在文件上的所述位置处。无论哪个用户或计算设备打开所述文件,所述锚点都可以被放置在相同的位置处。在示例中,所述智能挂钩还包括与对所述工具的选择相关联的用户的标识符。这允许使用外部应用工具的特定实例与用户相关联。

在操作916处,通过应用的UI的专用区域(例如,容器)来接收数据。所述数据定义了外部应用的配置,并且从协作应用传递到外部应用。因此,在保存外部应用实例的容器中输入的任何内容都被发送到外部应用以供外部应用处理。由外部应用响应生成的数据可以被示出在容器中。

图10示出了用于使用智能挂钩将表示所述工具的锚点放置在画布中被打开的内容的显示中的先前指定位置处的例程1000。因此,例程1000示出了用于“再水化”锚点的操作。如在本文中所使用的,再水化指代将由智能挂钩指示的应用、文件和数据加载到协作应用中。这与脱水相反。再水化使用由智能挂钩提供的指针来定位适当的应用和数据,以生成在协作应用的画布区域中先前指定的位置处示出的UI元素。

在操作1002处,从用户接收要在协作应用的画布中打开文件的指示。该指示可以从用户与在协作应用内部被打开的画布应用的交互中接收。例如,用户可以从画布应用呈现的菜单中选择打开文件命令。

在操作1004处,从与文件相关联的智能挂钩获得来自外部应用的工具的标识符和在文件的内容的显示内要放置锚点的位置的标识符,所述锚点表示外部应用的工具。所述智能挂钩包括由协作应用创建的数据结构。在文件与智能挂钩之间的关联可以由文件来维持,从而当所述文件被打开时,其提供要访问哪个(哪些)智能挂钩的指示。替代地或另外地,在文件与智能挂钩之间的关联可以由协作应用来维持,从而当文件被打开时协作搜索引用所述文件的任意(一个或多个)智能挂钩。

如上文所描述的,所述智能挂钩中的所述位置可以包括一组坐标,其表示文件上相对于坐标系的位置,所述位置可以包括文件中的对象的标识符,并且对象的类型基于画布应用,或者所述位置可以以画布应用和协作应用相互理解的另一种方式来表示。

在操作1006处,被配置为在画布中渲染所述文件的画布应用被打开。这可能是重新打开先前在该画布或者在另一画布中被打开的画布应用。打开所述画布应用可以使画布应用占据由所述协作应用生成的UI的全部或大部分画布区域。

在操作1008处,所述文件在画布应用中被打开。

在操作1010处,表示外部应用的工具的锚点被放置在所述文件的内容的显示内的所述位置处。这是根据在所述智能挂钩中所存储的关系而“再水化”所述锚点。

在操作1012处,检测与标记工具的交互。所述检测可以由协作应用、画布应用或外部应用中的任意应用来完成。所述交互可以是与UI元素的任何类型的常规交互,诸如鼠标点击、鼠标悬停、通过触摸屏上的触摸的选择、利用键盘命令的选择、通过语音命令的选择、通过手势的选择等。

在操作1014处,创建与外部应用的工具相关联的画布上的专用区域,使得在专用区域中输入的数据能够传递到外部应用。这是创建或显示保持外部应用的容器。响应于在操作1012处检测到所述交互,在画布上创建与外部应用的工具相关联的专用区域。

应当意识到,上文所描述的主题可以被实现为计算机控制的装置、计算机过程、计算系统,或者被实现为诸如计算机可读存储介质的制品。示例性方法的操作在个体框中被图示出并且参考那些框进行概述。所述方法被图示为框的逻辑流,其中的每个框能够表示能够在硬件、软件或者其组合中实现的一个或多个操作。在软件的上下文中,所述操作表示被存储在一个或多个计算机可读介质上的计算机可执行指令,所述计算机可执行指令当由一个或多个处理器运行时使得所述一个或多个处理器能够执行所记载的操作。

通常,计算机可执行指令包括执行特定功能或实现特定抽象数据类型的例程、程序、对象、模块、组件、数据结构等。描述操作的次序并不旨在被解释为限制,并且任意数量的所描述的操作能够以任意次序执行、以任何次序组合、细分为多个子操作和/或并行执行以实现所描述的过程。所描述的过程能够由与以下项相关联的资源来执行:一个或多个设备,诸如一个或多个内部或外部中央处理单元(CPU)或图形处理单元(GPU),和/或一个或多个硬件逻辑单元,诸如现场可编程门阵列(“FPGA”)、数字信号处理器(“DSP”)或者其他类型的加速器。

上文所描述的所有方法和过程都可以被体现在由一个或多个通用计算机或处理器执行的软件代码模块中,并且经由这些软件代码模块完全自动化。所述代码模块可以被存储在任意类型的计算机可读存储介质或者其他计算机存储设备中,诸如下文所描述的那些。所述方法中的一些或所有方法可以替代地被体现在专用计算机硬件中,诸如下文所描述的。

在本文中所描述的和/或在附图中所描绘的流程图中的任何例程描述、元素或框都应当被理解为潜在地表示模块、段或代码部分,这些模块、段或代码部分包括用于实现例程中的特定逻辑功能或元素的一个或多个可执行指令。替代的实现方式被包含在在本文中所描述的示例的范围之内,其中元素或功能可以从所示或所讨论的内容中删除或乱序执行,包括基本上同步或以相反的次序,这取决于所涉及的功能,如本领域技术人员将理解的那样。

图11是图示了示例性环境1100的图,其中系统1102能够实现在本文中所公开的技术。在一些实现方式中,系统1102(也被称为数据处理系统)可以用于收集、分析和共享关于在协作应用中创建的一个或多个画布的数据或特性。

如所图示的,协作会话1104(也被称为“通信会话1104”)可以在与系统1102相关联或者作为其一部分的多个客户端计算设备1106(1)至1106(N)(其中,N是值为2或更大的数字)之间实现。客户端计算设备1106(1)至1106(N)使得用户(也被称为个体)能够参与协作会话1104。

在该示例中,协作会话1104由系统1102在一个或多个网络1108上托管。亦即,系统1102能够提供使得客户端计算设备1106(1)至1106(N)的用户能够参与协作会话1104(例如,通过交换电子邮件消息和/或参与共享协作信道)的服务。因此,协作会话1104的“参与者”能够包括用户和/或客户端计算设备(例如,多个用户可以在房间中经由使用单个客户端计算设备参与通信会话),所述参与者中的每个参与者能够与其他参与者进行通信。作为替代,协作会话1104能够由使用对等技术的客户端计算设备1106(1)至1106(N)中的一个客户端计算设备来托管。系统1102还能够托管视频会议、聊天对话以及其他团队协作功能(例如,作为应用套件的一部分)。

在本文中所描述的示例中,参与协作会话1104的客户端计算设备1106(1)至1106(N)被配置为接收画布数据并且在显示屏的用户界面上渲染以供显示。所述画布数据能够包括以下项的集合:工具、在画布中被打开的应用、智能挂钩、外部应用数据或者其他类型的画布内容。与包含在协作应用的画布中的内容相关的画布数据的各种实例的集合可以被简称为画布。

用户能够使用计算设备来查看协作会话1104的内容。在本文中所描述的示例中,参与协作会话1104的客户端计算设备1106(1)至1106(N)被配置为接收画布数据并且在显示屏的用户界面上渲染以供显示。

图11的系统1102包括(一个或多个)设备1110。(一个或多个)设备1110和/或系统1102的其他组件能够包括经由一个或多个网络1108与彼此和/或与客户端计算设备1106(1)至1106(N)通信的分布式计算资源。在一些示例中,系统1102可以是负责管理一个或多个协作工作环境(诸如协作会话1104)的各方面的独立系统。作为示例,系统1102可以由诸如SLACK、WEBEX、GOTOMEETING、GOOGLE HANGOUTS等实体来管理。

(一个或多个)网络1108可以包括例如公共网络(诸如互联网)、私有网络(诸如机构和/或个人内联网),或者私有网络和(一个或多个)公共网络的某种组合。(一个或多个)网络1108还包括任意类型的有线和/或无线网络,包括但不限于:局域网(“LAN”)、广域网(“WAN”)、卫星网络、有线网络、Wi-Fi网络、WiMAX网络、移动通信网络(例如,3G、4G、5G等)或者其任意组合。(一个或多个)网络1108可以利用通信协议,包括基于分组和/或基于数据报的协议,诸如互联网协议(“IP”)、传输控制协议(“TCP”)、用户数据报协议(“UDP”)或者其他类型的协议。此外,(一个或多个)网络1108还可以包括促进网络通信和/或形成网络的硬件基础的多个设备,诸如交换机、路由器、网关、接入点、防火墙、基站、中继器、骨干设备等。

在一些示例中,(一个或多个)网络1108还可以包括使得能够连接到无线网络的设备,所述无线网络诸如是无线接入点(“WAP”)。示例支持通过在各种电磁频率(例如,射频)上发送和接收数据的WAP进行连接,包括支持电气和电子工程师协会(“IEEE”)802.12标准(例如,802.12g、802.12n、802.12ac等)以及其他标准的WAP。

在各种示例中,(一个或多个)设备1110可以包括在集群或者其他分组配置中操作以共享资源、平衡负载、提高性能、提供故障转移支持或冗余或者用于其他目的的一个或多个计算设备。例如,(一个或多个)设备1110可以属于各种类型的设备,诸如常规服务器类型设备、台式计算机类型设备和/或移动类型设备。因此,尽管被图示为单一类型的设备或(一个或多个)服务器类型的设备,但是设备1110可以包括多种设备类型并且不限于特定类型的设备。(一个或多个)设备1110可以表示但不限于:服务器计算机、台式计算机、网络服务器计算机、个人计算机、移动计算机、膝上型计算机、平板计算机或者任何其他类型的计算设备。

客户端计算设备(例如,客户端计算设备1106(1)至1106(N)中的一个客户端计算设备)可以属于多种类型的设备,这些类型可以与(一个或多个)设备1110相同或不同,诸如常规客户端类型设备、台式计算机类型设备、移动类型设备、专用类型设备、嵌入式类型设备和/或可穿戴类型设备。因此,客户端计算设备能够包括但不限于:台式计算机、游戏控制台和/或游戏设备、平板计算机、个人数据助理(“PDA”)、移动电话/平板混合设备、膝上型计算机、电信设备、计算机导航型客户端计算设备(诸如包括全球定位系统(“GPS”)设备的基于卫星的导航系统)、可穿戴设备、虚拟现实(“VR”)设备、增强现实(“AR”)设备、植入式计算设备、汽车计算机、支持网络电视、瘦客户端、终端、物联网(“IoT”)设备、工作站、媒体播放器、个人录像机(“PVR”)、机顶盒、相机、包含在计算设备中的集成组件(例如,外围设备)、电器或者任何其他类型的计算设备。此外,客户端计算设备可以包括客户端计算设备的较早列出的示例的组合,诸如,例如台式计算机类型设备或者与可穿戴设备组合的移动类型设备等。

各种类型和设备类型的(一个或多个)客户端计算设备1106(1)至1106(N)能够表示任意类型的计算设备,其具有一个或多个数据处理单元1112诸如经由总线1116可操作地连接到计算机可读介质1114,在一些情况下,总线1116能够包括以下中的一种或多种:系统总线、数据总线、地址总线、PCI总线、Mini-PCI总线以及任意种类的本地、外设和/或独立总线。

被存储在计算机可读介质1114上的可执行指令可以包括例如操作系统1118、客户端模块1120、简档模块1222以及能由数据处理单元1112加载和执行的其他模块、程序或应用。

(一个或多个)客户端计算设备1106(1)至1106(N)还可以包括一个或多个接口1124,以实现通过(一个或多个)网络1108在(一个或多个)客户端计算设备1106(1)至1106(N)与诸如(一个或多个)设备1110的其他联网设备之间的通信。这样的(一个或多个)网络接口1124可以包括一个或多个网络接口控制器(NIC)或者其他类型的收发机设备以通过网络发送和接收通信和/或数据。此外,(一个或多个)客户端计算设备1106(1)至1106(N)能够包括输入/输出(“I/O”)接口(设备)1126,其实现与输入/输出设备的通信,所述输入/输出设备诸如是包括外围输入设备的用户输入设备(例如,游戏控制器、键盘、鼠标、笔、语音输入设备(诸如麦克风)、用于获得和提供视频馈送和/或静止图像的摄像机、触摸输入设备、手势输入设备等)和/或包括外围输出设备的输出设备(例如,显示器、打印机、音频扬声器、触觉输出设备等)。图11图示了(一个或多个)客户端计算设备1106(1)以某种方式被连接到显示设备(例如,显示屏1228(N)),其能够根据在本文中所描述的技术来显示UI。

在图11的示例性环境1100中,客户端计算设备1106(1)至1106(N)可以使用其各自的客户端模块1120来彼此连接和/或与其他外部设备连接,以便参与协作会话1104,或者为了对画布或协作环境做出贡献。例如,第一用户可以利用客户端计算设备1106(1)与另一客户端计算设备1106(2)的第二用户进行通信。当执行客户端模块1120时,用户可以共享数据,这可以导致客户端计算设备1106(1)通过(一个或多个)网络1108连接到系统1102和/或者其他客户端计算设备1106(2)至1106(N)。

(一个或多个)客户端计算设备1106(1)至1106(N)可以使用其各自的简档模块1122来生成参与者简档(图11中未示出),并且将参与者简档提供给其他客户端计算设备和/或到系统1102的(一个或多个)设备1110。参与者简档可以包括以下一项或多项:用户或用户群组的标识(例如,姓名、电子邮件地址、独有标识符(“ID”)、接收者ID等)、用户数据(诸如个人数据)、机器数据(诸如位置(例如,IP地址、建筑物中的房间等))和技术能力等。参与者简档可以被用于为协作会话注册参与者。

如在图11中所示的,系统1102的(一个或多个)设备1110包括服务器模块1130和输出模块1132。在该示例中,服务器模块1130被配置为从个体客户端计算设备(诸如客户端计算设备1106(1)至1106(N))接收画布1134(1)至1134(N)。如上文所描述的,画布能够包括在画布中被打开的应用、一个或多个工具、来自外部应用的数据等。因此,服务器模块1130被配置为在协作会话1104期间接收各种画布1134(1)至1134(N)的集合(该集合在本文中被称为“画布数据”1135)。在一些场景中,并非参与协作会话1104的所有客户端计算设备都提供画布数据。例如,客户端计算设备可能仅是消费或“接收”设备,使得其仅接收与协作会话1104相关联的内容但是不向协作会话1104提供任何内容。

在各种示例中,服务器模块1130能够选择画布1134的、要与参与客户端计算设备1106(1)至1106(N)中的个体客户端计算设备共享的各方面。因此,服务器模块1130可以被配置为基于画布1134生成会话数据1136和/或将会话数据1136传递到输出模块1132。然后,输出模块1132可以将画布数据1139传送到客户端计算设备(例如,参与协作会话的客户端计算设备1106(1)至1106(3))。画布数据1139可以包括文本、图像、视频、音频、智能挂钩和/或者其他内容数据,其由输出模块1132基于与输出模块1132相关联的内容1150并且基于接收到的会话数据1136来提供。

如所示的,输出模块1132向客户端计算设备1106(1)传输画布数据1139(1),并且向客户端计算设备1106(2)传输具有内容1150的画布数据1139(2),并且向客户端计算设备1106(3)传输具有内容1150的通信数据1139(3),等等。被传输到客户端计算设备的画布数据1139能够相同或不同(例如,被发送到多个参与者或者接收不同电子邮件消息的每个参与者的相同的聊天消息)。

在各种实现方式中,(一个或多个)设备1110和/或客户端模块1120能够包括图形用户界面(GUI)呈现模块1240。GUI呈现模块1140可以被配置为分析用于递送到客户端计算设备1106中的一个或多个客户端计算设备的通信数据1139。具体而言,在(一个或多个)设备1110和/或客户端计算设备1106处的UI呈现模块1140可以分析画布数据1139,以确定用于显示协作应用、在协作应用中被打开的画布应用、表示被固定到画布应用的一个或多个工具的锚点和/或在相关联的客户端计算设备1106的显示屏1128上的画布内呈现的来自外部应用的内容的适当方式。在一些实现方式中,GUI呈现模块1140可以向在相关联的客户端计算设备1106的显示屏1128上渲染的呈现GUI 1246提供通信内容。可以使得呈现GUI 1144由GUI呈现模块1140在显示屏1128上渲染。呈现GUI 1144可以包括:协作应用的用户界面,画布,在画布中被打开的一个或多个应用,表示诸如锚点、工具栏、工具菜单、保持来自外部应用的内容的容器的视觉元素等。

在一些实现方式中,呈现GUI 1144可以包括多个部分或网格,其可以渲染或包括文本、视频、图像和/或内容以用于在显示屏1128上显示。例如,呈现GUI 1144的第一部分可以包括用于协作应用的菜单或工具选择,呈现GUI 1144的第二部分可以包括用于与由协作应用提供的功能交互的画布。GUI呈现模块1140可以以在画布内显示单个应用或多个应用的方式来填充呈现GUI 1144的第二部分。

图12图示了示出示例性设备1200(在本文中也被称为“计算设备”或“数据处理系统”)的示例性组件的图,设备1200被配置为生成用于在本文中所公开的一种或多种实现方式的数据。设备1200可以生成数据,所述数据包括用于在图11中所示的显示屏1128上显示的一个或多个画布。设备1200可以表示在本文中所描述的(一个或多个)设备中的任意设备。例如,设备1200可以表示计算设备302、客户端计算设备1106或设备1110。

如所图示的,设备1200包括一个或多个数据处理单元1202、计算机可读介质1204和通信接口1206。设备1200的组件例如经由总线1209被可操作地连接,总线1209可以包括系统总线、数据总线、地址总线、PCI总线、Mini-PCI总线和任何种类的本地、外围和/或独立总线中的一种或多种。

如在本文中所利用的,(一个或多个)数据处理单元(诸如(一个或多个)数据处理单元1202和/或(一个或多个)数据处理单元1112)可以表示例如CPU类型的数据处理单元、GPU类型的数据处理单元、现场可编程门阵列(“FPGA”)、另一类DSP,或者在一些情况下由CPU驱动的其他硬件逻辑组件。例如但不限于:可以使用的硬件逻辑组件的例示性类型包括专用集成电路(“ASIC”)、专用标准产品(“ASSP”)、片上系统(“SOC”)、复杂可编程逻辑器件(“CPLD”)等。

如在本文中所利用的,计算机可读介质(诸如计算机可读介质1204和计算机可读介质1214)可以存储能由(一个或多个)数据处理单元执行的指令。计算机可读介质还可以存储由外部数据处理单元(诸如由外部CPU、外部GPU)可执行和/或由外部加速器(诸如FPGA类型加速器、DSP类型加速器或者任何其他内部或外部加速器)可执行的指令。在各种示例中,至少一个CPU、GPU和/或加速器被并入在计算设备中,而在一些示例中,CPU、GPU和/或加速器中的一个或多个在计算设备外部。

计算机可读介质(其在本文中也可以被称为计算机可读介质)包括计算机存储介质和/或通信介质。计算机可读存储介质可以包括以用于存储信息(例如,计算机可读指令、数据结构、程序模块或者其他数据)的任何方法或技术实现的易失性存储器、非易失性存储器和/或者其他持久和/或辅助计算机存储介质、可移动和不可移动计算机存储介质中的一项或多项。因此,计算机可读存储介质包括在设备和/或作为设备的一部分或在设备外部的硬件组件中包含的有形和/或物理形式的介质,包括但不限于:随机存取存储器(“RAM”)、静态随机存取存储器(“SRAM”)、动态随机存取存储器(“DRAM”)、相变存储器(“PCM”)、只读存储器(“ROM”)、可擦除可编程只读存储器(“EPROM”)、电可擦除可编程只读存储器(“EEPROM”)、闪存、光盘只读存储器(“CD-ROM”)、数字多功能磁盘(“DVD”)、光卡或者其他光存储介质、盒式磁带、磁带、磁盘存储、磁卡或者其他磁性存储设备或介质、固态存储器设备、存储阵列、网络附加存储设备、存储区域网络、托管的计算机存储或任何其他存储存储器、存储设备和/或能够被用于存储和维持信息以供计算设备访问的存储介质。

与计算机可读存储介质相比,通信介质可以在诸如载波或者其他传输机制的经调制的数据信号中体现计算机可读指令、数据结构、程序模块或者其他数据。如在本文中所定义的,计算机可读存储介质不包括通信介质。亦即,计算机存储介质不包括仅由经调制的数据信号、载波或传播信号自身组成的通信介质。

(一个或多个)通信接口1206可以表示例如网络接口控制器(“NIC”)或者其他类型的收发机设备以通过网络发送和接收通信。

在所图示的示例中,计算机可读介质1204包括数据存储1208。在一些示例中,数据存储1208包括诸如数据库、数据仓库或者其他类型的结构化或非结构化数据存储设备的数据存储设备。在一些示例中,数据存储1208包括具有一个或多个表、索引、存储过程等的语料库和/或关系数据库以实现数据访问,包括例如超文本标记语言(“HTML”)表、资源描述框架(“RDF”)表、网络本体语言(“OWL”)表和/或可扩展标记语言(“XML”)表中的一个或多个。

数据存储1208可以存储针对被存储在计算机可读介质1204中和/或由数据处理单元1202和/或加速器执行的过程、应用、组件和/或模块的操作的数据。例如,在一些示例中,数据存储1208可以存储会话数据1212(例如,如在图11中所示的会话数据1136),参与者数据1214(例如,与用户简档相关联)和/或者其他数据。会话数据1212能够包括协作会话中的参与者(例如,用户和/或客户端计算设备)的总数、协作会话中发生的活动、协作会话可用的应用和/或工具的列表、在协作会话中的一个或多个应用上使用的智能挂钩和/或与如何进行协作会话相关的其他数据。数据存储1308还包括内容数据1216,诸如协作会话内的通信内容。

替代地,上述数据中的一些或全部数据能够被存储在一个或多个数据处理单元1202上的独立存储器1218上,诸如CPU型处理器、GPU型处理器、FPGA型加速器、DSP型加速器和/或者其他加速器上的存储器。在该示例中,计算机可读介质1204还包括操作系统1220和(一个或多个)应用编程接口1222(API),其被配置为将设备1200的功能和数据暴露给其他设备。另外,计算机可读介质1204包括一个或多个模块,诸如服务器模块1224(例如,如在图11中所示的服务器模块1130)、输出模块1226(例如,如在图11中所示的输出模块1332)和GUI呈现模块1228(例如,如在图11所示的GUI呈现模块1140),但是所图示的模块的数量仅仅是示例,并且数量可以变得更高或更低。亦即,在本文中所描述的与所图示的模块相关联的功能可以由一个设备上的较少数量的模块或较多数量的模块来执行,或者被分布在多个设备上。

例示性实施例

以下条款描述了用于实现在本公开中所描述的特征的多个可能的实施例。在本文中所描述的各种实施例并不是限制性的,也不是任何给定实施例的每个特征都需要出现在另一实施例中。除非上下文另有明确指示,否则可以将任意两个或更多个实施例组合在一起。在本文档中所使用的“或”表示“和/或”。例如,“A或B”表示A而没有B、B而没有A、或A和B。如在本文中所使用的,“包括”表示包括所有列出的特征并且可能包括未列出的其他特征的添加。“基本上由…组成”表示包括所列出的特征和那些不会对所列出的特征的基本和新颖特性产生实质性影响的附加特征。“由...组成”仅指所列特征,不包括任何未列出的特征。

条款1、一种用于固定表示由外部应用生成的内容的锚点的方法,所述方法将由数据处理系统来执行,所述方法包括:在画布的工具选择元件中渲染表示外部应用工具的可扩展控件,其中,所述可扩展控件是基于所述画布中的内容的数据类型来选择的;通过与所述工具选择元件的交互来接收对所述外部应用工具的选择;接收定义所述画布中的所述内容的显示内的位置的用户输入;将表示所述外部应用工具的所述锚点放置在所述位置处;并且存储包括所述内容的标识符、所述外部应用工具的标识符和所述位置的标识符的挂钩,使得表示所述外部应用工具的所述锚点能够在所述内容稍后在所述画布中被打开时被放置在所述画布中的所述内容的所述显示内的所述位置处。

条款2、条款1的方法,其中,所述挂钩还包括与对所述工具的所述选择相关联的用户的标识符。

条款3、条款1-2中的任一项的方法,其中,所述位置包括一组坐标,所述一组坐标表示相对于坐标系在所述画布中的所述内容上的位置。

条款4、条款1-3中的任一项的方法,其中,所述位置包括所述画布中的所述内容中的对象的标识符,并且所述对象的类型是基于画布应用的。

条款5、条款1-4中的任一项的方法,还包括:通过所述应用的用户界面(UI)的专用区域来接收数据,所述数据定义所述外部应用的配置,其中,所述数据被从所述应用传递到所述外部应用。

条款6、条款1-5中的任一项的方法,其中,所述工具选择元件还包括以下中的至少一个:表示画布工具的可扩展控件或者表示上下文工具的可扩展控件。

条款7、条款6的方法,还包括:响应于打开一种类型的画布应用,将表示所述上下文工具的所述可扩展控件添加到所述工具选择元件,其中,所述上下文工具提供特定于所述一种类型的画布应用的功能。

条款8、条款7的方法,其中,添加表示所述上下文工具的所述可扩展控件包括引用与所述画布应用相关联的清单,所述清单指定在所述工具选择元件上包括所述上下文工具。

条款9、一种系统,包括:一个或多个数据处理单元;以及在其上编码有计算机可执行指令的计算机可读介质,所述计算机可执行指令用于使得所述一个或多个数据处理单元用于:从用户接收对在应用的画布中打开内容的指示;从与所述内容相关联的挂钩获得来自外部应用的外部应用工具的标识符和所述画布中的所述内容的显示内要放置锚点的位置的标识符,所述锚点表示提供所述外部应用的功能的所述外部应用工具;打开被配置为在所述画布中渲染所述内容的画布应用;在所述画布应用中打开所述内容;以及将表示所述外部应用工具的所述锚点放置在所述画布中的内容的所述显示内的所述位置处。

条款10、条款9的系统,其中,所述挂钩包括由所述应用创建的数据结构。

条款11、条款9-10中的任一项的系统,其中,所述位置包括一组坐标,所述一组坐标表示相对于坐标系在所述画布中的所述内容上的位置。

条款12、条款9-11中的任一项的系统,其中,所述位置包括所述画布中的所述内容中的对象的标识符,并且所述对象的类型是基于所述画布应用的。

条款13、条款9-12中的任一项的系统,其中,所述指令还使得所述一个或多个数据处理单元在与所述外部应用工具相关联的所述画布上创建专用区域,使得在所述画布上的所述专用区域中输入的数据被传递到所述外部应用。

条款14、条款13的系统,其中,所述指令还使得所述一个或多个数据处理单元响应于检测到与表示所述外部应用工具的所述锚点的交互而在所述画布上创建所述专用区域。

条款15、条款9-14中的任一项的系统,其中,所述指令还使得所述一个或多个数据处理单元在所述画布内显示工具选择元件,所述工具选择元件包括表示画布工具的可扩展控件、表示上下文工具的可扩展控件以及表示外部应用工具的可扩展控件。

条款16、条款9-15中的任一项所述的系统,其中,所述指令还使得所述一个或多个数据处理单元用于:确定应用的类别,所述应用的类别是基于当前在所述画布中被打开的画布应用的;以及在所述画布上显示工具选择元件,所述工具选择元件包括与所述应用的类别相关联的至少一个上下文工具。

条款17、一种系统,包括:用于在应用的画布中显示的工具选择元件中渲染表示外部应用的外部应用工具的可扩展控件的单元;用于通过与所述工具选择元件的交互从用户接收对所述外部应用工具的选择的单元;用于通过所述应用的用户界面接收在所述画布中的内容的显示内的位置的指示的单元;用于在所述位置放置表示所述外部应用工具的锚点的单元;以及用于存储挂钩的单元,所述挂钩包括所述内容的标识符、所述外部应用工具的标识符和所述位置的标识符,使得表示所述外部应用工具的所述锚点能够在所述内容在所述画布中被重新打开时被放置在所述画布应用上的所述位置处。

条款18、条款17的系统,其中,所述位置包括以下中的一项:一组坐标,其表示相对于坐标系在所述画布中的所述内容上的位置;或者所述文件中的对象的标识符,所述对象的类型是基于所述画布应用的。

条款19、条款17-18中的任一项的系统,还包括用于通过定义所述外部应用的配置的所述应用的所述UI来接收数据的单元。

条款20、条款17-19中的任一项的系统,保存所述文件,其中,所述工具选择元件还包括表示画布工具的可扩展控件和表示上下文工具的可扩展控件,并且还包括:用于基于在所述画布中被打开的所述画布应用来接收所述上下文工具的单元,其中,所述上下文工具提供特定于所述画布应用的功能;以及用于将所述上下文工具添加到所述工具选择元件的单元。

结论

尽管已经以特定于结构特征和/或方法动作的语言描述了主题,但是应当理解,所附权利要求中定义的主题不一定限于上述特定特征或动作。而是,特定特征和动作被公开为实现权利要求的示例性形式。

在描述本发明的上下文中(尤其是在以下权利要求的上下文中)使用的术语“一”、“一个”、“该”和类似的指称应当被解释为涵盖单数和复数,除非本文另有说明或与上下文明显矛盾。术语“基于”、“基于”和类似的指称应被解释为“至少部分地基于”,其包括“部分地基于”和“整体基于”,除非另有说明或与上下文明显矛盾。

应当理解,在发明内容和/或具体实施方式中对“第一”、“第二”等用户或者其他元件的任何引用并不旨在且不应当被解释为必然对应于权利要求的“第一”、“第二”等元件的任何应用。而是,在发明内容、具体实施方式和/或权利要求中的“第一”和“第二”的任何使用可用于区分相同元件的两个不同实例(例如,两个不同的用户、两个不同的虚拟机等)。

在本文中描述了某些实施例,包括发明人已知的用于实施本发明的最佳模式。当然,在阅读上述描述后,这些描述的实施例的变化对于本领域普通技术人员将变得显而易见。技术人员将知道如何适当地采用这种变化,并且可以以不同于具体描述的方式来实践在本文中所公开的实施例。因此,所附权利要求中记载的主题的所有修改和等同物都包含在本公开的范围内。此外,除非本文另有说明或与上下文明显矛盾,否则本发明涵盖上述要素的所有可能变化形式的任何组合。

相关技术
  • 用于协作应用的可扩展和可适应的工具集
  • 用于web服务的可扩展且应用程序自适应工具栏
技术分类

06120113686963