BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 illustrates an exemplary screen shot of an illustrative conventional tabbed browser;
FIG. 2 is a flow diagram illustrating an exemplary inter-process communication technique for automatically launching a child browser from an existing parent browser;
FIG. 3 is a flow chart describing an exemplary inter-process communication process of FIG. 2 in further detail;
FIG. 4 is a flow chart describing an alternative exemplary inter-process communication process of FIG. 2 in further detail;
FIG. 5 is a flow diagram illustrating an exemplary inter-process communication technique for automatically launching another application from an existing browser;
FIG. 6 is a flow chart describing an exemplary inter-process communication process of FIG. 5 in further detail; and
FIG. 7 is a flow chart describing an alternative exemplary inter-process communication process of FIG. 5 in further detail.
DETAILED DESCRIPTION
The present invention provides methods and apparatus for automatically launching an application from a browser. The present invention allows a user to drag a tab from a browser to create a new browser or another application containing the content associated with the selected tab. According to a first aspect of the invention, inter-process communication (IPC) techniques are employed for automatically launching a selected tab in a child browser from an existing parent browser. For example, the selected tab can be dragged outside of an existing browser to automatically launch a new browser with the selected content, or the selected content can be dragged from a first browser to another existing browser.
According to another aspect of the invention, inter-process communication techniques are employed for automatically launching a selected tab in another application from an existing browser. For example, a user can drag an application specific tab from a browser outside the browser to launch the corresponding application, or the user can drag an application specific tab from a browser outside the browser to an existing application.
FIG. 1 illustrates an exemplary screen shot of an illustrative conventional tabbed browser 100. The tabbed browser 100 may be embodied, for example, as tabbed versions of Microsoft Internet Explorer, Konqueror, FireFox, or an Opera browser. As shown in FIG. 1, the tabbed browser 100 has a plurality of tabs 110-1 through 110-3, each with an associated web page. The tabs 110 allow a user to switch between different content, for example, by clicking on a desired tab with a mouse. When a given tab is selected, such as tab 110-1 in FIG. 1, the content associated with the tab 110-1 is presented to the user in the corresponding viewing pane 120-1.
FIG. 2 is a flow diagram illustrating an exemplary inter-process communication technique 200 for automatically launching a selected tab in a new or existing child browser 230 from an existing parent browser 210. As shown in FIG. 2, an IPC process 300 or 400, as discussed further below in conjunction with FIGS. 3 and 4, respectively, clones the object associated with the parent browser 210, including all session information for the selected tab. In this manner, a selected tab can be dragged outside of an existing browser 210 to automatically launch a new browser 230 with the selected content (FIG. 3), or the selected content can be dragged from a first browser 210 to another existing browser 230 (FIG. 4).
As shown in FIG. 2, the IPC processes 300, 400 use a memory 220 for inter-process communication of data to store the cloned object and session information 275. The memory 220 for inter-process communication may be embodied, for example, as a shared memory, a temporary file on a disk, or a temporary file in memory (or some combination thereof). The exemplary session information 275 identifies the user and server associated with the session information, and includes the session identifier assigned by the server to identify the user for the session.
FIG. 3 is a flow chart describing an exemplary implementation of the inter-process communication process 300 of FIG. 2 in further detail. As shown in FIG. 3, the IPC process 300 initially monitors during step 310 to detect when the user drags a selected tab from an existing browser to a point outside the existing browser. When the IPC process 300 determines that the user has dragged a selected tab from an existing browser to a point outside the existing browser, program control proceeds to step 320 where the parent browser object is cloned, including all session information for the selected tab, creating the child browser. Thereafter, the child browser closes all other open tabs during step 330, retaining only the selected tab. Finally, the parent browser deletes the session information and closes the selected tab during step 340.
FIG. 4 is a flow chart describing an alternative implementation of the inter-process communication process 400 of FIG. 2 in further detail. As shown in FIG. 4, the IPC process 400 initially monitors during step 410 to detect when the user drags a selected tab from a first existing browser to a second existing browser. When the IPC process 400 determines that the user has dragged a selected tab from a first existing browser to a second existing browser, program control proceeds to step 420 where the object associated with the selected tab from the first browser, and any session information, is cloned into a memory 220 for IPC.
The second browser instantiates a new empty tab during step 430 and copies the object information from the memory 220 for IPC into a new empty tab during step 440. Finally, the first browser deletes the selected tab and session information (or closes if the selected tab was the only tab) during step 450.
FIG. 5 is a flow diagram illustrating an exemplary inter-process communication technique 500 for automatically launching a selected tab in another application from an existing browser. As shown in FIG. 5, an IPC process 600 or 700, as discussed further below in conjunction with FIGS. 7 and 8, respectively, writes the contents 575 of the application specific tab associated with the browser 510 into a memory 520 for IPC. In this manner, a selected tab can be dragged outside of a browser 510 to automatically launch a new application 530 appropriate for the selected content (FIG. 6), or the selected content can be dragged from a browser 510 to an existing application 530 (FIG. 7). The application may be, for example, Microsoft Word, Microsoft Excel, Microsoft PowerPoint, Visio, or Adobe Acrobat.
FIG. 6 is a flow chart describing an exemplary inter-process communication process 600 of FIG. 5 in further detail. As shown in FIG. 6, the IPC process 600 initially monitors during step 610 to detect when the user drags an application specific tab from an existing browser to a point outside the existing browser. When the IPC process 600 determines that the user has dragged an application specific tab from an existing browser to a point outside the existing browser, program control proceeds to step 620 where the contents of the selected tab are written to the memory 520 for IPC, typically with lock protection.
A new instance of the application corresponding to the content of the selected tab is created during step 630. For example, the file extension of the content from the selected tab can be analyzed to determine an appropriate application for the content, in a known manner. The contents from the memory 520 for IPC are loaded into the new application instance during step 635.
The lock is then transferred from the browser to the new application during step 640. Finally, the browser closes the selected tab and deletes all associated information, removing reference to the memory 520 for IPC during step 650.
FIG. 7 is a flow chart describing an alternative exemplary inter-process communication process 700 of FIG. 5 in further detail. As shown in FIG. 7, the IPC process 700 initially monitors during step 710 to detect when the user drags an application specific tab from an existing browser to another application. When the IPC process 700 determines that the user has dragged an application specific tab from a first browser to another application, program control proceeds to step 720 where the contents of the selected tab are written to the memory 520 for IPC, typically with lock protection. The second application 530 then instantiates a new document of the indicated document type during step 730 and loads the contents from the memory 520 for IPC into the new document during step 740.
The lock from is transferred from the browser 510 to the application 530 during step 750. Finally, during step 760, the browser 510 closes the selected tab and deletes any associated information, including removing any reference to the memory 520 for IPC.
While the figures herein show an exemplary sequence of steps, it is also an embodiment of the present invention that the sequence may be varied. Various permutations of the algorithms are contemplated as alternate embodiments of the invention.
System and Article of Manufacture Details
As is known in the art, the methods and apparatus discussed herein may be distributed as an article of manufacture that itself comprises a computer readable medium having computer readable code means embodied thereon. The computer readable program code means is operable, in conjunction with a computer system, to carry out all or some of the steps to perform the methods or create the apparatuses discussed herein. The computer readable medium may be a recordable medium (e.g., floppy disks, hard drives, compact disks, or memory cards) or may be a transmission medium (e.g., a network comprising fiber-optics, the world-wide web, cables, or a wireless channel using time-division multiple access, code-division multiple access, or other radio-frequency channel). Any medium known or developed that can store information suitable for use with a computer system may be used. The computer-readable code means is any mechanism for allowing a computer to read instructions and data, such as magnetic variations on a magnetic media or height variations on the surface of a compact disk.
The computer systems and servers described herein each contain a memory that will configure associated processors to implement the methods, steps, and functions disclosed herein. The memories could be distributed or local and the processors could be distributed or singular. The memories could be implemented as an electrical, magnetic or optical memory, or any combination of these or other types of storage devices. Moreover, the term “memory” should be construed broadly enough to encompass any information able to be read from or written to an address in the addressable space accessed by an associated processor. With this definition, information on a network is still within a memory because the associated processor can retrieve the information from the network.
It is to be understood that the embodiments and variations shown and described herein are merely illustrative of the principles of this invention and that various modifications may be implemented by those skilled in the art without departing from the scope and spirit of the invention.