Cross version and cross product user interface

Information

  • Patent Grant
  • 7886290
  • Patent Number
    7,886,290
  • Date Filed
    Thursday, June 16, 2005
    19 years ago
  • Date Issued
    Tuesday, February 8, 2011
    13 years ago
Abstract
When a user interface of a parent software application is modified such that user interface components of an add-in application are not compatible with the parent application user interface, user interface components associated with functionalities of the add-in application are added to the modified parent application user interface. A prior user interface of the parent application to which the add-in application user interface components are added is run in a background of the parent application and is not visible to users. User interface components in the parent application user interface are linked to corresponding add-in application user interface components in the prior user interface. Selection of a user interface component from the present user interface that is associated with an add-in application functionality causes selection of a corresponding user interface component in the background user interface, and the associated add-in functionality is executed.
Description
BACKGROUND

With the advent of the computer age, computer and software users have grown accustomed to user-friendly software applications that help them write, calculate, organize, prepare presentations, send and receive electronic mail, make music, and the like. For example, modern electronic word processing applications allow users to prepare a variety of useful documents. Modern spreadsheet applications allow users to enter, manipulate, and organize data. Modern electronic slide presentation applications allow users to create a variety of slide presentations containing text, pictures, data or other useful objects. Modern database applications allow users to store, organize and exchange large amounts of data.


Most software applications provide one or more graphical user interfaces through which a user enters and edits data and from which the user accesses and utilizes various functionalities of the associated software application. A typical user interface includes a work area in which data may be entered, edited, and reviewed. Additionally, user interfaces typically include one or more buttons and/or controls operative for selecting the functionalities provided by the associated software application. For example, buttons or controls may be provided for printing or saving a document, buttons or controls may be provided for applying formatting properties to aspects of a document, and the like.


Often, a third party software developer creates a software add-in that may be added to an existing application for providing functionality not available from the existing application. For example, an add-in software application may provide a feature to a word processing application for adding specialized footnotes or endnotes to a document. Typically, in addition to providing additional functionality, the add-in application provides one or more new user interface components to the existing application user interfaces, such as a new toolbar, button(s), or other control(s), for accessing the additional functionality. A problem occurs when new versions of the existing applications are created in which user interfaces are changed so that the add-in user interfaces are no longer compatible with the user interfaces of the existing software applications. Unless the developers of the add-in applications change their add-in user interfaces to match the new user interfaces of the existing applications, the functionality of the add-in applications may not be exposed to users.


It is with respect to these and other considerations that the present invention has been made.


SUMMARY

This 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 as an aid in determining the scope of the claimed subject matter.


Embodiments of the present invention solve the above and other problems by providing methods, systems, and computer products for exposing the functionalities provided in add-in software application user interfaces in otherwise incompatible user interfaces of existing applications (hereinafter referred to as “parent applications”) to which the add-in applications are applied. According to an embodiment of the invention, when a user interface of a parent application is modified such that a user interface of an add-in application applied to the parent application is not compatible with the parent application user interface, buttons or controls associated with functionalities of the add-in application are added to the new or modified parent application user interface in a manner that are consistent with the visual and functional properties of the present parent user interface.


The present (new or otherwise modified) user interface of the parent application is run in the foreground by the parent application and is visible to users. A prior user interface of the parent application to which the add-in application user interface is compatible and to which the add-in application user interface components (e.g., buttons or controls) are added is run in a background of the parent application, but is not visible to users. Buttons or controls associated with the add-in application that are added to the new or modified parent application user interface are linked to corresponding buttons or controls of the add-in application that are added to and run in the background prior user interface of the parent application. For example, if a menu command is added to the background prior user interface by an add-in application, then a corresponding command or control is added to the present user interface in a manner that is consistent with the present user interface layout and functionality.


User interface components added to or changed in the background running prior user interface are mapped or linked to user interface components added to the present user interface by addition of the add-in application to the parent application. When a user selects a user interface component from the present user interface that is associated with an add-in application functionality, the corresponding user interface component in the background running prior user interface is selected via a link between the add-in user interface component in the present parent application user interface and the corresponding user interface component in the background prior user interface component. In response, the associated functionality of the add-in application is executed. Thus, a developer of the add-in application does not have to update or modify the add-in application user interface components to comply with a new or modified user interface of the parent application that otherwise would be incompatible with the add-in application user interface.


These and other features and advantages, which characterize the present invention, will be apparent from a reading of the following detailed description and a review of the associated drawings. It is to be understood that both the foregoing general description and the following detailed description are explanatory only and are not restrictive of the invention as claimed.





BRIEF DESCRIPTION OF THE DRAWINGS


FIG. 1 illustrates an exemplary computing operating environment for embodiments of the present invention.



FIG. 2 illustrates a computer screen display of an add-in user interface toolbar and drop-down menu.



FIG. 3 illustrates a computer screen display of a new or modified user interface of a parent software application to which user interface components are added for mapping to the components of an add-in application user interface that is not compatible with the new or modified parent application user interface.



FIG. 4 is a simplified block diagram illustrating interaction between the components of a parent application user interface and the components of a background running prior user interface to which add-in application user interface components have been applied.





DETAILED DESCRIPTION

As briefly described above, embodiments of the present invention are directed to methods, systems, and computer products for exposing functionalities of an add-in software application in a user interface of a parent application to which the add-in software application is applied where user interface components of the add-in application are not compatible with a present version of the user interface provided by the parent application. In the following detailed description, references are made to the accompanying drawings that form a part hereof, and in which are shown by way of illustrations specific embodiments or examples. These embodiments may be combined, other embodiments may be utilized, and structural changes may be made without departing from the spirit or scope of the present invention. The following detailed description is therefore not to be taken in a limiting sense, and the scope of the present invention is defined by the appended claims and their equivalents.


Referring now to the drawings, in which like numerals refer to like elements through the several figures, aspects of the present invention and an exemplary computing operating environment will be described. FIG. 1 and the following discussion are intended to provide a brief, general description of a suitable computing environment in which the invention may be implemented. While the invention will be described in the general context of program modules that execute in conjunction with an application program that runs on an operating system on a personal computer, those skilled in the art will recognize that the invention may also be implemented in combination with other program modules.


Generally, program modules include routines, programs, components, data structures, and other types of structures that perform particular tasks or implement particular abstract data types. Moreover, those skilled in the art will appreciate that the invention may be practiced with other computer system configurations, including hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, and the like. The invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.


Embodiments of the invention may be implemented as a computer process (method), a computing system, or as an article of manufacture, such as a computer program product or computer readable media. The computer program product may be a computer storage media readable by a computer system and encoding a computer program of instructions for executing a computer process. The computer program product may also be a propagated signal on a carrier readable by a computing system and encoding a computer program of instructions for executing a computer process.


With reference to FIG. 1, one exemplary system for implementing the invention includes a computing device, such as computing device 100. In a basic configuration, the computing device 100 typically includes at least one processing unit 102 and system memory 104. Depending on the exact configuration and type of computing device, the system memory 104 may be volatile (such as RAM), non-volatile (such as ROM, flash memory, etc.) or some combination of the two. System memory 104 typically includes an operating system 105 suitable for controlling the operation of a networked personal computer, such as the WINDOWS® operating systems from MICROSOFT CORPORATION of Redmond, Wash. The system memory 104 may also include one or more software applications 106, 120 and may include program data 107. This basic configuration is illustrated in FIG. 1 by those components within dashed line 108.


According to embodiments of the invention, the application 106 may comprise many types of programs, such as an electronic mail program, a calendaring program, an Internet browsing program, and the like. An example of such programs is OUTLOOK® manufactured by MICROSOFT CORPORATION. The application 106 may also comprise a multiple-functionality software application for providing many other types of functionalities. Such a multiple-functionality application may include a number of program modules, such as a word processing program, a spreadsheet program, a slide presentation program, a database program, and the like. An example of such a multiple-functionality application is OFFICE™ manufactured by MICROSOFT CORPORATION. According to embodiments of the present invention, the applications 106 are illustrative of any software application for which a user interface may be changed such that it is no longer compatible with an add-in user interface of an add-in software application applied to the applications. The add-in software application 120 may comprise any software application that may be added to the applications 106 for enhancing or providing additional functionality to the applications 106 as described herein. In addition, an add-in software application, as described herein, may include document-based software solutions, for example, a spreadsheet document that includes attached toolbars, or a word processing document that contains a macro or other code that adds a toolbar with buttons or controls.


The computing device 100 may have additional features or functionality. For example, the computing device 100 may also include additional data storage devices (removable and/or non-removable) such as, for example, magnetic disks, optical disks, or tape. Such additional storage is illustrated in FIG. 1 by removable storage 109 and non-removable storage 110. Computer storage media may include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, data structures, program modules, or other data. System memory 104, removable storage 109 and non-removable storage 110 are all examples of computer storage media. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by computing device 100. Any such computer storage media may be part of device 100. Computing device 100 may also have input device(s) 112 such as keyboard, mouse, pen, voice input device, touch input device, etc. Output device(s) 114 such as a display, speakers, printer, etc. may also be included. These devices are well known in the art and need not be discussed at length here.


The computing device 100 may also contain communication connections 116 that allow the device to communicate with other computing devices 1118, such as over a network in a distributed computing environment, for example, an intranet or the Internet. Communication connection 116 is one example of communication media. Communication media may typically be embodied by computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as a carrier wave or other transport mechanism, and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. The term computer readable media as used herein includes both storage media and communication media.


Referring now to FIG. 2, a user interface toolbar 200 and a user interface drop-down menu 230 of an example add-in software application 120 are illustrated for adding additional functionality and user interface components to an existing or parent software application. For example, a parent software application may be a word processing application, a spreadsheet application, a slide presentation application, a notes application, an electronic mail application, a calendaring application, and the like for which a third party software application developer creates an add-in application 120 that may be applied to the parent application for adding additional functionality and user interface components. The user interface components illustrated in FIG. 2 show example functions associated with an add-in application for providing enhanced footnotes and endnotes functionalities to a parent application. As should be appreciated, the user interface components illustrated in FIG. 2 are for purposes of example only and are not limiting or restrictive of the number and types of user interface components that may be added to a parent application by an associated add-in application 120.


As illustrated in FIG. 2, the add-in application user interface includes a toolbar 200 having a variety of toolbar command buttons or controls 210, 215, 220. According to embodiments of the present invention, when the add-in application 120 associated with the user interface component 200 is added to a parent software application, the toolbar 200 is added to an existing toolbar set or other user interface component of the parent application. A drop-down menu of tools 230 is illustrated having a variety of menu commands such as the language command 235 and the insert note command 240. The drop-down menu of tools may be deployed by selecting one of the toolbar commands 210, 215, 220 or other control from the toolbar 200.


According to prior methods and systems, if the user interface components 200, 230 illustrated in FIG. 2 and associated with an add-in application 120 are added to the user interface components of a parent application where the added user interface components are compatible with the user interface components of the parent application, the added user interface components may be displayed in the parent application user interface in a manner consistent with the existing user interface components of the parent application. For example, if the parent application user interface includes a toolbar of functionality buttons or controls, the toolbar controls of the add-in toolbar 200 may be added to the toolbar set of the parent application, or the toolbar 200 may be appended to or otherwise connected with a toolbar of the parent application user interface.


However, when the user interface components of the parent application 106 are modified as often occurs in a new version of the parent application such that the user interface components of the add-in application 120 are no longer compatible with the organization, layout, and functionality of the user interface components of the parent application, the add-in application user interface components may not be surfaced to a user of the parent application. That is, the add-in application user interface components may not be visually presented in the user interface of the parent application for selection by a user. For example, if a new or modified user interface of the parent application does not utilize toolbars of functionality buttons or controls, the parent application user interface may not have an area or section into which the buttons or controls of an add-in application toolbar may be added or to which an add-in application toolbar may be appended or otherwise associated.


Referring now to FIG. 3, a new or modified user interface 300 of a parent application 106 is illustrated which is not compatible with the add-in application user interface components illustrated in FIG. 2. As described below, the user interface 300 of an associated parent application does not include a toolbar of functionality buttons or controls and does not include drop-down menus or submenus of commands associated with toolbar buttons or controls. Thus, the present (new or modified) user interface 300 of the parent application does not have a section or area into which components of the add-in application user interface, illustrated in FIG. 2, may be placed for surfacing to a user in a manner that is consistent with the present user interface 300 of the parent application.


According to FIG. 3, the example user interface 300 of the parent application 106 is a tab-based user interface containing one or more tabs 310, 315, 320 associated with corresponding tasks that may be performed using the functionalities of the parent software application. The user interface 300 illustrated in FIG. 3 is associated with an example slide presentation application. For example, the tab 310 is associated with a task of creating slides. The tab 315 is associated with a task of applying themes to created slides. The tab 320 is associated with applying animations to created slides. When a given tab 310, 315, 320 is selected, a user interface component (hereafter UI component) 335 displayed beneath the tabs 310, 315, 320 is populated with logical groupings of functionality buttons, or controls for performing a task associated with the selected tab.


The logical groupings of functionality buttons or controls may contain one or more buttons or controls associated with a subtask under the main task. For example, if a task associated with the creating slides tab 310 is selected, the UI component 335 may be populated with one or more logical groupings of functionality buttons or controls for creating slide presentation slides. One logical grouping of buttons or controls in the UI component 335 may be associated with generating new slides. A second logical grouping may include buttons or controls associated with display orientations of created slides. If a different tab 315 is selected for providing functionalities associated with a different task that may be performed with the example slide presentation application, the UI component 335 will be populated with one or more logical groupings of functionality buttons or controls associated with the second selected tab and associated task.


As should be appreciated, the user interface 300 illustrated in FIG. 3 is for purposes of example only and is not limiting or restrictive of the number and types of user interfaces applicable to embodiments of the present invention. For example the user interface 300 is illustrative of a user interface that may be utilized for a word processing application, a slide presentation application, a spreadsheet application, a notes application, an electronic mail application, a calendaring application, and the like. As should be appreciated, individual functionality commands and controls illustrated in the user interface 300 would be different based on the different parent applications for which the user interface 300 is provided.


According to embodiments of the present invention, in order to utilize the functionality of the add-in application 120, and in order to present user interface components in the new user interface 300 associated with the add-in application, a new component 330, for example the “Add-ins” tab, is created to surface user interface components in the present user interface that are added by the add-in application. As illustrated in FIG. 3, selection of the Add-ins tab 330 causes a population in the UI component 335 of one or more functionality buttons or controls corresponding to functionalities provided by the add-in application 120 that would otherwise be provided in the add-in application user interface components illustrated in FIG. 2. According to one embodiment, the functionality buttons or controls associated with the add-in application 120 may be grouped in logical groupings of buttons or controls in the UI component 335 as is done for functionalities of the parent application, as described above. That is, each of the buttons or controls associated with the functionalities of the add-in application may be organized into logical groupings in the UI component 335 so that the user receives a user interface visual experience for the add-in application functionalities that is consistent with the user interface experience for functionalities provided by the parent application. As should be appreciated, if the visual layout and presentation of the new user interface 300 is of a different layout and presentation, then buttons or controls associated with add-in application functionalities may be added according to the different layout or presentation.


According to another embodiment, the UI component 335 may be populated with icons associated with buttons or controls 210, 215, 220 contained in the add-in application user interface toolbar 200. Selection of one of the buttons or controls 210, 215, 220 displayed in the UI component 335 may cause the UI component 335 to then be populated with one or more logical groupings of functionality buttons or controls normally displayed in the drop-down menu 230 of command menus available under a selected toolbar button or control.


According to another embodiment, the Add-ins tab 330 may selectively provide in the UI component 335 logical groupings of functionality buttons or controls associated with different add-in applications. For example, a first logical grouping 345 may be associated with functionality buttons or controls for a first add-in application 120, a second logical grouping 347 may include functionality buttons or controls associated with a second add-in application, and so on. For example, a first application add-in may provide enhanced functionality for providing endnotes and footnotes to a word processing or slide presentation application. A second application add-in may provide functionality for desktop publishing formatting properties for applying to a word processing application, slide presentation application, or spreadsheet application, and the like.


Referring now to FIG. 4, as briefly described above, in order to activate functionalities of the add-in application, the add-in application user interface components, as illustrated in FIG. 2, are applied to a prior version of the parent application user interface 410. The prior version user interface 410 along with the applied add-in user interface components 200, 230 is run by the parent application as a background or shadow user interface 410 and is not visible to users. That is, the user interface 410, illustrated in FIG. 4, is a copy of the user interface previously operated by the parent application for which the user interface components of the add-in application were designed. For example, as illustrated in FIG. 4, the endnote toolbar 200 of the example add-in application appends to a toolbar section 415 of the prior user interface 410, and the add-in application drop-down menu 230 is illustrated deployed beneath the toolbar 200.


According to embodiments of the present invention, when new user interface components are added to or changed in the background running prior user interface by addition of the add-in application, corresponding user interface components are added to the present user interface of the parent application, and the new user interface components added to or changed in the background running prior user interface are mapped or linked to user interface components added to the present user interface of the parent application. According to one embodiment, buttons or controls in the parent application user interface are linked to corresponding buttons or controls in the background user interface 410 by embedding in a given button or control in the parent user interface 300 a path to an associated button or control in the background user interface 410. A selection of a button or control from the parent user interface 300 causes a call along the path to the corresponding button or control in the background user interface that causes selection or execution of the corresponding button or control in the background user interface 410.


As described above, when the parent application is running, the prior version user interface 410 is operated in a background mode so that it is not visible to a user. When a button or control is selected from the new user interface 300, for example, by a mouse cursor click 420, the corresponding functionality button or control in the background running prior user interface 410 is selected for actually executing the associated functionality of the add-in application. For example, if a button or control associated with a formatting functionality is selected in the new or present user interface 300 that is associated with a formatting functionality of an add-in application 120, the button or control in the prior user interface 410 that is mapped to the selected button or control is automatically selected as if selected by an example mouse cursor click 425. In response, the associated functionality of the add-in application is executed.


According to the present invention, the add-in application is not aware that the selected and executed functionality was executed by selection of a button or control displayed in the new or present user interface 300 of the parent application. That is, the add-in application is only aware that a button or control associated with the executed functionality has been selected from the user interface components 200, 230 provided by the add-in application. Thus, the add-in application does not have to be modified or updated to be compatible with the new or modified user interface components of the parent application.


According to an alternative embodiment of the present invention, if the user interface of the add-in user interface components 200, 230 are operative to function as standalone user interfaces without being integrated into the parent application user interface, the add-in user interface components 200, 230 are not applied to the prior user interface 410, as illustrated in FIG. 4, but the user interface components 200, 230 are run as standalone background user interface components associated with the add-in application 120. As described above, user interface components added to the standalone background add-in user interface are replicated/propagated to the new parent user interface and the two versions of the component are linked together. When a user interface component in the parent user interface 300 is selected that corresponds to a user interface component in the standalone components 200, 230, the corresponding functionality of the add-in application is executed.


It will be apparent to those skilled in the art that various modifications or variations may be made in the present invention without departing from the scope or spirit of the invention. Other embodiments of the present invention will be apparent to those skilled in the art from consideration of the specification and practice of the invention disclosed herein.

Claims
  • 1. A method for exposing functionalities of an add-in software application via a modified parent user interface, the method comprising: providing a first set of functionalities of a parent software application via a prior parent user interface; providing a second set of functionalities of the add-in software application to the parent software application via an add-in user interface anda first set of components of the add-in user interface which are integrable with a second set components of the prior parent user interface;receiving the modified parent user interface, wherein the modified parent user interface is a modified version of the prior parent user interface;determining the first set of components of the add-in user interface are not integrable with a modified set of components of the modified parent user interface;integrating, in response to the determining, the first set of components of the add-in user interface with the prior parent user interface into which the first set of components of the add-in user interface are integrable, wherein integrating the first set of components of the add-in user interface with the prior parent user interface into which the first set of components of the add-in user interface are integrable comprises running the prior parent user interface including the integrated add-in user interface components as a background user interface that is not visually displayed;generating a plurality of selectable components in the modified parent user interface corresponding to the integrated add-in user interface components which are integrated into the prior parent user interface, wherein generating the plurality of selectable components in the modified parent user interface comprises: creating, in the modified parent user interface, a selectable add-in component comprising a plurality of selectable controls associated with the second set of functionalities of the add-in software application, the selectable add-in component populating, upon selection, a portion of the modified parent user interface with the plurality of selectable controls, andgrouping the plurality of selectable controls associated with the second set of functionalities of the add-in software application into logical groupings comprising icons associated with the plurality of selectable controls, wherein grouping the plurality of selectable controls associated with the second set of functionalities of the add-in software application into the logical groupings comprises laying out the plurality of selectable controls associated with the second set of functionalities of the add-in software application consistently with a layout of the modified parent user interface;linking each generated selectable component in the modified parent user interface with each corresponding integrated add-in user interface component;displaying the modified parent user interface; andselecting, in response to a selection of the generated selectable component in the modified parent user interface, the integrated add-in user interface component in the background user interface corresponding to the selected generated selectable component in the modified parent user interface.
  • 2. The method of claim 1, wherein displaying the modified parent user interface comprises: exposing the first set of functionalities of the parent software application, and exposing each generated selectable component of the modified parent user interface corresponding to each integrated add-in user interface component that is integrated into the prior parent user interface.
  • 3. The method of claim 1, wherein linking each generated selectable component in the modified parent user interface with each corresponding integrated add-in user interface component includes embedding in each generated selectable component in the modified parent user interface a path to the corresponding integrated add-in user interface component.
  • 4. The method of claim 3, wherein selecting the integrated component corresponding to the selected generated selectable component in the modified parent user interface includes passing an execution call along the path from the selected generated component in the modified parent user interface to the corresponding integrated add-in user interface component.
  • 5. The method of claim 2, further comprising: receiving a selection of the generated selectable component in the modified parent user interface that is linked to the corresponding integrated add-in user interface component; andactivating, in response to receiving the selection of the generated selectable component in the modified parent user interface that is linked to the corresponding integrated add-in user interface component, the corresponding selectable control of the plurality of selectable controls.
  • 6. The method of claim 5, further comprising executing a first functionality of the second set of functionalities of the add-in software application associated with the activated corresponding selectable control.
  • 7. The method of claim 2, wherein running the prior version of the parent user interface including the integrated add-in user interface components as a background user interface that is not visually displayed comprises, running the prior version of the parent user interface while displaying the modified parent user interface, wherein any one of the second set of functionalities of the add-in software application that is provided to the parent software application is executed by the selection of the associated selectable control of the modified parent user interface that corresponds to the integrated add-in user interface component which is integrated into the prior parent user interface.
  • 8. A method for exposing functionalities of an add-in software application via a parent software application user interface, the method comprising: receiving a parent software application providing a first set of functionalities via the parent user interface;receiving the add-in software application to be added to the parent software application, the add-in software application including an add-in user interface providing a second set of functionalities of the add-in software application, wherein the add-in user interface includes a first set selectable components each of which executes an associated functionality of the second set of functionalities of the add-in software application, the first set of selectable components of the add-in user interface not being compatible with the parent user interface;integrating the first set of selectable components of the add-in user interface with a prior version of the parent user interface with which the first set of selectable components of the add-in user interface are compatible, wherein integrating the first set of selectable components of the add-in user interface with a prior version of the parent user interface with which the first set of components of the add-in user interface are compatible comprises running the prior version of the parent user interface including the integrated add-in user interface components as a background user interface that is not visually displayed;generating a second set of selectable components in the parent user interface each corresponding to one of the integrated add-in user interface components, wherein generating the second set of selectable components in the parent user interface comprises: creating, in the parent user interface, a selectable add-in component comprising a plurality of selectable controls associated with the second set of functionalities of the add-in software application, the selectable add-in component populating, upon selection, a portion of the parent user interface with the plurality of selectable controls, andgrouping the plurality of selectable controls associated with the second set of functionalities of the add-in software application into logical groupings comprising icons associated with the plurality of selectable controls, wherein grouping the plurality of selectable controls associated with the second set of functionalities of the add-in software application into the logical groupings comprises grouping the plurality of selectable controls associated with the second set of functionalities of the add-in software application in a consistent manner with a layout of the parent user interface;linking each generated selectable component of the second set of selectable in the parent user interface with each corresponding integrated add-in user interface component;displaying the parent user interface; andselecting, in response to a selection of at least one generated selectable component in the parent user interface, the corresponding integrated add-in user interface component in the background user interface.
  • 9. The method of claim 8, wherein linking each generated selectable control of the second set of selectable controls in the parent user interface with each corresponding integrated add-in user interface component includes embedding in each generated selectable control in the parent user interface a path to each corresponding integrated add-in user interface component.
  • 10. The method of claim 9, wherein selecting the corresponding integrated add-in user interface component includes passing an execution call along the path from the selected generated control component in the parent user interface to the at least one corresponding integrated add-in user interface component.
  • 11. The method of claim 8, wherein displaying the parent user interface further comprises, exposing the first set of functionalities of the parent software application and exposing each generated selectable control in the parent user interface corresponding to each selectable control in the add-in user interface; and wherein running the add-in user interface as a background user interface that is not visually displayed further comprises, executing the functionality of the first second set of functionalities of the add-in software application that is configured to be executed via the add-in user interface by selection of the associated selectable control of the parent user interface that corresponds to the integrated add-in user interface component which is integrated into the prior version of the parent user interface.
  • 12. The method of claim 11, further comprising: receiving the selection of the generated selectable control component in the parent user interface that is linked to the corresponding integrated add-in user interface component;activating, in response to receiving the selection of the generated selectable component in the parent user interface that is linked to the corresponding integrated add-in user interface component, the corresponding selectable control of the plurality of controls; andexecuting a first functionality of the second set of functionalities of the add-in software application associated with the activated corresponding selectable control.
  • 13. A non-transitory computer readable storage medium which stores a set of instructions which when executed by a computer performs a method for exposing functionalities of an add-in software application via a modified parent user interface, the method executed by the set of instructions comprising: providing a first set of functionalities of a parent software application via a prior parent user interface;providing a second set of functionalities of the add-in software application to the parent software application via an add-in user interface and a first set of components of the add-in user interface which are integrable with a second set components of the prior parent user interface;receiving the modified parent user interface, wherein the modified parent user interface is a modified version of the prior parent user interface;determining the first set of components of the add-in user interface are not integrable with a modified set of components of the modified parent user interface;integrating, in response to the determining, the first set of components of the add-in user interface with the prior parent user interface into which the first set of components of the add-in user interface are integrable, wherein integrating the first set of components of the add-in user interface with the prior parent user interface into which the first set of components of the add-in user interface are integrable comprises running the prior parent user interface including the integrated add-in user interface components as a background user interface that is not visually displayed;generating a plurality of selectable components in the modified parent user interface corresponding to the integrated add-in user interface components which are integrated into the prior parent user interface, wherein generating the plurality of selectable components in the modified parent user interface comprises: creating, in the modified parent user interface, a selectable add-in component comprising a plurality of selectable controls associated with the second set of functionalities of the add-in software application, the selectable add-in component populating, upon selection, a portion of the parent user interface with the plurality of selectable controls,organizing the plurality of selectable controls into a plurality of logical groupings of selectable controls comprising a first logical grouping of selectable controls associated with the add-in software application and at least one additional logical grouping of selectable controls associated with at least one additional add-in software application, the at least one additional logical grouping of selectable controls comprising additional selectable controls associated with the at least one additional add-in software application,laying out the plurality of logical groupings of selectable controls consistently with a layout of the modified set of components of the modified parent user interface;linking each generated selectable component in the modified parent user interface with each corresponding integrated add-in user interface component that is integrated into the prior parent user interface, wherein each generated selectable component is one of the following: added by the add-in software application and modified by the add-in software application;displaying the modified parent user interface; andselecting, in response to a selection of the generated selectable component in the modified parent user interface, the integrated add-in user interface component in the background user interface corresponding to the selected generated selectable component in the modified parent user interface.
  • 14. The computer readable storage medium of claim 13, wherein displaying the modified parent user interface further comprises: exposing the first set of functionalities of the parent software application and exposing each generated selectable component of the modified parent user interface corresponding to each integrated add-in user interface component that is integrated into the prior parent user interface.
  • 15. The computer readable storage medium of claim 13, wherein linking each generated selectable component in the modified parent user interface with each corresponding integrated add-in user interface component that is integrated into the prior parent user interface includes embedding in each generated selectable component in the modified parent user interface a path to the corresponding integrated add-in user interface component that is integrated into the prior parent user interface.
  • 16. The computer readable storage medium of claim 15, wherein selecting the integrated add-in user interface component in the prior parent user interface corresponding to the selected generated selectable component in the modified parent user interface includes passing an execution call along the path from the selected generated component in the modified parent user interface to the corresponding integrated add-in user interface component that is integrated into the prior parent user interface.
  • 17. The computer readable storage medium of claim 14, further comprising: receiving a selection of the generated selectable component in the modified parent user interface that is linked to the corresponding integrated add-in user interface component that is integrated into the prior version of the parent user interface; andactivating, in response to receiving the selection of the generated selectable component in the modified parent user interface that is linked to the corresponding integrated add-in user interface component that is integrated into the prior version of the parent user interface, the corresponding selectable control of the plurality of selectable controls.
  • 18. The computer readable storage medium of claim 17, further comprising executing a first functionality of the second set of functionalities of the add-in software application associated with the activated corresponding selectable control.
  • 19. The computer readable storage medium of claim 14, wherein running the prior version of the parent user interface including the integrated add-in user interface components as a background user interface that is not visually displayed comprises running the prior version of the parent user interface while displaying the modified parent user interface, wherein any one of the second set of functionalities of the add-in software application that is provided to the parent software application is executed by the selection of the associated selectable control of the modified parent user interface that corresponds to the integrated add-in user interface component which is integrated into the prior parent user interface.
  • 20. The computer readable storage medium of claim 19, further comprising automatically initiating the background user interface upon receiving a selection to display the modified parent user interface.
US Referenced Citations (337)
Number Name Date Kind
4823283 Diehm et al. Apr 1989 A
5155806 Hoeber et al. Oct 1992 A
5247438 Subas et al. Sep 1993 A
5323314 Baber et al. Jun 1994 A
5377354 Scannell et al. Dec 1994 A
5500936 Allen et al. Mar 1996 A
5519606 Frid-Nielsen et al. May 1996 A
5559875 Bieselin et al. Sep 1996 A
5559944 Ono Sep 1996 A
5570109 Jenson Oct 1996 A
5588107 Bowden et al. Dec 1996 A
5596694 Capps Jan 1997 A
5634100 Capps May 1997 A
5634128 Messina May 1997 A
5638504 Scott et al. Jun 1997 A
5644737 Tuniman et al. Jul 1997 A
5659693 Hansen et al. Aug 1997 A
5664127 Anderson et al. Sep 1997 A
5664208 Pavley et al. Sep 1997 A
5673403 Brown et al. Sep 1997 A
5721847 Johnson Feb 1998 A
5760773 Berman et al. Jun 1998 A
5761646 Frid-Nielsen et al. Jun 1998 A
5778402 Gipson Jul 1998 A
5778404 Capps et al. Jul 1998 A
5805167 Van Cruyningen Sep 1998 A
5812132 Goldstein Sep 1998 A
5821936 Shaffer et al. Oct 1998 A
5828376 Solimene et al. Oct 1998 A
5842009 Borovoy et al. Nov 1998 A
5844558 Kumar et al. Dec 1998 A
5844572 Schott Dec 1998 A
5855006 Huemoeller et al. Dec 1998 A
5873108 Goyal et al. Feb 1999 A
5885006 Sheedy Mar 1999 A
5893073 Kasso et al. Apr 1999 A
5893125 Shostak Apr 1999 A
5898436 Stewart et al. Apr 1999 A
5899979 Miller et al. May 1999 A
5905863 Knowles et al. May 1999 A
5926806 Marshall et al. Jul 1999 A
5936625 Kahl et al. Aug 1999 A
5937160 Davis et al. Aug 1999 A
5940847 Fein et al. Aug 1999 A
5943051 Onda et al. Aug 1999 A
5960406 Rasansky et al. Sep 1999 A
5970466 Detjen et al. Oct 1999 A
5999938 Bliss et al. Dec 1999 A
6008806 Nakajima et al. Dec 1999 A
6012075 Fein et al. Jan 2000 A
6016478 Zhang et al. Jan 2000 A
6018343 Wang et al. Jan 2000 A
6034683 Mansour et al. Mar 2000 A
6038542 Ruckdashel Mar 2000 A
6067087 Krauss et al. May 2000 A
6072492 Schagen et al. Jun 2000 A
6085206 Domini et al. Jul 2000 A
6101480 Conmy et al. Aug 2000 A
6133915 Arcuri et al. Oct 2000 A
6175363 Williams et al. Jan 2001 B1
6188403 Sacerdoti et al. Feb 2001 B1
6192381 Stiegemeier et al. Feb 2001 B1
6211879 Soohoo Apr 2001 B1
6216122 Elson Apr 2001 B1
6219670 Mocek et al. Apr 2001 B1
6222540 Sacerdoti Apr 2001 B1
6230309 Turner et al. May 2001 B1
6232971 Haynes May 2001 B1
6236396 Jenson et al. May 2001 B1
6256628 Dobson et al. Jul 2001 B1
6269341 Redcay, Jr. Jul 2001 B1
6289317 Peterson Sep 2001 B1
6307544 Harding Oct 2001 B1
6323883 Minoura et al. Nov 2001 B1
6326962 Szabo Dec 2001 B1
6327046 Miyamoto et al. Dec 2001 B1
6353451 Teibel et al. Mar 2002 B1
6359634 Cragun et al. Mar 2002 B1
6373507 Camara et al. Apr 2002 B1
6384849 Morcos et al. May 2002 B1
6405216 Minnaert et al. Jun 2002 B1
6424829 Kraft Jul 2002 B1
6442527 Worthington Aug 2002 B1
6456304 Angiulo et al. Sep 2002 B1
6457062 Pivowar et al. Sep 2002 B1
6466236 Pivowar et al. Oct 2002 B1
6469722 Kineo et al. Oct 2002 B1
6480865 Lee et al. Nov 2002 B1
6493006 Gourdol et al. Dec 2002 B1
6493731 Jones et al. Dec 2002 B1
6546417 Baker Apr 2003 B1
6564377 Jayasimha et al. May 2003 B1
6570596 Frederiksen May 2003 B2
6578192 Boehme et al. Jun 2003 B1
6583798 Hoek et al. Jun 2003 B1
6621504 Nadas et al. Sep 2003 B1
6621508 Shiraishi et al. Sep 2003 B1
6635089 Burkett et al. Oct 2003 B1
6664983 Ludolph Dec 2003 B2
6680749 Anderson et al. Jan 2004 B1
6691281 Sorge et al. Feb 2004 B1
6708205 Sheldon et al. Mar 2004 B2
6727919 Reder et al. Apr 2004 B1
6732330 Claussen et al. May 2004 B1
6734880 Chang et al. May 2004 B2
6750890 Sugimoto Jun 2004 B1
6778990 Garcia et al. Aug 2004 B2
6785868 Raff Aug 2004 B1
6825859 Severenuk et al. Nov 2004 B1
6850255 Muschetto Feb 2005 B2
6857103 Wason Feb 2005 B1
6871195 Ryan et al. Mar 2005 B2
6882354 Nielsen Apr 2005 B1
6904449 Quinones Jun 2005 B1
6906717 Couckuyt et al. Jun 2005 B2
6915492 Kurtenbach et al. Jul 2005 B2
6925605 Bates et al. Aug 2005 B2
6931623 Vermeire et al. Aug 2005 B2
6964025 Angiulo et al. Nov 2005 B2
6983889 Alles Jan 2006 B2
6988241 Guttman et al. Jan 2006 B1
6990637 Anthony et al. Jan 2006 B2
7027463 Mathew et al. Apr 2006 B2
7039596 Lu May 2006 B1
7046848 Olcott May 2006 B1
7086006 Subramanian Aug 2006 B2
7093162 Barga et al. Aug 2006 B2
7107544 Luke Sep 2006 B1
7110936 Hiew et al. Sep 2006 B2
7111238 Kuppusamy et al. Sep 2006 B1
7117370 Khan et al. Oct 2006 B2
7152207 Underwood et al. Dec 2006 B1
7181697 Tai et al. Feb 2007 B2
7188073 Tam et al. Mar 2007 B1
7188158 Stanton et al. Mar 2007 B1
7212208 Khozai May 2007 B2
7216301 Moehrle May 2007 B2
7218976 Minagawa May 2007 B2
7219305 Jennings May 2007 B2
7225244 Reynolds et al. May 2007 B2
7234132 Lam Jun 2007 B2
7240323 Desai et al. Jul 2007 B1
7249325 Donaldson Jul 2007 B1
7263668 Lentz Aug 2007 B1
7290033 Goldman et al. Oct 2007 B1
7325204 Rogers Jan 2008 B2
7328409 Awada et al. Feb 2008 B2
7337185 Ellis et al. Feb 2008 B2
7346705 Hullot et al. Mar 2008 B2
7346769 Forlenza et al. Mar 2008 B2
7386535 Kalucha et al. Jun 2008 B1
7386835 Desai Jun 2008 B1
7392249 Harris et al. Jun 2008 B1
7395221 Doss et al. Jul 2008 B2
7395500 Whittle et al. Jul 2008 B2
7421660 Charnock et al. Sep 2008 B2
7421690 Forstall et al. Sep 2008 B2
7469385 Harper et al. Dec 2008 B2
7472117 Dettinger et al. Dec 2008 B2
7505954 Heidloff et al. Mar 2009 B2
7530029 Satterfield et al. May 2009 B2
7555707 Labarge et al. Jun 2009 B1
7567964 Brice et al. Jul 2009 B2
7627561 Pell et al. Dec 2009 B2
7703036 Satterfield et al. Apr 2010 B2
7707255 Satterfield et al. Apr 2010 B2
7711742 Bennett et al. May 2010 B2
7716593 Durazo et al. May 2010 B2
7739259 Hartwell et al. Jun 2010 B2
7747966 Leukart et al. Jun 2010 B2
7788598 Bansal et al. Aug 2010 B2
20010035882 Stoakley et al. Nov 2001 A1
20020007380 Bauchot et al. Jan 2002 A1
20020029247 Kawamoto Mar 2002 A1
20020037754 Hama et al. Mar 2002 A1
20020052721 Ruff et al. May 2002 A1
20020070977 Morcos et al. Jun 2002 A1
20020075330 Rosenzweig et al. Jun 2002 A1
20020078143 DeBoor et al. Jun 2002 A1
20020083054 Peltonen et al. Jun 2002 A1
20020083097 Warrington Jun 2002 A1
20020091697 Huang et al. Jul 2002 A1
20020122071 Camara et al. Sep 2002 A1
20020133557 Winarski Sep 2002 A1
20020135621 Angiulo et al. Sep 2002 A1
20020140740 Chen Oct 2002 A1
20020149623 West et al. Oct 2002 A1
20020149629 Craycroft et al. Oct 2002 A1
20020154178 Barnett et al. Oct 2002 A1
20020158876 Janssen Oct 2002 A1
20020163538 Shteyn Nov 2002 A1
20020175955 Gourdol et al. Nov 2002 A1
20030009455 Carlson et al. Jan 2003 A1
20030011638 Chung Jan 2003 A1
20030011639 Webb Jan 2003 A1
20030014490 Bates et al. Jan 2003 A1
20030022700 Wang Jan 2003 A1
20030025732 Prichard Feb 2003 A1
20030035917 Hyman Feb 2003 A1
20030038832 Sobol Feb 2003 A1
20030043200 Faieta et al. Mar 2003 A1
20030043211 Kremer et al. Mar 2003 A1
20030046528 Haitani et al. Mar 2003 A1
20030066025 Garner et al. Apr 2003 A1
20030093490 Yamamoto et al. May 2003 A1
20030097361 Huang et al. May 2003 A1
20030098891 Molander May 2003 A1
20030110191 Handsaker et al. Jun 2003 A1
20030112278 Driskell Jun 2003 A1
20030135825 Gertner et al. Jul 2003 A1
20030156140 Watanabe Aug 2003 A1
20030160821 Yoon Aug 2003 A1
20030167310 Moody et al. Sep 2003 A1
20030169284 Dettinger et al. Sep 2003 A1
20030195937 Kircher et al. Oct 2003 A1
20030206646 Brackett Nov 2003 A1
20030218611 Ben-Tovim et al. Nov 2003 A1
20030226106 McKellar et al. Dec 2003 A1
20030227487 Hugh Dec 2003 A1
20030233419 Beringer Dec 2003 A1
20040003351 Sommerer et al. Jan 2004 A1
20040012633 Helt Jan 2004 A1
20040056894 Zaika et al. Mar 2004 A1
20040090315 Mackjust et al. May 2004 A1
20040100504 Sommer May 2004 A1
20040100505 Cazier May 2004 A1
20040107197 Shen et al. Jun 2004 A1
20040109025 Hullot et al. Jun 2004 A1
20040109033 Vienneau et al. Jun 2004 A1
20040117451 Chung Jun 2004 A1
20040119760 Grossman et al. Jun 2004 A1
20040122789 Ostertag et al. Jun 2004 A1
20040125142 Mock et al. Jul 2004 A1
20040128275 Moehrle Jul 2004 A1
20040133854 Black Jul 2004 A1
20040142720 Smethers Jul 2004 A1
20040153968 Ching et al. Aug 2004 A1
20040164983 Khozai Aug 2004 A1
20040168153 Marvin Aug 2004 A1
20040186775 Margiloff et al. Sep 2004 A1
20040189694 Kurtz et al. Sep 2004 A1
20040192440 Evans Sep 2004 A1
20040221234 Imai Nov 2004 A1
20040230508 Minnis et al. Nov 2004 A1
20040230906 Pik et al. Nov 2004 A1
20040239700 Bacshy Dec 2004 A1
20040243938 Weise et al. Dec 2004 A1
20040261013 Wynn et al. Dec 2004 A1
20040268270 Hill et al. Dec 2004 A1
20050004989 Satterfield et al. Jan 2005 A1
20050004990 Durazo et al. Jan 2005 A1
20050005235 Satterfield et al. Jan 2005 A1
20050005249 Hill et al. Jan 2005 A1
20050021504 Atchison Jan 2005 A1
20050022116 Bowman et al. Jan 2005 A1
20050039142 Jalon et al. Feb 2005 A1
20050043015 Muramatsu Feb 2005 A1
20050044500 Orimoto et al. Feb 2005 A1
20050057584 Gruen et al. Mar 2005 A1
20050086135 Lu Apr 2005 A1
20050091576 Relyea et al. Apr 2005 A1
20050097465 Giesen et al. May 2005 A1
20050114778 Branson et al. May 2005 A1
20050117179 Ito et al. Jun 2005 A1
20050138576 Baumert et al. Jun 2005 A1
20050144241 Stata et al. Jun 2005 A1
20050172262 Lalwani Aug 2005 A1
20050203975 Jindal et al. Sep 2005 A1
20050216863 Schumacher et al. Sep 2005 A1
20050223329 Schwartz et al. Oct 2005 A1
20050256867 Walther et al. Nov 2005 A1
20050278656 Goldthwaite et al. Dec 2005 A1
20050289156 Maryka et al. Dec 2005 A1
20050289159 Weiss et al. Dec 2005 A1
20060015816 Kuehner Jan 2006 A1
20060020962 Stark Jan 2006 A1
20060036580 Stata et al. Feb 2006 A1
20060036945 Radtke et al. Feb 2006 A1
20060036946 Radtke et al. Feb 2006 A1
20060036950 Himberger et al. Feb 2006 A1
20060036964 Satterfield et al. Feb 2006 A1
20060036965 Harris et al. Feb 2006 A1
20060041545 Heidloff et al. Feb 2006 A1
20060047644 Bocking et al. Mar 2006 A1
20060059035 Kraft Mar 2006 A1
20060069604 Leukart et al. Mar 2006 A1
20060069686 Beyda et al. Mar 2006 A1
20060080303 Sargent et al. Apr 2006 A1
20060095865 Rostom May 2006 A1
20060101051 Carr et al. May 2006 A1
20060101350 Scott May 2006 A1
20060111931 Johnson et al. May 2006 A1
20060117249 Hu et al. Jun 2006 A1
20060129937 Shafron Jun 2006 A1
20060155689 Blakeley et al. Jul 2006 A1
20060173824 Bensky et al. Aug 2006 A1
20060218500 Sauve et al. Sep 2006 A1
20060242557 Nortis, III Oct 2006 A1
20060242575 Winser Oct 2006 A1
20060242591 Van Dok Oct 2006 A1
20060294452 Matsumoto Dec 2006 A1
20070050401 Young et al. Mar 2007 A1
20070055936 Dhanjal et al. Mar 2007 A1
20070055943 McCormick et al. Mar 2007 A1
20070061306 Pell et al. Mar 2007 A1
20070061307 Hartwell et al. Mar 2007 A1
20070061308 Hartwell et al. Mar 2007 A1
20070061705 Ammerlaan Mar 2007 A1
20070094608 Getsch Apr 2007 A1
20070106951 McCormack et al. May 2007 A1
20070143671 Paterson et al. Jun 2007 A1
20070185826 Brice et al. Aug 2007 A1
20070240057 Satterfield et al. Oct 2007 A1
20070260996 Jakobson Nov 2007 A1
20070279417 Garg et al. Dec 2007 A1
20070300168 Bosma et al. Dec 2007 A1
20080005686 Singh Jan 2008 A1
20080034304 Feuerbacher et al. Feb 2008 A1
20080040682 Sorenson et al. Feb 2008 A1
20080052670 Espinosa et al. Feb 2008 A1
20080141156 Reik Jun 2008 A1
20080178110 Hill et al. Jul 2008 A1
20080263462 Mayer-Ullmann Oct 2008 A1
20090007003 Dukhon et al. Jan 2009 A1
20090031295 Zhao Jan 2009 A1
20090064090 Anonsen Mar 2009 A1
20090083656 Dukhon et al. Mar 2009 A1
20090100009 Karp Apr 2009 A1
20090205013 Lowes Aug 2009 A1
20090217192 Dean et al. Aug 2009 A1
20090222763 Dukhon et al. Sep 2009 A1
20090249339 Larsson et al. Oct 2009 A1
20100060645 Garg et al. Mar 2010 A1
20100180226 Satterfield et al. Jul 2010 A1
20100191818 Satterfield et al. Jul 2010 A1
20100211889 Durazo et al. Aug 2010 A1
20100223575 Leukart et al. Sep 2010 A1
Foreign Referenced Citations (23)
Number Date Country
0 910 007 Apr 1999 EP
1 077 405 Feb 2001 EP
1 672 518 Jun 2001 EP
1 223 503 Jul 2002 EP
1 376 337 Feb 2004 EP
1 462 999 Sep 2004 EP
1 542 133 Jun 2005 EP
1 835 434 Sep 2007 EP
2 391 148 Jan 2004 GB
10-2002-0004723 Jan 2002 KR
10-2005-0023805 Mar 2005 KR
10-2005-0036702 Apr 2005 KR
10-200809921262 Mar 2008 KR
WO 9904353 Jan 1999 WO
WO 9927495 Jun 1999 WO
WO 02091162 Nov 2002 WO
WO 03003240 Jan 2003 WO
WO 03098500 Nov 2003 WO
WO 2005103900 Nov 2005 WO
WO 2007027737 Mar 2007 WO
WO2007033159 Mar 2007 WO
WO2007027737 Aug 2007 WO
WO2008121718 Oct 2008 WO
Related Publications (1)
Number Date Country
20070006206 A1 Jan 2007 US