Dynamic anchoring of annotations to editable content
First Claim
1. A computer-implemented method, comprising:
- providing an application programming interface (API) for managing annotations within content, the API comprising a DynamicSelectionProcessor.GenerateLocatorPart which converts a content selection to an annotation framework locator part, a DynamicSelectionProcessor.ResolveLocatorPart which converts the annotation framework locator part to a corresponding content selection;
loading content from persistent storage to create a runtime content, the content including a portion thereof that is associated with an annotation identifier;
processing the annotation identifier and determining a start of the portion and an end of the portion;
upon loading the content, inserting one or more anchor markers into the runtime content, wherein each anchor marker is a simple class, AnchorMarker, which has properties for setting and getting an AnchorMarkerID, which is an identifier corresponding to the annotation framework locator part, and an AnchorMarkerTagType, the AnchorMarkerID and AnchorMarkerTagType properties being kept in a corresponding DependencyProperties of the each anchor marker to enable the properties to be serialized and deserialized;
upon loading the content, each of the anchor markers registering itself with a DynamicAnchorManager by overriding an OnParentChanged method;
converting at least one of the one or more anchor markers into content locators;
maintaining anchor information in a dynamic anchor table, the anchor information corresponding to the portion within the runtime content;
loading annotation information from a persistent store which is separate from the content, the annotation information comprising an annotation corresponding to the annotation identifier; and
associating the annotation with the portion using the anchor information within the dynamic anchor table, the annotation corresponding to the start and end of the portion.
2 Assignments
0 Petitions
Accused Products
Abstract
Described is the annotating of computer document content, particularly editable content, by saving annotations in a separate annotation store, and mapping the annotations back to the content. By mapping, no data are added to the original content at runtime, and only minimal data need be added to the content when persisted. An annotation is anchored to a piece of runtime content, such as upon creation of the annotation, by maintaining annotation data as well as start and end pointers mapped to the annotated piece. Upon saving the content, information (e.g., an anchor marker including an identifier) is persisted with the piece of content to allow the annotation to be re-anchored to the piece upon subsequent reload. For example, when loading content from persistent storage that includes an annotation identifier, the annotation identifier is processed to locate a start and end of the portion and an annotation in the annotation store.
42 Citations
15 Claims
-
1. A computer-implemented method, comprising:
-
providing an application programming interface (API) for managing annotations within content, the API comprising a DynamicSelectionProcessor.GenerateLocatorPart which converts a content selection to an annotation framework locator part, a DynamicSelectionProcessor.ResolveLocatorPart which converts the annotation framework locator part to a corresponding content selection; loading content from persistent storage to create a runtime content, the content including a portion thereof that is associated with an annotation identifier; processing the annotation identifier and determining a start of the portion and an end of the portion; upon loading the content, inserting one or more anchor markers into the runtime content, wherein each anchor marker is a simple class, AnchorMarker, which has properties for setting and getting an AnchorMarkerID, which is an identifier corresponding to the annotation framework locator part, and an AnchorMarkerTagType, the AnchorMarkerID and AnchorMarkerTagType properties being kept in a corresponding DependencyProperties of the each anchor marker to enable the properties to be serialized and deserialized; upon loading the content, each of the anchor markers registering itself with a DynamicAnchorManager by overriding an OnParentChanged method; converting at least one of the one or more anchor markers into content locators; maintaining anchor information in a dynamic anchor table, the anchor information corresponding to the portion within the runtime content; loading annotation information from a persistent store which is separate from the content, the annotation information comprising an annotation corresponding to the annotation identifier; and associating the annotation with the portion using the anchor information within the dynamic anchor table, the annotation corresponding to the start and end of the portion. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A computer program product comprising at least one computer-readable storage medium having encoded thereon computer-executable instructions, which when executed perform a method comprising:
-
providing an application programming interface (API) for managing annotations within content, the API comprising a DynamicSelectionProcessor.GenerateLocatorPart which converts a content selection to an annotation framework locator part, and a DynamicSelectionProcessor.ResolveLocatorPart which converts the annotation framework locator part to a corresponding content selection; loading content from a persistent storage to create a runtime content; upon loading the content, inserting one or more anchor markers into the runtime content, wherein each anchor marker is a simple class, AnchorMarker, which has properties for setting and getting an AnchorMarkerID, which is an identifier corresponding to the annotation framework locator part, and an AnchorMarkerTagType, the AnchorMarkerID and AnchorMarkerTagType properties being kept in a corresponding DependencyProperties of the each anchor marker to enable the properties to be serialized and deserialized; upon loading the content, each of the anchor markers registering itself with a DynamicAnchorManager by overriding an OnParentChanged method; converting at least one of the one or more anchor markers into content locators; anchoring an annotation to a piece of runtime content without altering the runtime content from the perspective of a program that has loaded the content, the annotation comprising a locator part identifier and a selection endpoint which provides a link between the annotation and the piece of runtime content; maintaining a runtime anchor table to manage a relationship between the annotation and the runtime content; and upon saving the content, persisting annotation information in an annotation store, the annotation store being separate from the content to which the annotation is anchored, the annotation information comprising data associated with the annotation and the piece of content, the annotation information allowing the annotation to be re-anchored to the piece of content upon the content being subsequently reloaded into a subsequent instance of runtime content. - View Dependent Claims (7, 8, 9, 10, 11, 12, 13, 14, 15)
-
Specification