U.S. patent application number 13/434610 was filed with the patent office on 2012-07-26 for editing a fragmented document.
This patent application is currently assigned to INTERNATIONAL BUSINESS MACHINES CORPORATION. Invention is credited to Scott J. Clee, Katherine M. Shann, Daniel E. Would, Shanna Xu.
Application Number | 20120192049 13/434610 |
Document ID | / |
Family ID | 46200702 |
Filed Date | 2012-07-26 |
United States Patent
Application |
20120192049 |
Kind Code |
A1 |
Clee; Scott J. ; et
al. |
July 26, 2012 |
EDITING A FRAGMENTED DOCUMENT
Abstract
A user command selecting a whole or part of a discrete document
of the fragmented document is received at a computing device. The
fragmented document includes a group of discrete documents
connected by a set of links, each link being located within one
discrete document and connecting to another different discrete
document. An edit command to edit the selected whole or part of the
discrete document is received. Each other discrete document
connected to the selected whole or part of the discrete document is
accessed by a link within the selected whole or part of the
discrete document. The accessed discrete documents are edited
according to the edit command.
Inventors: |
Clee; Scott J.; (Surbiton,
GB) ; Shann; Katherine M.; (Walton-on-Thames, GB)
; Would; Daniel E.; (Eastleigh, GB) ; Xu;
Shanna; (Southampton, GB) |
Assignee: |
INTERNATIONAL BUSINESS MACHINES
CORPORATION
Armonk
NY
|
Family ID: |
46200702 |
Appl. No.: |
13/434610 |
Filed: |
March 29, 2012 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
13313515 |
Dec 7, 2011 |
|
|
|
13434610 |
|
|
|
|
Current U.S.
Class: |
715/208 |
Current CPC
Class: |
G06F 40/134 20200101;
G06F 40/131 20200101 |
Class at
Publication: |
715/208 |
International
Class: |
G06F 17/00 20060101
G06F017/00 |
Foreign Application Data
Date |
Code |
Application Number |
Dec 10, 2010 |
EP |
10194499.9 |
Claims
1. A method of editing a fragmented document, comprising:
receiving, at a computing device, a user command selecting a whole
or part of a discrete document of the fragmented document, where
the fragmented document comprises a plurality of discrete documents
connected by a plurality of links, each link being located within
one discrete document and connecting to another different discrete
document; receiving an edit command to edit the selected whole or
part of the discrete document; accessing each other discrete
document connected to the selected whole or part of the discrete
document by a link within the selected whole or part of the
discrete document; and editing the accessed discrete documents
according to the edit command.
2. The method according to claim 1, further comprising recursively
accessing additional discrete documents connected to the other
discrete documents by a link within the other discrete documents,
and editing the accessed additional discrete documents according to
the edit command.
3. The method according to claim 2, further comprising stopping the
recursive accessing and editing of further additional discrete
documents in response to satisfaction of a pre-defined
criterion.
4. The method according to claim 1, further comprising editing the
selected whole or part of the discrete document according to the
edit command.
5. The method according to claim 1, where the received user command
selecting the whole or part of the discrete document of the
fragmented document comprises a selection of one or more links in
the discrete document.
6. The method according to claim 1, where accessing each other
discrete document connected to the selected whole or part of the
discrete document by the link within the selected whole or part of
the discrete document and editing the accessed discrete documents
according to the edit command comprises: reading each accessed
discrete document as text into a buffer structure; recording
original location information of each accessed discrete document;
amending the text in the buffer structure according to the edit
command; and writing back the text from the buffer structure to the
accessed discrete documents using the recorded original location
information.
Description
RELATED APPLICATIONS
[0001] This application is a continuation of and claims priority to
and claims the benefit of U.S. patent application Ser. No.
13/313,515 titled "EDITING A FRAGMENTED DOCUMENT," which was filed
in the United States Patent and Trademark Office on Dec. 7, 2011,
and which is incorporated herein by reference in its entirety; and
this application also claims priority to and claims the benefit of
European Patent Application Serial No. EP10194499.9 titled "EDITING
A FRAGMENTED DOCUMENT," which was filed in the European Patent
Office on Dec. 10, 2010, and which is also incorporated herein by
reference in its entirety.
BACKGROUND
[0002] This invention relates to editing a fragmented document. In
one embodiment, the invention recursively updates information in
documents.
[0003] There are a large number of environments and formats that a
user may use to store a document. For instance, a document may be a
Microsoft.RTM. Word document stored in a user's desktop, or a
web-based document stored in a database that may be accessed and
updated through a website, such as a wiki. These examples show that
the document is stored and accessed as a single entity.
[0004] In the web-based (or other equivalent networked)
environment, what appears to be a single document may be composed
of many fragments. This fragmentation is not visible to the user,
only a single entity is perceived. However, although the document
is physically distributed around a network, the user perceives a
traditional document structure such as chapters, pages and
paragraphs.
BRIEF SUMMARY
[0005] A method of editing a fragmented document includes
receiving, at a computing device, a user command selecting a whole
or part of a discrete document of the fragmented document, where
the fragmented document includes a group of discrete documents
connected by a set of links, each link being located within one
discrete document and connecting to another different discrete
document; receiving an edit command to edit the selected whole or
part of the discrete document; accessing each other discrete
document connected to the selected whole or part of the discrete
document by a link within the selected whole or part of the
discrete document; and editing the accessed discrete documents
according to the edit command.
[0006] A system for editing a fragmented document includes a user
interface arranged to receive a user command selecting a whole or
part of a discrete document of the fragmented document, where the
fragmented document includes a group of discrete documents
connected by a set of links, each link being located within one
discrete document and connecting to another different discrete
document, and receive an edit command to edit the selected whole or
part of the discrete document; and a processor programmed to access
each other discrete document connected to the selected whole or
part of the discrete document by a link within the selected whole
or part of the discrete document, and edit the accessed discrete
documents according to the edit command.
[0007] A computer program product on a computer readable storage
medium for editing a fragmented document, including computer
readable program instructions that when executed by a computer
cause the computer to receive a user command selecting a whole or
part of a discrete document of the fragmented document, where the
fragmented document includes a group of discrete documents
connected by a set of links, each link being located within one
discrete document and connecting to another different discrete
document; receive an edit command to edit the selected whole or
part of the discrete document; access each other discrete document
connected to the selected whole or part of the discrete document by
a link within the selected whole or part of the discrete document;
and edit the accessed discrete documents according to the edit
command.
BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS
[0008] Embodiments of the present invention will now be described,
by way of example only, with reference to the accompanying
drawings, in which:
[0009] FIG. 1 is a schematic diagram of an example of an
implementation of a fragmented document according to an embodiment
of the present subject matter;
[0010] FIG. 2 is a schematic diagram of an example of an
implementation of a different type of fragmented document that
operates to provide editing of fragmented documents according to an
embodiment of the present subject matter;
[0011] FIG. 3a and FIG. 3b are schematic diagrams of an example of
an implementation of a further fragmented document, before and
after editing, respectively, according to an embodiment of the
present subject matter;
[0012] FIG. 4 is a schematic diagram of an example of an
implementation of a yet further fragmented document, showing links
within the document according to an embodiment of the present
subject matter;
[0013] FIG. 5 is a schematic diagram of an example of an
implementation of a computing system for editing fragmented
documents according to an embodiment of the present subject matter;
and
[0014] FIG. 6 is a flowchart of an example of an implementation of
a method/process of editing a fragmented document according to an
embodiment of the present subject matter.
DETAILED DESCRIPTION
[0015] FIG. 1 shows an example of an implementation of a fragmented
document 10 that includes a plurality of discrete documents 12. The
discrete documents 12 are connected by one or more links. Each link
is located in one discrete document 12 and connects to a different
discrete document 12. A discrete document 12 may have more than one
link, and multiple links in different discrete documents 12 may
link to the same destination discrete document 12. Hypertext is a
technology that may be used to embody the fragmented document 10
shown in FIG. 1. This technology allows text displayed on a
computer screen to have links to other text that the reader may
immediately access.
[0016] The fragmented document 10 shown in FIG. 1 is a "wiki." A
wiki is a website that allows the creation and editing of any
number of interlinked documents via a suitable browser using a
markup language or a text editor. Wikis are typically powered by
specific software and are often used to create collaborative wiki
websites, for example community websites, in corporate intranets,
and in knowledge management systems. Any user may access the pages
of the wiki and may amend the pages, and may add new pages or
delete existing pages. Any text within a discrete document 12 may
be used as the basis for a hyperlink to another discrete document
12.
[0017] In the example of FIG. 1, the wiki is a repository of
recipes, which have been organized into a hierarchical structure.
The first page is a generic "Recipes" page, which may additionally
carry information about the content of the wiki and the rules
relating to the editing of the wiki. A second page includes a list
of meal types "English," "Chinese," "Italian," and so on, and a
user may navigate through these links to further pages with
different headings, eventually navigating to specific recipes that
have been created by users. This overall fragmented document 10
includes multiple individual discrete documents 12. A user may
navigate back and forth between the discrete documents 12 using the
links in the discrete documents 12.
[0018] The present subject matter allows an edit command, such as a
find/replace function, to apply to linked content, thereby allowing
the action of updating, for instance, an entire chapter, by merely
selecting the chapter header. This allows convenient updating of
information in one operation that is otherwise spread out, without
the need to traverse backwards and forwards through a fragmented
document. The present subject matter enables a user to, for
example, find and/or replace partial and/or entire document
content, from links, tags, and titles that lead to the content,
without navigating through the links, tags, and titles.
[0019] For example, a user desires to update a butter brand
referenced by the "Puddings" page as described above with reference
to FIG. 1. By selecting the tag "Puddings" and using an edit
command requesting a content find/replace, the present subject
matter allows the user to update the entire contents of the section
"Recipes" where the butter of brand is mentioned.
[0020] Additionally the user is able to select multiple
discontinuous headers. For example, the user may select "English"
and "Italian" links and the content find/replace function updates
the contents of these two sections only. This provides significant
productivity gain and accuracy, particularly when attempting to
update similar information in existing discrete documents. For
example, it may be that both "English" and "Chinese" pages are
written by James, but the "Italian" page is written by John. The
present subject matter enables a user to find/replace the author
field for "English"/"Chinese" and "Italian" separately.
[0021] The process may also be applied to code, such as through the
code outline view in an Eclipse.TM. integrated development
environment (IDE). A user may select one or more methods in the
outline view, and provide an edit command to act on each of these
selected methods. For example, in a program in which many methods
reference the variable "user," it may be decided to differentiate
those working on a generic user object, versus those working on an
active user. In this case, the programmer may select all methods
that are related to manipulating the active user and supply the
edit command to replace "user" with "activeUser." Making the change
in just the applicable subset aids in the differentiating of the
different kind of methods.
[0022] The present subject matter also provides a mode of operation
for content update, particularly in documents containing sub-links.
This mode of operation may be used to provide the user with a
method of choosing how to process those sub-links, by either
ignoring them, finding the sub-content and embedding it in place at
the point it is linked, or pulling the content to be added as an
appendix referenced from its link point.
[0023] By these means, the find/replace function provided by the
present subject matter solves an identified fragmented document
problem in an innovative fashion. The novel techniques reduce or
eliminate requirements for a user to understand the fragmented
nature of a document.
[0024] The present subject matter further includes recursively
accessing additional discrete documents connected to the other
discrete documents by a link within the other discrete documents,
and editing the accessed additional discrete documents according to
the edit command. The edit command that a user provides may be
recursively applied to any document that is linked from any
sub-document to which the edit command is applied and so on in a
repeating process. This ensures that the required change populates
throughout the fragmented document that the user is editing.
[0025] The present subject matter further includes stopping the
recursive accessing and editing of further additional discrete
documents in response to satisfaction of a predefined criterion. A
"maxdepth," as described below for recursion control, represents
such a predefined criterion. Since it is possible that a discrete
document within the fragmented document may have links to other
documents external to the fragmented document, it is advisable that
a limit be placed on the recursive nature of the application of the
edit command. Otherwise it is conceivable that the recursion may be
unlimited. A limit would be to only have a set number of rounds of
recursion, such as five for example, which may be represented using
a maxdepth variable. This would mean that once the process of
applying the edit command to sub-documents has reached the fifth
level of linked documents away from the original source, then the
process is automatically stopped.
[0026] The received user command of selecting a whole or part of a
discrete document of the fragmented document may include a
selection of one or more links in the discrete document. As
detailed above, the selection of a document to be edited may
include the selection of a link to that document rather than the
actual document itself. This supports a streamlined interface and
also gives greater flexibility over the edit command, as the user
may select discontinuous links when making their selection of the
parts of the fragmented document that are to be edited.
[0027] The present subject matter also includes editing the
selected whole or part of the discrete document according to the
edit command. If the selection made by the user in the user command
is an entire document or a part of a document, rather than one or
more links, then it is possible to edit that selected portion first
before any recursion is applied to documents linked from the
selected portion. For example, the user may select a specific
paragraph for editing and then instruct/invoke the edit command.
This edit command is first applied to the selected paragraph and
then applied recursively to any other documents that are linked
from that paragraph.
[0028] It should be noted that conception of the present subject
matter resulted from recognition of certain limitations associated
with editing fragmented documents. For example, it was recognized
that to update information contained within a large fragmented
document, a user often needs to navigate in the document to one or
multiple sections/titles/chapters. The most common situation, in
the current operational environment, is for a document to be
fragmented via hypertext transfer protocol (HTTP) and hypertext
markup language (HTML) web-based facilities, for example a wiki
document. It was further recognized that consequently, in a wiki
environment or in a database system, a hyperlink may link to
several hyperlinks or document links. For example, as shown in FIG.
1, to update the author in all relevant documents that are linked
to by a top-level hyperlink "Recipes," a user needs to first update
the "Recipes" page and additionally navigate to further pages. The
user then right-clicks on "English," "Chinese," and "Italian" in
order to update these linked pages. However, in order to update the
content of "Sunday Roast," a user needs to navigate to a new page.
The page "Sunday Roast" may further lead to a large range of
roasting recipes. As such, it was recognized that, in order to
update the "Roast" page, for example, a user needs to navigate to
yet another page.
[0029] It was additionally recognized that other editing issues
with such fragmented documents may arise. For example, a user may
be editing the page "Sunday Roast" when they realize that the
butter brand quoted in the recipe no longer exists. Furthermore,
the brand may be referenced in all documents anchored from the
top-level "Recipes" page. To remove the brand name, the user needs
to first update the page "Sunday Roast" and then modify "Puddings"
on the same page. The user then needs to find out which other pages
list butter as an ingredient and update accordingly.
[0030] It was recognized that this makes the task time consuming
and error prone. It was also recognized that, in the case of data
organized on a wiki page, jumping forwards and backwards between
page links in order to update all of the information may be
tedious. In other words, the fragmented nature of what appears to
be a single entity is exposed to the user. Further, the user has to
be aware of the nature of the fragmentation (how and by what means)
in order to employ the correct method to update the fragmented
document. It was recognized that this is impractical for several
reasons, such as that a user cannot be expected to know which other
documents also require an update.
[0031] It was also recognized that one existing solution for
recursively updating all the information from a web page is to use
some Java.TM. programming language classes to get and update all of
the sub-documents. However, it was observed that these Java.TM.
programming language based solutions will require programming
skills and knowledge of how the documents are organized. As such,
it was concluded that, in the extant paradigm of fragmented
documents, it is impossible for a non-expert user to update the
whole document in a quick and simple fashion. The present subject
matter improves editing of fragmented documents.
[0032] FIG. 2 shows an example of an implementation of a different
type of fragmented document 10 that operates to provide editing of
fragmented documents. The fragmented document 10 has an index 12
containing all the chapter headings, which is followed by the
chapters 12 and their content. By selecting one or more chapter
titles in the document index 12 and right clicking on the selected
area, a list of options will be shown to the user. The system
provides the option of a content find/replace edit function. Once
this option is selected, a user may fill in a string for find and a
string to replace. This updates the selected chapters in the
fragmented document 10 in one single action, without the need to
perform the same operation repeatedly on each chapter in turn.
[0033] For example, a user may select the "ingredients" chapter
title, which is a link to the specific "ingredients" page 12, and
right click. A list of options is shown to the user, and the user
may select an option to find/replace linked content. By doing so,
the "ingredients" page 12 is updated only. As a result of this
operation, the various discrete documents 12 are located and
retrieved, whether or not they are currently being seen by the
user. In this way a user may perform an editing of one or more
pages within a fragmented document regardless of where those pages
are stored and without having to access each of the pages that are
to be updated.
[0034] The "ingredients" page is shown as a single document 12, but
may also contain links to yet further discrete documents 12 within
the overall fragmented document 10. For example, individual
ingredients may be presented as hyperlinks that a user is able to
click on. The "mince pork" text on the ingredients page 12 may
actually be a hyperlink that a user may click to move to a page
detailing stock lists and alternatives for this ingredient. When
the user selects the chapter heading for "ingredients" in the first
page 12, then any edits that the user wishes to make will also be
recursively carried out on the pages that are linked from the
"ingredients" page.
[0035] The present subject matter provides technology that allows
both read and write on hierarchical, or fragmented and linked
documents. An editing method is provided that will allow a user to
make an edit throughout the fragmented document in a single
action.
[0036] FIGS. 3a and 3b show an example of an implementation of an
editing technique for fragmented documents. Within FIGS. 3a and 3b,
a deep copy traverses the fragmented document 10 hierarchy and
retrieves the content, (page D in FIG. 3a) that was selected from
the structure view (in page A), to the level of recursion defined
by the user. This content is stored in a modified buffer 14, or
clipboard that associates metadata describing the hierarchy and
source information with the content that is stored in the modified
buffer 14. Once the user-defined edit operation (or multiple
operations), for example a find and replace operation, has
completed, the content (now D version 2 (v2) in FIG. 3b) from the
modified buffer/clipboard 14 is replaced back into the hierarchical
document structure 10. Effectively all of the required content is
cut and pasted to the modified buffer 14, edited and then copied
back to the correct location.
[0037] It was additionally recognized that, in order to achieve the
editing function, a more complex model is required, in which the
original location and structure is preserved in memory and
navigated to perform the update before navigating again to re-write
the content to the original locations. Below is high level
pseudo-code to give an example of the operations carried out
according to the present subject matter:
TABLE-US-00001 get_selection(selectionList){ for each item in
selectionList: stream = item.getStream( ) buffer = stream.read( )
buffer.setOrigLocation(item.location) if curdepth < maxdepth: {
contentLinks = item.getContentLinks( ) curdepth++
newBuffer(get_selection(contentLinks))
buffer.addLinkedBuffer(newBuffer) curdepth -- return buffer }
PerformReplace(origstr,newstr,buffer) {
buffer.replace(origstr,newstr) linkedBuffers =
buffer.getLinkedBuffers( ) for each buffer in linkedBuffers:
PerformReplace(origstr,newstr,buffer) }
WriteBuffersBackToSouce(Buffer) { stream = buffer.getOrigLocation(
).open( ) stream.write(buffer) linkedBuffers =
buffer.getLinkedBuffers( ) for each buffer in linkedBuffers:
WriteBuffersBackToSource(buffer) } }
[0038] The above pseudo-code is in effect a method "get_selection"
for the variable "selectionList," this being the selection that the
user has made, such as a group of chapter headings or a chunk of
text containing links. The method then cycles through each "item"
in the received user selection list, where each item may be
considered to be each link in the user's selection. The next two
lines of the pseudo-code "stream= . . . " and "buffer= . . . "
define the accessing of the content defined by the current "item"
(link) and the writing of that content to a buffer.
[0039] The step in the method of
"buffer.setOrigLocation(item.location)" captures the location of
the content connected by an item (link). This location may be
considered to be a path to the content.
[0040] A test is then made in relation to two variables "curdepth"
and "maxdepth." The former may be considered to be the current
depth in terms of the recursive iteration of the links that have
been navigated. In the user's selection, navigating a link in that
selection moves the current depth to one (1). Navigating a further
link will set the current depth to two (2), and so on. The
"maxdepth" variable is the user's setting of the maximum level of
recursion (e.g., the predefined criterion) that is to be used in
the acquiring of the text. This variable may be set to one (1), in
which case the method will terminate straightaway. However, this is
more likely to be set at a value of five (5), for example.
[0041] If the current depth is less than the maximum depth, then
the next line of the method "contentLinks= . . . " acquires the
links within the current item. The current depth is then
incremented.
[0042] The next two new steps include a first new step "newBuffer .
. . " that creates a new buffer for the content acquired from the
link rather than appending it to an existing buffer. This is to
ensure that the existing structure of the data may be preserved.
The next new step "buffer.addLinkedBuffer . . . " adds this new
buffer to the existing structure of buffers. In effect a structure
of buffers is created that minors the original content, in relation
to the links in that content. The variable "maxdepth" again
represents a predefined criterion.
[0043] There are then added two additional routines to the method.
The first is a "PerformReplace . . . " function that takes an
existing string and a new string, and works through the buffer
structure created as per the paragraph above to perform a find and
replace function on the specific string. Each instance of that
string is found in all of the buffers that have been created
corresponding to the original content. Wherever the string is
found, it is replaced with the new string. Once each buffer has
been accessed in turn, then this routine will terminate.
[0044] The second additional routine is a "WriteBuffersBackToSource
. . . " function that writes back the now-amended (edited) text to
the correct original locations. Each buffer is accessed in turn,
and the content of that specific buffer is then written back to its
original source, using the location information (the path details)
that was acquired, as detailed above. In this way, the contents of
the buffers are read out and written into the locations from which
the text was originally taken to create a buffer. This results in
the amended/edited text over-writing the old text, all of which is
carried out in an automated fashion.
[0045] Each accessed document is read as text into the buffer
structure and the original location of each accessed document is
recorded. The text is amended in the buffer structure according to
the user's edit command and the text is written back from the
buffer structure to the accessed documents using the recorded
location information.
[0046] FIG. 4 shows an example of an implementation of a different
fragmented document 10, which comprises six individual discrete
documents 12. Although the fragmented document 10 is shown as a
unitary whole, the different discrete documents 12 may be stored in
different locations and only form part of the same overall
fragmented document 10 by virtue of the links 16 between the
different discrete documents 12. The discrete document "A" may be
considered the top-level discrete document 12 with links to three
second-level discrete documents 12, labelled "B1," "B2," and "B3."
There are two further third-level discrete documents 12, which are
labelled "C1" and "C2." Document "B1" has a link 16 to document
"C1" and document "B2" and a link 16 to document "C2."
[0047] The links 16 are hypertext links that a user may click on
when viewing the specific discrete document 12 to navigate through
to the next level of document, according to the specific link. The
hierarchy of discrete documents 12 is logical, there is no
difference between discrete documents 12 of the different "levels"
from a logical perspective. The example shown in FIG. 4 is an
example arrangement of discrete documents 12. In many real-world
examples of such fragmented documents 10, there may be many
hundreds of discrete documents 12 with a complicated
inter-connection of links 16, with links going in any direction
linking any discrete documents 12 together. Such structures of
fragmented documents 10 may exist in company intranets and
collaboration websites on the Internet.
[0048] If a user wishes to edit the fragmented document 10, then
the method described above is suited to saving the user time and
resources as they will be able to perform an editing function on
the top-level discrete document "A" and choose whether that edit
should be recursively applied to any other discrete document 12
that is linked from the top-level discrete document "A." The user
may perform the edit only on the discrete document "A" or choose to
have that edit applied to the linked documents, in this case the
second-level discrete documents "B1," "B2," and "B3." If the user
chooses to have the edit command recursively applied, then the
dependent discrete documents 12 are also edited in the same manner
as the main discrete document 12.
[0049] FIG. 5 is a diagram of an example of an implementation of a
computing system for editing fragmented documents as described
herein. The computing system comprises a processing device 18,
display device 20, and user interface devices 22a and 22b. The user
interface devices are a keyboard 22a and a mouse 22b. The computing
system shown in FIG. 5 may be implemented as a desktop computer,
and may be composed of discrete components that are locally
located, but may equally be a device such as a laptop computer or
suitably enabled handheld device such as a mobile phone. Similarly,
the computing system may comprise part of a networked or mainframe
computing system, in which case the processing device 18 may be
located remotely from the user input devices 22a and 22b, and from
the display device 20, or indeed may have its function distributed
among separate devices.
[0050] An application represented by the window 24 may be a web
browser for example. Within the present example, the user is
browsing a wiki, which is displayed as text in the window 24. Some
of the text will include hyperlinks, as described above. The
content of the wiki is stored remotely from the processing device
18, and as the user navigates content within the wiki, new pages
will be loaded by the processing device 18 from the remote location
and then displayed to the user via the application window 24. Each
time a user clicks on a link in the application window 24 with a
cursor 26, a new page of the overall fragmented document 10 (the
wiki) will be loaded for the user to continue browsing.
[0051] The user also has the option to right click, either on a
specific link 16 within the document being viewed, or just anywhere
within the text being displayed by the application window 24. The
action of right clicking on the mouse 22b will call up a menu 28
that may form a portion of a desktop OS implementation. The menu 28
will give the user various editing options that may be selected by
the user by performing further user interface actions via the
keyboard 22a or mouse 22b. The user may select an option within
this menu 28 that will provide the functionality to populate any
changes made via an edit command to the further discrete documents
that are referenced by the current page being displayed in the
application window 24.
[0052] FIG. 6 is a flow chart of an example of an implementation of
a method/process of editing the fragmented document 10. For
purposes of the present example, the fragmented document 10
includes a plurality of discrete documents connected by one or more
links, each link being located within one discrete document and
connecting to a different discrete document. The different discrete
documents that make up the overall fragmented document 10 may be
distributed at different locations and the individual discrete
documents are not normally loaded until the user requests to view a
specific discrete document, for example by navigating by a
hyperlink. The processing device 18 that is running the application
that the user is using to access the document manages the recall
and loading of the individual documents.
[0053] The method includes the steps of step S1, which includes
receiving a user command selecting a whole or part of a discrete
document of the fragmented document 10. The selection may be of an
entire document, part of a document, or one or more links within
the document. The user will indicate that they wish to edit part of
the overall fragmented document 10, for example, by performing a
right-click action in a graphical user interface where they are
viewing the document, as detailed above. This action may be with
respect to a specific discrete document as a text document of one
or more links to other specific discrete documents, where the links
have first been selected by the user.
[0054] The next step is step S2, which includes receiving an edit
command to edit the selected whole or part of the discrete
document. This edit command may be a find and replace function, for
example. The next step S2.5 is optional and includes the step of
editing the selected whole or part of the discrete document
according to the edit command. If the user selected one or more
links, then this step is omitted. However, if the user selected an
entire document or a portion of the document that includes text and
links, then the selected portion of text is itself edited according
to the user's edit command.
[0055] The method continues with step S3, which includes accessing
each other discrete document connected to the selected discrete
document by a link within the selected discrete document, and the
method continues at step S4, which includes editing the accessed
discrete documents according to the user command.
[0056] In this way, the edit command selected by the user populates
through to the next level in the document hierarchy, and this
process may continue recursively until complete, or may continue
recursively for a pre-determined number of levels. The user has the
advantage that only one edit command needs to be made and the user
does not have to go to the trouble of loading further linked
documents in order to edit those documents.
[0057] As will be appreciated by one skilled in the art, aspects of
the present invention may be embodied as a system, method or
computer program product. Accordingly, aspects of the present
invention may take the form of an entirely hardware embodiment, an
entirely software embodiment (including firmware, resident
software, micro-code, etc.) or an embodiment combining software and
hardware aspects that may all generally be referred to herein as a
"circuit," "module" or "system." Furthermore, aspects of the
present invention may take the form of a computer program product
embodied in one or more computer readable medium(s) having computer
readable program code embodied thereon.
[0058] Any combination of one or more computer readable medium(s)
may be utilized. The computer readable medium may be a computer
readable signal medium or a computer readable storage medium. A
computer readable storage medium may be, for example, but not
limited to, an electronic, magnetic, optical, electromagnetic,
infrared, or semiconductor system, apparatus, or device, or any
suitable combination of the foregoing. More specific examples (a
non-exhaustive list) of the computer readable storage medium would
include the following: an electrical connection having one or more
wires, a portable computer diskette, a hard disk, a random access
memory (RAM), a read-only memory (ROM), an erasable programmable
read-only memory (EPROM or Flash memory), a portable compact disc
read-only memory (CD-ROM), an optical storage device, a magnetic
storage device, or any suitable combination of the foregoing. In
the context of this document, a computer readable storage medium
may be any tangible medium that can contain, or store a program for
use by or in connection with an instruction execution system,
apparatus, or device.
[0059] A computer readable signal medium may include a propagated
data signal with computer readable program code embodied therein,
for example, in baseband or as part of a carrier wave. Such a
propagated signal may take any of a variety of forms, including,
but not limited to, electro-magnetic, optical, or any suitable
combination thereof. A computer readable signal medium may be any
computer readable medium that is not a computer readable storage
medium and that can communicate, propagate, or transport a program
for use by or in connection with an instruction execution system,
apparatus, or device.
[0060] Program code embodied on a computer readable medium may be
transmitted using any appropriate medium, including but not limited
to wireless, wireline, optical fiber cable, RF, etc., or any
suitable combination of the foregoing.
[0061] Computer program code for carrying out operations for
aspects of the present invention may be written in any combination
of one or more programming languages, including an object oriented
programming language such as JAVA.TM., Smalltalk, C++ or the like
and conventional procedural programming languages, such as the "C"
programming language or similar programming languages. The program
code may execute entirely on the user's computer, partly on the
user's computer, as a stand-alone software package, partly on the
user's computer and partly on a remote computer or entirely on the
remote computer or server. In the latter scenario, the remote
computer may be connected to the user's computer through any type
of network, including a local area network (LAN) or a wide area
network (WAN), or the connection may be made to an external
computer (for example, through the Internet using an Internet
Service Provider).
[0062] Aspects of the present invention have been described with
reference to flowchart illustrations and/or block diagrams of
methods, apparatus (systems) and computer program products
according to embodiments of the invention. It will be understood
that each block of the flowchart illustrations and/or block
diagrams, and combinations of blocks in the flowchart illustrations
and/or block diagrams, can be implemented by computer program
instructions. These computer program instructions may be provided
to a processor of a general purpose computer, special purpose
computer, or other programmable data processing apparatus to
produce a machine, such that the instructions, which execute via
the processor of the computer or other programmable data processing
apparatus, create means for implementing the functions/acts
specified in the flowchart and/or block diagram block or
blocks.
[0063] These computer program instructions may also be stored in a
computer-readable storage medium that can direct a computer or
other programmable data processing apparatus to function in a
particular manner, such that the instructions stored in the
computer-readable storage medium produce an article of manufacture
including instructions which implement the function/act specified
in the flowchart and/or block diagram block or blocks.
[0064] The computer program instructions may also be loaded onto a
computer, other programmable data processing apparatus, or other
devices to cause a series of operational steps to be performed on
the computer, other programmable apparatus or other devices to
produce a computer implemented process such that the instructions
which execute on the computer or other programmable apparatus
provide processes for implementing the functions/acts specified in
the flowchart and/or block diagram block or blocks.
[0065] The flowchart and block diagrams in the Figures illustrate
the architecture, functionality, and operation of possible
implementations of systems, methods and computer program products
according to various embodiments of the present invention. In this
regard, each block in the flowchart or block diagrams may represent
a module, segment, or portion of code, which comprises one or more
executable instructions for implementing the specified logical
function(s). It should also be noted that, in some alternative
implementations, the functions noted in the block may occur out of
the order noted in the figures. For example, two blocks shown in
succession may, in fact, be executed substantially concurrently, or
the blocks may sometimes be executed in the reverse order,
depending upon the functionality involved. It will also be noted
that each block of the block diagrams and/or flowchart
illustration, and combinations of blocks in the block diagrams
and/or flowchart illustration, can be implemented by special
purpose hardware-based systems that perform the specified functions
or acts, or combinations of special purpose hardware and computer
instructions.
[0066] A data processing system suitable for storing and/or
executing program code will include at least one processor coupled
directly or indirectly to memory elements through a system bus. The
memory elements can include local memory employed during actual
execution of the program code, bulk storage, and cache memories
which provide temporary storage of at least some program code in
order to reduce the number of times code must be retrieved from
bulk storage during execution.
[0067] Input/output or I/O devices (including but not limited to
keyboards, displays, pointing devices, etc.) can be coupled to the
system either directly or through intervening I/O controllers.
[0068] Network adapters may also be coupled to the system to enable
the data processing system to become coupled to other data
processing systems or remote printers or storage devices through
intervening private or public networks. Modems, cable modems and
Ethernet cards are just a few of the currently available types of
network adapters.
[0069] The terminology used herein is for the purpose of describing
particular embodiments only and is not intended to be limiting of
the invention. As used herein, the singular forms "a," "an" and
"the" are intended to include the plural forms as well, unless the
context clearly indicates otherwise. It will be further understood
that the terms "comprises" and/or "comprising," when used in this
specification, specify the presence of stated features, integers,
steps, operations, elements, and/or components, but do not preclude
the presence or addition of one or more other features, integers,
steps, operations, elements, components, and/or groups thereof.
[0070] The corresponding structures, materials, acts, and
equivalents of all means or step plus function elements in the
claims below are intended to include any structure, material, or
act for performing the function in combination with other claimed
elements as specifically claimed. The description of the present
invention has been presented for purposes of illustration and
description, but is not intended to be exhaustive or limited to the
invention in the form disclosed. Many modifications and variations
will be apparent to those of ordinary skill in the art without
departing from the scope and spirit of the invention. The
embodiment was chosen and described in order to best explain the
principles of the invention and the practical application, and to
enable others of ordinary skill in the art to understand the
invention for various embodiments with various modifications as are
suited to the particular use contemplated.
* * * * *