Source: https://patents.google.com/patent/US9459837
Timestamp: 2018-03-22 14:04:37
Document Index: 760261853

Matched Legal Cases: ['Application No. 1643', 'application No. 10', 'Application No. 2481552', 'Application No. 2004', 'application No. 2004', 'application No. 2004']

US9459837B2 - Interface for a computer platform - Google Patents
Interface for a computer platform Download PDF
US9459837B2
US9459837B2 US13647064 US201213647064A US9459837B2 US 9459837 B2 US9459837 B2 US 9459837B2 US 13647064 US13647064 US 13647064 US 201213647064 A US201213647064 A US 201213647064A US 9459837 B2 US9459837 B2 US 9459837B2
US13647064
US20130159965A1 (en )
Kerem B. Karatal
Michael G. Sheldon
Marc M. Miller
Chris J. Guzak
Timothy P. McKee
This application is a continuation of, and claims priority to, U.S. patent application Ser. No. 12/356,452, filed on Jan. 1, 2009, which is a continuation of, and claims priority to, U.S. patent application Ser. No. 10/693,718, filed on Oct. 24, 2003, now U.S. Pat. No. 7,493,592. The above applications are incorporated by reference herein in their entireties.
To accommodate the shift to the distributed computing environment being ushered in by the Internet, Microsoft Corporation developed a network software platform known as the “.NET” Framework (read as “Dot Net”). Microsoft®.NET is software for connecting people, information, systems, and devices. The platform allows developers to create Web services that will execute over the Internet. This dynamic shift was accompanied by a set of API functions for Microsoft's .NET™ Framework.
FIG. 2 shows the programming framework 132 in more detail. The common language specification (CLS) layer 140 supports applications written in a variety of languages 130(1), 130(2), 130(3), 130(4), . . . , 130(K). Such application languages include Visual Basic, C++, C#, COBOL, Jscript, Perl, Eiffel, Python, and so on. The common language specification 140 specifies a subset of features or rules about features that, if followed, allow the various languages to communicate. For example, some languages do not support a given type (e.g., an “int*” type) that might otherwise be supported by the common language runtime 144. In this case, the common language specification 140 does not include the type. On the other hand, types that are supported by all or most languages (e.g., the “int[ ]” type) is included in common language specification 140 so library developers are free to use it and are assured that the languages can handle it. This ability to communicate results in seamless integration between code modules written in one language and code modules written in another language. Since different languages are particularly well suited to particular tasks, the seamless integration between languages allows a developer to select a particular language for a particular code module with the ability to use that code module with modules written in different languages. The common language runtime 144 allow seamless multi-language development, with cross language inheritance, and provide a robust and secure execution environment for the multiple programming languages. For more information on the common language specification 140 and the common language runtime 144, the reader is directed to co-pending applications entitled “Method and System for Compiling Multiple Languages”, filed Jun. 21, 2000 (Ser. No. 09/598,105) and “Unified Data Type System and Method” filed Jul. 10, 2000 (Ser. No. 09/613,289), which are incorporated by reference.
The web services namespace 204 pertains to an infrastructure for enabling creation of a wide variety of applications, e.g. applications as simple as a chat application that operates between two peers on an intranet, and/or as complex as a scalable Web service for millions of users. The described infrastructure is advantageously highly variable in that one need only use those parts that are appropriate to the complexity of a particular solution. The infrastructure provides a foundation for building message-based applications of various scale and complexity. The infrastructure or framework provides APIs for basic messaging, secure messaging, reliable messaging and transacted messaging. In the embodiment described below, the associated APIs have been factored into a hierarchy of namespaces in a manner that has been carefully crafted to balance utility, usability, extensibility and versionability.
In certain embodiments, the storage system that the user interface functionality of shell name space 202 allows users to explore and navigate through is an active storage platform for organizing, searching for, and sharing all kinds of information. This platform defines a rich data model, builds on top of a relational storage engine, supports a flexible programming model, and provides a set of data services for monitoring, managing, and manipulating data. The data can be file-based or non-file data, and data is typically referred to as an “item”. The file system extends the functionality typically provided by file systems because it also deals with items that are non-file data, such as personal contacts, event calendars, and e-mail messages. One example of such a file system is the “WinFS” file system.
A universal data store of the storage system that the user interface functionality of shell name space 202 allows users to explore and navigate through implements a data model that supports the organization, searching, sharing, synchronization, and security of data that resides in the store. The fundamental unit of storage information in this data store is referred to as an item. The data model provides a mechanism for declaring items and item extensions, for establishing relationships between items, and for organizing items in folders and in categories.
Items are stand-alone objects; thus, if an item is deleted, all of the properties of the item are also deleted. Similarly, when retrieving an item, what is received is the item and all of its properties contained in the metadata of the item. Certain embodiments may enable one to request a subset of properties when retrieving a specific item; however, the default for many such embodiments is to provide the item with all of its immediate and inherited properties when retrieved. Moreover, the properties of items can also be extended by adding new properties to the existing properties of that item's type. These “extensions” are thereafter bona fide properties of the item and subtypes of that item type may automatically include the extension properties. The extensions may also be referred to as metadata associated with a file.
Groups of items can also be organized into Categories. Categories are conceptually different from item Folders in that, whereas item Folders may comprise items that are not interrelated (i.e., without a common described characteristic), each item in a Category has a common type, property, or value (a “commonality”) that is described for that Category, and it is this commonality that forms the basis for its relationship to and among the other items in the Category. Moreover, whereas an item's membership in a particular Folder is not compulsory based on any particular aspect of that item, for certain embodiments all items having a commonality categorically related to a Category might automatically become a member of the Category at the hardware/software interface system level. Conceptually, Categories can also be thought of as virtual item Folders whose membership is based on the results of a specific query (such as in the context of a database), and items that meet the conditions of this query (defined by the commonalities of the Category) would thus comprise the Category's membership.
Beyond property declarations, metadata associated with an item may include data indicating how the shell should decorate an item's presentation. Decorations, in this case can be though of as “hints” as to how to represent the item to a user. This metadata may be stored in accordance with an item decoration schema. The item decoration schema defines the item decoration view that the shell may utilize to present the item. For example, the item decoration data may describe the most important declared properties for an item. These “high value” properties may be the most desirable for presentation in the shell.
To present an item, the item decoration data may indicate a set of view fields appropriate for the presentation of the item. View fields are projections of declared properties, and common view fields may include “title,” “author,” “date of creation” or “last edited.” The shell includes a set of standard view fields and independent software venders (ISVs) may define view fields which are appropriate for presentation of their data. When developing new item types, ISVs can either map item properties they define to the shell's view fields or they can provide their own view fields.
The Shell namespace 202 defines additional namespaces, including a Controls namespace 302, a Dialogs namespace 304, an Addin namespace 306, and a Desktop namespace 308. Each of these additional namespaces 302, 304, 306, and 308 in the Shell namespace includes one or more services or components that provide various functionality, such as controls, dialogs, and/or handlers, as discussed in more detail below.
An ExplorerItem object (also referred to as an Item object) used to describe items that can be presented to the user by way of the Shell, such as a file folders, stacks, individual files, individual WinFS items (e.g., albums, songs, pictures, etc.), and so forth.
A Libraries object used to describe a query against ExplorerItems.
A ViewFields object (also referred to as a Properties object) used to project data from items (e.g., as represented by ExplorerItem objects) for display to the user. A projection defined between properties in the storage system and a ViewFields object can perform additional calculations or processing based on the ExplorerItems. For example, if a folder representing a storage device is being displayed and the designer wishes to include in that folder an amount of free space on that storage device, then the projection calculates the amount of free space based on the total capacity of the storage device and the sizes of the files (represented as ExplorerItems) stored on the storage device
A StorageFavorites object used to describe a link to a dynamic list, which is a persistent form of a Library object. The StorageFavorites object is a combination of a query and a view for presenting the results of the query to the user.
This object model is discussed in further detail in U.S. patent application Ser. No. 691,885, U.S. Patent Application Publication No. 20050091667, filed Oct. 23, 2003, entitled “System and method for presenting items to a user with a contextual presentation”, which is hereby incorporated by reference.
An ExplorerView control is used to encapsulate the storage user experience. The storage user experience is defined to work across items with relationships, queries, and so forth. This storage user experience allows end users to, for example, issue queries based on property values, stack WinFS items with common property values, allow drag and drop from non-stacked items to stacks (e.g. by setting the value of a property in the property predicate to what exists in the stack), and so forth. The ExplorerView control can also be used to describe a folder for display having the same appearance as can be found in previous operating systems (also referred to as legacy systems), such as previous versions of the Microsoft® Windows® operating system (e.g., the Windows® XP or Windows® 98 versions of the Windows® operating system).
An ExplorerItemView control used to display ExplorerItems. The layout and design of the ExplorerItems can be defined by the application designer. The operating system may also define a user experience that imposes some constraints on the layout and design that can be defined by the application designer, so the layout and design defined by the application designer is consistent with the user experience defined by the operating system. Thus, the ExplorerItemView control allows the designer to determine how the data from the ExplorerItems is to be displayed to the user (e.g., in columns, rows, or some other configuration) as well as what data is to be displayed to the user.
A BasketControl control used to allow items to be added to a sidebar (sidebars are discussed in additional detail below). An item can be added to the sidebar in a “drag and drop” manner by using a cursor control device to select an item and drag it over the sidebar, where it can be dropped (e.g., by releasing a cursor control button). The BasketControl control is discussed in further detail in U.S. patent application Ser. No. 10/684,263, filed Oct. 13, 2003, entitled “Extensible Creation And Editing Of Integrated Collections”, which is hereby incorporated by reference.
A ListMaker control used to allow items to be added to a list or group. Lists or groups of items can be created in a “drag and drop” manner by using a cursor control device to select an item and drag it over the appropriate list or group, where it can be dropped (e.g., by releasing a cursor control button). For example the items may be songs and the list a playlist, the items may be images and the list a photo album, and so forth.
Addin namespace 306 (“System.Windows.Explorer.Addin”) defines a collection of base classes and interfaces for extending the user interface functionality. Adding namespace 306 allows application designers to add managed code that extends the functionality of the user interface. This extension allows, for example, the application designers to customize portions of the user interface as they see fit.
The Addin namespace 306 allows for the extension of shells of the user interface that are used to display items, which represent any of a wide variety of kinds of data and are not simply traditional “files” stored in a file system. Furthermore, the Addin namespace 306 allows application designers to extend the shells of the user interface in a coherent manner, providing a more managed and improved design experience.
Managed code for various functionality is supported by the Addin namespace 306, such as:
Thumbnail extractors. Thumbnail extractors allow application designers to develop their own thumbnails (e.g., for files, folders, and/or other items being displayed) and identify those thumbnails to the operating system for display to the user.
Further, as noted above, each tile's instructions includes a pointer to one of a number of specialized viewers having the capability to display whatever type of information or communications contact is represented by the tile. In other words, each tile represents a combination of the information or contact that a user desires to keep track of along with a definition of how the user desires to view that particular information or contact as well as the ability to use any of a number of services for accessing and interacting with the information or contact. Such access or interaction can be accomplished locally, or across local intranets, extranets, wired or wireless networks, the Internet, etc. via any conventional communications protocol.
Notifications (e.g., audible or visual notifications) are part of a user context system that, in accordance with certain embodiments, includes three elements that are compared for a decision as to how to process a notification. The first element is the user's context (as may be provided by the operating system and arbitrary programs that have extended it). The second element is the user's rules and preferences. The third element is the notification itself (which contains elements such as data and properties that may match the user's rules).
The user context system operates by the operating system and other programs declaring a user's contexts, after which the system brokers the user's context and rules. Notifications are raised by other programs calling into the system. The user's context, rules, and elements of the notification are compared and then a determination is made as to what should be done with the notification. Examples of various options for what may be done with the notification include denying (e.g., if the notification is not allowed to draw or make noise, and the notification is to never be seen by the user), deferring (e.g., the notification is held until the user's context changes or the user's rules dictate that it is subsequently appropriate to deliver), delivering (e.g., the notification is allowed to be delivered in accordance with the user's context and rules), and routing (e.g., the user's rules indicate that the notification should be handed off to another system, regardless of whether the notification is also allowed to be delivered in the present system).
In general, the user may be in a state deemed “unavailable” in which case the notification is either not delivered or held until the user becomes “available”. For instance, if the user is running a full screen application, that user may be deemed unavailable. Or, the user may be “available” but in such a state that the notification needs to be modified to be appropriate for the user. For instance, if the user is listening to music or in a meeting, the user may have indicated that the notifications should be delivered to the user's screen but that the sound they make should be either quieter or not made at all.
As noted above, the user context can determine in part whether notifications are shown on the user's screen. When a notification is shown, it may be shown based on certain gradients within the user context. In other words, there are different levels of invasiveness of the form of the drawn notification that may be specified. For example, a normal notification is free to pop out into the client area and briefly obscure a window. If the user is in a slightly restrictive context, the notification may be free to show, but only in a less invasive manner, such as it might not be allowed to draw on top of another window. As another example, in one embodiment where the user is running a maximized application, the default setting may be that this means that context is slightly restricted, and that the user has clearly made a statement that they want this application to get the entire client area. In this setting, a notification may still be allowed to draw, but may be made to only appear within the sidebar. In other words, this type of reduced invasiveness in the notification drawing form lessens the impact of the notification, and overall lessens the cognitive load.
Additionally, a Contacts namespace defines a collection of controls and dialogs for contact information. This contact information can be stored as items in the storage system. A “contact” generally refers to any person, group, organization, business, household, or other type of identifiable entity. “Contact information” generally refers to any information that corresponds to a contact and that may be considered relevant for identifying, contacting, accessing, corresponding or communicating with the contact. Contact information is used by an application to perform a desired function, such as, for example, sending an email, initiating a telephone call, accessing a website, initiating a gaming session, performing a financial transaction, and so forth. Non-limiting examples of contact information include names, aliases, telephone numbers, email addresses, home addresses, instant messaging (IM) addresses, and web addresses. Contact information can also refer to other types of information such as the status of a contact. For example, information indicating a contact is currently online, or on a telephone line may also be broadly considered as contact information.
The Contacts namespace can be part of the presentation subsystem namespace 200 but not part of the Shell namespace 202, such as, “System.Windows.Contacts”, “System.Windows.Controls” (controls 310 of FIG. 3), or “System.Windows.Collaboration”. Alternatively, the Contacts namespace could be part of the Shell namespace 202. The Contacts namespace expands the functionality of the System.Windows namespace, but need not be implemented as part of the Shell (that is, need not be part of the System.Windows.Explorer namespace 302).
A Contact Picker dialog used to allow users to select or pick a contact from their stored contacts. For example, allows users to select a contact to which an electronic mail message will be sent, or a contact for Instant Messaging. The user can browse through a list, for example, of all of the user's contacts stored as items in the storage system and select one or more of those contacts. The Contact Picker dialog is discussed in further detail in U.S. patent application Ser. No. 10/324,746, filed Dec. 19, 2002, entitled “Contact Picker”, which is hereby incorporated by reference.
A Contact Textbox control used to allow users to enter contact information such as a name in freeform (e.g., by typing the name in) and, as the contact information is entered, the control resolves the information to one or more contacts from the user's stored contacts. The resolved information can be displayed, for example, in a drop-down menu or may be automatically entered into a type-in line where the user was entering the name in freeform.
DefaultCommandEventArgs Contains event data for the
DefaultCommandEvent event.
ExplorerView Allows a user to view information
about a folder's contents.
FolderSelectionChangedEventArgs Contains event data for the
FolderSelectionChangedEvent event.
IncludeItemEventArgs Contains event data for the
IncludeItemEvent event.
ItemVerbModifyEventArgs Initializes a new instance of the
ItemVerbModifyEventArgs class.
NavigationCompleteEventArgs Contains event data for the
NavigationCompleteEvent event.
NavigationFailedEventArgs Contains event data for the
NavigationFailedEvent event.
NavigationPendingEventArgs Contains event data for the
NavigationPendingEvent event.
FolderViewFlags Indicates the view properties for the ExplorerView.
FolderViewMode Indicates the view mode for the ExplorerView.
DefaultCommandEventHandler Represents a method that will
DefaultCommandEvent.
FolderSelectionChangedEventHandler Represents a method that will
FolderSelectionChangedEvent.
IncludeItemEventHandler Represents a method that will
handle the IncludeItemEvent.
ItemVerbModifyEventHandler Represents a method that will
ItemVerbModifyEvent.
NavigationCompleteEventHandler Represents a method that will
NavigationCompleteEvent.
NavigationFailedEventHandler Represents a method that will
NavigationFailedEvent.
NavigationPendingEventHandler Represents a method that will
NavigationPendingEvent.
DialogControlItemSelectedEventArgs
FileDialog An abstract class that is used as the
parent class of OpenFileDialog and
SaveFileDialogBase.
FileDialogCheckButton Represents a check box control that
can be placed on a FileDialog.
FileDialogComboBox
FileDialogContainerControlBase An abstract class that is used as the
parent class of
FileDialogComboBox,
FileDialogOpenDropDown,
FileDialogRadioButtonGroup, and
FileDialogToolbarMenu.
FileDialogControlBase An abstract class that is used as the
FileDialogCheckButton,
FileDialogEditBox,
FileDialogPushButton, and
FileDialogContainerControlBase.
FileDialogControlItem
FileDialogEditBox Represents a text box control that
FileDialogOpenDropDown
FileDialogPushButton Represents a button control that
FileDialogRadioButtonGroup
FileDialogToolbarMenu
FileOkEventArgs
OpenFileDialog Allows a user to select one or more
file to open. This class cannot be
SaveAsFileDialog Enables a user to choose a location
at which to save a file, and to
specify a filename. This class
cannot be inherited.
SaveFileDialog Allows a user to choose a location
at which to save a file. This class
SaveFileDialogBase An abstract class that is used as the
parent class of SaveAsFileDialog
and SaveFileDialog.
FileDialogLayout
TileAttributes
DialogControlItemSelectedEventHandler
FileOkEventHandler
AnalogClockPanel
AreaButton
BaseComTile
BaseSidebarClockSettings
BaseTile An abstract class used as the parent
class of a custom sidebar tile
CalendarElement
CalendarImages
ChildrenWontFitArgs
ClockPanel
DataSourceEventArgs Represents event data passed from a
DigitalDateTimeElement
DragButton
DragControlWindow
DraggableButton
DropArgs
DropEventArgs
ExtraSpaceArgs
FillAlphaPresenter
FillImageResourcePresenter
FillPanel
FillPresenter
FlyoutLinkClickEventArgs Represents event data passed to an
RMAActionEventHandler in
response to an event that originated
from the optional link found at the
bottom of a sidebar tile's flyout view.
FlyoutPresenter
FlyoutStuff
FocusableButton
FocusWithinWorkaroundHelper
FolderContentsChangedEventArgs Represents event data passed to a
FolderContentsChangedEventHandler
in response to a change in the folder's
GlobalSetting
HackBorder
ImageResourcePresenter
ItemControl
ItemToolbarControl
ListMakerControl
MenuStuff
NativeResource
NativeResourceHelper
NativeResources
NativeResourceTypeConverter
NormalButton
Notification Represents a message and its
associated data that the system sends
to the user in a piece of user interface
NotificationButton Defines a button that appears on a
NotificationClickedEventArgs Contains data associated with a click
event in a notification window.
NotificationContext Declares whether an application is
currently in a particular state. This
state is used as part of the definition
of the user's context.
NotificationTimerPresenter
NotifyCompleteEventArgs
NotifyWindow
OuterTile
OverflowableCollection
OverflowableControlCollection
OverflowPanel
OverflowPresenter
OverFlowWrapper
PanelInfo
QuickLaunchTile
RMAActionEventArgs Represents event data generated by a
Rich Minimized Application (RMA).
Consumed by an
RMAActionEventHandler.
RMAData
SetDataArrayEventArgs Represents event data generated by a
data array and sent to a
SetDataArrayEventHandler.
SidebarAlarmClock
SideBarClock
SidebarClockSettings
SlideShowTile
StackAlphaPresenter
StackImageResourcePresenter
SyncHelper
SyncItemBar
SyncTile
TaskChevron
TaskOverflow
TaskOverflowableControl-
TaskPresenter
TestTile
TestTimeZone
TextElementFontInfo
ThemeHelperOld
ThemeImage
ThemeImageTypeConverter
ThemeResources
TileCollection
TileOverflow
TileThumb
TileThumbDotNet
TimerStuff
ViewStatusControl
WebHostEventArgs
WindowOrigin
WindowOriginOld
WindowStuff
ICOMDataSourceHandler Used to create and communicate with a data
source implemented in unmanaged code.
IOverflowList
ISidebar Provides access to the sidebar, which hosts
individual tiles. The sidebar host is
reponsible for opening and closing flyouts,
displaying shortcut menus, and responding to
events that involve the individual tiles.
ISidebarAlarm
AlarmState
BasketFlags
DragWindowPos
InvokeFolderActionEnum Enumeration for deciding what to do when a
user invokes an ItemControl for a folder.
Used with InvokeFolderAction and
ItemControlInvokeFolderAction.
RMAAction Constants used with the Action property to
define an event action.
SelectionModeEnum
ChildrenWontFitHandler
DocumentCompleteEventHandler
DropEventHandler
DummyDelegateToSetupAppDomain-
ExtraSpaceHandler
FlyoutClosingEventHandler
FlyoutLinkClickEventHandler Represents the method that
FlyoutLinkClickEvent
NavigateErrorEventHandler
NotificationClickedEventHandler Represents the method that
NotificationClickedEvent
NotifyCompleteEventHandler Represents the method that
NotifyCompleteEvent
RMAActionEventHandler Represents the method that
handles RMAActionEvent
SetDataArrayEventHandler Represents the method that
SetDataArrayEvent events.
ContactControl
ContactSelection
ContactTextBox
Notionally, a programming interface may be viewed generically, as shown in FIG. 5 or FIG. 6. FIG. 5 illustrates an interface Interface1 as a conduit through which first and second code segments communicate. FIG. 6 illustrates an interface as comprising interface objects I1 and I2 (which may or may not be part of the first and second code segments), which enable first and second code segments of a system to communicate via medium M. In the view of FIG. 6, one may consider interface objects I1 and I2 as separate interfaces of the same system and one may also consider that objects I1 and I2 plus medium M comprise the interface. Although FIGS. 5 and 6 show bi-directional flow and interfaces on each side of the flow, certain implementations may only have information flow in one direction (or no information flow as described below) or may only have an interface object on one side. By way of example, and not limitation, terms such as application programming or program interface (API), entry point, method, function, subroutine, remote procedure call, and component object model (COM) interface, are encompassed within the definition of programming interface.
A communication from one code segment to another may be accomplished indirectly by breaking the communication into multiple discrete communications. This is depicted schematically in FIGS. 7 and 8. As shown, some interfaces can be described in terms of divisible sets of functionality. Thus, the interface functionality of FIGS. 5 and 6 may be factored to achieve the same result, just as one may mathematically provide 24, or 2 times 2 times 3 times 2. Accordingly, as illustrated in FIG. 7, the function provided by interface Interface1 may be subdivided to convert the communications of the interface into multiple interfaces Interface1A, Interface 1B, Interface 1C, etc. while achieving the same result. As illustrated in FIG. 8, the function provided by interface I1 may be subdivided into multiple interfaces I1 a, I1 b, I1 c, etc. while achieving the same result. Similarly, interface I2 of the second code segment which receives information from the first code segment may be factored into multiple interfaces I2 a, I2 b, I2 c, etc. When factoring, the number of interfaces included with the 1st code segment need not match the number of interfaces included with the 2nd code segment. In either of the cases of FIGS. 7 and 8, the functional spirit of interfaces Interface1 and I1 remain the same as with FIGS. 5 and 6, respectively. The factoring of interfaces may also follow associative, commutative, and other mathematical properties such that the factoring may be difficult to recognize. For instance, ordering of operations may be unimportant, and consequently, a function carried out by an interface may be carried out well in advance of reaching the interface, by another piece of code or interface, or performed by a separate component of the system. Moreover, one of ordinary skill in the programming arts can appreciate that there are a variety of ways of making different function calls that achieve the same result.
In some cases, it may be possible to ignore, add or redefine certain aspects (e.g., parameters) of a programming interface while still accomplishing the intended result. This is illustrated in FIGS. 9 and 10. For example, assume interface Interface1 of FIG. 5 includes a function call Square(input, precision, output), a call that includes three parameters, input, precision and output, and which is issued from the 1st Code Segment to the 2nd Code Segment. If the middle parameter precision is of no concern in a given scenario, as shown in FIG. 9, it could just as well be ignored or even replaced with a meaningless (in this situation) parameter. One may also add an additional parameter of no concern. In either event, the functionality of square can be achieved, so long as output is returned after input is squared by the second code segment. Precision may very well be a meaningful parameter to some downstream or other portion of the computing system; however, once it is recognized that precision is not necessary for the narrow purpose of calculating the square, it may be replaced or ignored. For example, instead of passing a valid precision value, a meaningless value such as a birth date could be passed without adversely affecting the result. Similarly, as shown in FIG. 10, interface I1 is replaced by interface I1′, redefined to ignore or add parameters to the interface. Interface I2 may similarly be redefined as interface I2′, redefined to ignore unnecessary parameters, or parameters that may be processed elsewhere. The point here is that in some cases a programming interface may include aspects, such as parameters, that are not needed for some purpose, and so they may be ignored or redefined, or processed elsewhere for other purposes.
It may also be feasible to merge some or all of the functionality of two separate code modules such that the “interface” between them changes form. For example, the functionality of FIGS. 5 and 6 may be converted to the functionality of FIGS. 11 and 12, respectively. In FIG. 11, the previous 1st and 2nd Code Segments of FIG. 5 are merged into a module containing both of them. In this case, the code segments may still be communicating with each other but the interface may be adapted to a form which is more suitable to the single module. Thus, for example, formal Call and Return statements may no longer be necessary, but similar processing or response(s) pursuant to interface Interface1 may still be in effect. Similarly, shown in FIG. 12, part (or all) of interface I2 from FIG. 6 may be written inline into interface I1 to form interface I1″. As illustrated, interface I2 is divided into I2 a and I2 b, and interface portion I2 a has been coded in-line with interface I1 to form interface I1″. For a concrete example, consider that the interface I1 from FIG. 6 performs a function call square (input, output), which is received by interface I2, which after processing the value passed with input (to square it) by the second code segment, passes back the squared result with output. In such a case, the processing performed by the second code segment (squaring input) can be performed by the first code segment without a call to the interface.
A communication from one code segment to another may be accomplished indirectly by breaking the communication into multiple discrete communications. This is depicted schematically in FIGS. 13 and 14. As shown in FIG. 13, one or more piece(s) of middleware (Divorce Interface(s), since they divorce functionality and/or interface functions from the original interface) are provided to convert the communications on the first interface, Interface1, to conform them to a different interface, in this case interfaces Interface2A, Interface2B and Interface2C. This might be done, e.g., where there is an installed base of applications designed to communicate with, say, an operating system in accordance with an Interface1 protocol, but then the operating system is changed to use a different interface, in this case interfaces Interface2A, Interface2B and Interface2C. The point is that the original interface used by the 2nd Code Segment is changed such that it is no longer compatible with the interface used by the 1st Code Segment, and so an intermediary is used to make the old and new interfaces compatible. Similarly, as shown in FIG. 14, a third code segment can be introduced with divorce interface DI1 to receive the communications from interface I1 and with divorce interface DI2 to transmit the interface functionality to, for example, interfaces I2 a and I2 b, redesigned to work with DI2, but to provide the same functional result. Similarly, DI1 and DI2 may work together to translate the functionality of interfaces I1 and I2 of FIG. 6 to a new operating system, while providing the same or similar functional result.
displaying on a user interface a dynamic tile display for presenting a plurality of dynamic tiles, a dynamic tile of the plurality of dynamic tiles describing at least one of a contact or an informational element;
determining that properties of a notification match rules defined by a user of the user interface, the notification related to the at least one of the contact or the informational element of the dynamic tile;
determining a user context of the user;
determining that the user context indicates that the user is unavailable;
delaying updating of a visual element of the dynamic tile at a first time in which the user context indicates that the user is unavailable, the updating based at least in part on the rules and the user context;
determining that the user context indicates that the user is available; and
updating the visual element of the dynamic tile at a second time in which the user context indicates that the user is available, the updating based at least in part on the rules and the user context, wherein:
the dynamic tile display is an interactive sidebar,
the plurality of dynamic tiles are presented in the interactive sidebar,
the interactive sidebar is associated with a namespace, and
the namespace defines at least one of a class, an interface, a delegate, an enumeration, or a structure.
2. The computer-implemented method as recited in claim 1, wherein the dynamic tile provides a link to at least one service for accessing the at least one of the contact or the informational element.
3. The computer-implemented method as recited in claim 1, wherein the dynamic tile describes the at least one of the contact or the informational element via a dynamic visual element indicating a status of the at least one of the contact or the informational element.
4. The computer-implemented method as recited in claim 1, further comprising tracking, for the dynamic tile, the at least one of the contact or the informational element.
5. The computer-implemented method as recited in claim 1, wherein the user interface and the dynamic tile display are displayed as separate windows.
memory coupled to the one or more processors, the memory including one or more modules that are executable by the one or more processors to:
display a user interface on a display of the apparatus;
display an interactive sidebar on the apparatus, the interactive sidebar including a plurality of dynamic tiles, a dynamic tile of the plurality of dynamic tiles including a pointer that points to a corresponding application of a plurality of applications;
determine a user context and user rules, the user context indicating an unavailability of a user of the user interface;
determine that the user rules match properties of a notification of the corresponding application; and
delay provision of the notification based at least on the user context indicating the unavailability of the user of the user interface, wherein:
7. The apparatus as recited in claim 6, further configured to provide the user a status of the corresponding application.
8. The apparatus as recited in claim 6, wherein the dynamic tile is configured to provide a visual indication of a status of the corresponding application.
9. The apparatus as recited in claim 6, wherein the dynamic tile displayed on the interactive sidebar is customizable based on a user input.
10. The apparatus as recited in claim 6, wherein the corresponding application includes a communication application.
one or more computer-readable media storing instructions, that when executed by the one or more processors, cause the one or more processors to:
display a user interface on the display, the user interface including a plurality of functions, at least one function of the plurality of functions to provide access to a customizable sidebar on a portion of the user interface, the customizable sidebar comprising a plurality of tiles, at least one tile of the plurality of tiles corresponding to, and providing a link to, a service for interacting with at least one of: information, a source of information, or a contact;
receive a status of the service corresponding to the at least one tile of the plurality of tiles;
determine that user rules match properties of the status of the service;
determine a user context indicating that a user of the user interface is unavailable; and
delay an update to a visual indication of the at least one tile of the plurality of tiles until the user context is switched from indicating that the user of the user interface is unavailable to indicating that the user of the user interface is available, wherein:
the customizable sidebar is an interactive sidebar,
the plurality of tiles are presented in the interactive sidebar,
12. The system as recited in claim 11, wherein the at least one tile of the plurality of tiles provides a link to more than one service.
13. The system as recited in claim 11, wherein the service comprises a web based service.
an input interface for receiving user selections; and
wherein the one or more computer-readable media stores instructions, that when executed by the one or more processors, cause the one or more processors to:
receive a user selection at the input interface, the user selection corresponding to the at least one tile; and
in response, provide a notification representing the status of the service associated with the at least one tile to the display.
15. The system as recited in claim 11, wherein the service is selected from at least one of a predefined library of services or user definable library of services.
16. The system as recited in claim 11, wherein:
the at least one tile of the plurality of tiles provides multiple links to multiple respective services; and
the multiple respective services are configured to be used in combination for providing an interaction with the at least one of the information, the source of information, or the contact.
17. The system as recited in claim 11, wherein the service corresponding to the at least one tile comprises an e-mail service.
18. The system as recited in claim 11, wherein the service corresponding to the at least one tile is linked to by two or more of the plurality of tiles.
19. The system as recited in claim 11, wherein the delayed update of the visual indication is in response to a user caused action that switches the user context.
US13647064 2003-10-24 2012-10-08 Interface for a computer platform Active 2024-07-05 US9459837B2 (en)
US10693718 US7493592B2 (en) 2003-10-24 2003-10-24 Programming interface for a computer platform
US12356452 US8312422B2 (en) 2003-10-24 2009-01-20 Programming interface for a computer platform
US13647064 US9459837B2 (en) 2003-10-24 2012-10-08 Interface for a computer platform
US12356452 Continuation US8312422B2 (en) 2003-10-24 2009-01-20 Programming interface for a computer platform
US20130159965A1 true US20130159965A1 (en) 2013-06-20
US9459837B2 true US9459837B2 (en) 2016-10-04
ID=34394597
US10693718 Active 2025-06-07 US7493592B2 (en) 2003-10-24 2003-10-24 Programming interface for a computer platform
US12356452 Active 2024-06-18 US8312422B2 (en) 2003-10-24 2009-01-20 Programming interface for a computer platform
US13647138 Active 2025-02-25 US9430193B2 (en) 2003-10-24 2012-10-08 Interface for a computer platform
US13647064 Active 2024-07-05 US9459837B2 (en) 2003-10-24 2012-10-08 Interface for a computer platform
US (4) US7493592B2 (en)
EP (1) EP1526450A3 (en)
JP (1) JP2012128878A (en)
KR (1) KR101076904B1 (en)
CN (1) CN1609794A (en)
CA (1) CA2481552C (en)
RU (1) RU2365972C2 (en)
US7636922B2 (en) * 2004-05-03 2009-12-22 Microsoft Corporation Generic user interface command architecture
US20060059569A1 (en) * 2004-08-27 2006-03-16 Microsoft Corporation Application and device user verification from an operating system-based authentication service
DE102005009529A1 (en) * 2005-03-02 2006-09-07 Siemens Ag Method for data processing with integration of two frameworks via a generic block to communicate between the frameworks
US7761848B1 (en) 2005-03-15 2010-07-20 Open Invention Network, Llc Code generator tool for building software applications with reusable components
US7694285B2 (en) * 2005-08-30 2010-04-06 Microsoft Corporation Relaxed and extended delegates
US8863010B2 (en) * 2005-12-27 2014-10-14 Sap Ag Linking user interface design environment and application development environment
US20070223462A1 (en) * 2006-03-27 2007-09-27 Steven Hite Enhanced service delivery platform that provides a common framework for use by IMS and Web applications in delivering services
US7739660B2 (en) * 2006-03-31 2010-06-15 Sap Ag Code management in a distributed software development environment
US20080155559A1 (en) * 2006-12-21 2008-06-26 Ilja Fischer Portal eventing directory
US8001530B2 (en) * 2006-12-28 2011-08-16 Sap Ag Method and framework for object code testing
US8566781B2 (en) * 2007-04-23 2013-10-22 Siemens Aktiengesellschaft Model-based view parts and reusable data source configurations
US20090113292A1 (en) 2007-10-26 2009-04-30 Microsoft Corporation Flexibly editing heterogeneous documents
WO2009070319A1 (en) * 2007-11-27 2009-06-04 Ortiz David J Computer graphic user interface and display system
US8505038B2 (en) * 2008-01-28 2013-08-06 Blue Coat Systems, Inc. Method and system for enhancing MS exchange (MAPI) end user experiences in a split proxy environment
US8055619B2 (en) * 2008-06-05 2011-11-08 Novell, Inc. Mechanisms to support object-oriented version control operations
US20100037240A1 (en) * 2008-08-08 2010-02-11 Microsoft Corporation Non Intrusive Application Mechanism
US8676942B2 (en) 2008-11-21 2014-03-18 Microsoft Corporation Common configuration application programming interface
CN101957750A (en) * 2009-07-20 2011-01-26 鸿富锦精密工业（深圳）有限公司;鸿海精密工业股份有限公司 Electronic device and method for realizing UI (User Interface) on same
US20110131523A1 (en) * 2009-11-30 2011-06-02 International Business Machines Corporation Grouping of windows based on user-defined contexts
US20110154378A1 (en) * 2009-12-18 2011-06-23 Microsoft Corporation Api namespace virtualization
US8671384B2 (en) * 2010-06-11 2014-03-11 Microsoft Corporation Web application pinning including task bar pinning
US8694956B2 (en) * 2010-10-14 2014-04-08 Red Hat Israel, Ltd. PowerShell cmdlets code generating tool for communicating to the web services
US8407159B2 (en) * 2010-11-17 2013-03-26 Microsoft Corporation Automatic batching of GUI-based tasks
US9176742B2 (en) * 2010-12-27 2015-11-03 Microsoft Technology Licensing, Llc Converting desktop applications to web applications
WO2012094482A1 (en) * 2011-01-05 2012-07-12 Onqueue Technologies Inc. Methods and apparatuses for imparting functionality to a mobile computing device
CN102779032B (en) * 2011-05-11 2016-02-03 深圳市金蝶中间件有限公司 Request processing method and system based composite assembly
US9003318B2 (en) * 2011-05-26 2015-04-07 Linden Research, Inc. Method and apparatus for providing graphical interfaces for declarative specifications
US20120304283A1 (en) * 2011-05-27 2012-11-29 Microsoft Corporation Brokered item access for isolated applications
US9483304B2 (en) 2011-07-29 2016-11-01 National Instruments Corporation Interface wires for a measurement system diagram
US8776094B2 (en) 2011-08-11 2014-07-08 Microsoft Corporation Runtime system
US8695021B2 (en) 2011-08-31 2014-04-08 Microsoft Corporation Projecting native application programming interfaces of an operating system into other programming languages
CN102722367B (en) * 2012-05-21 2015-11-25 深圳市茁壮网络股份有限公司 A data processing method, and a terminal processor
CN103685688B (en) * 2012-09-06 2016-08-03 中兴通讯股份有限公司 The method of controlling a mobile terminal messages, system and mobile terminal
US9430133B2 (en) * 2012-12-17 2016-08-30 Sap Se Career history exercise with stage card visualization
US20140181703A1 (en) * 2012-12-22 2014-06-26 Oracle International Corporation Dynamically generated user interface
RU2536391C1 (en) * 2013-04-26 2014-12-20 Общество с ограниченной ответственностью "1С" Method for automated interface modification (versions)
US9104830B1 (en) * 2013-06-28 2015-08-11 Cadence Design Systems, Inc. Methods, systems, and articles of manufacture for assigning track patterns to regions of an electronic design
US9569105B2 (en) * 2014-06-18 2017-02-14 Mediatek Inc. Method for managing virtual control interface of an electronic device, and associated apparatus and associated computer program product
US5689700A (en) 1993-12-29 1997-11-18 Microsoft Corporation Unification of directory service with file system services
US5689701A (en) 1994-12-14 1997-11-18 International Business Machines Corporation System and method for providing compatibility between distributed file system namespaces and operating system pathname syntax
JPH09330214A (en) 1996-06-12 1997-12-22 Hitachi Ltd Automatic program generating system
US5842214A (en) 1993-12-29 1998-11-24 Microsoft Corporation Distributed file system providing a unified name space with efficient name resolution
RU2127019C1 (en) 1997-08-01 1999-02-27 Рыжов Владимир Александрович Remote-control console for domestic appliances and computer systems
US5903753A (en) 1995-08-18 1999-05-11 International Business Machines Corporation Name space registry with backward compatibility for older applications
WO1999026127A1 (en) 1997-11-14 1999-05-27 Avesta Technologies, Inc. System and method for displaying multiple sources of data in near real-time
JP2000163490A (en) 1998-08-25 2000-06-16 Informix Software Inc Dynamic object property
US20010045961A1 (en) 2000-04-06 2001-11-29 Microsoft Corporation System and theme file format for creating visual styles
WO2001095107A2 (en) 2000-06-09 2001-12-13 The Trustees Of Columbia University In The City Of New York Distributed computer system using a graphical user interface toolkit
US20020054046A1 (en) 2000-04-06 2002-05-09 Evans Christopher A. Theme aware management using fusion
US6446253B1 (en) 1998-03-20 2002-09-03 Novell, Inc. Mechanism for achieving transparent network computing
US20020135621A1 (en) 2001-03-20 2002-09-26 Angiulo Michael A. Auto thumbnail gallery
US20030081011A1 (en) 2001-10-31 2003-05-01 Sheldon Michael G. Computer system with enhanced user interface for images
US20030084209A1 (en) 2001-10-31 2003-05-01 Chadalapaka Mallikarjun B. System and method for storage virtualization
JP2003169372A (en) 2001-11-30 2003-06-13 J-Phone Co Ltd Portable communication apparatus
JP2003174598A (en) 2001-12-06 2003-06-20 Canon Inc Information processor, information processing method, recording medium and program
JP2003248647A (en) 2001-12-12 2003-09-05 Microsoft Corp Control and display for acquiring preference, inspecting behavior and guiding learning and decision policy of adaptive communication prioritization and routing system
US20030177282A1 (en) 2001-07-10 2003-09-18 Andres Hejlsberg Application program interface for network software platform
US6968438B1 (en) 1999-09-20 2005-11-22 Texas Instruments Incorporated Application programming interface with inverted memory protocol for embedded software systems
US7343567B2 (en) 2003-04-25 2008-03-11 Microsoft Corporation System and method for providing dynamic user information in an interactive display
US20110225547A1 (en) 2010-03-10 2011-09-15 Microsoft Corporation Control of timing for animations in dynamic icons
US8037104B2 (en) 2003-03-27 2011-10-11 Microsoft Corporation System and method for filtering and organizing items based on common elements
US8316105B2 (en) * 2007-03-22 2012-11-20 Microsoft Corporation Architecture for installation and hosting of server-based single purpose applications on clients
US20140324596A1 (en) 2010-11-04 2014-10-30 Digimarc Corporation Smartphone-based methods and systems
US6421694B1 (en) * 1996-12-06 2002-07-16 Microsoft Corporation System and method for displaying data items in a ticker display pane on a client computer
US20090125822A1 (en) 2003-10-24 2009-05-14 Microsoft Corporation Programming Interface for a Computer Platform
US20130159965A1 (en) 2003-10-24 2013-06-20 Microsoft Corporation Interface for a Computer Platform
US9202254B2 (en) 2010-11-04 2015-12-01 Digimarc Corporation Variable processing of both image and audio data based on processor utilization
US9105083B2 (en) 2010-11-04 2015-08-11 Digimarc Corporation Changing the arrangement of text characters for selection using gaze on portable devices
"Final Office Action Issued in U.S. Appl. No. 13/647,138", Mailed Date: Aug. 7, 2015, 16 Pages.
"Final Office Action Received for U.S. Appl. No. 13/647,138", Mailed Date: Feb. 18, 2016, 19 Pages.
"Non-Final Office Action Issued in U.S. Appl. No. 13/647,138", Mailed Date: Nov. 13, 2015, 18 pages.
"Office Action Issued in Indian Patent Application No. 1643/DEL/2004", Mailed Date: May 28, 2014, 2 Pages.
"Sample Chapter from 'Microsoft Windows 2000 Professional, Step by Step'," Lesson 3: Managing Files and Folders, May 1, 2000, retrieved from the internet at <<http://www.microsoft.com/mspress/books/sampchap/1589.asp>> on Jun. 12, 2006, 12 pages.
"Sample Chapter from 'Microsoft Windows 2000 Professional, Step by Step'," Lesson 3: Managing Files and Folders, May 1, 2000, retrieved from the internet at > on Jun. 12, 2006, 12 pages.
"Windows XP-Reviewers Guide," Microsoft Corporation, Aug. 2001, 61 pages.
A. Wolfe, Longhorn Ties Platform Apps to Core Operating System, Aug. 2004, 3 pages. *
Cadiz et al., "Designing and Deploying an Information Awareness Interface," Technical Report MSR-TR-2002-87, Microsoft Research, Redmond, WA, USA, Aug. 20, 2002, 11 pages.
Cadiz et al., "Sideshow: Providing Peripheral Awareness of Important Information," MSR-TR, 2001, 9 pages.
Cadiz et al., Designing and Deploying an Information Awareness Interface, Aug. 2002, 11 pages. *
Dey, Anind K., "Enabling the Use of Context in Interactive Applications", In Proceedings of Extended Abstracts on Human Factors in Computing Systems, Apr. 1, 2000, pp. 79-80.
Eraser, et al., "Supporting Awareness and Interaction Through Collaborative Virtual Interfaces", In Proceedings of he 12th Annual ACM Symposium on User Interface Software and Technology, Nov. 7, 1999, pp. 27-36.
Feng, "Towards Real-Time Enable Microsoft Windows," Sep. 2005, <<http://delivery.acm.org/10.1145/1090000/1086256/p142-feng.pdf>>, 5 pages.
Feng, "Towards Real-Time Enable Microsoft Windows," Sep. 2005, >, 5 pages.
Final Office Action for U.S. Appl. No. 12/356,452, mailed on Oct. 4, 2011, Kerem Karatal, "Programming Interface for a Computer Platform," 15 pages.
Korean Office Action dated Sep. 5, 2011 for KR patent application No. 10-2004-0072563, a counterpart foreign application of U.S. Pat. No. 7,493,592, 3 pages.
Mexican Office Action mailed May 17, 2011 for Mexican patent application No. PA/a/2004/008851, a counterpart foreign application of U.S. Pat. No. 7,493,592, 10 pages.
Microsoft Research Technical Report, Sideshow: Providing Peripheral Awareness of Important Information, Sep. 2001, 9 pages. *
Microsoft, "Sample Chapter from 'Microsoft Windows 2000 Professional, Step by Step'", Lesson 3: Managing Files and Folders, May 1, 2000, retrieved from the internet at <<http: //www.microsoft.com/mspress/books/sampchap/1589.asp>> on Jun. 12, 2006, 12 pages.
Microsoft, "Sample Chapter from 'Microsoft Windows 2000 Professional, Step by Step'", Lesson 3: Managing Files and Folders, May 1, 2000, retrieved from the internet at > on Jun. 12, 2006, 12 pages.
Myers et al., "Past, Present, and Future of User Interface Software Tools," ACM Transactions on Computer-Human Interaction, vol. 7, No. 1, Mar. 2000, pp. 3-28.
Office Action for U.S. Appl. No. 12/356,452 mailed on Feb. 21, 2012, Kerem B. Karatal, "Programming Interface for a Computer Platform", 22 pages.
Office action for U.S. Appl. No. 13/647,138, mailed on Apr. 14, 2015, Inventor #1, "Interface for a Computer Platform", 11 pages.
The Canadian Office Action mailed May 17, 2011 for Canadian Patent Application No. 2481552, a counterpart foreign application of U.S. Pat. No. 7,493,592, 4 pages.
Translated Japanese Office Action mailed Apr. 5, 2011 for Japanese Patent Application No. 2004-264627, a counterpart foreign application of U.S. Pat. No. 7,493,592, 3 pages.
Translated Japanese Office Action mailed Jul. 22, 2011 for Japanese patent application No. 2004-264627, a counterpart foreign application of U.S. Pat. No. 7,493,592, 4 pages.
Translated Japanese Office Action mailed Nov. 18, 2011 for Japanese patent application No. 2004-264627, a counterpart foreign application of U.S. Pat. No. 7,493,592, 6 pages.
Tsang et al., "Temporal Thumbnails: Rapid Visulization of time-based viewing data," May 2004, <<http://delivery.acm.org/10.1145/990000/989890/p175-tsang.pdf>>, 4 pages.
Tsang et al., "Temporal Thumbnails: Rapid Visulization of time-based viewing data," May 2004, >, 4 pages.
Wolfe, "Longhorn Ties Platform Apps to Core Operating System," Sep. 2004, <<http://delivery.acm/org/10.1145/1030000/1028907/wolfe.pdf>>, 3 pages.
Wolfe, "Longhorn Ties Platform Apps to Core Operating System," Sep. 2004, >, 3 pages.
Yamaguchi, "Java Language, What is the Problem? 5. JavaBeans and Componentware," IPSJ Journal, vol. 39, No. 4, Information Processing Society of Japan, Japan, Apr. 15, 1998, pp. 306-307.
Zhao et al., What's happening?: The community awareness application, Apr. 2000, 2 pages. *
US20130031504A1 (en) 2013-01-31 application
EP1526450A3 (en) 2008-05-07 application
CA2481552A1 (en) 2005-04-24 application
CA2481552C (en) 2012-01-03 grant
US20050091670A1 (en) 2005-04-28 application
CN1609794A (en) 2005-04-27 application
KR20050039547A (en) 2005-04-29 application
JP2012128878A (en) 2012-07-05 application
US20090125822A1 (en) 2009-05-14 application
US7493592B2 (en) 2009-02-17 grant
RU2365972C2 (en) 2009-08-27 grant
US9430193B2 (en) 2016-08-30 grant
JP2005174283A (en) 2005-06-30 application
EP1526450A2 (en) 2005-04-27 application
US8312422B2 (en) 2012-11-13 grant
US20130159965A1 (en) 2013-06-20 application
KR101076904B1 (en) 2011-10-25 grant
RU2004127215A (en) 2006-02-20 application
US7019740B2 (en) 2006-03-28 Resource creation method and tool
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:KARATAL, KEREM B.;SHELDON, MICHAEL G.;MILLER, MARC M.;AND OTHERS;SIGNING DATES FROM 20040720 TO 20040721;REEL/FRAME:038934/0804