Aspects of the present invention are directed generally to an electronic version of the paper sticky note for use on a computer.
The ubiquitous paper sticky note has been in popular use for years. For example, 3M POST-IT brand paper sticky notes allow people to quickly take notes and stick the notes to various things, such as physical desks, physical folders, equipment, and the like.
Various software applications exist that attempt to emulate some sticky note functionality in the computer environment. However, improvements to such digital forms of sticky notes are-greatly needed if digital sticky notes are to be truly useful to the computer user.
For example, some applications do not emulate the “stickiness” of paper sticky notes. In other words, a user cannot necessarily stick the digital forms of sticky notes to other objects in the computer environment. Instead, such digital forms of sticky notes are created by a separate application, where the digital sticky notes may only be used within that application. In some implementations, digital forms of sticky notes cannot easily or seamlessly be moved around from context to context or between applications. For example, known digital forms of sticky notes cannot be moved from a computer desktop to an item such as a folder or file, or to an icon or other representation of an item, or embedded into a document. Another disadvantage of known digital forms of sticky notes is that they are not easily searchable independently of the location or context of the sticky notes.
Aspects of the present invention are directed to the creation and manipulation of electronic versions of paper sticky notes. These electronic sticky notes may have various attachment states. For example, an electronic sticky note may be attached to the outside of an item, embedded inside an item, or a standalone note (i.e., neither attached to nor embedded in any item). Examples of such items include, but are not limited to, a file, a folder, a document, an application, an icon, a contact, a hypertext link,,a photo file, a conceptual item such as a date on a calendar, an item such as a printer or a network machine, or a virtual item such as a database query or result.
Further aspects of the present invention are directed to displaying an item icon with an indication as to whether an electronic sticky note is attached to the item. For example, the indication may be a graphical representation of a paper sticky note overlaid on the item icon, or the indication may be otherwise associated with or part of the item icon. This may allow the user to quickly ascertain which items have attached electronic sticky notes. The user may be able to preview, view, detach, or delete the attached electronic sticky note without having to open the item.
Further aspects of the present invention are directed to seamlessly moving electronic sticky notes between various attachment states and between various locations on a computer screen. For example, a user may easily create an electronic sticky note and then attach it to an item or embed it inside an item such as on a particular page of a document. The electronic sticky note may be as ubiquitous as the physical paper sticky note in that it may be attached and detached to/from nearly anything that the user can view and/or interact with in the computing environment. Notably, the electronic sticky note is not limited to a particular single application.
Still further aspects of the present invention are directed to providing an application programming interface that allows developers to customize and use the functionality and appearance of electronic sticky notes. The electronic sticky notes may interface with both the operating system and with developer applications.
Still further aspects of the present invention are directed to providing a user-friendly interface that allows users to quickly understand how to attach and detach electronic sticky notes to and from items. For example, a “dog-ear” graphical representation may be selectable such that, when selected, the electronic sticky note automatically attaches or detaches to or from an underlying item.
Yet further aspects of the present invention are directed to allowing the insertion of various content into an electronic sticky note. Content may be created in the electronic sticky note or may be copied into the electronic sticky note from another source. Content copied onto the electronic sticky note may be further edited and/or annotated.
These and other aspects of the invention will become apparent to one of ordinary skill in the art upon a reading of the following description, drawings, and the claims.
The foregoing summary of the invention, as well as the following detailed description of illustrative embodiments, is better understood when read in conjunction with the accompanying drawings, which are included by way of example, and not by way of limitation with regard to the claimed invention.
General Computing Environment
A basic input/output system 160 (BIOS), containing the basic routines that help to transfer information between elements within the computer 100, such as during start-up, is stored in the ROM 140. The computer 100 also includes a hard disk drive 170 for reading from and writing to a hard disk (not shown), a magnetic disk drive 180 for reading from or writing to a removable magnetic disk 190, and an optical disk drive 191 for reading from or writing to a removable optical disk 192 such as a CD ROM or other optical media. The hard disk drive 170, magnetic disk drive 180, and optical disk drive 191 are connected to the system bus 130 by a hard disk drive interface 192, a magnetic disk drive interface 193, and an optical disk drive interface 194, respectively. The drives and their associated computer-readable media provide nonvolatile storage of computer readable instructions, data structures, program modules and other data for the personal computer 100. It will be appreciated by those skilled in the art that other types of computer readable media that can store data that is accessible by a computer, such as magnetic cassettes, flash memory cards, digital video disks, Bernoulli cartridges, random access memories (RAMs), read only memories (ROMs), and the like, may also be used in the example operating environment. A computer-readable medium, as used herein, is intended to include a single medium as well as a collection of physically separate media, such as, for example, a collection of CD ROMs, or a CD ROM in combination with a computer memory.
A number of program modules can be stored on the hard disk drive 170, magnetic disk 190, optical disk 192, ROM 140 or RAM 150, including an operating system 195, one or more application programs 196, other program modules 197, and program data 198. A user can enter commands and information into the computer 100 through input devices such as a keyboard 101 and pointing device 102. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner or the like. These and other input devices are often connected to the processing unit 110 through a serial port interface 106 that is coupled to the system bus, but may be connected by other interfaces, such as a parallel port, game port or a universal serial bus (USB). Further still, these devices may be coupled directly to the system bus 130 via an appropriate interface (not shown). A monitor 107 or other type of display device is also connected to the system bus 130 via an interface, such as a video adapter 108. In addition to the monitor, personal computers typically include other peripheral output devices (not shown), such as speakers and printers. In a preferred embodiment, a pen digitizer 165 and, accompanying pen or stylus 166 are provided in order to digitally capture freehand input. Although a direct connection between the pen digitizer 165 and the serial port is shown, in practice, the pen digitizer 165 may be coupled to the processing unit 110 directly, via a parallel port or other interface and the system bus 130 as known in the art. Furthermore, although the digitizer 165 is shown apart from the monitor 107, it is preferred that the usable input area of the digitizer 165 be co-extensive with the display area of the monitor 107. Further still, the digitizer 165 may be integrated in the monitor 107, or may exist as a separate device overlaying or otherwise appended to the monitor 107.
The computer 100 can operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 109. The remote computer 109 can be a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 100, although only a memory storage device 111 has been illustrated in
When used in a LAN networking environment, the computer 100 is connected to the local network 112 through a network interface or adapter 114. When used in a WAN networking environment, the personal computer 100 typically includes a modem 115 or other means for establishing a communications over the wide area network 113, such as the Internet. The modem 115, which may be internal or external, is connected to the system bus 130 via the serial port interface 106. In a networked environment, program modules depicted relative to the personal computer 100, or portions thereof, may be stored in the remote memory storage device.
It will be appreciated that the network connections shown are illustrative and other techniques for establishing a communications link between the computers can be used.
The existence of any of various well-known protocols such as TCP/IP, Ethernet, FTP, HTTP and the like is presumed, and the system can be operated in a client-server configuration to permit a user to retrieve web pages from a remote web-based server. Any of various conventional web browsers can be used to display and manipulate data on web pages.
A stylus could be equipped with buttons or other features to augment its selection capabilities. In one embodiment, a stylus could be implemented as a “pencil” or “pen”, in which one end constitutes a writing portion and the other end constitutes an “eraser” end, and which, when moved across the display, indicates portions of the display are to be erased. Other types of input devices, such as a mouse, trackball, or the like could be used. Additionally, a user's own finger could be used for selecting or indicating portions of the displayed image on a touch-sensitive or proximity-sensitive display. Consequently, the term “user input device”, as used herein, is intended to have a broad definition and encompasses many variations on well-known input devices.
User Experience Overview
Referring to
The electronic sticky note 300 may include one or more tool controls 302 that may include one or more drop-down menus and/or tool buttons, an audio recording and/or playback control 303, and/or a window resize thumb 304. The electronic sticky note 300 may further include a caption label 305 that may indicate information about the electronic sticky note 300 such as the date and/or time that the sticky note was created or saved and/or a title associated with the electronic sticky note 300. The electronic sticky note 300 may further include a drag handle 307 and a drop-down menu 308.
Electronic sticky notes may be used as free-floating document windows, and may or may not be attached to or embedded in other items. In fact, electronic sticky notes may be “stuck” to practically any item, which the user can view and/or interact with in the computing environment. This means that a user may be able to annotate anything on the computer using the electronic sticky note itself as the annotation. Electronic sticky notes may physically appear to the user in a way that mimics the look of a paper stuck to the computer screen. For example, electronic sticky notes may appear on the screen with a shadow, and they may be rotatable along a central axis to further simulate a paper attached to the screen. Electronic sticky notes may, when inactive, hide various controls to allow users to focus on their content. Moreover, electronic sticky notes may be customized, such as with user-specified colors and/or backgrounds, to simulate customized paper stationary.
Electronic sticky notes may also be seamlessly moved between items, regardless of the type of item, and seamlessly moved around on the computer screen, such as to different locations on the desktop. For example, an electronic sticky note may be attached to a word-processing document, and easily moved to be instead attached to a spreadsheet document or embedded in a particular Internet web page. Alternatively, for example, an electronic sticky note may be created on the desktop and then easily attached to an item.
The electronic sticky note 300 may stand alone (i.e., not attached to anything), be attached to another item, or be embedded in an item (such as embedded in a document). A “dog ear” 306 or other graphical element may indicate a special area from which a user can initiate an attachment operation. For example, the user may grab the dog ear 306 and drag it around, thereby allowing the user to pick up the electronic sticky note 300 and drag/drop it onto an item to which the electronic sticky note 300 is to be attached. Alternatively, the electronic sticky note 300 may be attached using commands or menu selections. The user may then select the dog ear 306 (e.g., by tapping on it with the stylus 204) to attach or detach the electronic sticky note 300 to/from the underlying item. The underlying item to which the electronic sticky note 300 may be attached may be any type of item, such as a file, a folder, a document, an application, an icon, a link to or other representation of a contact, a hypertext link, the desktop, a conceptual item such as a date on a calendar, an email message, a link to an Internet location such as a favorite location, an item represented in the shell such as a printer or a network machine, or a virtual item such as a database query or result. Attachment and detachment of electronic sticky notes are discussed further herein under the section entitled, “Attaching/Detaching.”
In addition, electronic sticky notes may be searched by their content, location, title, handwriting recognition text generated by processing handwritten ink content in the electronic sticky note into text, and/or other aspects and properties of the electronic sticky notes. Searching may be performed for electronic sticky notes regardless of whether they are standalone, attached to an item, or embedded in an item; they may all be equally searchable. Each electronic sticky note may be associated with automatically created metadata organized such that it is usable for searching. The metadata may be derived from the content and/or state of the electronic sticky note.
Creation, Storage, and Deletion of Electronic Sticky Notes
An electronic sticky note may be created in a number of ways. For example, a user may create a new electronic sticky note by selecting a “new electronic sticky note” function from an application, such as via a button or drop-down menu in the application.
Alternatively, a user may right-click or otherwise call up a contextual menu that includes an option to create a new electronic sticky note. As will be discussed in more detail, the electronic sticky note that is created may be a standalone note, or it may be attached to or embedded in an item. These are known as attachment states. The default attachment state of a newly created electronic sticky note may depend upon the context in which the electronic sticky note is created. For instance, if a user invokes a contextual menu associated with an item such as a document icon, the electronic sticky note created from the contextual menu may be, by default, attached to the document represented by the document icon. The user may accept the default attachment state or choose an alternate attachment state. As another example, if the user invokes a contextual menu on the desktop (such as by right-clicking on the desktop), then the electronic sticky note may be, by default, a standalone electronic sticky note. The discussed ways of creating electronic sticky notes are merely examples; electronic sticky notes may be created in other ways as well.
Electronic sticky notes may be stored as files in one or more defined locations, such as in a predefined folder. The location of a stored electronic sticky note may depend upon whether the electronic sticky note is attached to an item, embedded in an item, or a standalone electronic sticky note. Each electronic sticky note may be stored as an individual file, and the names of the files may be automatically selected or selected by the user. The format of the file may be a binary format or a human-readable format such as text or XML. The content of the electronic sticky note may be converted from binary format to text format, using encoding schemes such as but not limited to Base64 encoding, for purposes of storing in a text or XML file. The files containing the electronic sticky notes may contain additional metadata about the electronic sticky notes, such as but not limited to the name of the person creating the sticky note. The files storing the electronic sticky notes may also contain or otherwise be associated with the states of their respective electronic sticky notes. For example, each file may contain or otherwise be associated with information representing whether its electronic sticky note is opened or closed. The opened or closed state of each electronic sticky note may be maintained even through the computer may be shut down and/or rebooted. The electronic sticky note may be automatically saved when it is closed, the user may be able to explicitly save the electronic sticky note, or the electronic sticky note may be automatically saved when its content changes or irrespective of whether its content changes. Electronic sticky notes may be auto-saved periodically, such as every thirty seconds, or more or less often. Actions that may trigger an automatic save of an electronic sticky note include changing the content, causing the electronic sticky note to lose focus, closing the electronic sticky note, and locking the desktop by the user or by a screens aver.
One of several things may occur in response to an item that an electronic sticky note is attached to being deleted. For example, the attached electronic sticky note may become a standalone electronic sticky note (i.e., not attached to any item). Or, the electronic sticky note may be deleted along with the item. Another possible outcome is that the user may be presented with a dialogue requesting the user to choose whether the electronic sticky note should be deleted or kept as a standalone note. Yet another possibility is that a dialogue may remind the user that an electronic sticky note is attached to the item requested to be deleted, and the user may be asked whether the user is sure that the item should be deleted. Also, how the electronic sticky note is affected by the deletion of the item to which it is attached may be set by the user using, e.g., an options menu.
User Interface Components
The electronic sticky note 300 may have a number of different tool controls 302 (such as buttons) and/or functions that may be accessible via drop-down menus 308. For example, copy, paste, undo, print, attach, detach, and option tool controls 302 and/or menu 308 functions may be available. Other available tool controls 302 and/or functions in the menu 308 may include “always on top” (which keeps the electronic sticky note 300 as the topmost window), color (which enables the user to set the color of the electronic sticky note 300), and properties (which enables the user to view and/or set various electronic sticky note properties).
Selecting the options tool control may generate a dialog that enables the user to control various settings. Examples of settings include: setting the default color of the electronic sticky note 300, setting the default content mode (e.g., ink or text), turning on/off handwriting recognition, selecting a handwriting recognition language, turning on/off pressure sensitivity of the stylus 204, setting a default ink color, and setting whether to share attached electronic sticky notes to specific files in a runtime extensible list (e.g., photos, documents, contacts). Other examples include configuring default fonts, setting audio quality and maximum recording length, setting the default width and height of the electronic sticky note 300, and setting auto-save frequency. Still further examples include setting a directory in which to store the electronic sticky note 300, configuring email options (for emailing an, electronic sticky note), and setting a default location on the display surface 202 where new electronic sticky notes are to be created.
Content Interaction
It is preferably intuitive for a user to interact with content on the canvas 301. Depending upon the type of content, the canvas 301 may receive and display the content differently in an intelligent manner. The canvas 301 may receive a variety of content, such as but not limited to text, ink, images (such as shown in FIG. I), graphics, animation, audio, and video. A single type of content may be used or a mix of content may be simultaneously supported by the canvas 301. For example, text and ink may co-exist on the same canvas 301 simultaneously, yet independently of one another.
There may exist one or more text boxes on the canvas 301 into which text may be entered and edited. The text box may be automatically placed, or moved depending upon the location of other content on the canvas 301. For example, a text box may be placed automatically on the canvas 301 so as not to interfere with any existing image. When an image is inserted onto the canvas.301, the text box (and any ink) may automatically move out of the way (e.g., down). The text box and ink may move back up when the image is deleted. When the user converts to text from ink (e.g., using a handwriting recognition tool), the default location of the text box may be after or under any existing ink or image.
Content may be created directly on the canvas 301, such as by typing text onto the canvas 301 into a text box using the keyboard 101, or by drawing ink onto the canvas 101. Also, pre-existing content may be moved or copied from another source onto the canvas 301. For example, content may be copied from various sources such as, but not limited to, a file (e.g., a word processing document or a spreadsheet), a display or screenshot or portion thereof (using a screen capture utility), a web page, an email, or a device such as a digital camera, scanner, or microphone, and pasted onto the canvas 301. Such copying, moving, and pasting may be performed in any manner, such as by GUI selecting, dragging, and dropping actions, or by use of explicit commands. Content that is copied from another source may contain additional metadata or other information that is retained for subsequent use in organizing and/or searching the electronic sticky note. This metadata or other information may or may not be displayed on the canvas 301. Where the metadata or other information is not normally displayed on the canvas 301, it may otherwise be accessible using a different user interface, such as a dialogue box, which may be instantiated from the menu 308 or the like.
Attaching/Detaching
As previously discussed, electronic sticky notes may be attached to or embedded in various items. The term “item” in connection with the present discussion regarding attachment includes any item that the user may interact with such as, but not limited to, a file, a folder, a document, an application, an icon, a contact, a hypertext link, the desktop, a conceptual item such as a date on a calendar, an item represented in the shell such as a printer or a network machine, or a virtual item such as a database query or result.
The electronic sticky note 300 may be attached to an item, meaning that from the point of view of the user, the electronic sticky note 300 is attached to the “outside” of the item. Comparing an item to a physical book, this may be analogous to, for example, attaching a physical sticky note to the outside cover of the book. When attached to the outside of the item, some or all of the content of the electronic sticky note 300 may be available to the user without opening the item itself. One or more electronic sticky notes may be attached simultaneously to a single item. Also, when the item is moved around (or the icon representing the item is moved around), the attached electronic sticky note may move with the item or item icon. Whether this occurs may be set according to user-selected settings using, e.g., an options menu.
When attached to an item, the representation of the item (e.g., the item's icon) may preferably include an indication that an electronic sticky note is attached to the item. For example,
The electronic sticky note 300 may alternatively or additionally be attached in an item (i.e., embedded in an item), meaning that from the point of view of the user, the electronic sticky note 300 is attached to the “inside” of the item. Again comparing an item to a physical book, this may be analogous to, for example, attaching a physical sticky note to a page in the book. One or more electronic sticky notes may be embedded simultaneously in a single item. In some embodiments, the existence of the electronic sticky note 300 attached in an item, and/or the content of the electronic sticky note 300, may be available to the user only after the item has been opened or previewed. In further embodiments, the existence and/or content of the electronic sticky note 300 may be available to the user without opening or previewing the item. The, representation of the item (e.g., the item's icon) may or may not include an indication that an electronic sticky note is embedded in the item. For example,
As another example of embedding an electronic sticky note in an item,
The electronic sticky note 300 may further exist on the desktop. In this case, the electronic sticky note may be treated like an item in and of itself, with its own graphical representation (e.g., its own icon). The, user may be able to interact with the graphical representation of the electronic sticky note 300 by dragging, dropping, and opening it, just like other items. The electronic sticky note 300 may further be located within a file folder. This may be considered another state of existence. However, this may alternatively be considered to be embedding the electronic sticky note 300 in the folder, since the folder may be considered an item.
Thus, electronic sticky notes may have various attachment and existential states. The electronic sticky note 300 may be moved between states using drag/drop techniques and/or using menu functions. To move between states, the electronic sticky note 300 may be detached from an item (if it is already attached to or in an item) and then attached to an item, embedded in an item, and/or it may become a standalone note, as desired. A user may move the electronic sticky note 300 between states and within items just as easily as they can take a physical paper sticky note and stick it to a paper document or to the outside of a folder or their desk. The electronic sticky note 300 may be moved from any state to any state. For example, the electronic sticky note 300 may be embedded in a first item, and may be moved so as to be embedded at another location in the first item, embedded in a different second item, attached to the second item, or attached to the desktop. As another example, the electronic sticky note 300 may be attached to the desktop, and may thereafter be detached from the desktop and re-attached to an item or embedded in an item. Any combination of moving between items, moving within items, and moving between states, is within the scope of this discussion.
Referring back to
When dragging/dropping the electronic sticky note 300 (or its representative icon) onto another item, the “dog ear” 306 or other graphical element may indicate a special area from which a user can initiate an attachment operation. For example, the user may grab the electronic sticky note 300 and drag/drop it onto an item to which the electronic sticky note 300 is to be attached. The user may then select the dog ear 306 (e.g., by tapping on it with the stylus 204) to attach or detach the electronic sticky note 300 to/from the underlying item. The dog ear 306 is shown in the upper left corner of the electronic sticky note 300. However, the dog ear 306 may be located anywhere on the electronic sticky note 300 (e.g., at any of the comers or even along a side), and the dog ear 306 may take a completely different form than a dog ear. For example, the dog ear 306 may instead be an icon, a selectable button, or some other graphical representation located somewhere on or near the electronic sticky note 300.
Where the item is a calendar, the electronic sticky note 300 may be explicitly attached to a particular date and/or time, such as by dragging/dropping the electronic sticky note 300 (or its representative icon) onto the date. The electronic sticky note 300 may further be implicitly attached to a particular date and/or time by setting a reminder function on the electronic sticky note 300 (such as through the drop-down menu 308), such that the electronic sticky note 300 becomes automatically attached to the calendar date and/or time. In addition, the content of the electronic sticky note 300 may be automatically or manually repurposed. For example, attaching the electronic sticky note 300 to a calendar may automatically generate a reminder in the calendar, where the reminder may include some or all of the content of the electronic sticky note 300. Thus, the content of the electronic sticky note 300 has been automatically repurposed as reminder content. More generally, the electronic sticky note 300 may cause certain actions to occur depending upon what it is attached to. Another example is where the attachment of the electronic sticky note 300 to an action item in a task list may cause a reminder to be generated depending upon when the task is due, wherein the reminder may include some or all of the content of the electronic sticky note 300. As yet another example, attaching the electronic sticky note 300 to a contacts lists may cause some or all of the content in the electronic sticky note 300 to be converted into a contact in the contact list. Repurposing may include parsing and/or other interpreting of the content in order to determine whether the particular content makes sense to be repurposed in a particular way, to ensure the format of the content is compatible with the target, and/or to extract certain information from the content (e.g., separately extract the name, address, and phone number where the content is to be converted to a contact). Repurposing may be automatic as described above or may be manual, such as via a menu item or keyboard command.
There may be many ways available to the user to attach the electronic sticky note 300 to an item or to detach the electronic sticky note 300. In addition to the drag/drop implementation already discussed, one or more menus may be used to access the attach and/or detach function. For example,
Electronic sticky notes may, in appropriate situations, be automatically attached to or in items by the operating system without the user explicitly attaching an electronic sticky note. For example, many digital cameras support taking a voice memo (also known as a voice note or voice annotation) along with a digital photo. The cameras typically store the voice memo as a separate audio file that may or may not be explicitly linked to the corresponding photo file, such as by including a reference to the corresponding photo file. Both files may have the same filename but different prefixes (e.g., ABC001.jpg and ABC001.wav). When such voice-annotated photos are copied onto the user's computer (e.g., computer 100), the audio file may be automatically converted into an electronic sticky note containing some or all of the audio content from the audio file, and the resulting electronic sticky note may then be programmatically attached to the corresponding photo file. Alternatively, a new photo file may be created (which may be a replica of the original photo file) and the electronic sticky note attached to the new photo file. Thus, a single photo file may be produced with an attached electronic sticky note containing the voice annotation to the photo. In one embodiment, the electronic sticky note may be attached by writing the information of the electronic sticky note into a header area of the photo file such that the actual electronic sticky note data is embedded inside the photo file. In such a case, the content of the photo image would not be modified by the electronic sticky note. The user could still manually create an electronic sticky note with voice or other content and manually attach the electronic sticky note in or to the photo file. As another useful way to manage photos with electronic sticky notes, a user may scan both the front and back of a physical photograph, wherein the scanned back of the photograph is entered as content into an electronic sticky note attached in or to the photo file representing the scanned front of the photograph.
Electronic sticky notes may be similarly embedded in files using the above-discussed methods of attachment. For example, the electronic sticky note 300 may be dragged and dropped onto a particular portion of an open document. Also, application windows may include one or more functions that allow the user to interact with electronic sticky notes. For example, in
Electronic Sticky Note Management, Interfacing, and Integration
Referring to
The sticky note coordinator 1501 is a module that is configured to communicate with the primary electronic sticky note process in the shell, and to expose an interface allowing tertiary applications to interact with the primary electronic sticky note process. When another application desires to programmatically create a new electronic sticky note, the other application may link to the sticky note coordinator 1501 and use an application programming interface (API) to create and/or interact with the electronic sticky notes. Additionally, interaction with electronic sticky notes may be made convenient and straightforward for application developers. The sticky note coordinator 1501 may interface with portions of the shell, one or more shell extensions, one or more shell utilities, one or more independent software applications, and/or one or more handlers or viewers for specific document or other file types, such as photo files.
Applications may communicate with the sticky note manager 1502 via the sticky note coordinator 1501. Examples of various external interfaces that may exist are shown in Tables 1 and 2 (merely illustrative).
Referring to
Attachment of electronic sticky notes may be based on Object Linking and Embedding (OLE) or other standard drag-drop mechanisms for transferring data from a source component to a destination component via mouse or stylus action. The source may be the sticky note manager 1502. The destination may be the shell core code 1601 or a separate drop handler component 1603 registered with the shell. The passed data object may be created by the sticky note manager 1502 and may contain a file path of a stand-alone electronic sticky note or may contain a serialized representation of the electronic sticky note content. For added flexibility, the data object may also specify the drop handler 1603 to be used, overriding the default shell handler. When the user initiates a drag-drop operation, the sticky note manager 1502 may create a data object and pass it to the OLE drag-drop coordinator 1609. The OLE drag-drop coordinator 1609 may call the drop-handler 1603 whenever the user moves the cursor and query whether the cursor is over a valid drop target. The drop handler 1603 may determine this by checking properties of the object under the cursor, such as whether it is a read-only file or already has a maximum number of electronic sticky notes attached. The OLE drag-drop coordinator 1609 will then inform the sticky note manager 1502 whether there is currently a valid target. The sticky note manager 1502 may respond by displaying one of a set of cursor images to the user which conveys the target status. The images may be thumbnails of the electronic sticky note with superimposed symbols such as checkmarks or X's to indicate valid and invalid targets. If the user completes the operation by dropping the data over a valid target, the OLE drag/drop coordinator 1609 notifies the drop-handler 1603. The drop handler 1603 then may associate the electronic sticky note content with the target item, such as by storing the content in the target item.
An attached electronic sticky note may be stored in an extended property set on the owner object. The content of the electronic sticky note, which may be expressed in XML, may be serialized to a stream property. Electronic sticky note attributes that must be exposed for queries (e.g., author, date, importance) may be replicated in separate properties in the same property set. The properties may be accessed through a common property interface provided either by the core shell code 1601 for standard file types, or by a custom property handler component registered with the shell to handle specific file types. For certain file types, such as OLE structured documents, the property store may reside in the file itself. For other file types, the property store may be stored in an associated file stream provided by the file system, or in a separate database. Helper code to access the property set may be exposed by methods on the sticky note manager 1502.
In the illustrative embodiment shown, the core shell code 1601 has an existing interface, IContextMenu, for extending context menus. Annotation code added to the core shell code 1601 may provide the context menu extension 1602 with this interface as well as a second interface, IShellExtInit. Before displaying a context menu, the core shell code 1601 calls IShellExtInit interface to pass the context menu extension 1602 a reference to selected object(s). Then, the core shell code 1601 calls the IContextMenu interface to allow the context menu extension 1602 to add items to the menu. The context menu extension 1602 checks for an annotation property set on the selected object. If an annotation property set is found, the context menu extension 1602 adds a “View electronic sticky note” menu item, otherwise it adds an “Attach electronic sticky note” item. When either of these items are selected, the context menu extension 1602 is called back through the IContextNenu interface. The context menu extension 1602 calls the sticky note coordinator 1501, which in turn calls the sticky note manager 1502 to display or create an electronic sticky note, and passes the electronic sticky note a reference to the selected object.
The core shell code 1601 further has an exiting interface, IColumnProvider, for defining new columns for a detailed view. The detailed view is, in an illustrative embodiment, a view presented when the shell displays a list of files or other items, one of the items having an electronic sticky note attached thereto. The detailed view may be extended using the IColumnProvider interface to provide additional information about the listed items and/or their corresponding electronic sticky notes. The core shell code 1601 may provide this interface to the column handler 1605. The IColunmProvider interface is called when the core shell code 1601 opens a folder and when each line of the detailed view is built. The core shell code 1601 initially calls the column handler 1605 to obtain the attributes of the new column (e.g., name, width, value type). If, for example, an electronic sticky note column is displayed, the core shell code 1601 calls the column handler 1605 to obtain additional information for each object. The column handler 1605 checks whether the specified object has an attached electronic sticky note, and returns the appropriate additional information.
The icon overlay handler 1604 is a shell extension that is used to provide a visual indicator for items that have attached electronic sticky notes. The icon overlay handler 1604 may display a small image of an electronic sticky note (or some other visual indicator), such as the representation 1001 shown in
The electronic sticky note 300 may be presented to the user as a window hosting user interface elements 302-308, as shown in
The Sticky Note Bubble control may have a plurality of user interface elements such as buttons, content input areas, and/or other elements, that allow the creation and rendering of ink, voice, text, and/or other forms of annotation. These user interface elements may be customizable by application developers. An application hosting the Sticky Note Bubble control may programmatically turn off portions of the user interface and/or customize the look and feel of the Sticky Note Bubble (e.g., by changing its color, size, and transparency). Physical attributes resulting from such customization (such as color) may be persisted in the content of the Sticky Note Bubble so that the content is exactly recreated in its next session or when it is physically transferred between states, applications, and/or even machines. An illustrative list of Sticky Note Bubble user interface elements is described in Table 3.
The Sticky Note Bubble control may further have an object model including a plurality of properties, methods, and events, as illustratively shown in Tables 4 through 6, that may expose an application programming interface (API) for hosting the sticky note bubble control and/or for enabling customization of user interfaces and functionality. These illustrative API elements may exist in any combination or subcombination. Developers leverage the provided user interface elements, properties, methods, and events of the Sticky Note Bubble to serve their own purposes. For example, an application developer who wishes to create an application that can host electronic sticky note controls supporting ink, voice, and text input features may do so by creating the appropriate software code that can instantiate, customize, and control a Sticky Note Bubble control, from within the application, using the API exposed from the Sticky Note Bubble control. The developer may specify which set of elements in the application is annotatable and provide some user interface (e.g., a button labeled “Add Annotation”) for adding embedded electronic sticky notes. At run time, the application user may choose to add an annotation, and in response a Sticky Note Bubble control appears, thereby allowing the user to add ink, text, and voice annotations. As another example, the developer may desire to write an electronic sticky note application. The developer may create a basic framework and write just enough code to display a Sticky Note Bubble control and use the API exposed by the control to get and set data from the control so as to persist the electronic sticky note content in any desired manner.
While apparatuses and methods as described herein embodying various aspects of the present invention are shown by way of example, it will be understood that the invention is not limited to these particular embodiments. Modifications may be made by those skilled in the art, particularly in light of the foregoing teachings. For example, one or more of the elements of the aforementioned embodiments may be utilized alone or in combination with one or more elements of the other embodiments. Also, although portions of the disclosure are described in connection with Microsoft WINDOWS brand operating systems, it should be understood that other operating systems may be used, such as other graphical user interface-based operating systems. In addition, the invention has been defined using the appended claims, however these claims are also illustrative in that the invention conceived of includes elements and steps described herein in any combination or sub combination. It will also be appreciated and understood that modifications may be made without departing from the true spirit and scope of the invention.