Handheld devices, such as personal digital assistants (PDAs) or smartphones, are portable, lightweight electronic computing devices. Such handheld devices provide a user with a wide variety of functional capabilities relating to communications and/or software applications.
A handheld device user's quality of experience is frequently limited, however, as a consequence of the reduced screen size, as compared to the screen size of a standard personal computer (PC). The reduced screen size of the handheld device may not be conducive to viewing a document authored in a software application optimized for PC viewing. Further, it can be difficult to navigate through a complex document on a handheld device while searching for specific content.
Embodiments of the present disclosure generally relate to systems and methods for generating a document index for handheld application navigation.
According to one aspect, a mobile device includes a display, and a computer readable storage medium storing a document file. The device also includes an application stored on the computer readable storage medium, the application being programmed to include: an input/output module programmed to load a document and render the document on the display; a parsing module programmed to parse the document and to identify certain tags within the document that are associated with data structures; and an index generation module programmed to create a document index based on the certain tags identified by the parsing module, the document index being formed in a hierarchy.
According to another aspect, a mobile device includes a display, and a computer readable storage medium storing a spreadsheet document. The device also includes a spreadsheet application stored on the computer readable storage medium, the spreadsheet application being programmed to include: an input/output module programmed to load the spreadsheet document and render the spreadsheet document on the display, the spreadsheet document being stored in an extensible markup language format; a parsing module programmed to parse the spreadsheet document and to identify certain extensible markup language tags within the document that are associated with data structures of the spreadsheet document, the data structures including a workbook name, a spreadsheet name, and a chart name; and an index generation module programmed to create a document index based on the certain extensible markup language tags identified by the parsing module corresponding to the data structures, the document index being formed in a tree-like hierarchy including a plurality of entries, each of the entries including a summary of one of the data structures and being linked to the data structure. The document index is automatically generated when the spreadsheet document is opened, and, when a user selects a specific entry in the document index, the spreadsheet application is further programmed to display a data structure of the spreadsheet document associated with the specific entry on the display.
According to yet another aspect, a method for creating a document index includes: opening a spreadsheet document; parsing the spreadsheet document to identify tags associated with specific data structures of the spreadsheet document; identifying certain extensible markup language tags identified during parsing, the tags corresponding to the data structures; and creating the document index based on the identified tags, the document index being formed in a tree-like hierarchy including a plurality of entries, each of the entries including a summary of one of the data structures and being linked to the data structure.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key or essential features of the claimed subject matter, nor is it intended to be used in any way as to limit the scope of the claimed subject matter.
This disclosure will now more fully describe exemplary embodiments with reference to the accompanying drawings, in which specific embodiments are shown. Other aspects may, however, be embodied in many different forms and the inclusion of specific embodiments in the disclosure should not be construed as limiting such aspects to the embodiments set forth herein. Rather, the embodiments depicted in the drawings are included to provide a disclosure that is thorough and complete and which fully conveys the intended scope to those skilled in the art. When referring to the figures, like structures and elements shown throughout are indicated with like reference numerals.
The present application is directed to systems and methods for generating a document index of a document on a mobile device such that the mobile device user can easily navigate through the document to select desired contents. The techniques used to generate and present the document index to the user on the mobile device can be applicable to any situation where simplified navigation through a document or a data set is desired.
In general, the client computing system 105 can include a variety of input/output devices, a central processing unit (CPU), a data storage device, and a network device. Typical input/output devices include keyboards, mice, displays, microphones, speakers, disk drives, CD-ROM drives, and flash drives. Computer readable media, such as the data storage device, provide for data retention. By way of example, computer readable media can include computer storage media and communication media. Computer storage media includes volatile and non-volatile memory implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Communication media typically embodies 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 includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal.
Among the plurality of information stored on the data storage device is a client operating system (OS) and applications. The client OS is a program that manages the hardware and software resources of the client computing system 105. Respective applications utilize the resources of the client computing system 105 to directly perform tasks specified by the user. For example, the client computing system 105 may include one or more software applications, such as a word processing or data processing program, that are used to create and edit document files. One example of such an application is the Microsoft Word word processing software application from Microsoft Corporation of Redmond, Wash. Other configurations for the client OS are possible as well.
The communication medium 110 is a bi-directional data communication path established between the client computing system 105 and the server 115. In certain embodiments, the communication medium 110 can be any of a number of wireless or hardwired WAN, LAN, Internet, or other packet-based communication networks such that data can be shared among one or more client computing systems 105 and servers 115.
The server 115 is a computing system that interfaces with the client computing system 105 via the communication medium 110. In general, the transmission of data between the server 115 and the client computing system 105 may include communications data, media data, application data, or any other forms of data.
In general, the mobile device 200 includes an input module 205 and an output module 210. In the example embodiment, the handheld mobile device 200 is used to exchange wireless data between the server 115 and/or locally run one or more software applications. In one aspect, the one or more respective software applications may be used to view, edit, and/or author an application specific document, as described further below.
Referring still to
In the example embodiment, the output module 210 can be any device incorporated into the mobile device 200 that can communicate information to the user. In this respect, it will be appreciated that there are many methods to present or display information to a user. For example, the output module 210 may present visual information to the user via a liquid crystal display device (LCD) or a touch screen. In other embodiments, the output module 210 may additionally communicate information via non-visual methods such as audio or vibratory energy, or any combination thereof. For example, a microphone and/or a vibratory module may be used to communicate non-visual information to the user. In one embodiment of the mobile device 200, one or more output modules 210 may be configured to communicate information to the user accordingly.
Referring now to
In one aspect, the data module 305 is configured to allow the handheld mobile device user to access communications and entertainment related features of the handheld mobile device 200. For example, the data module 305 may enable the user to make telephone calls, check voice mail, and access peer-to-peer messaging technologies such as text messaging and instant messaging. The data module 305 may additionally allow the user to use a web browser to access Internet web sites and various media data such as music, video and/or photos.
The software module 310 is configured to allow the handheld mobile device user access to one or more software applications. For example, the software module 310 may include one or more applications common to a suite of software used to view, author, and/or edit a document, such as a word processing document, an information document, and/or a spreadsheet document. In one embodiment, the software module 310 can be one or more of the applications associated with the Microsoft Office Mobile software suite, including the Microsoft Word word processing program, the EXCEL® spreadsheet program, and the POWERPOINT® presentation graphics program, as provided by Microsoft Corporation of Redmond, Wash. However, other software suites and/or applications can be used.
As shown in
The input/output module 405 allows the user to access spreadsheet documents. For example, the input/output module 405 is programmed to load spreadsheet documents that are stored on computer readable storage media of the mobile device 200. The input/output module 405 is also programmed to store modified versions of the spreadsheet documents to the media.
The parsing module 410 is programmed to parse the spreadsheet document to identify certain attributes associated with the spreadsheet document. In some examples, the parsing module 410 parses the spreadsheet document as the spreadsheet document is opened by the input/output module 405. In other examples, the parsing module 410 can parse the spreadsheet document independently from the input/output module 405.
In general, documents created with respective applications associated with software module 310 can be stored in a format, such as the Extensible Markup Language (XML) format. In example embodiments, the parsing module 410 parses the XML spreadsheet document to look for certain data structures, as described below, such as sheets, tables, graphs, etc. When the parsing module 410 identifies a certain data structure, the parsing module 410 provides this information to the index generation module 415.
For example, in one embodiment, the parsing module 410 parses the XML-based document to identify certain XML-based tags that represent specific structures in the spreadsheet document. Examples of such tags include those that define a workbook name, a sheet name, and a chart name, as shown below:
<workbook name=“Workbook A” sheetId=“1” r:id=“rId1”/>
<sheet name=“Facts” sheetId=“1” r:id=“rId1”/>
<chart title=“Chart 1” chartId=“1” r:id=“rId1”/>
The parsing module 410 can be programmed to look for other types of data structures as well. Such examples include:
<table xmlns=“http://schemas.openxmlformats.org/path” id=“1” name=“Table1” displayName=“Table1” ref=“Range” totalsRowShown=“0”>
<definedName name=“definedName1”>‘Facts’! “Range”/>
In alternative embodiments, other file types besides XML-based file types can be used. In general, parsing module 410 can be programmed to parse a data file of any format and data type. For example, a binary-type file type can be used to store a document, and the parsing module 410 can be programmed to parse the binary file to identify relevant data structures. In other embodiments, other types of documents, such as word processing or presentation documents, can also be parsed, and document indexes can be generated, as described below.
The index generation module 415 is programmed to create a document index based on the identified data structures from the parsing module 410. As described further herein, the document index can be formed in a hierarchy to provide entries related to each of the data structures identified by the parsing module 410. The document index can, in turn, be used as a shortcut method for navigating the document.
Referring now to
In general, the spreadsheet document 500 is a spreadsheet program application user interface that provides an organizational framework to enable the user to enter, organize and/or modify data. In the example embodiment, the most basic organizational structure of the spreadsheet document 500 is a cell, wherewith a data value may be entered and stored for further processing, as described further below. A respective instance of the spreadsheet document 500 can contain a plurality of cells, typically limited by the allocation of memory (e.g. volatile and non-volatile memory) assigned to the spreadsheet document. The cells of the spreadsheet document 500 are generally identified by column (such as represented by letters of the alphabet) and by row (such as represented by a number). For example, as depicted in
In one embodiment, a respective cell may be assigned a data value by the user. In general, the data value of a cell may be a specific data type, such as an alphanumeric character or a string. Additionally, the data value can be a result of a calculation based upon a formula that in certain embodiments can refer to data values assigned to one or more other cells. In one aspect, the data type or formula associated with a respective cell can have a unique identifier such that attributes associated with the cell may be discoverable.
In the example embodiment, in addition to the cell, the spreadsheet document 500 can contain additional organizational structures. For example, one or more worksheets may be defined. In general, worksheets are discemable organizational structures enabling a user the flexibility to organize data as desired. In the example embodiment, worksheets 540, 545, 550, 555 are shown including labels describing the content of the worksheets, such as “Facts,” “Sales,” “Inventory,” and “People” are depicted. In one aspect, the worksheets 540, 545, 550 and 555 can have a unique identifier such that the respective worksheets and attributes associated with the each respective worksheet may be discoverable.
Still referring to
In one example embodiment, the spreadsheet document 500 contains embedded data structures 560, 565, 570, 575, 580. The respective embedded structures can be shown including labels, such as “Table”, “Chart”, “Graphic”, “Image”, and “Named Ranges.”
In general, the user can view, create, and edit respective embedded data structures, 560, 565, 570, 575, and 580 via the input module 535. For example, in one embodiment the table data structure 560 can be created and embedded in the spreadsheet document 500. In general, the table data structure 560 can be utilized to optimize the management and analysis of group of related data values. In one aspect, the table data structure 560 can be created by selecting a range of cells containing related data values, the data values can then be sorted, filtered, formatted. In the example spreadsheet document 500 as shown in
Additionally, in one embodiment the chart data structure 560 can be created and embedded in the spreadsheet document 500. In general, the chart data structure 560 is a graphical interpretation of a group or groups of data values. For example, the chart data structure 560 can be a pie chart, a bar chart, column chart, a scatter chart, etc. The respective data values can be selected as desired from cells located in one or more worksheets of the spreadsheet document 500. In one aspect, the chart data structure 560 can have a unique identifier such that the chart data structure 560 and attributes associated with the chart data structure 560 can be discoverable.
Additionally, in one embodiment the graphic data structure 570 can be created and embedded in the spreadsheet document 500. In one example the graphic data structure 570 can be created using, for example, SMARTART™ graphics technology from Microsoft Corporation. In general, the graphic data structure 570 is a graphical representation of information. For example, the graphic data structure 570 can be a list, where in general, the form of the list if configurable such that content and arrangement of the list can be intelligently grouped and connected. There are many other forms the graphic data structure 570 may embody to optimally configure content. For example, the graphic data structure 570 can be configured to possess a variety of general forms such as a Process, a Type, and a Hierarchy, etc. In one aspect, data structure 570 can have a unique identifier such that the graphic data structure 570 and attributes associated with the graphic data structure 570 can be discoverable.
Additionally, in one embodiment the image data structure 575 can be created and embedded in the spreadsheet document 500. In general, the image data structure 575 is a digital representation of a picture that may be formatted accordingly to typical image formats such as “.jpg”, “.tiff”, “.bmp”, “.gif”, and the like. In one example, the image data structure 575 may be embedded in a spreadsheet document 500 via a hyperlink or a “drag and drop” process. In one aspect, the image data structure 575 can have a unique identifier such that the image data structure 575 and attributes associated with the image data structure 575 can be discoverable.
Additionally, in one embodiment the Named Ranges data structure 580 can be created and embedded in the spreadsheet document 500. In general, the Named Ranges data structure 580 enables a user to assign a meaningful and descriptive name to a single cell, a range of cells, or a group of cells to optimize user interpretation of data stored in the spreadsheet document 500 if the organizational structure of the data is complex. For example, the Named Ranges data structure 580 data as shown in
Referring now to
Consequently, as depicted in
Referring now generally to
In general, presented to the user on the output module 710 is a document index 712 generated from the spreadsheet 500. In one embodiment, the spreadsheet 500, formatted as an XML-based document, is passed through a parsing algorithm that identifies and organizes discoverable attributes associated with the spreadsheet 500. In general, the parsing algorithm traverses the XML document and identifies one or more “tags” having identifiable attributes. The identifiable attributes are then assembled to construct a hierarchal tree-like structural representation of the spreadsheet 500 that can be presented to the user via the output module 710 in the form of a navigable document index 712 having a plurality of entries 711 corresponding to the identified attributes in the spreadsheet document. The user can navigate through the document index 712, selecting an entry as desired via the input module 705. When particular content in the document index 712, such as one of the entries 711, is selected, the actual selected content of the spreadsheet 500 is presented to the user.
In the example embodiment, an expansion symbol 740 indicates whether or not the hierarchal tree-like structure can be expanded further to display respective discoverable attributes located within the respective worksheet entries 720, 725, 730 and 735. In one aspect, a “+” sign indicates that there are discoverable attributes available. In a second aspect, a “−” indicates that there are no further discoverable attributes available. Additionally, an underscore 745 can indicates that the respective worksheet entries 720, 725, 730, 735 are linked to a specific location in the example spreadsheet 500. The output module 710 additionally includes a scroll bar 750 to enable a user to vertically navigate the document index 712.
Referring now to
In one aspect, embedded structure entries 800, 805, 810, 815, and 820 each have a unique graphical identifier that can be displayed to notify the user the data type of embedded data. For example, entry 800 is an image data type and may be represented by a triangle, entry 805 is a graphic data type and may be represented by a box, entry 810 is ranges data type and may be represented by a pentagon, entry 815 is a chart data type and may be represented by a circle, and entry 820 is a table data type and may be represented by a star. Other configurations are possible. For example, in another embodiment, colors or text can be used to identify different data types.
As shown in
In one embodiment, the document index is generated and displayed automatically when the user opens a spreadsheet document. The user can then select an entry from the document index to quickly access that structure, or can simply close the document index to view the entire spreadsheet document. The user can access the document index at a later point by selecting the appropriate menu item or hotkey. Other configurations are possible.
Referring now to
The method 1000 begins at operation 1010, whereat a document is loaded into memory. For example, as described above, the user can choose to open a document, such as a spreadsheet document. Once selected, the spreadsheet document is loaded into memory.
Next, at operation 1015, the file is parsed to identify specific tags that are associated with data structures, as noted above. In some embodiments, the parsing can be completed at the time the file is loaded into memory, or at a later point. Control is then passed to operation 1020; a determination is made during parsing if a specific tag is found. If a specific tag is not found, control is instead passed to operation 1030 described below. Alternatively, if a specific tag is found, control is passed to operation 1025, and information about the tag (e.g., type, name, and location in spreadsheet file) is added to the document index.
At operation 1030, a determination is made as to whether or not parsing of the file is complete. If not, control is passed back to operation 1015 and parsing continues. If so, control is instead passed to operation 1035 and the document index is generated.
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 above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.