Source: http://www.google.com/patents/US7770121?dq=5537618
Timestamp: 2014-12-18 07:09:50
Document Index: 8018971

Matched Legal Cases: ['arts 400', 'arts 400', 'arts 400', 'arts 400', 'arts 400', 'arts 400', 'art 450', 'art 480', 'art 480']

Patent US7770121 - Host controlled user interface - Google PatentsSearch Images Maps Play YouTube News Gmail Drive More »Sign inAdvanced Patent SearchPatentsDescribed herein is technology for, among other things, a graphical user interface. The graphical user interface is made up of multiple user interface components. The multiple user interface components are hosted by a host user interface, which encapsulates and exposes the user interface components together...http://www.google.com/patents/US7770121?utm_source=gb-gplus-sharePatent US7770121 - Host controlled user interfaceAdvanced Patent SearchPublication numberUS7770121 B2Publication typeGrantApplication numberUS 11/786,511Publication dateAug 3, 2010Filing dateApr 12, 2007Priority dateApr 12, 2007Fee statusPaidAlso published asUS20080256469Publication number11786511, 786511, US 7770121 B2, US 7770121B2, US-B2-7770121, US7770121 B2, US7770121B2InventorsManoj Jain, Archan DasOriginal AssigneeMicrosoft CorporationExport CitationBiBTeX, EndNote, RefManPatent Citations (19), Non-Patent Citations (5), Referenced by (7), Classifications (12), Legal Events (3) External Links: USPTO, USPTO Assignment, EspacenetHost controlled user interfaceUS 7770121 B2Abstract Described herein is technology for, among other things, a graphical user interface. The graphical user interface is made up of multiple user interface components. The multiple user interface components are hosted by a host user interface, which encapsulates and exposes the user interface components together to present a unified view of the user interface components as a single user interface. Moreover, the host user interface presents the capabilities of the user interface components as a whole.
BACKGROUND A single graphical user interface (GUI), such as the main window of an email client, typically includes several user interface (UI) components. The components may include various menu bars, toolbars, folder trees, text boxes, etc. Most GUIs are monolithic in that all the components of a particular UI are built on the same UI technology and then compiled together as one single piece of code. The result is that the components of the UI are dependent on one another.
Overview Briefly stated, embodiments provide for a hosted user interface (UI) such that UI components built on different designs may function together in a unified graphical user interface. However, it should be appreciated that embodiments may also be used in cases where UI components are built on the same design. As used herein, �different designs� may involve different programming languages (e.g., Visual Basic versus C++), different UI technologies within a programming language (e.g., Microsoft Foundation Class versus Win32), or incompatible internal designs within a technology. By adding a host UI layer between the UI components and the actual display, UI components that are built on different designs can be stitched together by the host UI and presented as a fully integrated and unified UI.
Exemplary Operating Environment, in Accordance with an Embodiment With reference to FIG. 1, an exemplary system for implementing embodiments includes a general purpose computing system environment, such as computing system environment 100. In its most basic configuration, computing system environment 100 typically includes at least one processing unit 102 and memory 104. Depending on the exact configuration and type of computing system environment, memory 104 may be volatile (such as RAM), non-volatile (such as ROM, flash memory, etc.) or some combination of the two. This most basic configuration is illustrated in FIG. 1 by dashed line 106. Additionally, computing system environment 100 may also have additional features/functionality. For example, computing system environment 100 may also include additional storage (removable and/or non-removable) including, but not limited to, magnetic or optical disks or tape. Such additional storage is illustrated in FIG. 1 by removable storage 108 and non-removable storage 110. Computer storage media includes 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. Memory 104, removable storage 108 and nonremovable 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 system environment 100. Any such computer storage media may be part of computing system environment 100.
Computing system environment 100 may also contain communications connection(s) 112 that allow it to communicate with other devices. Communications connection(s) 112 is an example of communication media. Communication media typically embodies 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. Computing system environment 100 may also have input device(s) 114 such as a keyboard, mouse, pen, voice input device, touch input device, etc. Output device(s) 116 such as a display 118 that is suitable for displaying a graphical user interface may also be included. The output devices(s) 116 may also include speakers, printer, etc. All these devices are well known in the art and need not be discussed at length here.
Exemplary Host Control System, in Accordance with an Embodiment FIG. 2 illustrates a block diagram for a host control system 200, in accordance with various embodiments. The host control system 200 is operable to interface with a display device 118. The host control system 200 includes a number of UI components 231-233. In one embodiment, at least one of the UI components (e.g., UI component 231) is built on a different design than another UI component (e.g., UI component 232). As used herein, �different designs� may involve different programming languages (e.g., Visual Basic, Avalon, C++, etc.), different UI technologies within a programming language (e.g., Microsoft Foundation Class, non-Microsoft Foundation Class, Win32), or incompatible internal designs within a technology.
It should be appreciated that host control system 200 as illustrated in FIG. 2 resembles a tree structure, with the host UI 220 serving as a parent node for the child nodes corresponding to the UI components 231-233. Similarly each UI component (e.g., UI component 231) may serve as a parent node (or �sub-host�) for child nodes corresponding to sub-UI components (e.g., sub-UI components 241-242) that compose the parent UI component (e.g., UI component 231). For example, UI component 231 may have sub-UI components 241-242. Moreover, sub-UI component 241 may be built on a different design than sub-UI component 242. In such a case, the UI component 231 is operable to interface with the sub-UI components 241-242 and present them as a single integrated sub-UI to the host UI 220. Subsequently, the host UI 220 may then interface with UI component 231 and the other UI components 232-233 and present them, including any of their sub-UI interfaces 241-242, together as a single integrated UI.
In one embodiment, the host UI 220 includes a registry 220A, which the host UI 220 is operable to analyze to determine which UI components are registered with the host UI 220 and therefore need to be included in the integrated UI. Similarly, UI component 231, which has sub-UI components 241-242, may also have a corresponding registry 231A with which sub-UI components 241-242 may register. A registry system eliminates having to hard code the identification of the various UI components 231-233 into the host UI 220. Consequently, and beneficially, the list of UI components that a particular host UI 220 hosts can be a dynamic list, such that UI components can be added or removed without requiring that the host UI 220 or other UI components 231-233 be recompiled. For example, in one embodiment, adding a new UI component to the integrated UI involves simply registering the new UI component with the host UI 220. Thereafter, the next time the host UI 220 initializes, it will analyze the registry 220A and determine that it needs to initialize the new UI component. Conversely, a UI component may just as easily be removed by unregistering the UI component with the host UI 220. This concept of hosted UIs and UI registration is very attractive from a developmental standpoint in that a developer can fine-tune individual UI components without having to recode and recompile the entire graphical user interface. Thus, a �final version� of a graphical user interface can be released. Subsequently, an enhancement to the graphical user interface (such as a new toolbar) can be added without having to recode the entire graphical user interface.
Moreover, the host UI 220 can also add or remove UI components 231-233 �on-the-fly.� For example, a new button, toolbar, etc., may need to be displayed in response to a user action. In such a case, the host UI 220 is operable to create an instance of the new component UI. As a part of initializing the new component UI, the host UI 220 is operable, if necessary, to resize existing components 231-233 in order to accommodate the new component UI.
In host control system 200, certain operations such as searching and cycling focus through various UI components (i.e., �tabbing�) may continue to be utilized despite the fact that the integrated user interface may be non-monolithic. Such operations may be implemented a number of ways.
In the case of tabbing, for example, the UI components 231-233 upon initialization may each create a �tab stop array� of all tab-able controls in the child items. In the case of UI component 231, which has sub-UI components 241-242, the sub-UI components 241-242 may each create their own tab stop arrays and then pass them up to the UI component 231. The UI component 231 may then merge the tab stop arrays from sub-UI component 241 and sub-UI component 242 with an array of its own tab-able controls. Similarly, the UI components 231-233 then pass their respective tab stop arrays up to the host UI 220, which creates a master tab stop array from these arrays. Thus, the host UI 220 is able to determine the succession of tab-able commands based on the master tab stop array.
Alternatively, tabbing may be implemented as a recursive function on the UI components 231-233. For example, the host UI 220 may call a �TabToNextItem� function on the UI component corresponding to an item that is currently in focus. If the UI component is able to handle the call (i.e., the UI component has another tab-able item in succession to the current item), the UI component updates the focus to the next tab-able item and indicates to the host UI 220 that the call has been handled. If the UI component is not able to handle the call (i.e., the tab-able item currently in focus is the last tab-able item of the UI component), the UI component indicates to the host that the call is not handled. Thereafter, the host UI 220 may call TabToNextItem on the next UI component, and so on, until the call is successfully handled. Similarly, if the call is passed to UI component 231, for instance, UI component 231 may in turn successively call TabToNextItem on its sub-UI components. Handling tabbing recursively is advantageous in that a tab stop array does not need to be rebuilt if, for example, a UI component is repositioned or when a UI component is changed by splitting a control into multiple controls dynamically.
Exemplary Host Control Operations, in Accordance with an Embodiment The following discussion sets forth in detail the operation of present technology for presenting an integrated UI. With reference to FIGS. 4-8, flowcharts 400, 430A, 450A, 480A, and 480B each illustrate example operations used by various embodiments of the present technology for presenting an integrated UI. Flowcharts 400, 430A, 450A, 480A, and 480B include processes that, in various embodiments, are carried out by a processor under the control of computer-readable and computer-executable instructions. The computer-readable and computer-executable instructions reside, for example, in data storage features such as computer usable memory 104, removable storage 108, and/or non-removable storage 110 of FIG. 1. The computer-readable and computer-executable instructions are used to control or operate in conjunction with, for example, processing unit 102 of FIG. 1. Although specific operations are disclosed in flowcharts 400, 430A, 450A, 480A, and 480B, such operations are examples. That is, embodiments are well suited to performing various other operations or variations of the operations recited in flowcharts 400, 430A, 450A, 480A, and 480B. It is appreciated that the operations in flowcharts 400, 430A, 450A, 480A, and 480B may be performed in an order different than presented, and that not all of the operations in flowcharts 400, 430A, 450A, 480A, and 480B may be performed.
In one embodiment, maintenance operations may be optionally run in the background (block 450) to update the integrated UI. FIG. 6 illustrates a flowchart 450A for a process for performing maintenance operations, in accordance with various embodiments of the present invention. At block 610, a new UI component may be added to the integrated UI without recompiling the host UI. In one embodiment, this may involve registering the new component in a registry. In another embodiment, this may involve adding a previously dormant component UI to the integrated UI in response to a user action (e.g., clicking a particular button). It should be appreciated that a component UI may similarly be removed from the integrated UI (block 620). Furthermore, a component UI may be changed without recompiling the host UI (block 630). In other words, a developer may modify a single UI component that forms a part of a larger integrated UI, and because of the host UI interface, it is therefore not necessary to recompile either the host UI or any other UI components. In essence, UI components consequently become �pluggable.� At block 640, the integrated UI is then refreshed to incorporate any modifications made in blocks 610-630.
Alternatively, FIG. 8 illustrates a flowchart 480B of another process for cycling focus through items associated with UI components, in accordance with various embodiments. Initially, the UI component corresponding to an item currently in focus is accessed, for example, by the host UI (block 810). At block 820, a determination is made as to whether the current UI component being accessed contains the next item in line for focus. For example, with reference to FIG. 3, if the �Reply All� button of toolbar 314 is currently in focus, then the toolbar 314 contains the next item in line (i.e., the �Forward� button). If the current UI component does contain the next item in line for focus, the current UI component then cycles focus to the next item (block 830). Thus, toolbar 314 would cycle focus from the Reply All button to the Forward button. On the other hand, if the Forward button (i.e., the last button) of toolbar 314 is currently in focus, then the toolbar 314 does not contain the next item in line. If the current UI component does not contain the next item in line for focus, the next UI component (e.g., folder list 316) is accessed (block 840). Block 820 and 840 may be repeated as necessary until the next item in line is brought to focus. It should be appreciated that if a UI component further contains sub-UI components, operations similar to those in flowchart 480A may be performed with respect to sub-UI components.
Patent CitationsCited PatentFiling datePublication dateApplicantTitleUS5640579Jul 24, 1995Jun 17, 1997Microsoft CorporationMethod and system for logically partitioning a view of a document object from a frame in which the document object is displayedUS5673401 *Jul 31, 1995Sep 30, 1997Microsoft CorporationSystems and methods for a customizable sprite-based graphical user interfaceUS6021418Feb 18, 1997Feb 1, 2000International Business Machines CorporationApparatus and method for displaying control-objectsUS6247020Dec 17, 1997Jun 12, 2001Borland Software CorporationDevelopment system with application browser user interfaceUS6252592 *Jun 24, 1997Jun 26, 2001International Business Machines CorporationSystems, methods and computer program products for scanning graphically represented elementsUS6342907Oct 19, 1998Jan 29, 2002International Business Machines CorporationSpecification language for defining user interface panels that are platform-independentUS6427230 *Nov 9, 1998Jul 30, 2002Unisys CorporationSystem and method for defining and managing reusable groups software constructs within an object management systemUS6964034Apr 20, 2000Nov 8, 2005International Business Machines CorporationApplication development server and a mechanism for providing different views into the same constructs within a strongly encapsulated environmentUS7111243 *Dec 28, 2001Sep 19, 2006Oracle International CorporationCustomization of tab-order functionality in internet applicationsUS7506273 *Mar 19, 2003Mar 17, 2009International Business Machines CorporationMethod and system for modifying properties of graphical user interface componentsUS20040027376Aug 8, 2002Feb 12, 2004Calder Dale E.Displaying information over multiple user interface (UI) viewsUS20050091641Oct 23, 2003Apr 28, 2005Starbuck Bryan T.System and method for modifying a host user interfaceUS20050149206Dec 24, 2003Jul 7, 2005Rolf KraneUnified personalizationUS20050172237 *Feb 2, 2004Aug 4, 2005International Business Machines CorporationSystem and method for tab order mapping of user interfacesUS20050268277Jun 1, 2004Dec 1, 2005Uwe ReederDynamic contextsUS20060036726Jul 12, 2004Feb 16, 2006Vieo, Inc.User interface for a distributed computing environment and method of using the sameUS20060161859Jan 18, 2005Jul 20, 2006Microsoft CorporationMulti-application tabbing systemUS20060236328 *Dec 10, 2004Oct 19, 2006Siemens Medical Solutions Usa, Inc.Integrated graphical user interface server for use with multiple client applicationsUS20070180386 *Dec 28, 2001Aug 2, 2007Alan BallardCustomization of user interface presentation in an internet application user interface* Cited by examinerNon-Patent CitationsReference1Furtado, et al., "An Ontology-Based Method for Universal Design of User Interfaces", in Proceedings of Workshop on Multiple User Interfaces over the Internet: Engineering and Applications Trends, Sep. 2001.2Kubalski, et al., "Object Works Interaction Model-Integrating Multiple Views", Date: 1993, http://ieeexplore.ieee.org/xpl/freeabs-all.jsp?arnumber=388410.3Kubalski, et al., "Object Works Interaction Model-Integrating Multiple Views", Date: 1993, http://ieeexplore.ieee.org/xpl/freeabs�all.jsp?arnumber=388410.4Reiss, Steven P., "PECAN: Program Development Systems That Support Multiple Views", Date: 1984, http://delivery.acm.org/10.1145/810000/801988/p324-reiss.pdf?key1=801988&key2=6524797611&coll=GUIDE&dl=GUIDE&CFID=8354933&CFTOKEN=54441509.5Roth, et al., "Visage: A User Interface Environment for Exploring Information" in Proceedings of the IEEE Symposium on Information Visualization, Oct. 1996.Referenced byCiting PatentFiling datePublication dateApplicantTitleUS7979500 *Nov 19, 2009Jul 12, 2011International Business Machines CorporationEmail composition and processingUS8656287 *Apr 11, 2011Feb 18, 2014Ricoh Company, Ltd.Information processing apparatus, information processing system, and information processing methodUS8832203 *Oct 8, 2008Sep 9, 2014International Business Machines CorporationSingle touch e-mail managementUS20090228807 *Sep 30, 2008Sep 10, 2009Lemay Stephen OPortable Multifunction Device, Method, and Graphical User Interface for an Email ClientUS20100088379 *Oct 8, 2008Apr 8, 2010International Business Machines CorporationSingle touch e-mail managementUS20100325565 *Jun 17, 2009Dec 23, 2010EchoStar Technologies, L.L.C.Apparatus and methods for generating graphical interfacesUS20110271199 *Apr 11, 2011Nov 3, 2011Ricoh Company, Ltd.Information processing apparatus, information processing system, and information processing method* Cited by examinerClassifications U.S. Classification715/744, 717/113, 715/746, 715/763, 715/825, 717/109, 717/107, 715/762, 717/108International ClassificationG06F3/00Cooperative ClassificationG06F9/4443European ClassificationG06F9/44WLegal EventsDateCodeEventDescriptionJan 28, 2014FPAYFee paymentYear of fee payment: 4May 24, 2011CCCertificate of correctionJun 28, 2007ASAssignmentOwner name: MICROSOFT CORPORATION, WASHINGTONFree format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:JAIN, MANOJ;DAS, ARCHAN;REEL/FRAME:019490/0894Effective date: 20070328RotateOriginal ImageGoogle Home - Sitemap - USPTO Bulk Downloads - Privacy Policy - Terms of Service - About Google Patents - Send FeedbackData provided by IFI CLAIMS Patent Services©2012 Google