Traditionally, the Internet has been a platform that enables the retrieval and display of static content. Today, the Internet is becoming a platform that enables users to create and manage rich content. For example, several leading companies provide Internet-based services that enable users to create and manage word-processing documents, spreadsheets, presentations, and other types of rich content.
To create and manage rich content, a web page may include a control surface. The control surface is a set of user-selectable controls. When the user selects a control in the control surface, a functionality associated with the selected control is provided without navigating the user away from the page. For example, the control surface may include a boldface control that, when selected, makes selected text in the web page bold. In another example, the control surface may include a control that, when selected, spell checks a comment and a control that, when selected, adds the comment post to a blog.
A server computing system stores a base definition file containing a hierarchy of elements defining a default control surface. In addition, the server computing system stores an extension definition file containing one or more elements defining a customized control surface based on the default control surface. The server computing system generates a modified version of the base definition file in which each element in the base definition file having an identifier corresponding to an identifier of an element in the extension definition file is modified in a way indicated by the element in the extension definition file. The server computing system uses the modified version of the base definition file to generate a resource used by a client computing system to present the customized control surface in a user interface.
This summary is provided to introduce a selection of concepts in a simplified form. These concepts 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 this summary intended as an aid in determining the scope of the claimed subject matter.
As briefly described above, this disclosure is directed to techniques for deployment of a customized control surface. This disclosure describes the techniques with reference to the attached figures. The attached figures are examples. It should be understood that the attached figures do not represent a sole way of implementing the techniques of this disclosure.
As illustrated in the example of
In addition to client computing system 104, system 100 includes a server computing system 106. Server computing system 106 is an electronic computing system. Like client computing system 104, server computing system 106 may include a wide variety of different types of electronic computing devices. For instance, server computing system 106 may include any of the types of electronic computing devices described above.
In the example of
System 100 also includes a network 110. Network 110 is an electronic communication network. Network 110 facilitates electronic communication between client computing system 104 and server computing system 106. Network 110 may be implemented in a variety of ways. For example, network 110 may be a wide-area network, such as the Internet. In other examples, network 110 may be a local-area network, a metropolitan-area network, or another type of electronic communication networks. Network 110 may include wired and/or wireless data links. A variety of communications protocols may be used in network 110. Such communications protocols include, but are not limited to, Ethernet, Transmission Control Protocol (TCP), Internet Protocol (IP), Hypertext Transfer Protocol (HTTP), SOAP, remote procedure call (RPC) protocols, user datagram protocol (UDP), IPSec, Resource Reservation Protocol (RSVP), Internet Control Message Protocol (ICMP) and/or other types of communications protocols.
Server computing system 106 hosts a plurality of network-accessible resources. For example, server computing system 106 may host a website containing a plurality of web pages. The network-accessible resources may include a wide variety of resources. For example, the network-accessible resources may include web pages, media streams, digital images, media files, document files, network-accessible application programming interfaces, extensible markup language (XML) files, executable files, and/or other types of resources.
Each network-accessible resource hosted by server computing system 106 is associated with a resource identifier. For example, each network-accessible resource hosted by server computing system 106 may be associated with a uniform resource locator (URL).
To access a resource hosted by server computing system 106, client computing system 104 sends a resource request to server computing system 106 via network 110. The resource request specifies a resource identifier of the resource. Client computing system 104 may use a variety of communications protocols to send the resource request to server computing system 106. In a first example, client computing system 104 may use the SOAP protocol to send the resource request to server computing system 106. In a second example, client computing system 104 may use the HTTP protocol to send the resource request to server computing system. In this second example, the resource request is an HTTP request specifying a resource name of the resource and a host name of server computing system 106.
Upon receiving the resource request, server computing system 106 retrieves from data storage system 108 a source file associated with the requested resource. Server computing system 106 may perform a variety of actions of the source file. For example, if the requested resource is an ASP.NET web page, the source file is an XML document defining the content of the ASP.NET web page. In this example, server computing system 106 processes the source file to generate an HTML file that server computing system 106 sends to client computing system 104. In another example, if the requested resource is a digital image file, the source file may contain the digital image file. In this example, client computing system 104 may simply forward the digital file to client computing system 104.
Server computing system 106 hosts one or more control surface resources. A control surface resource is a file containing information usable by a client computing system to deploy a control surface in a user interface. As used in this disclosure, a control surface is a set of user-selectable controls. In one example, a control surface may be a control ribbon. Upon receiving a resource request for a control surface resource, server computing system 106 automatically retrieves a base definition file from data storage system 108. The base definition file comprises a hierarchy of elements. The hierarchy of elements in the base definition file defines a default control surface. The user interface may be a wide variety of graphical user interfaces. For example, the user interface may be a web page, a user interface of a general purpose client application, a user interface of a special purpose client application, or another type of graphical user interface.
Each element in the base definition file is associated with an identifier. No two elements in the base definition file are associated with the same identifier. The identifiers may be implemented in a variety of ways. For example, the identifiers may be implemented as text strings, alphanumeric strings, integers, floating point numbers, and data of other data types.
The base definition file may be implemented in a variety of ways. For example, the base definition file may be implemented as an XML file. In this example, each element in the hierarchy of elements in the base definition file is an XML element. Furthermore, in this example, each element includes an attribute specifying the identifier of the element.
In addition, server computing system 106 automatically retrieves at least one applicable extension definition file from data storage system 108. An extension definition file comprises a hierarchy of elements defining a customized control surface based on the default control surface. Each element in the extension definition file is associated with an identifier. The extension definition file may be implemented in a variety of ways. For example, the extension definition file may be implemented as an XML file. In this example, each element in the hierarchy of elements in the extension definition file is an XML element. Furthermore, in this example, each element includes an attribute specifying the identifier of the element. Each element in the extension definition file explicitly or implicitly indicates an action.
After retrieving the base definition file and the extension definition file, server computing system 106 automatically generates a modified version of the base definition file. In one example, server computing system 106 generates the modified version of the base definition file by first generating a base parse tree. The base parse tree contains nodes representing each element in the base definition file. In one example implementation, each node is a data structure having members for each attribute of an element. The nodes in the base parse tree have same hierarchical structure as the elements in the base definition file. For example, the base definition file may include a first element and a second element, the first element being a parent of the second element. In this example, the base parse tree includes a first node and a second node. The first node represents the first element and the second node represents the second element. In this example, the first node is a parent of the second node. Server computing system 106 also automatically generates an extension parse tree. The extension parse tree contains nodes representing each element in the extension definition file.
As described in detail below with regard to
After generating the modified version of the base definition file, server computing system 106 automatically uses the modified version of the base definition file to generate the requested control surface resource. Server computing system 106 then sends the requested control surface resource to client computing system 104. As described below with reference to
An administrator is able to define extension definition files. By defining appropriate extension definition files the administrator is able to effectively change the default control surface defined by the base definition file into a customized control surface suitable for a particular native application, web application, web site, web page, or web part. For instance, the administrator is able to define extension definition files that remove tabs, controls, groups of controls, menus, and so on from the default control surface. Further, the administrator is able to define extension definition files that add tabs, controls, groups of controls, menus, buttons, and so on to the default control surface.
In this way, the extension definition file acts to replace a default control surface with a customized control surface. The customized control surface may include more or fewer controls than the default control surface.
As illustrated in the example of
Interface module 200 enables server computing system 106 to send and receive information on network 110. When interface module 200 receives a resource request, interface module 200 provides the resource request to server application 202. As described below with reference to
As briefly described above, base definition file 206 comprises a hierarchy of elements defining a default control surface. In one example implementation, base definition file 206 defines the default control surface such that the default control surface includes one or more tabs. Each tab comprises a tab title and a control area. The tab title of a tab includes the name of the tab. The control area of a tab is an area capable of containing one or more controls. The tab titles of each tab in the control surface are presented along the top of the control surface. As described below, clicking on a tab title of a tab causes the command area of the tab to be displayed. For example, base definition file 206 may include a set of tabs that facilitate the management of a blog. In this example, base definition file 206 may include a “Posts” tab and a “Comments” tab. The “Posts” tab includes controls enabling the user to manage blog posts and the “Comments” tab includes controls enabling the user to manage comments.
Controls in a control area of a tab may be divided into one or more control groups. A control group is a visual grouping of logically associated controls. Each control group has a title and a control area. Continuing the previous example, the posts tab may include a control group with the title “New” and a control group with the title “Posts.” Controls in the “New” control group enable a user to create a new blog post. Controls in the “Posts” group enable a user to manage existing blog posts.
A control group may include a variety of different types of controls. For instance, a control group may include button controls, drop-down box controls, check box controls, menu controls, and so on. Continuing the above example, the “New” control group may contain a single button labeled “New Post” and the “Posts” group may contain buttons labeled “Edit Post,” “View Post,” “Manage Permissions,” “Delete Post,” and so on. In this example, base definition file 206 may appear as follows:
In this above example, elements defining controls for the “Posts” group and some attributes of the elements have been omitted for sake of brevity. Note in the above example, that each element includes a unique identifier.
In this disclosure, interface module 200, server application 202 and host application 204 are referred to as functional modules of server computing system 106. The functional modules of server computing system 106 may be implemented in a wide variety of ways. In a first example, one or more of the functional modules of server computing system 106 may be implemented as sets of instructions stored at a data storage system. In this first example, a processing unit within server computing system 106 may execute the sets of instructions, thereby causing server computing system 106 to perform the behaviors associated with one or more of the functional modules of server computing system 106. As used in this disclosure, a processing unit is a set of one or more physical electronic integrated circuits that are capable of executing instructions. In a second example, one or more of the functional modules of server computing system 106 are implemented as one or more application-specific integrated circuits (ASICs). The ASICs cause server computing system 106 to perform the behaviors associated with one or more of the functional modules of server computing system 106. In this second example, the ASICs may be specifically designed to perform the behaviors associated with one or more of the functional modules of server computing system 106.
As illustrated in the example of
In this disclosure, interface module 300 and web browser application 302 are referred to as functional modules of client computing system 104. The functional modules of client computing system 104 may be implemented in a wide variety of ways. In a first example, one or more of the functional modules of client computing system 104 may be implemented as sets of instructions stored at a data storage system. In this first example, a processing unit within client computing system 104 may execute the sets of instructions, thereby causing client computing system 104 to perform the behaviors associated with one or more of the functional modules of client computing system 104. In a second example, one or more of the functional modules of client computing system 104 are implemented as one or more ASICs. The ASICs cause client computing system 104 to perform the behaviors associated with one or more of the functional modules of client computing system 104. In this second example, the ASICs may be specifically designed to perform the behaviors associated with one or more of the functional modules of client computing system 104.
Initially, server application 202 receives a resource request (402). The resource request requests a resource hosted by server computing system 106. The resource request includes a resource identifier that identifies the requested resource.
In response to receiving the resource request, server application 202 identifies a host application associated with the requested resource (404). Server application 202 may identify the host application in a variety of ways. For example, server application 202 may identify the host application based on the data type of the requested resource. In another example, server application 202 may identify the host application based on the website containing in the requested resource. In this disclosure, it is assumed that server application 202 identifies host application 204 as the host application associated with the requested resource.
After server application 202 identifies host application 204 as the host application associated with the requested resource, server application 202 provides the resource identifier of the requested resource to host application 204 (406). Server application 202 may provide the resource identifier of the requested resource to host application 204 in a variety of ways. For example, server application 202 may provide the resource identifier of the requested resource to host application 204 by invoking a method of host application 204 and providing the resource identifier as a parameter of the method.
Subsequently, server application 202 receives the requested resource from host application 204 (408). Server application 202 may receive the requested resource from host application 204 in a variety of ways. For example, server application 202 may receive the requested resource from host application 204 as a return parameter of a method invoked when server application 202 provided the resource identifier to host application 204.
Upon receiving the requested resource, server application 202 provides the requested resource to interface module 200 for delivery to client computing system 104 via network 110 (410).
Operation 500 starts when host application 204 receives a resource identifier from server application 202 (502). In response to receiving the resource identifier, host application 204 automatically retrieves base definition file 206 from data storage system 108 (504).
Host application 204 then automatically identifies one or more of extension definition files 208 as applicable to the requested resource (506). Host application 204 may identify one or more of extension definition files 208 as applicable to the requested resource in a variety of ways. For example, host application 204 may determine that extension definition file 208A is applicable to the requested resource when the requested resource is associated with a particular web application associated with extension definition file 208A. Furthermore, in this example, host application 204 may determine that extension definition file 208B is applicable to the requested resource when the requested resource is in a particular website associated with extension association file 208B. Furthermore, in this example, host application 204 may determine that extension definition file 208C is applicable to the requested resource when the requested resource is in a particular webpage associated with extension definition file 208C. Extension association table 210 in data storage system 108 may store data associating extension definition files 208 with individual resources or groups of resources hosted by server computing system 106. After identifying the applicable extension definition files, host application 204 retrieves the applicable extension definition files from data storage system 108 (508).
After host application 204 retrieves the applicable extension definition files, host application 204 automatically generates an initial parse tree of base definition file 206 (510). As described briefly above, the parse tree is a data structure comprising a set of nodes. Each node in the parse tree represents an element in base definition file 206. The nodes are linked together to represent the parent-child relationships among the elements in base definition file 206.
Each node is a data structure comprising one or more properties. The properties of a node include an identifier property. The identifier property of a node stores the identifier of the node. For example, the identifier property of a node representing a “<tab Id=“surface.tab.blog”> . . . </tab>” in base definition file 206 may have the value “surface.tab.blog.” Further, the properties of a node include a type property. The type property of a node stores a value indicating an element type. For example, the type property of a node representing a “<tab . . . > . . . </tab>” element in base definition file 206 may have the value “tab.” In one example implementation, a node representing an element in base definition file 206 has a property for each attribute of the element.
Host application 204 may generate a parse tree for all or part of the base definition file. In one example implementation, a first resource identifier identifies a control surface resource based on only those elements of base definition file 206 that are tab elements or ancestors of tab elements. In this example implementation, when host application 204 receives this resource identifier, host application 204 does not include in the parse tree any nodes representing child nodes of tab elements. Furthermore, in this example implementation, additional resource identifiers identify control surface resources based on only those elements of base definition file 206 that are tab elements or descendants of tab elements. In this example implementation, when host application 204 receives one of these resource identifiers, host application 204 only includes in the parse tree nodes representing a tab node and descendant nodes of the tab node. As described below with reference to
After generating the parse tree, host application 204 automatically generates parse trees for each applicable extension definition file (512). The parse trees for the applicable extension definition files are data structures comprising sets of nodes. Each node in a parse tree for an extension definition file represents an element in the extension definition file. The nodes in the parse tree for the extension definition file are linked together to represent the parent-child relationships among the elements in the extension definition file. Furthermore, each node in the parse tree for the extension definition file includes properties storing attributes of represented elements of the extension definition file.
Next, host application 204 automatically pushes references to each of the applicable extension definition files onto an extension stack (514). The extension stack is a stack data structure capable of storing references to applicable extension definition files. As mentioned briefly above, extension definition files are associated with differing scopes of applicability. For instance, a first extension definition file may be applicable to an entire web application, a second extension definition file may be applicable to a site collection within the application, a third extension definition file may be applicable to a site within the site collection, and so on. Associating extension definition files with differing scopes enables an administrator to customize control surfaces for various purposes. Host application 204 pushes the references to the applicable extension definition files onto the extension stack starting with a most-specific one of the applicable extension definition files and progressing to the least-specific one of the applicable extension definition files. For example, if the applicable extension definition files include a first extension definition file associated with a site collection and a second extension definition file associated with a site within the site collection, host application 204 first pushes a reference to the second extension definition file onto the extension stack and then pushes a reference to the first extension definition file onto the extension stack.
After pushing the references to each of the applicable extension definition files on the extension stack, host application 204 automatically determines whether the extension stack is empty (516). In other words, host application 204 automatically determines whether the extension stack includes any references to applicable extension definition files.
In response to determining that the extension stack is not empty (“NO” of 516), host application 204 automatically pops a reference to a current extension definition file from the extension stack (518). Popping a reference to a current extension definition file from the extension stack removes the reference to the most-general remaining applicable extension definition file from the extension stack.
Next, host application 204 modifies the parse tree of base definition file 206 using the parse tree of the current extension definition file (520). An example operation of host application 204 to modify the parse tree of base definition file 206 using the parse tree of the current extension definition file is explained below with reference to
In response to determining that the extension stack is empty (“YES” of 516), host application 204 automatically uses the modified parse tree of base definition file 206 to generate the requested control surface resource (522). In the example of
After generating the requested control surface resource, host application 204 automatically adds a legacy extension tab to the requested control surface resource (524). The legacy extension tab is a tab within the control surface. The legacy extension tab includes user-selectable controls added using other control surface editing systems. For example, a previous version of host application 204 may have included a control surface customization extension point. In this example, a programmer may register a block of code to the control surface customization extension point. In this example, when the previous version of host application 204 receives a request for a control surface, the previous version of host application 204 executes all blocks of code registered to the control surface customization extension point. In this example, the block of code registered to the control surface customization extension point may add custom controls to the requested control surface. Because an enterprise may have invested considerable resources in developing the block of code, the enterprise may not want to do away with the block of code in favor of the customization technique described above. In this example, host application 204 uses the block of code to generate user-selectable controls in a separate legacy controls tab. In this way, the custom controls of the block of code are still available.
After using the modified parse tree of base definition file 206 to generate the requested control surface resource, host application 204 automatically returns the requested control surface resource to server application 202 (526). Host application 204 may return the requested control surface resource to server application 202 in a variety of ways. For example, host application 204 may return the requested control surface resource to server application 202 as a return object of a method of host application 204 invoked by server application 202. As explained above with reference to
Operation 600 begins when host application 204 pushes a root node of the base parse tree onto a node stack (602). The node stack is a stack data structure capable of storing references to nodes. Next, host application 204 automatically determines whether the node stack is empty (604). In other words, host application 204 automatically determines whether the node stack includes any references to any nodes.
In response to determining that the node stack is not empty (“NO” of 604), host application 204 automatically pops a reference to a current node off the node stack (606). Popping the reference to the current node off the node stack removes the reference to the current node from the node stack.
Next, host application 204 determines whether the identifier of the current node corresponds to an identifier of a node in the current extension parse tree (608). For example, the identifier property of current node may have a value of “surface.tabs.blog.” In this example, host application 204 determines whether any node in the current extension parse tree has an identifier property having the value “surface.tabs.blog.” In the example of
In response to determining that the identifier of the current node does not correspond to an identifier of any node in the current extension parse tree (“NO” of 608), host application 204 automatically pushes onto the node stack references to each child node of the current node (610). For example, if the current node has two child nodes, host application 204 automatically pushes references to each of these child nodes onto the node stack. In another example, if the current node does not have any child nodes, host application 204 does not push any reference to any node onto the node stack. After pushing onto the node stack references to each child node of the current node, host application 204 loops back and again determines whether the node stack is empty (604).
On the other hand, in response to determining that the identifier of the current node corresponds to an identifier of a node in the current extension parse tree (“YES” of 608), host application 204 automatically determines whether the action indicated by the corresponding node is an add child action (612). In one example implementation, host application 204 determines whether the action indicated by the corresponding node is an add child action by determining whether an action property of the corresponding node specifies the add child action.
In response to determining that the action indicated by the corresponding node is an add child action (“YES” of 612), host application 204 automatically adds the corresponding subtree to the base parse tree as a child subtree of the current node (614). Thus, if the current node had two child subtrees, host application 204 would add the corresponding subtree as a third subtree of the current node. A child subtree of a node is a child node of the node and each descendant node of the child node.
After adding the corresponding subtree to the base parse tree as a child subtree of the current node, host application 204 pushes onto the node stack references to each child node of the current node (616). Because host application 204 has already added the corresponding subtree to the parse tree, the references pushed onto the node stack include a reference to the corresponding node. After pushing onto the node stack references to each child node of the current node, host application 204 automatically loops back and again determines whether the node stack is empty (604).
In response to determining that the action indicated by the corresponding node is not an add child action (“NO” of 612), host application 204 automatically determines whether the action indicated by the corresponding node is a remove action (618). In response to determining that the action indicated by the corresponding node is a remove action (“YES” of 618), host application 204 automatically removes the current node's subtree from the base parse tree (620). The current node's subtree comprises the current node and all descendant nodes of the current node. In this way, the current extension definition file may act to remove controls from the control surface. For example, the current node may represent a tab element defining a tab in the control surface. In this example, the remove action of the corresponding node effectively removes the tab from the control surface. After removing the current node's subtree from the base parse tree, host application 204 automatically loops back and again determines whether the node stack is empty (604).
In response to determining that the action indicated by the corresponding node is not the remove action (“NO” of 618), host application 204 automatically determines whether the action indicated by the corresponding node is a replace action (622). If host application 204 determines that the action indicated by the corresponding node is a replace action (“YES” of 622), host application 204 replaces the current node with the corresponding node (624). For example, assume that the current node represents the following element in base definition file 206: “<group Id=“surface.blog.posts.posts” title=“Posts”>. . . </group>” and assume that the corresponding node represents the following element in the current extension definition file: “<group Id=“surface.blog.posts.posts” title=“My Posts”>. . . </group>.” In this example, the replace action effectively replaces the title attribute “Posts” with the title attribute “My Posts.” Replacing the current node with the corresponding node does not replace the current node's descendant nodes with the corresponding node's descendant nodes or otherwise change the current node's descendant nodes.
After replacing the current node with the corresponding node, host application 204 automatically pushes onto the node stack references to each child node of the current node (626). Host application 204 then automatically loops back and again determines whether the node stack is empty (604).
In response to determining that the action indicated by the corresponding node is not the replace action (“NO” of 622), host application 204 automatically removes the current node's subtree from the base parse tree (628). Next, host application 204 automatically adds the corresponding subtree to the base parse tree in place of the current node's subtree (630). In this way, host application 204 effectively replaces the current node and the current node's descendant nodes with the corresponding node and the corresponding node's descendant nodes. For example, an administrator may consider the first group of controls unnecessary in a given scope but considers the second group of controls to be necessary in the given scope. Accordingly, in this example, the administrator designs the extension definition file such that the extension definition file includes an element defining the second group of controls, the element specifying the identifier of an element in the base definition file defining the first group of controls. In this example, if the current node represents the element defining the first group of controls, the corresponding node represents the element defining the second group of controls. In this way, the second group of controls replaces the first group of controls.
After adding the corresponding node's subtree to the base parse tree, host application 204 automatically pushes onto the node stack references to each child node of the corresponding node (632). Host application 204 then automatically loops back and again determines whether the node stack is empty (604).
In response to determining that the node stack is empty (“YES” of 604), host application 204 has finished modifying the base parse tree using the current extension parse tree (634).
In the example of
Subsequently, web browser application 302 receives the web page from server computing system 106 via network 110 (704). The web page includes one or more scripts that operate to deploy a control surface within the web page. The scripts may be formatted in a variety of ways. For example, the scripts may be formatted as JavaScript scripts, VBScript scripts, or may be formatted in another scripting language. The scripts include a control surface request script. In one example implementation, the web page includes one or more control surface resource URLs. The control surface resource URLs identify control surface resources. As described below, web browser application 302 may use the control surface resource URLs to request the control surface resources from server computing system 106. To facilitate caching at web browser application 302, server computing system 106 may, in one example implementation, generate the control surface resource URLs such that the control surface resource URLs include a hash parameter representative of the extension definition files currently installed at server computing system 106. For instance, in this example implementation, the hash parameter may be a hash value calculated over each of extension definition files 208.
After receiving the web page, web browser application 302 renders and displays the web page (706). Rendering the web page entails processing the received web page to generate a property-formatted viewable document. Web browser application 302 displays this document. As described below, the event handlers listen for events occurring in the web page. In addition, web browser application 302 begins execution of any of the scripts that are meant to be executed when the web page is received.
In the example of
After initiating property polling, web browser application 302 registers event handlers specified by the scripts in the web page (710). Event handlers are portions of the scripts executed when particular events occur. In one example implementation, the control surface request script includes an on-load event handler. After web browser application 302 registers the event handlers, web browser application 302 initiates an event detection loop.
During the event detection loop, web browser application 302 first detects whether an on-load event has occurred (712). In response to detecting an on-load event, web browser application 302 sends a request for a control surface resource to server computing system 106 (714). Web browser application 302 requests the control surface resource because the control surface request script in the web page includes an event listener that listens for the on-load event. To request the control surface resource, web browser application 302 sends a control surface request to server computing system 106. The control surface request includes the URL identifying the control surface resource.
After sending the request for the control surface resource, web browser application 302 receives the control surface resource from server computing system 106 (716). In one example implementation, when web browser application 302 receives the control surface resource, web browser application 302 caches the control surface resource. In this example implementation, whenever web browser application 302 is instructed to receive a resource identified by a given URL, web browser application 302 determines whether the cache contains a resource identified by the given URL. If the cache does not contain a resource identified by the given URL, web browser application 302 requests the resource from a server associated with the given URL. If the cache contains a resource identified by the given URL, web browser application 302 returns the resource in the cache instead of requesting the resource from the server associated with the URL. Consequently, the next time web browser application 302 is instructed to retrieve a resource identified by the URL identifying the control surface resource, web browser application 302 retrieves the control surface resource from the cache instead of requesting the control surface resource from server computing system 106. As mentioned above, the control surface resource URL includes a hash parameter that is dependent on the extension definition files installed at server computing system 106. Furthermore, as mentioned above, server computing system 106 includes the updated control surface resource URL in the web page. Consequently, when web browser application 302 requests the web page, web browser application 302 determines that the cache does not contain a resource identified by the updated control surface resource URL and requests the control surface resource from server computing system 106. In this way, server computing system 106 effectively causes web browser application 302 to request the control resurface resource from server computing system 106 whenever changes occur to the extension definition files installed at server computing system 106.
When web browser application 302 receives the control surface resource, the surface request script causes web browser application 302 to update the web page to include a control surface based on the control surface resource (718). In one example implementation, the control surface resource is a JSON file. In this example implementation, the surface request script parses the JSON file and uses the resulting parse tree to generate HTML code. In this example implementation, the surface request script then builds one or more Document Object Model (DOM) objects and adds these DOM objects to the web page. In example implementation and/or other implementations, the surface request script adds the HTML code to the web page, thereby causing the web page to include the control surface.
In one example implementation, the HTML code defines a table structure. Each cell in the data structure contains a control element associated with a different control. Control elements may be implemented as a variety of HTML elements. For example, control elements may be implemented as paragraph elements, image elements, form elements, list elements, input elements, label elements, layer elements, link elements, option elements, select elements, button elements, applet elements, anchor elements, and/or other types of HTML elements.
Each control element is associated with a control script and may include one or more event handlers. For example, a control element defining a control may include a control script. In this example, the control script includes an on-click event handler, an on-mouseover event handler, and an on-mouseout event handler. When web browser application 302 adds a control element to the web page, web browser application 302 registers the event handlers in the control element's control script. Registering the event handlers enables the event handlers to receive events.
After updating the web page to include the control surface in step 718 or when web browser application 302 does not detect an on-load event (“NO” of 712), web browser application 302 detects whether an on-click event on a control element has occurred (720). If an on-click event on a control element has occurred (“YES” of 720), web browser application 302 executes the on-click event handler of the control script of the control element (722). An on-click event handler may cause web browser application 302 to perform a variety of activities. For example, the control surface may include a plurality of tab controls. When the user clicks on a control element defining one of the tab controls, web browser application 302 executes an on-click event handler for the control element. In this example, the on-click event handler causes the web browser application 302 to send a resource request to server computing system 106. In this example, the resource request indicates a resource identifier of the tab. When server computing system 106 receives this resource request, server computing system 106 may perform operations 400, 500, and 600 illustrated in
In a second example, the user clicks on a menu control. In this second example, the on-click event handler associated with the menu control updates the web page to display a menu containing a plurality of menu controls. Each menu control in the plurality of menu controls is associated with a different functionality. The on-click event handler uses the properties bag generated by the property polling script to determine which of the menu controls should be enabled and which of the menu controls should be disabled. In one example implementation, disabled menu controls may have a different appearance than enabled menu controls.
If web browser application 302 determines that no on-click event has occurred (“NO” of 720), web browser application 302 determines whether an on-mouseover event has occurred on a control element (724). If an on-mouseover event has occurred (“YES” of 724), web browser application 302 executes an on-mouseover event handler of the control script of the control element (726). The on-mouseover event handler may cause web browser application 302 to perform a variety of activities. For example, the on-mouseover event handler of the control script of an image control element may change the image from a first image to a second image. In this example, changing the image control element from the first image to the second image visually indicates to the user that the functionality associated with image control element will be invoked if the user presently presses the primary mouse button.
If web browser application 302 determines that no on-mouseover event has occurred (“NO” of 724), web browser application 302 determines whether an on-mouseout event has occurred on a control element (728). If web browser application 302 determines that an on-mouseout event has occurred on the control element (“YES” of 728), web browser application 302 executes an on-mouseout event handler of the control script of the control element (730). The on-mouseout event handler may cause web browser application 302 to perform a variety of activities. Continuing the example of the previous paragraph, the on-mouseout event handler may cause of the control script of an image control element to change the image from the second image to the first image. In this example, changing the image from the second image to the first image visually indicates to the user that the functionality associated with the control element will not be invoked if the user presently presses the primary mouse button.
In addition, electronic computing device 800 comprises a processing unit 804. As mentioned above, a processing unit is a set of one or more physical electronic integrated circuits that are capable of executing instructions. In a first example, processing unit 804 may execute software instructions that cause electronic computing device 800 to provide specific functionality. In this first example, processing unit 804 may be implemented as one or more processing cores and/or as one or more separate microprocessors. For instance, in this first example, processing unit 804 may be implemented as one or more Intel Core 2 microprocessors. Processing unit 804 may be capable of executing instructions in an instruction set, such as the x86 instruction set, the POWER instruction set, a RISC instruction set, the SPARC instruction set, the IA-64 instruction set, the MIPS instruction set, or another instruction set. In a second example, processing unit 804 may be implemented as an ASIC that provides specific functionality. In a third example, processing unit 804 may provide specific functionality by using an ASIC and by executing software instructions.
Electronic computing device 800 also comprises a video interface 806. Video interface 806 enables electronic computing device 800 to output video information to a display device 808. Display device 808 may be a variety of different types of display devices. For instance, display device 808 may be a cathode-ray tube display, an LCD display panel, a plasma screen display panel, a touch-sensitive display panel, a LED array, or another type of display device.
In addition, electronic computing device 800 includes a non-volatile storage device 810. Non-volatile storage device 810 is a computer-readable data storage medium that is capable of storing data and/or instructions. Non-volatile storage device 810 may be a variety of different types of non-volatile storage devices. For example, non-volatile storage device 810 may be one or more hard disk drives, magnetic tape drives, CD-ROM drives, DVD-ROM drives, Blu-Ray disc drives, or other types of non-volatile storage devices.
Electronic computing device 800 also includes an external component interface 812 that enables electronic computing device 800 to communicate with external components. As illustrated in the example of
In addition, electronic computing device 800 includes a network interface card 818 that enables electronic computing device 800 to send data to and receive data from an electronic communication network. Network interface card 818 may be a variety of different types of network interface. For example, network interface card 818 may be an Ethernet interface, a token-ring network interface, a fiber optic network interface, a wireless network interface (e.g., WiFi, WiMax, etc.), or another type of network interface.
Electronic computing device 800 also includes a communications medium 820. Communications medium 820 facilitates communication among the various components of electronic computing device 800. Communications medium 820 may comprise one or more different types of communications media including, but not limited to, a PCI bus, a PCI Express bus, an accelerated graphics port (AGP) bus, an Infiniband interconnect, a serial Advanced Technology Attachment (ATA) interconnect, a parallel ATA interconnect, a Fiber Channel interconnect, a USB bus, a Small Computer System Interface (SCSI) interface, or another type of communications medium.
Electronic computing device 800 includes several computer-readable data storage media (i.e., memory unit 802, non-volatile storage device 810, and external storage device 816). Together, these computer-readable storage media may constitute a single data storage system. As discussed above, a data storage system is a set of one or more computer-readable data storage mediums. This data storage system may store instructions executable by processing unit 804. Activities described in the above description may result from the execution of the instructions stored on this data storage system. Thus, when this description says that a particular logical module performs a particular activity, such a statement may be interpreted to mean that instructions of the logical module, when executed by processing unit 804, cause electronic computing device 800 to perform the activity. In other words, when this description says that a particular logical module performs a particular activity, a reader may interpret such a statement to mean that the instructions configure electronic computing device 800 such that electronic computing device 800 performs the particular activity.
The techniques of this disclosure may be realized in many ways. For example, the techniques of this disclosure may be realized as a method for implementing a customized control surface. The method comprises automatically retrieving, by a server computing system, a base definition file, the base definition file comprising a first hierarchical set of elements, the first hierarchical set of elements defining a default control surface, the default control surface comprising a plurality of user-selectable controls. The method also comprises automatically retrieving, by the server computing system, an extension definition file, the extension definition file comprising a second hierarchical set of elements, the second hierarchical set of elements defining a customized control surface based on the default control surface. In addition, the method comprises automatically generating, by the server computing system, a modified version of the base definition file in which each element in the base definition file having an identifier corresponding to an identifier of an element in the extension definition file is modified in a way indicated by the element in the extension definition file. Furthermore, the method comprises automatically using, by the server computing system, the modified version of the base definition file to generate a requested control surface resource. Moreover, the method comprises automatically sending, by the server computing system, the control surface resource to a client computing system, the client computing system configured to use the control surface resource to present the customizable control surface in a user interface.
In another example, the techniques of this disclosure may be realized as an electronic computing system comprising a processing unit and a data storage system. The data storage system stores a base definition file comprising a first hierarchical set of elements, the first hierarchical set of elements defining a default control surface, the default control surface comprising a plurality of user-selectable controls. The data storage system also stores an extension definition file comprising a second hierarchical set of elements, the second hierarchical set of elements defining a customized control surface based on the default control surface. In addition, the data storage system stores computer-executable instructions that, when executed by the processing unit, cause the electronic computing system to receive a resource request sent by a client computing system, the resource request specifying a resource identifier of a control surface resource. The instructions also cause the electronic computing system to automatically identify, in response to receiving the resource request, the extension definition file from among a plurality of extension definition files. In addition, the instructions cause the electronic computing system to automatically generate a modified version of the base definition file in which each element in the base definition file having an identifier corresponding to an identifier of an element in the extension definition file is modified in a way indicated by the element in the extension definition file. Moreover, the instructions cause the electronic computing system to automatically use the modified version of the base definition file to generate the control surface resource. In addition, the instructions cause the electronic computing system to automatically send the control surface resource to the client computing system, the client computing system configured to use the control surface resource to present the customized control surface in a user interface.
In another example, the techniques of this disclosure may be realized as a computer-readable medium comprising computer-executable instructions that, when executed by a processing unit of an electronic computing system, cause the electronic computing system store a base definition file comprising a first hierarchical set of elements, the first hierarchical set of elements defining a default control surface, the default control surface comprising a plurality of user-selectable controls. The instructions also cause the electronic computing system to store a plurality of extension definition files, each extension definition file in the plurality of extension definition files comprising hierarchical sets of elements defining customized control surfaces based on the default control surface, the plurality of extension definition files including an applicable extension definition file comprising an applicable hierarchical set of elements, the applicable hierarchical set of elements defining an applicable customized control surface based on the default control surface. In addition, the instructions cause the electronic computing system to receiving, a web page request from a client computing system via an electronic communication network, the web page request including a resource identifier of a web page. Furthermore, the instructions send, in response to the web page request, the web page to the client computing system via the electronic communication network, the web page including scripts configuring the client computing system to send a resource request to the electronic computing system. In addition, the instructions cause the electronic computing system to receive the resource request from the client computing system via an electronic communication network, the resource request specifying a resource identifier of the control surface resource. The instructions also cause the electronic computing system to automatically identify, in response to receiving the resource request, the applicable extension definition file from among the plurality of extension definition files. Moreover, the instructions cause the electronic computing system to automatically generate a base parse tree, each node in the base parse tree representing an element in the first hierarchical set of elements, each node in the base parse tree linked together to represent parent-child relationships among the elements in the first hierarchical set of elements. In addition, the instructions cause the electronic computing system to automatically generate an extension parse tree, the extension parse tree comprising a second set of nodes, each node in the extension parse tree representing an element in the applicable hierarchical set of elements, each node in the extension parse tree linked together to represent parent-child relationships among the elements in the applicable hierarchical set of elements. The instructions also cause the electronic computing system to automatically push a reference to a root node of the base parse tree onto a node stack. Furthermore, the instructions cause the electronic computing system to automatically determine whether the node stack is empty. In addition, the instructions cause the electronic computing system to automatically pop from the node stack a reference to a current node in the base parse tree, the electronic computing system automatically popping the reference to the current node in response to determining that the node stack is not empty. In addition, the instructions cause the electronic computing system to automatically determine whether an identifier of the current node corresponds to an identifier of a corresponding node in the extension parse tree. The instructions also cause the electronic computing system to automatically push, in response to determining that the identifier of the current node does not correspond to an identifier of any node in the extension parse tree, references to each child node of the current node onto the node stack. The instructions also cause the electronic computing system to automatically determine, in response to determining that the identifier of the current node corresponds to the identifier of the corresponding node, whether an action indicated by the corresponding node is an add child action. In addition, the instructions cause the electronic computing system to automatically add, in response to determining that the action indicated by the corresponding node is an add child action, a subtree of the corresponding node to the base parse tree as a child of the current node. Moreover, the instructions cause the electronic computing system to push, in response to determining that the action indicated by the corresponding node is an add child action, references to each child node of the current node onto the node stack. In addition, the instructions cause the electronic computing system to automatically determine, in response to determining that the identifier of the current node corresponds to the identifier of the corresponding node, whether the action indicated by the corresponding node is a remove action. The instructions also cause the electronic computing system to automatically remove, in response to determining that the action indicated by the corresponding node is a remove action, a subtree of the current node from the base parse tree. Moreover, the instructions cause the electronic computing system to automatically determine, in response to determining that the identifier of the current node corresponds to the identifier of the corresponding node, whether the action indicated by the corresponding node is a replace action. In addition, the instructions cause the electronic computing system to automatically replace, in response to determining that the action indicated by the corresponding node is a replace action, the current node with the corresponding node without replacing the subtree of the current node with the subtree of the corresponding node. In addition, the instructions cause the electronic computing system to push, in response to determining that the action indicated by the corresponding node is a replace action, references to each child node of the current node onto the node stack. Moreover, the instructions cause the electronic computing system to automatically determine, in response to determining that the identifier of the current node corresponds to the identifier of the corresponding node, whether the action indicated by the corresponding node is a replace subtree action. In addition, the instructions cause the electronic computing system to automatically replace, in response to determining that the action indicated by the corresponding node is a replace subtree action, the subtree of the current node with the subtree of the corresponding node. The instructions also cause the electronic computing system to automatically push, in response to determining that the action indicated by the corresponding node is a replace subtree action, references to each child node of the corresponding node onto the node stack. In addition, the instructions cause the electronic computing system to automatically use, in response to determining that the node stack is empty, the base parse tree to generate the control surface resource. Furthermore, the instructions cause the electronic computing system to automatically send the control surface resource to the client computing system, the client computing system configured to use the control surface resource to present the customized control surface in the web page.
Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.
Number | Name | Date | Kind |
---|---|---|---|
5155806 | Hoeber et al. | Oct 1992 | A |
5377354 | Scannell et al. | Dec 1994 | A |
5500936 | Allen et al. | Mar 1996 | A |
5519606 | Frid-Nielsen et al. | May 1996 | A |
5533184 | Malcolm et al. | Jul 1996 | A |
5559944 | Ono | Sep 1996 | A |
5570109 | Jenson | Oct 1996 | A |
5588107 | Bowden et al. | Dec 1996 | A |
5596694 | Capps | Jan 1997 | A |
5625783 | Ezekiel et al. | Apr 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 | Sep 1997 | A |
5721847 | Johnson | Feb 1998 | A |
5734915 | Roewer | Mar 1998 | A |
5760768 | Gram | Jun 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 |
5796393 | MacNaughton et al. | Aug 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 |
5838321 | Wolf | Nov 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 |
5885006 | Sheedy | Mar 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 |
5914714 | Brown | Jun 1999 | A |
5926806 | Marshall et al. | Jul 1999 | A |
5936625 | Kahl et al. | Aug 1999 | A |
5940078 | Nagarajayya 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 |
6002395 | Wagner et al. | Dec 1999 | A |
6008806 | Nakajima et al. | Dec 1999 | A |
6012075 | Fein et al. | Jan 2000 | A |
6018343 | Wang et al. | Jan 2000 | A |
6034683 | Mansour et al. | 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 |
6188401 | Peyer | Feb 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 |
6278450 | Arcuri et al. | Aug 2001 | B1 |
6289317 | Peterson | Sep 2001 | B1 |
6307544 | Harding | Oct 2001 | B1 |
6323883 | Minoura et al. | Nov 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 |
6429882 | Abdelnur et al. | Aug 2002 | B1 |
6433801 | Moon et al. | Aug 2002 | B1 |
6433831 | Dinwiddie | Aug 2002 | B1 |
6456304 | Angiulo et al. | Sep 2002 | B1 |
6459441 | Perroux et al. | Oct 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 |
6618732 | White et al. | Sep 2003 | B1 |
6621504 | Nadas et al. | Sep 2003 | B1 |
6621508 | Shiraishi et al. | Sep 2003 | B1 |
6624831 | Shahine et al. | Sep 2003 | B1 |
6635089 | Burkett et al. | Oct 2003 | B1 |
6664983 | Ludolph | Dec 2003 | B2 |
6680749 | Anderson et al. | Jan 2004 | B1 |
6686938 | Jobs et al. | Feb 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 |
6826729 | Giesen 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 |
6924797 | MacPhail | Aug 2005 | B1 |
6931623 | Vermeire et al. | Aug 2005 | B2 |
6956429 | Elbanhawy | Oct 2005 | B1 |
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 |
6990654 | Carroll, Jr. | Jan 2006 | B2 |
7016864 | Notz et al. | Mar 2006 | B1 |
7027463 | Mathew et al. | Apr 2006 | B2 |
7032210 | Alloing 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 |
7117436 | O'Rourke et al. | Oct 2006 | B1 |
7152207 | Underwood et al. | Dec 2006 | B1 |
7174361 | Paas | Feb 2007 | B1 |
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 | May 2007 | B2 |
7234132 | Lam | Jun 2007 | B2 |
7240323 | Desai | Jul 2007 | B1 |
7249325 | Donaldson | Jul 2007 | B1 |
7281245 | Reynar et al. | Oct 2007 | B2 |
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 |
7356537 | Reynar et al. | Apr 2008 | B2 |
7360174 | Grossman et al. | Apr 2008 | B2 |
7386535 | Kalucha et al. | Jun 2008 | B1 |
7386835 | Desai | Jun 2008 | B1 |
7392249 | Harris et al. | Jun 2008 | B1 |
7395540 | Rogers | Jul 2008 | B2 |
7426713 | Duggan et al. | Sep 2008 | B2 |
7472374 | Dillman et al. | Dec 2008 | B1 |
7484213 | Mathew et al. | Jan 2009 | B2 |
7505954 | Heidloff et al. | Mar 2009 | B2 |
7509628 | Hilerio et al. | Mar 2009 | B2 |
7530029 | Satterfield et al. | May 2009 | B2 |
7567964 | Brice et al. | Jul 2009 | B2 |
7610575 | Sproule | Oct 2009 | B2 |
7627561 | Pell et al. | Dec 2009 | B2 |
7769698 | Matic | Aug 2010 | B2 |
7779386 | Seitz et al. | Aug 2010 | B2 |
7827546 | Jones et al. | Nov 2010 | B1 |
7860901 | Cheng et al. | Dec 2010 | B2 |
7886290 | Dhanjal et al. | Feb 2011 | B2 |
7908580 | Stubbs et al. | Mar 2011 | B2 |
7925621 | Sikchi et al. | Apr 2011 | B2 |
7949963 | Pham et al. | May 2011 | B1 |
8046683 | Larcheveque et al. | Oct 2011 | B2 |
8239882 | Dhanjal et al. | Aug 2012 | B2 |
8302014 | Guadarrama et al. | Oct 2012 | B2 |
20020007380 | Bauchot et al. | Jan 2002 | A1 |
20020036662 | Gauthier et al. | 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 | De Boor et al. | Jun 2002 | A1 |
20020083097 | Warrington | Jun 2002 | A1 |
20020091739 | Ferlitsch et al. | Jul 2002 | A1 |
20020122071 | Camara et al. | Sep 2002 | A1 |
20020133557 | Winarski | Sep 2002 | A1 |
20020135621 | Angiulo et al. | Sep 2002 | A1 |
20020140731 | Subramaniam et al. | Oct 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 |
20020163538 | Shteyn | Nov 2002 | A1 |
20020175955 | Gourdol et al. | Nov 2002 | A1 |
20020196293 | Suppan et al. | Dec 2002 | 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 |
20030043211 | Kremer et al. | Mar 2003 | A1 |
20030066025 | Garner et al. | Apr 2003 | A1 |
20030070143 | Maslov | 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 | Jul 2003 | A1 |
20030160821 | Yoon | Aug 2003 | A1 |
20030163455 | Dettinger et al. | Aug 2003 | A1 |
20030167310 | Moody et al. | Sep 2003 | A1 |
20030167315 | Chowdhry 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 |
20030227481 | Arend 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 | Jun 2004 | A1 |
20040128275 | Moehrle | Jul 2004 | A1 |
20040133854 | Black | Jul 2004 | A1 |
20040142720 | Smethers | Jul 2004 | A1 |
20040153373 | Song et al. | Aug 2004 | A1 |
20040153968 | Ching | Aug 2004 | A1 |
20040164983 | Khozai | Aug 2004 | A1 |
20040168153 | Marvin | Aug 2004 | A1 |
20040181471 | Rogers | Sep 2004 | A1 |
20040186775 | Margiloff 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 | Baschy | Dec 2004 | A1 |
20040243938 | Weise et al. | Dec 2004 | A1 |
20040268231 | Tunning | Dec 2004 | A1 |
20050004990 | Durazo et al. | Jan 2005 | A1 |
20050005249 | Hill et al. | Jan 2005 | A1 |
20050010871 | Ruthfield 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 | Apr 2005 | A1 |
20050097511 | Bergman 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 |
20050154765 | Seitz et al. | Jul 2005 | A1 |
20050172262 | Lalwani | Aug 2005 | A1 |
20050183008 | Crider et al. | Aug 2005 | A1 |
20050203975 | Jindal et al. | Sep 2005 | A1 |
20050216863 | Schumacher et al. | Sep 2005 | A1 |
20050223329 | Schwartz et al. | Oct 2005 | A1 |
20050240902 | Bunker 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 |
20060015816 | Kuehner | Jan 2006 | A1 |
20060020962 | Stark | Jan 2006 | A1 |
20060036580 | Stata et al. | Feb 2006 | A1 |
20060036945 | Radtke 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 |
20060053383 | Gauthier et al. | Mar 2006 | A1 |
20060059035 | Kraft | Mar 2006 | A1 |
20060069684 | Vadlamani et al. | Mar 2006 | A1 |
20060080303 | Sargent et al. | Apr 2006 | A1 |
20060080363 | Vadlamani et al. | Apr 2006 | A1 |
20060080468 | Vadlamani 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 |
20060165105 | Shenfield et al. | Jul 2006 | A1 |
20060173824 | Bensky | Aug 2006 | A1 |
20060200432 | Flinn et al. | Sep 2006 | A1 |
20060218500 | Sauve et al. | Sep 2006 | A1 |
20060224946 | Barrett | Oct 2006 | A1 |
20060242557 | Nortis, III | Oct 2006 | A1 |
20060242575 | Winser | Oct 2006 | A1 |
20060242591 | Van Dok | Oct 2006 | A1 |
20060253830 | Rajanala et al. | Nov 2006 | A1 |
20060294452 | Matsumoto | Dec 2006 | A1 |
20070006075 | Lection et al. | Jan 2007 | A1 |
20070006206 | Dhanjal et al. | Jan 2007 | A1 |
20070006327 | Lal et al. | Jan 2007 | A1 |
20070016857 | Polleck et al. | Jan 2007 | A1 |
20070050401 | Young et al. | Mar 2007 | A1 |
20070055936 | Dhanjal | Mar 2007 | A1 |
20070055943 | McCormack | 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 |
20070083813 | Lui et al. | Apr 2007 | A1 |
20070094597 | Rostom | Apr 2007 | A1 |
20070094608 | Getsch | Apr 2007 | A1 |
20070106951 | McCormack et al. | May 2007 | A1 |
20070143671 | Paterson et al. | Jun 2007 | A1 |
20070156519 | Agassi et al. | Jul 2007 | A1 |
20070179841 | Agassi et al. | Aug 2007 | A1 |
20070185826 | Brice et al. | Aug 2007 | A1 |
20070234290 | Ronen et al. | Oct 2007 | A1 |
20070240057 | Satterfield et al. | Oct 2007 | A1 |
20070260996 | Jakobson | Nov 2007 | A1 |
20070279417 | Garg et al. | Dec 2007 | A1 |
20070283287 | Taylor et al. | Dec 2007 | A1 |
20070300168 | Bosma et al. | Dec 2007 | A1 |
20080034304 | Feuerbacher et al. | Feb 2008 | A1 |
20080040682 | Sorenson et al. | Feb 2008 | A1 |
20080077571 | Harris et al. | Mar 2008 | A1 |
20080141156 | Reik | Jun 2008 | A1 |
20080178110 | Hill et al. | Jul 2008 | A1 |
20080209316 | Zandstra | Aug 2008 | A1 |
20080263462 | Mayer-Ullmann | Oct 2008 | A1 |
20090007003 | Dukhon et al. | Jan 2009 | A1 |
20090031295 | Zhao | Jan 2009 | A1 |
20090034618 | Fu et al. | Feb 2009 | A1 |
20090064090 | Anonson | Mar 2009 | A1 |
20090083656 | Dukhon et al. | Mar 2009 | A1 |
20090100009 | Karp | Apr 2009 | A1 |
20090163183 | O'Donoghue et al. | Jun 2009 | A1 |
20090205013 | Lowes | Aug 2009 | A1 |
20090217192 | Dean et al. | Aug 2009 | A1 |
20090217263 | Gebhart et al. | Aug 2009 | A1 |
20090222763 | Dukhon et al. | Sep 2009 | A1 |
20090249339 | Larsson et al. | Oct 2009 | A1 |
20090259950 | Sullivan et al. | Oct 2009 | A1 |
20100146478 | Head et al. | Jun 2010 | A1 |
20100199261 | Shenfield et al. | Aug 2010 | A1 |
20110296322 | Dhanjal et al. | Dec 2011 | A1 |
20110307798 | Lezama Guadarrama et al. | Dec 2011 | A1 |
Number | Date | Country |
---|---|---|
101243439 | Jun 2012 | CN |
1 077 405 | Feb 2001 | EP |
1077405 | Feb 2001 | EP |
1 462 999 | Sep 2004 | EP |
1 542 133 | Jun 2005 | EP |
2004-512578 | Apr 2004 | JP |
10-2002-0004723 | Jan 2002 | KR |
10-2003-0070685 | Sep 2003 | KR |
10-2005-0023805 | Mar 2005 | KR |
10-2005-0036702 | Apr 2005 | KR |
10-2008-0021262 | Mar 2008 | KR |
149803 | Oct 2013 | MY |
WO 03003240 | Jan 2003 | WO |
WO 2005103900 | Nov 2005 | WO |
WO 2007027737 | Mar 2007 | WO |
2009123801 | Oct 2009 | WO |
Entry |
---|
Clifton, Marc; The Application Automation Layer—Using XML to Dynamically Generate GUI-Elements—Forms and Controls, Copyright 2003, 37 pages. |
U.S. Official Action dated Mar. 30, 2010 in U.S. Appl. No. 11/217,071. |
U.S. Non-Final Office Action dated Sep. 21, 2010 in U.S. Appl. No. 11/217,071. |
Charles Rich et al., “Segmented Interaction History in a Collaborative Interface Agent,” 1997, ACM, pp. 23-30. |
Andrew Dwelly, “Functions and Dynamic User Interface,” 1989, ACM, pp. 371-381. |
G. Kurtenbach et al., “The Hotbox: Efficient Access to a Large Number of Menu-items,” CHI 99 15-20, pp. 231-237, May 1999. |
Charles Rich et al., “Adding a Collaborative Agent to Graphical User Interfaces,” 1996, ACM, pp. 21-30. |
Boyce, “Microsoft Outlook Inside Out,” 2001, pp. 67, 68, 109, 110, 230, 231, 310, 316-318, 798. |
Halvorson et al., “Microsoft Office XP Inside Out,” 2001, pp. 1005-1009, 1015, 1023-1028, 1036-1039, 1093. |
Riggsby et al., “Mastering Lotus Notes and Domino 6,” 2003, pp. 135-139. |
Riggsby et al., “Mastering Lotus Notes and Domino 6,” 2003, pp. 135-138, 607-612. |
Khare et al., “The Origin of (Document) Species,” University of California, 1998, 9 pgs. |
“Separate Structure and Presentation,” http://www.webreference.com/html/tutorial5/1.html, Aug. 20, 1998, 4 pgs. |
“The Style Attribute and CSS Declarations,” http://www.webreference.com/html/tutorial5/2, Aug. 20, 1998, 4 pgs. |
“What's Hot in Internet Services?” http://www.webreference.com/html/tutorial5/3, Aug. 20, 1998, 3 pgs. |
“The Style Element & CSS Selectors,” http://www.webreference.com/html/tutorial5/4.html, Aug. 20, 1998, 3 pgs. |
http://www.webreference.com/html/tutorial5/5.html, Aug. 20, 1998, 3 pgs. |
“ID & Class Selectors, Pseudoclasses,” http://www.webreference.com/html/tutorial5/6.html, Aug. 20, 1998, 3 pgs. |
http://www.webreference.com/html/tutorial5/7.html, Aug. 20, 1998, 3 pgs. |
http://www.webreference.com/html/tutorial5/8.html, Aug. 20, 1998, 2 pgs. |
“External Style Sheets,” http://www.webreference.com/html/tutorial5/9.html, Aug. 20, 1998, 3 pgs. |
Raman, “Cascaded Speech Style Sheets,” 1997, 7 pgs. |
“Primary Windows,” http://www-03.ibm.com/servers/eserver/iseries/navigator/guidelines/primary.html, 23 pgs. |
Schumaker, “User Interface Standards,” http://msdn2.microsoft.com/en-us/library/aa217660(office.11.d=printer).aspx, Sep. 2001, 5 pgs. |
Budinsky et al., “WebSphere Studio Overview,” http://researchweb.watson.ibm.com/journal/sj/432/budinsky.html, May 6, 2004, 25 pgs. |
Gordon Padwick, Using Microsoft Outlook 2000, Que, Sp. Ed., May 1999, 5 pp. |
Becker et al., “Virtual Folders: Database Support for Electronic Messages Classification,” Pontificia Universidade Catolica do Rio Grande do Sul, Porto Alegre, Brazil, pp. 163-170. |
Goldberg et al., “Using Collaborative Filtering to Weave an Information Tapestry,” Communication of the ACM, vol. 35, No. 12, pp. 61-70, Dec. 1992. |
Liu et al., “Continual Queries for Internet Scale Event-Driven Information Delivery,” IEEE Transactions on Knowledge and Data Engineering, vol. 11, Issue 1, pp. 610-628, 1999. |
Chen et al., “NiagaraCQ: A Scalable Continuous Query System for Internet Databases,” Int. Conf. on Management of Data, Proc. of the 2000 ACM SIGMOD Int. Conf. on Management of Data, pp. 379-390, 2000. |
Marshall School of Business: “Workshop IV—Calendar,” http://www.marshall.usc.edu/computing/PDF—Files/Outlook/Workshop4, PDF, Apr. 10, 2000, pp. 1-4. |
M. Williams, “Programming Windows NT4: Unleashed,” Sams Publishing, Indianapolis, 1996, pp. index & 167-185. |
“Microsoft Outlook 2000: Introduction to Calendar,” Version Mar. 25, 2002, http://www.uakron.edu/its/learning/training/docs/Calendar032502.pdf, Mar. 25, 2002, pp. 1-52. |
Screen Dumps of Microsoft Outlook (1999, pp. 1-3). |
“To-do List—effective task management software” [on line], Aug. 3, 2004, http://web.archive.org/web/20040804103245/www.htpshareware.com/todolist/changes.txt and http://web.archive.org/web/20040803075026/www.htpshareware.com/todolist/index.htm>. |
“Rainy's Rainlendar” [online], Aug. 12, 2004, http://web.archive.org/web/20040811043048/www.ipi.fi/˜rainy/Rainlendard/Manual.html and http://web.archive.org/web/20040812092939/http://www.ipi.fi/˜rainy/index.php?pn=probjects&project=rainlendar>. |
Microsoft Windows XP Professional, Version 2002, Service pack 2, 3 pgs. |
Camarda, Using Microsoft Word 97, copyright 1997, Que Corporation, pp. 412, 869. |
Marshall School of Business, Workshop 1—Introduction to Outlook & E-mail, Apr. 6, 2000, pp. 1-11. |
Jane Dorothy Calabria Burke, Ten Minute Guide to Lotus Notes 4.6, Publication date: Dec. 23, 1997, 2 pgs. |
Bill Dyszel, Microsoft Outlook 2000 for Windows for Dummies, Copyright 1999, pp. 82-86, 102-103, 141,143. |
Gina Danielle Venolia et al., Understanding Sequence and Reply Relationships within Email Conversations: A Mixed-Model Visualization, CHI 2003, Apr. 5-10, 2003, vol. No. 5, Issue No. 1, pp. 361-368. |
Screen Dumps Microsoft Corporation, Microsoft Office Professional Edition 2003, 4 pp. |
Screen Dumps Microsoft Corporation, Microsoft Office Professional Edition 2003, 5 pp. |
Habraken, Microsoft Office XP 8 in 1, published Jun. 5, 2001, http://proquest.safaribooksonline.com/0789725096/, 12 pp. |
Word 2002, Chapter 14; Paradigm Publishing Inc., copyright 2002; http://www.emcp.com/tech—tutorials/sig—irc/Signature—Word—Chapter—14.ppt, 21 pp. |
Microsoft Office Word 2003, Part of Microsoft Office Professional Edition 2003, 1983-2003 Microsoft Corporation, 5 pp. |
Microsoft Office 11 Beta Layperson's Specification, Copyright 2002, Microsoft Corporation, 28 pages. |
FrontPage 11 Beta Layperson's Specification, Copyright 2002, Microsoft Corporation, 12 pages. |
Office 11 Beta Letter, Copyright 2002, Microsoft Corporation, 6 pages. |
Microsoft XDocs Beta Layperson Specification, Copyright 2002, Microsoft Corporation, 3 pages. |
Microsoft Publisher 11 Beta Layperson's Specification, Copyright 2002, Microsoft Corporation, 13 pages. |
Microsoft Office Word 2003, Part of Microsoft Office Professional Edition 2003, 1983-2003 Microsoft Corporation, screen shot 1, 1 pp. |
Microsoft Office 2003, Microsoft Office Professional Edition 2003, Microsoft Corporation, 10 pages. |
Screendumps—Microsoft Office, Microsoft Office Professional Edition 2003, Microsoft Corporation, 10 pages. |
Screendumps—Microsoft Office Outlook, Microsoft Office Outlook Professional Edition 2003, Microsoft Corporation, 2 pages. |
Nielsen, Jacob. “Tabs, Used Right,” Alertbox, Sep. 17, 2007, http://www.useit.com/alertbox/tabs.html, 6 pages. |
“Managing the Code Editor and View” Microsoft Corporation, http://msdn.microsoft.com/en-us/library/z01zks9a(VS.71).aspx, 2008. |
Agarwal, Vikash K., “Creating a Visually Arresting User-Interface: A3D Tab Control Example,” Jan. 4, 2008, http://microsoft.apress.com/asptodayarchive/71723/creating-a-visually-arresting-user-interface-a-3d-tab-control-example, 12 pages. |
“Omni Web Help,” Omni Group, 2004, http://www.omnigroup.com/documentation/omniweb/browser/tabs.html, 2 pages. |
Hepfner, Troy, “New SOCET CXP Interface Improves Usability,” Sep. 2008, http://www.socetset.com/gxpmosaic/?p=95, 4 pages. |
Billo, E. Joseph. “Creating Charts: An Introduction,” Excel for Chemists: . A Comprehensive Guide, http://www.ahut.edu.cn/yxsz/ahk/Teaching/Excel%for%20Chemists/ChQ2.pdf, 9 pages. |
Marsh, Bruce, Integrating Spreadsheet Templates and Data Analysis Into Fluid Power Instruction, Journal of Industrial Technology, vol. 16, No. 4, Aug. 2000-Oct. 2000. http://www.nait.org/jit/Articles/marsh071200.pdf, 7 pages. |
“TeeChart for .NET Charting Control,” TeeChart for NET Steema Software. http://Iwww.teechart.net. |
Oracle Discoverer Desktop User's Guide; 10g (9.0.4) for Windows; Part No. B10272-01; published 2003; http://download-uk.oracle.com/docs/cd/B12166—01/bi/B10272—01/3graph.htm; pp. 1-18. |
Lisa K. Averett; Joshua R. Knisley; Mark A. Marvin; Haiti: Projecting Tactical Network and Systems Management; 1995 IEEE pp. 906-910. |
“Convert to Word 2007,” http://www.regencytraining.com/word-2007-conversion.html, Regency Training and Consulting, 2 pages (Date Printed Apr. 21, 2008). |
“Customer Story: SourceXtreme,” SourceXtreme—Trolltech, http://trolltech.com/customers/casestories/stories/sourcextreme/?searchterm=sourcextreme, 2 pages (Date Printed Apr. 22, 2008). |
“Inter-Widget Communication,” http://web.mit.edu/6.115/www/miscfiles/amulet/amulet-help/IWC.htm, 6 pages (Feb. 13, 2007). |
“The Technology in Document and Check Security,” http://www.securedoc.in/thetechnology.htm, 7 pages (Date Printed Apr. 21, 2008). |
Ando, R. et al., “Visualization-enabled multi-document summarization by Iterative Residual Rescaling,” Natural Language Engineering, vol. 11, No. 1, pp. 67-86 (Mar. 2005) (2 page Abstract). |
Bos, B, “Re: A proposal for addition to HTML 3.0: Frames,” http://www.nyct.net/˜aray/htmlwg/95q3/1141.html, 5 pages (Sep. 21, 1995). |
de Candussio, N., “Common GUI Features Report,” Herschel CSDT Meeeting, pp. 1-21 (Sep. 2007). |
Krill, P., “Microsoft's Ribbon Interface Draws Frowns, Smiles,” InfoWorld, http://www.infoworld.com/article/08/03/04/10NF-microsoft-fluentui—1.html, 3 pages (Mar. 4, 2008). |
Rice, F, “Customizing the 2007 Office System Document Inspector,” http://msdn2.microsoft.com/en-us/library/aa338203(d=printer).aspx, 10 pages (May 2006). |
Boyce, “Microsoft Outlook Inside Out,” 2001, pp. 133, 134, 721-728. |
Halvorson et al., “Microsoft Office XP Inside Out,” 2001, pp. 4, 5, 10, 11, 70-74, 281-288, 1010-1014. |
Pogue, David. “Windows XP Home Edition: The Missing Manual,” O'Reilly, 1st Edition, May 1, 2002, pp. 37, 38, 41. |
Screendumps—Microsoft Office, Microsoft Corporation, Microsoft Office Professional Edition 2003, 13 pages. |
Berliner E.M. et al., “Microsoft Office 2003”, Feb. 24, 2004, p. 39-40, 120-124, 175-177, 233-234 [D1]. |
Berliner E.M. et al., “Microsoft Office 2003”, Feb. 24, 2004, p. 173-178 [D2]. |
Perronne et al. “Building Java Enterprise Systems with J2EE”, Publisher: Sams, Pub Date: Jun. 7, 2000 (pp. 1-8). |
Padwick, Gordon “Using Microsoft Outlook 2000”, 1999 Que Publishing, pp. 530-533. |
Slovak, Ken, “Absolute Beginner's Guide to Microsoft Office Outlook 2003,” 2003 Que Publishing, pp. 237-241. |
Microsoft Press, Microsoft Computer Dictionary, Microsoft Press, Fifth Edition, pp. 374, 382. |
Riggsby, McCoy, Haberman and Falciani, “Mastering Lotus Notes and Domino 6.” 2003, pp. 18, 22, 33-35, 47, 122, 123, 215-241, 378. |
Find any file or email on your PC as fast as you can type!, http://www.x1.com, 2003, 1 page. |
“About Google Desktop Search”, http://www.desktop.google.com/about.html, Oct. 15, 2004, 8 pages. |
“Lookout”, http://www.lookoutsoft.com, Apr. 22, 2005, 20 pages. |
“Yahoo to test desktop search”, http://news.com.com/yahoo+to+test+desktop+searcach/2100-1032—3-5486381.html, Dec. 9, 2004, 6 pages. |
“Microsoft reinvents its own wheel”, http://www.theinquirer.net/default.aspx?article=20214, Dec. 14, 2004, 5 pages. |
“Microsoft Desktop Search (beta)”, http://www.pcmag.com/article2/0.1895.1771841.00.asp, Mar. 2, 2005. |
“Windows Desktop Search”. Http://kunal.kundale.net/reviews/wds.html, Jul. 10, 2005, 7 pages. |
“Microsoft Enters Desktop Search Fray”, http://www.internetnews.com/ent-news/article.php/3447331, Dec. 13, 2004, 5 pages. |
Parry; “CREWS: A Component-Driven, Run-Time Extensible Web Service Framework”; http://eprints.ru.ac.za/74/01/Parry-MSC.pdf; Dec. 2003; 103 Pgs. |
Louw, et al.; “Extensible Web Browser Security”; http://www.cs.uic.edu/˜venkat/research/papers/extensible-browser-dimva07.pdf; pp. 1-20. |
European Office Action mailed Mar. 9, 2009, Application No. 06790087.8. |
International Search Report and Written Opinion mailed Jan. 9, 2007, Application No. PCT/US2006/033809. |
International Search Report mailed Aug. 7, 2009, Application No. PCT/US2009/034618. |
U.S. Official Action dated Nov. 25, 2008 cited in U.S. Appl. No. 11/154,278. |
U.S. Official Action dated Jun. 10, 2009 in U.S. Appl. No. 11/154,278. |
U.S. Official Action dated Nov. 13, 2009 in U.S. Appl. No. 11/154,278. |
“User Interface Architecture,” Data Master 2003, 2 pages. |
Kim et al., “Migrating Legacy Software Systems to CORBA based Distributed Environments through an Automatic Wrapper Generation Technique,” http://www.cs.colostate.edu/˜bieman/Pubs/KimBieman00.pdf, accessed on Jan. 28, 2009, 6 pages. |
Selca, Viki “Customizing the Office Fluent User interface in Access 2007,” Microsoft Corporation, Dec. 2006, 22 pages. |
European Search Report mailed Dec. 2, 2008, having Appln No. EP 06 79 0087, 7 pages. |
U.S. Appl. No. 12/814,084, filed Jun. 11, 2010 entitled “Merging Modifications to User Interface Components While Preserving User Customization”. |
U.S. Appl. No. 12/331,451, filed Dec. 10, 2008 entitled “Multi-Layered Storage and Management of Software Components” (Microsoft case). |
Non-Final Office Action mailed Sep. 15, 2009 in U.S. Appl. No. 11/217,071. |
U.S. Appl. No. 13/102,633, filed May 6, 2011 entitled “Markup Based Extensibility for User Interfaces”. |
U.S. Official Action dated Jun. 7, 2011 in U.S. Appl. No. 12/059,644. |
Australian Office Action in Application No. 2006284908 dated Oct. 21, 2010, 2 pages. |
Chinese Office Action in Application No. 200980112454.5 dated Aug. 26, 2011, 9 pages. |
Chinese Second Office Action in Application No. 200680030421.2 dated Oct. 29, 2010, 11 pages. |
International Search Report in Application No. PCT/US2011/037458 dated Feb. 9, 2012, 9 pages. |
Japanese Notice of Rejection in Application No. 2008-529218, 3 pages. |
U.S. Non-Final Office Action in U.S. Appl. No. 11/814,084 dated Jan. 19, 2012, 35 pages. |
U.S. Final Office Action in U.S. Appl. No. 12/059,644 dated Jan. 25, 2012, 16 pages. |
U.S. Official Action dated Apr. 19, 2012 in U.S. Appl. No. 13/102,633. |
Malaysian Examination Report dated Aug. 30, 2012 in Appln No. PI 20080400, 3 pages. |
U.S. Official Action dated Aug. 29, 2012 in U.S. Appl. No. 12/059,644, 30 pages. |
U.S. Official Action dated Oct. 24, 2012 in U.S. Appl. No. 13/102,633, 41 pages. |
Mexican Office Action dated Feb. 25, 2013 in Appln No. MX/a/2008/002889, 11 pgs. |
U.S. Official Action dated Jun. 3, 2013 in U.S. Appl. No. 13/102,622, 29 pgs. |
Chinese Third Office Action dated Jul. 18, 2013 cited in Appln No. 200980112454.5, 7 pgs. |
U.S. Official Action dated Jun. 21, 2013 in U.S. Appl. No. 12/059,644, 31 pages. |
Mexican Office Action dated Apr. 24, 2013 cited in MX/a/2010/010506, 8 pages. |
Mexican Office Action dated Jul. 9, 2013 in Appln No. MX/a/2008/002889, 13 pages. |
Russian Office Action dated Aug. 12, 2013 in Appln No. 2010140069, 5 pages. |
Australian Examination Report dated Nov. 22, 2013 in Appln No. 2009232301, 3 pages. |
Chinese Fourth Office Action dated Dec. 4, 2013 in Appln No. 200980112454.5, 6 pages. |
Korean Notice of Preliminary Rejection dated Feb. 22, 2013 in Appln No. 10-2008-7005078. |
U.S. Official Action dated Jan. 16, 2014 in U.S. Appl. No. 13/102,633, 45 pgs. |
U.S. Official Action dated Feb. 14, 2014 in U.S. Appl. No. 12/059,644, 20 pgs. |
Number | Date | Country | |
---|---|---|---|
20100250649 A1 | Sep 2010 | US |