A scalable and adaptable toolset for collaborative applications
By dynamically adjusting the tool set and using smart hooking technology, collaborative applications solve the problem of tool-file association loss, improving user experience and system efficiency.
Patent Information
- Application Number
- CN202080037227.7
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2019-05-20
- Filing Date
- 2020-04-13
- Publication Date
- 2025-04-18
- Estimated Expiration
- 2040-04-13
AI Technical Summary
Existing collaborative applications cannot effectively maintain the association between files and tools after the communication session ends, resulting in users needing manual operations to view historical data, and the tool set is not efficient enough to use screen space, affecting the user experience.
A scalable tool set system for dynamic selection and display allows collaborative applications to dynamically adjust the tool set based on context and user activity, and associate the use of the tool with specific locations in the file through smart hooks, ensuring that the tool remains in place when the file is reopened.
Improves users' efficiency in editing workspaces, reduces the need for processing resources and storage, and provides a more compact and intuitive user interface, so that users do not need to manually memorize the association of tools and files.
Smart Images

Figure CN113874869B_ABST
Abstract
Description
Background Art
[0001] There are many different systems and applications that allow users to collaborate. For example, some systems allow people to collaborate by using live video streaming, live audio streaming, and other forms of real-time text-based or image-based media. Some systems also allow users to share files during a communication session. In addition, some systems provide users with tools for editing the content of shared files.
[0002] Although existing systems allow users to share and edit the content of files, some existing systems have many disadvantages. For example, some systems do not maintain the association between the edited content of a particular type and the shared file after the communication session ends. In a specific example, some collaborative applications (also referred to as "applications" in this article) provide tools that allow users to create supplementary content for files, such as voting, graphic highlights focused on selected content, special ink annotations, etc. However, once the communication session ends, the supplementary content may be saved separately from the associated files. Therefore, if the user wants to view the voting results and associated documents after the communication session ends, the user has to perform multiple manual steps to retrieve the voting data and documents. In addition, there is usually no indication of which part or aspect of the document is associated with the voting results.
[0003] In another example, collaborative applications are often limited when it comes to the diversity of available tools for editing the content of different types of files. For example, collaborative applications often display the same set of tools for editing different file types, such as a standard cut and paste tool that is displayed regardless of whether the user is editing a word processing document or a spreadsheet file. This drawback requires the user to utilize a different application in addition to the collaborative application in order to access the specialized tools. Using multiple different applications to access specialized tools is inefficient and ultimately results in unnecessary use of computing resources such as bandwidth, processing resources, and memory.
[0004] One solution that can be used to address the above shortcomings is that some applications can increase the number of tools available to the user. However, this solution of displaying a large number of tools is an inefficient use of screen space. This ultimately harms the user experience. Based on these shortcomings, there is a constant need to improve collaborative applications. Summary of the invention
[0005] The technology disclosed herein describes a system for dynamically selecting and displaying an extensible and adaptable toolset for collaborative applications. Collaborative applications can provide a shared content editing workspace, such as a canvas, that can dynamically select and display context-related toolsets as well as individual tools provided by external applications. The adaptable toolset allows the application to provide users with access to a variety of tools for interacting with content, and promotes more efficient use of the editing workspace by selecting and displaying specific toolsets based on the user's activities. The application can also provide smart hooks that graphically associate (e.g., pin) locations with content created by tool use.
[0006] In an illustrative example, an application may modify a contextual toolset to include a "measure" tool for measuring distances when a map is opened within a shared content editing workspace. The measurement tool may appear in the contextual toolset only when the map is opened in a collaborative application. The smart hook is able to associate the use of the measurement tool with a specific location on the map, thereby showing the first user's use of the measurement tool as being fixed to that specific location. Therefore, if a second user opens the map in a collaborative application, the smart hook will provide the collaborative application with data referencing the specific location. The second user will then see the use of the measurement tool shown at the same location on the map as the first user.
[0007] The collaborative application may include a contextual toolset and a shared workspace, such as a canvas, in which multiple users interact and collaboratively edit content. One or more applications may be opened within the canvas. Applications opened in the canvas may include productivity applications, such as word processing applications, spreadsheet applications, presentation applications, graphics applications, and the like. Applications that can be accessed in a canvas are referred to as canvas applications. The canvas application opened in the canvas itself may open one or more sources of content such as files. When the canvas application opens a file in the canvas, the functionality of the canvas application relative to the file may be different. For example, the contextual toolset may include tools specific to the application opened in the canvas. In addition, the contextual toolset may provide new tools that implement the functionality of external applications.
[0008] The contextual toolset may automatically change the selection of tools provided based on the canvas application that is opened in the canvas of the collaboration application. Thus, when a word processing application is opened in the canvas, a different toolset will be shown than when a diagram application is opened in the canvas. The tools are provided in a tool selection element, which may be implemented as a toolbar, a tool menu, or as another type of user interface (UI) element that provides an extensible and adaptable tool selection.
[0009] The tools available in the canvas application may also be provided by a "third party" or external application that is neither a collaborating application nor a canvas application. The external application does not open like a canvas application and does not occupy the canvas. Instead, the external application contributes functionality to the collaborating application in the form of one or more tools that extend the available tools in the toolset. The tools provided by the external application can be used across multiple canvases and do not necessarily change based on the type of canvas application opened within the collaborating application. Thus, for example, once an external application's tools are provided to the collaborating application, the external application tools are available regardless of the canvas application that is opened in the canvas.
[0010] Tools from any source can be used to create a specific instance of tool use that can be pinned to a specific location on content opened in the canvas. The pinning is mediated by the collaborative application, so a pinned tool may only be visible when a file or other type of content is opened in the collaborative application's canvas. A specific instance of tool use is a single use of a tool in a file. For example, a tool that creates a "sticky note" can be used to create a first sticky note used on a word processing document containing a short story and a second sticky note used by a different word processing document containing a resume. The tool itself is the same, but the specific instances used on the short story and the resume are different uses with separate files. There may also be multiple instances of using a tool within a single file, such as placing multiple sticky notes on the same file.
[0011] Each instance of using a tool is associated with a specific set of content, not just with the canvas application that opens the content. The association with the content can be made relative to a specific location in the file. This association between a specific instance of using a tool and a location in the file is called "pinning". Pinning creates a link between a specific instance when using a tool and a specific object or location in the displayed content. Pinning not only associates the use of the tool with a "glass pane" overlaid on top of the file, but also links the tool to the actual entity contained in the file and displayed in the canvas. The entity can be an object in the file, such as but not limited to a paragraph in a text document or a shape in a chart. Different types of files can present different types of objects, and the use of the tool may be pinned to these different types of objects. Pinning does not remove the tool from a toolbar, menu, etc., but only associates an instance of using the tool with a location in the file.
[0012] Tools provided by external applications can be created in a dedicated user interface area within the collaborating application that is separate from the rest of the canvas. In order to present any UI elements created by the external application, a portion of the canvas can pass data into and out of the external application without being changed by the collaborating application. This portion of the canvas can form a "container" that directly presents content from the external application and allows users of the collaborating application to interact with the external application without having to separately launch the external application. For example, the container can be displayed as a window within the canvas that shows text, images, data, etc. provided by the external application.
[0013] The tool from the external application can be presented in the tool selection element of the collaborative application by rendering an expandable control. The expandable control representing the external application tool can be an icon, a text label, etc. The user interacts with the tool selection element to select the external application tool. The selection of the external application tool is received by the system.
[0014] The system also receives an indication of a location on the content opened in the canvas from a user interaction. The user can provide the indication by selecting a location or object within the displayed content. This provides an association between the external application and a specific object or location in the content.
[0015] Once the location has been provided, an anchor (e.g., an icon) representing the tool is placed at the location. This provides a visual association within the UI created by the collaborating application between a specific use instance of the external application and a location on the file. The anchor is fixed at the location in the file where it is placed.
[0016] A smart hook including an identifier of the file, such as a file name, an identifier of a tool from an external application, and an identifier of a location, is stored by the collaborative application. The smart hook is a way of stitching together the file and a specific instance of the use of the tool. The smart hook includes data that maintains an association between an instance of the use of the tool and an object in the file. The association maintains the tool in the same position relative to the object in the file, even if the object is moved. When the file is reopened in the canvas, the smart hook allows an anchor representing the tool from the external application to be placed at the same position on the file. Therefore, even after the communication session has ended, if the same file is opened again within the collaborative application, the link to the tool and the specific location where the tool is used will be remembered and restored.
[0017] This creates an improved UI and user experience by pinning the use of a tool to a specific location in the file. Thus, the user does not need to manually remember the association between the tool and the file. Likewise, the full context of how the tool was used relative to the location in the file is stored in the smart hook and is available whenever the file is subsequently opened in the canvas. This reduces the use of computing resources such as processing power and memory because a single application (i.e., a collaborating application) rather than multiple applications can provide the tool, the association with a specific location in the canvas application, and access to data / functionality from the external application.
[0018] In addition, using a portion of the canvas as a dedicated container for showing content from the external application creates a more compact UI that does not require the user to open multiple applications in separate windows. It also tightly links the content generated by the external application to a specific location on the file opened in the canvas. Therefore, there is no need for separate record keeping, notes, email messages, etc. to explain how the use of the external application is related to the file. In addition to reducing user errors or misunderstandings, the technology also reduces the computer resources required for storing and transmitting additional annotations or other results of tool use. This can directly lead to more efficient use of computing resources such as memory, network bandwidth, processing power, etc., because various types of user interactions and communications about files opened in the canvas are managed by collaborative applications rather than multiple separate applications.
[0019] Features and technical advantages other than those explicitly described above will be apparent from reading the following detailed description and reviewing the associated drawings. This overview is provided to introduce a selection of concepts that are further described in the detailed description below in a simplified form. This overview is not intended to identify key or essential features of the claimed subject matter, nor is it intended to serve as an aid in determining the scope of the claimed subject matter. For example, the term "technology" may refer to system(s), method(s), computer-readable instructions, module(s), algorithms, hardware logic units, and / or operations(s) as allowed by the context described above and throughout the document. BRIEF DESCRIPTION OF THE DRAWINGS
[0020] The detailed description is provided with reference to the accompanying drawings. In the drawings, the leftmost digit(s) of a reference number identifies the drawing in which the reference number first appears. The same reference numbers in different drawings indicate similar or identical items. References to individual items of a plurality of items may use reference numbers with letters of the alphabetical sequence to refer to each individual item. General references to items may use specific reference numbers without the alphabetical sequence.
[0021] Figure 1A A UI of a collaboration application is illustrated showing a word processing document opened in a canvas with an expandable toolbar and tools pinned to the word processing document.
[0022] Figure 1B illustrates a UI of a collaboration application showing a diagram file opened in the canvas, Figure 1A The expandable toolbar has a different selection of tools and tools that are fixed to objects in the diagram document.
[0023] Figure 2 The UI of a collaboration application is illustrated, showing a canvas, an adaptive and extensible tool menu, an adaptive and extensible toolbar, and a dedicated area for presenting the UI of an external application.
[0024] Figure 3A An exemplary computing device providing a collaboration application, canvas application(s), and external application(s) is illustrated.
[0025] Figure 3B An example of a canvas application and an example of an external application are illustrated.
[0026] Figure 4 An exemplary data structure of a Smart Hook for linking a specific instance of a tool with a specified location on an application in a canvas is illustrated.
[0027] Figure 5A A first view of a UI is illustrated showing a tool icon pinned to a paragraph of text in a word processing document.
[0028] Figure 5B Picture shows Figure 5A FIG. 4 is a second view of the UI showing that the tool icon along with the associated text paragraph has been moved to a different location on the UI.
[0029] Fig. 6A A first view of a UI is illustrated showing tool icons pinned to objects in a diagram document.
[0030] Figure 6B Picture shows Fig. 6A FIG. 4 is a second view of the UI showing that the tool icons along with the associated objects have been moved to different locations on the UI.
[0031] Fig. 7A Illustrated is an exemplary UI presenting a map application with a toolbar including a measurement tool and a map pinning tool specific to the map application.
[0032] Figure 7BIllustrated is an exemplary UI presenting a map application having a tools menu including a measurement tool and a map pin tool specific to the map application.
[0033] Fig. 8A An exemplary UI of a sketch application is illustrated that is presented in a canvas with an expandable toolbar.
[0034] Figure 8B Illustration of the expanded toolbar Fig. 8A An exemplary UI of the present invention, wherein the toolbar shows a plurality of icons representing external applications, and a tool icon representing one of the external applications is pinned to a position on a drawing opened in a sketch application.
[0035] Figure 8C Picture shows Fig. 8A 0048 ] An exemplary UI showing that a tool icon representing an external application is expanded to create a container for presenting data provided from the external application.
[0036] Fig. 9 is an exemplary flow diagram illustrating selection of a tool and fixing an anchor point representing the tool at a location on content opened in a canvas of a collaborative application.
[0037] Fig.10 is an exemplary flow diagram illustrating placing an anchor point of a representation tool at a previously specified location on content when the content is opened in a canvas of a collaboration application.
[0038] Fig.11 is a computing system diagram illustrating aspects of an exemplary operating environment for the techniques disclosed herein.
[0039] Fig.12 is a computing architecture diagram illustrating aspects of the configuration and operation of a computing device capable of implementing aspects of the techniques disclosed herein. DETAILED DESCRIPTION
[0040] Figure 1A An exemplary UI 100 of a collaboration application is illustrated, wherein a text file 102 is opened within a word processing application. The collaboration application is a software application that can store a variety of content for multiple users to interact with simultaneously and / or sequentially. The collaboration application can include functionality such as chat functionality, live video streaming, live audio streaming, and file sharing. Examples of collaboration applications include MICROSOFT TEAMS, SLACK, GOOGLE HANGOUTS, and FACEBOOK WORKPLACE. The collaboration application can be any type of application and is not limited to applications with a specific type of functionality (e.g., video streaming, audio streaming, etc.).
[0041] UI 100 also includes a toolbar 104A that presents a set of tools available to users of the collaboration application. Toolbar 104A is contextual and extensible because tools change based on context and additional tools can be added. The tools in toolbar 104A can include external application tools 106, which are extensible controls represented in this example by a stylized letter P within a square with rounded corners. External application tools 106 are examples of extensible controls that can be added to toolbar 104A. External application tools 106 can access functionality of a voting application. When added to the toolbar 104A of the collaboration application, the voting application can then be available to all canvas applications opened in the collaboration application.
[0042] The toolbar 104A may also include a contextual tool 108B associated with a word processing application. The contextual tool 108B is represented by a stylized letter G in a circle. The contextual tool 108B may be a grammar checker. The contextual tool 108B is specific to a word processing application. Thus, the toolbar 104A may show the contextual tool 108B when a word processing application is open but not when other types of canvas applications are opened within the collaboration application. Including or not including the contextual tool 108B is an example of how the toolbar 104A can change based on context.
[0043] The exemplary UI 100 also shows an example of an anchor point 110A, which indicates the location where a tool is fixed to a portion of the text file 102. The anchor point 110A can be rendered in the UI 100 as an icon, symbol, text, or other representation of a tool from the toolbar 104A or another tool available to the collaborative application. The anchor point 110A can be associated with a specific location in the text file 102, so that if the corresponding object (e.g., paragraph, sentence, word, etc.) in the text file 102 moves, the location of the anchor point 110A will move. The anchor point 110A can also persist across multiple sessions so that it will appear in the same location the next time the text file 102 is opened.
[0044] Figure 1B An exemplary UI 112 is illustrated that is similar to the exemplary UI 100 of FIG. 1 , but includes an icon file 114 instead of the text file 102. The toolbar 104B in the exemplary UI 112 is associated with the Figure 1A The toolbar 104B is similar to but not identical to the toolbar 104A in the exemplary UI 100 of FIG. 112. In the exemplary UI 112, a different type of application is open, a diagram application instead of a word processing application. The toolbar 104B includes Figure 1AIn the example of the embodiment of the present invention, different contextual tools 108B are included in the toolbar 104A. Specifically, the grammar checking tool is no longer available (grammar checking has usage restrictions on diagram files 114), but a contextual tool 108B that provides the functionality of aligning shapes is included in the toolbar 104B. This contextual tool 108B for aligning shapes is added to the toolbar 104B because the application opened in the collaboration application is a diagram application. Including the contextual tool 108B for aligning shapes and omitting the contextual tool 108A for grammar checking is an example of the adaptation of the tool set in the toolbar 104 based on context.
[0045] The external application tool 106 is still included in the toolbar 104B. The presence of the external application tool 106 in the toolbar 104 is based on the external application being loaded, linked, associated or otherwise available to the collaborative application. The availability of the external application tool 106 can be selected based on the data type of the file opened in the collaborative application.
[0046] The exemplary UI 112 also includes Figure 1A Anchor point 110B is different from anchor point 110A in the diagram file 114. Anchor point 110B represents a specific instance of tool usage associated with rectangle "D" in the diagram file 114. Anchor point 110B may represent a specific instance of tool usage associated with rectangle "D" in the diagram file 114. Figure 1A 110A shown in FIG. 110B. Even though both anchors 110A and 110B represent the use of the same tool, they illustrate separate instances of the tool being used in different files within different applications. Anchor 110B may also be used in the same manner as Figure 1A The anchor point 110A in FIG. 1 is fixed to an object in the text file 102 in the same manner as it is fixed to an object in the diagram file 114 (i.e., rectangle "D"). Figure 1A , the anchor point 110B may also move with the rectangle “D” and appear at the same position each time the diagram file 114 is opened in the collaboration application 112 .
[0047] Figure 2 An exemplary UI 200 of a collaboration application is illustrated that includes a canvas 202. The exemplary UI 200 expands on the UI 100 and UI 112 of FIG. 1 by providing additional details and UI elements.
[0048] The canvas 202 in the collaboration application is an area in the UI that stores content from the collaboration application or from one or more other applications. Any type of application can be opened in the canvas 202. Examples of applications that can be opened in the canvas 202 include productivity applications, such as word processing applications, spreadsheet applications, chart applications, presentation applications, photo or video editing applications, etc. An application opened in a collaboration application and accessed through the canvas 202 can be referred to as a canvas application.
[0049] The canvas 202 can be used as a shared workspace where multiple users joining a collaborative session can communicate with each other and interact with files opened in one of the canvas applications opened in the canvas 202. However, the canvas 202 can also be used by a single user without collaborating with other users. Multiple users can collaboratively interact with the canvas applications opened in the canvas 202 in the same or similar manner as how users interact with those applications running as independent instances outside of the canvas 202. However, accessing applications within the canvas 202 provides additional functionality, such as the ability to collaboratively view and manipulate files, and adds tools and features that may not be available in the canvas applications when used outside of the canvas 202.
[0050] The canvas 202 may provide any one or more different types of tool selection elements. The tool selection element may be implemented, for example, as a tool menu 204 or a toolbar 104. The toolbar 104 may be implemented as a floating toolbar that can be moved by a user to various locations within the canvas 202. In addition to any tools or functions available in the application opened in the canvas 202, the tools provided by the cooperating application through the tool selection element are also presented. Because the tool selection element is generated as part of the canvas 202, these tools may not be available when the application is launched outside of the canvas 202.
[0051] The tools available through the tool menu 204, the toolbar 104, or another tool selection element are part of a context-aware, extensible toolset. The toolset is extensible because additional tools can be added to it by the collaborating application, the canvas application, or by an external application. The toolset is context-aware because the specific tools available can depend on the context of the collaborating application, such as the type of application opened in the canvas 202 or the manner in which the collaborating application is being used (e.g., in a presentation mode). The tools available in the extensible toolset are illustrated in the exemplary UI 200 as a tool menu 204 and a toolbar 104. The toolset may include canvas tools 206, external application tools 106, and context tools 108.
[0052] The canvas tools 206 include standard or general tools that may be a built-in part of the collaboration application and available to all or nearly all canvas applications, and may be available when no canvas application is open in the canvas 202. Examples of canvas tools 206 may include a pencil for annotation, a highlighter for highlighting text, a sticky note tool for adding comments, and a snapshot tool for capturing an image of what is displayed in the canvas 202. These are merely examples of tools, and other types of tools may be included as one of the canvas tools 206. The canvas tools 206 generally provide functionality that is broadly applicable to many different scenarios and with many different types of canvas applications.
[0053] The external application tool 106 provides access to the functionality and data of an external application. The external application is not a collaborative application, nor is it the primary application opened in the canvas 202. However, the developer or company that created the external application may be the same as the developer or company that created the collaborative application or the canvas application. One or more external applications may be implemented as small instances of the external application within the canvas 202. Therefore, the features and functionality of the external application available through the external application tool 106 in the canvas 202 may include only a subset of the features and functionality provided by the external application when running as a standalone application.
[0054] An example of an external application is an application for conducting surveys or generating polls. When operating as a standalone application, this exemplary polling application may provide a number of functions related to generating a poll or survey; disseminating the poll or survey via email, web pages, etc.; and analyzing the results. However, a small instance of a polling application implemented within canvas 202 may only provide the ability to conduct a simple poll. This is an example of a small instance of an application that only provides a subset of the features available in the full application.
[0055] The canvas application may provide an application programming interface (API) for communicating with external applications. Any third-party developer or software manufacturer may create an external application that interacts with the collaboration application (e.g., via an API) to add functionality of the external application to the canvas 202. Although only one external application tool 106 is shown in the exemplary UI 100, any number of external application tools 106 may be included in the tool menu 204 or toolbar 104.
[0056] Thus, the external application tool 106 generally provides specialized functionality that is different from functionality provided by the collaborating application or by the canvas application opened in the canvas 202. The external application tool 106 can be added to the collaborating application through a plug-in or other modification and can be used in any canvas application opened in the canvas 202. Thus, the external application tool 106 is not necessarily bound to or based on the canvas application opened in the canvas 202.
[0057] The contextual tools 108 are context-specific tools that can be injected into the canvas 202 based on the needs of the underlying canvas application. For example, if a map application is open in the canvas 202, it can provide measurement tools and map pinning tools that measure distances and mark locations on the map. If a different type of canvas application is opened in the canvas 202, different types of tools will be added. These are examples of extensible tools that can be added to the tool menu 204 or toolbar 104 based on context.
[0058] The contextual tool 108 may be created and specified by the canvas application that is opened in the canvas 202. Thus, the definition, icon, name, functionality, etc. of the contextual tool 108 may not be provided by the collaborating application, but rather by the canvas application that is opened in the canvas 202. Typically, the contextual tool 108 is specific to a single application or a class of applications (e.g., all word processing applications, all mapping applications, etc.) and provides functionality related to the features of the canvas application.
[0059] The extensible tools may also include tools that are added to the tool selection element based on the use of the collaboration application. For example, if the collaboration application is configured for presentation mode, the toolbar 104 or other tool selection element may include presentation-specific tools, such as a laser pointing tool for indicating a location within the canvas 202 or a voice note tool for creating a recorded message. These types of extensible tools may be presented in the tool selection element regardless of the particular canvas application(s) opened in the canvas 202, but are presented based on the configuration or settings of the collaboration application (such as settings for presentation mode).
[0060] The exemplary UI 200 for the collaborative application also includes a dedicated area of the UI 208 for presenting content from the external application. The dedicated area of the UI 208 can be used as a container to hold a small instance of the external application and can be referred to as a "container". The UI elements and data presented in the container 208 are provided by the external application independent of the collaborative application or any canvas application opened in the canvas 202. Although only one container 208 is shown, the exemplary UI 200 for the external application can include any number of dedicated areas for one or more external applications.
[0061] The container 208 may have a specific size and / or shape. For example, the external application may specify a shape and / or size for the container 208. The shape may be a square, a rectangle, or other shapes. The shape may be defined according to an aspect ratio and one or more other characteristics. The scale may be defined according to pixels, points, centimeters, percentages of screen space, etc. The creation of the container 208 may be achieved based on communication between the collaborative application and the external application, such as via an API. In one example, the collaborative application may notify the external application of its total screen size and the aspect ratio of the canvas 202, and the external application may respond with a request for a specific size and shape of the area within the canvas 202. In one example, the collaborative application may provide a maximum size of an area that can be used exclusively for an external application, and the external application may indicate how much space it will use. The size and shape of the container 208 may vary based on the size of the display, the type of canvas application opened in the canvas 202, and the external application.
[0062] The container 208 can be considered as a pass-through area of the exemplary UI 200, in which the content displayed in the container 208 is received from the external application and the input input is sent to the external application. This enables the user to interact with the external application through the UI 200 without opening a separate window or creating a different UI. The data input and received through the container 208 can be managed separately from the data input and received in other parts of the UI 200. In one example, the collaborative application and any canvas application opened in the canvas 202 may not have access to any data through the dedicated area of the UI 208 for the external application. This type of separation and division provides a high level of customization for the UI 200 because, except for the size and shape of the container 208, no restrictions are imposed on the content or functionality provided by the external application. The external application presented in the container 208 can use a different visual theme, different fonts, different languages, different operating systems, etc. from the system presenting the collaborative application. These differences may be visually obvious to the user.
[0063] Anchor point 110 can represent a specific instance of using an external application tool at a location within canvas 202. Anchor point 110 is a visual representation of an external application tool that is associated with a specific location in a file of a canvas application that is opened in canvas 202. Activation of anchor point 110, such as by using a mouse click, mouse hover, touching a touch screen with a finger, or other techniques, can cause container 208 to appear. If anchor point 110 is moved within canvas 202, container 208 also moves. Container 208 can maintain its size and shape when moved.
[0064] 3 illustrates a block diagram 300 of an exemplary computing device 302 for implementing a collaboration application 304. A user 306 can interact with the computing device 302 to access the collaboration application 304 and other applications, such as a canvas application 308 and external applications 310. The computing device 302 can be any type of computing device, such as a desktop computer, a laptop computer, a tablet computer, a handheld computing device, etc.
[0065] The computing device 302 may include a collaboration application 304. In one example, the collaboration application 304 may be a web-based application or an application hosted on a remote computing device (not shown) such as a server or a cloud-based system. The computing device 302 may also include one or more canvas applications 308, one or more external applications 310, and one or more content sources 312 that can be opened in the canvas. The one or more content sources 312 may be one or more files, each of which may have an associated data type. For example, the data type may be a TXT file, a .docx file, a DWG file, a TSV file, etc. The data type may be related to the file type.
[0066] The collaboration application 304 may include a canvas 202 that can open a canvas application 308 and present one or more tools. The collaboration application 304 may also include additional functionality, such as the ability to manage voice calls, conference calls, group chats, or other collaboration-related tools. Another API 316 in the collaboration application 304 allows the canvas application 308 to communicate information about a particular contextual tool 108 to the collaboration application 304. Thus, for example, through the API(s) 316, the collaboration application 304 may add a particular contextual tool 108 to a tool menu 204 or toolbar 104. The additional API 316 enables an external application 310 to add a tool to a tool menu 204 or toolbar 104, and to exchange data with a user 306 of the collaboration application 304. The API 316 accessed by the external application 310 may describe a container 208 that provides the functionality of the tool provided by the external application 310. The API(s) 316 may allow specification of various aspects of the container 208, such as size and shape. The API(s) 316 may also describe how the external application 310 defines a location, such as by using a coordinate system or by referencing a particular type of object within the canvas application 308 .
[0067] When collaboration application 304 is the active application on computing device 302, user interface (UI) 318 of computing device 302 may present canvas 202. Canvas 202 may be associated with Figure 1A The UI 100 shown in Figure 1B The UI 112 shown in Figure 2UI 318 may also present other UIs, such as a UI from within external application 310 within container 208, based on different applications, operating systems, etc. active on computing device 302.
[0068] The computing device 302 may be communicatively connected to one or more servers 322(A)-322(N). The server(s) 322 may provide the computing device 302 and the collaborating applications 304 with access to software, files, and data structures in addition to those available locally on the computing device 302. For example, any smart hook data 302, content or file(s) 312, canvas application(s) 308, and external application(s) 310 may be stored on the server(s) 322 instead of or in addition to being stored on the computing device 302.
[0069] Figure 3B Multiple examples of canvas application(s) 308 and external application(s) 310 are shown. Canvas application(s) 308 may be one or more applications, such as productivity applications, that are recognized by collaboration application 304 and can be opened in canvas 202. Examples of canvas application(s) 308 include, but are not limited to, map application 308A, word processing application 308B, drawing application 308C, sketching application 308N, etc. Any of canvas application(s) 308A-308N may include code 330A-330N that provides instructions to computing device 302 to run the corresponding canvas application 308. Code 330 may be executed to run canvas application 308 as a standalone application. Code 330 or a subset of code 330 may be executed when canvas application 308 is opened within application 304.
[0070] The manifests 332A-322N of the canvas applications 308A-308N include descriptions of how opening the canvas application 308 into the canvas 202 may change the Figure 2 314. The manifest 332 may include data for a tool selection element in a tool menu 204 or toolbar 104 as shown in FIG. Any contextual tool 108 provided by the canvas application(s) 308 can be described in a manifest 332. The manifest 332 may provide an icon, name, or other expandable control representing the contextual tool 108 for use in the tool menu 204 or toolbar 104. In one example, the manifest 332 may also indicate one or more of the canvas tools 306 to be removed from the tool selection element. For example, when the map application 322 is opened in the canvas 314, the manifest 332 may instruct the collaboration application 304 to remove the highlighter tool from the canvas tool set 306.
[0071] The manifest 332 for any canvas application 308 declares that the canvas application 308 is a member of a class of applications. A particular type of application may be associated with a particular toolset. For example, any application that declares itself as a map application, and not just the particular map application 308A, may be associated with a toolset that includes a measurement tool and a map pinning tool. As an additional example, any canvas application 308 that declares itself as a sketch application 308N may be associated with a predetermined toolset that relates to graphics applications.
[0072] By using a manifest 332 to declare an association with a class of applications, the canvas application(s) 308 do not have to identify a specific tool, but are able to utilize a predefined relationship between a class of applications and one or more contextual tools 108. The set of contextual tools 108 associated with a given class of applications can be maintained by the collaboration application 304. Thus, these contextual tools 108 can reside within the collaboration application 304 and be included in the canvas 202 whenever an application of the specified class is opened in the canvas 202.
[0073] Manifest 332 may declare that canvas application 308 is a member of a class of applications and may also specify one or more additional tools that are specific to that particular application. Figure 2 The contextual tools 108 available in the tools menu 204 or toolbar 104 may be from the canvas application 308 and / or from tools maintained by the collaboration application 304 for a particular class of applications.
[0074] The external application(s) 310 may include one or more applications that are not opened in the canvas 202 but may be used within the collaboration application 304. An example of an external application 310 is a voting application 310A that is used to conduct a poll or survey. The voting application 310A provides one or more tools (e.g., a tool for conducting a poll) that add functionality to the collaboration application 304. This functionality (such as the ability to conduct a poll) is in addition to the functionality provided by the collaboration application 304 itself or any of the canvas applications 308. The voting application 310A provides an expandable control 336A that represents the tool. The expandable control 336A that represents the tool may be implemented as an icon for inclusion in the toolbar 104, as text for inclusion in the tool menu 204, or as any other means of graphically representing space for a tool within a UI, such as text, a picture, a symbol, or the like.
[0075] The voting application 310A also includes code 338A, which implements the functions of the voting application 310A when executed. The code 338A can be opened and run by the computing device 302, or it can be run by a website or other remote computing device. In this example, the code 338A can provide functions for generating and collecting responses to the vote. This can be a subset of the code for the voting application 310A when operating as an independent application separated from the collaboration application 304. The voting application 310A also provides a tool identifier (ID) 340A for any tool provided by the voting application 310A. The tool ID 340 provides a unique label or name for a specific instance of using the tool. Therefore, in the context of the voting application 310A, the tool ID 340 identifies the content of the vote, such as questions and possible answers and any data received in response to the vote. Because each tool ID 340A is unique to a specific instance of the tool, there may be multiple tool IDs 340A maintained by the voting application 310A.
[0076] Other examples of external applications 310 include workflow applications 310B and encyclopedia applications 310N. Workflow applications 310B manage the assignment of tasks and responsibilities to users and track the progress of those tasks. Workflow applications 310B may include graphical elements 336B, code 338B, and (one or more) tool IDs 340B. Encyclopedia applications 310N provide content such as articles or definitions from encyclopedic information sources such as Wikipedia or online encyclopedias. Encyclopedia applications 310N may also include graphical elements 336N, code 338N, and (one or more) tool IDs 340N.
[0077] Return to Figure 3A, each use of a tool may be associated with a specific "position" or display of the content of the file opened in the canvas 202. The link ("association") between the tool, the location of use, and any content specific to that specific use ("supplemental content") may be maintained by a "smart hook". A smart hook is a data structure that associates a tool with the displayed content in the file opened in the canvas 202. The smart hook contains the data required to recreate the canvas 202, the canvas application 308, specific content 312 (such as a web page or file), the location on the displayed content from the file, and the association between the tool in the canvas 202. In one example, the smart hook data 320 may be stored and managed by the collaboration application 304. However, the smart hook data 320 may alternatively be stored by one of the canvas applications 308 that provide the tool referenced in the smart hook data 320. The smart hook data 320 contains data sufficient to stitch together a specific instance of the tool use and a specific displayed content from the file, but does not necessarily contain any data from the file or application. In other words, smart hooks can provide the “who” and the “where,” but not the “what.” Smart hooks data 320 can include data for any type of tool, such as a canvas tool 206 , an external application tool 106 , or a context tool 108 .
[0078] Figure 4 400. A smart hook may also be referred to as a "hook". A smart hook 400 represents a hook between a tool and a canvas that is created by splicing an instance of a tool to a canvas created by a collaborative application such as a Figure 2 and Figure 3A The smart hook 400 used to implement the splicing can be managed and stored by the collaborative application. The API can define the characteristics of the smart hook 400 and provide an application using the API with a common language to transmit the type and structure of the data constituting the smart hook 400.
[0079] The smart hook 400 may include an application identifier (ID) 402. The canvas application ID 402 identifies a specific canvas application 308. The canvas application ID 402 may identify, for example, a specific word processing application, a specific graphics application, a specific drawing application, a specific spreadsheet application, or other types of applications. A content identifier (ID) 404 included in the smart hook 400 identifies specific content that can be opened in the canvas, such as a file or a web page. In other words, the content ID 404 identifies a specific canvas based on the content that is opened in the canvas when the canvas is active. For example, the canvas application ID 402 may identify a chart application, and then the content ID 404 may identify a chart file opened by the chart application.
[0080] A location identifier (ID) 406 is also included in the smart hook 400. The location ID 406 identifies the location within the file represented by the file ID 404. The location within the file can be represented in any number of ways. The location ID 406 represents the location in a way that can be understood by the collaboration application and any canvas application or external application that provides tools for pinning on the canvas.
[0081] In one example, a location can be represented by a set of coordinates that indicate a location on a file relative to a coordinate system. For example, a location can be represented as a set of x, y coordinates, where the origin of the coordinate system (0,0) is set to the center of the canvas. In the absence of any other technology or standard for conveying location information, using a set of coordinates can be the default way to represent a location. The canvas application represented by canvas application ID 402 can specify the way to represent a location. When a location is represented by a set of coordinates, the location can remain unchanged within the UI presented by the collaborating application even if the content or location of the underlying file changes.
[0082] In one example, a location can be linked to a commonly understood object in a file represented by file ID 404. The type of the object can vary depending on the type of application represented by canvas application ID 402. For example, in a word processing application, the object can be a paragraph, page and line number, a text phrase, a single word, etc. As another example, in a map application, the object can be a geographic landmark or a geographic location, such as latitude and longitude. Note that although latitude and longitude represent a coordinate system, the coordinate system is based on the content contained in the canvas application (i.e., a specific map), which is different from the coordinate system representing the UI generated by the collaborative application. As another example, a chart application can use chart elements such as squares, rectangles, circles, lines, etc. as commonly understood objects. When a location is associated with a commonly understood object in a file, the location will change within the UI presented by the collaborative application as the location of the object changes. Therefore, any tool that is fixed to the object using smart hooks 400 will move as the object moves.
[0083] If the smart hook 400 references a tool provided by an external application, the smart hook 400 may also include an external application identifier (ID) 408. The external application ID 408 indicates a specific external application. For example, the external application ID 408 may indicate that the smart hook 400 references an object created by a voting application rather than some other external application.
[0084] A tool identifier (ID) 410 in the smart hook 400 identifies a specific instance of tool use. The tool ID 410 may also provide a pointer or other indication of content associated with the use of the tool. For example, if the tool is a note tool, the tool ID 410 may indicate where the note content is located. Thus, the tool ID 410 indicates how the tool is used in a specific instance, not just the name or identity of the tool.
[0085] Smart Hook 400 may also include a timestamp 412 and a user identifier (ID) 414. Timestamp 412 indicates the time and / or date of creation of an association between a tool and a location in an application. User ID 414 indicates the user (e.g., user 306) who created the association represented by smart hook 400. Timestamp 412 may be used to manage different versions of smart hook 400. User ID 414 may be used to provide the correct tool-file link for the user associated with user ID 414.
[0086] In one example, the smart hook data 242 may be stored locally on the computing device 302, as shown in FIG. 3, for example, as smart hook data 320. However, the smart hook 400 may alternatively or additionally be stored remotely on a network or cloud-based storage location. When the smart hook 400 is stored in a network accessible location and not only on a local storage device of the computing device 302, the user represented by the user ID 414 is able to access his or her smart hook 400 (i.e., and have the tool pinned to a location of his or her choice in a given file) from any computing device that can access the storage location. The smart hook 400 may additionally or alternatively be associated with the file represented by the file ID 404, such that any user who opens the file in a canvas of a collaborative application will see the tool pinned at the location indicated by the smart hook 400.
[0087] Figure 5A and Figure 5B Two views of a collaboration application UI are illustrated, showing how the fixed position of a tool moves with the underlying content of a file opened in the collaboration application's canvas. Example UI 500 presents a first view of a word processing application opened in the collaboration application's canvas. In this example, there is a fixed anchor 502 representing a sticky note tool. The sticky note tool can be Figure 2 An example of a canvas tool 206 introduced in FIG. An anchor 502 is a visual representation of a tool associated with a specific location in a file opened in the canvas. The visual representation may have, but is not limited to, the appearance of a pin head and may include an icon associated with the tool that is the same or similar to the icon for the tool displayed in the toolbar 104.
[0088] Exemplary UI 504 shows a second view of a word processing application, wherein anchor point 502 has moved with paragraph
[0003] of a word processing file. In this example, the paragraph of the word processing file is the object to which this instance of the sticky note tool is fixed. An API (such as API 316 shown in FIG. 3 ) can specify that a paragraph is an object type used to define a position within a word processing application. Utilizing this association created between anchor point 502 and the object in the file, anchor point 502 will not be stuck at a fixed position within the canvas, but will change position according to changes in the position of the associated object (i.e., paragraph
[0003] ). This is an example of a tool that is fixed to a commonly understood object within a file that is opened in the canvas.
[0089] Fig. 6A and Figure 6B Two views of a collaborative application UI are illustrated, showing how the fixed position of a tool moves with the underlying content of a file opened in the application's canvas. Exemplary UI 600 presents a first view of a charting application including a toolbar 104. In this example, there is an anchor point 602 associated with a chart object (rectangle "B"). Anchor point 602 represents a sticky note tool.
[0090] exist Figure 6B , exemplary UI 604 shows the anchor point 502 relative to Fig. 6A UI 600 of the sticky note tool has been moved to a different location within UI 604 because the object to which the tool was pinned has been moved to a different location within the diagram file. The associated object rectangle "B" may be represented by a unique object identifier or code within the diagram application. The unique object identifier or code may be the location ID 406 contained in the smart hook that splices this instance of the sticky note tool to rectangle "B".
[0091] Fig. 7A and Figure 7B An example of a map application is shown in which contextual, map-specific tools associated with the map application are presented in the UI of the collaborating application via a toolbar 104 or a tools menu. Fig. 7A An exemplary UI 700 is shown in which a map application is opened in the canvas of a collaboration application. The map application is associated with specific tools that are not part of the general toolset presented by the collaboration application. These tools are examples of the contextual tools 108 introduced earlier. The tools are shown in this exemplary UI 700 as part of the toolset in the toolbar 104.
[0092] The toolbar 104 in this exemplary UI 700 includes a measurement tool 702 represented by a ruler icon and a map pinning tool 704 represented by a pushpin icon. These are tools that are not included in toolbars presented with other types of applications, such as, for example, in Figure 5A and Figure 5B . The measurement tool 702 can perform map-specific functions, such as measuring the distance between two points. The exemplary UI 700 shows an example of using the measurement tool 702 to generate a measured distance 706. The functionality provided by the measurement tool 702 may only be available to the map application when the map application is opened in the canvas of the collaboration application.
[0093] Figure 7B An exemplary UI 708 is shown, which includes Fig. 7A . In this exemplary UI 708, the tools are shown in the tool menu 204 instead of the toolbar 104. The tool menu 204 is also an example of a tool selection element. The tool selection element can be implemented using any kind of UI design and interface options, and is not limited to the toolbar 104 or the tool menu 204. This exemplary UI 708 shows the use of a map pinning tool 704. The map pinning tool 704 can be used to specify a location on a map file opened within a collaborative application. For example, the map pinning tool 704 can be used to place a pinning tool 808 at a location on a map. The location of the pinning tool 808 within a map file can be represented using a commonly understood object such as a street address or a geographic location.
[0094] exist Fig. 7A and Figure 7B The measurement tool 702 and the map pinning tool 704 shown in FIG. 3 can be described in a manifest associated with a map application, such as the manifest 332 shown in FIG. 3 . In one example, a plug-in in a cooperating application can reference the manifest 332 to obtain any tools associated with a map application. In one example, the manifest 332 can be presented to the cooperating application via an API. The manifest 332 provides instructions for modifying a tool selection element to include an expandable control 336 (e.g., an icon for inclusion in a toolbar 104 or text for inclusion in a tool menu 204) representing the measurement tool 702 and the map pinning tool 704.
[0095] Fig. 8A , 8B and 8C show a sketching application that has opened a file containing a sketch of a building exterior within the collaborative application's canvas.
[0096] Fig. 8AAn exemplary UI 800 is shown including a toolbar 104 within a canvas of a collaborative application. The toolbar includes a "Tools" icon 802 to display additional tools beyond those shown in this view of the toolbar 104. The toolbar 104 is expanded to show additional tool options by activating the "Tools" icon 802 using a pointing device, such as a mouse or finger, or by using a keyboard or voice command.
[0097] Figure 8B An exemplary UI 804 is shown in which the toolbar 104 is expanded to show three external application tools. The external application tools may include a voting tool represented by an icon 806 in the expanded toolbar. The icon 806 may be selected and associated with a location on a file in the canvas to create a fixed tool 808 that associates an instance of the voting tool with a location on an external design sketch. The fixed tool 808 may be represented by an icon that is the same or similar to the icon 806 representing the voting tool in the toolbar 104. The association of the voting tool with the location on the file may be captured by the collaboration application and recorded by the collaboration application as a smart hook. In some exemplary implementations, the canvas application, rather than the collaboration application, may create and / or store the smart hook.
[0098] Figure 8C An exemplary UI 810 is shown in which the pin tool 808 is activated, such as by selection or mouse hover, to open the container 208 for the voting application. When reopened in the sketch application in the collaboration application, the pin tool 808 can be in its original position (i.e., Figure 8B ) is added to UI 810. For example, in Figure 8C The UI 810 shown may represent the Figure 8B UI 804 shows a subsequent session after the first session is closed.
[0099] Container 208 presents content provided by the voting application. The content can be presented without modification by the collaborating application and can be different from other parts of the exemplary UI 810, such as by having a different style, font, color scheme, resolution, language, etc. In this example, container 208 presents a vote with three options. User selection of one of the options creates data that is passed to the voting application and can be saved by the voting application in association with fixed tool 808. Subsequent activation of fixed tool 808 can call data from the voting application and present the results of the vote within container 208. Therefore, clicking or otherwise activating fixed tool 808 launches the functionality of the external application represented by fixed tool 808. This enables at least a portion of the functionality of the voting application to be used within the canvas application (i.e., the sketch application) without having to separately launch the voting application or open an additional window.
[0100] Fig. 9 and Fig.10 900 and 1000 are diagrams illustrating aspects of routines 900 and 1000 related to extensible tools and pinning tool objects to canvases in collaborative applications. It should be understood by those of ordinary skill in the art that the operations of the methods disclosed herein are not necessarily presented in any particular order, and that it is possible and contemplated to perform some or all operations in (one or more) alternative orders. For ease of description and illustration, the operations have been presented in the order in which they are presented. Operations may be added, omitted, performed together, and / or performed simultaneously without departing from the scope of the appended claims.
[0101] It should also be understood that the illustrated method can be terminated at any time and need not be fully executed. Some or all of the operations of the method and / or substantially equivalent operations can be performed by executing computer-readable instructions included on a computer storage medium, as defined herein. The term "computer-readable instructions" and its variants used in the specification and claims are broadly used herein to include routines, applications, application modules, program modules, programs, components, data structures, algorithms, etc. Computer-readable instructions can be implemented on various system configurations, including single-processor or multi-processor systems, minicomputers, mainframe computers, personal computers, handheld computing devices, microprocessor-based programmable consumer electronics, combinations thereof, etc.
[0102] It should therefore be appreciated that the logical operations described herein are implemented as: (1) a sequence of computer-implemented actions or program modules running on a computing system such as those described herein, and / or (2) interconnected machine logic circuits or circuit modules within the computing system. The implementation is a matter of choice depending on the performance and other requirements of the computing system. Thus, the logical operations may be implemented in software, firmware, dedicated digital logic, and any combination thereof.
[0103] In addition, Fig. 9 and Fig.10 The operations shown in can be implemented in association with the exemplary presentation UI described above. For example, various devices (one or more) and / or modules (one or more) described herein can generate, send, receive and / or display data associated with the content of a canvas, tool and / or external application.
[0104] Fig. 9A routine 900 is shown for fixing an anchor representing an external application on a canvas of a collaborative application. The routine 900 also includes operations to "dehydrate" the relationship between the location of displayed content of the canvas, application, file, and tool by creating smart hooks. As used herein, dehydration refers to storing multiple pointers to other data that are related to each other without having to store all the other data itself.
[0105] At operation 902, a canvas application is opened within a canvas of a collaboration application. The canvas application may be a productivity application or another type of application, including any type of application previously discussed in this disclosure. Opening a canvas application within a collaboration application may be performed by a user selecting the canvas application from a menu of the collaboration application that presents a selection of applications previously associated with the collaboration application. Opening the canvas application may cause the canvas application to occupy all or substantially all of a canvas portion of a UI presented by the collaboration application.
[0106] At operation 904, the file is opened in the canvas application. Opening the file in the canvas application may result in the contents of the file being presented within the canvas of the collaboration application. The canvas application may be able to open one or more file types. The specific file type(s) depends on the canvas application.
[0107] At operation 906, the scalable control of the tool representing the external application is rendered in the tool selection element displayed in the canvas. The scalable control can be selected based on the data type of the file. Therefore, the type of the file can determine which types of scalable controls are available in the UI. The tool selection element can be a toolbar, a tool menu or other types of scalable controls. In one example, the tool selection element can also include at least one of the scalable controls representing the canvas tool or the scalable controls representing the context tool. The scalable control representing the tool can be an icon, a symbol, a text or other marks contained in the UI. Therefore, the tool selection element (e.g., a toolbar) includes one or both of an external application tool (e.g., a voting tool) and a canvas tool (e.g., a sticky note tool) and a context tool (e.g., a measurement tool or a map fixing tool).
[0108] An extensible control representing a contextual tool can be added to a tool selection element in response to opening a canvas app in the canvas. Thus, opening a canvas app can cause a collaborating application to update the selection of tools without further specific user input (e.g., automatically adding a contextual tool to a toolbar). A contextual tool is a tool that provides functionality specific to a canvas app. In one example, a collaborating application references a manifest associated with the canvas app. If the manifest specifies that a contextual tool is included on a tool selection element, the collaborating application adds an extensible control representing the contextual tool to the tool selection element and makes the corresponding tool functionality available.
[0109] At operation 908, a selection of a tool of the external application is received through interaction with a tool selection element. Any user interacting with the canvas through the application can select the external application tool through conventional techniques for selecting tools from menus, toolbars, and the like.
[0110] At operation 910, an indication of a location within a display of the contents of a file opened in a canvas is received from a user input. The location may be indicated by a user selecting a point on the canvas or an object within the file. In one example, the location includes a set of coordinates representing a location on the file relative to a coordinate system, such as a set of x, y coordinates representing an offset from a reference position. In one example, the location includes an identifier of an object in the file, such as a name of the object, an object ID, etc. The type of object is based on the canvas application. For example, a word processing application may use page and line numbers to represent an object, while a map application may use a street address.
[0111] At operation 912, an anchor representing a tool from an external application is placed at the location. The collaborating application may indicate the use of the external application tool by a "pin" or other UI designation showing the location. The anchor is typically small and visually inconspicuous so that the content of the file can be easily viewed without being covered or obscured by the anchor.
[0112] At operation 914, a smart hook including an identifier of the file, an identifier of the tool of the external application, and an identifier of the location is stored. The information contained in the smart hook enables an anchor point representing the external application tool to be placed at the location on the file when the file is reopened in the canvas. The anchor point can be placed at the same location regardless of which user or computing device opens the file. In an example, the smart hook also includes an identifier of the user associated with the selection of the tool. This allows a specific instance of the external application tool to be associated with a user.
[0113] At operation 916, data is received through a dedicated area (e.g., container) of the UI of the application. The data defines the configuration of the external application and is passed from the collaborating application to the external application. Therefore, any content entered in the container that holds the external application instance is sent to the external application for processing by the external application. Data generated by the external application response can be shown in the container.
[0114] Fig.10A routine 1000 is shown for placing an anchor representing the tool at a previously specified location in the display of the content opened in the canvas using a smart hook. Thus, routine 1000 shows an operation for "rehydrating" the anchor. As used herein, rehydration refers to loading the applications, files, and data indicated by the smart hook into the collaborative application. This is the opposite of dehydration. Rehydration uses the pointer provided by the smart hook to locate the appropriate applications and data to generate a UI element shown at a previously specified location in the canvas area of the collaborative application.
[0115] At operation 1002, an indication is received from a user to open a file in a canvas of a collaborative application. The indication may be received from an interaction between the user and a canvas application opened within the collaborative application. For example, the user may select an open file command from a menu presented by the canvas application.
[0116] At operation 1004, an identifier of a tool from an external application and an identifier of a location within a display of the contents of the file to be placed, the anchor representing the tool of the external application, are obtained from a smart hook associated with the file. The smart hook comprises a data structure created by a cooperating application. The association between the file and the smart hook can be maintained by the file so that when the file is opened, it provides an indication of which smart hook(s) to access. Alternatively or additionally, the association between the file and the smart hook can be maintained by the cooperating application so that when the file is opened, the collaboration searches for any (one or more) smart hooks that reference the file.
[0117] As described above, the location in the smart hook may include a set of coordinates that represent a location on the file relative to a coordinate system, the location may include an identifier of an object in the file, and the type of the object is based on the canvas application, or the location may be represented in another manner that is mutually understood by the canvas application and the collaborating application.
[0118] At operation 1006, a canvas application configured to render the file in the canvas is opened. This may be reopening a canvas application that was previously opened in the canvas or in another canvas. Opening the canvas application may cause the canvas application to occupy all or most of the canvas area of the UI generated by the collaboration application.
[0119] At operation 1008, the file is opened in the canvas application.
[0120] At operation 1010, an anchor representing a tool of an external application is placed at the location within the display of the content of the file. This "rehydrates" the anchor according to the relationship stored in the smart hook.
[0121] At operation 1012, an interaction with the marking tool is detected. The detection may be done by any of the collaboration application, the canvas application, or an external application. The interaction may be any type of conventional interaction with a UI element, such as a mouse click, a mouse hover, a selection by touch on a touch screen, a selection using a keyboard command, a selection by a voice command, a selection by a gesture, etc.
[0122] At operation 1014, a dedicated area on the canvas associated with the tool of the external application is created so that data entered in the dedicated area can be passed to the external application. This is to create or display a container that holds the external application. In response to detecting the interaction at operation 1012, a dedicated area on the canvas associated with the tool of the external application is created.
[0123] It should be appreciated that the subject matter described above can be implemented as a computer-controlled device, a computer process, a computing system, or as an article such as a computer-readable storage medium. The operations of the exemplary method are illustrated in individual blocks and are summarized with reference to those blocks. The method is illustrated as a logical flow of blocks, each of which can represent one or more operations that can be implemented in hardware, software, or a combination thereof. In the context of software, the operations represent computer-executable instructions stored on one or more computer-readable media, which, when executed by one or more processors, enable the one or more processors to perform the operations described.
[0124] Typically, computer executable instructions include routines, programs, objects, modules, components, data structures, etc. that perform specific functions or implement specific abstract data types. The order in which the operations are described is not intended to be construed as a limitation, and any number of the described operations can be performed in any order, combined in any order, subdivided into multiple sub-operations, and / or performed in parallel to implement the described processes. The described processes can be performed by resources associated with the following items: one or more devices, such as one or more internal or external central processing units (CPUs) or graphics processing units (GPUs), and / or one or more hardware logic units, such as field programmable gate arrays ("FPGAs"), digital signal processors ("DSPs"), or other types of accelerators.
[0125] All methods and processes described above can be embodied in software code modules executed by one or more general-purpose computers or processors, and are fully automated via these software code modules. The code modules can be stored in any type of computer-readable storage medium or other computer storage device, such as those described below. Some or all of the methods described can alternatively be embodied in special-purpose computer hardware, such as described below.
[0126] Any routine description, element or box in the flowchart described in this article and / or depicted in the accompanying drawings should be understood to potentially represent modules, segments or code portions, which include one or more executable instructions for implementing specific logical functions or elements in the routine. Alternative implementations are included within the scope of the examples described in this article, where elements or functions can be deleted or executed out of order from what is shown or discussed, including substantially synchronously or in reverse order, depending on the functions involved, as will be understood by those skilled in the art.
[0127] Fig.11 1 is a diagram illustrating an exemplary environment 1100 in which a system 1102 can implement the techniques disclosed herein. In some implementations, the system 1102 (also referred to as a data processing system) can be used to collect, analyze, and share data or characteristics about one or more canvases created in a collaborative application.
[0128] As illustrated, a collaboration session 1104 (also referred to as a “communication session 1104”) may be implemented between a plurality of client computing devices 1106(1)-1106(N) (where N is a number having a value of 2 or greater) associated with or as part of the system 1102. The client computing devices 1106(1)-1106(N) enable users (also referred to as individuals) to participate in the collaboration session 1104.
[0129] In this example, the collaboration session 1104 is hosted by the system 1102 over one or more networks 1108. That is, the system 1102 can provide services that enable users of client computing devices 1106(1)-1106(N) to participate in the collaboration session 1104 (e.g., by exchanging email messages and / or participating in a shared collaboration channel). Thus, the "participants" of the collaboration session 1104 can include users and / or client computing devices (e.g., multiple users can participate in a communication session in a room via the use of a single client computing device), each of which can communicate with the other participants. Alternatively, the collaboration session 1104 can be hosted by one of the client computing devices 1106(1)-1106(N) using peer-to-peer technology. The system 1102 can also host video conferencing, chat conversations, and other team collaboration capabilities (e.g., as part of an application suite).
[0130] In the examples described herein, client computing devices 1106(1) to 1106(N) participating in a collaboration session 1104 are configured to receive canvas data and render it for display on a user interface of a display screen. The canvas data can include a collection of tools, applications opened in a canvas, smart hooks, external application data, or other types of canvas content. The collection of various instances of canvas data related to content contained in a canvas of a collaboration application may be referred to simply as a canvas.
[0131] Users can use computing devices to view content of the collaboration session 1104. In the examples described herein, client computing devices 1106(1)-1106(N) participating in the collaboration session 1104 are configured to receive canvas data and render for display on a user interface of a display screen.
[0132] Fig.11 The system 1102 includes (one or more) devices 1110. (One or more) devices 1110 and / or other components of the system 1102 can include distributed computing resources that communicate with each other and / or with client computing devices 1106 (1) to 1106 (N) via one or more networks 1108. In some examples, the system 1102 can be a stand-alone system responsible for managing various aspects of one or more collaborative work environments (such as collaborative sessions 1104). As an example, the system 1102 can be managed by an entity such as Slack, WEBEX, GOTOMEETING, GOOGLE HANGOUTS, etc.
[0133] The network(s) 1108 may include, for example, a public network (such as the Internet), a private network (such as an institutional and / or personal intranet), or some combination of private and public networks. The network(s) 1108 may also include any type of wired and / or wireless network, including, but not limited to, a local area network ("LAN"), a wide area network ("WAN"), a satellite network, a cable network, a Wi-Fi network, a WiMAX network, a mobile communication network (e.g., 3G, 4G, 5G, etc.), or any combination thereof. The network(s) 1108 may utilize communication protocols, including packet-based and / or datagram-based protocols, such as the Internet Protocol ("IP"), the Transmission Control Protocol ("TCP"), the User Datagram Protocol ("UDP"), or other types of protocols. In addition, the network(s) 1108 may also include a plurality of devices that facilitate network communications and / or form the hardware foundation of the network, such as switches, routers, gateways, access points, firewalls, base stations, repeaters, backbone devices, etc.
[0134] In some examples, network(s) 1108 may also include devices that enable connection to a wireless network, such as a wireless access point (“WAP”). Examples support connection via WAPs that send and receive data over various electromagnetic frequencies (e.g., radio frequencies), including WAPs that support the Institute of Electrical and Electronics Engineers (“IEEE”) 802.12 standards (e.g., 802.12g, 802.12n, 802.12ac, etc.), as well as other standards.
[0135] In various examples, (one or more) devices 1110 may include one or more computing devices that operate in a cluster or other grouping configuration to share resources, balance loads, improve performance, provide failover support or redundancy, or for other purposes. For example, (one or more) devices 1110 may belong to various types of devices, such as conventional server type devices, desktop computer type devices, and / or mobile type devices. Therefore, although illustrated as a single type of device or (one or more) server type devices, devices 1110 may include multiple device types and are not limited to specific types of devices. (One or more) devices 1110 may represent, but are not limited to: a server computer, a desktop computer, a network server computer, a personal computer, a mobile computer, a laptop computer, a tablet computer, or any other type of computing device.
[0136] The client computing device (e.g., one of client computing devices 1106(1)-1106(N)) can be of a variety of types of devices, which can be the same as or different from device(s) 1110, such as a conventional client type device, a desktop computer type device, a mobile type device, a dedicated type device, an embedded type device, and / or a wearable type device. Thus, the client computing device can include, but is not limited to, a desktop computer, a game console and / or a game device, a tablet computer, a personal data assistant ("PDA"), a mobile phone / tablet hybrid device, a laptop computer, a telecommunications device, a computer navigation type client computing device (such as a satellite-based navigation system including a global positioning system ("GPS") device), a wearable device, a virtual reality ("VR") device, an augmented reality ("AR") device, an implanted computing device, an automotive computer, a web-enabled television, a thin client, a terminal, an Internet of Things ("IoT") device, a workstation, a media player, a personal video recorder ("PVR"), a set-top box, a camera, an integrated component (e.g., a peripheral device) contained in a computing device, an appliance, or any other type of computing device. Furthermore, the client computing device may include a combination of the earlier listed examples of client computing devices, such as, for example, a desktop computer type device or a mobile type device combined with a wearable device, etc.
[0137] The various types and device types of client computing device(s) 1106(1) to 1106(N) can represent any type of computing device having one or more data processing units 1112 operably connected to a computer-readable medium 1114 such as via a bus 1116, which in some cases can include one or more of: a system bus, a data bus, an address bus, a PCI bus, a Mini-PCI bus, and any variety of local, peripheral and / or independent buses.
[0138] The executable instructions stored on the computer-readable medium 1114 may include, for example, an operating system 1118 , a client module 1120 , a profile module 1222 , and other modules, programs, or applications that can be loaded and executed by the data processing unit 1112 .
[0139] The client computing device(s) 1106(1)-1106(N) may also include one or more interfaces 1124 to enable communications between the client computing device(s) 1106(1)-1106(N) and other networked devices, such as device(s) 1110, over the network(s) 1108. Such network interface(s) 1124 may include one or more network interface controllers (NICs) or other types of transceiver devices to send and receive communications and / or data over the network. In addition, the client computing device(s) 1106(1)-1106(N) can include an input / output ("I / O") interface (device) 1126 that enables communication with input / output devices, such as user input devices including peripheral input devices (e.g., game controllers, keyboards, mice, pens, voice input devices (such as microphones), cameras for obtaining and providing video feeds and / or still images, touch input devices, gesture input devices, etc.) and / or output devices including peripheral output devices (e.g., displays, printers, audio speakers, tactile output devices, etc.). Fig.11 The client computing device(s) 1106(1) are illustrated as being connected in some manner to a display device (eg, display screen 1228(N)) that is capable of displaying a UI according to the techniques described herein.
[0140] exist Fig.11In the exemplary environment 1100 of FIG. 1 , client computing devices 1106(1) through 1106(N) can use their respective client modules 1120 to connect to each other and / or other external devices in order to participate in a collaborative session 1104 or to contribute to a canvas or collaborative environment. For example, a first user can utilize client computing device 1106(1) to communicate with a second user of another client computing device 1106(2). When executing client modules 1120, the users can share data, which can cause client computing device 1106(1) to connect to system 1102 and / or other client computing devices 1106(2) through 1106(N) via network(s) 1108.
[0141] The client computing device(s) 1106(1)-1106(N) may use their respective profile modules 1122 to generate a participant profile ( Fig.11 ), and provide the participant profile to other client computing devices and / or to the device(s) 1110 of the system 1102. The participant profile may include one or more of: an identification of a user or group of users (e.g., name, email address, unique identifier (“ID”), recipient ID, etc.), user data (such as personal data), machine data (such as location (e.g., IP address, room in a building, etc.), and technical capabilities, etc. The participant profile may be used to register participants for the collaboration session.
[0142] As in Fig.11 As shown in , the device(s) 1110 of the system 1102 includes a server module 1130 and an output module 1132. In this example, the server module 1130 is configured to receive canvases 1134(1) to 1134(N) from individual client computing devices (such as client computing devices 1106(1) to 1106(N)). As described above, a canvas can include an application opened in the canvas, one or more tools, data from an external application, etc. Therefore, the server module 1130 is configured to receive a collection of various canvases 1134(1) to 1134(N) during the collaboration session 1104 (the collection is referred to herein as "canvas data" 1135). In some scenarios, not all client computing devices participating in the collaboration session 1104 provide canvas data. For example, a client computing device may only be a consuming or "receiving" device, such that it only receives content associated with the collaboration session 1104 but does not provide any content to the collaboration session 1104.
[0143] In various examples, the server module 1130 can select aspects of the canvas 1134 to be shared with individual client computing devices of the participating client computing devices 1106(1)-1106(N). Thus, the server module 1130 can be configured to generate session data 1136 based on the canvas 1134 and / or communicate the session data 1136 to the output module 1132. The output module 1132 can then transmit the canvas data 1139 to the client computing devices (e.g., the client computing devices 1106(1)-1106(3) participating in the collaboration session). The canvas data 1139 can include text, images, video, audio, smart hooks, and / or other content data, which is provided by the output module 1132 based on the content 1150 associated with the output module 1132 and based on the received session data 1136.
[0144] As shown, output module 1132 transmits canvas data 1139(1) to client computing device 1106(1), transmits canvas data 1139(2) with content 1150 to client computing device 1106(2), transmits communication data 1139(3) with content 1150 to client computing device 1106(3), etc. The canvas data 1139 transmitted to the client computing devices can be the same or different (e.g., the same chat message being sent to multiple participants or each participant receiving a different email message).
[0145] In various implementations, the device(s) 1110 and / or the client module 1120 can include a graphical user interface (GUI) rendering module 1240. The GUI rendering module 1140 can be configured to analyze the communication data 1139 for delivery to one or more of the client computing devices 1106. Specifically, the UI rendering module 1140 at the device(s) 1110 and / or the client computing device 1106 can analyze the canvas data 1139 to determine an appropriate manner for displaying the collaboration application, the canvas application opened in the collaboration application, the anchors representing one or more tools pinned to the canvas application, and / or the content from the external application rendered within the canvas on the display screen 1128 of the associated client computing device 1106. In some implementations, the GUI rendering module 1140 can provide the communication content to a rendering GUI 1246 rendered on the display screen 1128 of the associated client computing device 1106. The rendering GUI 1144 can be rendered on the display screen 1128 by the GUI rendering module 1140. The presentation GUI 1144 may include: a user interface of the collaboration application, a canvas, one or more applications opened in the canvas, visual elements representing such as anchors, toolbars, tool menus, containers holding content from external applications, and the like.
[0146] In some implementations, the presentation GUI 1144 may include multiple sections or grids that may render or include text, video, images, and / or content for display on the display screen 1128. For example, a first section of the presentation GUI 1144 may include a menu or tool selection for a collaboration application, and a second section of the presentation GUI 1144 may include a canvas for interacting with functionality provided by the collaboration application. The GUI presentation module 1140 may populate the second section of the presentation GUI 1144 in a manner that displays a single application or multiple applications within the canvas.
[0147] Fig.12 A diagram showing exemplary components of an exemplary device 1200 (also referred to herein as a "computing device" or "data processing system") configured to generate data for one or more implementations disclosed herein. The device 1200 may generate data including data for use in Fig.11 One or more canvases displayed on the display screen 1128 shown in . Device 1200 can represent any device in the (one or more) devices described in this document. For example, device 1200 can represent computing device 302, client computing device 1106, or device 1110.
[0148] As illustrated, device 1200 includes one or more data processing units 1202, computer-readable media 1204, and communication interfaces 1206. The components of device 1200 are operably connected, for example, via bus 1209, which may include one or more of a system bus, a data bus, an address bus, a PCI bus, a Mini-PCI bus, and any kind of local, peripheral, and / or independent bus.
[0149] As utilized herein, data processing unit(s) (such as data processing unit(s) 1202 and / or data processing unit(s) 1112) may represent, for example, a CPU-type data processing unit, a GPU-type data processing unit, a field programmable gate array (“FPGA”), another type of DSP, or other hardware logic components driven by a CPU in some cases. For example, but not limited to, exemplary types of hardware logic components that may be used include application specific integrated circuits (“ASICs”), application specific standard products (“ASSPs”), systems on chips (“SOCs”), complex programmable logic devices (“CPLDs”), and the like.
[0150] As used herein, computer-readable media (such as computer-readable media 1204 and computer-readable media 1214) can store instructions that can be executed by (one or more) data processing units. The computer-readable medium can also store instructions executable by an external data processing unit (such as by an external CPU, an external GPU) and / or executable by an external accelerator (such as an FPGA-type accelerator, a DSP-type accelerator, or any other internal or external accelerator). In various examples, at least one CPU, GPU, and / or accelerator is incorporated into the computing device, while in some examples, one or more of the CPU, GPU, and / or accelerator is external to the computing device.
[0151] Computer-readable media (which may also be referred to herein as computer-readable media) include computer storage media and / or communication media. Computer-readable storage media may include one or more of volatile memory, non-volatile memory, and / or other persistent and / or auxiliary computer storage media, removable and non-removable computer storage media implemented in any method or technology for storing information (e.g., computer-readable instructions, data structures, program modules, or other data). Thus, computer-readable storage media include media in tangible and / or physical form contained in a device and / or hardware component that is part of a device or external to a device, including, but not limited to: random access memory (“RAM”), static random access memory (“SRAM”), dynamic random access memory (“DRAM”), phase change memory (“PCM”), read-only memory (“ROM”), erasable programmable read-only memory (“EPROM”), electrically erasable programmable read-only memory (“EEPROM”), flash memory, compact disk read-only memory (“CD-ROM”), digital versatile disk (“DVD”), optical cards or other optical storage media, cassettes, magnetic tape, magnetic disk storage, magnetic cards or other magnetic storage devices or media, solid-state memory devices, storage arrays, network attached storage devices, storage area networks, hosted computer storage, or any other storage memory, storage devices, and / or storage media that can be used to store and maintain information for access by a computing device.
[0152] In contrast to computer-readable storage media, communication media may embody computer-readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transmission mechanism. As defined herein, computer-readable storage media does not include communication media. That is, computer storage media does not include communication media consisting only of a modulated data signal, a carrier wave, or a propagation signal itself.
[0153] The communication interface(s) 1206 may represent, for example, a network interface controller ("NIC") or other type of transceiver device to send and receive communications over a network.
[0154] In the illustrated example, computer-readable medium 1204 includes data store 1208. In some examples, data store 1208 includes a data storage device such as a database, a data warehouse, or other type of structured or unstructured data storage device. In some examples, data store 1208 includes a corpus and / or a relational database having one or more tables, indexes, stored procedures, etc. to enable data access, including, for example, one or more of a Hypertext Markup Language ("HTML") table, a Resource Description Framework ("RDF") table, a Web Ontology Language ("OWL") table, and / or an Extensible Markup Language ("XML") table.
[0155] The data store 1208 may store data related to the operations of processes, applications, components, and / or modules stored in the computer-readable medium 1204 and / or executed by the data processing unit 1202 and / or accelerator. For example, in some examples, the data store 1208 may store session data 1212 (e.g., as described in Fig.11 ), participant data 1214 (e.g., associated with a user profile), and / or other data. Session data 1212 can include the total number of participants (e.g., users and / or client computing devices) in the collaboration session, activities occurring in the collaboration session, a list of applications and / or tools available for the collaboration session, smart hooks used on one or more applications in the collaboration session, and / or other data related to how the collaboration session is conducted. Data store 1308 also includes content data 1216, such as the content of communications within the collaboration session.
[0156] Alternatively, some or all of the above data can be stored on a separate memory 1218 on one or more data processing units 1202, such as a memory on a CPU-type processor, a GPU-type processor, an FPGA-type accelerator, a DSP-type accelerator, and / or other accelerator. In this example, the computer-readable medium 1204 also includes an operating system 1220 and (one or more) application programming interfaces 1222 (APIs) that are configured to expose the functions and data of the device 1200 to other devices. In addition, the computer-readable medium 1204 includes one or more modules, such as a server module 1224 (e.g., as in Fig.11 ), the output module 1226 (e.g., as shown in Fig.11 ) and the GUI presentation module 1228 (e.g., as shown in Fig.111140), but the number of modules illustrated is only an example, and the number can be higher or lower. That is, the functions associated with the illustrated modules described in this article can be performed by a smaller number of modules or a larger number of modules on one device, or distributed on multiple devices.
[0157] Illustrative Embodiments
[0158] The following clauses describe a number of possible embodiments for implementing the features described in this disclosure. The various embodiments described herein are not restrictive, nor is every feature of any given embodiment required to appear in another embodiment. Unless the context clearly indicates otherwise, any two or more embodiments may be combined together. The "or" used in this document means "and / or". For example, "A or B" means A without B, B without A, or A and B. As used herein, "comprising" means including all listed features and may include the addition of other features that are not listed. "Substantially consisting of..." means including the listed features and those additional features that do not have a substantial impact on the basic and novel characteristics of the listed features. "Consisting of..." refers only to the listed features and does not include any unlisted features.
[0159] Item 1. A method for fixing an anchor representing content generated by an external application, the method to be performed by a data processing system, the method comprising: rendering an expandable control representing an external application tool in a tool selection element of a canvas, wherein the expandable control is selected based on the data type of the content in the canvas; receiving a selection of the external application tool by interacting with the tool selection element; receiving user input defining a position within the display of the content in the canvas; placing the anchor representing the external application tool at the position; and storing a hook including an identifier of the content, an identifier of the external application tool, and an identifier of the position, so that the anchor representing the external application tool can be placed at the position within the display of the content in the canvas when the content is later opened in the canvas.
[0160] Clause 2. The method of clause 1, wherein the hook further comprises an identifier of a user associated with the selection of the tool.
[0161] Clause 3. The method of any one of clauses 1-2, wherein the position comprises a set of coordinates representing a position on the content in the canvas relative to a coordinate system.
[0162] Clause 4. The method of any of clauses 1-3, wherein the location comprises an identifier of an object in the content in the canvas, and the type of the object is canvas application based.
[0163] Clause 5, the method of any one of clauses 1-4, further comprising: receiving data through a dedicated area of a user interface (UI) of the application, the data defining a configuration of the external application, wherein the data is passed from the application to the external application.
[0164] Clause 6. The method of any one of clauses 1-5, wherein the tool selection element further comprises at least one of: an expandable control representing a canvas tool or an expandable control representing a contextual tool.
[0165] Clause 7, the method of Clause 6, further comprising: in response to opening a type of canvas application, adding the expandable control representing the contextual tool to the tool selection element, wherein the contextual tool provides functionality specific to the type of canvas application.
[0166] Clause 8. The method of clause 7, wherein adding the extensible control representing the contextual tool comprises referencing a manifest associated with the canvas application, the manifest specifying inclusion of the contextual tool on the tool selection element.
[0167] Clause 9. A system comprising: one or more data processing units; and a computer-readable medium having computer-executable instructions encoded thereon, the computer-executable instructions being used to cause the one or more data processing units to: receive an indication from a user to open content in a canvas of an application; obtain from a hook associated with the content an identifier of an external application tool from an external application and an identifier of a location within the display of the content in the canvas where an anchor is to be placed, the anchor representing the external application tool that provides functionality of the external application; open a canvas application configured to render the content in the canvas; open the content in the canvas application; and place the anchor representing the external application tool at the location within the display of the content in the canvas.
[0168] Clause 10. The system of clause 9, wherein the hook comprises a data structure created by the application.
[0169] The system of clause 11, any of clauses 9-10, wherein the position comprises a set of coordinates representing a position on the content in the canvas relative to a coordinate system.
[0170] Clause 12. The system of any of clauses 9-11, wherein the location comprises an identifier of an object in the content in the canvas, and the type of the object is based on the canvas application.
[0171] The system of any one of clauses 13 and clauses 9-12, wherein the instructions further cause the one or more data processing units to create a dedicated area on the canvas associated with the external application tool so that data entered into the dedicated area on the canvas is passed to the external application.
[0172] Clause 14. The system of clause 13, wherein the instructions further cause the one or more data processing units to create the dedicated area on the canvas in response to detecting an interaction with the anchor point representing the external application tool.
[0173] The system of any one of clauses 15 and clauses 9-14, wherein the instructions further cause the one or more data processing units to display tool selection elements within the canvas, the tool selection elements comprising expandable controls representing canvas tools, expandable controls representing contextual tools, and expandable controls representing external application tools.
[0174] A system as described in clause 16 and any one of clauses 9-15, wherein the instructions further cause the one or more data processing units to: determine a category of an application, the category of the application being based on a canvas application currently opened in the canvas; and display a tool selection element on the canvas, the tool selection element including at least one contextual tool associated with the category of the application.
[0175] Clause 17. A system comprising: a unit for rendering an expandable control representing an external application tool of an external application in a tool selection element displayed in a canvas of an application; a unit for receiving a selection of the external application tool from a user through interaction with the tool selection element; a unit for receiving an indication of a location within a display of content in the canvas through a user interface of the application; a unit for placing an anchor representing the external application tool at the location; and a unit for storing a hook, the hook comprising an identifier of the content, an identifier of the external application tool, and an identifier of the location, so that the anchor representing the external application tool can be placed at the location on the canvas application when the content is reopened in the canvas.
[0176] The system of clause 18, clause 17, wherein the position comprises one of: a set of coordinates representing a position on the content in the canvas relative to a coordinate system; or an identifier of an object in the file, the type of the object being based on the canvas application.
[0177] The system of clause 19, any of clauses 17-18, further comprising means for receiving data through the UI of the application defining a configuration of the external application.
[0178] The system of any one of clauses 20 and clauses 17-19, saving the file, wherein the tool selection element also includes an expandable control representing a canvas tool and an expandable control representing a context tool, and further includes: a unit for receiving the context tool based on the canvas application opened in the canvas, wherein the context tool provides functionality specific to the canvas application; and a unit for adding the context tool to the tool selection element.
[0179] in conclusion
[0180] Although the subject matter has been described in language specific to structural features and / or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts are disclosed as example forms of implementing the claims.
[0181] The terms "a", "an", "the" and similar references used in the context of describing the invention (especially in the context of the following claims) should be construed to cover both the singular and the plural, unless otherwise specified herein or clearly contradicted by context. The terms "based on", "based on" and similar references should be construed to mean "based at least in part on", which includes "based in part on" and "based entirely on", unless otherwise specified or clearly contradicted by context.
[0182] It should be understood that any reference to "first", "second", etc. users or other elements in the Summary of the Invention and / or the Detailed Description is not intended to and should not be interpreted as necessarily corresponding to any application of "first", "second", etc. elements in the claims. Rather, any use of "first" and "second" in the Summary of the Invention, the Detailed Description and / or the Claims can be used to distinguish two different instances of the same element (e.g., two different users, two different virtual machines, etc.).
[0183] Certain embodiments are described herein, including the best mode known to the inventor for carrying out the invention. Of course, after reading the above description, variations of these described embodiments will become apparent to those of ordinary skill in the art. The skilled person will know how to appropriately adopt such variations, and the embodiments disclosed herein may be practiced in a manner different from that specifically described. Therefore, all modifications and equivalents of the subject matter recited in the appended claims are included within the scope of this disclosure. In addition, unless otherwise specified herein or clearly contradictory to the context, the present invention encompasses any combination of all possible variations of the above elements.
Claims
1. A method for fixing an anchor representing content generated by an external application, the method to be performed by a data processing system, the method comprising: Opening a canvas app in a canvas, which is a shared content editing workspace, wherein the canvas app is an application accessed in the shared content editing workspace: rendering an expandable control representing an external application tool in a tool selection element of the canvas, wherein the expandable control is selected based on a data type of content in the canvas application, and wherein the tool selection element further comprises an expandable control representing a canvas tool, and an expandable control representing a contextual tool, wherein the canvas tool is a standard tool available for any canvas application, and the contextual tool provides functionality specific to and provided by the canvas application; receiving a selection of the external application tool by interacting with the tool selection element; receiving user input defining a position within the display of the content in the canvas; placing the anchor point representing the external application tool at the location; and A hook is stored including an identifier of the content, an identifier of the external application tool, and an identifier of the location, so that the anchor representing the external application tool can be placed at the location within the display of the content in the canvas when the content is later opened in the canvas.
2. The method according to claim 1, wherein: The position includes a set of coordinates representing a position on the content in the canvas relative to a coordinate system.
3. The method according to claim 1 or 2, wherein: The location includes an identifier of an object in the content in the canvas, and the type of the object is canvas application based.
4. The method of claim 1 or 2, further comprising receiving data through a dedicated area of a user interface (UI) of the canvas application, the data defining a configuration of the external application, wherein: The data is passed from the canvas application to the external application. 5 . The method of claim 1 , further comprising adding the expandable control representing the contextual tool to the tool selection element in response to opening a type of canvas application.
6. The method according to claim 5, wherein: Adding the expandable control representing the contextual tool includes referencing a manifest associated with the canvas application, the manifest specifying inclusion of the contextual tool on the tool selection element.
7. A system comprising: one or more data processing units; as well as A computer readable medium having encoded thereon computer executable instructions for causing the one or more data processing units to: receiving an indication from a user to open content of a canvas application in a canvas, the canvas being a shared content editing workspace, wherein the canvas application is an application accessed in the shared content editing workspace; displaying tool selection elements in the canvas, the tool selection elements comprising an expandable control representing a canvas tool, an expandable control representing a contextual tool, and an expandable control representing an external application tool from an external application, wherein the canvas tool is a standard tool that can be used in any canvas application, and the contextual tool provides functionality that is specific to and provided by the canvas application; obtaining, from a hook associated with the content, an identifier of the external application tool and an identifier of a location within the display of the content in the canvas to place an anchor point, the anchor point representing the external application tool that provides functionality of the external application; opening a canvas application configured to render the content in the canvas; Opening the content in the canvas application; and The anchor point representing the external application tool is placed at the location within the display of the content in the canvas.
8. The system according to claim 7, wherein: The hook includes a data structure created by the canvas application.
9. The system according to claim 7 or 8, wherein: The position includes a set of coordinates representing a position on the content in the canvas relative to a coordinate system.
10. The system according to claim 7 or 8, wherein: The location includes an identifier of an object in the content in the canvas, and a type of the object is based on the canvas application.
11. The system according to claim 7 or 8, wherein: The instructions further cause the one or more data processing units to create a dedicated area on the canvas associated with the external application tool, so that data input in the dedicated area on the canvas can be transferred to the external application.
12. The system according to claim 11, wherein: The instructions further cause the one or more data processing units to create the dedicated area on the canvas in response to detecting an interaction with the anchor point representing the external application tool.
13. The system according to claim 7 or 8, wherein: The instructions further cause the one or more data processing units to: Determining a category of an application, the category of the application being based on the canvas application currently opened in the canvas; as well as A tool selection element is displayed on the canvas, the tool selection element including at least one contextual tool associated with the category of the application.
Citation Information
Patent Citations
System and method for anchoring third party metadata in a document
US20140280384A1
Electronic sticky note system, information processing terminal, method for processing electronic sticky note, medium storing program, and data structure of electronic sticky note
US20150058747A1
System and Method for Using a Third-Party Add-On to Manipulate a Document in a Collaborative Online Software Development Environment
US20150199317A1
Integrated collaboration and communication for a collaborative workspace environment
US20180260366A1