Abstract:
The present invention provides a method and system for implementing a pointer-based clipboard. The clipboard system comprises a plurality of information or description files for storing information about files that are edited, in addition to files for storing information relating to changes made to a document and to locations of temporary files relating to the document. In addition, the system employs temporary storage which is preferably deleted upon session termination.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS  
       [0001]    This application claims the benefit of priority from U.S. Provisional Application 60/362,826 filed Mar. 8, 2002. 
     
    
     
       BACKGROUND OF THE INVENTION  
         [0002]    This invention pertains generally to resource management in a session-based embedded web server system, and more particularly to a method and system for implementing a pointer-based clipboard mechanism in a session-based embedded web server system.  
           [0003]    A clipboard is a temporary storage area that is used by users and application software to hold data that has been cut or copied from a document. When a user edits a document in an embedded server environment, data that is cut or copied is typically stored in a clipboard. The data stored in a clipboard is suitably pasted into another folder, document or location within the same document. However, embedded servers generally have limited memory and storage resources. Implementing a clipboard generally requires a large buffer storage space to store data and generally consumes significant processing time to transfer data to and from the clipboard. When document data is in raster image format, as when a controller of a digital imaging device (“DID”) functions as an embedded server, the storage requirement for implementing a clipboard is particularly large and the negative impact on server processing performance is even more severe than when document data is in non-raster image format. This is due to the fact that raster image files are large files that require significant storage space.  
           [0004]    Digital imaging devices (“DID”) are complex machines that often perform a plurality of functions. DIDs suitably include devices such as printers, fax machines, scanners, copiers, multi-functional peripherals (“MFPs”), and other like peripheral devices. DIDs are suitably connected to a network or directly to computer. In addition, DIDs are also suitably servers, with all the necessary hardware and software to ensure proper operation of the server as will be appreciated by one skilled in the art. A DID server is also suitably a server of any type, including a web server, an embedded server, a database server, etc. as will be appreciated by one skilled in the art.  
           [0005]    Because multiple users have access to an embedded server and because each user can run concurrent multiple sessions with the embedded server, such as a DID, a separate clipboard is suitably created for each user and for each session. The additional storage space and server time required to implement a plurality clipboards decreases the efficiency of the DID because the processing time and storage space required to implement the clipboards cannot be used for document processing and printing.  
           [0006]    There are a variety of methods known in the art for improving processor performance in servers, especially servers with multiple processors. For example, symmetric multi-processing (“SMP”) has become the de facto standard for multi-processor hardware architectures. Several highly popular operating systems (“OS”) incorporate support for SMP. The basic abstraction of an SMP system is a Multi-Threaded Environment (“MTE”), which is provided by the OS without regard to the actual number of processors running. Therefore, when software is written to make use of a MTE, one can achieve a performance improvement whether or not the SMP hardware platform contains multiple processors.  
           [0007]    However, even though improved processor performance can be achieved through the use of SMP, it is always preferable to decrease required resources, both in processing and storage. Therefore, it would be preferable if there were an improved method of providing a clipboard that utilizes fewer resources.  
         SUMMARY OF THE INVENTION  
         [0008]    In accordance with the present invention, there is provided a method and system for maintaining a clipboard buffer that utilizes fewer resources.  
           [0009]    Further, in accordance with the present invention, there is provided a method for implementing a clipboard buffer for editing a document. The method comprises the steps of: storing of data representative of an editable, electronic document in a storage area; communicating data for generating a display of the electronic document to an associated display device; receiving document selection data representative of a selected portion of the electronic document; storing pointer information associated with the selected portion in a pointer memory; and selectively performing an edit operation to at least one electronic document with the selected portion which selected portion is accessed in accordance with the pointer information.  
           [0010]    Still further, in accordance with the present invention, there is provided a system for implementing a clipboard buffer for editing a document. The system comprises: storage means adapted for storage of data representative of an editable, electronic document; display out means adapted for communicating data for generating a display of the electronic document to an associated display device; data input means adapted to receive document selection data representative of a selected portion of the electronic document; a pointer memory adapted for storing pointer information associated with the selected portion; and data editor means adapted for selectively performing an edit operation to at least one electronic document with the selected portion which selected portion is accessed in accordance with the pointer information.  
           [0011]    These and other aspects of the invention will be understood by one of ordinary skill in the art upon reading the specification. 
       
    
    
     DESCRIPTION OF THE FIGURES  
       [0012]    [0012]FIG. 1 is a flow chart representing the general procedure for copying data to a clipboard according to the present invention;  
         [0013]    [0013]FIG. 2 is a flow chart representing the general procedure for pasting data from a clipboard according to the present invention; and  
         [0014]    [0014]FIG. 3 is a system diagram illustrating a server in a network environment in accordance with the present invention. 
     
    
     DETAILED DESCRIPTION OF THE INVENTION  
       [0015]    Turning now to FIG. 1, a flowchart is provided representing the general process for maintaining a clipboard for pages of a document according to the present invention. The general flow commences at start block  102  and continues to process block  104 . At process block  104 , a session is initiated, preferably by a user. Progression then flows to process block  106  wherein the server creates a temporary directory for storage of clipboard information. Preferably, the temporary directory is session-based storage such that when the session ends, the directory and its contents are deleted. Flow continues to process block  108  wherein a document is opened for editing. Progression then flows to process block  110  wherein information from at least one page of the opened document is selected and a copy or cut command is executed. In other words, a command is executed that is functional to send to a clipboard information pointing to selected data. Flow progresses to process block  112  where a clipboard information file is created, after which flow proceeds to process block  114  wherein information about the selected data is copied to the temporary directory. Preferably, the information comprises at least the following: a document information file, at least one page information file, and a clipboard information file. Flow then continues to termination block  116 .  
         [0016]    Turning now to FIG. 2, a flowchart is provided representing the general procedure for pasting clipboard information into a document according to the present invention. The general flow commences at start block  202 , from which progression is made to process block  204 , wherein a destination document is opened. Progression then flows to process block  206  wherein a point of insertion is selected for pasting selected data. Flow then continues to process block  208  wherein a paste command is executed, after which progression flows to process block  210  wherein the information about the selected data is examined. Preferably, such information includes information about at least one page of a document wherein the at least one page contains at least a portion of the selected data. Flow then continues to process block  212  wherein copied data is pasted, after which flow progresses to termination block  214 .  
         [0017]    Turning now to FIG. 3, a system diagram illustrating a server in a network environment in accordance with the present invention is provided. The network  300  is illustrative of a LAN or WAN environment in which a preferred embodiment is provided. Connected to a network  300  are a computer  302  and a server  308 . The network  300  is suitably any network and is suitably comprised of physical and transport layers such as illustrated by a myriad of conventional data transport mechanisms such Ethernet, Token-Ring™, 802.11(b), or other wire-based or wireless data communication mechanisms as will be apparent to one of ordinary skill in the art. The server  308  is in data communication with a data transport system  310  through a network interface  312 . The data transport system  300  is also placed in data communication with the computer  302  through a network interface  306 . Thus, a data path between the server  308  is in shared data communication with computer  302 .  
         [0018]    The computer  302  is suitably any type of computer, but is preferably a PC running an on a Windows, Unix, Macintosh, or Linux based operating system. The computer is suitably a thin client or a thick client, additional server, PDA, or any equipment capable of interacting with Server  308 . The computer  302  is preferably equipped with a browser  304  software program and a network interface  306 .  
         [0019]    The server  308  is suitably any device that is capable of providing selective data access, data archiving, shared access to files, and the like, as will be appreciated to one of ordinary skill in the art. As such, the server  308  suitably runs on any operating system as will be appreciated by those skilled in the art. Preferably, the server  308  is a network DID, such as a MFP, or an DID connected to a computer  302 . The server  308  suitably comprises a network interface  312 , and a controller  314 . The controller  314  suitably comprises file storage  316  and temporary storage  318  which are suitably at least one hard disk and random access memory (“RAM”). The file storage  316  preferably comprises at least one document  326  and at least one image (page) file  328 . In addition, the file storage preferably comprises at least one information file  330 . The information files  330  suitably comprise both document information files and page information files. The controller  314  preferably acts as a fully functional server with the necessary hardware and software to ensure proper operation of the server as will be appreciated by one skilled in the art. In the presently preferred embodiment, the computer  302  and server  308  form an embedded web server system.  
         [0020]    In the presently preferred embodiment, a user begins a session. Each session is suitably a lasting connection between a computer  302  and the server  308 , usually involving the exchange of many packets between the computer  302  and the server  308 . A session is typically implemented as a layer in a network protocol (e.g. telnet, FTP). The user preferably has a user ID, which is unique to each user, for identification and authentication. In addition, each session preferably has a session ID, which is unique to each session. A user suitably initiates a session through network interface  306 , across data transport network  300 , through network interface  312  and to the controller  314 . When a session is started, the controller  314  preferably creates temporary storage  318 , which is preferably a temporary directory. The name of temporary directory  318  is preferably associated with at least one of the session ID and/or user ID.  
         [0021]    A user suitably opens a document  326  that is preferably stored in file storage  316  on the controller  314  or on storage external storage accessible by both the server  308  and the computer  302  via data transport system  300 . In the presently preferred embodiment, the document  326  is an image document or file comprising images and a plurality of pages. Preferably, each page of the document  326  is also stored in file storage  316  as an image file  328 .  
         [0022]    When a document  326  is opened, at least one information file  330  is suitably copied from file storage  316  to the temporary directory  318 . In the presently preferred embodiment, a document information file  324  comprising information about the opened document is copied to the temporary directory  318 . It should be noted that information file  324  is also suitably created, rather than copied, when a document  326  is opened. The information stored in document information file  324  suitably comprises property information such as document type, name, location of the corresponding document  326  in file storage  316 , file format, and the number of pages in document  326 . In the presently preferred embodiment, the information files  330  are markup language based documents, and are preferably extensible markup language (“XML”) files, but any suitable file format is contemplated for information storage, such as text files, flat files, database files, etc. as will be appreciated by one who is skilled in the art. The format of the document information file  324  of the presently preferred embodiment is illustrated below:  
                                                       &lt;?xml version=‘1.0’ encoding=‘UTF-8’?&gt;       &lt;!--DOCTYPE docinfo SYSTEM “docinfo.dtd”--&gt;       &lt;docinfo&gt;                &lt;doc&gt;                &lt;name&gt;dana.tac&lt;/name&gt;           &lt;path&gt;/pbfolder/public&lt;/path&gt;           &lt;format&gt;PNG&lt;/format&gt;           &lt;totalpage&gt;5&lt;/totalpage&gt;                      
 
         [0023]    In addition, at least one page information file  320  comprising information about an image file  328  representing a page of the document  326  containing at least a portion of the selected data is suitably copied to the temporary directory  318  when a “copy” or “cut”, or other suitable clipboard command is executed. Again, it should be noted that page information file  320  is also suitably created, rather than copied, when the copy of document  326  is stored in the temporary directory. The information stored in page information file  320  suitably comprises property information such as the page number, file format, filename, and file location. Preferably, a page information file  320  exists for each page of the document  326 . Therefore, for a five-page document  326 , there will preferably be five image files  328  and five page information files  330  stored in file storage  316 . In the presently preferred embodiment, the page information file  320  is also an “XML” document. The format of the page information file  320  of the presently preferred embodiment is illustrated below:  
                                                       &lt;?xml version=‘1.0’ encoding=‘UTF-8’?&gt;       &lt;!--DOCTYPE docinfo SYSTEM “docinfo.dtd”--&gt;       &lt;pageinfo&gt;                &lt;page number=“2”&gt;                &lt;pageformat&gt;PNG&lt;/pageformat&gt;           &lt;filename&gt;dana_1.png&lt;/filename&gt;           &lt;path&gt;/pbfolder/public&lt;/path&gt;                      
 
         [0024]    Also, a clipboard information file  322  is preferably created or copied and stored in temporary storage  318  when selected data is “copied” or “cut”. The clipboard information file  322  preferably points to the locations of the files from which data was “copied” or “cut”. Preferably, the clipboard information file  322  is created when a copy command is executed. The clipboard information file  322  is preferably a text file, although other types of files for storing information are suitably used as will be appreciated by one who is skilled in the art. The format of the clipboard information file of the presently preferred embodiment is illustrated below:  
                                   /pbtemp/clipboard/ . . . /dana.xml page.                  
 
         [0025]    For example, if a user opens a document with a name of “dana.tac,” selects page 2 and page 3 of document from a browser, and executes a copy command, the controller  314  suitably performs the following functions: copy or create a page information file  320  for each of the image files  328  associated with pages 2 and 3, and create or edit the clipboard information file  322  to read:  
                                   /pbtemp/clipboard/ . . . /dana.xml2 page       /pbtemp/clipboard/ . . . /dana.xml3 page.                  
 
         [0026]    The controller  314  suitably accesses the page information files  320  “dana.xml2” and “dana.xml3”. In addition, the document information file  324  “dana.xml” is suitably copied to temporary storage  316  if it was not copied to temporary storage when the document file  326  “dana.tac” was opened. In this manner, when information is “copied,” files pointing to information, not actual copies of the information, are stored in temporary storage  318 . Because the files pointing to information are generally much smaller than the files storing information, the “copy” process is faster and utilizes fewer resources.  
         [0027]    After copying information from a file, such as pages 2 and 3 in the previous example, a user suitably pastes the information into a document, folder or the like. In order to paste the copied information into a document (“the paste document”), a user suitably opens the paste document, selects an insertion point, and executes a “paste” command. For example, if a user wishes to insert the selected data after page 5, the user would open the paste document  326  for pasting copied data and select an insertion point after page 5. The controller  314  then suitably examines the clipboard information file  322  to determine the type of information that was “copied” and the document information file or files  324  corresponding to the file containing at least a portion of the selected data. For example, the type of information is suitably a page of a document. In addition, the controller  314  preferably examines the document information file  324  corresponding to the paste document to determine the number of pages in the paste document. The page information files  320  “dana.xml2” and “dana.xml3” in temporary directory  318  are then preferably used to generate new page information files  320  “dana.xml6” and “dana.xml7,” respectively. Examples of the two new page information files  320  are shown below:  
                                                                                                     dana.xml6                &lt;?xml version=‘1.0’ encoding=‘UTF-8’?&gt;           &lt;!--DOCTYPE docinfo SYSTEM “docinfo.dtd”--&gt;           &lt;pageinfo&gt;                &lt;page number=“6”&gt;                &lt;page format&gt;PNG&lt;/pageformat&gt;           &lt;filename&gt;dana_6.png&lt;/filename&gt;           &lt;path&gt;/pbfolder/public&lt;/path&gt;            dana.xml7       &lt;?xml version=‘1.0’ encoding=‘UTF-8’?&gt;                &lt;!--DOCTYPE docinfo SYSTEM “docinfo.dtd”--&gt;           &lt;pageinfo&gt;                &lt;page number=“7”&gt;                &lt;pageformat&gt;PNG&lt;/pageformat&gt;           &lt;filename&gt;dana_7.png&lt;/filename&gt;           &lt;path&gt;/pbfolder/public&lt;/path&gt;                      
 
         [0028]    Furthermore, image files  328  “dana — 2.png” and “dana — 3.png,” which are associated with page information files  320  “dana.xml2” and “dana.xml3,” respectively, are duplicated as “dana 6.png” and “dana — 7.png,” respectively. Any image files  328  that represented pages greater than 5 in document  326  prior to pasting the new data are also suitably renamed to correspond with their new page number. In this case, image file  328  “dana — 6.png” prior to the execution of the paste command becomes “dana — 8.png” after the execution of the paste command. Likewise, the corresponding page information files  320  are suitably renamed and changed to point to the newly renamed image files  328 . It will be appreciated by those skilled in the art that if a “cut” command was executed in place of a “copy” command, the appropriate “cut” files (document  326 , document information files  330 , images files  328 , and page information files  330 ) are suitably removed from their original locations.  
         [0029]    In the situation where a user pastes the copied information into a folder, such as a folder in file storage  316 , rather than into an existing document, the process is simpler. First, a user selects a folder, such as through use of a browser, and executes a paste command. This operation suitably causes the controller  314  to generate a new document “dana.tac” in the selected folder (“paste folder”). In order to generate the new document, the controller  314  suitably examines the clipboard information file  322  to determine the type of information that was “copied”, such as a page of a document. The controller  314  then accesses the document information file  324  “dana.xml” to determine the name of the document or documents  326  containing at least a portion of the selected data. The system then generates a new document information file  324  which is suitably stored in the paste folder in file storage  316 . The new document information file  324  suitably reads as follows:  
                                                       &lt;?xml version=‘1.0’ encoding=‘UTF-8’?&gt;       &lt;!--DOCTYPE docinfo SYSTEM “docinfo.dtd”--&gt;       &lt;docinfo&gt;                &lt;doc&gt;                &lt;name&gt;dana.tac&lt;/name&gt;           &lt;path&gt;[paste folder]&lt;/path&gt;           &lt;format&gt;PNG&lt;/format&gt;           &lt;totalpage&gt;2&lt;/totalpage&gt;                      
 
         [0030]    The controller  314  also suitably accesses page information files  320  “dana.xml2” and “dana.xml3” and generates two new page information files  320  “dana.xmll” and “dana.xml2”, which are stored in the paste folder in file storage  316 . Again, the controller  314  suitably renames the page information files  320  such that they represent the correct page number of the newly created document. The format of the generated page information files is illustrated below:  
                                                                                                     dana.xml1       &lt;?xml version=‘1.0’ encoding=‘UTF-8’?&gt;                &lt;!--DOCTYPE docinfo SYSTEM “docinfo.dtd”--&gt;           &lt;pageinfo&gt;                &lt;page number=“1”&gt;                &lt;pageformat&gt;PNG&lt;/pageformat&gt;           &lt;filename&gt;dana_1.png&lt;/filename&gt;           &lt;path&gt;[paste folder]&lt;/path&gt;            dana.xml2       &lt;?xml version=‘1.0’ encoding=‘UTF-8’?&gt;                &lt;!--DOCTYPE docinfo SYSTEM “docinfo.dtd”--&gt;           &lt;pageinfo&gt;                &lt;page number=“2”&gt;                &lt;pageformat&gt;PNG&lt;/pageformat&gt;           &lt;filename&gt;dana_2.png&lt;/filename&gt;           &lt;path&gt;[paste folder]&lt;/path&gt;                                  
 
         [0031]    Furthermore, the server suitably gets the filenames of the image files from the page information files and generates “dana — 1.png” and “dana — 2.png” image files  328  in the paste folder in file storage  316 . Again, it will be understood by those skilled in the art that if a “cut” command was executed in place of a “copy” command, the appropriate “cut” files (document  326 , document information files  330 , images files  328 , and page information files  330 ) are removed from their original locations.  
         [0032]    Also in accordance with the present invention, a user is suitably able to select multiple document(s) and/or folder(s) for copying. For example, a user suitably selects a folder “/public/test” in addition to a document “/public/dana.tac” and then executes a copy command. For the purpose of this example, “dana.tac” is a 5 page document. The server suitably copies document information file  324  “dana.xml” and all page information files  320  “dana.xmll”, “dana.xml2”, “dana.xml3”, “dana.xml4”, and “dana.xml5” from the their original location to a temporary directory  318 . In addition, the server suitably generates a clipboard information file  322  in the same temporary directory. The controller does not copy the folder “/public/test” to the temporary directory  318 , but does list the folder in the clipboard information file  322 . Therefore, the controller  314  suitably generates a clipboard information file  322  in temporary storage  318  that reads as follows:  
                                   /public/test folder       /temp/dana.xml page                  
 
         [0033]    After copying a folder and a document, the same procedure as detailed above is used to paste the copied information, except that a copied folder cannot be pasted into a document. Therefore, if a reference to a folder exists in a the clipboard information file, it is simply ignored if a command is executed to paste copied information into a document. However, the copied page information is still pasted into the selected document at a selected insertion point using the procedure detailed above. While it will be appreciated by those skilled in the art that if a “cut” command was executed in place of a “copy” command, the appropriate “cut” files (document  326 , document information files  330 , images files  328 , and page information files  330 ) are suitably removed from their original locations, it will also be understood by those skilled in the art that if a user attempts to paste a folder into a document, the folder will not be removed from its original location. The controller  314  will preferably treat the selected folder as if it were never “cut” or “copied”.  
         [0034]    In order to paste the clipboard information to a folder, a user suitably selects a folder and then executes a “paste” command. For example, for a paste folder suitably located at “/public/test2”, the paste operation generates the folder “/public/test2/test” and the file “/public/test2/dana.tac”. In order to generate the new document, the controller  314  suitably examines the clipboard information file  322  in the temporary folder  318  to determine the information that was “copied”. From the clipboard information file  322 , the controller  314  finds the location of the “copied” folder, in this case “/public/test” and creates a duplicate of “/public/test” in the paste folder, which is “/public/test2”. In other words, the controller  314  creates a new folder “/public/test2/test”. In addition, the controller preferably creates a new document  326  following the procedure detailed above for pasting a document  326  into a folder. If the entire document is selected, all image files  328  and information files  330  are preferably copied to the paste folder. Again, the substitution of a “cut” command causes the cut files to be removed from their original locations.  
         [0035]    The temporary folder  318  and files discussed herein act as storage for files that point to clipboard information. When the user ends a session, the associated temporary folder(s)  318  and all files stored in the temporary folder(s) are preferably deleted. In other words, the controller  314  preferably removes the temporary storage  318  when a session is terminated.  
         [0036]    Although the preferred embodiment has been described in detail, it should be understood that various changes, substitutions, and alterations can be made therein without departing from the spirit and scope of the invention as defined by the appended claims. It will be appreciated that various changes in the details, materials and arrangements of parts, which have been herein described and illustrated in order to explain the nature of the invention, may be made by those skilled in the area within the principle and scope of the invention as will be expressed in the appended claims.