|
Description  |
|
|
TECHNICAL FIELD
This invention relates to sections of a compound document, and is more particularly related to a system and method for storing, viewing, editing, and processing ordered sections having different file formats.
BACKGROUND OF THE INVENTION
Binding separate paper documents together can create a well organized, coherent collection of information. The separate documents become sections of the bound collection. Binding sections together is the reason traditional three-ring paper
binders were created. Multiple sections can be kept in a particular order that makes sense to the one binding the sections together. Different kinds of sections, such as drawings, photographs, and text, can be bound together and labeled with
consecutively numbered pages. The bound collection becomes one physical entity that can be maintained and carried around as a single binder. However, the advantages of binding document sections together in the paper world do not easily translate into a
computerized environment for electronic documents.
In the electronic documents environment, there are several methods of "binding" electronic document files or sections together. First, document files can be organized or "bound" together in a directory. However, the document files are stored
separately. not as a single file, making it more cumbersome to copy or to electronically mail the documents files. Additionally, the files within the directory cannot be maintained in a user-definable order nor can the directory itself be transferred
(e.g., copied or electronically mailed) as a single file.
Microsoft Corporation's Word 6.0 word processing application program is capable of binding sections of a compound document in what is called a master document. Sub-documents contain data that is used in the master document. The master document
reflects the status of each sub-document that is part of the master document. However, the master document cannot store the sub-documents as part of a single file (master document) nor is the native format for a document maintained once the document is
saved as a sub-document of the master document. Furthermore, the master document cannot store sub-documents of differing file formats.
Microsoft Corporation's Excel 5.0 spreadsheet application program is also capable of binding sections of a compound document in what is called a workbook document. The workbook document contains multiple spreadsheets within a single file in a
predetermined order. However, the native format for each spreadsheet is not maintained in the workbook document. Furthermore, the workbook document is not capable of storing sections of differing file formats, i.e., only spreadsheets can be sections of
the workbook document.
Sections of a compound document can be stored as sub-files of a single compound document file, also known as a file bundle. The data within each sub-file is maintained in the native format defined by the application program module that generated
each sub-file. The compound document file maintains the sub-files and a directory of pointers. The pointers indicate the physical location in memory of each sub-file within the compound document file. However, the order of sub-files is not maintained
within the compound document file.
Another method of "binding" electronic documents together is by embedding information from document files into a compound document. This compound document concept is well known and is implemented by the Object Linking and Embedding (OLE) 2.0
protocol and functions designed and marketed by the Microsoft Corporation. In the context of OLE 2.0, a compound document comprises a containing document (container) and an embedded document (embedded object) that is linked and embedded within the
containing document.
In general, a containing application is an application program module that maintains a container, such as a compound document. The containing application provides storage for the compound document as well as a place for viewing and editing the
embedded object amongst the containing document. A serving application is an application program module that creates an embedded object. The serving application creates an "object viewr" of the embedded object and displays the object view amongst the
contents of the containing document itself. For example, a compound document could be a newsletter (container) having a chart (embedded object) displayed within the window that displays the newsletter.
According to the OLE 2.0 protocol, when an embedded object is edited, the user must first "activate" the embedded object. This is conventionally accomplished with a double click of the mouse on the displayed embedded object, which renders the
embedded object to be "in place active" or "UI active". Once activated, the menus of an application program module that created the activated embedded object are negotiated with the containing application under the OLE 2.0 protocol. As a result of the
menu negotiations the user sees a different set of menus that are relevant to the activated embedded object.
When the OLE compound document is stored, structured storage is utilized. Structured storage is a set of application programming interfaces (APIs) for describing a way to create a single file structure that can contain other file structures with
the single file, similar to storing directories and additional files within a single directory. An implementation of this kind of structured storage for a compound document is also referred to as Doc Files. Those skilled in the art will be familiar
with compound documents and the features and protocol of standard OLE 2.0 including structured storage techniques. Additional details of OLE 2.0 can be obtained by referring to "Inside OLE 2" by Kraig Brockschmidt published by Microsoft Press.
Once an OLE embedded object is embedded within the containing document, the OLE embedded object is stored in a format that is native to the application program module that created the embedded object, but is not necessarily the same as the file
format for the application. The embedded object becomes tightly associated with the containing document and is stored in a single file along with the containing document. The embedded object can no longer be manipulated outside the confines of the
containing document.
When viewing an embedded object, the embedded object is displayed within a single window or viewport along with the containing document. However, each embedded object or section of the OLE compound document cannot be solely viewed and edited
within the entire viewport. Embedded objects are limited to being viewed and edited within only a portion of the window or viewport amongst the contents of the containing document.
Problems may arise when printing out an OLE compound document. For OLE compound documents, the containing application prints all sections of the OLE compound document, including the containing document as well as metafile representations of the
embedded objects. This results in less than optimum printing control and print quality. For example, the containing application may not recognize the need for a page break when printing the representation of a large embedded spreadsheet or a large
embedded graphic image. To resolve this quality problem, one approach is to individually print each section of the compound document by instructing the serving application program to print out each embedded object or section. However, this approach can
allow other print jobs to interrupt the process of printing each section of the entire compound document because other print jobs can be processed after each section is printed. This results in confusion at the printer when sections are not
consecutively printed as a single, uninterrupted print job and when the sections are not consecutively numbered.
Therefore, in the context of electronic documents, there is a need for "binding" or storing related sections of a compound document in a single file where the sections are of different file formats, maintained in an order, and maintained in a
native format. Additionally, there is a need to view and edit ordered sections within a viewport and to consecutively print the ordered sections as an uninterrupted print job with better print quality and control and with consecutive page numbering.
SUMMARY OF THE PRESENT INVENTION
The present invention satisfies the above-described needs by providing a system and method for storing, viewing, editing, and processing ordered sections having differing file formats in a compound document. In one aspect of the present
invention, the method stores a compound document having ordered sections of differing file formats. A binder file is initially created for storing the compound document in memory. An index structure is then created within the binder file. The index
structure defines the order of sections within the binder file. A first file, which is stored in the binder file, has a first file format native to the program module that created the first file. A second file, which is stored in the binder file, has a
second file format native to the program module that created the second file. The order between the first and second section is updated within the index structure in response to storing the first and second sections in the binder file. In this manner,
sections of a compound document having differing file formats can be stored in one file structure while advantageously maintaining the order of sections and the native file format of each section.
Additionally, the second section can be removed from the binder file and stored as an external file that advantageously retains the native file format of the second section. Furthermore, the order of sections can be changed by altering the order
stored in the index structure without altering the location where the first and second section are stored in memory. This is advantageous because the order of sections can be maintained and updated without inefficient and time-consuming changes of the
memory locations for these sections.
In another aspect of the present invention, a method is described for viewing and editing sections having different file formats and stored in memory within a user-definable order. First, a viewport for viewing and editing the contents of each
of the sections is displayed. One of the sections is selected for viewing in the viewport. The contents of the selected section are viewed in the viewport without viewing the contents of any of the unselected sections and regardless of where the
sections are stored, e.g., within a compound document or as a separate document.
More particularly described, graphical images representing different sections can be displayed in a selection area in the user-definable order. Selection of a section typically involves selecting one of the graphical images, such as an icon or a
thumbnail image of the selected section, in the selection area. Selection is preferably implemented with a single user-interface operation, such as a single mouse click, which allows the user to easily activate or view each section. The thumbnail image
can be an image derived from either a particular page or from multiple pages of the selected section, thus giving the user an easier way to identify the contents of the selected section.
Additionally, a new section can be added or "bound" by selecting a representation of an existing file, such as an icon, and moving or "dragging" the representation over the selection area before releasing or "dropping" the representation onto the
selection area. Upon release, the existing file is stored as a new section that maintains the native file format of the existing file. The user-definable order is updated as a result of adding the new section. This process makes it intuitive and
easier for a user to add new sections of a binder document. The new sections can be stored either as separate document files while the binder file maintains the order of sections or within the binder file itself.
A portion of an existing file can be added as a new section. The contents of the existing file are displayed in a separate window before selection of a portion of the existing file contents. A representation of this selected portion of the
existing file can be moved and released over the selection area to become a new section, as described above.
Additionally, a section can be removed or "unbound" by selecting a graphical image representing one of the sections. The selected section is then moved or "dragged" out of the viewport before releasing or "dropping" the graphical image. The
dragged section is removed or copied from the binder file and stored as either an external file or a section within another binder document while retaining the native file format of the dragged section. In this manner, the external file can still be
loaded, viewed, and edited by the application program module that created the removed or copied section.
In another aspect of the present invention, a system is provided for consecutively printing ordered sections of a compound document as a single, uninterrupted print job where each section has been created by a corresponding program module and has
a different file format than other sections. The system has a processing unit (PU), an input device coupled to the PU, such as a keyboard or a mouse, a pixel-based display device coupled to the PU, and a memory storage device coupled to the PU. In this
system, the PU is operative to select which of the sections to print. The PU is also operative to sequentially dispatch the corresponding program module that created each of the selected sections in order to consecutively print the selected sections,
preferably with consecutive page numbers, as a single uninterrupted print job. In this manner, all printed pages of the selected sections are consecutively printed and confusion is avoided when printing compound documents having sections of differing
file formats. By allowing each of the corresponding program modules to print their respective section, the print quality is enhanced.
In yet another aspect of the present invention, a computer-readable medium is described on which is stored a computer program for checking the spelling of text within ordered sections of a compound document. Each section is created by a
corresponding program module. The computer program instructions, when executed, select the sections of the compound document in which to check the spelling of text. The corresponding program module that created the highest order section is dispatched
to check the spelling of text from the highest order section. The dispatching step is sequentially repeated for the next highest order section until the spelling of text from all the selected sections has been checked. In this manner, the optimized
individual spell checking routines from each of the corresponding program modules can be used to check the spelling of differently formatted sections. A similar operation can be performed to check the grammar of text within ordered sections of a
compound document.
These and other advantages of the present invention will be appreciated from studying the following detailed description and drawings, and the appended claims.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a block diagram of a computer system representing the operating environment of an embodiment of the present invention.
FIG. 2 is a screen display of the preferred binder program module for viewing and editing ordered sections of different file formats.
FIG. 3 is a flow diagram illustrating steps of the preferred method for viewing and editing the contents of ordered sections of different file formats.
FIGS. 4A-4B comprise a block diagram illustrating the interaction between program modules and files when differently formatted sections of a binder document are stored within a binder file and when differently formatted sections of a binder
document are stored in separate document files.
FIGS. 5A-5C comprise a diagram illustrating the structured storage aspects of a binder file and an existing file when a new section is added and when the order of sections is changed.
FIGS. 6A-6B comprise a flow diagram illustrating steps of the preferred method for storing ordered sections of different file formats and removing a section from a binder file.
FIG. 7 is a flow diagram illustrating steps of the preferred method for adding an existing file as a new section of a binder file using a drag and drop technique.
FIG. 8 is a flow diagram illustrating steps of the preferred method for adding a portion of an existing file as a new section of a binder file using a drag and drop technique.
FIG. 9 is a flow diagram illustrating steps of the preferred method for removing or copying a section from a binder file using a drag and drop technique.
FIGS. 10A-10B comprise a flow diagram illustrating steps of the preferred method for sequentially dispatching each application program module related to each section to consecutively print all the sections of a binder file in a single
uninterrupted print job.
FIG. 11 is a flow diagram illustrating steps of the preferred method for sequentially dispatching each application program module related to each section to check the spelling of the contents of each section of a binder file in a single data
processing task.
DETAILED DESCRIPTION
The present invention is directed to a system for storing, viewing, editing, and processing ordered sections in a compound document. The preferred embodiment of the present invention is represented by "OFFICE 95", a suite of word processing,
spreadsheet, presentation, database, and time management application programs along with program modules that integrate and enhance these application programs. "OFFICE 95" is developed and marketed by Microsoft Corporation of Redmond, Wash.
Briefly described, "OFFICE 95" includes a binder program module that provides some integration and enhancement of the above-mentioned suite of application programs. The binder program module allows a user to create a binder document having
components or sections from different application programs. Each section is a file that is maintained in a file format native to the application program module that created each section. The binder document is preferably stored in a single binder file. The binder program module displays a frame on a computer monitor containing menus, toolbars, a selection area, and a viewport. A user is able to view and edit the contents of each of section of the binder document through the viewport. The selection
area shows graphical representations (icons) of each section in a user-definable order, from top (highest order) to the bottom. Different sections can be viewed and edited in the viewport simply by selecting different icons in the selection area. A
section can be added to the binder document by selecting and dragging an existing file or a highlighted portion of an existing file over the selection area and releasing the mouse button. The format of the existing file is maintained while the existing
file is stored as a section of the binder file. A section can also be removed from the binder document by dragging the section out of the selection area and onto the desktop to become an external file. The binder program module can also sequentially
dispatch application programs to perform data processing tasks in an uninterrupted consecutive manner on sections of the binder document, including printing, spell checking, and grammar checking. Additionally, the binder program module can consecutively
number pages when printing the different sections of the binder document.
Although the preferred embodiment will be generally described in the context of a binder program module and an operating system running on a personal computer, those skilled in the art will recognize that the present invention also can be
implemented in conjunction with other program modules for other types of computers. Furthermore, those skilled in the art will recognize that the present invention may be implemented in a stand-alone or in a distributed computing environment. In a
distributed computing environment, program modules may be physically located in different local and remote memory storage devices. Execution of the program modules may occur locally in a stand-alone manner or remotely in a client/server manner.
Examples of such distributed computing environments include local area networks, enterprise-wide computer networks, and the global Internet.
The detailed description which follows is represented largely in terms of processes and symbolic representations of operations by conventional computer components, including a processing unit (PU), memory storage devices, connected display
devices, and input devices. Furthermore, these processes and operations may utilize conventional computer components in a heterogeneous distributed computing environment, including remote file servers, compute servers, and memory storage devices. Each
of these conventional distributed computing components is accessible by the PU via a communication network.
The processes and operations performed by the computer include the manipulation of signals by a PU and the maintenance of these signals within data structures resident in one or more memory storage devices. These data structures impose a
physical organization upon the collection of data stored within a memory storage device and represent specific electrical or magnetic elements. These symbolic representations are the means used by those skilled in the art of computer programming and
computer construction to most effectively convey teachings and discoveries to others skilled in the art.
For the purposes of this discussion, a process is generally conceived to be a sequence of computer-executed steps leading to a desired result. These steps generally require physical manipulations of physical quantities. Usually, though not
necessarily, these quantities take the form of electrical, magnetic, or optical signals capable of being stored, transferred, combined, compared, or otherwise manipulated. It is conventional for those skilled in the art to refer to these signals as
bits, bytes, words, information, elements, symbols, characters, numbers, points, records, entries, objects, images, files or the like. It should be kept in mind, however, that these and similar terms are associated with appropriate physical quantities
for computer operations, and that these terms are merely conventional labels applied to physical quantities that exist within and during operation of the computer.
In general, a program module may use an interprocess communication to communicate with another program module. An interprocess communication is the ability of a task or process to exchange data with another task or process. Examples of such
interprocess communications readily recognized by those skilled in the art include the use of pipes, semaphores, and shared memory. In the preferred embodiment, a program module calling an application programming interface (API) to command another
program module to perform a task, such as printing the contents of a section to a temporary file, is one such interprocess communication.
It should also be understood that manipulations within the computer are often referred to in terms such as adding, comparing, displaying, dispatching, placing, altering. etc. which are often associated with manual operations performed by a human
operator. The operations described herein are machine operations performed in conjunction with various input provided by a human operator or user that interacts with the computer.
In addition, it should be understood that the programs, processes, methods, etc. described herein are not related or limited to any particular computer or apparatus, nor are they related or limited to any particular communication architecture.
Rather, various types of general purpose machines may be used with program modules constructed in accordance with the teachings described herein. Similarly, it may prove advantageous to construct a specialized apparatus to perform the method steps
described herein by way of dedicated computer systems in a specific network architecture with hard-wired logic or programs stored in nonvolatile memory, such as read only memory.
Referring now to the drawings, in which like numerals represent like elements throughout the several figures, aspects of the present invention and the preferred operating environment will be described.
The Operating Environment
FIG. 1 illustrates various aspects of the preferred computing environment in which an exemplary embodiment of the present invention is designed to operate. Those skilled in the art will immediately appreciate that FIG. 1 and the associated
discussion are intended to provide a brief, general description of the preferred computer hardware and program modules, and that additional information is readily available in the appropriate programming manuals, user's guides, and similar publications.
FIG. 1 illustrates a conventional personal computer 10 suitable for supporting the operation of the preferred embodiment of the present invention. As shown in FIG. 1, the personal computer 10 operates in a networked environment with logical
connections to a remote computer 11. The logical connections between the personal computer 10 and the remote computer 11 are represented by a local are a network 12 and a wide area network 13. Those of ordinary skill in the art will recognize that in
this client/server configuration, the remote computer 11 may function as a file server or compute server.
The personal computer 10 includes a processing unit (PU) 14, preferably the 80486 or "PENTIUM" microprocessors manufactured by Intel Corporation of Santa Clara, Calif. However, it should be understood that the invention can be implemented on
computers based upon other microprocessors, such as the "MIPS" family of microprocessors from the Silicon Graphics Corporation, the "POWERPC" family of microprocessors from both the Motorola Corporation and the IBM Corporation, the "PRECISION
ARCHITECTURE" family of microprocessors from the Hewlett-Packard Company, the "SPARC" family of microprocessors from the Sun Microsystems Corporation, or the "ALPHA" family of microprocessors from the Digital Equipment Corporation.
The personal computer 10 also includes system memory 15 (including read only memory (ROM) 16 and random access memory (RAM) 17), which is connected to the PU 14 by a system bus 18. The BIOS 19 for the personal computer 10 is stored in ROM 16.
Those skilled in the art will recognize that the BIOS 19 is a set of basic routines that helps to transfer information between elements within the personal computer 10. Howvever, it should be appreciated that other types of computers may transfer
information between elements within the computer without the use of a BIOS 19 and that the invention can readily be implemented in such computers without a BIOS 19.
Within the personal computer 10 a hard disk drive 20 is connected to the system bus 18 via a hard disk drive interface 21. A floppy disk drive 22, which is used to read or write a floppy disk 23, is connected to the system bus 18 via a floppy
disk drive interface 24. A CD-ROM drive 25, which is used to read a CD-ROM disk 26, is connected to the system bus 18 via a CD-ROM interface 27. A user enters commands and information into the personal computer 10 by using a keyboard 28 and/or pointing
device, such as a mouse 29, which are connected to the system bus 18 via a serial port interface 30. Other types of pointing devices (not shown in FIG. 1) include track pads, track balls, joy sticks, data gloves, head trackers, and other devices
suitable for positioning a cursor on a computer monitor 31. A printer 41 is connected to the system bus 18 via a printer interface 40. The monitor 31 or other kind of display device is connected to the system bus 18 via a video adapter 32.
The remote computer 11 in this networked environment is connected to a remote memory storage device 33. This remote memory storage device 33 is typically a large capacity device such as a hard disk drive, CD-ROM drive, magneto-optical drive or
the like. The personal computer 10 is connected to the remote computer 11 by a network interface 34, which is used to communicate over the local area network 12.
As shown in FIG. 1, the personal computer 10 is also connected to the remote computer 11 by a modem 35, which is used to communicate over the wide area network 13, such as the Internet. The modem 35 is connected to the system bus 18 via the
serial port interface 30. Although illustrated in FIG. 1 as external to the personal computer 10, those of ordinary skill in the art will quickly recognize that the modem 35 may also be internal to the personal computer 11, thus communicating directly
via the system bus 18. It is important to note that connection to the remote computer 11 via both the local area network 12 and the wide area network 13 is not required, but merely illustrates alternative methods of providing a communication path
between the personal computer 10 and the remote computer 11.
Although other internal components of the personal computer 10 are not shown, those of ordinary skill in the art will appreciate that such components and the interconnection between them are well known. Accordingly, additional details concerning
the internal construction of the personal computer 10 need not be disclosed in connection with the present invention.
Those skilled in the art will understand that program modules and data are provided to the personal computer 10 via one of the local or remote memory storage devices or computer-readable media, which may include the hard disk drive 20, floppy
disk 23. CD-ROM 26, RAM 17, ROM 16, the remote memory storage d | | |