Abstract:
A method for the intelligent, in-line, dynamic editing of documents containing mixed object types on a computer work station is disclosed. The mixed object types may be text objects, draw graphics objects, business graphics objects, and tables objects. The editor executes actions on use selected objects and attributes based on internal knowledge of the object type selected rather than by explicit user commands. This procedure provides a simple user interface that makes manipulation of objects and attributes and command execution transparent to the user.

Description:
CROSS REFERENCE TO RELATED APPLICATIONS 
     The invention disclosed in this application is related to the inventions disclosed in the following patent applications which are assigned to the assignee of this application: 
     Ser. No. 06/645,622 filed Aug. 30, 1984, by Barbara A. Barker and Rex A. McCaskill for &#34;Superblock Structure in a Multiple Data Editor&#34; now U.S. Pat. No. 4,723,210; and 
     Ser. No. 06/645,630 filed Aug. 30, 1984, by Barbara A. Barker, Irene H. Hernandez and Rex A. McCaskill for &#34;Editing of a Superblock Structure&#34; now U.S. Pat. No. 4,723,211. 
     The disclosures of the foregoing applications are incorporated herein by reference. 
     FIELD OF THE INVENTION 
     This invention generally relates to integrated multiple data editors and, more particularly, to the intelligent, in-line, dynamic editing of documents containing mixed object types. 
     DESCRIPTION OF THE PRIOR ART 
     The trend in computer programs today is to provide some form of integration of various program applications. Without integration, the user must employ separate application programs for word processing, data processing and graphic applications. When separate application programs are used for these various functions, it is often difficult to merge the outputs of the several applications into a single document. Therefore, the purpose of program application integration is to simplify the use of a computer to produce a desired output product. 
     The simplest form of integration is a series of application programs designed to work alike sharing the same files and using the same or similar commands to perform the same or similar functions. This form of integration is relatively easy to implement but does not allow the individual programs of the family to be run simultaneously. Currently, the most popular integrated software are what may be termed multiple-function programs. These are characterized as incorporating a variety of applications within one program. Such programs generally allow splitting of the screen into several different windows almost as if each were a separate program. Typically, these multiple-function programs include text, spreadsheet and business graphing applications. Somewhat similar to the multiple-function programs is the integration technique based on a database application environment wherein all applications share a common set of data. Quite a different approach is taken when an integrated operating environment is provided. In this approach, individual programs can share information and often appear on the screen at the same time, each in its own window. Applications can be chosen and combined in contrast to multiple-function programs that are limited to applications programmed into the package. 
     As part of a research effort at the IBM Cambridge Scientific Center in Cambridge, Mass., to develop software techniques in the field of office systems, Sheldon Borkin and John Prager developed the personal on-line integrated text editor (POLITE). This is an easy-to-use, real-time editor and formatter for compound documents. A compound document is one containing images, draw graphics, charts, handwriting, text, tables and mathematical symbols. The philosophy of Polite is the idea that an editor should be able to handle integration of functions in-line without having to invoke separate applications and without using a cut and paste buffer. The Apple Lisa and Macintosh and the Xerox Star computers are all integrated systems offering the capability to edit compound documents, but the method commonly used in those computers is to place the result of the requested function in a cut buffer and then to return to the document editor to paste the result in the desired location. This is a time-consuming and tedious process. 
     Although Polite provides function integration from within a single application, the editing environment is controlled by explicit user actions. The user must display the menu that applies to an object before an applicable action can be selected, or must type the action on the command line after selecting the object. 
     The inventions disclosed in the above-referenced co-pending patent applications Ser. No. 06/645,622 filed by Barbara A. Barker and Rex A. McCaskill and Ser. No. 06/645,630 filed by Barbara A. Barker, Irene H. Hernandez and Rex A. McCaskill are directed to improvements in an application composite editor which is based on the Polite system. Like Polite, the application composite editor is an easy-to-use, real-time editor formatter for compound documents containing not only text but also, images, graphics, tables, annotations and handwriting. The application composite editor provides integration of all data on a single page in relation to each other in dynamic editable form. All data types can be created within the same document, and text can flow around graphics and tables. All data in the editor resides on pages and all pages reside within a composite document. The editor works with a page layout philosophy wherein data objects reside on the page and data resides in the data objects. All pages reside within a document object, and some data objects may have additional objects within them. Objects are data-specific entities that the user can manipulate on the page. The objects that are within other objects reside within a defined object set boundary. All objects are explicit; i.e., they are recognizable, chooseable entities. All objects exist within a specified boundary on the page. This boundary is defined as an object set boundary. For example, a text character exists within the boundary of either a line object set or a paragraph object set; a rectangle exists within the boundary of a graphic object set; and a cell exists within the boundaries of a table object set. 
     A major difference between this invention and the Polite editor is that the editing environment is controlled by the editor and not the user. The editor determines what commands to display based on the object type selected and/or the current location of the cursor used to select objects and actions. The user does not explicitly request that commands be displayed. The editor manages each document page as an area occupied by object sets that can contain text, graphic, image or tabular data, and that can have a relationship with any of the other object sets on the page, on another page in the document or external to the document. 
     SUMMARY OF THE INVENTION 
     It is an object of the present invention to provide a mixed object editor that executes actions on objects and attributes based on internal knowledge of the object type and environment rather than by explicit user commands. 
     It is another object of this invention to provide a simple user interface that makes manipulation of objects and attributes and command execution transparent to the user. 
     It is a further object of the invention to provide a method of editing all objects in-line on the page and not in separate windows or via an input line. 
     It is yet another object of the invention to provide a generic method of editing mixed objects within a document that does not require a separate application load or specifying an explicit command. 
     According to the invention, the application composite editor described above consists of a controller that handles dialog with the user and multiple data/action specific subroutines through which the controller directs the manipulation of objects and routes the execution of commands. The controller monitors user input, displays all menus and messages, and handles all generic functions such as document formatting, object positioning, simple text editing, move, copy, delete, search/replace, go to, get, create, and display of status, scale and command lines. The method of editing objects is the same no matter what type of object is selected. The user selects the object and then specifies an action to be applied to the object. For example, text is inserted in a paragraph by selecting the paragraph object and then keying in text starting at the cursor location. Headers and footers are updated in a like manner; i.e., the header or footer object is selected and changes are indicated starting at the cursor location. Changes do not need to be specified in a separate edit window as required by many word processors, nor on the command line as required by Polite. 
     The editor provides a menu containing a generic set of commands that are valid for any object type. These commands include get, undo/redo, create, describe, search, go to, delete, move and copy. Whenever an object is selected, the editor displays object specific commands in addition to the generic commands being displayed. For example, if a graphic object is selected, rotate, shape and smooth are displayed concurrently with the generic commands. But, if a table object is selected, rotate, shape and smooth are replaced by clear, view and sort. Selection of the object is the trigger that makes the editor automatically change the set of commands that are to be displayed. The user does not have to explicitly tell the editor to change from one set to the next. 
     The controller uses the specified object and action to determine what processing is necessary and calls the appropriate subroutine automatically on an as needed basis. This operation is completely transparent to the user. Because of this design, the user never has to worry about different object types and the processes required for the merging of data on a page. Tables can be next to graphics and graphics next to text with no diminishing of flexibility. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     The invention will be better understood from the following detailed description of a preferred embodiment of the invention with reference to the drawings, in which: 
     FIG. 1 illustrates a sample page from a mixed object document; 
     FIGS. 2A to 2E illustrate the generic commands valid for each edit object, and the commands valid for each specific object type; and 
     FIG. 3 is a flow chart showing the operation of the invention. 
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENT 
     For a more detailed understanding of the invention, reference is first made to FIG. 1 of the drawings. In this figure, there is shown a document page 2 which it is assumed is being displayed in an edit window 1 on an all points addressable (APA) or bit mapped display device controlled by a stand alone or host connected computer work station. A user request to edit the document containing page 2 causes the page to be presented in edit window 1. Indicated on page 2 are a paragraph 3 and a line 4, examples of text objects, a rectangle 5 and free hand drawing 6, examples of draw graphic objects, a pie chart 7, an example of a business graphics object, and a spreadsheet 8, an example of a table object. Command bar 9 shows the generic commands valid for any object on page 2. At this point, the user can select any command on command bar 9 or any object on page 2 including icon 10 which represents the page 2 object. 
     FIGS. 2A, 2B, 2C, 2D, and 2E show the commands valid for each of the object types supported by the editor. Command bar 11 in FIG. 2A contains the commands common to all document objects. Command bar 12 in FIG. 2B contains the generic commands plus the text object specific commands MERGE, SPLIT and CONVERT. The draw graphic object specific commands ROTATE, SHAPE and SMOOTH are shown with the generic commands in command bar 13 in FIG. 2C. ROTATE, SHAPE and CONVERT, the business graphic object specific commands, have been added to the generic commands in command bar 14 in FIG. 2D, and command bar 15 in FIG. 2E contains the table object specific commands CLEAR, VIEW and SORT. The system automatically displays one of the object specific command bars whenever the object type is selected for editing. For example, selection of rectangle 5 in FIG. 1 will cause the system to display command bar 13, and selection of paragraph 3 or line 4 will cause command bar 12 to be displayed. The system always knows the type of the selected object and the commands that must be displayed for editing the object. 
     Reference is next made to the flow chart shown in FIG. 3 which illustrates the process of editing a mixed object document. First, the operator indicates that a document is to be edited. The system then displays the commands valid for editing the document and the first page of the document, if the document already exists, or a blank page, if the document is to be created. At this point, the operator can position the pointer at any location within the edit window, and select either a command or an object. This action is depicted in blocks 21 and 22. If an object has been selected, the flow of control is through block 23 to block 24; if the selection is an edit command, control passes to block 31. In block 24, the system checks to see if an edit action had been selected prior to selecting an object. If an action has been selected, the system processes the action in block 27. After processing the edit action, the system checks in block 28 to see if the document page needs to be reformatted. Reformatting of the page and layout of the objects on the page occurs in block 30. In block 29, the document is redisplayed in the edit window, and control returns to block 22. 
     At block 24, if an edit action has not been selected, control passes to block 25 where the system checks to see if the commands being displayed are valid for the object selected. If the commands are not valid, the system automatically displays the command bar that contains the actions specific to the selected object. After displaying the valid command bar, control returns to block 22. 
     If an edit action has been selected, the system checks in block 31 to see if the action is to terminate document editing. If the action is not a terminating action, control flows to block 32. At block 32, the system checks to see if an object had been selected prior to selecting the action. If an object has been selected, the system processes the action in block 27, tests for reformatting in block 28, reformats in block 30 and rediplays the document in block 29. Next, control returns to block 22. If an object has not been selected, control also returns to block 22 to wait for the operator to make a selection. 
     Set out below is an illustration of an application program useable by a processor in the workstation or host implementing an intelligent dynamic editor and formatter of a document containing mixed data types. This program is in program design language (PDL) from which source and machine code are derivable. In the following, it is to be assumed that the operator has initiated an action requiring the system to provide a document editing environment that includes a set of editing objects with distinctive properties and a set of actions that can be applied to the objects and properties. 
     
         ______________________________________(*Document has been displayed according to theinitial edit state defined by the operator.*)REPEAT CALL GET --PTR --POS(I --LOC, I --SEL) IF AN EDlT OBJECT HAS BEEN SELECTED  THEN IF AN EDIT ACTION HAS PREVIOUSLY BEEN   SELECTED  THEN CALL EXECUTECMD(CMD --TYPE, OBJ --TYPE)   IF REFORMATTING OF PAGE REQUIRED    THEN CALL FORMAT --PAGE   ENDIF   CALL REDISPLAY  ELSE CALL CHECK --CMDS(OBJ --TYPE, CMDS --OKAY)   IF NOT CMDS --OKAY    THEN CALL DISPLAY --CMDS(OBJ --TYPE)   ENDIF  ENDIF ELSE (*EDIT ACTION SELECTED*)  IF EDIT ACTION &lt;&gt; TERMINATE   THEN IF AN EDIT OBJECT HAS PREVIOUSLY   BEENSELECTED    THEN CALL EXECUTECMD(CMD --TYPE,    OBJ --TYPE)IF REFORMATTING OF PAGE REQUIRED THEN CALL FORMAT --PAGEENDIFCALL REDISPLAY   ENDIF ENDIFENDIFUNTIL CMD --TYPE = TERMINATE______________________________________ 
    
     After the operator indicates that an editing session is to begin, the document to be edited is displayed according to the initial edit state conditions. The first page of the document is positioned within an edit window on the display screen. A menu consisting of generic commands such as create, delete, move, copy and the like is also shown. At this point, the operator can select any object in the document such as a page header or footer, a text paragraph, or a graphic picture or any command. 
     Next, the system begins to monitor operator input. A routine is called to get the position of the pointer and to determine if an object or a command has been selected (CALL GET --  PTR --  POS(I --  LOC, I --  SEL)). The parameter I --  LOC gives the x,y position of the pointing device, and the parameter I --  SEL specifies if an object or a command has been selected. The editor correlates a cursor location to an area within the window which in turn can be correlated to an edit object. The system treats menu entries as objects unless the entry is a command. 
     If an object is selected and a command has previously been chosen, then a routine is called to process the action on the object (CALL EXECUTECMD(CMD --  TYPE, OBJ --  TYPE)). The command type (CMD --  TYPE) and the object type (OBJ --  TYPE) provide information to the routine that can be used to determine if additional object specific routines must be called to complete execution of the command. After processing of the command is finished, the editor determines if any document page needs to be reformatted and automatically calls the routine to format the page (CALL FORMAT --  PAGE). Next, a routine is called to update and redisplay the contents of the document window (CALL REDISPLAY). The FORMAT --  PAGE routine positions each object on the page according to the object type, the formatting properties and any existing relationships. If a command has not previously been selected, then a routine is called to verify that the commands being displayed are relevant to the object type (OBJ --  TYPE) selected (CALL CHECK --  CMDS(OBJ --  TYPE, CMDS --  OKAY)). The flag CMDS --  OKAY is used to determine if a routine needs to be called to determine the valid commands for the object type selected and to display the commands in the edit window (CALL DISPLAY --  CMDS(OBJ --  TYPE)). The system continues to monitor operator input until a command or another object is selected. 
     If a non-terminating command is selected and an object has previously been chosen, then the EXECUTECMD routine is called to process the action on the object. FORMAT --  PAGE and REDISPLAY are automatically called as needed. If an object has not already been selected, the system continues to monitor operator input until further processing is required. The edit session is concluded when a terminating command such as QUIT or END is selected. 
     While the invention has been described by way of example to a single preferred embodiment, those skilled in the art will understand that modifications can be made without departing from the spirit and scope of the invention.