Source: http://www.google.com/patents/US7281202?dq=5,825,352
Timestamp: 2014-09-30 22:04:12
Document Index: 34660599

Matched Legal Cases: ['art.\n41', 'art.\n42', 'art 102', 'art 104', 'art 106', 'art 108', 'art 110', 'art 102', 'art 108', 'art 104', 'art 110', 'art 106', 'art 403', 'art 404', 'art 403', 'art 403', 'art 403', 'art 403', 'art 404', 'art 404', 'art 404', 'art 403', 'art 403', 'art 404', 'art 502', 'art 502', 'art 520', 'arts 522', 'art 520', 'art 520', 'art 520', 'art 520', 'art 600', 'art 600', 'art 604', 'art 604', 'arts 600', 'art 708', 'art 720', 'art 722', 'arts 500', 'arts 522', 'art 500', 'art 404', 'art 1402', 'art 1402', 'art 1402', 'art 1408', 'art 1408']

Patent US7281202 - Framework for creating modular web applications - Google PatentsSearch Images Maps Play YouTube News Gmail Drive More »Sign in<nobr>Advanced Patent Search</nobr>PatentsA framework for creating modular web pages. The framework enables the development of modular, customized, and personalized web applications including web portals and web pages. The framework includes an extensible part base class and an extensible zone base class. Part controls that derive from the part...http://www.google.com/patents/US7281202?utm_source=gb-gplus-sharePatent US7281202 - Framework for creating modular web applicationsAdvanced Patent SearchPublication numberUS7281202 B2Publication typeGrantApplication numberUS 10/465,269Publication dateOct 9, 2007Filing dateJun 19, 2003Priority dateJun 19, 2003Fee statusPaidAlso published asCA2471615A1, CA2471615C, CN1627257A, EP1489494A2, EP1489494A3, US20040268228Publication number10465269, 465269, US 7281202 B2, US 7281202B2, US-B2-7281202, US7281202 B2, US7281202B2InventorsJoseph Keith Croney, Nikhil Kothari, Michael Harder, Gregory S. Lindhorst, Andres SanabriaOriginal AssigneeMicrosoft CorporationExport CitationBiBTeX, EndNote, RefManPatent Citations (14), Non-Patent Citations (4), Referenced by (15), Classifications (17), Legal Events (3) External Links: USPTO, USPTO Assignment, EspacenetFramework for creating modular web applicationsUS 7281202 B2Abstract A framework for creating modular web pages. The framework enables the development of modular, customized, and personalized web applications including web portals and web pages. The framework includes an extensible part base class and an extensible zone base class. Part controls that derive from the part base class include web part controls, editor part controls, and catalog part controls. Zone controls, editor zone controls, and catalog zone controls derive from the zone base class. Each zone control contains one or more part controls and each zone is responsible for rendering part controls within each respective zone. Web part controls can communicate with other web part controls. Web part controls can be edited, removed, or added to a zone control. The functionality of part controls can vary widely among the part controls in a particular zone and across different zones.
1. A method for enabling the creation of modular web applications, the method comprising:
providing a web application development framework comprising
a Part base class comprising at least one property selected from the group comprising Description, FrameState, FrameType, LargeIconImageUrl, Roles, SmallIconImageUrl, Title, and TitleStyle;
a plurality of web part controls including a WebPart base class, a CatalogPart base class, and an EditorPart base class,
wherein the WebPart base class, the CatalogPart base class, and the EditorPart base class each derive from the Part base class,
wherein the WebPart class includes a Connections property, a HelpURL property, and a WebPartHelpMode property,
wherein the EditorPart class includes an AllowMinimize property, a WebPartToEdit property, and a Display property,
wherein the CatalogPart includes an AvailableParts property and a web part manager property,
wherein each web part control has one or more properties that permit each part to derive and inherit properties and to be rendered automatically with other part controls and to be rendered like other part controls; a plurality of zone controls,
wherein each zone control arranges at least one of the one or more part controls within each zone, renders an user interface of each of the one or more part controls within each zone, and
wherein each zone control is configured to ensure that each of the one or more web part controls in each respective zone, in which the one or more web part controls are found, has a similar appearance by applying zone properties automatically to each web part control found in a corresponding zone, the zone controls including:
a web part zone that is used to arrange web parts contained in the web part zone,
a catalog zone that is used to arrange catalog parts contained within the catalog zone, and
an editor zone that is used to arrange editor parts contained within the editor zone; and
a web part manager that tracks
the one or more web parts on the web page,
the one or more zones on the web page, and
which of the one or more web parts are within each zone.
2. A method as defined in claim 1, wherein the one or more properties of each part control enable a particular zone control to render the user interface for each part control within the particular zone control and where a functionality of each part control is different.
3. A method as defined in claim 1, wherein the part controls are created from one or more part base classes.
4. A method as defined in claim 3, wherein the one or more part base classes include a part base class, a web part base class that derives from the part base class, a catalog part base class that derives from the part base class, and an editor part base class that derives from the part base class.
5. A method as defined in claim 4, wherein the editor part base class is used for modular controls that set control properties including one or more of personal settings, layout properties for the one or more part controls, and behavior properties for the one or more part controls.
6. A method as defined in claim 4, wherein the catalog part base class is used for modular controls that provide a catalog of web parts that can be added to at least one zone control.
7. A method as defined in claim 5, wherein the one or more zone controls are created from one or more zone base classes.
8. A method as defined in claim 7, wherein the one or more zone base classes include a zone base class used to layout controls that inherit from a part base class; a web part zone base class that derives from the zone base class and is used for web part controls; an editor zone base class that derives from the zone base class and is used to layout editor part controls used to layout editor controls, and a catalog part base class used for catalog controls.
9. A method as defined in claim 1, wherein the web part manager is a part control and each zone control registers with the web part manager.
10. A method as defined in claim 9, wherein the web part manager tracks connections between the one or more part controls and wherein the web part manager adds, removes, and moves part controls from a web page.
11. A method as defined in claim 1, wherein at least some of the one or more part controls include an interface for communicating with other part controls.
12. A method as defined in claim 11, wherein the at least some of the one or more part controls register end points of the interface with the web part manager.
13. A method as defined in claim 1, wherein at least some of the one or more part controls include a plurality of interfaces for communicating with other part controls and wherein the at least some of the one or more part controls register the plurality of interfaces with the web part manager.
14. A method as defined in claim 13, wherein at least some of the plurality of interfaces are the same interface with different semantics.
a part base class from which part controls are derived, wherein the part controls include one or more of a web part, a catalog part, and an editor part; and a zone base class from which zone controls are derived.
16. The method as set forth in claim 15, wherein each instance of a part control is defined in an instance of a zone control.
17. The method as set forth in claim 15, wherein each instance of a part control within a particular zone control has a similar user interface.
18. The method as set forth in claim 15, wherein at least some of the part controls include a connection end point for connecting with another part control within the same zone control or within another zone control.
19. The method as set forth in claim 15, wherein the editor zone is adapted to provide for user input of properties defined in the part base class.
20. The method as set forth in claim 19, wherein the properties are exportable.
21. The method as set forth in claim 20 wherein the user input of properties is exported using an XML document.
22. The method as set forth in claim 15, further comprising a web part manager class wherein the web part manager class tracks any instances of the part controls contained within the zone controls.
23. The method as set forth in claim 22, wherein a particular part control can be dragged and dropped within the same zone control or to another zone control.
24. The method as set forth in claim 15, wherein a particular catalog part is adapted to provide a list of web parts that may be selected by a user to be added to a particular zone control, wherein the particular catalog part includes means for allowing a user to select from the list of web parts that are added to the particular zone control of a web page.
25. The method set forth in claim 15, wherein each part control is declared in a persistence format file.
26. The method as set forth in claim 15, where the part base class includes one or more of:
27. The method as set forth in claim 15, wherein each web part includes one or more of:
a frame state to define if a web part is minimized, maximized or normal,
a zone index that includes an index of the zone control relative to other web parts in the zone control.
28. The method as set forth in claim 27, wherein the editor part is one or more of:
29. The method as set forth in claim 15, wherein the catalog part exposes a user interface that permits an end user to add new web parts to a web page.
30. The method as set forth in claim 15, further comprising a web part manager that manages all part controls on a particular web page, wherein the web part manager is responsible for one or more of:
31. The method as set forth in claim 30, wherein the web part manager exposes one or more methods for adding, removing, and moving part controls.
32. The method as set forth in claim 31, wherein the one or more methods are invoked by catalog parts, editor parts, and zone controls.
33. The method as set forth in claim 29 wherein the user interface may be used by an administrator to add new web parts to a web page for all users.
34. The method as set forth in claim 19 wherein the user input of properties sets those properties for all users, and the user input of properties is performed by an administrator.
35. The method as set forth in claim 15 wherein properties are defined in the part base class, those properties being definable in a persistence format by a web page developer.
37. A method as defined in claim 36, wherein declaring at least one web part control in the zone control further comprises declaring the at least one web part control in a control format file.
38. A method as defined in claim 37, further comprising declaring a web manager part, wherein the web manager part tracks the at least one web part control in each at least one zone control.
39. A method as defined in claim 38, further comprising the web manager part initiating a connection between a first web part control and a second web part control such that the first web part control communicates with the second web part control.
40. A method as defined in claim 36, further comprising exporting a particular web part or properties of the particular web part.
41. A method as defined in claim 36, further comprising importing a particular web part or properties of the particular web part.
42. A method as defined in claim 41, further comprising setting at least a portion of the properties of a current web part control using imported properties.
43. A method as defined in claim 36, further comprising defining a roles property for each web part control to specify users that can access each web part control.
44. A method as defined in claim 36 further comprising one or more of:
45. A method as defined in claim 36, further comprising using properties of the part controls to enable an end user personalize the part controls.
46. A method as defined in claim 36, further comprising using properties of the part controls to prevent an end user from personalizing the part controls.
47. A method as defined in claim 36, further comprising declaring properties in the persistence format to control the rendering of the user interface elements to all end users.
48. A method as defined in claim 36 further comprising interacting with the user interface elements of each zone control and the some user interface elements of the at least one web part control to control the similar appearance for all users.
49. A computer readable storage media having computer executable instructions for performing the method of claim 1.
50. A method as recited in claim 1, further comprising:
providing a plurality of zones, each controlled by a corresponding zone control that is configured to render user interface elements of each zone control and some user interface elements in such a manner that each of the one or more web part controls in each respective zone, in which the one or more web part controls are found, has a similar appearance.
51. A method as recited in claim 1, wherein the catalog zone provides a plurality of selectable web control parts that, after being selected, can be divided through multiple web pages.
52. A method as recited in claim 51, wherein the multiple web pages are linked.
53. A method as recited in claim 1, wherein the similar appearance includes a look and feel, a boarder and controls.
54. A method for creating modular web applications, the method comprising:
providing a framework comprising:
one or more web part controls, wherein each part control has one or more properties that permit each part to be rendered like other part controls;
one or more zone controls, wherein each zone control arranges at least one of the one or more part controls within each zone, and wherein each zone control is configured to ensure that each of the one or more web part controls in each respective zone, in which the one or more web part controls are found, has a similar appearance by applying zone properties to each web part control found in a corresponding zone, the zone controls including:
an editor zone that is used to arrange editor parts contained within the editor zone;
a web part manager that tracks which of the one or more part controls are within each zone control; and
wherein the zone properties include a PartStyle property, a PartFrameType property, a Part Title Horizontal Align property, a PartTitleStyle property, a PartVerbStyle property and a PartContentStyle property.
BRIEF SUMMARY OF THE INVENTION These and other limitations are overcome by the present invention which relates to systems and methods for creating modular, customizable web applications. More particularly, the present invention relates to an extensible framework for creating web applications such as web portals, web pages, etc. The framework includes part controls such as web parts, editor parts, and catalog parts. The framework also includes zone controls such as zones, editor zones, and catalog zones. Each zone control typically contains one or more part controls.
FIG. 1 illustrates an example of a modular web portal;
FIG. 2 illustrates the zone layout of the web portal shown in FIG. 1;
FIG. 3 illustrates another example of a modular web portal;
FIG. 4 illustrates an example of a user interface for personalizing web parts on the web page;
FIGS. 5A and 5B illustrate examples of user interface for adding web parts to a web page;
FIG. 6 illustrates connections between two web parts on a web page;
FIG. 7 illustrates a hierarchy of classes and base classes used in a web page creating framework;
FIGS. 8A, 8B and 8C illustrate parts on the web page for controlling appearance, layout and behavior;
FIG. 9 illustrates a hierarchy of classes and base classes for zone controls used in a web page creating framework;
FIG. 10 illustrates a zone layout and web part layout that can be accomplished using one embodiment of the invention;
FIG. 11 shows horizontal and vertical layouts for zones that can be accomplished using one embodiment of the invention;
FIG. 12 illustrates graphical examples of verb icons;
FIG. 13 illustrates a flow chart for determining which web parts to place in a zone; and
FIG. 14 illustrates a transformer used to connect one web part with another web part.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS The present invention extends to both methods and systems for creating modular web applications. More particularly, the present invention relates to systems and methods for creating modular web pages that support end user personalization or customization. One embodiment of the present invention provides an infrastructure or framework that can be used to create web applications that are modular, content rich, and customizable.
FIG. 1 illustrates an example of a customizable, modular web page. The web portal is shown as a web page 100 that includes modularly organized information or data. For example, web page 100 includes welcome information in a web part 102, weather information in a web part 104, stock information in a web part 106, a search window web part 108, and a selection of links in a web part 110. The web page 100 further includes a personalization link 112 for allowing a user to personalize the web page 100 according to the user's own tastes and preferences. These web parts are created by reference to a web part base class, sometimes referred to as web part controls, in the web part framework.
In one embodiment of the invention, the look and feel of the web parts can be controlled in some respects through the use of zones. Referring now to FIG. 2, three web zones used to define the characteristics of the web parts shown in FIG. 1 are shown. The web page 100 includes three zones, including a top zone 205, a left zone 202 and a right zone 204. Note that the top zone includes the welcome web part 102 and the search web part 108. The left zone 202 includes the weather web part 104 and the links web part 110. The right zone 204 includes a single web part, namely the stock web part 106. By grouping web parts within a zone, the zone association can help to coordinate the look and feel of the individual web parts disposed in the particular zone. The zone accomplishes this coordination by controlling how the user interface is rendered. The user interface includes (as illustrated in FIG. 1) such things as the title 113 and the frame 114. The user interface may also include such things as the verbs 116.
The following is one example of a persistence format file (.aspx in this instance) used to generate the portal shown in FIGS. 1 and 2. Highlighted are the areas where zones and web parts are defined.
<%@ Page language = ″C#″ %>
<%@ Regiser TagPrefix=″SampleParts″ Assembly=″Sample.web.user interface″
Namespace=″Sample.web.user interface″%>
<link rel=″stylesheet″ href=″Default.css″ type=″text/CSS″ />
<title>Portal Sample</title>
<asp:WebPart manager runat=server />
<form runat=″server″>
<td><img src=″Logo.gif″ >Home</td>
<asp:WebPartZone runat=″server″ ID=″TopZone″ Caption=″Top″
<Orientation=″Horizontal″>
<SampleParts:ContentwebPart runat=″server″ />
<SampleParts:SearchWebPart runat=″server″ />
</asp:WebPartZone >
<tr style=″height : 100%″>
<td valign=″top″>
<asp:WebPartZone runat=″server″ ID LeftZone″
Caption=″Sidebar″ >
<SampleParts:WeatherWebPart
runat=″server″ Caption=″Weather″ />
<SampleParts:QuickLaunchWebPart runat=″server″
Caption=″Links″
Description =″Favorite Links″ />
<asp:WebPartZone runat=″server″ ID ″RightZone″
Caption=″Main Content″ Width=″100%″>
<SampleParts:StocksWebPart runat=″server″
Caption=″Stock Tracker″ Font-Name=″Verdana″/>
While the modular web pages shown in FIG. 1 and FIG. 2 may be created by calls to various classes in the framwork of the invention, such as in one example by calls by .aspx files in the ASP.net framework, other customized pages and web parts may be created by declaring a control in a control format file, in this case a .asex file, and referencing that control format file in a zone. FIG. shows a web page 300 generated by just such a process. The .asex and .aspx code is as follows.
Events.asex:
<%@ Control Language=″C#″ EnablePersonalization=″true″ %> <script runat=″server″> void Page_load (Object sender, EventArgs e) { // Obtain the list of events from the Events table // and bind to the DataList Control ASPNETPortal.EventsDB events = new ASPNETPortal.EventsDE( ); myDataList.DataSource = events.GetEvents(4) ; myDataList.DataBind ( ) } </script> <asp:DataLast id=″myDataLast runat=″server″ EnableViewStable=″false″ Width=″98%″> <ItemTemplate> <span class=″ItemTitle″> <asp:HyperLank id=″editLink ImageUrl=″-/images/edit.gif″ runat=″server″ /> <asp:Label Text=′<%# DataBander.Eval (Container.DataItem, ″Title″) %>′ runat=″server″ /> </span> <br /> <span class=″Normal″> <%# DataBinder.Eval (Conatainer.DataItem, ″WhereWhen″) %> </span> <br /> <span class=″Normal″> <%# DataBinder.Eval (Container.DataItem, ″Description″) %> </span> <br /> </ItemTemplate> </asp:DataList> Page.aspx
<%@ Page Master=″..\Themes\Portal\Page.master″ Theme=″Portal″
Enablepersonalization=″true″ %>
<%@ Register TagPrefix=″my″ TagName=″Events″ Src=″Events.ascx″ %>
<%@ Register TagPrefix=″Sample″ NameSpace=″Sample.web.user interface″ %>
<asp:Content runat=″server″ ContentName=″LeftZone″>
<asp:WebPartZone runat=″server″ id=″sidebarZone″ Caption=″Sidebar″
Width=″100%″>
<my:Events runat=″server″ ID=″Events″ />
<asp:Content runat=″server″ ContentName=″MainZone″>
<asp:WebPartZone runat= ″server″ id=″mainZone″ Caption=″Main Body″
<sample:announcements runat=server />
<sample:QuickLinks runat=server />
</asp Content>
<asp:Content runat=″server″ ContentName=″RightZone″>
<asp:WebPartEditorToolPane runat=″server″ Height=″100%″ />
An example of personalization using personal settings is shown in FIG. 4, which generally shows a web page 400. By clicking on an edit link 402 in the web part 403, a user gains access to an editor part 404 within an editor zone 406. In the present example, the user is able to change the title 405 of the web part 403 by modifying text in the title text box 408. The user can modify the frame state through a frame state drop down menu 410 such that the web part appears in a maximized, minimized, or normal state. The user can also modify the frame type of the web part 403 through a drop down frame type menu 412.
In the present example shown in FIG. 4, the user can also add or remove stock values shown in the web part 403 by adding or removing a stock symbols from a Symbol text box 414. When the user is satisfied with the personalization selections, the user can select an apply verb button 416 that applies the changes to the web part 403 and closes the editor part 404. The editor part 404 further includes a number of other verb buttons including a close verb button 418, an OK verb button 420 and a cancel verb button 422. The close verb button 418 and the cancel verb button 422 perform the same action when invoked which is returning the web page 400 to a normal view mode not including the editor part 404 or editor zone 406 without making any of the changes to the web part 403 made by the user in the editor zone 406. The OK verb button 420, when invoked, makes the changes to the web part 403 specified by the user in the editor zone 404 and returns the web page to a normal view mode not including the editor part 404 or editor zone 406. A similar interface can be used in administrator customization scenarios or even in a web page developer building scenario.
Using the framework, a user may add additional web parts to a web page from a catalog of available parts. A web part known as a catalog part as shown in FIG. 5A and designated generally as 502, is used to add web parts to a web page 500. The catalog part 502 may be disposed in a catalog zone 504. The catalog part 502 may have several catalogs 510 available for selection by the user. In one embodiment of the invention, a catalog may be selected by clicking on a catalog link 512. Clicking on a catalog link 512 causes a number of text boxes 506 to be displayed for selection of web parts to be added to the web page 500. By selecting available web parts through checking the text boxes 506 and then clicking an add button 508, web parts are added to the web page 500. The catalog zone 504 may be used by both individual web page users to personalize selections for their view of the web page, or by web page developers or administrators in a customization scenario to create views available to all users of a particular web page.
Referring now to FIG. 5B, yet another example of a catalog part is shown. The catalog part 520 includes representations of a selection of web parts 522 available to be added to the web page. Each of the representations of the web parts include a web part title 524. The web part title 524 is preferably the title that is displayed when the web part is displayed on the web page such as the title 112 shown in FIG. 1. The representations of the web parts further include a part icon 526. The part icon 526 is a graphical file that represents the web part in this example.
In an illustrative example, a web part may be added to the web page using a catalog part such as catalog part 520. The catalog zone to which the catalog part 520 belongs will call an add method associated with the selected catalog part 520 when the add verb 6 is invoked. The catalog part 520 should then call the web part managers add method to add the web part (one of 522) to the page. The added web part (one of 522) will be tracked by the web part manager.
Referring now to FIG. 6 an example of two connected web parts is shown. FIG. 6 shows a stock list web part 600 that displays a list of selectable stock symbols. The stock list web part 600 implements an interface (illustrated in this example as an IFieldData Interface) to expose a currently selected stock 602. A stock graph web part 604 is able to graph historical data based on any stock symbol. The stock graph web part 604 is able to communicate over the interface. Each web part registers connection end points with the web part manager, which helps to coordinate the different web parts that appear in different zones of the web page, so that connections can be established. Once connected, the two parts 600 and 604 provide an end user experience where a user can quickly flip through their favorite stocks and see a related graph.
Referring now to FIG. 7, a more detailed description of the functionality of the part controls will be set forth. The part controls typically depend from the �Part� base class 702. Depending can also be described in this specification and by those skilled in the art as deriving or inheriting. Depending from the part base class 702 are three other base classes, namely the catalog part base class 704, the web part base class 706, and the editor part base class 708. The structure of the base classes is hierarchical such that a base class or class that depends from another base class includes all of the functionality of the base class from which it depends plus some additional designed functionality. For example, the part base class 702 can be used to create part controls for all modular classes because it is the highest in the hierarchy. The web part base class 706 can be used to create modular classes using all of the functionality of the Part base class 702 plus controls for classes with advanced functionality. The editor part base class 708 can create modular controls using the functionality of the Part base class 702 plus modular controls which set associated control properties. In other words, the editor part base class 708 can be used to personalize other web part base classes 706. The catalog part base class 704 is a base class used for a control that acts as a catalog. In other words, the catalog part base class 704 includes catalog part base classes that allow for the addition or removal of other web parts when a web page is rendered. These classes can be created using the functionality of the part base class as well as other specialized functionality designed for the catalog part base class. Each of base classes, The catalog part base class 704, the web part base class 706 and the editor part base class 708, have other classes that derive or inherit from them as shown in FIG. 7.
Within each of the base classes and classes are properties that enable some of the functionality of the base class or class. The part base class 702 includes the following properties: Description, FrameState, FrameType, LargeIconImageUrl, Roles, SmallIconImageUrl, Title, and TitleStyle.
One of the properties available in the part base class 702, and hence all other classes that inherit from the part base class 702, is the description property. The description property is a web part description that may be used by other web parts. For example as explained below, the description property may be used by a catalog part or as a tool tip in a title bar. The description property is not personalizeable by an end user or customizable by a system administrator after it has been set by a developer in the construction of the web page. An example of the description property may be seen in the sample code provided in conjunction with the description of FIG. 1 above.
Another property in the part base class 702 is the FrameState property. The FrameState property defines the frame state of the part. For example, the FrameState property can define if the particular web part is minimized, maximized or normal. When a web part is minimized, only the title bar is displayed. When a web part is normal, the title bar and the part content is displayed. The FrameState property is personalizeable by end users and customizable by system administrators.
Yet another property in the part base class 702 is the FrameType property. The FrameType property determines the type of chrome that will frame the part. For example, the FrameType property can be set such that the title only is displayed, the title and the border are displayed or a border only is displayed.
Still yet another property of the Part base class 702 is the LargeIconImageURL property. This property includes the URL of an image representing the particular web part and the image is sometimes referred to as a part icon. These icons may be used as a graphical representation of the part. As described above in conjunction with the description of FIG. 5B, the LargeIconImageURL property may be used by the page catalog part to show a graphical representation of web parts that are available to be added to a web page. This may also be included the title area of the particular web part. This property is not personalizeable by the end user or customizable by a system administrator. Similar to a LargeIconImageURL property is a SmallIconImageURL property. This property describes the URL of an image representing the particular web part in a manner similar to the LargeIconImageURL but where the URL links to an image that is smaller in size.
Yet another property of the part base class is the Roles property. The Roles property allows the web page developer to set the roles that the particular web part is available to. For example, a web part could offer site administrative functionality such as in a customization scenario to all users who are in an open �Admin� role.
The web part base class 706 illustrated in FIG. 7 depends from the part base class and includes all the properties and functionality of the part base class in addition to other properties that will be herein defined. For example, the web part base class 706 includes a Connections property. The Connections property describes the connections associated with this web part. An example of the use of the connections property is described above in the description of FIG. 6 and will be described further herein in the description of the web part manager base class.
Yet other properties available to the web part base class 706 include the HelpURL and WebPartHelpMode properties. The HelpURL property can be set to the URL of a page which offers help about the particular web part. The WebPartHelpMode property defines how the link should be displayed. For example, the link may be displayed as a modal dialogue (or a new browser window if modal dialogues are not supported). The link may be displayed as a modeless dialog (or new browser window if modeless dialogues are not supported). The link may be displayed such that the current window is used to navigate to the help URL.
Still another group of properties that exist in the web part base class 706 is the group of part properties known as the �allow� Properties. These properties allow web page developers to decide what functionality is permitted in a particular web part. For example, the AllowClose property allows the web page developer to determine if the particular web part is allowed to be closed (i.e. removed from the zone). This property is generally personalizeable by all users. The AllowHide property allows the web page developer to define if the particular web part is allowed to be hidden (i.e. no visible elements, but still included in the zone). This property is generally personalizeable or customizable by all users. The AllowMinimize property determines if the particular web part is allowed to be minimized (only the title bar shown on the web page). This property is personalizeable or customizable by all users. The AllowMove property determines if the web part is allowed to be moved within a zone, or between zones. This property is not personalizeable or customizable. An AllowExport property determines if the particular web part property setting may be exported.
The web parts are generally, although not always, rendered in a zone. The zone property of the web part base class 706 sets forth the web part zone that contains the web part. This property is not customizable or personalizeable. The ZoneID property of the web part base class 706 sets forth the ID of the zone that contains the particular web part. This property is customizable and personalizeable. The ZoneIndex property of a web part base class 706 sets forth the index of the web part in the zone relative to other web parts in the zone.
Another enumeration in the web part base class 706 is the part FrameType. The art FrameType enumeration is used by both the web part and zone controls to describe the frame that is applied around each web part as part of the user interface. In this example, this enumeration can have one of five values including none, title only, title and border, border only and default. If the value is set to none, no frame is displayed around the web part. If the value is set to title only, only the title bar is shown on the web part. If the value is set to title and border, both the title bar and border are rendered. If the value is set to border only, only the border is rendered, and no title bar is rendered on the web part. If the value is left on the default, the frame type should be taken from the enclosing zone. An example of an implementation of the PartFrameType enumeration is shown in FIG. 4 as the FrameType drop down menu 412.
Another enumeration available in the web part base class 706 is the part FrameState enumeration. This enumeration is used by both part and zone controls to describe the state of the web part. In this example, three values are available for this enumberation, namely the normal, minimized or default. If the value is set to normal, a normal window shown. If the value is set to minimized, just the title bar is displayed. If the value is set to default, on the web part the frame style should be taken from the enclosing zone. On a web part, if the default value is used, the standard frame styles should be used. An example of an implementation of the part FrameState enumeration is shown in FIG. 4 as the Frame State drop down menu 410.
Another class that depends from the part base class 702 is the editor part base class 708 as illustrated in FIG. 7. The editor part base class 708 includes functionality beyond that of the part base class 702 including certain properties and methods that are particular to the editor part base class 708. An editor part can be associated with any single web part that it can be used to edit. The controls of the editor part are used to �edit� the web part through a user interface.
The Display property of the PropertyGridEditor part class 710 indicates if the editor zone should display this part. For example if an editor part has no user interface for the current WebPartToEdit, the Display property would be set to false so that it is not displayed. The GridStyleProperty of the PropertyGridEditor part determines the table style applied to the grid of available properties.
The PropertyGridEditor part base class 710 also includes various methods that are available to it. The ApplyChanges method of the PropertyGridEditor part base class 710 is called by the editor zone when the editor part should apply values to its associated control. This message method will be called by the editor zone that is hosting the editor part when the �OK� or �apply� verb is invoked in the editor zone to indicate that any changes should be saved. The editor part can return false if an error occurred and the editor zone will behave appropriately. For instance, if the OK verb is clicked the editor zone would normally set the page into a normal mode after calling ApplyChanges. But if an error occurs the editor part would remain visible so that the error can be corrected. A True value returned indicates that the save was successful.
The PropertyGridEditor part will display a generic error message at the top of the grid of settable properties. This error text can be set through the ErrorText property. A string replacement can be done substituting the name of the first property that caused an error. The PropertyGridEditor part will display friendly conversion error messages by catching and fixing up exceptions where Convert routines are called. Such string replacements may include: �This property requires a numeric value� or �This value is out of range� or �This property requires a value greater than or equal to 0� or �This property requires an integer value� or �This property requires a web address� or any other appropriate message for the property being set.
The AppearanceEditor part base class 714 depends from the editor part 708. The AppearanceEditor part base class 714 sets common user interface web part properties such as title, size and frame type. An example of an AppearanceEditor part rendered by the AppearanceEditor part base class 714 is shown in FIG. 8A and designated generally at 800. The LayoutEditor part base class 716 depends from the editor part base class 708. The LayoutEditor part base class 716 sets web part layout properties such as for zone, ZoneIndex, Hidden etc. An example of a LayoutEditor part rendered by the LayoutEditor part base class 716 is shown in FIG. 8B and designated generally at 802.
The BehaviorEditor part base class 712 depends from the editor part base class 708. The BehaviorEditor part base class 712 sets behavior properties including AllowClose, AllowMinimize, AllowExport, EnablePersonalization, TitleURL, EditURL, HelpURL and Description. A BehaviorEditor part is available when the web page is being modified for all users or when editing a part that is not shared between multiple users. This is because certain properties such as AllowClose are applied to all users and should not be set on a per user basis. An example of a BehaviorEditor part rendered by the BehaviorEditor part base class is shown in FIG. 8C and designated generally at 804.
The catalog part base class 704 depends from the part base class 702. Catalog parts are parts that expose user interfaces that allow users to add new web part instances to the web page. Catalog parts are linked directly with the web part manager to indicate that a control should be added to the page on a per user basis. Catalog parts are rendered by a catalog zone. Two catalog parts that depend from the catalog parts base class are shown in FIG. 7 as PageCatalog part 720 and TemplateCatalog part 722. Third part catalog parts can also be used.
The classes that depend from the catalog part controls give functionality to the catalog part base class 704. Examples of this functionality can be seen by examining FIGS. 5A and 5B, which generally shows CatalogWebParts 500 and 520. The catalog part base class 704 includes controls for including a selection of web parts 522. The catalog part controls can also be used to select the appropriate part icon 526 to display the parts in the catalog part 500 and 520. The catalog part controls further include controls for showing part descriptions. Also included are controls to show pagination 540, items per page 534, check box style, part description style, part images style, part title etc.
The zone base class is used to create parts to arrange part controls in a consistent fashion. For example, zones are responsible for rendering the chrome and user interface which surrounds each part that is associated with that particular zone. Referring now to FIG. 9, a hierarchy of zone controls is shown. The zone base class 900 has three base classes that derive from it. These three base classes are the WebPartZoneBase base class 902, the EditorZone base class 904 and the CatalogZone base class 906. The zone base class 900 is used to control the layout of all controls that inherit or derive from the part base class 702. The WebPartZoneBase class 902 is used for web part controls. The EditorZone base class 906 is used to layout editor part controls. The CatalogZone base class 904 is used to layout catalog part controls.
FIG. 10 illustrates various user interface that can be rendered by the zone. Using FIGS. 9 and 10, various properties associated with the zone base class and the classes that derive from the zone base class will be described. Some of the properties belonging to the zone base class 900 can be used to define how a particular zone will be rendered on the web page. These zone base class properties include BackImageURL, FrameType, Title, TitleStyle and TitleHorizontalAlign. Some of these properties can be set through enumerations in a manner previously herein described.
The FrameType property of the zone base class 900 is used to specify how the zone renders the title bar and border around the particular zone in the edit, catalog and design modes. For example, referring to FIG. 10, specifying a FrameType value of none causes the zone to render neither a zone frame 1002 nor a title bar 1004. Specifying a FrameType value of TitleOnly causes the title bar 1004 to be rendered but not the zone frame 1002. Specifying a FrameType value of TitleAndBorder causes both the title bar 1004 and the zone frame 1002 to be rendered. Specifying a FrameType value of BorderOnly causes only the zone frame 1002 to be rendered. The FrameType property can also be expressed as an enumeration as described in more detail above.
Additionally the zone base class 900 contains several properties for defining the characteristics of any web part contained within the particular zone. For example, the properties PartStyle, PartFrameType, PartTitleHorizontalAlign, PartTitleStyle, PartVerbStyle and PartContentStyle are used in a fashion similar to the properties used to control the rendering of the zone components to render components of the web parts that reside within a zone. Referring to FIG. 10, the part title area 1006, the part verb area 1008, the part rendered content 1010, the part frame 1012 and various other components are controllable by setting the values of the above properties.
Several of the properties of the WebPartZoneBase base class control the ability of the rendered web part to be dragged within a zone or between different zones. The DragMode property of the WebPartZoneBase base class specifies the DragMode used to move parts around the web page. The DragMode property has three values including Image, WebPartTitle and Normal. When the DragMode property is set to Image, the Image specified by the DragImageURL property described below is used. When the value of the DragMode property is set to WebPartTitle, the title bar of the web part is dragged with the cursor. When the DragMode property is set to normal, the entire web part is dragged with the cursor. The DragImageUrl property of the WebPartZoneBase base class, as described above, specifies the image used when the DragMode is set to Image. The DragHighlightColor property of the WebPartZoneBase base class specifies the Highlight color used when a zone is targeted. In other words, this property specifies the color of a placement user interface that is rendered on the client. The placement user interface comprises a border surrounding a target zone, as well as the bar used to indicate an insertion point between other web parts.
The Orientation property of the WebPartZoneBase base class specifies if the zone lays out web parts horizontally or vertically. FIG. 11A and FIG. 11B illustrate a zone laid out horizontally 1102 and a zone laid out vertically 1104. The PartTitleFonmatString property of the WebPartZoneBase base class specifies how the web part Title and Caption properties are combined to form the title displayed in the chrome. The ShowIconInPartTitle property of the WebPartZoneBase base class specifies if the part icon, a graphical representation of the particular web part, is displayed in the tile bar.
Some of the properties of the WebPartZoneBase e base class specify certain characteristics about the appearance of the verbs in a web part. The Verbs property of the WebPartZoneBase base class defines the set of verbs that are applied to all parts in the zone. These are applied between the web part Verbs and the built in zone verbs like WebPartCloseVerb. Examples of Verbs that may be defined include the WebPartCloseVerb to close a web part, the WebPartMinimizeVerb to minimize a web part (only the web part title is displayed), the WebPartRestoreVerb to restore a minimized web part and the WebPartHelpVerb that directs a user to a help URL. Various examples of verb renderings are shown in FIG. 12 that shows a close verb 1202, a minimize verb 1204, a restore verb 1206 and a help verb 1208. The VerbButtonType property of the WebPartZoneBase base class specifies how verbs are displayed. If the WebPartVerb property specifies that the button type is an image but does not define an image URL, the WebPartVerb is rendered as a link button. The VerbStyle property of the WebPartZoneBase base class defines the style which is applied to the verb
A class that derives from the WebPartZoneBase base class is the WebPartZone class shown in FIG. 9 and designated generally as 908. The WebPartZone class adds a zone Template property so that web parts can be added in the persistence format.
The EditorZone base class is designed to render editor parts and the user interface associated with the editor parts. An exemplary editor part 404 is shown in FIG. 4. In one embodiment of the invention, EditorZones render minimum user interface around each editor part. The EditorZone base class 906 includes several properties including: ApplyVerb, CancelVerb, CloseImageUrl, editor parts, ZoneTemplate, FooterStyle, OkVerb, ShowCloseImage, VerbButtonType, VerbStyle, and WebPartToEdit. The EditorZone base class also includes a selection of methods including, ApplyHandler, CancelHandler, OkHandler.
The ApplyVerb property of the EditorZone base class defines the verb that performs the Apply operation, such as for example the Apply verb button 416 shown in FIG. 4. Invoking the verb defined by the ApplyVerb property results in the ApplyChanges property of each editor part being called and the subsequent call of SyncChanges on each editor part.
The CancelVerb property of the EditorZone base class defines the verb, for example the cancel verb button 422 shown in FIG. 4, that performs the Cancel operation. Invoking the CancelVerb returns the web page to normal view through the web part manager as described in more detail below. The CancelVerbDoes not call the ApplyChanges method of any editor parts.
The OkVerb property of the EditorZone base class specifies the verb, such as the OK verb button 420 shown in FIG. 4, that performs an OK operation. Invocation of this verb results in calling the ApplyChanges property on each editor part and subsequently returning the page to a normal mode. The ShowCloseImage property of the EditorZone base class determines if the Close Image is shown at the top right of the zone. The CloseImageUrl property of the EditorZone base class specifies the ImageUrl of the icon displayed in the top right of the zone.
The VerbButtonType property of the EditorZone base class determines the ButtonType used to display each verb. If a WebPartVerb does not specify an image url but (the button type is set to image, the verb text will be rendered as a link button similar to those shown for the OK, Apply and Close verb buttons shown in FIG. 4. The VerbStyle property of the EditorZone base class defines the style applied to each of the zone's verbs.
The third general group of base classes is the web part manager base class. The web part manager base class tracks the web parts on the web page, tracks the zones on the web page and tracks which web parts are in each zone. The web part manager also, handles personalization of the web page by tracking the edit state of the web page. To facilitate connections such as is shown and described in FIG. 6, the web part manager keeps track of connections between web parts and initiates connection communication between web parts. The web part manager may be connected to and rely on a database for web part definitions and personalization. The web part manager is also responsible for rendering any script needed to handle client operations, such as dragging web parts while in edit mode. The web part manager may be added to the web page, like any other control, through the persistence format in one example. Only one instance of the web part manager typically appears on a web page.
The DisplayMode property of the web part manager base class defines the current DisplayMode of the page. Options include Normal, Edit, Design, Catalog etc. An example of the Normal display mode is shown and described in FIGS. 1 through 3. When the web page is display mode, the web parts are displayed in normal mode and the EditorZone, CatalogZone and zone borders are not visible. An example of the Edit display mode is shown and described in FIG. 4. When the web page is in the edit display mode, the web parts are rendered in an edit mode and the EditorZone and zone borders are visible while the CatalogZone is not visible. An example of the Catalog display mode is shown and in FIG. 5A. When the web page is in catalog display mode, the web parts are rendered in a normal mode and the CatalogZone and zone borders are visible while the EditorZone is not visible. When the web page is in a design display mode, the web parts are rendered in a normal mode and the zone borders are visible while the EditorZone and the CatalogZone are not visible. Individual web parts may be in edit mode. This allows a web part to display user interface in line or display any associated editor parts in the EditorZone. Web parts are notified of the current mode via the following events: ClosedWebPartsChanged, DisplayModeChanged, DisplayModeChanging, WebPartAdded, WebPartEditModeChanged, WebPartEditModeChanging, and WebPartDeleted.
The MoveWebPart method of the web part manager base class is called to move web parts between zones. To call the method three parameters are used: the WebPart parameter specifies the web part to move, the Zone parameter specifies the target zone, and the ZoneIndex parameter specifies the Index at which the web part should be added in the target zone.
A detailed flow chart illustrating the method for determining the collection of web parts to be returned is shown and described in FIG. 13. The method begins as the zone calls the GetWebPartsForZone method (1302). The web part manager looks at each part (1304). The web part manager checks to see if the zone specified in the web part is the target zone (1306). If the zone is not the target zone, the process returns to check other web parts. If the zone is the target zone, the web part manager checks to see if the Visible property of the web part is set to true (1308). If the Visible property is not set to true, the process returns to check other web parts. If the Visible property of the web part is set to true, the web part manager checks to see if the web part is available for the current Role (such as in personalization, customization, and development scenarios) (1310). If the web part is not available for the current Role as defined by the Role property of the web part, the process returns to check other web parts. If the web part is available for the current Role, the web part is added to the WebPartCollection property of the particular zone (1312). The WebPartCollection is then returned (1314) to the web part manager and the process loops to continue checking each of the web parts.
Web parts may be connected to share information & functionality. Connections, as described in connection with the description of FIG. 6, work through a paired Consumer and Provider model. Parts which support connection functionality must register themselves with the web part manager. The web part manager is then responsible for hooking up the connection between parts.
Web parts who wish to participate in connections define one or more ConnectionEndPoints, which are used by the web part manager to hook together web parts. Each ConnectionEndPoint contains several properties which identify the ConnectionPoint on the Part. Name defines the name of the ConnectionPoint, for example �SelectedRow.� Connection Interface defines the primary Interface for this connection, for example IFieldData. CallBack Delegate is used by Providers to point to the method which will return the object that implements the ConnectionInterface and used by Consumers to point to the method which will receive the object that implements the ConnectionInterface. Description includes text which describes the ConnectionEndPoint to the end user for example �Provide selected Row to . . . �
RegisterProvider is called by Provider web parts in OnInit. The GetConnectionCallback argument is a delegate to the method which will be responsible for creating the Connection object. An example of Provider calling RegisterProvider method is as follows:
Class MyListPart : web part, IRow
// Register the web part as a provider
// IRow is the primary connection interface
public override OnInit ( ) {
// Create a new ConnectionEndPoint
ConnectionEndPoint endpoint = new ConnectionEndPoint(
Typeof(IRow), new
ConnectionProviderCallback (MyCreateConnection));
endPoint.Name = ″RowProvider″;
endPoints.Description = ″Provide Row To″;
// Register the ConnectionEndPoint with tha web part manager
RegisterConnectionEndPoint (endPoint);
// Function called by CreateConnection Delegate,
// Since this part implements the connection, just return this
public object MyCreateConnection( ) {
/* Implement IRow
& web part functionality
class MyFormPart : web part
// Register the web part as a consumer
public override OnInit( ) {
//Create the ConnectionEndPoint
Typeof (IRow), new
ConnectionConsumerCallback(MyConnectToProvider));
endPoint.Name = ″RowConsumer″;
endpoint.Text = ″Retrieve Row From″;
// Register the connectionEndPoint with the web partManaager
//Function called by delegate when this connection is established
public void MyconnectToProvider(object obj) {
// Logic to handle Connection
Transformers are objects which have logic to convert one ConnectionInterface to another. For example a Transformer could allow parts which understand IFieldData to talk to Parts that Implement IRowData. To do this, the transformer would choose the appropriate cell from the RowData sent by the Provider and expose it to the consumer. The IConnection interface is implemented by all Transformers involved in connections. It is used to query which connection interfaces are available. The
The function of one embodiment of a transformer is shown in FIG. 14. A provider web part 1402 is illustrated as a Stock List web part. The provider web part 1402 comprises a SelectedStockList ConnectionEndPoint. The provider web part 1402 is coupled to a Transformer 1404 through a first communication interface 1406 that in this example is IRowData interface. These interfaces are set forth below in more detail. The Transformer 1404 converts the data transmitted along the first communication interface 1406 to a format that is readable by a consumer web part 1408 such as the stock graph part illustrated in this example. The appropriate data is then sent along a second communication interface 1410 to the consumer web part 1408.
When a web part registers itself, it identifies the provider interface which it understands. A web part may make several calls to RegisterConsumer/RegisterProvider methods to indicate that they understand multiple interfaces. For example, a list part could support both IRow, and IModifyRow. A Consumer part could also understand both of these interfaces. A web part may also decide to implement the same interface twice, with different semantics. For example, a List web part may support IRow for both the currently selected row and for the current row over which the mouse is hovering. This can be accomplished by implementing two separate connection classes that both implement IRow.
Patent CitationsCited PatentFiling datePublication dateApplicantTitleUS5940834 *Mar 13, 1997Aug 17, 1999Mitel CorporationAutomatic web page generatorUS5953526 *Nov 10, 1997Sep 14, 1999Internatinal Business Machines Corp.Object oriented programming system with displayable natural language documentation through dual translation of program source codeUS5983227 *Jun 12, 1997Nov 9, 1999Yahoo, Inc.Dynamic page generatorUS6247032 *Jun 19, 1998Jun 12, 2001International Business Machines Corp.Automated system and method for approving web site contentUS6313854 *Oct 16, 1998Nov 6, 2001International Business Machines CorporationDisplay mechanism for HTML framesUS6327628 *May 19, 2000Dec 4, 2001Epicentric, Inc.Portal server that provides a customizable user Interface for access to computer networksUS6684369 *Jun 19, 1998Jan 27, 2004International Business Machines, CorporationWeb site creator using templatesUS6957416 *Jan 31, 2001Oct 18, 2005Hewlett-Packard Development Company, L.P.Document builder classes and methodsUS20020033844 *Sep 11, 2001Mar 21, 2002Levy Kenneth L.Content sensitive connected contentUS20020122060 *Dec 18, 2001Sep 5, 2002Markel Steven O.Wizard generating HTML web pages using XML and XSLUS20020138331 *Feb 5, 2001Sep 26, 2002Hosea Devin F.Method and system for web page personalizationUS20030084059 *Oct 31, 2001May 1, 2003International Business Machines CorporationContext management super tools and filter/sort model for aggregated display webpagesUS20040148340 *Jan 29, 2003Jul 29, 2004Web.De AgWeb site having a zone layoutUS20040205594 *Oct 2, 2002Oct 14, 2004Samir AroraHierarchical drag and drop structure editor for web sites* Cited by examinerNon-Patent CitationsReference1 *Jackson et al, "Java by example", 1996, SunSoft Press, pp. 27-28, 295-296.2 *Manske, Charles, "Composer 5 Dialogs", published as Last Updated May 13, 1999, pp. 1-3 <https://doctor.mozilla.org/doctor.cgi?file=mozilla-org/html/editor/ui<SUB>-</SUB>specs/Composer<SUB>-</SUB>5<SUB>-</SUB>Dialogs.html&action=display>.3 *Microsoft, "Computer Dictionary: Fifth Edition", 2002, Microsoft Press, 5th Edition, pp. 279-280, 399.4Wege, C. "Portal Server Technology", IEEE Internet Computing, IEEE Service Center, New York, NY, May 2002, pp. 73-77.* Cited by examinerReferenced byCiting PatentFiling datePublication dateApplicantTitleUS7376739 *Feb 11, 2004May 20, 2008International Business Machines CorporationPersistence of inter-application communication patterns and behavior under user controlUS7490295Jun 25, 2004Feb 10, 2009Apple Inc.Layer for accessing user interface elementsUS7503010 *Mar 7, 2006Mar 10, 2009Apple Inc.Remote access to layer and user interface elementsUS7774332Apr 12, 2005Aug 10, 2010International Business Machines CorporationEnabling interactive integration of network-accessible applications in a content aggregation frameworkUS7793232 *Mar 7, 2006Sep 7, 2010Apple Inc.Unified interest layer for user interfaceUS7873910 *Mar 7, 2006Jan 18, 2011Apple Inc.Configuration bar for lauching layer for accessing user interface elementsUS7930364Apr 24, 2008Apr 19, 2011International Business Machines CorporationPersistence of inter-application communication patterns and behavior under user controlUS7984384 *Feb 9, 2009Jul 19, 2011Apple Inc.Web view layer for accessing user interface elementsUS8195633Jul 9, 2008Jun 5, 2012International Business Machines CorporationEnabling interactive integration of network-accessible applications in a content aggregation frameworkUS8423527Feb 4, 2012Apr 16, 2013International Business Machines CorporationEnabling interactive integration of network-accessible applications in a content aggregation frameworkUS8566732 *Aug 4, 2006Oct 22, 2013Apple Inc.Synchronization of widgets and dashboardsUS8621372 *Jan 5, 2006Dec 31, 2013Yahoo! Inc.Targeted sidebar advertisingUS8726147 *Mar 12, 2010May 13, 2014Symantec CorporationSystems and methods for restoring web parts in content management systemsUS20070130541 *Aug 4, 2006Jun 7, 2007Louch John OSynchronization of widgets and dashboardsUS20070157110 *Jan 5, 2006Jul 5, 2007Ashit GandhiTargeted sidebar advertising* Cited by examinerClassifications U.S. Classification715/255, 707/E17.116, 715/234, 715/205, 715/243International ClassificationH04L12/16, G06F9/44, G06F17/00, G06F17/30, H04L29/02, G06F13/00, G06F15/00, G06F9/00, H04L12/24, G06F17/21Cooperative ClassificationG06F17/3089European ClassificationG06F17/30W7Legal EventsDateCodeEventDescriptionMar 10, 2011FPAYFee paymentYear of fee payment: 4Apr 23, 2004ASAssignmentOwner name: MICROSOFT CORPORATION, WASHINGTONFree format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SANABRIA, ANDRES;REEL/FRAME:015266/0743Effective date: 20040330Oct 8, 2003ASAssignmentOwner name: MICROSOFT CORPORATION, WASHINGTONFree format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:CRONEY, JOSEPH KEITH;KOTHARI, NIKHIL;HARDER, MICHAEL;ANDOTHERS;REEL/FRAME:014589/0457Effective date: 20031008RotateOriginal ImageGoogle Home - Sitemap - USPTO Bulk Downloads - Privacy Policy - Terms of Service - About Google Patents - Send FeedbackData provided by IFI CLAIMS Patent Services©2012 Google