When using computer systems, it is sometimes beneficial to execute multiple computer applications in cooperation with each other. For example, one application may be suitable for performing a specialized function that cannot be performed by a second application, which in turn performs a function that cannot be performed by the first application, but which utilizes output produced by the first application. In other situations, data generated as output by one application may be needed immediately thereafter as input for another program, so that both applications must be executed in sequence or perhaps simultaneously. Situations where it is desired to operate multiple independent applications together may arise, for example, where a company owns legacy computer applications that are to be used in cooperation with new applications that were obtained through purchase or by virtue of acquisition or merger with another company.
In a conventional computer operating system with windowing features, multiple computer applications may be launched to independently execute at the same time, in respective application windows of the operating system. With a different window for each application, a user may take action by moving from application window to application window in the operating system, and by performing necessary functions in the respective application windows. Such operation, however, can be cumbersome and inefficient. In that scenario, each application must be identified and launched by the user. Different applications may utilize different data input and output schemes, and may use different menus with different user interfaces. This is not convenient for the user, who must jump from application window to application window, and is far from the seamless user experience that is desired for applications within a window operating system.
Some applications that are produced by a single vendor may comprise a suite of applications with a user interface that is common across the applications in the suite. For example, the “Office 2010” and “Office 2007” application suites from Microsoft Corporation of Redmond, Wash., USA provide applications for word processing, spreadsheet, presentation functions, and the like so as to provide a common user interface among the applications in each suite. These suites of applications utilize the “Object Linking and Embedding” (OLE) scheme of the “Microsoft Windows” operating system that permits a user to add different kinds of data to a document from different applications. For example, a user may execute a text editor application to import a graphic image from an image editor application. This creates a compound document. Unfortunately, in such suites, the degree of integration is generally dependent on the wishes of the suite vendor, not the user, and the application integration is not available for applications outside of the suite. The applications in the “Office 2010” and “Office 2007” suites, for example, generally utilize shared libraries referred to as dynamic linked libraries (DLL), or the “.NET framework” for more recent “Windows” operating systems, through which multiple applications share a common set of library files for operation of applications. Similar integration between application programs of a suite from a single vendor are provided by, for example, the “Creative Suite” applications that are available from Adobe Systems Incorporated of San Jose, Calif., USA.
Other techniques for providing cooperative execution of multiple programs and obtaining the benefits of the respective functions involve creating a single replacement application that incorporates the functions and features of all the previously independent computer applications. Incorporating features and functions from multiple independent applications into a single application can be quite complicated and can require generating many lines of source code. Such program creation efforts require significant resources and can require a great deal of time to complete. Moreover, such efforts must be duplicated each time an application is to be included in the integrated combination, or deleted from the combination.
It would be advantageous if users could independently select computer applications for cooperative execution to provide the user with a seamless operational experience without the need for producing significant programming efforts. This type of cooperative operation among multiple independent computer applications can provide a seamless integration of the applications that otherwise operate as independent processes that are external to each other.
A parent computer application interacts with one or more independently operating embedded child applications so as to provide an integrated seamless operating environment in which the embedded child applications are presented through the user interface of the parent application and may be controlled through the parent application. As disclosed herein, a computer operating system provides a user interface presented on a display of a computer system in which a plurality of computer applications are installed such that each computer application is operable as a program hosted by the operating system and is allocated its own respective memory space by the operating system, and includes a library that is utilized for its operation, and such that the operating system designates only one of the computer applications as an active application at any time. One of the installed computer applications comprises a parent application and one or more of the remaining installed computer applications comprise embedded child applications of the parent application such that the parent application designates itself as the parent application to all the embedded child applications, and the parent application detects when one of the embedded child applications is not running and, in response, launches the not running embedded child application for operation, and wherein the parent application changes display attributes in the operating system of itself and the embedded child applications to ensure that the parent application and the embedded child applications are displayed as a single integrated application. In this way, multiple independently operable embedded child applications can be viewed through, and controlled by, the user interface of the parent application.
In one embodiment, the parent application detects when one of the embedded child applications is the active application of the operating system, and in response changes a parent application attribute to ensure that the parent application and the embedded child applications are displayed as a single integrated application, such that the parent application attribute that is changed comprises denoting that the parent application is parent to all child windows of the embedded child applications. Thus, a child window of a child application is understood by the operating system to be a child window of the parent application.
In another aspect, the parent application determines when any one of the embedded child applications is the active application of the operating system and, in response, the parent application changes an attribute in the operating system to indicate in the operating system that the parent application is to be illuminated. In this way, the parent application remains illuminated so as to appear to be the active application, even when one of the embedded child applications is the active application of the operating system.
In another aspect, the parent application receives event notifications from the embedded child applications through a unidirectional communication channel, wherein the parent application is notified of events in the respective embedded child applications. In another aspect, the parent application provides commands to the embedded child applications through a bidirectional communication channel.
Other features and advantages of the present invention will be apparent from the following description of the embodiments, which illustrate, by way of example, the principles of the invention.
The operating system may provide a GUI environment, such as a windowing environment, and designates only one of the installed computer application programs as an active application at any time. The installed applications are independently operable, in accordance with their separate memory space and program libraries. Those skilled in the art will understand that the active application of an operating system is the application program for which the processor of the computer system is actively performing operations and with which the user may currently interact.
A windowing operating system as depicted in
The parent-child relationship of the application windows is important to the operating system for determining details of how each window will be displayed. For example, in a windowing operating system, a parent window generally determines display attributes of child windows that are opened and that are based on the parent application. A parent window of an application is generally the window to which event notifications from child windows of the application are directed by the operating system. In the illustrated system of
In accordance with the embedded child applications described herein, the computer system hosts multiple installed computer applications, wherein one of the installed computer applications comprises a parent application, and one or more of the remaining installed computer applications comprise embedded child applications of the parent application such that the parent application designates itself as the parent application to all the embedded child applications. In addition, the parent application detects when one of the embedded child applications is not running and, in response, launches the not running embedded child application for operation. The parent application also changes display attributes in the operating system of itself and the embedded child applications to ensure that the parent application and the embedded child applications are displayed as a single integrated application.
More particularly, a parent application as used herein refers to an installed computer application that acts as a host for one or more additional installed computer applications that comprise embedded child applications, which are displayed and controlled in the operating system such that the parent application and embedded child applications provide a seamless programming experience and interface for a user of the computer system. In accordance with the integrated, seamless operation, the user can control the parent application and child applications through the interface of the parent application without leaving the operation of one application to take up the operation of the next. That is, the parent application and additional embedded child applications are controlled by the user as if they were a single, integrated application rather than comprising two independently operating applications. Nevertheless, the embedded child applications are still capable of being independently operated within the operating system, outside of the parent application.
The parent application achieves the features described herein through execution during operation that re-parents the child applications and the child application windows to the parent application. That is, the parent application, when executed, will detect when one of the embedded child applications is not running and, in response, will launch the not-running embedded child application for operation. The parent application will communicate with the operating system so that windows of the child applications will be child windows of the parent application, rather than child windows of their respective embedded child applications. The parent application achieves this by mapping the commands, such as menu items, of each of the embedded child applications to corresponding menu items of the parent application. The possible commands and menus and windows of the child applications may be determined even without analysis of source code through many different techniques, which will be known to those skilled in the art. In this way, when a user wants to control an embedded child application, the user simply selects an appropriate child application command from the menu of the parent application. The parent application provides the selected command to the operating system, with information that will direct the selected command from the operating system to the appropriate embedded child application. In this way, the embedded child application will take the action desired by the user through execution of the selected command, as provided through the parent application.
For example, an embedded child application may be launched by the parent application in a .NET framework by using program code in the parent application such as the following code listed in Table 1:
A “MyProcess” call would be executed by the parent application for each installed application to be an embedded child application. Those skilled in the art will be able to produce code suitable for other operating systems, in view of the exemplary code of Table 1.
In operation, when the parent application is launched, it checks to determine if all its embedded child applications are running For each embedded child application that is not already executing, the parent application will launch the child application and will re-parent that application as noted. For each embedded child application that is already executing, the parent application will re-parent that application as noted. Thus, the embedded child applications can be launched and executed independently of the parent application (that is, they may be used independently of the parent application), but the parent application will, upon launch, assume control over any executing child applications and will launch any non-running child application.
The parent application may also implement other desired changes in the way in which the embedded child applications are displayed and modified. For example, the task bar 204 in
The parent application also processes display modification commands from the user to ensure a seamless, integrated experience in utilizing the embedded child applications through the parent application. As noted above, repositioning and resizing the parent application window 210 will automatically reposition and resize the corresponding embedded child application windows 206, 208. In addition, during operation, modality of the child applications is appropriately controlled. For example, if an embedded child application is displaying a modal dialog box, then the parent application needs to be disabled from receiving modifications or commands so the user can attend to the dialog box. That is, the application behaves modally to ensure a response to the dialog box is received from the user before continuing with operation.
For each of the communication channels 312, 314, the communications from either the parent application 302 or the child application 306 are carried by the operating system between the interface points illustrated in
An example of the processing for handling messaging between the parent application and an embedded child application for events, notifications, and the like is provided in the pseudo code listed below in Table 2:
In the pseudo code of Table 2, the “Server” corresponds to the application providing communication of a notification or command or other communication, and the “Client” corresponds to the application receiving the communication. For example, in the case of a communication from the parent application to the embedded child application, such as illustrated in
In the next operation, represented by the flow diagram box numbered 404, the parent application re-parents the embedded child applications. When the parent application is launched by a user, the executable instructions of the parent application cause the installed applications that were launched by the parent application in 402 to be re-parented to the parent application. That is, any child windows that are generated by the respective child applications will be registered with the operating system as child windows of the parent application, not as child windows of the child application.
The next operation, represented by the flow diagram box 406, comprises the user interacting with the parent application, such that the parent application receives user inputs for modifications to an embedded child application of the operating system. For example, in the case of the simple scenario depicted in
In the next operation, represented by the flow diagram box 408 in
“Mitchell Estimating” installed application illustrated in
A variety of hardware configurations can be used for the computer systems described above. For example, conventional server and desktop computers can be used for the computer system 100 and 300. In the illustrated embodiment, the computer systems may operate any of a variety of windowing computer operating systems, such as “Windows 7” or “Linux” or the like, that provide a graphical user interface (GUI). Other details of construction and operation will occur to those skilled in the art in view of the description herein. Those skilled in the art will appreciate that a wide variety of operating systems can provide a suitable environment for execution of the operations described herein. Thus, any computer device that can perform the operations described herein can be utilized in a managed network system constructed in accordance with the invention.
The computer system 2110 includes a central processor unit 2116 (CPU) and a program product reader 2118 for receiving a program product media and reading program instructions recorded thereon. The computer system also includes associated memory 2120 and input/output facilities 2122, such as a display for output and a keyboard and/or mouse for input. The processor 2116 of the computer system 2110 can receive program instructions into the program memory of the processor. The program instructions can be received directly, such as by flashing EEPROM of the processor, or can be received through the network interface 2112, such as by download from a connected device or over a WAN or LAN network communication. If desired, the program instructions can be stored on a computer program product 2114 that is read by the computer system 2110 so that the program instructions can thereafter executed. That is, the program product 2114 is for use in a system such as the computer system 2110, wherein the program product comprises a tangible, non-transitory recordable media containing a program of computer-readable instructions that are executable by the device processor 2104 to perform the operations described herein. The program product 2114 can comprise, for example, optical program media such as CD or DVD data discs, or flash memory drives, or external memory stores, or floppy magnetic disks, and the like.
The present invention has been described above in terms of presently preferred embodiments so that an understanding of the present invention can be conveyed. There are, however, many configurations for network devices and management systems not specifically described herein but with which the present invention is applicable. The present invention should therefore not be seen as limited to the particular embodiments described herein, but rather, it should be understood that the present invention has wide applicability with respect to network devices and management systems generally. All modifications, variations, or equivalent arrangements and implementations that are within the scope of the attached claims should therefore be considered within the scope of the invention.