|
Claims  |
|
|
What is claimed is:
1. An information processing system comprising:
a microprocessor;
an interpreter, coupled with said microprocessor, for interpreting an
executable script language;
a memory, coupled with said microprocessor;
a document, stored within said memory, said document consisting of one or
more attributes, each said attribute consisting of a list, said list
consisting of a name and a value, where the value of one of said one or
more attributes is an executable script, and where said executable script
is interpreted by said interpreter, and said executable script is executed
on said microprocessor when said document is referenced by a user of said
information processing system;
said executable script including digitized speech information;
a display device;
a speech recognition engine, coupled with said first memory and said
display device, for translating said digitized speech information into
text and displaying said text onto said display device; and
said executable script including instructions which when interpreted by
said interpreter and executed on said microprocessor pass said digitized
speech information to said speech recognition engine.
2. An information processing system comprising:
a first user system;
a first memory, within said first user system;
a first microprocessor, within said first user system, and coupled with
said first memory;
a script interpreter, within said first user system, and coupled with said
first microprocessor;
a first client module, within said first user system, and coupled with said
first microprocessor and said first memory;
a local area network, coupled with said first client module;
a second user system;
a second memory within said second user system;
a second client module, within said second user system, and coupled with
said local area network and said second memory, for transmitting documents
from said second memory onto said local area network; and
a document, stored within said second memory, having a set of attributes,
each one of said set of attributes having a NAME and a VALUE, a value of a
first one of said one or more attributes being an executable script, said
document being transmitted from said first user system to said second user
system via said local area network, and said executable script being
interpreted by said interpreter and executed on said first microprocessor
when said document is received by said first user system, said executable
script containing instructions which create and send an acknowledgement
message to said second user system when said document is received by said
first user system.
3. An information processing system comprising:
a first user system;
a first memory, within said first user system; a first microprocessor,
within said first user system, and coupled with said first memory;
a script interpreter, within said first user system, and coupled with said
first microprocessor;
a first client module, within said first user system, and coupled with said
first microprocessor and said first memory;
a local area network, coupled with said first client module;
a second user system;
a second memory within said second user system;
a second client module, within said second user system, and coupled with
said local area network and said second memory, for transmitting documents
from said second memory onto said local area network;
a document, stored within said second memory, having a set of attributes,
each one of said set of attributes having a NAME and a VALUE, a value of a
first one of said one or more attributes being an executable script, said
document being transmitted from said first user system to said second user
system via said local area network, and said executable script being
interpreted by said interpreter and executed on said first microprocessor
when said document is received by said first user system;
said executable script containing digitized speech information;
a speech recognition engine, coupled with said first memory and said first
microprocessor, for converting said digitized speech information into text
and displaying said text on a display device; and
said executable script being interpreted by said interpreter and executed
on said first microprocessor when said document is received by said first
user system, said executable script containing instructions, which when
interpreted and executed, instruct said speech recognition engine to
convert said digitized speech information into text and to display said
text on said display device.
4. An active mail system, comprising:
a Local Area Network;
a first user system including a first microprocessor, a first memory, a
speech recognition engine, a digital to analog converter, a loudspeaker,
an interpreter process for interpreting an executable script, and a first
communications adapter coupled with said Local Area Network;
a second user system including a second microprocessor, a second memory,
and a second communications adapter coupled with said Local Area Network;
a document in said second memory, said document having an executable
attribute, said executable attribute having a name and a value, said value
of said executable attribute equal to executable script capable of being
interpreted by said interpreter process in said first user system;
transmitting means, in said second communications adapter, for transmitting
said document onto said Local Area Network;
receiving means, in said first communications adapter, for receiving said
document from said Local Area Network and copying said document into said
first memory; and
said interpreter process interpreting said executable attribute and
producing object code responsive to said interpreting of said executable
attribute in said document, said interpreter further executing said object
code on said first microprocessor, and said execution of said object code
causing said first communications adapter to transmit an acknowledgement
message onto said Local Area Network. |
|
|
|
|
Claims  |
|
|
Description  |
|
|
FIELD OF THE INVENTION
The invention relates generally to document display systems, and more
specifically to multiple file format interpretation or execution at run
time.
BACKGROUND
A document management system must be able both to store documents and to
take action to manipulate a document. Traditionally the features of the
system of storing a document and taking action to manipulate a document
are totally separate functions. Documents are stored in a format
compatible with the database program used in a repository. Actions are
accomplished by a process, typically written as part of the code
implementing the management system.
The division of functionality between document storage and functions
designed to accomplish actions leads to a requirement for signalling
between documents and functions, internal program complexity, and other
undesirable results.
SUMMARY
The invention is a system for processing information as documents, where
each document consists of attributes, each attribute having a name and a
value, and where some attributes are executable. The value of the
executable attribute is a script which is interpreted to perform a desired
action. A system interpreter interprets and executes script which is
submitted to it. In this way the action defined by the script within the
executable attribute is performed.
Each document is displayed by a document renderer function. Each document
further has a document renderer attribute. The value of the document
renderer attribute for each document indicates the specific document
renderer for that document. Each document may optionally contain a layout
attribute, having a value equal to a script used to control the document
renderer for that document. The script within the value of each layout
attribute is capable of being interpreted by a script engine within the
system.
Thus, when the interpreter receives script taken from the value of an
executable attribute, the script is interpreted by the interpreter, and
the action required by the script is performed through execution of the
object code output by the interpreter.
A document having an executable attribute is referred to as a "prodoc",
standing for a programmable document. The script that is the value of the
executable attribute within the prodoc may be supplied by the user, or as
a pre-packaged system function.
A first example of a prodoc is active mail. The sender creates an
executable attribute which is part of the mail message. When an addressee
receives active mail, the script of the executable attribute is executed.
For example, the script could automatically inform the sender that the
mail message was recieved and read. That is, the executable attribute is
triggered by the act of the user reading the message, and the script of
the executable attribute causes an acknowledge message indicating that the
message was read to be launched on the network and directed to the sender
of the first message.
A second example of an executable attribute is a voice mail message. When
the document renderer contains script which causes the value of the voice
message attribute to be played through the loud speaker of the user's work
station. By using a programmable document to implement voice mail, the
sound of the voice message may be simply stored as digital data within a
value of an attribute of the document. One attribute of the message may
cause the voice to play. Another attribute of the voice mail message could
deliver the voice data to a speech recognition engine, and have the voice
data converted to text, and then display the text on a computer screen.
The system has the advantage of removing the distinction between compound
documents and programs. An electronic mail message may contain buttons and
associated actions, just as other compound documents may contain text,
digitized speech, and pictures or video information. Thus executable
script, as contained within a value of an attribute in a document, and
interpreted by script engine, is treated at the same level as other
attributes such as text data.
These and other features and advantages of the present invention will
become apparent from a reading of the detailed description in conjunction
with the attached drawings in which like reference numerals refer to like
elements in the several views.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a drawing of a strand;
FIG. 2 is a drawing of a strand that has been selected by a user;
FIG. 3 is a drawing of a pile and scroll tool with a strand;
FIG. 4 is a drawing of a tile strand of documents;
FIG. 5 is a drawing of a corkscrew strand of documents;
FIG. 6 is a drawing of an embodiment the system;
FIG. 7 is a drawing of a second embodiment of the system;
FIG. 8A is an example embodiment of a repository node consisting of a
repository interface coupled with a repository storage;
FIG. 8B shows the logical processes within an example embodiment of a
repository interface;
FIG. 8C shows an example embodiment of a repository node having repository
storage in the form of a disc drive and also having a repository
interface;
FIG. 9 is a drawing of a find tool with an output strand having a knot;
FIG. 10 is a block diagram of the architecture of a document display system
using strands;
FIG. 11 is a flow chart showing the steps of a method for scheduling using
a blocked queue and an execution queue;
FIG. 12A shows a first embodiment of an attribute having a name, a
delimiter, and a value;
FIG. 12B shows a second embodiment of an attribute, having a name, a value,
and a delimiter of a parenthesis;
FIG. 13 is a diagram of showing a system having asynchronous remote
repository access;
FIG. 14 is a diagram showing the steps of a find tool method for retrieving
documents from repositories;
FIG. 15 is a diagram of an apparatus for sharing a document between two
users;
FIG. 16 is a diagram of an apparatus for merging multiple documents based
on their visual display attributes;
FIG. 17 is a diagram of an apparatus for retrieving documents from
repositories and having no busy cursor; and
FIG. 18 shows the elements of a system for using programmable documents.
DETAILED DESCRIPTION
Documents
A document is the primary object in the system. All data are contained in
documents. A document contains some number of attributes, each attribute
having a name and a value. The set of attributes for any given document is
arbitrary, and no particular attributes are required of all documents.
A screen object is the visual representation of a document. It may be
visible or hidden at any given time. Screen objects are generally
rectangular.
A Unique Identifier, or UID, is a string of alphanumerics that uniquely
identifies a document. A UID is necessary and sufficient to refer to a
specific document.
Attribute/Value Pairs
An attribute is a piece of data stored in a document. Each attribute has an
attribute name and an attribute value. An attribute name uniquely
identifies an attribute value within a document.
The Script Interpreter
Script consists of a scripting language that can be executed to perform
some action. It is stored in attribute values. Scripting language is a
language used to specify commands to the system environment.
The script interpreters (architecturally there can be any number) interpret
script which is stored in attributes of documents. Scripts can modify
attributes of documents, perform basic mathematical and search operations,
call other scripts, and do other basic operations such as insert or remove
documents from strands. Most of the actions in the system are activated by
calling scripts within documents.
Documents are the single abstraction structure in the script language.
There is no persistent storage associated with the script environment
other than attributes of documents. Most of the actions in the system
(other than simple dragging of documents) are activated by calling scripts
within documents. A document consists of attribute/value pairs; by
referencing an attribute in an expression, the value is returned.
The value of any attribute, ephemeral or not, may be executable script.
Script thus allows the power user to extend the functionality of the
system. For example, a user may define the value of an attribute by
writing his or her own script as the value of that attribute.
Whether an attribute is executable or not is typically established by
convention. For example, for a given implementation, an architecturally
defined set of messages may indicate that the attributes referenced by the
messages are executable. Or, a button on the mouse may be architecturally
defined to invoke and execute the script contained in an attribute of the
document in which the cursor is located when that button is clicked by the
user. In addition, or as an alternative, an identifier process can be
designed and used to determine whether the value of an attribute is
script, and also what script interpreter is needed to interpret it. The
identifier process does not test whether the script can be properly
parsed, but upon determining that the value of an attribute is script,
chooses which script interpreter to call to interpret the script. For
example, the identifier process can select an interpreter for a dialect of
the Lisp programming language by checking the first non-whitespace
character to see if it is a left paren or single-quote. If the first
non-whitespace character is a left paren of a single-quote, the identifier
process selects the interpreter for the dialect of the Lisp programming
language to interpret the script.
A goal in designing a particular script language is that the script
language be easy to read. Users may not be computer scientists, but will
nevertheless want to examine and modify scripts to a certain extent.
Therefore the language must have few special characters, and generally use
natural language words instead of symbols.
The script language should be uniformly structured, in that the only
storage entity (object) in the language is a document consisting of
attribute/value pairs. Values may be atomic, such as strings, numbers,
dates, or images, or they may be pointers (UID's) to other documents.
Global objects may be stored as attributes in a universal "global"
document which is visible to all scripts.
Attributes are generally not typed, but values are generally typed. The
types of values are used to determine what operations are permissible. A
script is executed within a document by evaluating an attribute whose
value is a script, and whose type is executable.
Inputs to the System
An example embodiment of the system includes an input device, for example a
mouse, to obtain information from the user regarding selecting and moving
documents within the display. It will be clear to one skilled in the art
of user interfaces that devices other than a mouse, such as a light pen, a
voice controlled display, or a touch sensitive screen, are potential
alternatives to the mouse.
The locations of mouse events, for example the pressing and or releasing of
a mouse button, are recorded as the UID of the document in which the
cursor is located when the mouse event occurs. The x, y or z position of
the cursor at the time the mouse event occurred is recorded. The results
of user actions to select or deselect one or more documents are similarly
recorded.
Scanning Documents
Any paper document can be entered into the system by scanning. When
scanning a document into the system, a cover sheet should be used. Each
cover sheet is encoded with the identification of the owner of the
document. Such identification would, for example, consist of the unique
user name defined within the system used to log-on or gain access to
system.
In an example embodiment, when a document is scanned into the system, the
scanned document is automatically placed in an IN BOX pile of the owner of
the document. Each scanned document has an information sticker across its
top displaying the name of the owner and the date it was scanned. The
cover sheet is not included.
Scanned documents without cover sheets, or that have cover sheets that do
not name valid users, cannot be delivered to the true owner of the
document by the system. The system may be configured to deliver such
scanned documents to a designated user, who is responsible for determining
the owner of the scanned documents.
The Visual Presentation: The Workspace
A workspace is a virtual three dimensional space in which a set of
documents are arranged. In this way a workspace contains a set of
documents. Within a workspace, there is a list of the documents contained
within the workspace, consisting of combinations of repository identifiers
(RIDs) and unique identifiers (UIDs). Also, for each document within the
workspace there exist ephemeral attributes, which describe the current
visual display of that document within the workspace. Examples of
ephemeral attributes include the X, Y, and Z positions of the document
within the workspace.
A workspace is stored in a workspace document and displayed in a workspace
window. A workspace document is a document that contains all of the state
information of a workspace. A workspace document may be contained within
other workspaces.
The display of a workspace on the display device is the "screen space"
representation of the three dimensional workspace on the two dimensional
display device. In an embodiment of the system, the screen space display
of a workspace is implemented through a window in the host computer's
windowing system, within which the two dimensional screen space rendering
of the three dimensional workspace is displayed.
The system uses a three dimensional workspace to provide a useful display
of potentially thousands of documents. A workspace may display thousands
of documents. In a preferred embodiment of a workspace, the workspace is
wrapped at the edges, giving a fish-eye lens effect, so that every screen
object that is not invisible has at least some portion of its rectangle
within the screen display no matter what its position in the three
dimensional workspace.
Workspaces may be shared, such that multiple users have the same workspace
open. For example, user one and user two could simultaneously have the
same workspace open. In one embodiment, when user one drags a document
within the workspace, user two sees it moving as well. The ephemeral
attributes defining the visual representation of the documents within the
workspace can be mediated via repository connections from user one to user
two to support this feature. For example, both user one and user two could
simultaneously read and write to a shared copy of the workspace document
within a mutually accessible repository. Alternatively, user one and user
two could maintain separate copies of the workspace document in their
respective client modules, establish a direct network connection between
them, and exchange ephemeral attribute updates via the direct network
connection.
The Renderer Process
A renderer process is an element of the system that maintains the virtual
three dimensional workspace. The renderer process is performed by various
specific renderers.
A document renderer is that portion of the system that draws inside the
rectangle of the screen object associated with each document in a
workspace. The system supports multiple renderers, and which renderer is
used for a particular document is determined by an attribute of that
document.
A workspace viewer is a process in the system responsible for outlining the
screen objects of documents within the workspace and managing the display
of selection indication. The interior of each screen object is rendered by
its associated renderer, and the workspace viewer completes the view. The
workspace viewer is also that part of the system which is responsible for
maintaining the view of a workspace. That is, the workspace viewer
contains the means for arranging documents in three-space.
Ephemeral Attributes
Ephemeral attributes are attributes associated with a document in the
context of a workspace. Ephemeral attributes are stored within a workspace
document of the workspace containing the screen object of the specific
document which the ephemeral attributes are associated with. Ephemeral
attributes define the display characteristics of the associated document,
such as position and size. Ephemeral attributes reflect the actions of the
user in manipulating the screen object of a document within a workspace,
typically through using an interface device such as a mouse.
Ephemeral attributes are stored in workspace documents, which in turn are
stored in repositories. All the state information of the last image of a
workspace, including ephemeral attributes associated with each document in
the display, is stored in the permanent attributes of a workspace document
when that document is stored into a repository. Thus a document may have
different ephemeral attributes and values when that document is associated
with different workspaces.
An ephemeral document is a document that has existence only in a workspace.
It has no permanent attributes, only ephemeral ones. In an alternative
embodiment, ephemeral documents may be stored in a virtual "workspace
repository", accessible only from its workspace, and may have permanent
attributes in this context. In such an alternative embodiment, the state
of the workspace repository is stored as an attribute of the workspace
document.
An intrinsic ephemeral attribute, or intrinsic attribute, is a special
ephemeral attribute that every document must have, which directly effects
the display of the screen object. Examples include x position (xpos), y
position (ypos) and z position (zpos). Many intrinsic attributes are
available for direct manipulation through the user interface device.
The Perspective Function
A perspective function maps objects on the screen by taking the three
dimensional workspace coordinates, or "world space coordinates",
maintained by the workspace viewer, and mapping them into two-dimensional
screen space positions.
For example, every document has a position in world space defined along the
x, y, and z axis, and every document has a width and a height. When an
image of the document is drawn on the display device, the perspective
function takes those world space coordinates and size variables as input
parameters, and determines the actual size and location on the display
device, in "screen space coordinates", where the document is actually
going to be drawn. The perspective function is instantiated by the
workspace viewer process.
Dragging Along the X, Y or Z Axis
To move a document around a workspace, there are three basic actions:
dragging around, pushing back/pulling forward, and clipping. Dragging a
document is the act of moving the corresponding screen object for that
document with respect to one or more of the x, y, and z axis of the
workspace by manipulation of the user interface device.
To move a document within the workspace, the user uses the user interface
device to place the mouse cursor near the center of screen object of the
document. The user next presses and holds the mouse button while moving
the mouse. As a result, the screen object disappears and is replaced by an
outline of its shape (called a drag box). As the mouse is moved, the drag
box follows. This is known as dragging. When the mouse button is released,
the screen object reappears in its new position.
Documents are pushed back and pulled forward via a modified drag action,
e.g. using a separate mouse button, or by first moving the mouse cursor
close to a corner of the screen object of the document, and then pressing
and holding a mouse button. As an alternative a track ball device may be
used to manipulate the position of the mouse cursor. As the mouse cursor
is moved toward the bottom of the screen, the screen object is dragged
forward (towards the user) within the workspace. As the mouse cursor is
moved toward the upper left corner of the screen instead of forward, the
screen object is pushed back within the workspace. Note that as the screen
object on the display device is being moved, the virtual location of the
corresponding document maintained in the world space of the workspace
viewer is being changed accordingly. Thus one can either say that the
screen object is being moved, or that the document is being moved, and
have the same meaning.
As a document is pulled forward, the document is moved towards the user
along the z axis of the three dimensional workspace. The perspective
process translates this movement of the object towards the user into a
screen representation of the screen object for the document. As a result,
the screen object for the document grows in size in its two dimensional
screen space representation. Conversely, when a document is pushed back,
the screen object for the document is made smaller.
A document can only be moved forward a certain distance. When it is as big
as it will get, it is plastered against the workspace window and cannot be
moved any closer.
The world space size of a screen object is the size of the screen object in
the three dimensional space of the workspace. This is the object's real
size opposed to the screen space size at which it appears on the screen
display surface. Documents and elements of documents (e.g. buttons, text
fields, etc.) all have world space sizes. Although dragging along the Z
axis can make the world space size of documents very small, they will
never be rendered at a size that is invisible to the user.
In the case of "corner dragging" in the Z dimension, any of the four
corners of a document may be used to push or pull it. However, the
document will move along somewhat different paths depending on which
corner is used.
Repositories
A repository is a data store that contains documents. A workspace is
generally used for short term storage of documents. For long-term storage,
documents are kept in repositories. When a system tool brings documents
into a workspace, it gets them from repositories. A Repository Identifier,
or RID, is a string of alphanumerics that uniquely identifies a
repository. RIDs are unique on the network. An RID is necessary and
sufficient to refer to a repository. In an alternative embodiment RIDs are
universally unique, and therefore permanently stable in a global
environment where mobile computing is increasing significant. For purposes
of example, such universally unique RIDs may be assigned through a central
RID allocation system, similar to how 48 bit Ethernet physical layer
addresses are centrally assigned to specific network controllers, to
guarantee that there are no duplicates.
The computer network that the system is connected to may have one
repository available or it may have many. Some repositories are generic
places to put documents, while others may be specialized. For example, a
machine that sends and receives documents as faxes over telephone lines
can be a repository. The user may choose to maintain a private repository
on the local computer. Most repositories are on remote machines and the
system gets documents from them over the network. A repository may exist
on the local file system. An embodiment of the system may run on a system
with no disks. In that case, all repositories exist within remote network
nodes.
The user may retrieve documents from many different repositories at the
same time. Similarly, multiple users can connect to the same repository at
once. A user of a document may put a document into a shared repository
marked to the attention of other specified users. Each user may configure
a special FIND tool (which serves as their IN BOX) that constantly watches
the repositories for documents marked for their attention and brings them
into their workspace. In this way, documents may be shared between users.
Repositories are visually represented in a workspace by a document called a
repository portal. The user accesses a repository through the repository
portal for that repository. A repository may be password protected, such
that the user may have to enter a password into the portal document before
using the repository.
Repositories may have special characteristics (unusual connection
requirements, limited hours of availability, etc.) These are represented
to the user on the portal document. Repository portals also have a visual
indication of whether their repositories are currently available for use.
A repository server is a server that serves documents from a repository to
a client and provides a search engine, and repository interface to process
search requests described by attribute value pairs from the client system,
and to search the repository using the search protocol specific to that
repository.
Strands
Strands are a system for positioning screen objects in a three-dimensional
workspace. Strands allow grouping of documents, so that they can be
manipulated as groups. Strands are a method of applying constraints to the
organization of screen objects in three dimensions.
A strand is associated with a first document (the "strand parent"), and
constrains the location of a set of documents not containing the strand
parent. A strand is a process that maps a (possibly discontinuous) line
into 3 space. Each strand child has a position on the strand relative to
the strand origin. A strand also has minimum and maximum constraints for
the spacing of its children.
Strands are not containers, but rather are a mechanism for arranging screen
objects without hiding them. A strand constrains the position of screen
objects attached to the strand into a certain shape. The certain shape is
indicated by a strand function. When the strand function is evaluated, its
output defines a strand path. A pile is an example of a strand where all
the documents attached to a strand are constrained to be next to each
other in the shape of a pile.
The strand path is mathematically defined as a one-dimensional path through
three dimensions, along which are displayed the screen objects of the
child documents of the strand. Objects attached to a strand path appear to
be indirectly connected, as do pearls on a strand of string. The strand
function can be arbitrarily set so that it is oriented in any direction or
is any complex line. It can be a complicated function like a bunch of line
segments joined together, or it could be U-shaped or zigzag-shaped.
A pile of documents is a strand having a strand path defined by a function
causing the strand to be oriented substantially parallel to the Z access
of the display, that is, going straight back from the surface of the
display device that is closest to the user. A "tile" of documents is a set
of documents placed next to each other so that the complete contents of
their current screen objects are showing. A tile is defined as a strand
having a strand path substantially parallel to the glass of the screen.
The strand mechanism itself is completely general. The user may define a
corkscrew strand path to have documents spiraling back into infinity if so
desired.
An example of a system tool having a strand is as follows. The FIND
operation may be a tool having a pile for its output. The FIND command
locates documents, and puts them into a pile below itself. The output pile
is attached to the FIND tool. When the FIND tool is moved, the pile
follows. The FIND tool will "let go" of a document if the document is
clicked and dragged away from the pile.
A strand parent is a document to which a strand is attached. The strand
path for that strand is defined relative to an origin point defined with
respect to the strand parent. For example, the strand path could be
relative to an origin in the upper left corner of the screen object for
the strand parent. Minimum and maximum separation constraints, associated
with the strand parent, define the spacing between any two child documents
on the strand to be greater than the separation minimum and less than the
separation maximum. The minimum and maximum separation constraints may for
example be stored in the strand parent.
FIG. 1 shows a display device 10, including an example of a strand 15. The
strand 15 is shown having child document screen objects 19a, 19b . . .
19e, and parent document screen object 17. The strand path is shown by
line 20, and the mouse cursor is shown by element 21. The separation of
the child document screen objects 19 is shown at 24.
During operation of the system, with reference to the elements in FIG. 1,
the strand path 20 is calculated by evaluating a strand function
associated with strand parent represented by screen object 17. The exact
orientation of the strand path 20 is determined with reference to an
origin constraint associated with the strand parent screen object 17, for
example, the upper left hand corner of the strand parent screen object 17
at point 26. The outputs of this evaluation are three dimensional
coordinates that define the strand path 20 in the virtual representation
maintained by the workspace viewer.
The child documents of the strand (corresponding to screen objects 19) are
determined from a list of unique identifiers of the child documents
associated with a strand parent document corresponding to screen object
17. The separation constraints associated with the strand parent document,
indicating the minimum and maximum separation of child documents displayed
along the strand path 20, are also evaluated. The output of these
evaluations provides three dimensional coordinates defining the appearance
and location of the child document screen objects 19 along the strand path
20.
The three dimensional coordinates are passed to a perspective process for
translation into two dimensional screen space coordinates. The two
dimensional screen space coordinates are used to display screen objects
19, representing child documents along the strand path 20, on the display
device 10. The strand path 20 itself is not typically, but may be
displayed on the display device. The separation 24 between the child
documents cannot exceed the maximum separation constraint, and is not less
than the minimum separation constraint associated with the strand parent
document corresponding to screen object 17.
Strand parents may further include a knot constraint, defining points in
the strand that divide the strand into sub-strands. Knot constraints may
be arbitrarily defined, and are generally invisible to the user. For
example, knot constraints may be used to subdivide the strand into two
sub-parts so that the user has a pile of mail that has been read, and a
pile of new mail, both within a single strand. Knots are used to keep
those sub-strands (or sub-piles) separated.
Two applications for strands are presentation of documents in piles or
tiles, and grouping documents. A strand is an object on the display
device, and the user can pick up the strand by using the mouse to select
the parent document of the strand. All of the strand's children are moved
when the strand itself is moved. The system may be configured such that
when the user selects a child document on the strand and moves it, the
document is removed from the strand. In the alternative, the system can be
configured such that moving any child document on the strand causes the
entire strand and all other documents on the strand to move without
removing the child document from the strand.
In the example shown in FIG. 1, the parent document corresponding to screen
object 17 is a FIND tool. For example, the FIND tool may be used to locate
documents containing a particular string of characters. When the FIND tool
is used, the documents found to contain the string are displayed along the
strand 15, in this case, a pile. The FIND tool is the parent of that
strand. When the screen object for the FIND tool is moved on the display
device, the pile is dragged with it.
In FIG. 2, the elements shown in FIG. 1 are shown after the user has
selected the screen object 17 of the strand parent for the strand 15.
While the strand parent screen object 17 is selected, the user has also
selected the entire strand 15, including child document screen objects 19.
The strand parent screen object 17, and the child document screen objects
19 are shown as outlines while the strand 15 is selected. Further, while
the strand 15 is selected, the user may use the mouse to move the cursor
21 around the display device 10, thereby moving the entire strand 15.
After the strand 15 is moved to its desired position, the user may deselect
the strand 15, causing the screen objects 17 and 19 for the strand parent
and strand children to be filled in again.
In another example embodiment of a system tool using a strand, a pile and
scroll tool is used to browse through a collection of documents. It uses a
U-shaped strand that tiles a few of the documents and piles other of the
collected of documents. The use of the U-shaped strand makes the use of
the tool more intuitive for the user, since both the currently tiled
documents are displayed simultaneously with the piled documents.
The pile and scroll tool 60 is shown in FIG. 3. Pile and scroll has a
U-shaped strand function 62, including a first pile 64 and a second pile
66. In the configuration shown, first pile 64 in FIG. 3 is on top of a
tiled section 68, and second pile 66 is on the bottom of the tiled section
68. The system allows other configurations and orientations of the strand.
Documents 68a, 68b, 68c, and 68d, are shown in the tiled section between
piles 64 and 66, and are tiled parallel to the screen.
The tile and scroll tool 60 in FIG. 3 has a control button 70, with up
arrow 72 and down arrow 74. When the user brings the mouse cursor over up
arrow 72 within the control button 70, and then clicks once on the mouse
button, the tile and scroll tool 60 moves document 68a backwards into
first pile 64, moves the documents 68b, 68c, and 68d upwards within the
tiled documents 68, and brings forward a document from the second pile 66
to be displayed within the tiled section 68. If the user holds the mouse
button down and does not release it while the mouse cursor is over the up
arrow 72, multiple documents are continuously tiled into view from the
second pile 66 until the mouse button is released.
Similarly, when the user moves the mouse cursor over the down arrow 74, and
clicks once on the mouse button, a document is tiled into view from the
first pile 64, and holding down the mouse button tiles multiple documents
from first pile 64 until the mouse button is released. In this way, the
user can browse through multiple collected documents using the pile and
scroll tool 60.
In tiling, the documents look like they're beside each other, like pieces
of paper on a table. They appear at the same distance from the user.
Therefore, documents that are tiled are at the same Z position in the
workspace, relative to the front of the display device.
In an example tile 80 shown in FIG. 4, the strand function 82 runs parallel
to the screen, so that the documents 80a through 80g are threaded along
the strand parallel to the screen. In a tile, the world space coordinates
of the strand as maintained in three dimensions by the workspace viewer is
parallel to the screen. In a pile, as shown above, the strand is not
parallel, but perhaps perpendicular to the screen.
Thus it is seen that the strand function is an arbitrarily definable
geometric function. An implementation may offer the user multiple
pre-calculated strand functions, or an interface through which the user
can define her own strand functions. As a further example of the
flexibility of display provided by strands, FIG. 5 shows a corkscrew pile
90, having a strand function 92 defining a corkscrew shape.
FIG. 6 shows an example embodiment of the document display system. A mother
board 605 is shown having daughter boards 610, individually numbered 610a,
610b, 610c and 610d. The daughter boards 610 are coupled with the mother
board 605 through parallel bus 615. Daughter board 610a is coupled with a
display device 10 through serial interconnect 635, daughter board 610b is
coupled with user input device 620, and daughter board 610c is coupled
with repositories 625 via network 640.
During operation of the elements in FIG. 6, the user manipulates the user
input device 620, thereby sending user input commands to the daughter
board 610a. The logic within the daughter boards 610 then responds to the
user commands by changing the view on the display device 10, and
requesting and retrieving documents from the repositories 625.
FIG. 7 shows elements in an example embodiment of the system. A display
device 10 is shown displaying the example from FIG. 1. The display device
10 is coupled with a display controller 610 through serial interconnect
635.
The display controller 610 includes a memory 25, the memory 25 having
parent document 27 (shown as screen object 17 in FIGS. 1 and 2), and child
documents 29a, 29b, . . . 29e (shown as screen objects 19 in FIGS. 1 and
2). Parent document 27 includes minimum and maximum separation constraints
37 and 39 respectively, child document list 41, containing the unique
identifiers for the child documents 29, strand origin constraint 43 and
strand function constraint 45. The child documents 29 each contain parent
pointer 47, containing the unique identifier of the parent document 27,
and flags field 49, containing flags indicating whether the child may be
removed from the strand when selected, and whether the child is to be
displayed or concealed when the strand is displayed.
Also shown in FIG. 7 are processor 31, coupled with memory 25, as well as
workspace viewer 35, and script engine 36. Script engine 36 and workspace
viewer 35 are shown as processes running on processor 31, but it will be
evident to one of skill in the art of computer science that these
processes could alternatively be implemented in hardware, such as an
application specific integrated circuit, or in firmware or microcode.
Also contained within each document is a document renderer attribute for
that document. For example, parent document 27 contains document renderer
attribute 57, and child documents 29a through 29e contain document
renderer attributes 59a through 59e. The value of the document renderer
attribute for each document indicates the document renderer for that
document. In the example of FIG. 7, renderer attribute 57 indicates a
document renderer 700, renderer attribute 59a indicates a renderer 701,
and renderer attribute 59b indicates a renderer 703. Further, renderer
attribute 59c indicates a renderer 704, renderer attribute 59d indicates a
renderer 702, and renderer attribute 59e indicates a renderer 705. Thus in
the example of FIG. 7 each document indicates a potentially different
document renderer.
Each document may optionally contain a layout attribute, having a value
equal to a script used to control the document renderer for that document.
The script within the value of each layout attribute is capable of being
interpreted by a script engine within the system, for example the script
engine 36. In the example of FIG. 7, parent document 27 contains a layout
attribute 710, for controlling the renderer 700, child document 29a
contains a layout attribute 711 for controlling the renderer 701, child
document 29b contains a layout attribute 712 for controlling the renderer
703, child document 29c contains a layout attribute 713 for controllin | | |