US8316323B2 - Breadcrumb navigation through heirarchical structures - Google Patents

Breadcrumb navigation through heirarchical structures Download PDF

Info

Publication number
US8316323B2
US8316323B2 US12/748,110 US74811010A US8316323B2 US 8316323 B2 US8316323 B2 US 8316323B2 US 74811010 A US74811010 A US 74811010A US 8316323 B2 US8316323 B2 US 8316323B2
Authority
US
United States
Prior art keywords
window
node
windows
child
parent
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related, expires
Application number
US12/748,110
Other versions
US20110239164A1 (en
Inventor
Puravkumar B. Saraiya
Catherine Elizabeth Dumas
Stephen M. Danton
Balasubramanian Shyamsundar
Pravin R. Indurkar
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Priority to US12/748,110 priority Critical patent/US8316323B2/en
Assigned to MICROSOFT CORPORATION reassignment MICROSOFT CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: DANTON, STEPHEN M., SHYAMSUNDAR, BALASUBRAMANIAN, DUMAS, CATHERINE ELIZABETH, INDURKAR, PRAVIN R., SARAIYA, PURAVKUMAR B.
Publication of US20110239164A1 publication Critical patent/US20110239164A1/en
Application granted granted Critical
Publication of US8316323B2 publication Critical patent/US8316323B2/en
Assigned to MICROSOFT TECHNOLOGY LICENSING, LLC reassignment MICROSOFT TECHNOLOGY LICENSING, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MICROSOFT CORPORATION
Expired - Fee Related legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/83Querying
    • G06F16/838Presentation of query results

Definitions

  • Documents are often drafted in a hierarchically structured way in which portions of the document represents nodes in a hierarchy, and there is some convention for recognizing interrelationships between the nodes. Organization into some hierarchical structure is helpful as it enables data to be more effectively organized and identified within the document. That is one of the driving motivations for the development of eXtensible Markup Language or XML.
  • XAML eXtensible Application Markup Language
  • Hierarchically structured documents can become quite complex and cumbersome to deal with as the number of nodes in the hierarchy increase.
  • increased nodes are often required to deal with complex data such as, for example, a complex XAML document that describes a sophisticated software program.
  • At least one embodiment described herein relates to a viewer that may be used to navigate through diagrammatic views of hierarchically structured documents. Expansion and contraction controls may be used to show or hide details regarding a particular node in the hierarchy. Furthermore, breadcrumb navigation may be employed to show and hide details regarding the ancestral chain for a particular node in the hierarchy.
  • Expansion and collapsing state may be persisted in some circumstances to allow for an intuitive restoration of the prior view after an expand-all or collapse-all operation. Expansion and collapsing state may also be persisted across viewer sessions, and may even be persisted within the hierarchically structured document itself.
  • FIG. 1 illustrates an example computing system that may be used to employ embodiments described herein;
  • FIG. 2 abstractly illustrates an example hierarchically structured document that may be viewed by the viewer in accordance with the principles described herein
  • FIG. 3 abstractly illustrates the document of FIG. 2 being compiled and/or interpreted to thereby become computer-executable instructions
  • FIG. 5 illustrates the user interface of FIG. 4 with the parallel window being collapsed
  • FIG. 6 illustrates the user interface of FIG. 5 except with the sequence window being deemphasized and breadcrumbed;
  • FIG. 7 illustrates a user interface of FIG. 6 except with the expand-all control activated
  • FIG. 8 illustrates a user interface of FIG. 7 except with the collapse-all control activated
  • FIG. 9 illustrates a user interface of FIG. 8 , except with the sequence window being returned using the breadcrumb control
  • FIG. 10 illustrates a user interface after the restore feature is employed to return to the state of FIG. 5 ;
  • FIG. 11 illustrates a user interface in which a new activity is being added to a previously collapsed activity
  • FIG. 12 illustrates a user interface in which a new activity is being added to a previously expanded activity.
  • a viewer may be used to navigate through diagrammatic views of hierarchically structured documents. Expand and collapse controls may be used to show or hide details regarding a particular node in the hierarchy. Furthermore breadcrumb navigation may be employed to show and hide details regarding the ancestral chain for a particular node in the hierarchy.
  • Expansion and collapsed state may be persisted in some circumstances to allow for an intuitive restoration of the prior view after an expand-all or collapse-all operation. Expansion and collapsed state may also be persisted across viewer sessions, and may even be persisted within the hierarchically structured document itself. The viewer may also be an editor. In that case, as nodes are added to the hierarchy using the editor, the expansion state of the node may perhaps depend on the expansion state of the node or hierarchy into which the node is added.
  • Hierarchically structured document is a XAML document that describes functional software that, after proper compilation and/or interpretation, may be executed by a computing system.
  • the software might be a workflow.
  • the principles described herein are broad and encompass the navigation through any hierarchically structured document.
  • FIG. 1 Some introductory discussion regarding computing systems will be described with respect to FIG. 1 .
  • FIG. 2 An abstract discussion of hierarchically structured documents will be described with respect to FIG. 2 .
  • FIG. 3 an example usage of a hierarchically structured document will be described with respect to FIG. 3 , in which the hierarchically structured document is interpreted and/or compiled, to thereby be executable by a computing system such as that of FIG. 1 .
  • the functionality of the viewer/editor will be described with respect to a walkthrough referencing the user interfaces of FIGS. 4 through 12 .
  • Computing systems are now increasingly taking a wide variety of forms.
  • Computing systems may, for example, be handheld devices, appliances, laptop computers, desktop computers, mainframes, distributed computing systems, or even devices that have not conventionally been considered a computing system.
  • the term “computing system” is defined broadly as including any device or system (or combination thereof) that includes at least one processor, and a memory capable of having thereon computer-executable instructions that may be executed by the processor.
  • the memory may take any form and may depend on the nature and form of the computing system.
  • a computing system may be distributed over a network environment and may include multiple constituent computing systems.
  • a computing system 100 typically includes at least one processing unit 102 and memory 104 .
  • the memory 104 may be physical system memory, which may be volatile, non-volatile, or some combination of the two.
  • the term “memory” may also be used herein to refer to non-volatile mass storage such as physical storage media. If the computing system is distributed, the processing, memory and/or storage capability may be distributed as well.
  • the term “module” or “component” can refer to software objects or routines that execute on the computing system. The different components, modules, engines, and services described herein may be implemented as objects or processes that execute on the computing system (e.g., as separate threads).
  • embodiments are described with reference to acts that are performed by one or more computing systems. If such acts are implemented in software, one or more processors of the associated computing system that performs the act direct the operation of the computing system in response to having executed computer-executable instructions.
  • An example of such an operation involves the manipulation of data.
  • the computer-executable instructions (and the manipulated data) may be stored in the memory 104 of the computing system 100 .
  • the computing system 100 also may include a display 112 that may be used to provide various concrete user interfaces, such as those described herein.
  • Computing system 100 may also contain communication channels 108 that allow the computing system 100 to communicate with other message processors over, for example, network 110 .
  • Communication channels 108 are examples of communications media.
  • Communications media typically embody computer-readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism and include any information-delivery media.
  • communications media include wired media, such as wired networks and direct-wired connections, and wireless media such as acoustic, radio, infrared, and other wireless media.
  • the term computer-readable media as used herein includes both storage media and communications media.
  • Embodiments within the scope of the present invention also include a computer program product having computer-readable media for carrying or having computer-executable instructions or data structures stored thereon.
  • Such computer-readable media can be any available media that can be accessed by a general purpose or special purpose computer.
  • Such computer-readable media can comprise physical storage and/or memory media such as RAM, ROM, EEPROM, CD-ROM, DVD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to carry or store desired program code means in the form of computer-executable instructions or data structures and which can be accessed by a general purpose or special purpose computer. Combinations of the above should also be included within the scope of computer-readable media.
  • Computer-executable instructions comprise, for example, instructions and data which cause a general purpose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions.
  • the computer-executable instructions cause the computer or processing device to perform the function or group of functions because the computer-executable instructions have a certain structure. If digitally represented, for example, such structures may represent one or more bits of information.
  • such as structure may be a level and/or orientation of magnetism on the media at predetermined parts of the magnetic storage media.
  • such a structure may be a level of reflectivity of the media at particular predetermined parts of the optical media.
  • the computing system 100 may execute viewer/editor such as that to be described further herein.
  • the computing system 100 may also have access to hierarchically structured document such as the example document described further herein.
  • FIG. 2 abstractly illustrates a hierarchically structured document 200 that represents a certain hierarchy of nodes.
  • the hierarchically structured document 200 is just a simple example in which there are four nodes in the hierarchy, including parent node 201 , and child nodes 202 through 205 .
  • the principles described herein may apply to any hierarchy to provide an intuitive navigation experience through that hierarchy.
  • the more complex the hierarchy the more beneficial is the viewer described herein, as the viewer allows the user to quickly narrow in on the nodes and details of interest in even the most complex of hierarchies.
  • the principles described herein are thus applicable to any hierarchy containing multiple interrelated nodes, in which each node may have a parent node (except of course the parent node itself) and zero or more child nodes.
  • each of the nodes may have zero or more fields.
  • node 201 contains field 201 A; node 202 contains field 202 A; node 203 has no fields; node 204 has three fields 204 A, 204 B, and 204 C; and node 205 has two fields 205 A and 205 B.
  • field 201 A is a body field of node 201 and is defined as including node 202 .
  • node 202 A is a body field of node 202 and is defined as including nodes 203 and 204 .
  • node 204 C is a body field of node 204 and is defined as including node 205 .
  • some fields define relationships with or more child nodes.
  • fields 204 A and 204 B define properties of the node 204
  • node 205 A defines a property for node 205
  • Field 205 B may be a body field for node 205 and thus may be used to add a child node relation to the node 205
  • body fields 201 A, 202 A and 204 C may be further used to add additional child nodes for respective nodes 201 , 202 and 204 .
  • FIG. 3 illustrates one example usage 300 of a hierarchically structured document.
  • the hierarchically-structured document 200 is provided to a computing system 301 , where the document 200 undergoes one or more stages of compilation and/or interpretation 311 to cause the computing system to formulate computer-executable instructions 312 that may be executed by the computing system.
  • One example of a standard for formulating hierarchical descriptions of computer programs is eXtensible Application Markup Language (or XAML).
  • XAML is a standard for drafting application descriptions in eXtensible Markup Language (or XML) such that the XML may be interpreted and an application formulated at run-time or prior to run-time.
  • XML is a standard often used for drafting hierarchically structured documents, although the principles described herein are not limited to the viewing and/or editing of documents that are based on XML or XAML.
  • the document extends from lines 1 through 31.
  • Lines 2 through 6 represent certain properties of the document.
  • line 4 in this context indicates that the view of the document should expand all of the nodes upon opening.
  • Lines 7 through 30 represent a sequence activity, and is an example of the node 201 of FIG. 2 .
  • Line 10 is once again a persisted expansion state, and indicates that this sequence should be expanded upon opening. The editor may change this setting at some point in response to user interaction with the editor.
  • the sequence activity contains a child parallel activity that extends from lines 13 through 29.
  • the parallel activity is an example of the node 202 of FIG. 2 , and will be interpreted to be the child of the sequence activity due to its nested position within the sequence activity.
  • the parallel activity includes a first child activity that is represented wholly at line 14.
  • the delay activity represents an example of the node 203 of FIG. 2 .
  • This first activity is a delay activity and will be interpreted to be the child of the parallel activity due to its nested position within the parallel activity.
  • the parallel activity also includes a second child activity, a “For Each” activity that extends from lines 15 through 28.
  • the For Each activity represents an example of the node 204 of FIG. 2 , and will be interpreted to be the child of the parallel activity due to its nested position within the parallel activity.
  • Line 19 indicates whether the expand or collapse state was explicitly set by the user. If the value of line 19 were set to “true”, this indicates that the user manually collapsed the activity by interacting with the visualization of the activity. In that state, should the user select to restore the activity, this forces the expand state for the activity to revert to the state specified in line 18, regardless of the previous global state of the activity. Thus, a value of “false” in line 19 indicates that the user has not manually interacted with the visualization of the activity to cause the present visualization.
  • the For Each activity includes a child while activity that is represented wholly at line 26.
  • the while activity represents an example of the node 205 of FIG. 2 . This while activity will be interpreted to be the child of the For Each activity due to its nested position within the For Each activity.
  • the viewer/editor described herein need not actually execute the hierarchical document 200 , but does provide a view of the hierarchical document such that the document can be easily navigated through.
  • a walkthrough of one example of the operation of the viewer/editor will be described with respect to FIGS. 4 through 12 .
  • FIG. 4 illustrates a first user interface 400 that represents a beginning point for the walkthrough.
  • the user interface 400 illustrates the hierarchical document represented by the XAML document described above.
  • each node in the hierarchical document i.e., an activity in the document in this example
  • a sequence window 401 represents the sequence activity.
  • the visualization is completely expanded in that each window associated with each activity is viewable, along with all of the property fields of the activity.
  • the parallel window 402 represents the parallel activity.
  • the fact that a node (in the example an activity) is a child of another node (also an activity in the example) is represented visually in this example by the window representing the child node being included within the window representing the parent node.
  • the parallel window 402 is included within the sequence window 401 , since the parallel activity is the child of the sequence activity.
  • Populated or unpopulated properties of a particular node are presented also within the corresponding window that represents the node, but outside any window that represents a child node of that particular node.
  • FIG. 4 since there are no properties within the sequence window that are not also in the parallel window, there are no properties of the sequence activity represented.
  • the delay window 403 represents the delay activity of the XAML example.
  • the delay window 403 does not contain any properties and thus is represented only as a small window.
  • the For Each window 404 represents the For Each activity of the XAML example.
  • the For Each window 404 shows two properties 404 A and 404 B (unpopulated in both cases) of the For Each activity.
  • Properties 404 A and 404 B are examples of the fields 204 A and 204 B of FIG. 2 .
  • the body field 403 C may contain one or more activities. In this case the body field 403 C includes a while window 405 .
  • the while window 405 represents the while activity of the XAML example.
  • the while window 405 shows two fields.
  • One field 405 A is an expression field into which an expression may be inserted which is the condition for continuing the while activity. Once the condition is false, the while activity finishes executing.
  • a body field 405 B is shown empty with a mere prompt that an activity may be dropped within the body field 405 B to create a child activity of the while activity.
  • the user interface 400 shows the hierarchy in a completely expanded state.
  • Each of the windows (with a few exceptions) are collapsible to thereby hide details of the window.
  • Those windows that are collapsible include a collapse control (two upward facing chevrons). The presence of a collapse control is also an indicator that the corresponding window is expanded.
  • parallel window 402 includes collapse control 421
  • window 404 includes collapse control 441
  • window 405 includes collapse control 451
  • the delay window 403 does not have a collapse control because the delay window 403 has no content, and thus the collapse function has no meaning with respect to the delay window 403 .
  • the parent window, the sequence window 401 also does not contain a collapse control. This is because the collapse of the parent window 401 may be achieved using the collapse all control 407 , and thus providing a similar control at the parent window 401 would be redundant.
  • the collapse controls 421 and 441 are examples of child detail controls that change the emphasis on the children and detail of the node in which the control is embedded. Specifically, the collapse controls 421 and 441 , when selected, cause less emphasis to be placed on the children and detail of the corresponding node. In some cases, the child nodes are deemphasized to the point of having no visualization at all.
  • the collapse control when exercised at a particular window, causes all of the child windows contained within the particular window to disappear or at least be deemphasized.
  • the properties of the particular window are also caused to disappear, although other embodiments may keep those properties visible even after a collapse operation.
  • the expand-all control 406 and the collapse-all control 407 will be described further in the walkthrough.
  • the breadcrumb navigation control 461 shows the ancestral chain of parent nodes that are currently hidden or otherwise deemphasized. In the case of FIG. 4 , since all of the windows are shown for all of the underlying activities, there is no hidden ancestral chain. Accordingly, the control 461 defaults to the name of the hierarchical document, which is in this case “Workflow1”.
  • FIG. 5 illustrates a user interface 500 that represents a next state of the user interface 400 in the walkthrough.
  • user interface 500 represents an example showing how the user can collapse one of the windows, in this case, the For Each window 404 .
  • the user selected the collapse control 441 of the For Each window 404 to generate the collapsed For Each window 404 ′ of FIG. 5 .
  • the collapsing of the For Each window 404 ′ has now hidden the child windows (i.e., the while window 405 ) of the For Each window.
  • the properties of the For Each activity i.e., the properties 404 A and 404 B
  • the collapsed windows contain a control which serves both as a collapse indicator representing that the window is collapsed, as well as an expansion control that the user may operate to expand the window (e.g., to show the children windows and potentially also the properties of the window).
  • a collapse indicator representing that the window is collapsed
  • an expansion control that the user may operate to expand the window (e.g., to show the children windows and potentially also the properties of the window).
  • FIG. 5 the collapse control 441 of FIG. 4 has been replaced by an expansion control 541 (represented by two downward facing chevrons).
  • the collapse control 421 for the parallel window 402 remains since it is still considered expanded in that its child windows are still visible in some form.
  • the expansion control 541 is also an example of child detail control that changes the emphasis on the children and detail of the node in which the control is embedded. Specifically, the expansion control 541 , when selected, causes more emphasis to be placed on the children and detail of the corresponding node.
  • FIG. 6 illustrates a user interface 600 which represents a subsequent stage in the walkthrough after the user interface 500 of FIG. 5 .
  • the user interface of FIG. 6 is arrived at by double clicking on the parallel window. While the collapse and expansion function applied to a window of a particular node has the effect of hiding the descendent chains of that particular node, the user interface 600 shows that the ancestral chain of a particular window may also be hidden.
  • the breadcrumb control 461 of FIGS. 4 and 5 is thus modified to breadcrumb control 661 .
  • the breadcrumb control 661 shows the path that represents the hidden ancestral chain. In this case, the breadcrumb control 661 represents that the sequence window is hidden.
  • the user might select the “sequence” text in the breadcrumb control 661 .
  • the breadcrumb control gives a visual indicator summarizing the path of the hidden ancestral chain, as well as a control for returning all or a portion of the ancestral chain back into visualization to thereby once again render the corresponding window for the ancestor.
  • the double clicking control on any of the windows is an example of a parent detail control that changes the emphasis on the one or more parent nodes in the ancestral chain of the selected node in which the control is embedded. Specifically, the double clicking on the window 402 causes the parent nodes of the corresponding node to be deemphasized such that it is visualized only by the breadcrumb control 661 .
  • FIG. 7 illustrates a user interface 700 that represents a next stage of the walkthrough after the user interface 600 .
  • the user interface 700 is arrived at by the user selecting the expand-all control 406 of FIG. 6 .
  • This has the effect of expanding all of the descendent nodes with respect to the breadcrumb control 661 .
  • the breadcrumb control 661 shows the parallel window as being the most senior visualized window in FIG. 6
  • the exercise of the expand-all control 406 of FIG. 6 results in the user interface 700 of FIG. 7 , in which all of the details and descendent windows of the parallel window are once again fully expanded.
  • windows 403 , 404 and 405 regain their visualizations shown in FIG. 4 .
  • the expand-all control 406 of FIG. 6 When the expand-all control 406 of FIG. 6 was selected, all of the expansion state for each of the windows in FIG. 6 was preserved, although not visualized in the user interface 700 of FIG. 7 , and the expand-all control 406 was replaced by a restore control 701 .
  • the user interface 700 of FIG. 7 is shown after an expand-all operation, the individual windows can still be collapsed using collapse controls 441 and 451 for respective windows 404 and 405 .
  • the restore control 701 may be selected to arrive back at the user interface 600 of FIG. 6 since, as previously mentioned, the expansion state was preserved in concordance with the expand-all operation.
  • the visualization may optionally retain such state when restored.
  • FIG. 8 illustrates a user interface 800 that represents a next stage of the walkthrough after the user interface 700 .
  • the user interface 800 is arrived at by the user selecting the collapse-all control 407 of FIG. 7 .
  • This has the effect of collapsing all of the descendent nodes with respect to the breadcrumb control 661 .
  • the breadcrumb control 661 of FIG. 7 shows the parallel window as being the most senior visualized window in FIG. 6
  • the exercise of the collapse-all control 407 of FIG. 7 results in the user interface 800 of FIG. 8 , in which all of the details and descendent windows of the parallel window are collapsed.
  • the restore control 702 may be selected to arrive back at the user interface 700 of FIG. 7 since, as previously mentioned, the expansion state was preserved in concordance with the collapse-all operation. In one embodiment, if any individual expansion state has been changed since selecting the collapse-all using any of the individual expand or collapse controls, the visualization may optionally retain such state when restored.
  • FIG. 9 illustrates a user interface 900 that represents the next stage of the walkthrough after the user interface 800 of FIG. 8 .
  • the user interface 900 of FIG. 9 is obtained by selecting the sequence control of the breadcrumb control 661 of FIG. 8 .
  • This causes the sequence window 401 to once again be the most senior window in the visualization.
  • the “collapse-all” state of the visualization remains.
  • the sequence window 401 is shown in collapsed state.
  • the parallel window 402 includes an expansion control 492 that may be selected to expand the parallel window 402 .
  • the breadcrumb control 961 has been changed to reflect that the sequence window is now the most senior visualized window.
  • the breadcrumb control 661 is an example of a parent detail control that changes the emphasis on the one or more parent nodes in the ancestral chain of the selected node in which the control is embedded. Specifically, the activation of the breadcrumb control 661 causes the parent nodes of the corresponding node to be reemphasized such that it is only visualized by a window.
  • the expansion view state may be preserved in the document itself.
  • the viewer may interpret the prior view state, and present the view of the document that the user had last left the document in. This provides the user with continuity, and saves the user time having to get back to the same position as before.
  • the expansion state is represented by 4, 10, 18 and 19.
  • FIG. 10 illustrates a user interface 1000 that represents a subsequent stage in the walkthrough after user interface 900 of FIG. 9 .
  • the user interface 1000 may be arrived at by selecting the restore control 702 of FIG. 9 .
  • the user interface 1000 shows that the expand/collapse state set by the user interfacing with the activity is preserved after selecting restore. In other words, the “IsPinned” state is respected.
  • FIG. 11 illustrates a user interface 1100 that shows how an activity might be added to, for example, the user interface 800 .
  • the user selects an activity (a For Each activity) from a toolbox 1101 and drags a For Each window 1102 into the parallel window 402 .
  • the parent window into which the new window was inserted i.e., in this case, the parallel window 402
  • the new For Each window 1102 is also created in the collapsed state.
  • FIG. 12 illustrates a user interface 1200 that shows how an activity might be added to, for example, the user interface 700 .
  • the user selects an activity from a toolbox 1101 and drags a For Each window 1202 into the parallel window 402 .
  • the parent window into which the new window was inserted i.e., in this case, the parallel window 402
  • the new For Each window 1202 is also created in the expanded state.
  • FIGS. 11 and 12 demonstrate that whether newly created windows and nodes are created in expanded or collapsed form, may depend on the context of the expanded or expanded state of one or more windows of the previous visualization.

Abstract

A viewer may be used to navigate through diagrammatic views of hierarchically structured documents. Expansion and collapse controls may be used to show or hide details regarding a particular node in the hierarchy. Furthermore breadcrumb navigation may be employed to show and hide details regarding the ancestral chain for a particular node in the hierarchy.

Description

BACKGROUND
Documents are often drafted in a hierarchically structured way in which portions of the document represents nodes in a hierarchy, and there is some convention for recognizing interrelationships between the nodes. Organization into some hierarchical structure is helpful as it enables data to be more effectively organized and identified within the document. That is one of the driving motivations for the development of eXtensible Markup Language or XML. As an example, there have even been standards for the definition of application programs based on hierarchically structured documents. One such standard is referred to as eXtensible Application Markup Language (XAML).
However, such hierarchically structured documents can become quite complex and cumbersome to deal with as the number of nodes in the hierarchy increase. However, increased nodes are often required to deal with complex data such as, for example, a complex XAML document that describes a sophisticated software program.
BRIEF SUMMARY
At least one embodiment described herein relates to a viewer that may be used to navigate through diagrammatic views of hierarchically structured documents. Expansion and contraction controls may be used to show or hide details regarding a particular node in the hierarchy. Furthermore, breadcrumb navigation may be employed to show and hide details regarding the ancestral chain for a particular node in the hierarchy.
Further optional features employ expand-all and collapse-all features with respect to a focus node, which in combination with specific node expansion and collapsing, may be used to quickly view the nodes and details of interest in the hierarchy. Expansion and collapsing state may be persisted in some circumstances to allow for an intuitive restoration of the prior view after an expand-all or collapse-all operation. Expansion and collapsing state may also be persisted across viewer sessions, and may even be persisted within the hierarchically structured document itself.
This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
BRIEF DESCRIPTION OF THE DRAWINGS
In order to describe the manner in which the above-recited and other advantages and features can be obtained, a more particular description of various embodiments will be rendered by reference to the appended drawings. Understanding that these drawings depict only sample embodiments and are not therefore to be considered to be limiting of the scope of the invention, the embodiments will be described and explained with additional specificity and detail through the use of the accompanying drawings in which:
FIG. 1 illustrates an example computing system that may be used to employ embodiments described herein;
FIG. 2 abstractly illustrates an example hierarchically structured document that may be viewed by the viewer in accordance with the principles described herein
FIG. 3 abstractly illustrates the document of FIG. 2 being compiled and/or interpreted to thereby become computer-executable instructions;
FIG. 4 illustrates an initial user interface used in a walkthrough constituting nine stages;
FIG. 5 illustrates the user interface of FIG. 4 with the parallel window being collapsed;
FIG. 6 illustrates the user interface of FIG. 5 except with the sequence window being deemphasized and breadcrumbed;
FIG. 7 illustrates a user interface of FIG. 6 except with the expand-all control activated;
FIG. 8 illustrates a user interface of FIG. 7 except with the collapse-all control activated;
FIG. 9 illustrates a user interface of FIG. 8, except with the sequence window being returned using the breadcrumb control;
FIG. 10 illustrates a user interface after the restore feature is employed to return to the state of FIG. 5;
FIG. 11 illustrates a user interface in which a new activity is being added to a previously collapsed activity; and
FIG. 12 illustrates a user interface in which a new activity is being added to a previously expanded activity.
DETAILED DESCRIPTION
In accordance with embodiments described herein, a viewer may be used to navigate through diagrammatic views of hierarchically structured documents. Expand and collapse controls may be used to show or hide details regarding a particular node in the hierarchy. Furthermore breadcrumb navigation may be employed to show and hide details regarding the ancestral chain for a particular node in the hierarchy.
Further optional features employ expand-all and collpase-all features with respect to a focus node, which in combination with specific node expansion and contraction, may be used to quickly view the nodes and details of interest in the hierarchy. Expansion and collapsed state may be persisted in some circumstances to allow for an intuitive restoration of the prior view after an expand-all or collapse-all operation. Expansion and collapsed state may also be persisted across viewer sessions, and may even be persisted within the hierarchically structured document itself. The viewer may also be an editor. In that case, as nodes are added to the hierarchy using the editor, the expansion state of the node may perhaps depend on the expansion state of the node or hierarchy into which the node is added.
The viewer/editor described herein provides for efficient and intuitive navigation through any hierarchy. One type of hierarchically structured document is a XAML document that describes functional software that, after proper compilation and/or interpretation, may be executed by a computing system. For instance, the software might be a workflow. However, the principles described herein are broad and encompass the navigation through any hierarchically structured document.
First, some introductory discussion regarding computing systems will be described with respect to FIG. 1. Then, an abstract discussion of hierarchically structured documents will be described with respect to FIG. 2. Then, an example usage of a hierarchically structured document will be described with respect to FIG. 3, in which the hierarchically structured document is interpreted and/or compiled, to thereby be executable by a computing system such as that of FIG. 1. Then, the functionality of the viewer/editor will be described with respect to a walkthrough referencing the user interfaces of FIGS. 4 through 12.
First, an introductory discussion regarding computing systems is described with respect to FIG. 1. Computing systems are now increasingly taking a wide variety of forms. Computing systems may, for example, be handheld devices, appliances, laptop computers, desktop computers, mainframes, distributed computing systems, or even devices that have not conventionally been considered a computing system. In this description and in the claims, the term “computing system” is defined broadly as including any device or system (or combination thereof) that includes at least one processor, and a memory capable of having thereon computer-executable instructions that may be executed by the processor. The memory may take any form and may depend on the nature and form of the computing system. A computing system may be distributed over a network environment and may include multiple constituent computing systems.
As illustrated in FIG. 1, in its most basic configuration, a computing system 100 typically includes at least one processing unit 102 and memory 104. The memory 104 may be physical system memory, which may be volatile, non-volatile, or some combination of the two. The term “memory” may also be used herein to refer to non-volatile mass storage such as physical storage media. If the computing system is distributed, the processing, memory and/or storage capability may be distributed as well. As used herein, the term “module” or “component” can refer to software objects or routines that execute on the computing system. The different components, modules, engines, and services described herein may be implemented as objects or processes that execute on the computing system (e.g., as separate threads).
In the description that follows, embodiments are described with reference to acts that are performed by one or more computing systems. If such acts are implemented in software, one or more processors of the associated computing system that performs the act direct the operation of the computing system in response to having executed computer-executable instructions. An example of such an operation involves the manipulation of data. The computer-executable instructions (and the manipulated data) may be stored in the memory 104 of the computing system 100. The computing system 100 also may include a display 112 that may be used to provide various concrete user interfaces, such as those described herein.
Computing system 100 may also contain communication channels 108 that allow the computing system 100 to communicate with other message processors over, for example, network 110. Communication channels 108 are examples of communications media. Communications media typically embody computer-readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism and include any information-delivery media. By way of example, and not limitation, communications media include wired media, such as wired networks and direct-wired connections, and wireless media such as acoustic, radio, infrared, and other wireless media. The term computer-readable media as used herein includes both storage media and communications media.
Embodiments within the scope of the present invention also include a computer program product having computer-readable media for carrying or having computer-executable instructions or data structures stored thereon. Such computer-readable media (or machine-readable media) can be any available media that can be accessed by a general purpose or special purpose computer. By way of example, and not limitation, such computer-readable media can comprise physical storage and/or memory media such as RAM, ROM, EEPROM, CD-ROM, DVD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to carry or store desired program code means in the form of computer-executable instructions or data structures and which can be accessed by a general purpose or special purpose computer. Combinations of the above should also be included within the scope of computer-readable media.
Computer-executable instructions comprise, for example, instructions and data which cause a general purpose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions. Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described herein. Rather, the specific features and acts described herein are disclosed as example forms of implementing the claims. The computer-executable instructions cause the computer or processing device to perform the function or group of functions because the computer-executable instructions have a certain structure. If digitally represented, for example, such structures may represent one or more bits of information. In the case of magnetic storage media, for example, such as structure may be a level and/or orientation of magnetism on the media at predetermined parts of the magnetic storage media. In the case of optical storage media, for example, such a structure may be a level of reflectivity of the media at particular predetermined parts of the optical media.
The computing system 100 may execute viewer/editor such as that to be described further herein. The computing system 100 may also have access to hierarchically structured document such as the example document described further herein.
FIG. 2 abstractly illustrates a hierarchically structured document 200 that represents a certain hierarchy of nodes. The hierarchically structured document 200 is just a simple example in which there are four nodes in the hierarchy, including parent node 201, and child nodes 202 through 205. However, the principles described herein may apply to any hierarchy to provide an intuitive navigation experience through that hierarchy. In fact, the more complex the hierarchy, the more beneficial is the viewer described herein, as the viewer allows the user to quickly narrow in on the nodes and details of interest in even the most complex of hierarchies. The principles described herein are thus applicable to any hierarchy containing multiple interrelated nodes, in which each node may have a parent node (except of course the parent node itself) and zero or more child nodes.
Although not required, each of the nodes may have zero or more fields. For instance, node 201 contains field 201A; node 202 contains field 202A; node 203 has no fields; node 204 has three fields 204A, 204B, and 204C; and node 205 has two fields 205A and 205B. In this example, field 201A is a body field of node 201 and is defined as including node 202. Likewise, node 202A is a body field of node 202 and is defined as including nodes 203 and 204. Finally, node 204C is a body field of node 204 and is defined as including node 205. Thus, some fields define relationships with or more child nodes. Other fields define parameters of the node. For instance, fields 204A and 204B define properties of the node 204, and node 205A defines a property for node 205. Field 205B may be a body field for node 205 and thus may be used to add a child node relation to the node 205. Furthermore, body fields 201A, 202A and 204C may be further used to add additional child nodes for respective nodes 201, 202 and 204.
FIG. 3 illustrates one example usage 300 of a hierarchically structured document. In this case, the hierarchically-structured document 200 is provided to a computing system 301, where the document 200 undergoes one or more stages of compilation and/or interpretation 311 to cause the computing system to formulate computer-executable instructions 312 that may be executed by the computing system. One example of a standard for formulating hierarchical descriptions of computer programs is eXtensible Application Markup Language (or XAML). XAML is a standard for drafting application descriptions in eXtensible Markup Language (or XML) such that the XML may be interpreted and an application formulated at run-time or prior to run-time. XML is a standard often used for drafting hierarchically structured documents, although the principles described herein are not limited to the viewing and/or editing of documents that are based on XML or XAML.
The following is an XAML document that will be provided as an example only. The example is provided realizing that the principles described herein are not limited to any specific type or structure for the hierarchically structured document, but recognizing that an example can be helpful in understanding the broader principles described herein. The example XAML document is as follows with line numbering added for clarity:
 1. <Activity [Appropriate Namespace Declarations Inserted Herein]>
 2. <WorkflowViewStateService.ViewState>
 3. <Dictionary TypeArguments=“String, Object”>
 4. <Boolean Key=“ShouldExpandAll”>True</Boolean>
 5. </Dictionary>
 6. </WorkflowViewStateService.ViewState>
 7. <Sequence XamlDebuggerXmlReader.FileName=[Insert FileName]>
 8. <WorkflowViewStateService.ViewState>
 9. <Dictionary TypeArguments=“String, Object”>
10. <Boolean Key=“IsExpanded”>True</Boolean>
11. </Dictionary>
12. </WorkflowViewStateService.ViewState>
13. <Parallel>
14. <Delay/>
15. <ForEach TypeArguments=“x:Int32”>
16. <WorkflowViewStateService.ViewState>
17. <Dictionary TypeArguments=“String, Object”>
18. <Boolean Key=“IsExpanded”>False</Boolean>
19. <Boolean Key=“IsPinned”>False</Boolean>
20. </Dictionary>
21. </WorkflowViewStateService.ViewState>
22. <ActivityAction TypeArguments=“Int32”>
23. <ActivityAction.Argument>
24. <DelegateInArgument TypeArguments=“Int32” Name=“item”
/>
25. </ActivityAction.Argument>
26. <While />
27. </ActivityAction>
28. </ForEach>
29. </Parallel>
30. </Sequence>
31. </Activity>
The document extends from lines 1 through 31. Lines 2 through 6 represent certain properties of the document. In particular, line 4 in this context indicates that the view of the document should expand all of the nodes upon opening. Thus, prior state regarding the expansion properties of the document as a whole are preserved within the document itself.
Lines 7 through 30 represent a sequence activity, and is an example of the node 201 of FIG. 2. Line 10 is once again a persisted expansion state, and indicates that this sequence should be expanded upon opening. The editor may change this setting at some point in response to user interaction with the editor.
The sequence activity contains a child parallel activity that extends from lines 13 through 29. The parallel activity is an example of the node 202 of FIG. 2, and will be interpreted to be the child of the sequence activity due to its nested position within the sequence activity.
The parallel activity includes a first child activity that is represented wholly at line 14. The delay activity represents an example of the node 203 of FIG. 2. This first activity is a delay activity and will be interpreted to be the child of the parallel activity due to its nested position within the parallel activity.
The parallel activity also includes a second child activity, a “For Each” activity that extends from lines 15 through 28. The For Each activity represents an example of the node 204 of FIG. 2, and will be interpreted to be the child of the parallel activity due to its nested position within the parallel activity. Line 19 indicates whether the expand or collapse state was explicitly set by the user. If the value of line 19 were set to “true”, this indicates that the user manually collapsed the activity by interacting with the visualization of the activity. In that state, should the user select to restore the activity, this forces the expand state for the activity to revert to the state specified in line 18, regardless of the previous global state of the activity. Thus, a value of “false” in line 19 indicates that the user has not manually interacted with the visualization of the activity to cause the present visualization.
The For Each activity includes a child while activity that is represented wholly at line 26. The while activity represents an example of the node 205 of FIG. 2. This while activity will be interpreted to be the child of the For Each activity due to its nested position within the For Each activity.
The viewer/editor described herein need not actually execute the hierarchical document 200, but does provide a view of the hierarchical document such that the document can be easily navigated through. A walkthrough of one example of the operation of the viewer/editor will be described with respect to FIGS. 4 through 12.
FIG. 4 illustrates a first user interface 400 that represents a beginning point for the walkthrough. The user interface 400 illustrates the hierarchical document represented by the XAML document described above. In this case, each node in the hierarchical document (i.e., an activity in the document in this example) is represented by a window. For instance, a sequence window 401 represents the sequence activity. In this initial state, the visualization is completely expanded in that each window associated with each activity is viewable, along with all of the property fields of the activity.
The parallel window 402 represents the parallel activity. The fact that a node (in the example an activity) is a child of another node (also an activity in the example) is represented visually in this example by the window representing the child node being included within the window representing the parent node. Thus, the parallel window 402 is included within the sequence window 401, since the parallel activity is the child of the sequence activity. Populated or unpopulated properties of a particular node are presented also within the corresponding window that represents the node, but outside any window that represents a child node of that particular node. Thus, in FIG. 4, since there are no properties within the sequence window that are not also in the parallel window, there are no properties of the sequence activity represented.
The delay window 403 represents the delay activity of the XAML example. The delay window 403 does not contain any properties and thus is represented only as a small window.
The For Each window 404 represents the For Each activity of the XAML example. The For Each window 404 shows two properties 404A and 404B (unpopulated in both cases) of the For Each activity. Properties 404A and 404B are examples of the fields 204A and 204B of FIG. 2. The body field 403C may contain one or more activities. In this case the body field 403C includes a while window 405.
The while window 405 represents the while activity of the XAML example. The while window 405 shows two fields. One field 405A is an expression field into which an expression may be inserted which is the condition for continuing the while activity. Once the condition is false, the while activity finishes executing. A body field 405B is shown empty with a mere prompt that an activity may be dropped within the body field 405B to create a child activity of the while activity.
The user interface 400 shows the hierarchy in a completely expanded state. Each of the windows (with a few exceptions) are collapsible to thereby hide details of the window. Those windows that are collapsible include a collapse control (two upward facing chevrons). The presence of a collapse control is also an indicator that the corresponding window is expanded.
For instance, parallel window 402 includes collapse control 421, For Each window 404 includes collapse control 441, and while window 405 includes collapse control 451. The delay window 403 does not have a collapse control because the delay window 403 has no content, and thus the collapse function has no meaning with respect to the delay window 403. In this embodiment, the parent window, the sequence window 401 also does not contain a collapse control. This is because the collapse of the parent window 401 may be achieved using the collapse all control 407, and thus providing a similar control at the parent window 401 would be redundant. The collapse controls 421 and 441 are examples of child detail controls that change the emphasis on the children and detail of the node in which the control is embedded. Specifically, the collapse controls 421 and 441, when selected, cause less emphasis to be placed on the children and detail of the corresponding node. In some cases, the child nodes are deemphasized to the point of having no visualization at all.
In the illustrated embodiment, the collapse control, when exercised at a particular window, causes all of the child windows contained within the particular window to disappear or at least be deemphasized. In the walkthrough embodiment, the properties of the particular window are also caused to disappear, although other embodiments may keep those properties visible even after a collapse operation. The expand-all control 406 and the collapse-all control 407 will be described further in the walkthrough. The breadcrumb navigation control 461 shows the ancestral chain of parent nodes that are currently hidden or otherwise deemphasized. In the case of FIG. 4, since all of the windows are shown for all of the underlying activities, there is no hidden ancestral chain. Accordingly, the control 461 defaults to the name of the hierarchical document, which is in this case “Workflow1”.
FIG. 5 illustrates a user interface 500 that represents a next state of the user interface 400 in the walkthrough. In particular, user interface 500 represents an example showing how the user can collapse one of the windows, in this case, the For Each window 404. In the user interface 400 of FIG. 4, the user selected the collapse control 441 of the For Each window 404 to generate the collapsed For Each window 404′ of FIG. 5. The collapsing of the For Each window 404′ has now hidden the child windows (i.e., the while window 405) of the For Each window. In addition, the properties of the For Each activity (i.e., the properties 404A and 404B) are also hidden. The result is a much less congested representation of the underlying XAML document. In the case where the content of the For Each activity was simply not what the user was focused on at the point of time of the user interface 500 of FIG. 5, the user may thus be permitted to focus much better on the elements of interest in the hierarchically structured document.
The collapsed windows contain a control which serves both as a collapse indicator representing that the window is collapsed, as well as an expansion control that the user may operate to expand the window (e.g., to show the children windows and potentially also the properties of the window). For instance, in FIG. 5, the collapse control 441 of FIG. 4 has been replaced by an expansion control 541 (represented by two downward facing chevrons). The collapse control 421 for the parallel window 402 remains since it is still considered expanded in that its child windows are still visible in some form. The expansion control 541 is also an example of child detail control that changes the emphasis on the children and detail of the node in which the control is embedded. Specifically, the expansion control 541, when selected, causes more emphasis to be placed on the children and detail of the corresponding node.
FIG. 6 illustrates a user interface 600 which represents a subsequent stage in the walkthrough after the user interface 500 of FIG. 5. In particular, the user interface of FIG. 6 is arrived at by double clicking on the parallel window. While the collapse and expansion function applied to a window of a particular node has the effect of hiding the descendent chains of that particular node, the user interface 600 shows that the ancestral chain of a particular window may also be hidden.
In particular, since the window 402 was double clicked on, the parent window 401 disappears. The breadcrumb control 461 of FIGS. 4 and 5 is thus modified to breadcrumb control 661. The breadcrumb control 661 shows the path that represents the hidden ancestral chain. In this case, the breadcrumb control 661 represents that the sequence window is hidden. To return to the user interface 500 of FIG. 5, the user might select the “sequence” text in the breadcrumb control 661. Thus, the breadcrumb control gives a visual indicator summarizing the path of the hidden ancestral chain, as well as a control for returning all or a portion of the ancestral chain back into visualization to thereby once again render the corresponding window for the ancestor. The double clicking control on any of the windows is an example of a parent detail control that changes the emphasis on the one or more parent nodes in the ancestral chain of the selected node in which the control is embedded. Specifically, the double clicking on the window 402 causes the parent nodes of the corresponding node to be deemphasized such that it is visualized only by the breadcrumb control 661.
Note that the For Each window 404′ is still collapsed. Thus, the expansion state from the prior activity was preserved. Also, if the sequence control within the breadcrumb control 661 is selected, this will result in the user interface 500 of FIG. 5, thereby preserving the collapsed state of the For Each window 404′. Thus, this provides an intuitive mechanism for the user to hide particular parent or child nodes allowing the user to quickly navigate to nodes of interested, and deemphasize or hide nodes of lesser interest. As interests change, other portions of the hierarchy may be quickly navigated to, once again deemphasizing or hiding nodes that have become of lesser interest.
FIG. 7 illustrates a user interface 700 that represents a next stage of the walkthrough after the user interface 600. In particular, the user interface 700 is arrived at by the user selecting the expand-all control 406 of FIG. 6. This has the effect of expanding all of the descendent nodes with respect to the breadcrumb control 661. For instance, since the breadcrumb control 661 shows the parallel window as being the most senior visualized window in FIG. 6, the exercise of the expand-all control 406 of FIG. 6 results in the user interface 700 of FIG. 7, in which all of the details and descendent windows of the parallel window are once again fully expanded. In particular, windows 403, 404 and 405 regain their visualizations shown in FIG. 4.
When the expand-all control 406 of FIG. 6 was selected, all of the expansion state for each of the windows in FIG. 6 was preserved, although not visualized in the user interface 700 of FIG. 7, and the expand-all control 406 was replaced by a restore control 701. Note that although the user interface 700 of FIG. 7 is shown after an expand-all operation, the individual windows can still be collapsed using collapse controls 441 and 451 for respective windows 404 and 405. Thus, through a combination of expand-all, followed by individual window collapse operations, the details that are not of interest can be quickly deemphasized. Furthermore, should the visualization just prior to the expand-all exercise be desired, the restore control 701 may be selected to arrive back at the user interface 600 of FIG. 6 since, as previously mentioned, the expansion state was preserved in concordance with the expand-all operation. In one embodiment, if any individual expansion state has been changed since selecting the expand-all using any of the individual expand or collapse controls, the visualization may optionally retain such state when restored.
FIG. 8 illustrates a user interface 800 that represents a next stage of the walkthrough after the user interface 700. In particular, the user interface 800 is arrived at by the user selecting the collapse-all control 407 of FIG. 7. This has the effect of collapsing all of the descendent nodes with respect to the breadcrumb control 661. For instance, since the breadcrumb control 661 of FIG. 7 shows the parallel window as being the most senior visualized window in FIG. 6, the exercise of the collapse-all control 407 of FIG. 7 results in the user interface 800 of FIG. 8, in which all of the details and descendent windows of the parallel window are collapsed.
When the collapse-all control 407 of FIG. 7 was selected, all of the expansion state for each of the windows in FIG. 7 was preserved, although not visualized in the user interface 800 of FIG. 8, and the collapse-all control 407 was replaced by a restore control 702. Note that although the user interface 800 of FIG. 8 is shown after a collapse-all operation, the individual windows can still be expanded using expand controls for each collapsed window. For instance, in FIG. 8, the expansion control 541 may be used to expand the window 404′. Thus, through a combination of collapse-all, followed by individual window expansion operations, the details that are not of interest can be quickly deemphasized. Furthermore, should the visualization just prior to the collapse-all exercise be desired, the restore control 702 may be selected to arrive back at the user interface 700 of FIG. 7 since, as previously mentioned, the expansion state was preserved in concordance with the collapse-all operation. In one embodiment, if any individual expansion state has been changed since selecting the collapse-all using any of the individual expand or collapse controls, the visualization may optionally retain such state when restored.
FIG. 9 illustrates a user interface 900 that represents the next stage of the walkthrough after the user interface 800 of FIG. 8. The user interface 900 of FIG. 9 is obtained by selecting the sequence control of the breadcrumb control 661 of FIG. 8. This causes the sequence window 401 to once again be the most senior window in the visualization. The “collapse-all” state of the visualization remains. Thus the sequence window 401 is shown in collapsed state. Here, the parallel window 402 includes an expansion control 492 that may be selected to expand the parallel window 402. The breadcrumb control 961 has been changed to reflect that the sequence window is now the most senior visualized window. The breadcrumb control 661 is an example of a parent detail control that changes the emphasis on the one or more parent nodes in the ancestral chain of the selected node in which the control is embedded. Specifically, the activation of the breadcrumb control 661 causes the parent nodes of the corresponding node to be reemphasized such that it is only visualized by a window.
Each time the document is saved, the expansion view state may be preserved in the document itself. Thus, the next time the document is opened, the viewer may interpret the prior view state, and present the view of the document that the user had last left the document in. This provides the user with continuity, and saves the user time having to get back to the same position as before. For instance, in the XAML example above, the expansion state is represented by 4, 10, 18 and 19.
FIG. 10 illustrates a user interface 1000 that represents a subsequent stage in the walkthrough after user interface 900 of FIG. 9. The user interface 1000 may be arrived at by selecting the restore control 702 of FIG. 9. The user interface 1000 shows that the expand/collapse state set by the user interfacing with the activity is preserved after selecting restore. In other words, the “IsPinned” state is respected.
FIG. 11 illustrates a user interface 1100 that shows how an activity might be added to, for example, the user interface 800. Here, the user selects an activity (a For Each activity) from a toolbox 1101 and drags a For Each window 1102 into the parallel window 402. Here, since the parent window into which the new window was inserted (i.e., in this case, the parallel window 402) is in a collapsed state, the new For Each window 1102 is also created in the collapsed state.
FIG. 12 illustrates a user interface 1200 that shows how an activity might be added to, for example, the user interface 700. Here, the user selects an activity from a toolbox 1101 and drags a For Each window 1202 into the parallel window 402. Here, since the parent window into which the new window was inserted (i.e., in this case, the parallel window 402) is in an expanded state, the new For Each window 1202 is also created in the expanded state. Thus, FIGS. 11 and 12 demonstrate that whether newly created windows and nodes are created in expanded or collapsed form, may depend on the context of the expanded or expanded state of one or more windows of the previous visualization.
Thus, the principles described herein provide an effective viewer and editor for conveniently and efficiently navigating through a visualization of a hierarchical document. The present invention may be embodied in other specific forms without departing from its spirit or essential characteristics. The described embodiments are to be considered in all respects only as illustrative and not restrictive. The scope of the invention is, therefore, indicated by the appended claims rather than by the foregoing description. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope.

Claims (19)

1. A computer program product comprising one or more physical computer-readable media having thereon computer-executable instructions that, when executed by one or more processors of a computing system, cause a computing system to perform a computer-implemented method for diagrammatically navigating and viewing the nodes of a hierarchically structured document, the method comprising the following acts:
displaying at a graphical user interface of a computing system a hierarchical visualization of multiple nodes in a hierarchically structured document, the hierarchical visualization comprising in a first view a plurality of windows with each window representing a node in the hierarchy of the hierarchically structured document, with some windows representing parent nodes in the hierarchy in relation to one or more child nodes in the hierarchy, and the child nodes being displayed within the window of their corresponding parent node;
providing at one or more of the child windows a detail control that may be used to expand or collapse the visualization of a selected child node so that
(i) when the detail control is used to expand the selected child node, the one or more child windows are fully opened within the window of the selected child node so as to display within each fully opened window all fields showing parameters of the node for that fully opened window and fields showing relationships with any child nodes of the node for that fully opened window, and
(ii) so that when the detail control is used to collapse the selected child node, the one or more child windows are closed within the window of the selected child node; and
providing at one or more of the parent windows a detail control that may be used to expand or collapse the visualization of a selected parent node so that
(i) when the detail control is used to expand the selected parent node, one or more parent windows are opened outside of the window of the selected parent node so as to display the selected parent node within the one or more parent windows that are opened, and
(ii) so that when the detail control is used to collapse the selected parent node, the one or more parent windows of the selected parent node are closed.
2. The computer program product in accordance with claim 1, wherein at some nodes of the hierarchy are both parent and child nodes are the same node of the hierarchically structured document.
3. The computer program product in accordance with claim 1, wherein the hierarchically structured document is a XAML document.
4. The computer program product in accordance with claim 1, wherein the multiple nodes each represent an activity of a workflow.
5. The computer program product in accordance with claim 1, wherein said plurality of windows of the first view includes a first window that includes an expand all detail control that, when selected, allows all descendent nodes after the first window to be expanded.
6. The computer program product in accordance with claim 5, wherein when the expand all control is selected, the computer-executable instructions further cause the computing system to perform an act of persisting a prior state of the hierarchical visualization.
7. The computer program product in accordance with claim 5, wherein said first window includes a restore all detail control that, when selected, allows all of the descendant nodes after the first window to restore the hierarchical visualization to its prior persisted state.
8. The computer program product in accordance with claim 1, wherein said plurality of windows of the first view includes a first window that includes a collapse all control that allows all of the descendent nodes after the first window to be collapsed.
9. The computer program product in accordance with claim 8, wherein said first window includes a restore all detail control that, when selected, allows all of the descendant nodes after the first window to restore the hierarchical visualization to a prior persisted state.
10. The computer program product in accordance with claim 1, wherein said plurality of windows of the first view includes a first window that includes a breadcrumb navigation control that defaults in the first view to show the name of the hierarchical document.
11. The computer program product in accordance with claim 1, wherein a view state for at least some of the plurality of windows is persisted, the view state designating whether or not the at least some of the plurality of windows are expanded.
12. The computer program product in accordance with claim 11, wherein the view state is persisted within the hierarchically structured document itself.
13. The computer program product in accordance with claim 1, wherein the hierarchical visualization of the graphical user interface allows a user to add a node into the multiple nodes by providing a menu from which the node to be added is dragged and dropped to create a new window within an existing window for a node.
14. The computer program product in accordance with claim 13, wherein when a node is added to the hierarchical visualization, the window corresponding to the added node is automatically expanded or contracted depending on a view state of the existing window into which the node is dragged and dropped.
15. A computer-implemented method for diagrammatically navigating and viewing the nodes of a hierarchically structured document comprising the following acts:
displaying at a graphical user interface of a computing system a hierarchical visualization of multiple nodes in a hierarchically structured document, the hierarchical visualization comprising in a first view a plurality of windows with each window representing a node in the hierarchy of the hierarchically structured document, with some windows representing parent nodes in the hierarchy in relation to one or more child nodes in the hierarchy, and the child nodes being displayed within the window of their corresponding parent node;
providing at one or more of the child windows a detail control that may be used to expand or collapse the visualization of a selected child node so that
(i) when the detail control is used to expand the selected child node, the one or more child windows are fully opened within the window of the selected child node so as to display within each fully opened window all fields showing parameters of the node for that fully opened window and fields showing relationships with any child nodes of the node for that fully opened window, and
(ii) so that when the detail control is used to collapse the selected child node, the one or more child windows are closed within the window of the selected child node;
providing at one or more of the parent windows a detail control that may be used to expand or collapse the visualization of a selected parent node so that
(i) when the detail control is used to expand the selected parent node, one or more parent windows are opened outside of the window of the selected parent node so as to display the selected parent node within the one or more parent windows that are opened, and
(ii) so that when the detail control is used to collapse the selected parent node, the one or more parent windows of the selected parent node are closed; and
providing a breadcrumb navigation option to permit one or more parent windows of a selected child window to be hidden from the hierarchical visualization in order to simply the view for the selected child window.
16. The method of claim 15 further comprising persisting a view state for at least some of the windows in the hierarchical visualization, the view state corresponding to whether or not the at least some windows having the persisted view state are expanded or collapsed.
17. A computer system for diagrammatically navigating and viewing the nodes of a hierarchically structured document comprising:
one or more processors;
a graphical display connected to an input device for controlling input of user commands relative to the graphical display;
one or more physical computer-readable media having stored thereon computer-executable instructions that, when executed by the one or more processors, cause the computing system perform a computer-implemented method comprising:
instantiating at the display a graphical user interface that comprises a hierarchical visualization of multiple nodes in a hierarchically structured document, the hierarchical visualization comprising in a first view a plurality of windows with each window representing a node in the hierarchy of the hierarchically structured document, with some windows representing parent nodes in the hierarchy in relation to one or more child nodes in the hierarchy, and the child nodes being displayed within the window of their corresponding parent node;
providing at one or more of the child windows a detail control that may be used to expand or collapse the visualization of a selected child node so that
(i) when the detail control is used to expand the selected child node, the one or more child windows are fully opened within the window of the selected child node so as to display within each fully opened window all fields showing parameters of the node for that fully opened window and fields showing relationships with any child nodes of the node for that fully opened window, and
(ii) so that when the detail control is used to collapse the selected child node, the one or more child windows are closed within the window of the selected child node; and
providing at one or more of the parent windows a detail control that may be used to expand or collapse the visualization of a selected parent node so that
(i) when the detail control is used to expand the selected parent node, one or more parent windows are opened outside of the window of the selected parent node so as to display the selected parent node within the one or more parent windows that are opened, and
(ii) so that when the detail control is used to collapse the selected parent node, the one or more parent windows of the selected parent node are closed.
18. The computer system of claim 17 wherein the computer-executable instructions further comprise instructions for causing the computer implemented method to perform an act of providing a breadcrumb navigation option to permit one or more parent windows of a selected child window to be hidden from the hierarchical visualization in order to simply the view for the selected child window.
19. The computer system of claim 17 wherein the computer-executable instructions further comprise instructions for causing the computer implemented method to perform an act of persisting a view state for at least some of the windows in the hierarchical visualization, the view state corresponding to whether or not the at least some windows having the persisted view state are expanded or collapsed.
US12/748,110 2010-03-26 2010-03-26 Breadcrumb navigation through heirarchical structures Expired - Fee Related US8316323B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US12/748,110 US8316323B2 (en) 2010-03-26 2010-03-26 Breadcrumb navigation through heirarchical structures

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12/748,110 US8316323B2 (en) 2010-03-26 2010-03-26 Breadcrumb navigation through heirarchical structures

Publications (2)

Publication Number Publication Date
US20110239164A1 US20110239164A1 (en) 2011-09-29
US8316323B2 true US8316323B2 (en) 2012-11-20

Family

ID=44657803

Family Applications (1)

Application Number Title Priority Date Filing Date
US12/748,110 Expired - Fee Related US8316323B2 (en) 2010-03-26 2010-03-26 Breadcrumb navigation through heirarchical structures

Country Status (1)

Country Link
US (1) US8316323B2 (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130290878A1 (en) * 2012-04-13 2013-10-31 Huawei Technologies Co., Ltd. Generation and display method of user interface and user interface device
US8793645B2 (en) 2010-04-02 2014-07-29 Microsoft Corporation Replacement of data element in a graph
US20150095791A1 (en) * 2013-09-30 2015-04-02 Microsoft Corporation Control and part compliant hierarchy
US9535584B2 (en) 2014-06-10 2017-01-03 Oracle International Corporation Enhanced visual navigation breadcrumbs
US10255084B2 (en) 2016-06-16 2019-04-09 Entit Software Llc Manage analytics contexts through a series of analytics interactions via a graphical user interface
US10452755B2 (en) 2015-03-10 2019-10-22 Microsoft Technology Licensing, Llc Hierarchical navigation control

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120089914A1 (en) * 2010-04-27 2012-04-12 Surfwax Inc. User interfaces for navigating structured content
US9342530B2 (en) * 2013-02-22 2016-05-17 Pro Softnet Corporation Method for skipping empty folders when navigating a file system
US20160070446A1 (en) * 2014-09-04 2016-03-10 Home Box Office, Inc. Data-driven navigation and navigation routing
DE102017130842A1 (en) * 2017-12-21 2019-06-27 Dspace Digital Signal Processing And Control Engineering Gmbh Configuration system for configuring a test system suitable for testing an electronic control unit
US10860603B2 (en) 2018-06-29 2020-12-08 Lucid Software, Inc. Visualization customization
US11232139B2 (en) 2018-06-29 2022-01-25 Lucid Software, Inc. Custom interactions with visualizations
US10860602B2 (en) * 2018-06-29 2020-12-08 Lucid Software, Inc. Autolayout of visualizations based on contract maps
EP3915024A4 (en) 2019-02-22 2022-10-26 Lucid Software, Inc. Reversible data transforms
US11100173B2 (en) 2019-06-18 2021-08-24 Lucid Software, Inc. Autolayout of visualizations based on graph data
US11263105B2 (en) 2019-11-26 2022-03-01 Lucid Software, Inc. Visualization tool for components within a cloud infrastructure
US11169671B2 (en) 2019-11-26 2021-11-09 Lucid Software, Inc. Alteration of a source data visualization based on user input

Citations (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4918621A (en) * 1986-08-13 1990-04-17 Intellicorp, Inc. Method for representing a directed acyclic graph of worlds using an assumption-based truth maintenance system
US5917492A (en) * 1997-03-31 1999-06-29 International Business Machines Corporation Method and system for displaying an expandable tree structure in a data processing system graphical user interface
US20040034497A1 (en) 2002-08-13 2004-02-19 Shah Mohammed Kamran Expanding and collapsing components in a measurement system diagram
US20040205711A1 (en) * 2003-04-10 2004-10-14 Ishimitsu Michael Kazuo System and method for creation of an object within an object hierarchy structure
US20050132304A1 (en) 2003-12-15 2005-06-16 Guido Patrick R. Methods, systems and computer program products for providing tree diagram graphical user interfaces having secondary expansion capabilities
US7162488B2 (en) * 2005-04-22 2007-01-09 Microsoft Corporation Systems, methods, and user interfaces for storing, searching, navigating, and retrieving electronic information
US20070234224A1 (en) 2000-11-09 2007-10-04 Leavitt Joseph M Method for developing and implementing efficient workflow oriented user interfaces and controls
US20070250505A1 (en) * 2006-04-25 2007-10-25 Sbc Knowledge Ventures, L.P. Method and apparatus for defining a workflow
US20080270933A1 (en) * 2007-04-27 2008-10-30 David Straw Displaying multiple storage windows
US20080282189A1 (en) * 2007-05-09 2008-11-13 Sap Ag System and method for simultaneous display of multiple tables
US20090007063A1 (en) 2006-05-12 2009-01-01 The Mathworks, Inc. System and method for synchronized workflow management
US20090063547A1 (en) 2007-09-04 2009-03-05 Microsoft Corporation Breadcrumb list supplementing for hierarchical data sets
US20090106238A1 (en) * 2007-10-18 2009-04-23 Siemens Medical Solutions Usa, Inc Contextual Searching of Electronic Records and Visual Rule Construction
US20090222547A1 (en) * 2003-08-15 2009-09-03 Dennis Joseph Boylan Generating Displays of Networking Addresses
US20090300326A1 (en) * 2005-03-30 2009-12-03 Peter Sweeney System, method and computer program for transforming an existing complex data structure to another complex data structure
US20100049766A1 (en) * 2006-08-31 2010-02-25 Peter Sweeney System, Method, and Computer Program for a Consumer Defined Information Architecture
US7818690B2 (en) * 2007-06-15 2010-10-19 Microsoft Corporation Framework for creating user interfaces containing interactive and dynamic 3-D objects
US7930648B1 (en) * 2006-10-10 2011-04-19 Adobe Systems Incorporated Expanded stack view

Patent Citations (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4918621A (en) * 1986-08-13 1990-04-17 Intellicorp, Inc. Method for representing a directed acyclic graph of worlds using an assumption-based truth maintenance system
US5917492A (en) * 1997-03-31 1999-06-29 International Business Machines Corporation Method and system for displaying an expandable tree structure in a data processing system graphical user interface
US20070234224A1 (en) 2000-11-09 2007-10-04 Leavitt Joseph M Method for developing and implementing efficient workflow oriented user interfaces and controls
US20040034497A1 (en) 2002-08-13 2004-02-19 Shah Mohammed Kamran Expanding and collapsing components in a measurement system diagram
US20090164939A1 (en) * 2003-04-10 2009-06-25 Microsoft Corporation System and method for creation of an object within an object hierarchy structure
US20040205711A1 (en) * 2003-04-10 2004-10-14 Ishimitsu Michael Kazuo System and method for creation of an object within an object hierarchy structure
US20090222547A1 (en) * 2003-08-15 2009-09-03 Dennis Joseph Boylan Generating Displays of Networking Addresses
US20050132304A1 (en) 2003-12-15 2005-06-16 Guido Patrick R. Methods, systems and computer program products for providing tree diagram graphical user interfaces having secondary expansion capabilities
US20090300326A1 (en) * 2005-03-30 2009-12-03 Peter Sweeney System, method and computer program for transforming an existing complex data structure to another complex data structure
US7162488B2 (en) * 2005-04-22 2007-01-09 Microsoft Corporation Systems, methods, and user interfaces for storing, searching, navigating, and retrieving electronic information
US20070250505A1 (en) * 2006-04-25 2007-10-25 Sbc Knowledge Ventures, L.P. Method and apparatus for defining a workflow
US20090007063A1 (en) 2006-05-12 2009-01-01 The Mathworks, Inc. System and method for synchronized workflow management
US20100049766A1 (en) * 2006-08-31 2010-02-25 Peter Sweeney System, Method, and Computer Program for a Consumer Defined Information Architecture
US7930648B1 (en) * 2006-10-10 2011-04-19 Adobe Systems Incorporated Expanded stack view
US20080270933A1 (en) * 2007-04-27 2008-10-30 David Straw Displaying multiple storage windows
US20080282189A1 (en) * 2007-05-09 2008-11-13 Sap Ag System and method for simultaneous display of multiple tables
US20110145690A1 (en) * 2007-05-09 2011-06-16 Sap Ag System and method for simultaneous display of multiple tables
US7818690B2 (en) * 2007-06-15 2010-10-19 Microsoft Corporation Framework for creating user interfaces containing interactive and dynamic 3-D objects
US20090063547A1 (en) 2007-09-04 2009-03-05 Microsoft Corporation Breadcrumb list supplementing for hierarchical data sets
US20090106238A1 (en) * 2007-10-18 2009-04-23 Siemens Medical Solutions Usa, Inc Contextual Searching of Electronic Records and Visual Rule Construction

Non-Patent Citations (10)

* Cited by examiner, † Cited by third party
Title
Are SharePoint Breadcrumbs completely wrong?-Published Date: May 2, 2008 http://www.novolocus.com/tag/breadcrumbs/ (11 pages).
Are SharePoint Breadcrumbs completely wrong?—Published Date: May 2, 2008 http://www.novolocus.com/tag/breadcrumbs/ (11 pages).
Manage sites and site collections-Retrieved Date: Jan. 27, 2010 http://www.nirma.org/-layouts/help.aspx?lcid=1033&cid0=MS.WSS.manifest&tid=MS.WSS.HA10157781 (5 pages).
Manage sites and site collections—Retrieved Date: Jan. 27, 2010 http://www.nirma.org/—layouts/help.aspx?lcid=1033&cid0=MS.WSS.manifest&tid=MS.WSS.HA10157781 (5 pages).
Navigation FAST Pack User Guide-Published Date: 2009 http://download.softpress.com/downloads/Navigation-Pack-User-Guide.pdf (28 pages).
Navigation FAST Pack User Guide—Published Date: 2009 http://download.softpress.com/downloads/Navigation—Pack—User—Guide.pdf (28 pages).
Navigation in School Atlases: Functionality, Design and Implementation in the "Swiss World Atlas Interactive"-Published Date: 2009 http://www.schweizerweltatlas.ch/downloads/publikationen/2009-icc-1.pdf (10 pages).
Navigation in School Atlases: Functionality, Design and Implementation in the "Swiss World Atlas Interactive"—Published Date: 2009 http://www.schweizerweltatlas.ch/downloads/publikationen/2009—icc-1.pdf (10 pages).
ShearerSite Template System-Published Date: Apr. 19, 2008 http://www.shearersoftware.com/software/web-tools/ShearerSite/ (3 pages).
ShearerSite Template System—Published Date: Apr. 19, 2008 http://www.shearersoftware.com/software/web-tools/ShearerSite/ (3 pages).

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8793645B2 (en) 2010-04-02 2014-07-29 Microsoft Corporation Replacement of data element in a graph
US20130290878A1 (en) * 2012-04-13 2013-10-31 Huawei Technologies Co., Ltd. Generation and display method of user interface and user interface device
US20150095791A1 (en) * 2013-09-30 2015-04-02 Microsoft Corporation Control and part compliant hierarchy
US9483549B2 (en) 2013-09-30 2016-11-01 Microsoft Technology Licensing, Llc Persisting state at scale across browser sessions
US9672276B2 (en) 2013-09-30 2017-06-06 Microsoft Technology Licensing, Llc Multi-act creation user interface element
US9727636B2 (en) * 2013-09-30 2017-08-08 Microsoft Technology Licensing, Llc Generating excutable code from complaint and non-compliant controls
US9754018B2 (en) 2013-09-30 2017-09-05 Microsoft Technology Licensing, Llc Rendering interpreter for visualizing data provided from restricted environment container
US9792354B2 (en) 2013-09-30 2017-10-17 Microsoft Technology Licensing, Llc Context aware user interface parts
US9805114B2 (en) 2013-09-30 2017-10-31 Microsoft Technology Licensing, Llc Composable selection model through reusable component
US9535584B2 (en) 2014-06-10 2017-01-03 Oracle International Corporation Enhanced visual navigation breadcrumbs
US10452755B2 (en) 2015-03-10 2019-10-22 Microsoft Technology Licensing, Llc Hierarchical navigation control
US10255084B2 (en) 2016-06-16 2019-04-09 Entit Software Llc Manage analytics contexts through a series of analytics interactions via a graphical user interface

Also Published As

Publication number Publication date
US20110239164A1 (en) 2011-09-29

Similar Documents

Publication Publication Date Title
US8316323B2 (en) Breadcrumb navigation through heirarchical structures
US9582601B2 (en) Combining server-side and client-side user interface elements
US9727636B2 (en) Generating excutable code from complaint and non-compliant controls
US7844640B2 (en) Data mapping visualization
EP1770510B1 (en) Executable and declarative specification for graphical user interfaces
US10949381B2 (en) Reusable transformation mechanism to allow mappings between incompatible data types
US8762936B2 (en) Dynamic design-time extensions support in an integrated development environment
EP2993595A1 (en) Dynamic user interface
US9471213B2 (en) Chaining applications
US20070162486A1 (en) Merge tool for structured object models
US8756515B2 (en) Dynamic editors for functionally composed UI
US10621271B2 (en) Reordering a multi-level layout using a hierarchical tree
US20050007383A1 (en) System and method of visual grouping of elements in a diagram
US20070282885A1 (en) Method and System For Application Interaction
NZ546292A (en) Hierarchical, multilevel, expand and collapse navigation aid for hierarchical structures including menu items for computers
US20130104088A1 (en) Controlling a size of hierarchical visualizations through contextual search and partial rendering
Oak et al. Dynamic Forms UI: Flexible and Portable Tool for easy UI Design
EP2352084B1 (en) Dataflow-driven service composition at the presentation layer
Demeure et al. Comet (s), a software architecture style and an interactors toolkit for plastic user interfaces
CN108829783B (en) Relation processing method and system based on mass data
US8793645B2 (en) Replacement of data element in a graph
Kacmar Supporting hypermedia services in the user interface
Cheung et al. Wcomp: Rapid application development toolkit for wearable computer based on java
Wysota Porting graphical user interfaces through ontology alignment
Liberty et al. Windows 10 Development with XAML and C# 7

Legal Events

Date Code Title Description
AS Assignment

Owner name: MICROSOFT CORPORATION, WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SARAIYA, PURAVKUMAR B.;DUMAS, CATHERINE ELIZABETH;DANTON, STEPHEN M.;AND OTHERS;SIGNING DATES FROM 20100325 TO 20100326;REEL/FRAME:024183/0841

FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

STCF Information on status: patent grant

Free format text: PATENTED CASE

AS Assignment

Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034564/0001

Effective date: 20141014

CC Certificate of correction
FPAY Fee payment

Year of fee payment: 4

FEPP Fee payment procedure

Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

LAPS Lapse for failure to pay maintenance fees

Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

STCH Information on status: patent discontinuation

Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362

FP Lapsed due to failure to pay maintenance fee

Effective date: 20201120