Collaboration applications allow participants who are at different locations to establish and participate in a collaborative conference. Participants often present and exchange information during the conference. Typically, a presenting participant in the conference uses a video or slide projector or software to present information on a screen for viewing by the other participants at the same location as the presenting participant. But, the participants who are at the other locations are typically provided paper copies of the presentation.
The advent of computer networking has made it possible for the participants at the various locations to communicate with each other during the conference. For example, the participants of the conference at the different locations can establish network connections using their computing devices, such as laptop computers or handheld devices, and use their computing devices to share information during the conference using their computing devices.
Even though the participants are able to connect to each other, the process of sharing information is not very easy. Typically, a participant wanting to share an item of information uses a file transfer application to transmit the information to another participant. If the sharing participant wants to share the information with more than one participant, the sharing participant typically attaches the information to an email message addressed to the participants who are to receive the information and sends the email message to the addressed participants. While the information can be sent to the participants prior to the conference, often times, there will arise a need to send information during the conference, in which case the addressed participants will receive the transmitted information or email message and the attached information sometime during the conference, and will need to retrieve the shared information also during the conference. Consequently, sharing information during a conference is a source of distraction to the participants. Furthermore, sharing information amongst the conference participants during a conference is difficult and cumbersome.
Techniques for providing a shared clipboard to participants in a conversation are provided. The shared clipboard is specific to the conversation to which it is associated in that the shared clipboard does not “spill over” from one conversation to another. When a conversation between two or more participants is established, a shared clipboard becomes available to the participants of the conversation. The shared clipboard facilitates the sharing of data between the participants in the conversation. During the conversation, each participant in the conversation is provided access to the shared clipboard, including its contents. When a participant joins or is added to the conversation, the added participant is also provided access to the shared clipboard and its contents.
The Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
Various techniques for providing a shared clipboard to participants in a conversation are provided. The shared clipboard is specific to the conversation to which it is associated in that the shared clipboard does not “spill over” from one conversation to another. When a conversation, such as, by way of example, instant messaging, public switched telephone network (“pstn”) telephone, web or online conferencing, audio/video conferencing, document sharing, and other forms of conferencing, between two or more participants is established, a shared clipboard becomes available to the participants of the conversation. During the conversation, each participant in the conversation is provided access to the shared clipboard, including its contents. When a participant joins or is added to the conversation, the added participant is also provided access to the shared clipboard and its contents. When a participant in a conversation leaves the conversation, this participant is no longer provided access to the shared clipboard. When the conversation ends, the participants in the conversation may no longer be provided access to the shared clipboard.
In some embodiments, a client collaboration application creates a shared clipboard for use by a participant in a conversation upon establishing or creating the conversation. The client collaboration application that is executing on the client computing system, and which is used by the participant to participate in the conversation may provide its participant a conceptual view of the shared clipboard. Conceptually, there is one shared clipboard for a conversation to which each participant in the conversation shares access. For example, the client collaboration application may provide a visual rendering of the shared clipboard as a delimited or separate extension of an existing clipboard on the client computing system. In another example, the client collaboration application may provide a rendering of the shared clipboard as a separate clipboard associated with, for example, a user interface of the client collaboration application. The rendering of the shared clipboard on the client computing system can be made visual.
The participants in a conversation may access the contents of the shared clipboard by interacting with the visual rendering of the shared clipboard on their client computing systems. For example, participants in a conversation may place an object (i.e., item of information) on the shared clipboard by placing the object on the visual rendering of the shared clipboard on the client computing system. Participants in the conversation may then retrieve a copy of an object on the shared clipboard by performing a retrieval operation on the object from the visual rendering of the shared clipboard on the client computing system. In some embodiments, the shared clipboard may coordinate itself with one or more other clipboards, such as a system clipboard, on the client computing system. In this instance, the participants can access the contents of the shared clipboard using existing system clipboard commands paste (e.g., CTRL-C) and paste (e.g., CTRL-V). For example, one participant in a conversation may copy using CTRL-C a range of cells from a spreadsheet they have shared with all participants via application sharing allowing the other participants to paste the range into their various local spreadsheet files using CTRL-V. In this scenario, a visual representation of the shared clipboard need not be displayed.
In this manner, the collection of the shared clipboards on each of the client computing systems used by the participants in a conversation comprise or make up the distributed shared clipboard for the conversation.
In some embodiments, the client collaboration application may periodically “refresh” the shared clipboard (whether the shared clipboard is visually rendered or not visually rendered on the client computing system) to provide an accurate view of the contents on the shared clipboard. For example, a client collaboration application of a participant in a conversation may periodically query the client collaboration applications of the other participants in the conversation for information regarding the rendering of the shared clipboard on their client computing systems.
In some embodiments, objects are checked for access rights prior to being placed on the shared clipboard. For example, an object may contain or have associated with it digital rights or other permissions that restrict the object from being shared. In these instances, if one of the participants in the conversation does not have rights to the object, the object is prevented from being placed on the shared clipboard.
In some embodiments, the contents on the shared clipboard of a conversation may be temporarily cached on a client computing system after the termination of the conversation at the client computing system. For example, the contents may be temporarily cached for a predetermined amount of time. While the contents are temporarily cached, the participant may access the “archive” of the shared clipboard to, for example, remind him or herself of what was shared, during what conversation, recall object that the participant obtained in a conversation but somehow lost, and so on.
In some embodiments, the shared clipboard on the client computing system provides “clipboard presence” information in that the shared clipboard (whether or not it is visually rendered) shows who is doing what to the shared clipboard. Clipboard presence provides a view of how the other participants in the conversation are interacting with the shared clipboard. For example, a participant in a conversation is able to see when another participant in the conversation copies an object from the shared clipboard.
In the discussion that follows, the various embodiments of the techniques for providing a shared clipboard are described in conjunction with a variety of well known operations such as “drag-and-drop,” “cut,” “copy,” “paste,” etc., and their effects on a system clipboard as supported on computing systems executing any of a variety of well-known operating systems, such as any of the MICROSOFT WINDOWS operating systems. Even though the various embodiments of the techniques for providing a shared clipboard are described in conjunction with the aforementioned operations and their effects on a system clipboard, it will be appreciated that the techniques of providing a shared clipboard are not to be limited to working only with the aforementioned operations and the system clipboard. One of ordinary skill in the art will appreciate that the techniques for providing the shared clipboard may be readily implemented on computing systems that may support operations on objects that are different than those mentioned above and/or may not support a system clipboard. For example, the operations on the shared clipboard may be provided by performing drag-and-drop operations on the visual rendering of the shared clipboard on the client computing systems (e.g., a participant in a conversation can select and object and drag the object onto the visual rendering of the shared clipboard to place the object in the shared clipboard; a participant in a conversation can select an object on the visual rendering of the shared clipboard and drag the object from the visual rendering of the shared clipboard to a desired application, object, etc. to retrieve the object from the shared clipboard).
In general terms, each client computing system allows a user, such as a human user, to participate in one or more conversations. For example, a person can use a client collaboration application program that is executing on his or her client computing system to participate in a conversation or multiple conversations. As depicted in
When a conversation starts, a shared clipboard is created and made available to the persons participating in the conversation. For example, shared clipboard 104a is made available to the persons participating in conversation 10 at client computing systems 102a and 102b. Likewise, shared clipboard 104b is made available to the persons participating in conversation 20 at client computing systems 102b-e.
The shared clipboard for a conversation is rendered on each of the client computing systems of the persons participating in the conversation. For example, as depicted in
During the conversation, anything that a participant in the conversation cuts or copies is placed on the shared clipboard for the conversation. Participants who paste during the conversation paste from the shared clipboard. As is generally known and as is generally supported by most document editing applications and most operating systems: a cut operation saves a selected part of a document or object in a temporary buffer (e.g., a clipboard) while deleting the selected part or object; a copy operation saves a selected part of a document or object in a temporary buffer while leaving the document or object unchanged; and a paste operation inserts data from the clipboard at a current position in the document, file, folder, other object, etc. When a participant leaves the conversation or the conversation ends, the shared clipboard for that conversation goes way—i.e., the shared clipboard for that conversation is no longer rendered on the participant's client computing system. When a participant joins an existing conversation, the shared clipboard for the conversation is rendered on the joining participant's client computing system, thus allowing the participant to paste from and cut/copy to the shared clipboard just as if the participant had been in the conversation from the beginning. For example, the joining participant's client collaboration application may retrieve a copy of the shared clipboard from the client collaboration application with which the joining participant's client collaboration application established a collaboration session with to join the conversation.
In some embodiments, a participant in a conversation interacts with the shared clipboard for the conversation by performing cut, copy, paste, and drag-and-drop operations on his or her client computing system while participating in the conversation. When a participant in a conversation performs a cut operation, the cut operation takes the currently selected object or objects and places them on the participant's rendering of the shared clipboard for the conversation. The participant's rendering of the shared clipboard may then push the currently selected object or objects to the system clipboard of each participant in the conversation. The participant's rendering of the shared clipboard may also push the currently selected object or objects to each conversation participant's rendering of the shared clipboard. When the conversation ends, the system clipboard of the last participant in the conversation to cut an object or objects to the shared clipboard may not be restored because the cut operation is a destructive operation, while the system clipboard for all other participants in the conversation may be restored to the state it was in when the conversation began.
When a participant in a conversation performs a copy operation, the copy operation takes the currently selected object or objects and places them on the participant's rendering of the shared clipboard. The participant's rendering of the shared clipboard may then push the currently selected objects or objects to the system clipboard of each participant in the conversation. The participant's rendering of the shared clipboard may also push the currently selected object or objects to each conversation participant's rendering of the shared clipboard. When the conversation ends, the system clipboard for the participants in the conversation may be restored to the state it was in when the conversation began.
When a participant in a conversation performs a paste operation, the paste operation inserts a copy of the object or objects on the participant's system clipboard at a current position specified by the participant. A “paste link” operation may not render a meaningful result. Pasting a link to an object instead of the object itself may not result in a meaningful link address because the systems of the other participants in the conversation are only temporarily connected by virtue of the conversation taking place, and because the shared clipboard may not persist after the conversation ends. However, the operation may be allowed in which case the system may make no attempt to resolve the link in a meaningful way.
When a shared clipboard is made visible (i.e., visibly rendered), any object can be dragged to the shared clipboard. Participants in the conversation can drag and drop anything to the shared clipboard, for example, from an entire database or file of any type to a single spreadsheet cell. Similarly, any participant in the conversation can drag an object from the shared clipboard and drop it on any application or other suitable location.
A person may participate in multiple conversations at one time. For example, the person at client computing system 102b in
In some embodiments, when the first conversation on a client computing system is started, the shared clipboard (i.e., the rendering of the shared clipboard) for the first conversation on the client computing system saves off the contents of the system clipboard. When the conversation ends on the client computing system, the system clipboard is restored. When the shared clipboard goes away or is cleared, any objects that have been pushed to the system clipboard by the shared clipboard are also cleared. When multiple, simultaneous conversations are taking place on a client computing system, the shared clipboards for each conversation may need to cooperate to ensure that the first shared clipboard to be created saves the system clipboard, and the last conversation to end on the client computing system restores the system clipboard.
Referring again to
The client computing system may include one or more central processing units, memory, input devices (e.g., keyboard and pointing devices), output devices (e.g., display devices), and storage devices (e.g., disk drives). The memory and storage devices are computer-readable media that may contain instructions that implement the various techniques for providing a shared clipboard to participants in a conversation, described herein. In addition, the data structures and message structures may be stored or transmitted via a data transmission medium, such as a signal on a communications link. Various communication links may be used, such as the Internet, a local area network, a wide area network, a point-to-point dial-up connection, a cell phone network, and so on. One of ordinary skill in the art will appreciate that the computing systems may be of various configurations having various components.
Embodiments of the described techniques may be implemented in various operating environments that include personal computers, server computers, computing devices, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, programmable consumer electronics, digital cameras, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and so on. The computing systems may be cell phones, personal digital assistants, smart phones, personal computers, programmable consumer electronics, digital cameras, kiosks, ATMs, and so on.
The various techniques for providing a shared clipboard to participants in a conversation may be described in the general context of computer-executable instructions, such as program modules, executed by one or more computers or other devices. Generally, program modules include routines, programs, objects, components, data structures, and so on that perform particular tasks or implement particular abstract data types. Typically, the functionality of the program modules may be combined or distributed as desired in various embodiments.
One skilled in the art will appreciate that, for this and other processes and methods disclosed herein, the functions performed in the processes and methods may be implemented in differing order. Furthermore, the outlined steps are only exemplary, and some of the steps may be optional, combined with fewer steps, or expanded into additional steps.
In some embodiments, the shared clipboard, by virtue of being shared, knows the identities of the participants in the conversation. Knowing the identities of the participants in the conversation, the shared clipboard is able to perform the access control check on the object to ensure that all participants in the conversation have rights to access the object. For example, the object itself may carry digital rights that restrict the current holder of the object from sharing the object (i.e., placing the object on the shared clipboard), or the object may carry or have associated with it permissions by, for example, role or user. The shared clipboard checks the digital rights and/or permissions associated with the object to ensure that all the participants in the conversation have rights to access the object prior to allowing the object to be placed on the shared clipboard.
In some embodiments, there are no permissions associated with the shared clipboard other than that the shared clipboard is shared only by the participants in the specific conversation to which the shared clipboard belongs. In these embodiments, the shared clipboard does not perform an access control check on the object, and any participant in the conversation can place objects on the shared clipboard (e.g., cut, copy, or drag) or retrieve objects from the shared clipboard (e.g., paste, or drag).
In some embodiments, the shared clipboard selectively performs an access control check. For example, some objects may know how to selectively display themselves to users based on user identity. Here, the shared clipboard may not perform an access control check on these objects, but perform an access control check on objects that do not know how to selectively display themselves to users based on user identity.
In block 506, the shared clipboard checks to determine if the access control check on the object passed. If the access control check did not pass, the shared clipboard does not allow the object to be placed on the shared clipboard and, in block 514, reports the error. For example, the shared clipboard may display a window containing an error message informing of the failed access control check on the object.
Otherwise, if, in block 506, the shared clipboard determines that the access control check passed, then, in block 508, the shared clipboard performs a security threat check on the object. In some embodiments, the shared clipboard may check for a security threat, such as, by way of example, a virus, worm, Trojan horse, or other compromising feature, by invoking, for example, a virus checking software component on the client computing system to check the object for the presence of a security threat.
In block 510, the shared clipboard checks to determine if the security threat check on the object passed. If the security threat check did not pass, the shared clipboard does not allow the object to be placed on the shared clipboard and, in block 514, reports the error. For example, the shared clipboard may display a window containing an error message informing of the failed security threat check on the object. Otherwise, if, in block 510, the shared clipboard determines that the security threat check passed, then, in block 512, the shared clipboard allows the object to be placed on the shared clipboard.
In some embodiments, when a participant in a conversation places an object on the shared clipboard, an image representing the object appears on the visual renderings of the shared clipboard on the client computing systems of the participants in the conversation, and a copy of the object is written out (i.e., proactive push) to the client computing systems of the other participants in the conversation.
In some embodiments, when a participant in a conversation places an object on the shared clipboard, an image representing the object may appear on the visual renderings of the shared clipboard (i.e., lazy pull) on the client computing systems of the participants in the conversation, but a copy of the object is not written out to the client computing systems. For example, the visual rendering may be a link to the object placed on the shared clipboard. Subsequently, when a participant in the conversation retrieves an object from the visual rendering of the shared clipboard, the collaboration application on the client computing system may use the link to download or retrieve a copy of the object from the object's storage location (e.g., the client computing system of the participant that placed the object on the shared clipboard).
In these embodiments, if the participant who placed an object on the shared clipboard leaves the conversation, the object may be proactively pushed to the client computing systems of the participants in the conversation. In some embodiments, the object may be written out to a storage location that is accessible by the other participants in the conversation. In some embodiments, if the participant who placed an object on the shared clipboard leaves the conversation, the object may be represented by a “tombstone” on the rendering of the shared clipboard on the client computing systems of the participants in the conversation. The tombstone indicates that the object is no longer available to the participants in the conversation.
In some embodiments, when a participant in a conversation places an object on the shared clipboard, the object may either be proactively pushed or provided for a subsequent lazy pull operation based on the size of the object. For example, objects that are of a small size, for example, objects smaller than 10K bytes, may be proactively pushed to the client computing systems of the participants in the conversation. Conversely, if the object is larger, an image representing the object may appear on the visual renderings of the shared clipboard on the client computing systems of the participants in the conversation, but a copy of the object is not written out to these client computing systems.
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 described above are disclosed as example forms of implementing the claims.
Number | Date | Country | |
---|---|---|---|
Parent | 11242606 | Oct 2005 | US |
Child | 12955822 | US |