CA2141929A1 - Container object system - Google Patents
Container object systemInfo
- Publication number
- CA2141929A1 CA2141929A1 CA002141929A CA2141929A CA2141929A1 CA 2141929 A1 CA2141929 A1 CA 2141929A1 CA 002141929 A CA002141929 A CA 002141929A CA 2141929 A CA2141929 A CA 2141929A CA 2141929 A1 CA2141929 A1 CA 2141929A1
- Authority
- CA
- Canada
- Prior art keywords
- place
- objects
- user
- recited
- container
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
Abstract
2141929 9429792 PCTABS00034 A method and apparatus is disclosed for organizing information within containers. An object is created to contain other objects that refer to folders, places, maps, people drawers, shelf, and trash. A created container can then be accessed by a multitude of users. Containers provide default user operations including cut, copy, paste, drag, drop, selection, move, and the ability to back out of operations already performed. A container can also have a window, frame, thumbnail or icon presentation on a display. Containers also support multiple presentations of the same container. For example, a folder and a rolodex may be displayed for the same container object.
Description
2 ~ i L~ i 3 2 !~ PCT/U594/00~69 -1- ' ,.
CONTAINER OBJECT SYSTEM
CROSS-REFEREN~E TO RELATED -PAl~ENT APPLICATIONS
S
This application is related to the application entitled "Object Oriented Framework System," by Debra L. Orton, David B. Goldsmith, ChEistopher P.
Moeller, and Andrew G. Heninger, filed December 23, 1992, and assigned to Taligent, Inc., the disclosure of which is hereby incorporated by reference. This 10 application is also related to the application entitled "Concurrent FrameworkSystem," by Jack Palevich et al., assigned to Taligent, Inc., the disclosure of which is hereby incorporated by reference.
F~E~D OF THE INVENTION
This invention generally relates to a method and system for organizing and accessing various information within an object oriented operating system, and more parhcularly~ to the interaction of users within distinct container objects.
20 ~ BACK~ROUND OF THE INVENTION
~- ~ It is increasingly important to provide a user interface that is built around providing a sense of community in the interface. That sense of community comes - ~ from having representations for people, places, and other it~ms such as tools, ~2s appliances, stationary, and documents. Early attempts at providing an ergonomic - interface used a desktop metaphor such as that found in the Xerox Star computer system, and its followons and patented in US Patents 5,107,443; 5,072,412; 5,159,669;
4,974,173; and 5,121,478.
.
SUMMARY OF T~IE INVENTION
, ~`
Users of computer systems, especially inexperienced users, benefit from an application that creates an environment with characteristics of the real world. In particular, a user who is inexperienced with the application will readily grasp the concepts of ~e application utilizing a familiar frame of reference. A preferred embodiment provides such an environment by enabling a user to create a set of place objects wherein other objects can be contained. Such other objects includefunctional representations of persons, things or items, and other places.
,, WO 9412g792 PCTIIJS94/00269 , . `
2 9 i;~
--2~
A preferred embodiment organizes information in a computer system within a plurality of containers in the memory of a computer. The organization is iFlitiated by instantiating a container in the memory and tailoring the container to a class of ob~ects such as folders, in baskets or places. Containers inherit default user l -operations including cut, copy, paste, drag, drop, selection, move, and the ability to back out of operations already performed. A container can also provide a window,frame, thumbnail or icon presentation on a display and support for multiple presentations of the same container. For example, a folder and a rolodex may be displayed for the same container object.
BRIEF DE~CRIPTION OF THE DRAWINGS
The foregoing and other objects, aspects and advantages of the present invention will be better understood from the following detailed description of the preferred embodiment of the invention with reference to the accompanying drawings, in which:
Figure 1 is a block diagram of a computer system in accordance with a preferred embodiment;
Figure 2 illustrates a place^ object within a window and a place object of the ~; desktop in accordanc~ with a preferred embodiment;
Figure 3 illustrates the expansion of a place object within a window in accordance with a preferred embodiment;
¦~ Figure 4 illustrates a typical hierarchy of user place objects within a workstation, in accordance with a preferred embodiment;
Figure 5 illustrates an invitation in accordance with a preferred embodiment;
Figure 6 illustrates a travel bag in accordance with a preferred embodiment;
Figure 7 is a flowchart showing the high level flow of control in accordance with a preferred embodiment;
~ wo s412ns~ ~ i L', ~ , PCT/IJS94/00269 . - . .:~.. , Figure 8 is a flowchart showing ~he detailed logic in accordance with a preferred embodiment;
Figure 9 is a flowchart showing the detailed logic in accordance with a preferred embodiment; '.
Figure 10 is a flowchart showing the detailed logic in accordance with a preferred embodiment;
Figure 11 is a flowchart showing the detailed logic in accordance with a preferred embodiment;
Figure 12 is a Visual Design Language (VDL) key setting forth terminology used in other VDL illustrations in accordance with a preferred embodiment of theinvention;
Figure 13 is a Booch Diagram in accordance with a preferred embodiment of the invention;
Figure 14 illustrates the presentation of separate environments in accordance wit~ a pre~rred embodiment of the invention;
Figure 15 illustrates a given machine having a single "home" place where they can store their documents and workspace items in accordance with a preferred embodiment;
Figure 16 illustrates some example dialogs which give choices of home or default place, the last place they were in before logging off, or a place of their choosing in accordance with a preferred embodiment;
Fig~re 17 illustrates a people strip which shows the people in a place in accordance with a preferred embodiment;
Figure 18 illustrates the methods of a model which relates to Person presence management in accordance with a preferred embodiment;
CONTAINER OBJECT SYSTEM
CROSS-REFEREN~E TO RELATED -PAl~ENT APPLICATIONS
S
This application is related to the application entitled "Object Oriented Framework System," by Debra L. Orton, David B. Goldsmith, ChEistopher P.
Moeller, and Andrew G. Heninger, filed December 23, 1992, and assigned to Taligent, Inc., the disclosure of which is hereby incorporated by reference. This 10 application is also related to the application entitled "Concurrent FrameworkSystem," by Jack Palevich et al., assigned to Taligent, Inc., the disclosure of which is hereby incorporated by reference.
F~E~D OF THE INVENTION
This invention generally relates to a method and system for organizing and accessing various information within an object oriented operating system, and more parhcularly~ to the interaction of users within distinct container objects.
20 ~ BACK~ROUND OF THE INVENTION
~- ~ It is increasingly important to provide a user interface that is built around providing a sense of community in the interface. That sense of community comes - ~ from having representations for people, places, and other it~ms such as tools, ~2s appliances, stationary, and documents. Early attempts at providing an ergonomic - interface used a desktop metaphor such as that found in the Xerox Star computer system, and its followons and patented in US Patents 5,107,443; 5,072,412; 5,159,669;
4,974,173; and 5,121,478.
.
SUMMARY OF T~IE INVENTION
, ~`
Users of computer systems, especially inexperienced users, benefit from an application that creates an environment with characteristics of the real world. In particular, a user who is inexperienced with the application will readily grasp the concepts of ~e application utilizing a familiar frame of reference. A preferred embodiment provides such an environment by enabling a user to create a set of place objects wherein other objects can be contained. Such other objects includefunctional representations of persons, things or items, and other places.
,, WO 9412g792 PCTIIJS94/00269 , . `
2 9 i;~
--2~
A preferred embodiment organizes information in a computer system within a plurality of containers in the memory of a computer. The organization is iFlitiated by instantiating a container in the memory and tailoring the container to a class of ob~ects such as folders, in baskets or places. Containers inherit default user l -operations including cut, copy, paste, drag, drop, selection, move, and the ability to back out of operations already performed. A container can also provide a window,frame, thumbnail or icon presentation on a display and support for multiple presentations of the same container. For example, a folder and a rolodex may be displayed for the same container object.
BRIEF DE~CRIPTION OF THE DRAWINGS
The foregoing and other objects, aspects and advantages of the present invention will be better understood from the following detailed description of the preferred embodiment of the invention with reference to the accompanying drawings, in which:
Figure 1 is a block diagram of a computer system in accordance with a preferred embodiment;
Figure 2 illustrates a place^ object within a window and a place object of the ~; desktop in accordanc~ with a preferred embodiment;
Figure 3 illustrates the expansion of a place object within a window in accordance with a preferred embodiment;
¦~ Figure 4 illustrates a typical hierarchy of user place objects within a workstation, in accordance with a preferred embodiment;
Figure 5 illustrates an invitation in accordance with a preferred embodiment;
Figure 6 illustrates a travel bag in accordance with a preferred embodiment;
Figure 7 is a flowchart showing the high level flow of control in accordance with a preferred embodiment;
~ wo s412ns~ ~ i L', ~ , PCT/IJS94/00269 . - . .:~.. , Figure 8 is a flowchart showing ~he detailed logic in accordance with a preferred embodiment;
Figure 9 is a flowchart showing the detailed logic in accordance with a preferred embodiment; '.
Figure 10 is a flowchart showing the detailed logic in accordance with a preferred embodiment;
Figure 11 is a flowchart showing the detailed logic in accordance with a preferred embodiment;
Figure 12 is a Visual Design Language (VDL) key setting forth terminology used in other VDL illustrations in accordance with a preferred embodiment of theinvention;
Figure 13 is a Booch Diagram in accordance with a preferred embodiment of the invention;
Figure 14 illustrates the presentation of separate environments in accordance wit~ a pre~rred embodiment of the invention;
Figure 15 illustrates a given machine having a single "home" place where they can store their documents and workspace items in accordance with a preferred embodiment;
Figure 16 illustrates some example dialogs which give choices of home or default place, the last place they were in before logging off, or a place of their choosing in accordance with a preferred embodiment;
Fig~re 17 illustrates a people strip which shows the people in a place in accordance with a preferred embodiment;
Figure 18 illustrates the methods of a model which relates to Person presence management in accordance with a preferred embodiment;
3 0 Figure 19 illustrates the process by which a person object gets added to a place model in accordance with a preferred embodiment;
Figures 20 and 21 illustrate the relationship between places and the workplace in accordance with a preferred embodiment;
WO 94/29792 PCT/US94/00269 - .-h~ 3 f~ ~i Figure 22 shows the objects which are stored with the user information in order to maintain the document presentation state in accordance with a preferredembodiment;
Figure 23 is a Booch diagram illustrating command subclasses which employ ,, 5 place document policy objects in accordance with a preferred embodiment;
Figure 24 illustrates the steps involved in opening a saved presentation on a document within a place in accordance with a preferred embodiment;
lû Figure 25 illustrates the steps involved in closing a presentation on a document within a place in accordance with a preferred embodiment;
Figure 26 illustrates the difference between embedment and containment in accordance with a preferred embodiment;
Pigure 27 is a VDL diagram illustrating the creation of a folder in accordance with a preferred embodiment;
Figure 28 is a VDL diagram illustrating the copying of a folder logic in 20 accordance with a preferred embodiment;
-Figure 29 is a VDL diagram illustrating the movement of a folder logic inaccordance wlth a preferred embodiment;
Figure 30 is a VDL diagram illustrating the movement of a folder logic in accordance with a preferred embodiment; and Figure 31 is a VDL diagram illustrating the movement of a folder logic in accordance with a preferred embodiment.
DETAILEI) DESCRIPTION OF ~E Pl~EEERRED
EMBODIME~JT OP THE Pl~ESENT INVENTION
Users conceptualize places as areas in which persons, places and things exist.
35 Place obiects are created to capture the formal and functional characteristics of actual locations. Place objects build upon knowledge of the real world by organizing and segmenting information into a familiar and meaningful context. Furthermore, a . W094/29792 ~CT/U594/00269 :, , preferred embodiment provides a context for meaningful interaction between usersand a computer system.
A preferred embodiment organizes information within persistent structures ! -referred to as "places". Information, in the form of other objects such as persons and ' documents, is appropriately segmented among place objects. As an exampie, a postoffice place is created containing a set of objects pertaining to a communication resource. Place objects can also be created to contain objects that pertain to persons associated with a place. As a further example, a library place is created wherein ¦ 10 objects representing a volume of books and a librarian are placed. A user could access the library place and sort through the volume of books in order to find adesired book which can then be retrieved. Otherwise, a user may choose to contact the librarian, through information contained within the object representing the librarian, to have the librarian undertake a literature search.COMP~ER SYSTEM `
A preferred embodiment is preferably practiced in the context of an operating system resident on a personal computer such as the IBM (~) PS/2 (~) or Apple (~)~acintosh ~) computer. A representative hardware environment is depicted in Figure 1, which illustrates a typical hardware configuration of a workstation inaccordance with a preferred embodiment having a central processing unit 10, suchas a conventional microprocessor, and a number of other units interconnected via a system bus 12. The workstation shown in Figure 1 includes a Random Access Memory ~RAM) 14, Read Only Memory (ROM) 16, an I/O adapter 18 for connecting 1 peripheral devices such as disk units 20 to the bus, a user interface adapter 22 for i- 25 connecting a keyboard 24, a mouse 26, a speaker 28, a microphone 32, and/or other user interface devices such as a touch screen device (not shown) to the bus, a communication adapter ~4 for connecting the workstation to a data processing network and a display adapter 36 for connecting the bus to a display device 38. The workstationl has resident thereon an operating system such as the Apple Systern/7 ~) operating system. The document framework architecture is resident in the RAM
14, and under the control of the CPU 10, is responsible for implementing a preferred ~;~
embodiment of the invention. ~
- In a preferred embodiment, the invention is implemented in the C++ `
35 progranuning language using obiect oriented programming techniques. As will be under~tood by those skilled in the art, Object-Oriented Programming (OOP) objects are software entities comprising data structures and operations on the data.
Together, these elements enable objects to model virtually any real-world entity in WO 94/29792 PCT/~JS94/00269 h ~ il i 3 ~
--6-- . .
terms of its characteristics, represented by its data elements, and its behavior, represented by its data manipulatic3n functions. In this way, objects can model concrete things like people and computers, and they can model abstract concepts like numbers or geometrical concepts. The benefits of o~ject technology arise out of 5 three basic principles: encapsulation, polymorphism and inheritance.
Objects hide, or encapsulate, the internal structure of their data and the algorithms by which their functions work. Instead of exposing these implementation details, objects present interfaces that represent their abstractions 10 cleanly with no extraneous information. Polymorphism takes encapsulation a step further. The idea is many shapes, one interface. A software component can make arequest of another component without knowing exactly what that component is The component that receives the request interprets it and figures out according to its variables and data, how to execute the request. The third principle is inheritance, 15 which allows developers to reuse pre-existing design and code. This capability allows developers to avoid creating software from scratch. Rather, through inheritance, developers derive subclasses that inherit behaviors, which the developer then customizes to meet their particular needs.
A prior art approach is to layer objects and class libraries in a procedural environment. Many application frameworks on the market take this design approach. In this design, there are one or more object layers on top of a monolithic operating system. While this approach utilizes all the principles of encapsulation, - polymorphism, and inheritance in the object layer, and is a substantial improvement over procedural programming techniques, there are limitations to this approach. These difficulties arise from the fact that while it is easy for a developer to reuse their own objects, it is difficult to use objects from other systems and the developer still needs to reach into the lower non-object layers with procedurallOperating System (OS) calls.
Another aspect of object oriented programming is a framework approach to j`
application development. One of the most rational definitions of frameworks comefrom Ralph E. Johnson of the University of Illinois and Vincent F. Russo of Purdue.
In ~eir 1991 paper, Reusing Object-Oriented Designs, University of Illinois tech3 5 report UIUCDCSg1-1696 they offer the following definition: "An abstract class is a design of a set of objects that collaborate to carry out a set of responsibilities. Thus, a framework is a set of object classes that collaborate to execute defined sets ofcomputing responsi~ilities." From a programming standpoint, frameworks are WO 94/29792 ~ r ~ 9 PCT/US94100269 essentially groups of interconnected object classes that provide a pre-fabricated structure of a working application. For example, a user interface framework might provide the support and "default" behavior of drawing windows, scrollbars,~menus, etc. Since frameworks are based on object technology, this behavior can be inherited 5 and overridden to allow developers to extend the framework and create customized solutions in a particular area of expertise. This is a major advantage over traditional programming since the programmer is not changing the original code, ~ut rather extending the software. In addition, developers are not blindly working through layers of code because the framework provides architectural guidance and10 modeling but at the same time frees them to then supply the specific actions unique to the problem domain.
From a business perspective, frameworks can be viewed as a way to encapsulate or embody expertise in a particular knowledge area. Corporate 15 development organizations, Independent Software Vendors (ISV)s and systems integrators have acquired expertise in particular areas, such as manufacturing, accounting, or currency transactions as in our example earlier. This expertise is embodied in their code. Frameworks allow organizations to capture and package the common characteristics of that expertise by embodying it in the organization's code.
20 Pirst, this allows developers to create or extend an application that utilizes the expertise, thus the problem gets solved once and the business rules and design are enforced and used consistently. -Also, frameworks and the embodied expertise behind the frameworks have a strategic asset implication for those organizationswho have acquired expertise in vertical markets such as manufacturing, accounting, 25 or bio-technology would have a distribution mechanism for packaging, reselling, and deploying their expertise, and furthering the progress and dissemination of technology.
Historically, frameworks have only recently emerged as a mainstream `, 30 concept on personal computing platforms. This migration has been assisted by the availability of object-oriented languages, such as C+~. Traditionally, C++ was ¦
found mostly on UNIX systems and researcher's workstations, rather than on Personal Computers in commercial settings. It is languages such as C++ and otherobject-oriented languages, such as Smalltalk and others, that enabled a number of 3 5 university and research projects to produce the precursors to today's commercial frameworks and class libraries. Some examples of these are InterViews from Stanford University, the Andrew toolkit from Carnegie-Mellon University and University of Zurich's ET++ framework.
WO 94129792 PCTIUS94100~fi9 ` ;. `
There are many kinds of frameworks depending on what level of the system you are concerned with and what kind of problem you are trying to solve. T}~e types of frameworks range from application frameworks that assist in developing the user interface, to lower level frameworks that provide basic system softwareservices such as communications, printing, file systems support, graphics, etc.
Commercial examples of application frameworks are MacApp (Apple), Bedrock (Symantec), OWL (Borland), NeXTStep App Kit (NeXT), and Smalltalk-80 MVC
(ParcPlace) to name a few.
Programming with frameworks requires a new way of thinking for developers accustomed to other kinds of systems. In fact, it is not like "programming" at all in the traditional sense. In old-style operating systems such as DOS or UND(, the developer's own program provides all of the structure. The operating system provides services through system calls--the developer's program- makes the calls when it needs the service and control returns when the service has - been provided. The program structure is based on the flow-of-control, which is embodied in the code the developer writes.
When frameworks are used, this is reversed. The developer is no longer responsible for the flow-of-control. The developer must forego the tendency to understand programming tasks m term of flow of execution. Rather, the thinking must be in terms of the responsibilities of the objects, which must rely on the framework to determine when the tasks should execute. Routines written by the developer are activated by code the developer did not write and that the developer never even sees. This flip-flop in control flow can be a significant psychological - barrier for developers experienced only in procedural programming. Once this is understood, however, framework programming requires much less work than other types, of programming.
In the same way that an application framework provides the developer with s:
prefab functionality, system frameworks, such as those included in a preferred embodiment, leverage the same concept by providing system level services, which developers, such as system program~ners, use to subclass/override to create . ' ~; 35 customized solutions. For example, consider a multi-media framework which could provide the foundation for supporting new and diverse devices such as audio, video, MIDI, animation, etc. The developer that needed to support a new kind of device would have to write a device driver. To do this with a framework, .~ wo g4/2979~ 3 2 ~j rCT~11594/00~69 1.~
g .
the developer only needs to supply the characteristics and behavior that is specific to that new device.
" , The developer in this case supplies an implementation for certain member s functions that will be called by the multi-media framework. An immediate benefit to the developer is that the generic code needed for each categoxy of device is already provided by the multi-media framework. This means less code for the device driver developer to write, test, and debug. Another example of using systems framework would be to have separate I/O frameworks for SCSI devices, NuBus 10 cards, and graphics devices. Because there is inherited functionality, each framework provides support for common functionality found in its device category.
Other developers could then depend on these consistent interfaces to all kinds of devlces.
COLLABORATION MODELS
Inherent collaboration models support the function and communication style of a particular place object. In particular, a preferred embodiment can support the following collaboration models: (i) screen sharing; (ii) annotation merging; and 20 ~iii) document merging. Accordingly, a user selects a collaboration model to conform to a created place object.
These three collaborative models provide users access to ~bjects in different ways. Users may view objects in real time through the screen sharing collaboration ~5 model. In contrast, users may contemporaneously access different portions of an object through the annotation and document merging collaboration models.
Certain place objects will have intrinsic collaboration styles which complement the purpose of that place object. Accordingly, collaboration 30 arrangements could include: broadcast screen sharing; interactive screen sharing;
telephony; shared white boards, projects or documents; bulletin board threads which is annotated; video conferencing; or, any combination thereof. ~-`
The screen sharing collaboration model displays all objects within a place that 35 exist on a host workstation to a number of users on other workstations. However, all objects existing on workstations other than a host workstation will not be displayed until moved to the host workstation. The screen sharing model requiresall users to share the same view of a place object.
wo 94l29~92 PcT~ss4/0026s . ~ ~
f~ 1 Lt ~ ", t~ ;"~,,,, ,.,,,~, Screen sharing can support different kinds of interaction in different place objects. For instance, in a small group meeting of several designers, drawings is analyzed and modified in real-time even though each designer is in a different 5 location. Each designer would possess the ability to modi~y the drawing. In a further instance, a place object could be a lecture room of a school wherein a presen~ation is being broadcast from one user to a group of other users. The user giving the presentation will be able to create a multimedia talk and present it to the rest of the class. During the presentation, members of the class may not be able to 10 do anything to change the presentation of the lecturer. However, the other users may take notes and perhaps engage in discussions among themselves.
Objects that can be annotated or merged, such as documents, are opened by all users for purposes of viewing. The view of each user with respect to the document 15 will, however, be different. Several users may thus annotate or merge a document simultaneously. This is possible since no user shares a common view with another.
Hence, each user engaging in a annotation merging or object merging collaboration can work on different parts of a document.
The collaboration models of object merging and annotation merging open objects, such as documents, within a place object to several users at once wherein each user can view a different portion of the object. For instance, a user may write an introduction to a document while another user is writing a conclusion. In this instance, the open document would not be automatically visible to each user within the collaboration. Rather, each user would open and edit a copy of the document that is later reconciled with the main document.
Accordingly, objects within a place object are supported based upon the collaboration model which is supporting the object. The collaboration model of screen sharing opens an object to all users within the collaboration. Since each user within a screen collaboration is tied into one view of the data, only one part of the .
file document is worked upon at one at one time. For example, all users will be able to make changes to a graphic document since most graphics programs support full screen views that contain all of the data in the graphic document. Word processing 35 documents are, however, different since they are multi-page documents. Thus, all users within the collaboration can only view and work upon one page at a time onthe display. Thus, all open word processing documents on the workstation of the host will be viewed by all.
WO 94129792 ,~ PCT/US94/00269 ~-Inherent characteristics of a containex A container has the following inherent characteristics:
It can contain objects. Whereas worl<space containers (e.g., folders and places)5 only hold workspace ob)ects (e.g., documents, folders), other special-purpose containers may hold other types of objects. For example, a database container can hold the result of a database query. Deleting an object from a container removes the object's model (in-memory structure)- and model store (on-disk structure) from the system.
10 It can contain reference links to objects and provides the scope for fixing-up these links when the referred-to objects are copied from one container to another.
Deleting a reference from a container only removes the reference, and does not affect the referred-to object's model and model store. Non-containers can also hold references to objects: containers and references are not tightly coupled.
It can form a containrnent hierarchy which is independent of file system hierarchy. In other words, users are free to organize the information in their workspace using containers, regardless of where or how the information is stored in the file system. A container can span multiple volumes. If all the volumes are not 20 available then the unavailable objects are not shown or grayed out. The container itself, i.e., the root of the containment hierarchy, lives in its enclosing place and belongs to the same storage domain (network:machine:volume) as the place.
PLACE OBJECTS WITHIN A DISPLAY INTERFACE
Place objects are hierarchical and are the highest-level objects in a user interface. Accordingly, all interaction and conununication occurs within the context of some place object. Each user has their own home place object. The home place object is the primary, top-level place object which appears to a user upon30 commencement of a session. Navigation between places is possible once the user adds more place objects to the home place or desires remote access to places. A user ~ `:
can create what are referred to as sub-places within the home place.
Place objects can be segmented by characteristics such as task, project, and 35 collaboration model. Once a place reaches a large size, a user may subdivide that place into smaller places. Place objects which encompass an entire desktop display, however, can also appear in a window.
WO 94t29792 PCT/US94/00269 . `~-`
Place objects, not applications, are employed for organizing and structuring `;"
information. According to the specific demands of their work in a given place object, users can insert objects within that place to facilitate that work. Such objects include file documents, tools, and containers. Once contained within a place object, ,, objects can be arranged and maintained in a desired manner. For example, in the workspace of a place object where home financing is undertaken, a user might insert objects such as a ledger, a check book, and an on-line connection to the local bank. When the place object is closed and reopened, the objects within the , 10 workspace of the place object appear in the same manner in which they were left.
t A user can simultaneously access and display multiple place objects by opening one or more places into window-based place presentations in addition to the desktop place presentation. Place objects within a window possess all of theattributes associated with desktop place objects. This feature allows a user to decrease the size of a place object window in order to display multiple place object windows. A user may open a set of place objects within a window. Consequently, auser can readily move and copy objects between the multiple place object windows.
Furthermore, a user can proficiently navigate between the multiple place objects.
2û
Referring to Figure 2, a window place within a desktop place is illustrated.
Place object 200 is entitled "Home place" as indicated by title bar 202. Workspace ~04 ~
of place object 2û0 encompasses the entire desktop display. Also appearing within Figure 2 is place object 206. Place object 206, entitled "Machine room" as indicated 2 5 by title bar 208, is enclosed within a window and possesses workspace 210. Fully displayed objects 214 and 216, and partially displayed object 218 are located within workspace 210 of place object ~06. Place object 206 further possesses control 212 which allows place object 206 to be expanded.
s , Referring to Figure 3, place object 206 of Figure 2 is illustrated upon expansion. By dragging control 212 of place object 206, as shown in Figure 2, place object 206 is expanded to its full size which is the size of the entire desktop display. t~`
Consequently, object 218 and object 300 are fully revealed within workspace 210 by r enlarging place object 206 to the size of the desktop display.
,~ 35 A preferred embodiment is capable of supporting multiple users that share a single workstation wherein each user has a home place object where their personal ,i,;
,i , .
.~
~ WO 941297~2 ~ 3 ~ PCT/US94/00269 `~
, ... ~ ~ ! ' `-information data resides. Each user can then create sub-place objects within their 1, home place object in order to partition the personal information.
Referring to Figure 4, a typical hierarchy of user place objects with~n a workstation is illustrated. Workstation 400 is shared by three users named Ann, John and Terry. Each such user possesses a home place object depicted at 402, 404 and 406, respectively. Further, home place object 404 (John's Home Place object) is further decomposed into sub-place object 408 (John's Work Place object) and 410 aohIl s Art Place object).
~ 10 3 A workstation can also ha~e other place objects on it which are not associated with a specific user. Such place objects preferably include a guest place object, a log-in place object, a system maintenance place object and a transfer place object. A
guest or public place object permits access by users who are not known to the workstation. A log-in place object contains objects and information relating to the cornmencement of user sessions. A system maintenance place object permits a userto perform maintenance tasks and contains a machine room. The machine room contains persistent configuration information about the workstation and may not be associated with a specific user. A transfer place object permits for the storage and transfer of information among users of the workstation.
ACC-ESSING PLACE OBJECTS
There are a number of ways to access and navigate between place objects, including: (i) a resource book; (ii) within a representation of a map; (iii) using a reference to a place, such as a postcard; and (iv) an invitation.
A resource book provides access to place objects by presenting information to a user within the context of a book. The information contained within the communication book regards objects, referred to as resources, that exist within a name service directory. Resources that are made accessible through a resource book ~us include objects such as a person or place. Hence, a resource book provides ameans by which place objects can be found and accessed.
ri ' Within the resource book exist one or more tabs for place objects within the resource boolc wherein information describing the place objects is contained. Such information may include the objects located within the place object, and a cost associated with accessing the place object. The resource book facilitates the finding wo 94/29792 PcT~usg4/00269 ~ 1 .E 1 ~J 2 ~ --14--of a place object and thereafter enables a user to bring the place object within a local t workstation as a persistent reference. Accordingly, a selected place object r~resented within a resource book, as possibly a postcard which is discussed~below, can be dragged from the resource book onto the desktop display of a workstation for ` i, future access to the place object. I, A map is a spatial representation of place objects. Maps include a set of place objects that are connected in some manner. Thus, a user can travel upon the map to locate a place object known to exist within a certain area. Through the use of 10 animation and sound, maps can provide context and a sense of transition as a user moves from one place object to another.
The map uses a spatial view to provide access to various place objects that are designated by a user. Users can use the map to create new place objects and 15 manipulate existing place objects. Maps are interactive. Accordingly, a user may utilize a map to~ open a place object by double-clicking its reference on the map;
(ii) drag references such as postcards from the map to an acceptable container; (iii) move files by dragging them from the current place object to a reference to another -~ place object on the ma; and (iv) change the properties of one or more place objects 20 by selecting one or more place objects, opening a property sheet, and specifying the new properties of the selected place objects.
A map can also provide context and a sense of transition as a user moves from place object to place object. For example, when a user exits a first place object ~25 and travels to a second place object, a map shows the movement between places by illustrating an animation, e.g.. a line between two objects. Such an animation sequence provides location context for the two place objects. First, the sequence - relates a sense of transition. Second, the sequence reminds the user that the map is always available for tra~eling from one place object to another~ ! ¦
Postcards are references to place objects. Postcards are formed by a user - accessing a place object that is desirable of being returned to. Then, by forming a ~ ~ postcard of the accessed place object to facilitate future access to that place object.
-~ ~ Such a postcard can also be forwarded to other users so as to alert the users to the 35 existence of the place object as well as provide access inforrnation.
Invitations, which are also references to place objects, enable specific users to access a place object at specific times. This action allows a creator of a place object to , ..
~ WO 94129'79~ r~ ~ PCT/US94/00269 ~`
.- ........................................................................... :.. "-,.,. . :` ;-., designate selected users to access a place object for a limited duration and subject to specified restrictions. Since some place objects may charge for access, an invitation may allow a user to receive a trial access to a place object. An invitation can s~ecify that a user can have access to a place object at a given date and time; thus acting as a simple access control mechanism. Furthermore, invitations can also be employed -to solicit other users to join in collaborations. Since it would not be appropriate to insert a person within a collaboration without prior notice, an invitation could be forwarded to give the user the option of joining into the collaboration.
Referring to Figure 5, an invitation is illustrated. Invitation 500, an "invitation from Rob Dickinson" as denoted by title bar 502, contains information regarding a "CPSR Annual MEETING" as indicated by heading 504. Information regarding the person forwarding the invitation, the time of the meeting, the place of the meeting, and the designated guests is also disclosed within the invitation at reference numerals 506, 508, 510, and 512 respectively.
Once a desired place object is located, a user must navigate between place objects that are sub-places. The navigation method selected by the designer of aplace object is an important characteristic of a place object. Since place objects are hierarchical, a user will need to know if a place object is within a deep nestedstructure or a shallow structure. Deep nesting may mean that the user must open successive sub-place objects, or use references to get to a deeply nested place object. "
1 In contrast, a shallow structure with many elements will take up more room 3 spatially and there~y potentially give the user a greater number of choices at higher levels. Hence, the navigation method chosen by a creator depends upon the st~ucture of the place object desired to be reached.
: '~
Preferably, a combination of scaling and panning methods are used to ?
navigate within a desktop display. Uniform scaling of a place object involves expanding or reducing the dimensions of a place object while maintaining a constant aspect ratio. Scaling is also important to users who zoom into and out of a ? docu~nent or place object view. Once a place object is satisfactorily scaled, panning allows for navigation within the place object. Panning involves manually directing s the desktop, by moving a graphic cursor; to display a particular portion of a place 3 5 object. By dragging the panning graphic, the user moves other regions of the desktop into view.
, WO 94ng792 PCl`JUS94/00~69 i 9; ~ 1 6 Alternatively, a preferred embodiment employs scrolling, auto panning or distorting methods for navigating within a place object. Auto-panning detects the motion of a cursor into a hot-zone, usually the area around the edge of the desktop, and pans the display in the direction of the movement. The system also provides 5 us~rs with a mechanism by which queries are directed to locate certain place objects or certain contents of a place object.
- ACCESS LIMITATIONS
Security and access control within place objects can be implemented in several ways. Pirst, a single set of access rights could be associated with a place object. Thus, any user within such set of access rights is permitted to access a place object. Second, minimum access rights to a given place object could be maintained to a designated set of persons. Increased access rights would, however, be associated 15 with objects contained within the place object. Third, access rights can be specifically ; assigned to individuals and groups for the place obiect and those rights would apply throughout the place object and contained objects. These rules provide for different levels of sharing within the place object without requiring indiYidual file management.
As a further method for limiting access, costs can be levied upon a user accessing a place object. Accordmgly, place objects can be utilized as a means of providing services. Such services could include information services such as DowJones, news services such as the Wall Street Journal, purchasing services and 25 gathering place objects such as America On-line. Place objects can be constructed for providing services and controlling access to the services.
Several models for determining a cost for a user entry to a place object are enabled. T~ particular, costs can be based upon ary one or a combination of the 30 following: (i) access to a place object; (ii) access time to a place object; (iii) objects :r, accessed within a place object; (iv) a fixed cost or subscription; (v) predetermined :~ usage limits; or, (vi) any combination thereof.
.~ .
Preferably, notification of the incurred costs and potential costs are displayed3 5 to a user upon access to a place object. In addition, a user is forewarned of potentially expensive operations. Moreover, a user can designate a maximum cost for a given place object. When such cost is reached, the user is notified and can ~ .
, ;J
WO 94/29792 ~ PCT/US94100269 ~:~
. ~ . . `. .
either choose to exit the place object or assume the additional costs that will be incurred.
~. i VISUAL REPRESENTATION OF A PLACE OBJECT
The visual representation of a place object is important for creating a sense oflocation. Accordingly, a place object can be designed for a number of elements including the background image, layout, scale, design style, spatial volume, lighting effect and typography. A preferred embodiment combines these elements to create environments which are distinctive and which facilitate navigation.
The background image applied to a place object can be formed through any read-only model. This includes moving images or images that are data-driven suchas a night/day place object which changes its presentation based on the current time.
Further, a background image of a place object may be blurred to add depth - stratification between background images and items such as windows and object icons in the forefront of a display. Saturation can also be employed to create adistinct style between the foreground items and background image.
~:
2 0 The density and layout of a place object are adapted to satisfactorily reflect the place object. Any layout changes that a user makes to a place object are saved and restored upon return unless the-place object only allows read-only access. The relation of the background image to the scale and proportion of the dimensions of a place object establish the sense of scope of a user. Accordingly, a small and receding 2 5 place object indicates distance, while a larger place object represents the vastness of a - place object.
t, The spatial volume of a place object is critical to the representation of the place object. The selection, placement and rendering of objects in a place object 3 0 indicate the range of options available to a user. Some place objects are readily comprehensible to a user while others invite further analysis by opening and reading. Nevertheless, place objects are readily distinguishable by viewing the elements contained within a place object. Furthermore, the depth of a space and interaction methods of navigation are characteristics of place objects.
Implementation of special virtual realities provide use of three-dimensional input ,,~ devices and navigation.
i :,s WO 94/29'792 PCT/US94100269 -i i 1 1 ~ 2 .~ , ` ` `
The elements of lighting and typography aid in providing each place object with distinct characteristics. Place objects may be designed by focusing attention 3 upon a particular aspect of a place object. Typography, such as display typefaGes used at large sizes, can also be employed to provide distinctive features to a place object.
OBJECTS OTHER THAl~IT PLACE OBJECTS
As among place objects and other types of objects within a workspace, place objects are the highest level object. Accordingly, it is within the context of place objects that typical objects, which include container objects, such as folders, are found. Moreover, container objects, such as folders, cannot contain place objects.
Container objects can only contain references to place objects such as postc~ards.
Place objects can contain a multitude of other objects. Such objects include documents, containers, appliances, tools, stationery, and references to persons.Place objects may also contain other place objects which are referred to as sub-place objects. Place objects can also contain references to other place objects. Hence, a hierarchy of place objects can be mainta~ned to allow for further subdivision ofrelated objects.
~20 A preferred embodiment allows for the creation of objects which can be inserted within the workspace of shared place objects. For example, bulletin boards inserted within a place object to allow persons that have accessed a place object to exchange information with each other. Further, business cards can be inserted wi~in a place object to allow persons to contact the person represented by a business card.
~' `
A preferred embodiment allows a user to access selected objects while ~; navigating through place objects by two methods. The two methods include a 3 0 portable container and a workspace shelf. Portable containers, which are visually represented as a backpack or briefcase, are employed to contain references to objects ~
such as documents, containers and tool palettes. Such objects are available within . .`
each accessed place object, including shared place objects. To share or copy a carried object into a collaborative place object, however, the object is dragged out of the 35 container into a shared space.
A workspace shelf is a temporary repository for data that a user is moving from one place object to another. A workspace shelf, visible on the display at all ~ A
" S, WO 94/29792 i~ 2 ~ PCT/IJS94/00269 ~ -!`
-19- ~ ~
i times, facilitates user operations by presenting workspace objects which can be directly accessed from the shelf.
.j ~
Referring to Figure 6, a workspace shelf is illustrated. Desktop 600 contains menu 602 along with shelf 604 which is open and shelf 606 which is closed. Shelf604 and shelf 606 possess cord 60B and cord 610, respectively. Accordingly, cord 608 was dragged with a mouse pointer to open shelf 604 In contrast, cord 610 was notdragged thus shelf 606 remains closed. The opening of shelf 604 produces two workspace objects that are represented by icons 612 and 614, respectively. By double clicking a mouse pointer on a workspace object icon, the workspace object is accessed or opened.
Instead of employing a workspace shelf or a portable container, a user may choose to move one object to another object by direct manipulation. Direct manipulation simply calls for an object to be selected, dragged until dropped in a target object. The dragged object contains information conceming type, content and origin information such as "read and write" or "read-only" attributes. The target object uses such information to determine what exchange should take place between the dragged object and target object. That is, what exchange should be taken pursuant to default conditions. In particular, a preferred embodiment allows 3 for the following five types of exchanges: (i) reject; (ii) copy; (iii) move reference; (iv) send copy; and (v) move. Preferably, place objects and persons have "move reference" as default conditions for dragged objects.
Preferably, the arrangement of objects contained within a place object is maintained separately for each user associated with a workspace. Thus, every user of a given place object has a state associated with the place object which depicts the place object as it was last rearranged by the user. The user state is saved on the local workstation of the user. Altematively, a given place object can be maintained within one single state where all users who access the place object view the place object in the same manner. ;
t, ~3. Objects can be deleted from the workspace of a place object by moving icons to ~^
- a trash icon and thereafter selecting a command to empty the trash. Preferably, all ,;; 3 5 workspace objects can be deleted through only one trash object. Further, such trash object displays target acceptance when objects to be deleted are dragged over the ~;: trash icon and thereafter display visual feedback when the dragged object is ;:
,;-,;
!r , " , .. ..
WO94/29792 ~ j 2~ PC~/U594/00~69 contained therein. Moreover, the trash object can be opened to view the elementscontained therein.
.
PERSONS REPRESENTED WIIHIN A PLACE OBJECT
! 5 A person object is only utilized to indicate the presence or absence of a personfrom a given place object. For instance, when a user creates a place object, a person object of the user, is preferably formed within the created place object. Thus, other users accessing the place object are made aware of the presence of the user through ¦ 10 the existence of the formed person object. L~ contrast to person objects, references to persons do not indicate the presence or absence of a person within a place object.
Rather, references to persons provide information about a person and the manner of communication with that person. For instance, business cards that are situated within a place object inform users how to contact the person referred to within the 15 business card.
In addition to representing a person as a person object, other aspects of presence can be depicted. Such aspects include whether: (i) a given place object is the active or principal place object of the user; (ii) the interest level of a person, that is, 2 0 whether the attention of the person is divided among a number of other placeobjects; (iii~ the activity level of a person within a place object; and (iv) the availability of a person for co~munication.
: :
- A preferred embodiment can relate whether a given place object is the active 2 5 place object of a person. That is, whether a person who is represented within a given place object is currently present within the given place object. This dete~mination is only necessary when a person is in more than one place object ~ simultaneously through the utilization of window place objects. Further, objects 3 wi~in a given place object, such as a contained document, can also be depicted as 3 o being viewed by a specific person.
The interest level, or level of attention, of a person relates to the number of place objects which a user is currently associated with. Accordingly, a user who is ~' ~ present within three place objects probably has less attention in any one of them 35 than someone who is solely present within one place object. Further, as with the . aspect of an active place object, the relationship of being in a place object and being involved in a contained document is also considered in rendering an interest level.
. . .
"
WO 94/29792 ~ ~ 3 2 ~ PCT/U594/00269 ~, -21-The activity level of a user denotes whether a user is currently undertaking any activity within a place object or has recently undertaken an activity. Thus, a high degree of inactivity might indicate that the person is no longer in theiroffice or at their desk. Such information is useful when attempting to contact a person5 that has a high degree of inactivity.
The aspect of availability of a person can also be related by a preferred embodiment. That is, whether or not the person is available to communicate or becommunicated with. Although a preferred embodiment provides for diverse forms 10 of group communication, persons can also elect to work undisturbed. Accordingly, a user may indicate a state of unavailability wherein no communication from other users will be permitted. Thus, a state of unavailability is related by representing a person within a place object with an indication of the desire of the person to be left undisturbed.
Other types of specific information, concerning a person represented within a place object, is related to a user. Such information may include the name of theperson, the physical location of the person, whether the person is on-line, the level of privilege on each document being shared by the person, the title of each 2 0 document being shared, and which parts of the document the person is working on.
This specific information can be retrieved through a "GetInfo" command with - respect to a given person.
:
A preferred embodiment enables a person to be represented through different 25 identities. Specifically, a person to be represented within a place object can be represented by either a photographic image or another less personal representation.
Further, persons can have their identity remain anonymous or use a pseudonym instead of representing persons by their true identity. Moreover, the identity of a person performing an action within a given place object can be concealed.
A place object may require a certain level of identification before access by a user. For instance, a place object may require all users that access a place object to be represented by their true identity. Other place objects, such as a gathering place `
object, allow users to employ pseudonyms for their true identities. Still other place ,c 3 5 objects, where confidentially is of the essence, may conceal all identities for those who access and participate with the object.
~ ", ;ii ~j s `.
. ..
WO 94/29792 PCT/US94/00269 . ~
g ~ ~ J 9 `~
In order to have a user preference correspond to a required level of identity ofa place object, a negotiation mechanism is employed. The negotiation mechanism allows a user to select a proper identity based on the required level of identity of a place object. For example, a user may desire to be anonymous by default. In the event that a user attempted to access a place object requiring the true identity of each user, the user is prompted with a message that states that the place object does not allow anonymous entries. Then, the user is prompted again for entry. Thus, a user is given an opportunity to adapt a preferred identity based upon the existing circumstances when the preferred identity is insufficient.
Preferably, persons are represented withLn the workspace of a place object along with the other contained objects of the place object. Alternatively, persons can be depicted within another medium not physically within the workspace of a place object. Such mediums include: (i) a separate window; (ii) a slide-out drawer that displays the persons when opened; and (iii) a menu which displays a palette of - connected persons.
: .
The choice of whether to represent a person to be physically within the workspace of a place object or extemal to a place object depend upon the function of 2 0 a person with respect to a place object. Accordingly, a person who provides services within the place object is accurately depicted by representing the person within the place object. Por instance, a librarian is typically thought of performing various services for the public within a library. Thus, the librarian can be depicted to be within the library. In contrast, the visitors to the library can be depicted within a 2 5 separate window.
r~ .
~ Since a large number of persons may exist within a given place object, a 7 preferred embodiment provides representations of a group of persons scaled within a the place object. When there are a large number of persons in a place object, individual communication becomes less likely. Thus, all persons in the place object i~ can be collapsed and represented as a single group. Accordingly, all persons belonging to the group can be communicated with simultaneously by sending ; messages. The ability to communicate with all persons of the group are subject to access control. `
!1 3 5 In the event that all persons are not desired to be collapsed into a group, a large number of persons can be partitioned. That is, only a segment of all the persons are represented and instantly accessible. Partitioning can be arbitrarily ..
.. .
wog4n979~ J PCT/U594/00~69 j~
,, . . ~
determined. For example, those persons located closest to a user can be separately grouped.
".
Regardless of whether a large number of persons are represented by 5 collapsing them into a group or partitioning some members of the group, a preferred embodiment provides various location tools whereby a user may search through the large numbers of persons and identify a particular person.
DETAILED LOGIC
The following section sets forth the detailed logic of a preferred embodiment in accordance with the invention. Figure 7 is a flowchart setting forth the highlevel flow of control in accordance with a preferred embodiment. Processing commences at terminal 700 and immediately passes to function block 710 where a 1S user logs on, function block 712 illustrates the activation of the associated travel bag based on profile information stored in the place object, and in function block 715 the initial place object is activated based on user profile information. Then, at decision block 720, a test is perforrned to determine if a user desires to navigate to another place. If so, then control is passed via label 730 to Figure 9, label 900 to process the 20 navigation to a new place. Then, when control is returned, processing re-coIrunences at decision block 720. If not, then in function block 740, the tasks in the current place environment are processed and control is passed back to function block 710 to await another user log on.
, Pigure 8 is a flowchart setting forth the detailed logic of user session processing in accordance with a preferred embodiment. Processing commences at terminal 800 and immediately passes to function block 810 where a user selects aname for a list of names. Then, at function block 820, a user session is created by instantiating a user object. Then, function block 830 starts registered items associated with a user object, function block 840 instantiates the registered item called place Butler, function block 850 opens the user travel bag associated with ~ place Butler, function block 860 determines the sta~ting place for user place Butler, .
i~ function block 870 opens place and terminal 880 returns control to the calling program.
h Figure 9 is a flowchart setting forth the detailed logic associated with closing :'t an old place and opening a new place in accordance with a preferred embodiment.
- Processing commences at terminal 900 and immediately flows to function block 910 . , .
~A; '.
to lc~cate the other place, exit the current place as set forth in function block 920, and perform a test in decision block 930 to determine if the previous place exited ok. If the previous place exited in an appropriate manner, then the target place is opened in function block 940, the user is prompted to enter the target place in function block 950, the previous place is closed in function block 960, and control is passed back to the calling application in terminal 970. If ~he previous place does not exit appropriately in decision block 930, then control is returned via terminal 970 to the calling application.
Figure 10 is a flowchart setting forth the detailed logic associated with closing a place in accordance with a preferred embodiment. Processing commences at terminal 1000 and irnmediately passes to function block 1010 to close the presentation documents associated with the old place, a profile of current placestatus information is then stored at function block 1020 and a test is performed at decision block 1030 to determine if additional presentation documents are available.
If so, then control passes to function block 1010 to process the additional documents.
If not, then control is returned to the calling routine ~ia terminal 1040.
Pigure 11 is a flowchart setting forth the detailed logic associated with opening a new place in accordance with a preferred embodiment. Processing commences at terminal 1100 and immediately passes to function block 1110 to drawthe background associated with~a place. Then, at function block 1120, the documents associated with a place are opened, and the presentation associated with the documents is initiated in function block 1130. Then, a test is performed at decision block 1140 to determine if more documents remain to be processed. If so, then control passes back to function block 1120 to process the remaining documents.
If not, then processing is terminated at terminal 1150.
, '.
Architecture 3 0 The architecture setting forth the detailed logic is presented below. The logic Fd~ is presented using tools such as class and object diagrams to present interactions :t'' within the system. Figure 12 is a Visual Design Language (VDL) key setting forth terminology used in other VDL illustrations in accordance with a preferred .~ embodiment of the preferred embodiment. Labèl 1200 shows an example of ; 35 collaboration. Label 1210 shows an example of creation of an object. Label 1220 ~,.; shows an example of indirect corroboration. Finally, label 1230 shows an example of containrnent. Figure 13 is a Booch Diagram in accordance with a preferred i embodiment.
i ,, .
92 PCT/US94/00269 .~:
! ., . -.' ` ~,'"
Logically, a place is a self-contained environment which can be manipulated atomically. Unfortunately, the content which is running in a place is logicall~
associated but is not grouped by any lower level services. Put differently, a place is a 5 logical grouping of items which run in separate address spaces and are treatedindividually by operating system frameworks such as the layer server, view system or document architecture. In order to function as a logical unit, the higher level of place services must manage the items of a place to present a user with a conceptual model of separate environrnents as illustrated in Figure 14. Each user has some set ; 10 of places on a machine for which they are the owner. Each user may also have access rights to be able to enter other places.
Ownership Hierarchy Of Places Each user on a given machine will have a single "home" place where they 3 15 can store their documents and workspace items as depicted in Figure 15. Since sharing of individual machines is allowed, there can be many home places on a system, and there is a simple way to configure the system to have a guest or public place which other people who are not known to a system can use. A simple hierarchy of places is illustrated in Figure 4 which illustrates a logical hierarchy of places among users of a shared machine. Each person has their own "home" place which contains their particular information and which is further divided up intosubplaces for different uses.
, Users are always in a place Users always exist in a place. Users are never void, so when they log in, they ~ must be positioned in an appropriate place. That could be their home or default 3 place, the last place they were in before logging off, or a place of their choosing.
Figure 16 illustrates some example dialogs which give just these choices.
3d Users have the option of specifying which place to go to afte~ log-in. They choose from one of the following possibilities: 1) absolute: go to a specific place such as the Home or the Mail place, or 2) the most recent place (i.e. where the user .
,- was immediately before they logged out). If the most recent place is a remote place, the system may ask if the user wants to go there now. The user might see a dialog ;
' 35 box similar to ~e dialog box illustrated in Figure 16.
Each user has a place designated as the default place. The default place is justa reference to the place which the user wants to commence operations with when WO 94/~9792 ~ J ~ ~ PCT/U594/00~69 !`~``' 2 6-- `
i.
the user logs in. The default place is also the place a user can retum to when necessary. We can make this more readily available by some shortcut such as a command key or by access through the shelf. By default, the user's home plac~ istheir default place.
Places Maintain User-Specific Information Many aspects of the design for places allow for user customization and history. For example, each user may have their own view of a place and their ownsaved presentations of documents. This information must be stored somewhere, and since it is user-specific information, it is stored in the user area provided by the people subsystem. User-session subsystem start up place elements. The places design requires certain interface elements to be opened when the user session hegins. An example of such an object is the shelf or travel bag. The places framework requires certain processes, such as the history service, to be running.
The creation of a user session starts these services.
Places Can Show which People are In Them ,.~
Figure 17 illustrates a people strip which shows the people in a place. From the icons for the people in the place, a business card for that person can be automatically dragged. The TPl~ce model class maintains a set of TPerson objectswhich are currently connected to the place. As people enter the place, person objects are instantiated for them and added to the place model. When they leave the place, the place removes its references to people.
Below are the methods of the TPlace model which relate to Person presence management. Their interaction is illustrated in Figure 18.
3 0 class TPlaceModel: public TFolderModel 1 public: i ,,j ;
/ /...other stuff removed...
:
virtual void AdoptConnectedPerson( TPerson* );
v virtual void AddConnectedPerson( const TPerson&);
virtual void RemoveConnectedPerson( const TPerson& person );
.0, wo 94/29792 ~ i ~ 2 3 PCT~Us94/00269 !:~ 2 7 virtual TPerson~ OrphanConnectedPerson( const TPerson& person );
virtual TIterator* CreateConnectedPeopleIterator() const;
virtual Boolean IsConnected( const TPerson8~ person );
5 / / Some speculative ideas virtual Boolean AllowPersonToEnter( TPerson& person );
// virtual void PersonEntered( TPerson& person );
virtual TInterest~ CreateAddedPersonInterest();
virtual TInterest* CreateRemovedPersonInterest();
Places and user preferences The process by which a person object gets added to a place model is illustrated in Figure 19 and discussed below. Taken to its logical extreme, the implications of a place as a virtual machine would seem to indicate that each place would have itsown ~et of preferences associated with it and that all user preferences would also be specific to places. Doing this provides a high degree of flexibility to the user in terms of allowing almost completely different user environments (to the extent that environments can be customized using preferences), but does so at the expense ofsimplicity and in doing so requires much more sophistication in terms of interfaces which should be presented on top of preferences.
Allowing preferences which are place specific is complex because of the number of possible intentions the user might have when specifyin~ them:
use this preference only when in this place.
'~
make this the default preference for all places not having a specific preference of this type.
:, iJ make this the current preference of this type always. This preference is the overriding value. If default and place-specific preferences are the only parameters i'3' provided, users may become confused and provide an invalid default and expect it ;3, ~ 35 to apply everywhere. A place could be entered having no place-specific preference of that type.
.
-. :-WO 94/29792 ~ PCT/US94/00259 f~ f.~1 ~329 -28-:
The relationship between places and the workspace is set forth in Figures 20 and 21. Places are the highest level entity of the workspace and serve as the context for the usage of the other elements of the workspace. Places can contain othef 3 places and can contain other workspace elements, such as folders and documents. --t 5 Essentially providing a partitioning of user information space into moremeaningful logical groupings, such as by project, by task, by corporate organization, etc. Within a place, there exist a containment hierarchy of folders and documents as pictured below.
f 10 Maintaining A Persistent Document State One of the hmctions which a place presentation must support is the ability to ' restore state to that which existed the last time the user was in the place. E~oth places and presentations on places reference documents which they logically have, 15 open within them.
keep track of the set of documents open within the place.
open these documents when the user enters a place.
close these documents when the user leaves a place.
...
for all of the above, the place presentation needs to be able to save the specific presentation which was open in the place in order to present the environment in a 25 realistic state. For example, if a calendar document supports multiple presentations, the monthly view should be in one place and the day view in another. A containerf~ in list view is appropriated in one place and in a spatial view in another. Both ~, places and place presentations must maintain information about which documents are open urithin the place.
User-specific Presentations Stored With User ,. . .
Figure 22 shows the objects which are stored with the user information in order to maintain document presentation state. The large model store shows that 35 both saved presentations on places and presentations on user documents exist here.
~he catalog shows the mapping of document to specific presentations for places.
These are used when users open documents so that the correct presentation can beused. Within the user's space, the people subsystem provides storage for preference WO 94/29792 ~ ~ 9 ~ Y PCTrUS94/00269 . . , 1 ,~, information and recent history information. The presentations themselves are stored here as well as a catalog which references them. The catalog uses the dictionary semantics which user preference MPreferenceCollection objects provide.
j `:
s Each person has a single presentation on a place, such that it contains all the information necessary to present that place to the user as it was last seen. This includes the list of open documents within the place (represented as presentation surrogates and possibly with data model IDs as well).
lQ Each person can have multiple presentations saved on a single document.She can have a different presentation for each place in which it is seen.
A catalog of document presentation information maps documents to existing saved presentations which exist for the places in which they were seen. The ~
information in this catalog is document (which needs only model ID (a global ID) as a key, place ID, and the presentation surrogate for the presentation.
Place presentations require information pertaining to documents including when a document was first opened in order to properly restore state the next time in the place. To do this, they need to receive notification of when window presentations get open in the place. This is accomplished through the following procedures:
all open/close/follow commands use a form of model command which delegates the work for opening and closing documents to a contained policy object.
Figure 23 is a Booch diagram illustrating command subclasses which employ place document policy objects in accordance with a preferred embodiment. Label 2310 ~.identifies a model command for opening documents in accordance with a preferred ~a, embodiment. Label 2320 identifies a subclass of the model command of the 3 !
command presented at 2310 which delegates to the place document policy object.
~ Label 2330 is a mixin class which stores the document policy used by 2320 in ;; memory. All place specific model commands subclass from the object at label 2330.
Label 2340 is a policy object which performs the operation set forth in the preceding objects.
3~
.~
the policy object wraps up the type of behavior we want to happen for this place. The behavior is different for collaborative places or if a different human interface is desired.
"
i; .
.
f. ~
WC) 94/29792 PCT/US94/00269 -.. '`.
~ Y 2 ~ 3 o ~
when each container or document presentation registers its "open"
command into the menu, it uses these delegating open commands, which have information in them as to how to contact the place for document registration.
5 These presentations received the policy object themselves when they were opened, as you will soon see.
when the open command is executed, it will start up the document to be opened (that occurs when the command itself is passed to the document to be l o executed~.
the open command will delegate the open to the policy object it contains.
the policy object determines the appropriate presentation to use by consulting15 the catalog of presentations saved for this user.
the policy object then opens that presentation and sets the policy object for tha$ presentation to be the same as itself. This is how the policy object propagates to all presentations opened within the place. This solution works even when there 2 0 are window places or multiple places open at once.
the policy object then registers the opening of the document with the place presentation~
25 the place presentation updates its list of open documents to add the new entry The steps involved in opening a saved presentation on a document within a i1 place are illustrated in Figure 24, and the steps involved in closing a presentation 3!0 on a document within a place are illustrated in Figure 25.
~ .
Container Model Architecture '-~`
When object A embeds object B, B's model is copied into A's model store. B
q 3 5 is called an embedded model. B forms an embedment hierarchy with A. B's presentation appears as a frame/thumbnail inside A's presentation. B's thumbnailcan be opened in-place in the same window and team, or out-of-place in a separate window but the same team. When object A contains object B, B's model is not wo 94/29792 ~ ~ t PC'r/US~4/00269 ~
`
.`.. ;. . . l`
3 1 - .
.~
copied into A's model store. B is called a containable. B forms a containment hierarchy with A. B's presentation appears as an icon inside A's presentation. Balways open out-of-place (in separate window and team).
s Figure 26, succinctly explains the difference between embedment and containment. In this message, a request is made concerning a color matching problem. An image is embedded into the document and reduced to encompass the whole message without scrolling past the image. It has a distinction "HEY I'M A
FRAME" border. The image will by default open in-place. The folder holds Jeff's code for Jim to look over. It is contained in the message and will always open out-of-place.
Inherent characteristics of a container A container has the following inherent characteristics:
It can contain objects. Whereas workspace containers (e.g., folders and places) only hold workspace objects (e.g., documents, folders), other special-purpose containers may hold other types of objects. For example, a database container can hold the result of a database query. Deleting an object from a container removes the object's model (in-memory structure) and model store (on-disk structure) from the system.
It can contain reference links to objects and provides the scope for fixing-up~25 these links when the referred-to objects are copied from one container to another.
Deleting a reference from a container only removes the reference, and does not affect the referred-to object's model and model store. Non-containers can also hold references to objects: containers and references are not tightly coupled. t It can form a containrnent hierarchy which is independent of file system hierarchy~ In other words, users are free to organize the information in their ~, workspace using containers, regardless of where or how the infoImation is stored in the file system. A container can span multiple volumes. If all the volumes are not available then the unavailable objects are not shown or grayed out. The container itself, i.e., the root of the containment hierarchy, lives in its enclosing place and belongs to the same storage domain (network:machine:volume) as the place.
wo 94/29792 ~ 1 9 2 ~-J - 3 2 - I'CT/IJ594/00269 A smart container can use locators to filter its contents. Inherited ~:' characteristics of a container include:
User operations on a container (cut/copy/paste, drag/drop, selection, move, etc.) can be undone and redone an unlimited number of times.
A container can have a window / frame / thumbnail / icon presentation.
There can be multiple presentations of the same container - each presentation with a distinct look and possibly feel (e.g., folder and rolodex).
~10 Usage Scenarios The following scenarios will use folders and documents to describe the user interaction with containers and containables. Other types of containers and ~15 containables will behave similarly.
Creating a folder: double-click on a folder stationery and a new folder is created on a shelf. There will be other types of stationary for creating other types of containers.
A VDL diagram illustrating the creating a folder logic is presented in Figure 27.
~20 Copying a folder from one folder to another folder: option-drag hold down the Optîon key while dragging Folder A from Folder X and drop it into Folder Y.
Folder A' will contain copies of all the original documents. If these originals are linked, the copies will be linked to each other and not to the originals. A VDL
diagram illustrating the copying a folder logic is presented in Figure 28.
; Moving a folder from one folder to another folder: drag Folder A from Folder X
and drop it into Folder Z. A VDL diagram illustrating the moving a folder logic is presented in Figure 29.
30~
,~ Deleting a folder: drag Folder A from Folder Z and drop it into a Waste Basket (a reference to the Trash Can) or into the Trash Can. A VDL diagram illustrating the s moving a folder logic is presented in Figure 30.
Copying (moving) a containabl2 from one folder to another folder: option-drag Document Foo from Folder X and drops it into Folder Y. If the copied document ; has any l~ks, its links will be properly fixed-up. The moved document will be removed from the source folder.
,, WO 94/29792 PCT/US94tO0269 _33_ Copying (moving) a containable from a foldler to a document:: option-drag Document Foo from Folder Y to Document Bar. Since a document can also c~ontain ,. containables, Document Foo will appear as an icon in Document Bar. (The moved 5 containable will be removed from the folder.) A VDL diagram illustrating the moving a folder logic is presented in Fi~ re 31.
-:
::
`:
:
:
, ~.
.
t~
.,' ~
'3 :1, ~,
Figures 20 and 21 illustrate the relationship between places and the workplace in accordance with a preferred embodiment;
WO 94/29792 PCT/US94/00269 - .-h~ 3 f~ ~i Figure 22 shows the objects which are stored with the user information in order to maintain the document presentation state in accordance with a preferredembodiment;
Figure 23 is a Booch diagram illustrating command subclasses which employ ,, 5 place document policy objects in accordance with a preferred embodiment;
Figure 24 illustrates the steps involved in opening a saved presentation on a document within a place in accordance with a preferred embodiment;
lû Figure 25 illustrates the steps involved in closing a presentation on a document within a place in accordance with a preferred embodiment;
Figure 26 illustrates the difference between embedment and containment in accordance with a preferred embodiment;
Pigure 27 is a VDL diagram illustrating the creation of a folder in accordance with a preferred embodiment;
Figure 28 is a VDL diagram illustrating the copying of a folder logic in 20 accordance with a preferred embodiment;
-Figure 29 is a VDL diagram illustrating the movement of a folder logic inaccordance wlth a preferred embodiment;
Figure 30 is a VDL diagram illustrating the movement of a folder logic in accordance with a preferred embodiment; and Figure 31 is a VDL diagram illustrating the movement of a folder logic in accordance with a preferred embodiment.
DETAILEI) DESCRIPTION OF ~E Pl~EEERRED
EMBODIME~JT OP THE Pl~ESENT INVENTION
Users conceptualize places as areas in which persons, places and things exist.
35 Place obiects are created to capture the formal and functional characteristics of actual locations. Place objects build upon knowledge of the real world by organizing and segmenting information into a familiar and meaningful context. Furthermore, a . W094/29792 ~CT/U594/00269 :, , preferred embodiment provides a context for meaningful interaction between usersand a computer system.
A preferred embodiment organizes information within persistent structures ! -referred to as "places". Information, in the form of other objects such as persons and ' documents, is appropriately segmented among place objects. As an exampie, a postoffice place is created containing a set of objects pertaining to a communication resource. Place objects can also be created to contain objects that pertain to persons associated with a place. As a further example, a library place is created wherein ¦ 10 objects representing a volume of books and a librarian are placed. A user could access the library place and sort through the volume of books in order to find adesired book which can then be retrieved. Otherwise, a user may choose to contact the librarian, through information contained within the object representing the librarian, to have the librarian undertake a literature search.COMP~ER SYSTEM `
A preferred embodiment is preferably practiced in the context of an operating system resident on a personal computer such as the IBM (~) PS/2 (~) or Apple (~)~acintosh ~) computer. A representative hardware environment is depicted in Figure 1, which illustrates a typical hardware configuration of a workstation inaccordance with a preferred embodiment having a central processing unit 10, suchas a conventional microprocessor, and a number of other units interconnected via a system bus 12. The workstation shown in Figure 1 includes a Random Access Memory ~RAM) 14, Read Only Memory (ROM) 16, an I/O adapter 18 for connecting 1 peripheral devices such as disk units 20 to the bus, a user interface adapter 22 for i- 25 connecting a keyboard 24, a mouse 26, a speaker 28, a microphone 32, and/or other user interface devices such as a touch screen device (not shown) to the bus, a communication adapter ~4 for connecting the workstation to a data processing network and a display adapter 36 for connecting the bus to a display device 38. The workstationl has resident thereon an operating system such as the Apple Systern/7 ~) operating system. The document framework architecture is resident in the RAM
14, and under the control of the CPU 10, is responsible for implementing a preferred ~;~
embodiment of the invention. ~
- In a preferred embodiment, the invention is implemented in the C++ `
35 progranuning language using obiect oriented programming techniques. As will be under~tood by those skilled in the art, Object-Oriented Programming (OOP) objects are software entities comprising data structures and operations on the data.
Together, these elements enable objects to model virtually any real-world entity in WO 94/29792 PCT/~JS94/00269 h ~ il i 3 ~
--6-- . .
terms of its characteristics, represented by its data elements, and its behavior, represented by its data manipulatic3n functions. In this way, objects can model concrete things like people and computers, and they can model abstract concepts like numbers or geometrical concepts. The benefits of o~ject technology arise out of 5 three basic principles: encapsulation, polymorphism and inheritance.
Objects hide, or encapsulate, the internal structure of their data and the algorithms by which their functions work. Instead of exposing these implementation details, objects present interfaces that represent their abstractions 10 cleanly with no extraneous information. Polymorphism takes encapsulation a step further. The idea is many shapes, one interface. A software component can make arequest of another component without knowing exactly what that component is The component that receives the request interprets it and figures out according to its variables and data, how to execute the request. The third principle is inheritance, 15 which allows developers to reuse pre-existing design and code. This capability allows developers to avoid creating software from scratch. Rather, through inheritance, developers derive subclasses that inherit behaviors, which the developer then customizes to meet their particular needs.
A prior art approach is to layer objects and class libraries in a procedural environment. Many application frameworks on the market take this design approach. In this design, there are one or more object layers on top of a monolithic operating system. While this approach utilizes all the principles of encapsulation, - polymorphism, and inheritance in the object layer, and is a substantial improvement over procedural programming techniques, there are limitations to this approach. These difficulties arise from the fact that while it is easy for a developer to reuse their own objects, it is difficult to use objects from other systems and the developer still needs to reach into the lower non-object layers with procedurallOperating System (OS) calls.
Another aspect of object oriented programming is a framework approach to j`
application development. One of the most rational definitions of frameworks comefrom Ralph E. Johnson of the University of Illinois and Vincent F. Russo of Purdue.
In ~eir 1991 paper, Reusing Object-Oriented Designs, University of Illinois tech3 5 report UIUCDCSg1-1696 they offer the following definition: "An abstract class is a design of a set of objects that collaborate to carry out a set of responsibilities. Thus, a framework is a set of object classes that collaborate to execute defined sets ofcomputing responsi~ilities." From a programming standpoint, frameworks are WO 94/29792 ~ r ~ 9 PCT/US94100269 essentially groups of interconnected object classes that provide a pre-fabricated structure of a working application. For example, a user interface framework might provide the support and "default" behavior of drawing windows, scrollbars,~menus, etc. Since frameworks are based on object technology, this behavior can be inherited 5 and overridden to allow developers to extend the framework and create customized solutions in a particular area of expertise. This is a major advantage over traditional programming since the programmer is not changing the original code, ~ut rather extending the software. In addition, developers are not blindly working through layers of code because the framework provides architectural guidance and10 modeling but at the same time frees them to then supply the specific actions unique to the problem domain.
From a business perspective, frameworks can be viewed as a way to encapsulate or embody expertise in a particular knowledge area. Corporate 15 development organizations, Independent Software Vendors (ISV)s and systems integrators have acquired expertise in particular areas, such as manufacturing, accounting, or currency transactions as in our example earlier. This expertise is embodied in their code. Frameworks allow organizations to capture and package the common characteristics of that expertise by embodying it in the organization's code.
20 Pirst, this allows developers to create or extend an application that utilizes the expertise, thus the problem gets solved once and the business rules and design are enforced and used consistently. -Also, frameworks and the embodied expertise behind the frameworks have a strategic asset implication for those organizationswho have acquired expertise in vertical markets such as manufacturing, accounting, 25 or bio-technology would have a distribution mechanism for packaging, reselling, and deploying their expertise, and furthering the progress and dissemination of technology.
Historically, frameworks have only recently emerged as a mainstream `, 30 concept on personal computing platforms. This migration has been assisted by the availability of object-oriented languages, such as C+~. Traditionally, C++ was ¦
found mostly on UNIX systems and researcher's workstations, rather than on Personal Computers in commercial settings. It is languages such as C++ and otherobject-oriented languages, such as Smalltalk and others, that enabled a number of 3 5 university and research projects to produce the precursors to today's commercial frameworks and class libraries. Some examples of these are InterViews from Stanford University, the Andrew toolkit from Carnegie-Mellon University and University of Zurich's ET++ framework.
WO 94129792 PCTIUS94100~fi9 ` ;. `
There are many kinds of frameworks depending on what level of the system you are concerned with and what kind of problem you are trying to solve. T}~e types of frameworks range from application frameworks that assist in developing the user interface, to lower level frameworks that provide basic system softwareservices such as communications, printing, file systems support, graphics, etc.
Commercial examples of application frameworks are MacApp (Apple), Bedrock (Symantec), OWL (Borland), NeXTStep App Kit (NeXT), and Smalltalk-80 MVC
(ParcPlace) to name a few.
Programming with frameworks requires a new way of thinking for developers accustomed to other kinds of systems. In fact, it is not like "programming" at all in the traditional sense. In old-style operating systems such as DOS or UND(, the developer's own program provides all of the structure. The operating system provides services through system calls--the developer's program- makes the calls when it needs the service and control returns when the service has - been provided. The program structure is based on the flow-of-control, which is embodied in the code the developer writes.
When frameworks are used, this is reversed. The developer is no longer responsible for the flow-of-control. The developer must forego the tendency to understand programming tasks m term of flow of execution. Rather, the thinking must be in terms of the responsibilities of the objects, which must rely on the framework to determine when the tasks should execute. Routines written by the developer are activated by code the developer did not write and that the developer never even sees. This flip-flop in control flow can be a significant psychological - barrier for developers experienced only in procedural programming. Once this is understood, however, framework programming requires much less work than other types, of programming.
In the same way that an application framework provides the developer with s:
prefab functionality, system frameworks, such as those included in a preferred embodiment, leverage the same concept by providing system level services, which developers, such as system program~ners, use to subclass/override to create . ' ~; 35 customized solutions. For example, consider a multi-media framework which could provide the foundation for supporting new and diverse devices such as audio, video, MIDI, animation, etc. The developer that needed to support a new kind of device would have to write a device driver. To do this with a framework, .~ wo g4/2979~ 3 2 ~j rCT~11594/00~69 1.~
g .
the developer only needs to supply the characteristics and behavior that is specific to that new device.
" , The developer in this case supplies an implementation for certain member s functions that will be called by the multi-media framework. An immediate benefit to the developer is that the generic code needed for each categoxy of device is already provided by the multi-media framework. This means less code for the device driver developer to write, test, and debug. Another example of using systems framework would be to have separate I/O frameworks for SCSI devices, NuBus 10 cards, and graphics devices. Because there is inherited functionality, each framework provides support for common functionality found in its device category.
Other developers could then depend on these consistent interfaces to all kinds of devlces.
COLLABORATION MODELS
Inherent collaboration models support the function and communication style of a particular place object. In particular, a preferred embodiment can support the following collaboration models: (i) screen sharing; (ii) annotation merging; and 20 ~iii) document merging. Accordingly, a user selects a collaboration model to conform to a created place object.
These three collaborative models provide users access to ~bjects in different ways. Users may view objects in real time through the screen sharing collaboration ~5 model. In contrast, users may contemporaneously access different portions of an object through the annotation and document merging collaboration models.
Certain place objects will have intrinsic collaboration styles which complement the purpose of that place object. Accordingly, collaboration 30 arrangements could include: broadcast screen sharing; interactive screen sharing;
telephony; shared white boards, projects or documents; bulletin board threads which is annotated; video conferencing; or, any combination thereof. ~-`
The screen sharing collaboration model displays all objects within a place that 35 exist on a host workstation to a number of users on other workstations. However, all objects existing on workstations other than a host workstation will not be displayed until moved to the host workstation. The screen sharing model requiresall users to share the same view of a place object.
wo 94l29~92 PcT~ss4/0026s . ~ ~
f~ 1 Lt ~ ", t~ ;"~,,,, ,.,,,~, Screen sharing can support different kinds of interaction in different place objects. For instance, in a small group meeting of several designers, drawings is analyzed and modified in real-time even though each designer is in a different 5 location. Each designer would possess the ability to modi~y the drawing. In a further instance, a place object could be a lecture room of a school wherein a presen~ation is being broadcast from one user to a group of other users. The user giving the presentation will be able to create a multimedia talk and present it to the rest of the class. During the presentation, members of the class may not be able to 10 do anything to change the presentation of the lecturer. However, the other users may take notes and perhaps engage in discussions among themselves.
Objects that can be annotated or merged, such as documents, are opened by all users for purposes of viewing. The view of each user with respect to the document 15 will, however, be different. Several users may thus annotate or merge a document simultaneously. This is possible since no user shares a common view with another.
Hence, each user engaging in a annotation merging or object merging collaboration can work on different parts of a document.
The collaboration models of object merging and annotation merging open objects, such as documents, within a place object to several users at once wherein each user can view a different portion of the object. For instance, a user may write an introduction to a document while another user is writing a conclusion. In this instance, the open document would not be automatically visible to each user within the collaboration. Rather, each user would open and edit a copy of the document that is later reconciled with the main document.
Accordingly, objects within a place object are supported based upon the collaboration model which is supporting the object. The collaboration model of screen sharing opens an object to all users within the collaboration. Since each user within a screen collaboration is tied into one view of the data, only one part of the .
file document is worked upon at one at one time. For example, all users will be able to make changes to a graphic document since most graphics programs support full screen views that contain all of the data in the graphic document. Word processing 35 documents are, however, different since they are multi-page documents. Thus, all users within the collaboration can only view and work upon one page at a time onthe display. Thus, all open word processing documents on the workstation of the host will be viewed by all.
WO 94129792 ,~ PCT/US94/00269 ~-Inherent characteristics of a containex A container has the following inherent characteristics:
It can contain objects. Whereas worl<space containers (e.g., folders and places)5 only hold workspace ob)ects (e.g., documents, folders), other special-purpose containers may hold other types of objects. For example, a database container can hold the result of a database query. Deleting an object from a container removes the object's model (in-memory structure)- and model store (on-disk structure) from the system.
10 It can contain reference links to objects and provides the scope for fixing-up these links when the referred-to objects are copied from one container to another.
Deleting a reference from a container only removes the reference, and does not affect the referred-to object's model and model store. Non-containers can also hold references to objects: containers and references are not tightly coupled.
It can form a containrnent hierarchy which is independent of file system hierarchy. In other words, users are free to organize the information in their workspace using containers, regardless of where or how the information is stored in the file system. A container can span multiple volumes. If all the volumes are not 20 available then the unavailable objects are not shown or grayed out. The container itself, i.e., the root of the containment hierarchy, lives in its enclosing place and belongs to the same storage domain (network:machine:volume) as the place.
PLACE OBJECTS WITHIN A DISPLAY INTERFACE
Place objects are hierarchical and are the highest-level objects in a user interface. Accordingly, all interaction and conununication occurs within the context of some place object. Each user has their own home place object. The home place object is the primary, top-level place object which appears to a user upon30 commencement of a session. Navigation between places is possible once the user adds more place objects to the home place or desires remote access to places. A user ~ `:
can create what are referred to as sub-places within the home place.
Place objects can be segmented by characteristics such as task, project, and 35 collaboration model. Once a place reaches a large size, a user may subdivide that place into smaller places. Place objects which encompass an entire desktop display, however, can also appear in a window.
WO 94t29792 PCT/US94/00269 . `~-`
Place objects, not applications, are employed for organizing and structuring `;"
information. According to the specific demands of their work in a given place object, users can insert objects within that place to facilitate that work. Such objects include file documents, tools, and containers. Once contained within a place object, ,, objects can be arranged and maintained in a desired manner. For example, in the workspace of a place object where home financing is undertaken, a user might insert objects such as a ledger, a check book, and an on-line connection to the local bank. When the place object is closed and reopened, the objects within the , 10 workspace of the place object appear in the same manner in which they were left.
t A user can simultaneously access and display multiple place objects by opening one or more places into window-based place presentations in addition to the desktop place presentation. Place objects within a window possess all of theattributes associated with desktop place objects. This feature allows a user to decrease the size of a place object window in order to display multiple place object windows. A user may open a set of place objects within a window. Consequently, auser can readily move and copy objects between the multiple place object windows.
Furthermore, a user can proficiently navigate between the multiple place objects.
2û
Referring to Figure 2, a window place within a desktop place is illustrated.
Place object 200 is entitled "Home place" as indicated by title bar 202. Workspace ~04 ~
of place object 2û0 encompasses the entire desktop display. Also appearing within Figure 2 is place object 206. Place object 206, entitled "Machine room" as indicated 2 5 by title bar 208, is enclosed within a window and possesses workspace 210. Fully displayed objects 214 and 216, and partially displayed object 218 are located within workspace 210 of place object ~06. Place object 206 further possesses control 212 which allows place object 206 to be expanded.
s , Referring to Figure 3, place object 206 of Figure 2 is illustrated upon expansion. By dragging control 212 of place object 206, as shown in Figure 2, place object 206 is expanded to its full size which is the size of the entire desktop display. t~`
Consequently, object 218 and object 300 are fully revealed within workspace 210 by r enlarging place object 206 to the size of the desktop display.
,~ 35 A preferred embodiment is capable of supporting multiple users that share a single workstation wherein each user has a home place object where their personal ,i,;
,i , .
.~
~ WO 941297~2 ~ 3 ~ PCT/US94/00269 `~
, ... ~ ~ ! ' `-information data resides. Each user can then create sub-place objects within their 1, home place object in order to partition the personal information.
Referring to Figure 4, a typical hierarchy of user place objects with~n a workstation is illustrated. Workstation 400 is shared by three users named Ann, John and Terry. Each such user possesses a home place object depicted at 402, 404 and 406, respectively. Further, home place object 404 (John's Home Place object) is further decomposed into sub-place object 408 (John's Work Place object) and 410 aohIl s Art Place object).
~ 10 3 A workstation can also ha~e other place objects on it which are not associated with a specific user. Such place objects preferably include a guest place object, a log-in place object, a system maintenance place object and a transfer place object. A
guest or public place object permits access by users who are not known to the workstation. A log-in place object contains objects and information relating to the cornmencement of user sessions. A system maintenance place object permits a userto perform maintenance tasks and contains a machine room. The machine room contains persistent configuration information about the workstation and may not be associated with a specific user. A transfer place object permits for the storage and transfer of information among users of the workstation.
ACC-ESSING PLACE OBJECTS
There are a number of ways to access and navigate between place objects, including: (i) a resource book; (ii) within a representation of a map; (iii) using a reference to a place, such as a postcard; and (iv) an invitation.
A resource book provides access to place objects by presenting information to a user within the context of a book. The information contained within the communication book regards objects, referred to as resources, that exist within a name service directory. Resources that are made accessible through a resource book ~us include objects such as a person or place. Hence, a resource book provides ameans by which place objects can be found and accessed.
ri ' Within the resource book exist one or more tabs for place objects within the resource boolc wherein information describing the place objects is contained. Such information may include the objects located within the place object, and a cost associated with accessing the place object. The resource book facilitates the finding wo 94/29792 PcT~usg4/00269 ~ 1 .E 1 ~J 2 ~ --14--of a place object and thereafter enables a user to bring the place object within a local t workstation as a persistent reference. Accordingly, a selected place object r~resented within a resource book, as possibly a postcard which is discussed~below, can be dragged from the resource book onto the desktop display of a workstation for ` i, future access to the place object. I, A map is a spatial representation of place objects. Maps include a set of place objects that are connected in some manner. Thus, a user can travel upon the map to locate a place object known to exist within a certain area. Through the use of 10 animation and sound, maps can provide context and a sense of transition as a user moves from one place object to another.
The map uses a spatial view to provide access to various place objects that are designated by a user. Users can use the map to create new place objects and 15 manipulate existing place objects. Maps are interactive. Accordingly, a user may utilize a map to~ open a place object by double-clicking its reference on the map;
(ii) drag references such as postcards from the map to an acceptable container; (iii) move files by dragging them from the current place object to a reference to another -~ place object on the ma; and (iv) change the properties of one or more place objects 20 by selecting one or more place objects, opening a property sheet, and specifying the new properties of the selected place objects.
A map can also provide context and a sense of transition as a user moves from place object to place object. For example, when a user exits a first place object ~25 and travels to a second place object, a map shows the movement between places by illustrating an animation, e.g.. a line between two objects. Such an animation sequence provides location context for the two place objects. First, the sequence - relates a sense of transition. Second, the sequence reminds the user that the map is always available for tra~eling from one place object to another~ ! ¦
Postcards are references to place objects. Postcards are formed by a user - accessing a place object that is desirable of being returned to. Then, by forming a ~ ~ postcard of the accessed place object to facilitate future access to that place object.
-~ ~ Such a postcard can also be forwarded to other users so as to alert the users to the 35 existence of the place object as well as provide access inforrnation.
Invitations, which are also references to place objects, enable specific users to access a place object at specific times. This action allows a creator of a place object to , ..
~ WO 94129'79~ r~ ~ PCT/US94/00269 ~`
.- ........................................................................... :.. "-,.,. . :` ;-., designate selected users to access a place object for a limited duration and subject to specified restrictions. Since some place objects may charge for access, an invitation may allow a user to receive a trial access to a place object. An invitation can s~ecify that a user can have access to a place object at a given date and time; thus acting as a simple access control mechanism. Furthermore, invitations can also be employed -to solicit other users to join in collaborations. Since it would not be appropriate to insert a person within a collaboration without prior notice, an invitation could be forwarded to give the user the option of joining into the collaboration.
Referring to Figure 5, an invitation is illustrated. Invitation 500, an "invitation from Rob Dickinson" as denoted by title bar 502, contains information regarding a "CPSR Annual MEETING" as indicated by heading 504. Information regarding the person forwarding the invitation, the time of the meeting, the place of the meeting, and the designated guests is also disclosed within the invitation at reference numerals 506, 508, 510, and 512 respectively.
Once a desired place object is located, a user must navigate between place objects that are sub-places. The navigation method selected by the designer of aplace object is an important characteristic of a place object. Since place objects are hierarchical, a user will need to know if a place object is within a deep nestedstructure or a shallow structure. Deep nesting may mean that the user must open successive sub-place objects, or use references to get to a deeply nested place object. "
1 In contrast, a shallow structure with many elements will take up more room 3 spatially and there~y potentially give the user a greater number of choices at higher levels. Hence, the navigation method chosen by a creator depends upon the st~ucture of the place object desired to be reached.
: '~
Preferably, a combination of scaling and panning methods are used to ?
navigate within a desktop display. Uniform scaling of a place object involves expanding or reducing the dimensions of a place object while maintaining a constant aspect ratio. Scaling is also important to users who zoom into and out of a ? docu~nent or place object view. Once a place object is satisfactorily scaled, panning allows for navigation within the place object. Panning involves manually directing s the desktop, by moving a graphic cursor; to display a particular portion of a place 3 5 object. By dragging the panning graphic, the user moves other regions of the desktop into view.
, WO 94ng792 PCl`JUS94/00~69 i 9; ~ 1 6 Alternatively, a preferred embodiment employs scrolling, auto panning or distorting methods for navigating within a place object. Auto-panning detects the motion of a cursor into a hot-zone, usually the area around the edge of the desktop, and pans the display in the direction of the movement. The system also provides 5 us~rs with a mechanism by which queries are directed to locate certain place objects or certain contents of a place object.
- ACCESS LIMITATIONS
Security and access control within place objects can be implemented in several ways. Pirst, a single set of access rights could be associated with a place object. Thus, any user within such set of access rights is permitted to access a place object. Second, minimum access rights to a given place object could be maintained to a designated set of persons. Increased access rights would, however, be associated 15 with objects contained within the place object. Third, access rights can be specifically ; assigned to individuals and groups for the place obiect and those rights would apply throughout the place object and contained objects. These rules provide for different levels of sharing within the place object without requiring indiYidual file management.
As a further method for limiting access, costs can be levied upon a user accessing a place object. Accordmgly, place objects can be utilized as a means of providing services. Such services could include information services such as DowJones, news services such as the Wall Street Journal, purchasing services and 25 gathering place objects such as America On-line. Place objects can be constructed for providing services and controlling access to the services.
Several models for determining a cost for a user entry to a place object are enabled. T~ particular, costs can be based upon ary one or a combination of the 30 following: (i) access to a place object; (ii) access time to a place object; (iii) objects :r, accessed within a place object; (iv) a fixed cost or subscription; (v) predetermined :~ usage limits; or, (vi) any combination thereof.
.~ .
Preferably, notification of the incurred costs and potential costs are displayed3 5 to a user upon access to a place object. In addition, a user is forewarned of potentially expensive operations. Moreover, a user can designate a maximum cost for a given place object. When such cost is reached, the user is notified and can ~ .
, ;J
WO 94/29792 ~ PCT/US94100269 ~:~
. ~ . . `. .
either choose to exit the place object or assume the additional costs that will be incurred.
~. i VISUAL REPRESENTATION OF A PLACE OBJECT
The visual representation of a place object is important for creating a sense oflocation. Accordingly, a place object can be designed for a number of elements including the background image, layout, scale, design style, spatial volume, lighting effect and typography. A preferred embodiment combines these elements to create environments which are distinctive and which facilitate navigation.
The background image applied to a place object can be formed through any read-only model. This includes moving images or images that are data-driven suchas a night/day place object which changes its presentation based on the current time.
Further, a background image of a place object may be blurred to add depth - stratification between background images and items such as windows and object icons in the forefront of a display. Saturation can also be employed to create adistinct style between the foreground items and background image.
~:
2 0 The density and layout of a place object are adapted to satisfactorily reflect the place object. Any layout changes that a user makes to a place object are saved and restored upon return unless the-place object only allows read-only access. The relation of the background image to the scale and proportion of the dimensions of a place object establish the sense of scope of a user. Accordingly, a small and receding 2 5 place object indicates distance, while a larger place object represents the vastness of a - place object.
t, The spatial volume of a place object is critical to the representation of the place object. The selection, placement and rendering of objects in a place object 3 0 indicate the range of options available to a user. Some place objects are readily comprehensible to a user while others invite further analysis by opening and reading. Nevertheless, place objects are readily distinguishable by viewing the elements contained within a place object. Furthermore, the depth of a space and interaction methods of navigation are characteristics of place objects.
Implementation of special virtual realities provide use of three-dimensional input ,,~ devices and navigation.
i :,s WO 94/29'792 PCT/US94100269 -i i 1 1 ~ 2 .~ , ` ` `
The elements of lighting and typography aid in providing each place object with distinct characteristics. Place objects may be designed by focusing attention 3 upon a particular aspect of a place object. Typography, such as display typefaGes used at large sizes, can also be employed to provide distinctive features to a place object.
OBJECTS OTHER THAl~IT PLACE OBJECTS
As among place objects and other types of objects within a workspace, place objects are the highest level object. Accordingly, it is within the context of place objects that typical objects, which include container objects, such as folders, are found. Moreover, container objects, such as folders, cannot contain place objects.
Container objects can only contain references to place objects such as postc~ards.
Place objects can contain a multitude of other objects. Such objects include documents, containers, appliances, tools, stationery, and references to persons.Place objects may also contain other place objects which are referred to as sub-place objects. Place objects can also contain references to other place objects. Hence, a hierarchy of place objects can be mainta~ned to allow for further subdivision ofrelated objects.
~20 A preferred embodiment allows for the creation of objects which can be inserted within the workspace of shared place objects. For example, bulletin boards inserted within a place object to allow persons that have accessed a place object to exchange information with each other. Further, business cards can be inserted wi~in a place object to allow persons to contact the person represented by a business card.
~' `
A preferred embodiment allows a user to access selected objects while ~; navigating through place objects by two methods. The two methods include a 3 0 portable container and a workspace shelf. Portable containers, which are visually represented as a backpack or briefcase, are employed to contain references to objects ~
such as documents, containers and tool palettes. Such objects are available within . .`
each accessed place object, including shared place objects. To share or copy a carried object into a collaborative place object, however, the object is dragged out of the 35 container into a shared space.
A workspace shelf is a temporary repository for data that a user is moving from one place object to another. A workspace shelf, visible on the display at all ~ A
" S, WO 94/29792 i~ 2 ~ PCT/IJS94/00269 ~ -!`
-19- ~ ~
i times, facilitates user operations by presenting workspace objects which can be directly accessed from the shelf.
.j ~
Referring to Figure 6, a workspace shelf is illustrated. Desktop 600 contains menu 602 along with shelf 604 which is open and shelf 606 which is closed. Shelf604 and shelf 606 possess cord 60B and cord 610, respectively. Accordingly, cord 608 was dragged with a mouse pointer to open shelf 604 In contrast, cord 610 was notdragged thus shelf 606 remains closed. The opening of shelf 604 produces two workspace objects that are represented by icons 612 and 614, respectively. By double clicking a mouse pointer on a workspace object icon, the workspace object is accessed or opened.
Instead of employing a workspace shelf or a portable container, a user may choose to move one object to another object by direct manipulation. Direct manipulation simply calls for an object to be selected, dragged until dropped in a target object. The dragged object contains information conceming type, content and origin information such as "read and write" or "read-only" attributes. The target object uses such information to determine what exchange should take place between the dragged object and target object. That is, what exchange should be taken pursuant to default conditions. In particular, a preferred embodiment allows 3 for the following five types of exchanges: (i) reject; (ii) copy; (iii) move reference; (iv) send copy; and (v) move. Preferably, place objects and persons have "move reference" as default conditions for dragged objects.
Preferably, the arrangement of objects contained within a place object is maintained separately for each user associated with a workspace. Thus, every user of a given place object has a state associated with the place object which depicts the place object as it was last rearranged by the user. The user state is saved on the local workstation of the user. Altematively, a given place object can be maintained within one single state where all users who access the place object view the place object in the same manner. ;
t, ~3. Objects can be deleted from the workspace of a place object by moving icons to ~^
- a trash icon and thereafter selecting a command to empty the trash. Preferably, all ,;; 3 5 workspace objects can be deleted through only one trash object. Further, such trash object displays target acceptance when objects to be deleted are dragged over the ~;: trash icon and thereafter display visual feedback when the dragged object is ;:
,;-,;
!r , " , .. ..
WO94/29792 ~ j 2~ PC~/U594/00~69 contained therein. Moreover, the trash object can be opened to view the elementscontained therein.
.
PERSONS REPRESENTED WIIHIN A PLACE OBJECT
! 5 A person object is only utilized to indicate the presence or absence of a personfrom a given place object. For instance, when a user creates a place object, a person object of the user, is preferably formed within the created place object. Thus, other users accessing the place object are made aware of the presence of the user through ¦ 10 the existence of the formed person object. L~ contrast to person objects, references to persons do not indicate the presence or absence of a person within a place object.
Rather, references to persons provide information about a person and the manner of communication with that person. For instance, business cards that are situated within a place object inform users how to contact the person referred to within the 15 business card.
In addition to representing a person as a person object, other aspects of presence can be depicted. Such aspects include whether: (i) a given place object is the active or principal place object of the user; (ii) the interest level of a person, that is, 2 0 whether the attention of the person is divided among a number of other placeobjects; (iii~ the activity level of a person within a place object; and (iv) the availability of a person for co~munication.
: :
- A preferred embodiment can relate whether a given place object is the active 2 5 place object of a person. That is, whether a person who is represented within a given place object is currently present within the given place object. This dete~mination is only necessary when a person is in more than one place object ~ simultaneously through the utilization of window place objects. Further, objects 3 wi~in a given place object, such as a contained document, can also be depicted as 3 o being viewed by a specific person.
The interest level, or level of attention, of a person relates to the number of place objects which a user is currently associated with. Accordingly, a user who is ~' ~ present within three place objects probably has less attention in any one of them 35 than someone who is solely present within one place object. Further, as with the . aspect of an active place object, the relationship of being in a place object and being involved in a contained document is also considered in rendering an interest level.
. . .
"
WO 94/29792 ~ ~ 3 2 ~ PCT/U594/00269 ~, -21-The activity level of a user denotes whether a user is currently undertaking any activity within a place object or has recently undertaken an activity. Thus, a high degree of inactivity might indicate that the person is no longer in theiroffice or at their desk. Such information is useful when attempting to contact a person5 that has a high degree of inactivity.
The aspect of availability of a person can also be related by a preferred embodiment. That is, whether or not the person is available to communicate or becommunicated with. Although a preferred embodiment provides for diverse forms 10 of group communication, persons can also elect to work undisturbed. Accordingly, a user may indicate a state of unavailability wherein no communication from other users will be permitted. Thus, a state of unavailability is related by representing a person within a place object with an indication of the desire of the person to be left undisturbed.
Other types of specific information, concerning a person represented within a place object, is related to a user. Such information may include the name of theperson, the physical location of the person, whether the person is on-line, the level of privilege on each document being shared by the person, the title of each 2 0 document being shared, and which parts of the document the person is working on.
This specific information can be retrieved through a "GetInfo" command with - respect to a given person.
:
A preferred embodiment enables a person to be represented through different 25 identities. Specifically, a person to be represented within a place object can be represented by either a photographic image or another less personal representation.
Further, persons can have their identity remain anonymous or use a pseudonym instead of representing persons by their true identity. Moreover, the identity of a person performing an action within a given place object can be concealed.
A place object may require a certain level of identification before access by a user. For instance, a place object may require all users that access a place object to be represented by their true identity. Other place objects, such as a gathering place `
object, allow users to employ pseudonyms for their true identities. Still other place ,c 3 5 objects, where confidentially is of the essence, may conceal all identities for those who access and participate with the object.
~ ", ;ii ~j s `.
. ..
WO 94/29792 PCT/US94/00269 . ~
g ~ ~ J 9 `~
In order to have a user preference correspond to a required level of identity ofa place object, a negotiation mechanism is employed. The negotiation mechanism allows a user to select a proper identity based on the required level of identity of a place object. For example, a user may desire to be anonymous by default. In the event that a user attempted to access a place object requiring the true identity of each user, the user is prompted with a message that states that the place object does not allow anonymous entries. Then, the user is prompted again for entry. Thus, a user is given an opportunity to adapt a preferred identity based upon the existing circumstances when the preferred identity is insufficient.
Preferably, persons are represented withLn the workspace of a place object along with the other contained objects of the place object. Alternatively, persons can be depicted within another medium not physically within the workspace of a place object. Such mediums include: (i) a separate window; (ii) a slide-out drawer that displays the persons when opened; and (iii) a menu which displays a palette of - connected persons.
: .
The choice of whether to represent a person to be physically within the workspace of a place object or extemal to a place object depend upon the function of 2 0 a person with respect to a place object. Accordingly, a person who provides services within the place object is accurately depicted by representing the person within the place object. Por instance, a librarian is typically thought of performing various services for the public within a library. Thus, the librarian can be depicted to be within the library. In contrast, the visitors to the library can be depicted within a 2 5 separate window.
r~ .
~ Since a large number of persons may exist within a given place object, a 7 preferred embodiment provides representations of a group of persons scaled within a the place object. When there are a large number of persons in a place object, individual communication becomes less likely. Thus, all persons in the place object i~ can be collapsed and represented as a single group. Accordingly, all persons belonging to the group can be communicated with simultaneously by sending ; messages. The ability to communicate with all persons of the group are subject to access control. `
!1 3 5 In the event that all persons are not desired to be collapsed into a group, a large number of persons can be partitioned. That is, only a segment of all the persons are represented and instantly accessible. Partitioning can be arbitrarily ..
.. .
wog4n979~ J PCT/U594/00~69 j~
,, . . ~
determined. For example, those persons located closest to a user can be separately grouped.
".
Regardless of whether a large number of persons are represented by 5 collapsing them into a group or partitioning some members of the group, a preferred embodiment provides various location tools whereby a user may search through the large numbers of persons and identify a particular person.
DETAILED LOGIC
The following section sets forth the detailed logic of a preferred embodiment in accordance with the invention. Figure 7 is a flowchart setting forth the highlevel flow of control in accordance with a preferred embodiment. Processing commences at terminal 700 and immediately passes to function block 710 where a 1S user logs on, function block 712 illustrates the activation of the associated travel bag based on profile information stored in the place object, and in function block 715 the initial place object is activated based on user profile information. Then, at decision block 720, a test is perforrned to determine if a user desires to navigate to another place. If so, then control is passed via label 730 to Figure 9, label 900 to process the 20 navigation to a new place. Then, when control is returned, processing re-coIrunences at decision block 720. If not, then in function block 740, the tasks in the current place environment are processed and control is passed back to function block 710 to await another user log on.
, Pigure 8 is a flowchart setting forth the detailed logic of user session processing in accordance with a preferred embodiment. Processing commences at terminal 800 and immediately passes to function block 810 where a user selects aname for a list of names. Then, at function block 820, a user session is created by instantiating a user object. Then, function block 830 starts registered items associated with a user object, function block 840 instantiates the registered item called place Butler, function block 850 opens the user travel bag associated with ~ place Butler, function block 860 determines the sta~ting place for user place Butler, .
i~ function block 870 opens place and terminal 880 returns control to the calling program.
h Figure 9 is a flowchart setting forth the detailed logic associated with closing :'t an old place and opening a new place in accordance with a preferred embodiment.
- Processing commences at terminal 900 and immediately flows to function block 910 . , .
~A; '.
to lc~cate the other place, exit the current place as set forth in function block 920, and perform a test in decision block 930 to determine if the previous place exited ok. If the previous place exited in an appropriate manner, then the target place is opened in function block 940, the user is prompted to enter the target place in function block 950, the previous place is closed in function block 960, and control is passed back to the calling application in terminal 970. If ~he previous place does not exit appropriately in decision block 930, then control is returned via terminal 970 to the calling application.
Figure 10 is a flowchart setting forth the detailed logic associated with closing a place in accordance with a preferred embodiment. Processing commences at terminal 1000 and irnmediately passes to function block 1010 to close the presentation documents associated with the old place, a profile of current placestatus information is then stored at function block 1020 and a test is performed at decision block 1030 to determine if additional presentation documents are available.
If so, then control passes to function block 1010 to process the additional documents.
If not, then control is returned to the calling routine ~ia terminal 1040.
Pigure 11 is a flowchart setting forth the detailed logic associated with opening a new place in accordance with a preferred embodiment. Processing commences at terminal 1100 and immediately passes to function block 1110 to drawthe background associated with~a place. Then, at function block 1120, the documents associated with a place are opened, and the presentation associated with the documents is initiated in function block 1130. Then, a test is performed at decision block 1140 to determine if more documents remain to be processed. If so, then control passes back to function block 1120 to process the remaining documents.
If not, then processing is terminated at terminal 1150.
, '.
Architecture 3 0 The architecture setting forth the detailed logic is presented below. The logic Fd~ is presented using tools such as class and object diagrams to present interactions :t'' within the system. Figure 12 is a Visual Design Language (VDL) key setting forth terminology used in other VDL illustrations in accordance with a preferred .~ embodiment of the preferred embodiment. Labèl 1200 shows an example of ; 35 collaboration. Label 1210 shows an example of creation of an object. Label 1220 ~,.; shows an example of indirect corroboration. Finally, label 1230 shows an example of containrnent. Figure 13 is a Booch Diagram in accordance with a preferred i embodiment.
i ,, .
92 PCT/US94/00269 .~:
! ., . -.' ` ~,'"
Logically, a place is a self-contained environment which can be manipulated atomically. Unfortunately, the content which is running in a place is logicall~
associated but is not grouped by any lower level services. Put differently, a place is a 5 logical grouping of items which run in separate address spaces and are treatedindividually by operating system frameworks such as the layer server, view system or document architecture. In order to function as a logical unit, the higher level of place services must manage the items of a place to present a user with a conceptual model of separate environrnents as illustrated in Figure 14. Each user has some set ; 10 of places on a machine for which they are the owner. Each user may also have access rights to be able to enter other places.
Ownership Hierarchy Of Places Each user on a given machine will have a single "home" place where they 3 15 can store their documents and workspace items as depicted in Figure 15. Since sharing of individual machines is allowed, there can be many home places on a system, and there is a simple way to configure the system to have a guest or public place which other people who are not known to a system can use. A simple hierarchy of places is illustrated in Figure 4 which illustrates a logical hierarchy of places among users of a shared machine. Each person has their own "home" place which contains their particular information and which is further divided up intosubplaces for different uses.
, Users are always in a place Users always exist in a place. Users are never void, so when they log in, they ~ must be positioned in an appropriate place. That could be their home or default 3 place, the last place they were in before logging off, or a place of their choosing.
Figure 16 illustrates some example dialogs which give just these choices.
3d Users have the option of specifying which place to go to afte~ log-in. They choose from one of the following possibilities: 1) absolute: go to a specific place such as the Home or the Mail place, or 2) the most recent place (i.e. where the user .
,- was immediately before they logged out). If the most recent place is a remote place, the system may ask if the user wants to go there now. The user might see a dialog ;
' 35 box similar to ~e dialog box illustrated in Figure 16.
Each user has a place designated as the default place. The default place is justa reference to the place which the user wants to commence operations with when WO 94/~9792 ~ J ~ ~ PCT/U594/00~69 !`~``' 2 6-- `
i.
the user logs in. The default place is also the place a user can retum to when necessary. We can make this more readily available by some shortcut such as a command key or by access through the shelf. By default, the user's home plac~ istheir default place.
Places Maintain User-Specific Information Many aspects of the design for places allow for user customization and history. For example, each user may have their own view of a place and their ownsaved presentations of documents. This information must be stored somewhere, and since it is user-specific information, it is stored in the user area provided by the people subsystem. User-session subsystem start up place elements. The places design requires certain interface elements to be opened when the user session hegins. An example of such an object is the shelf or travel bag. The places framework requires certain processes, such as the history service, to be running.
The creation of a user session starts these services.
Places Can Show which People are In Them ,.~
Figure 17 illustrates a people strip which shows the people in a place. From the icons for the people in the place, a business card for that person can be automatically dragged. The TPl~ce model class maintains a set of TPerson objectswhich are currently connected to the place. As people enter the place, person objects are instantiated for them and added to the place model. When they leave the place, the place removes its references to people.
Below are the methods of the TPlace model which relate to Person presence management. Their interaction is illustrated in Figure 18.
3 0 class TPlaceModel: public TFolderModel 1 public: i ,,j ;
/ /...other stuff removed...
:
virtual void AdoptConnectedPerson( TPerson* );
v virtual void AddConnectedPerson( const TPerson&);
virtual void RemoveConnectedPerson( const TPerson& person );
.0, wo 94/29792 ~ i ~ 2 3 PCT~Us94/00269 !:~ 2 7 virtual TPerson~ OrphanConnectedPerson( const TPerson& person );
virtual TIterator* CreateConnectedPeopleIterator() const;
virtual Boolean IsConnected( const TPerson8~ person );
5 / / Some speculative ideas virtual Boolean AllowPersonToEnter( TPerson& person );
// virtual void PersonEntered( TPerson& person );
virtual TInterest~ CreateAddedPersonInterest();
virtual TInterest* CreateRemovedPersonInterest();
Places and user preferences The process by which a person object gets added to a place model is illustrated in Figure 19 and discussed below. Taken to its logical extreme, the implications of a place as a virtual machine would seem to indicate that each place would have itsown ~et of preferences associated with it and that all user preferences would also be specific to places. Doing this provides a high degree of flexibility to the user in terms of allowing almost completely different user environments (to the extent that environments can be customized using preferences), but does so at the expense ofsimplicity and in doing so requires much more sophistication in terms of interfaces which should be presented on top of preferences.
Allowing preferences which are place specific is complex because of the number of possible intentions the user might have when specifyin~ them:
use this preference only when in this place.
'~
make this the default preference for all places not having a specific preference of this type.
:, iJ make this the current preference of this type always. This preference is the overriding value. If default and place-specific preferences are the only parameters i'3' provided, users may become confused and provide an invalid default and expect it ;3, ~ 35 to apply everywhere. A place could be entered having no place-specific preference of that type.
.
-. :-WO 94/29792 ~ PCT/US94/00259 f~ f.~1 ~329 -28-:
The relationship between places and the workspace is set forth in Figures 20 and 21. Places are the highest level entity of the workspace and serve as the context for the usage of the other elements of the workspace. Places can contain othef 3 places and can contain other workspace elements, such as folders and documents. --t 5 Essentially providing a partitioning of user information space into moremeaningful logical groupings, such as by project, by task, by corporate organization, etc. Within a place, there exist a containment hierarchy of folders and documents as pictured below.
f 10 Maintaining A Persistent Document State One of the hmctions which a place presentation must support is the ability to ' restore state to that which existed the last time the user was in the place. E~oth places and presentations on places reference documents which they logically have, 15 open within them.
keep track of the set of documents open within the place.
open these documents when the user enters a place.
close these documents when the user leaves a place.
...
for all of the above, the place presentation needs to be able to save the specific presentation which was open in the place in order to present the environment in a 25 realistic state. For example, if a calendar document supports multiple presentations, the monthly view should be in one place and the day view in another. A containerf~ in list view is appropriated in one place and in a spatial view in another. Both ~, places and place presentations must maintain information about which documents are open urithin the place.
User-specific Presentations Stored With User ,. . .
Figure 22 shows the objects which are stored with the user information in order to maintain document presentation state. The large model store shows that 35 both saved presentations on places and presentations on user documents exist here.
~he catalog shows the mapping of document to specific presentations for places.
These are used when users open documents so that the correct presentation can beused. Within the user's space, the people subsystem provides storage for preference WO 94/29792 ~ ~ 9 ~ Y PCTrUS94/00269 . . , 1 ,~, information and recent history information. The presentations themselves are stored here as well as a catalog which references them. The catalog uses the dictionary semantics which user preference MPreferenceCollection objects provide.
j `:
s Each person has a single presentation on a place, such that it contains all the information necessary to present that place to the user as it was last seen. This includes the list of open documents within the place (represented as presentation surrogates and possibly with data model IDs as well).
lQ Each person can have multiple presentations saved on a single document.She can have a different presentation for each place in which it is seen.
A catalog of document presentation information maps documents to existing saved presentations which exist for the places in which they were seen. The ~
information in this catalog is document (which needs only model ID (a global ID) as a key, place ID, and the presentation surrogate for the presentation.
Place presentations require information pertaining to documents including when a document was first opened in order to properly restore state the next time in the place. To do this, they need to receive notification of when window presentations get open in the place. This is accomplished through the following procedures:
all open/close/follow commands use a form of model command which delegates the work for opening and closing documents to a contained policy object.
Figure 23 is a Booch diagram illustrating command subclasses which employ place document policy objects in accordance with a preferred embodiment. Label 2310 ~.identifies a model command for opening documents in accordance with a preferred ~a, embodiment. Label 2320 identifies a subclass of the model command of the 3 !
command presented at 2310 which delegates to the place document policy object.
~ Label 2330 is a mixin class which stores the document policy used by 2320 in ;; memory. All place specific model commands subclass from the object at label 2330.
Label 2340 is a policy object which performs the operation set forth in the preceding objects.
3~
.~
the policy object wraps up the type of behavior we want to happen for this place. The behavior is different for collaborative places or if a different human interface is desired.
"
i; .
.
f. ~
WC) 94/29792 PCT/US94/00269 -.. '`.
~ Y 2 ~ 3 o ~
when each container or document presentation registers its "open"
command into the menu, it uses these delegating open commands, which have information in them as to how to contact the place for document registration.
5 These presentations received the policy object themselves when they were opened, as you will soon see.
when the open command is executed, it will start up the document to be opened (that occurs when the command itself is passed to the document to be l o executed~.
the open command will delegate the open to the policy object it contains.
the policy object determines the appropriate presentation to use by consulting15 the catalog of presentations saved for this user.
the policy object then opens that presentation and sets the policy object for tha$ presentation to be the same as itself. This is how the policy object propagates to all presentations opened within the place. This solution works even when there 2 0 are window places or multiple places open at once.
the policy object then registers the opening of the document with the place presentation~
25 the place presentation updates its list of open documents to add the new entry The steps involved in opening a saved presentation on a document within a i1 place are illustrated in Figure 24, and the steps involved in closing a presentation 3!0 on a document within a place are illustrated in Figure 25.
~ .
Container Model Architecture '-~`
When object A embeds object B, B's model is copied into A's model store. B
q 3 5 is called an embedded model. B forms an embedment hierarchy with A. B's presentation appears as a frame/thumbnail inside A's presentation. B's thumbnailcan be opened in-place in the same window and team, or out-of-place in a separate window but the same team. When object A contains object B, B's model is not wo 94/29792 ~ ~ t PC'r/US~4/00269 ~
`
.`.. ;. . . l`
3 1 - .
.~
copied into A's model store. B is called a containable. B forms a containment hierarchy with A. B's presentation appears as an icon inside A's presentation. Balways open out-of-place (in separate window and team).
s Figure 26, succinctly explains the difference between embedment and containment. In this message, a request is made concerning a color matching problem. An image is embedded into the document and reduced to encompass the whole message without scrolling past the image. It has a distinction "HEY I'M A
FRAME" border. The image will by default open in-place. The folder holds Jeff's code for Jim to look over. It is contained in the message and will always open out-of-place.
Inherent characteristics of a container A container has the following inherent characteristics:
It can contain objects. Whereas workspace containers (e.g., folders and places) only hold workspace objects (e.g., documents, folders), other special-purpose containers may hold other types of objects. For example, a database container can hold the result of a database query. Deleting an object from a container removes the object's model (in-memory structure) and model store (on-disk structure) from the system.
It can contain reference links to objects and provides the scope for fixing-up~25 these links when the referred-to objects are copied from one container to another.
Deleting a reference from a container only removes the reference, and does not affect the referred-to object's model and model store. Non-containers can also hold references to objects: containers and references are not tightly coupled. t It can form a containrnent hierarchy which is independent of file system hierarchy~ In other words, users are free to organize the information in their ~, workspace using containers, regardless of where or how the infoImation is stored in the file system. A container can span multiple volumes. If all the volumes are not available then the unavailable objects are not shown or grayed out. The container itself, i.e., the root of the containment hierarchy, lives in its enclosing place and belongs to the same storage domain (network:machine:volume) as the place.
wo 94/29792 ~ 1 9 2 ~-J - 3 2 - I'CT/IJ594/00269 A smart container can use locators to filter its contents. Inherited ~:' characteristics of a container include:
User operations on a container (cut/copy/paste, drag/drop, selection, move, etc.) can be undone and redone an unlimited number of times.
A container can have a window / frame / thumbnail / icon presentation.
There can be multiple presentations of the same container - each presentation with a distinct look and possibly feel (e.g., folder and rolodex).
~10 Usage Scenarios The following scenarios will use folders and documents to describe the user interaction with containers and containables. Other types of containers and ~15 containables will behave similarly.
Creating a folder: double-click on a folder stationery and a new folder is created on a shelf. There will be other types of stationary for creating other types of containers.
A VDL diagram illustrating the creating a folder logic is presented in Figure 27.
~20 Copying a folder from one folder to another folder: option-drag hold down the Optîon key while dragging Folder A from Folder X and drop it into Folder Y.
Folder A' will contain copies of all the original documents. If these originals are linked, the copies will be linked to each other and not to the originals. A VDL
diagram illustrating the copying a folder logic is presented in Figure 28.
; Moving a folder from one folder to another folder: drag Folder A from Folder X
and drop it into Folder Z. A VDL diagram illustrating the moving a folder logic is presented in Figure 29.
30~
,~ Deleting a folder: drag Folder A from Folder Z and drop it into a Waste Basket (a reference to the Trash Can) or into the Trash Can. A VDL diagram illustrating the s moving a folder logic is presented in Figure 30.
Copying (moving) a containabl2 from one folder to another folder: option-drag Document Foo from Folder X and drops it into Folder Y. If the copied document ; has any l~ks, its links will be properly fixed-up. The moved document will be removed from the source folder.
,, WO 94/29792 PCT/US94tO0269 _33_ Copying (moving) a containable from a foldler to a document:: option-drag Document Foo from Folder Y to Document Bar. Since a document can also c~ontain ,. containables, Document Foo will appear as an icon in Document Bar. (The moved 5 containable will be removed from the folder.) A VDL diagram illustrating the moving a folder logic is presented in Fi~ re 31.
-:
::
`:
:
:
, ~.
.
t~
.,' ~
'3 :1, ~,
Claims (22)
1. A method for organizing information in a memory of a computer system, comprising the steps of:
(a) instantiating a container in the memory;
(b) tailoring the container to a class of objects; and (c) storing the container in a memory.
(a) instantiating a container in the memory;
(b) tailoring the container to a class of objects; and (c) storing the container in a memory.
2. A method as recited in claim 1, wherein the class of objects is a folder.
3. A method as recited in claim 1, wherein the class of objects is a place.
4. A method as recited in claim 1, wherein the class of objects is an inbox.
5. A method as recited in claim 1, wherein the class of objects is an outbox.
6. A method as recited in claim 1, wherein the class of objects is a boot set.
7. A method as recited in claim 1, wherein the class of objects is a database query.
8. A method as recited in claim 1, wherein the class of objects is a content-based retrieval.
9. A method as recited in claim 1, including the step of providing user operations for containers.
10. A method as recited in claim 9, wherein the operations include copying, deleting, cutting, pasting, selecting, dragging, dropping, selecting, moving, redoing and undoing.
11. A method as recited in claim 1, including the step of presenting the container as a window, frame, thumbnail and icon.
12. A system for organizing information in a memory of a computer system, comprising:
(a) means for instantiating a container in the memory;
(b) means for tailoring the container to a class of objects; and (c) means for storing the container in a memory.
(a) means for instantiating a container in the memory;
(b) means for tailoring the container to a class of objects; and (c) means for storing the container in a memory.
13. A system as recited in claim 12, wherein the class of objects is a folder.
14. A system as recited in claim 12, wherein the class of objects is a place.
15. A system as recited in claim 12, wherein the class of objects is an inbox.
16. A system as recited in claim 12, wherein the class of objects is an outbox.
17. A system as recited in claim 12, wherein the class of objects is a boot set.
18. A system as recited in claim 12, wherein the class of objects is a database query.
19. A system as recited in claim 12, wherein the class of objects is a content-based retrieval.
20. A system as recited in claim 12, including means for providing user operations for containers.
21. A system as recited in claim 20, wherein the operations include copying, deleting, cutting, pasting, selecting, dragging, dropping, selecting, moving, redoing and undoing.
22. A system as recited in claim 21, including means for presenting the container as a window, frame, thumbnail and icon.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US071,812 | 1993-06-03 | ||
US08/071,812 US5544302A (en) | 1993-06-03 | 1993-06-03 | Object-oriented framework for creating and using container objects with built-in properties |
Publications (1)
Publication Number | Publication Date |
---|---|
CA2141929A1 true CA2141929A1 (en) | 1994-12-22 |
Family
ID=22103752
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CA002141929A Abandoned CA2141929A1 (en) | 1993-06-03 | 1994-01-10 | Container object system |
Country Status (6)
Country | Link |
---|---|
US (1) | US5544302A (en) |
JP (1) | JPH08511118A (en) |
CN (1) | CN1113396A (en) |
AU (1) | AU6084994A (en) |
CA (1) | CA2141929A1 (en) |
WO (1) | WO1994029792A1 (en) |
Families Citing this family (127)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU688314B2 (en) * | 1993-03-31 | 1998-03-12 | Apple Inc. | Costume objects |
US5379432A (en) * | 1993-07-19 | 1995-01-03 | Taligent, Inc. | Object-oriented interface for a procedural operating system |
US5623679A (en) * | 1993-11-19 | 1997-04-22 | Waverley Holdings, Inc. | System and method for creating and manipulating notes each containing multiple sub-notes, and linking the sub-notes to portions of data objects |
US5696963A (en) * | 1993-11-19 | 1997-12-09 | Waverley Holdings, Inc. | System, method and computer program product for searching through an individual document and a group of documents |
US5623681A (en) * | 1993-11-19 | 1997-04-22 | Waverley Holdings, Inc. | Method and apparatus for synchronizing, displaying and manipulating text and image documents |
US6877137B1 (en) | 1998-04-09 | 2005-04-05 | Rose Blush Software Llc | System, method and computer program product for mediating notes and note sub-notes linked or otherwise associated with stored or networked web pages |
US6963920B1 (en) | 1993-11-19 | 2005-11-08 | Rose Blush Software Llc | Intellectual asset protocol for defining data exchange rules and formats for universal intellectual asset documents, and systems, methods, and computer program products related to same |
US5991751A (en) * | 1997-06-02 | 1999-11-23 | Smartpatents, Inc. | System, method, and computer program product for patent-centric and group-oriented data processing |
US5799325A (en) * | 1993-11-19 | 1998-08-25 | Smartpatents, Inc. | System, method, and computer program product for generating equivalent text files |
US6339767B1 (en) | 1997-06-02 | 2002-01-15 | Aurigin Systems, Inc. | Using hyperbolic trees to visualize data generated by patent-centric and group-oriented data processing |
US5806079A (en) * | 1993-11-19 | 1998-09-08 | Smartpatents, Inc. | System, method, and computer program product for using intelligent notes to organize, link, and manipulate disparate data objects |
US5568639A (en) * | 1993-11-24 | 1996-10-22 | Menai Corporation | Method and apparatus for providing an object-oriented file structuring system on a computer |
US6151610A (en) * | 1993-12-27 | 2000-11-21 | Digital Equipment Corporation | Document display system using a scripting language having container variables setting document attributes |
US5608909A (en) * | 1994-04-15 | 1997-03-04 | Microsoft Corporation | Method and system for caching presentation data of a source object in a presentation cache |
US5526478A (en) * | 1994-06-30 | 1996-06-11 | Silicon Graphics, Inc. | Three dimensional model with three dimensional pointers and multimedia functions linked to the pointers |
US5675752A (en) * | 1994-09-15 | 1997-10-07 | Sony Corporation | Interactive applications generator for an interactive presentation environment |
US5617565A (en) * | 1994-11-29 | 1997-04-01 | Hitachi America, Ltd. | Broadcast interactive multimedia system |
US5668998A (en) * | 1995-04-26 | 1997-09-16 | Eastman Kodak Company | Application framework of objects for the provision of DICOM services |
US6785709B1 (en) * | 1995-04-28 | 2004-08-31 | Intel Corporation | Method and apparatus for building customized data and/or video conferencing applications utilizing prepackaged conference control objects |
US5832264A (en) * | 1995-07-19 | 1998-11-03 | Ricoh Company, Ltd. | Object-oriented communications framework system with support for multiple remote machine types |
US6449660B1 (en) * | 1995-07-31 | 2002-09-10 | International Business Machines Corporation | Object-oriented I/O device interface framework mechanism |
AU6646096A (en) * | 1995-08-03 | 1997-03-05 | Interval Research Corporation | Computerized interactor systems and methods for providing same |
US6535230B1 (en) * | 1995-08-07 | 2003-03-18 | Apple Computer, Inc. | Graphical user interface providing consistent behavior for the dragging and dropping of content objects |
US5917483A (en) * | 1995-09-18 | 1999-06-29 | Oracle Corporation | Advanced windows management for a computer system |
US6807534B1 (en) * | 1995-10-13 | 2004-10-19 | Trustees Of Dartmouth College | System and method for managing copyrighted electronic media |
US7047241B1 (en) * | 1995-10-13 | 2006-05-16 | Digimarc Corporation | System and methods for managing digital creative works |
US6240450B1 (en) | 1995-10-16 | 2001-05-29 | British Telecommunications Public Limited Company | Network data visualization system and method for downloading visualization software to a user station after user authentication |
DE19538651B4 (en) * | 1995-10-17 | 2004-07-01 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Sun protection device made of a material transparent to sunlight |
US5983019A (en) * | 1996-03-18 | 1999-11-09 | Tandem Computers Incorporated | Method and system for providing interpretive access to an object system |
US6101513A (en) * | 1996-05-31 | 2000-08-08 | Microsoft Corporation | Method and apparatus for displaying database information according to a specified print layout and page format |
GB2315343A (en) * | 1996-06-25 | 1998-01-28 | Texas Instruments Inc | Non-model-based application transitioning |
US5784061A (en) * | 1996-06-26 | 1998-07-21 | Xerox Corporation | Method and apparatus for collapsing and expanding selected regions on a work space of a computer controlled display system |
US5815703A (en) * | 1996-06-28 | 1998-09-29 | Microsoft Corporation | Computer-based uniform data interface (UDI) method and system using an application programming interface (API) |
US5774119A (en) * | 1996-08-14 | 1998-06-30 | International Business Machines Corporation | Graphical interface method, apparatus and application for selection of target object |
US6166739A (en) * | 1996-11-07 | 2000-12-26 | Natrificial, Llc | Method and apparatus for organizing and processing information using a digital computer |
US6054996A (en) * | 1996-11-20 | 2000-04-25 | Interntional Business Machines Corporation | Data processing system and method for controlling a view of a realistic object in a display device |
US6052130A (en) * | 1996-11-20 | 2000-04-18 | International Business Machines Corporation | Data processing system and method for scaling a realistic object on a user interface |
US5898431A (en) * | 1996-12-31 | 1999-04-27 | International Business Machines Corporation | Database graphical user interface with calendar view |
US5949413A (en) * | 1996-12-31 | 1999-09-07 | International Business Machines Corporation | Database graphical user interface with tabbed user view |
US5874953A (en) * | 1996-12-31 | 1999-02-23 | International Business Machines Corporation | Database graphical user interface with outline view |
US6052121A (en) * | 1996-12-31 | 2000-04-18 | International Business Machines Corporation | Database graphical user interface with user frequency view |
US6545687B2 (en) | 1997-01-09 | 2003-04-08 | Canon Kabushiki Kaisha | Thumbnail manipulation using fast and aspect ratio zooming, compressing and scaling |
US6054985A (en) * | 1997-01-27 | 2000-04-25 | International Business Machines Corporation | Data processing system and method for simulating compound objects |
JP3890132B2 (en) * | 1997-01-31 | 2007-03-07 | キヤノン株式会社 | Network server and image processing method |
US6233726B1 (en) * | 1997-02-05 | 2001-05-15 | Sybase, Inc. | Development system with reference card and parameter wizard methodologies for facilitating creation of software programs |
US5969720A (en) * | 1997-03-07 | 1999-10-19 | International Business Machines Corporation | Data processing system and method for implementing an informative container for a file system |
US5936624A (en) * | 1997-03-07 | 1999-08-10 | International Business Machines Corporation | Data processing system having a logical containment system and method therefor |
US6041312A (en) * | 1997-03-28 | 2000-03-21 | International Business Machines Corporation | Object oriented technology framework for accounts receivable and accounts payable |
US6047284A (en) * | 1997-05-14 | 2000-04-04 | Portal Software, Inc. | Method and apparatus for object oriented storage and retrieval of data from a relational database |
US6335972B1 (en) | 1997-05-23 | 2002-01-01 | International Business Machines Corporation | Framework-based cryptographic key recovery system |
US6473893B1 (en) | 1997-05-30 | 2002-10-29 | International Business Machines Corporation | Information objects system, method, and computer program organization |
US6154213A (en) * | 1997-05-30 | 2000-11-28 | Rennison; Earl F. | Immersive movement-based interaction with large complex information structures |
US6125383A (en) * | 1997-06-11 | 2000-09-26 | Netgenics Corp. | Research system using multi-platform object oriented program language for providing objects at runtime for creating and manipulating biological or chemical data |
US6278991B1 (en) * | 1997-08-22 | 2001-08-21 | Sap Aktiengesellschaft | Browser for hierarchical structures |
US6035305A (en) * | 1997-08-29 | 2000-03-07 | The Boeing Company | Computer-based method of structuring product configuration information and configuring a product |
US6230314B1 (en) * | 1997-10-02 | 2001-05-08 | International Business Machines Corporation | Method and device for program transformation using class hierarchy transformation based upon type constraint analysis |
US5983020A (en) * | 1997-10-02 | 1999-11-09 | International Business Machines Corporation | Rule-based engine for transformation of class hierarchy of an object-oriented program |
US6956497B1 (en) | 1997-10-09 | 2005-10-18 | Vulcan Patents Llc | Method and apparatus for sending presence messages |
US6282206B1 (en) * | 1997-10-09 | 2001-08-28 | Interval Research Corporation | Variable bandwidth communication systems and methods |
AU1329199A (en) | 1997-12-01 | 1999-06-16 | Cedara Software Corp. | Architecture for an application framework |
US7062497B2 (en) * | 1998-01-22 | 2006-06-13 | Adobe Systems Incorporated | Maintaining document state history |
US6230318B1 (en) * | 1998-02-24 | 2001-05-08 | Microsoft Corporation | Application programs constructed entirely from autonomous component objects |
US6169997B1 (en) * | 1998-04-29 | 2001-01-02 | Ncr Corporation | Method and apparatus for forming subject (context) map and presenting Internet data according to the subject map |
US6611954B1 (en) * | 1998-06-03 | 2003-08-26 | Intel Corporation | Binary compatible software objects |
US6374273B1 (en) | 1998-06-05 | 2002-04-16 | International Business Machines Corporation | Reformatting a first single-column markup document into a multi-column document, and formatting second markup document in the background, while displaying the first reformatted document |
US6104393A (en) * | 1998-06-11 | 2000-08-15 | International Business Machines Corporation | Integration of procedural and object-oriented user interfaces |
AU6410699A (en) * | 1998-10-13 | 2000-05-01 | Chris Cheah | Method and system for controlled distribution of information over a network |
US6473824B1 (en) | 1998-10-14 | 2002-10-29 | International Business Machines Corporation | Dynamic association of input/output device with application programs |
US20010020242A1 (en) * | 1998-11-16 | 2001-09-06 | Amit Gupta | Method and apparatus for processing client information |
US6487538B1 (en) | 1998-11-16 | 2002-11-26 | Sun Microsystems, Inc. | Method and apparatus for local advertising |
US6536033B1 (en) * | 1999-01-28 | 2003-03-18 | International Business Machines Corp. | Uniform mechanism for building containment hierarchies |
US6326957B1 (en) * | 1999-01-29 | 2001-12-04 | International Business Machines Corporation | System and method for displaying page information in a personal digital notepad |
US7966328B2 (en) | 1999-03-02 | 2011-06-21 | Rose Blush Software Llc | Patent-related tools and methodology for use in research and development projects |
US7716060B2 (en) | 1999-03-02 | 2010-05-11 | Germeraad Paul B | Patent-related tools and methodology for use in the merger and acquisition process |
WO2001046804A1 (en) * | 1999-08-16 | 2001-06-28 | Z-Force Corporation | System of reusable software parts for implementing concurrency and hardware access, and methods of use |
US6556992B1 (en) * | 1999-09-14 | 2003-04-29 | Patent Ratings, Llc | Method and system for rating patents and other intangible assets |
US6826744B1 (en) * | 1999-10-01 | 2004-11-30 | Vertical Computer Systems, Inc. | System and method for generating web sites in an arbitrary object framework |
US6662225B1 (en) * | 1999-11-16 | 2003-12-09 | Ricoh Company, Ltd. | Remote system usage monitoring with flexible packaging of data |
DE19959218A1 (en) * | 1999-12-08 | 2001-06-13 | Giesecke & Devrient Gmbh | Operator unit for banknote processing machines |
US6959425B1 (en) * | 1999-12-15 | 2005-10-25 | Sun Microsystems, Inc. | System and method for managing a scalable list of items for display |
GB0004090D0 (en) * | 2000-02-22 | 2000-04-12 | Innovation Venture Ltd | Application programming system and method of operation thereof |
US7000108B1 (en) | 2000-05-02 | 2006-02-14 | International Business Machines Corporation | System, apparatus and method for presentation and manipulation of personal information syntax objects |
US7475404B2 (en) | 2000-05-18 | 2009-01-06 | Maquis Techtrix Llc | System and method for implementing click-through for browser executed software including ad proxy and proxy cookie caching |
US8086697B2 (en) | 2005-06-28 | 2011-12-27 | Claria Innovations, Llc | Techniques for displaying impressions in documents delivered over a computer network |
US6810149B1 (en) | 2000-08-17 | 2004-10-26 | Eastman Kodak Company | Method and system for cataloging images |
JP2004523931A (en) * | 2000-09-02 | 2004-08-05 | エマジェオン、インコーポレイテッド | Method and apparatus for streaming DICOM images through a source and a receiver of a data element |
US6996800B2 (en) * | 2000-12-04 | 2006-02-07 | International Business Machines Corporation | MVC (model-view-controller) based multi-modal authoring tool and development environment |
US6957416B2 (en) * | 2001-01-31 | 2005-10-18 | Hewlett-Packard Development Company, L.P. | Document builder classes and methods |
US7302634B2 (en) | 2001-03-14 | 2007-11-27 | Microsoft Corporation | Schema-based services for identity-based data access |
US7539747B2 (en) | 2001-03-14 | 2009-05-26 | Microsoft Corporation | Schema-based context service |
US7284271B2 (en) | 2001-03-14 | 2007-10-16 | Microsoft Corporation | Authorizing a requesting entity to operate upon data structures |
US7024662B2 (en) | 2001-03-14 | 2006-04-04 | Microsoft Corporation | Executing dynamically assigned functions while providing services |
US6985958B2 (en) * | 2001-03-14 | 2006-01-10 | Microsoft Corporation | Messaging infrastructure for identity-centric data access |
US6803929B2 (en) * | 2001-07-05 | 2004-10-12 | International Business Machines Corporation | Method, apparatus and computer program product for moving or copying information |
JP4284896B2 (en) * | 2001-08-02 | 2009-06-24 | コニカミノルタビジネステクノロジーズ株式会社 | File management program, computer-readable recording medium storing file management program, and file management method |
US8099393B2 (en) | 2002-03-22 | 2012-01-17 | Oracle International Corporation | Transaction in memory object store |
US20030233422A1 (en) * | 2002-06-12 | 2003-12-18 | Andras Csaszar | Method and apparatus for creation, publication and distribution of digital objects through digital networks |
US9886309B2 (en) | 2002-06-28 | 2018-02-06 | Microsoft Technology Licensing, Llc | Identity-based distributed computing for device resources |
US7603341B2 (en) | 2002-11-05 | 2009-10-13 | Claria Corporation | Updating the content of a presentation vehicle in a computer network |
JP2005031979A (en) * | 2003-07-11 | 2005-02-03 | National Institute Of Advanced Industrial & Technology | Information processing method, program, device, and remote controller |
EP1739543A4 (en) * | 2004-04-05 | 2009-09-30 | Panasonic Corp | Screen transition control device |
US8078602B2 (en) | 2004-12-17 | 2011-12-13 | Claria Innovations, Llc | Search engine for a computer network |
US8255413B2 (en) | 2004-08-19 | 2012-08-28 | Carhamm Ltd., Llc | Method and apparatus for responding to request for information-personalization |
AU2004240229B2 (en) * | 2004-12-20 | 2011-04-07 | Canon Kabushiki Kaisha | A radial, three-dimensional, hierarchical file system view |
US7693863B2 (en) | 2004-12-20 | 2010-04-06 | Claria Corporation | Method and device for publishing cross-network user behavioral data |
US20080270417A1 (en) * | 2005-02-07 | 2008-10-30 | Robert Roker | Method and System of Targeting Content |
US8073866B2 (en) | 2005-03-17 | 2011-12-06 | Claria Innovations, Llc | Method for providing content to an internet user based on the user's demonstrated content preferences |
US8223935B2 (en) | 2005-04-30 | 2012-07-17 | Oracle International Corporation | Revenue management systems and methods |
CA2613701C (en) | 2005-06-28 | 2016-04-12 | Alexander Rockel | Revenue management system and method |
CA2616194C (en) | 2005-07-28 | 2015-02-17 | Oracle International Corporation | Revenue management system and method |
US7949581B2 (en) * | 2005-09-07 | 2011-05-24 | Patentratings, Llc | Method of determining an obsolescence rate of a technology |
US20070061745A1 (en) * | 2005-09-09 | 2007-03-15 | Microsoft Corporation | Nested views in an electronic file system |
US8176410B1 (en) * | 2005-09-13 | 2012-05-08 | Adobe Systems Incorporated | System and/or method for content cropping |
US7716226B2 (en) | 2005-09-27 | 2010-05-11 | Patentratings, Llc | Method and system for probabilistically quantifying and visualizing relevance between two or more citationally or contextually related data objects |
US8223777B2 (en) | 2005-11-15 | 2012-07-17 | Oracle International Corporation | Gateway for achieving low latency and high availability in a real time event processing system |
US20090055267A1 (en) * | 2007-08-23 | 2009-02-26 | Robert Roker | Internet advertising brokerage apparatus, systems, and methods |
US20100333017A1 (en) * | 2007-11-27 | 2010-12-30 | David J. Ortiz | Computer graphic user interface and display system |
US8326378B2 (en) * | 2009-02-13 | 2012-12-04 | T-Mobile Usa, Inc. | Communication between devices using tactile or visual inputs, such as devices associated with mobile devices |
US20110055676A1 (en) * | 2009-08-28 | 2011-03-03 | Xingzhong Sun | Interactive user interface by embedding a document into a standardized object container |
CN102741779B (en) * | 2009-10-08 | 2016-08-03 | 萨姆万斯集团知识产权控股私人有限公司Acn131335325 | Share the method for data, system and controller |
US8515831B2 (en) * | 2010-01-04 | 2013-08-20 | Bala R. Vatti | People's task management framework |
US9384011B2 (en) * | 2010-06-30 | 2016-07-05 | International Business Machines Corporation | Workspace creation and management for a computing desktop |
US8856101B2 (en) * | 2011-10-14 | 2014-10-07 | Normand Pigeon | Interactive media card |
WO2013131321A1 (en) * | 2012-03-08 | 2013-09-12 | 中兴通讯股份有限公司 | Mobile terminal application icon management method and mobile terminal |
US9483479B2 (en) * | 2013-08-12 | 2016-11-01 | Sap Se | Main-memory based conceptual framework for file storage and fast data retrieval |
JP6092981B1 (en) | 2015-10-20 | 2017-03-08 | Line株式会社 | Display control method, information processing apparatus, terminal, and program |
US20170111297A1 (en) * | 2015-10-20 | 2017-04-20 | Line Corporation | Display control method, terminal, and information processing apparatus |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4899136A (en) * | 1986-04-28 | 1990-02-06 | Xerox Corporation | Data processor having a user interface display with metaphoric objects |
US4821220A (en) * | 1986-07-25 | 1989-04-11 | Tektronix, Inc. | System for animating program operation and displaying time-based relationships |
US4885717A (en) * | 1986-09-25 | 1989-12-05 | Tektronix, Inc. | System for graphically representing operation of object-oriented programs |
US5072412A (en) * | 1987-03-25 | 1991-12-10 | Xerox Corporation | User interface with multiple workspaces for sharing display system objects |
US4974173A (en) * | 1987-12-02 | 1990-11-27 | Xerox Corporation | Small-scale workspace representations indicating activities by other users |
US4891630A (en) * | 1988-04-22 | 1990-01-02 | Friedman Mark B | Computer vision system with improved object orientation technique |
US4953080A (en) * | 1988-04-25 | 1990-08-28 | Hewlett-Packard Company | Object management facility for maintaining data in a computer system |
EP0347162A3 (en) * | 1988-06-14 | 1990-09-12 | Tektronix, Inc. | Apparatus and methods for controlling data flow processes by generated instruction sequences |
US5065347A (en) * | 1988-08-11 | 1991-11-12 | Xerox Corporation | Hierarchical folders display |
US5107443A (en) * | 1988-09-07 | 1992-04-21 | Xerox Corporation | Private regions within a shared workspace |
US5121478A (en) * | 1988-09-08 | 1992-06-09 | Xerox Corporation | Window system with independently replaceable window functionality |
US5041992A (en) * | 1988-10-24 | 1991-08-20 | University Of Pittsburgh | Interactive method of developing software interfaces |
US5159669A (en) * | 1988-12-15 | 1992-10-27 | Xerox Corporation | Automatically creating a second workspace operation record including history data and a unit ID based on a first workspace operation |
US5133075A (en) * | 1988-12-19 | 1992-07-21 | Hewlett-Packard Company | Method of monitoring changes in attribute values of object in an object-oriented database |
US5050090A (en) * | 1989-03-30 | 1991-09-17 | R. J. Reynolds Tobacco Company | Object placement method and apparatus |
US5060276A (en) * | 1989-05-31 | 1991-10-22 | At&T Bell Laboratories | Technique for object orientation detection using a feed-forward neural network |
US5125091A (en) * | 1989-06-08 | 1992-06-23 | Hazox Corporation | Object oriented control of real-time processing |
US5181162A (en) * | 1989-12-06 | 1993-01-19 | Eastman Kodak Company | Document management and production system |
US5093914A (en) * | 1989-12-15 | 1992-03-03 | At&T Bell Laboratories | Method of controlling the execution of object-oriented programs |
US5075848A (en) * | 1989-12-22 | 1991-12-24 | Intel Corporation | Object lifetime control in an object-oriented memory protection mechanism |
US5305435A (en) * | 1990-07-17 | 1994-04-19 | Hewlett-Packard Company | Computer windows management system and method for simulating off-screen document storage and retrieval |
US5151987A (en) * | 1990-10-23 | 1992-09-29 | International Business Machines Corporation | Recovery objects in an object oriented computing environment |
US5119475A (en) * | 1991-03-13 | 1992-06-02 | Schlumberger Technology Corporation | Object-oriented framework for menu definition |
US5287447A (en) * | 1991-06-28 | 1994-02-15 | International Business Machines Corporation | Method and system for providing container object attributes to a non-container object |
-
1993
- 1993-06-03 US US08/071,812 patent/US5544302A/en not_active Expired - Lifetime
-
1994
- 1994-01-10 WO PCT/US1994/000269 patent/WO1994029792A1/en active Application Filing
- 1994-01-10 CN CN94190576A patent/CN1113396A/en active Pending
- 1994-01-10 JP JP7501721A patent/JPH08511118A/en active Pending
- 1994-01-10 AU AU60849/94A patent/AU6084994A/en not_active Abandoned
- 1994-01-10 CA CA002141929A patent/CA2141929A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
AU6084994A (en) | 1995-01-03 |
US5544302A (en) | 1996-08-06 |
CN1113396A (en) | 1995-12-13 |
JPH08511118A (en) | 1996-11-19 |
WO1994029792A1 (en) | 1994-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5634129A (en) | Object oriented system for representing physical locations | |
US5544302A (en) | Object-oriented framework for creating and using container objects with built-in properties | |
US5634057A (en) | Place object display system having place objects selected in response to a user identifier | |
US5396626A (en) | Object-oriented locator system | |
EP0664028B1 (en) | Object-oriented system locator system | |
Fuchs et al. | Supporting cooperative awareness with local event mechanisms: The GroupDesk system | |
Yankelovich et al. | Intermedia: The concept and the construction of a seamless information environment | |
US5640565A (en) | Business card system | |
Davis et al. | Towards an integrated information environment with open hypermedia systems | |
Meyrowitz | Intermedia: The architecture and construction of an object-oriented hypemedia system and applications framework | |
US5900870A (en) | Object-oriented computer user interface | |
US5706517A (en) | Method and apparatus for retrieving distributed objects in a networked system | |
CA2155357C (en) | Dynamic linking system | |
Maher et al. | A model for synchronous collaborative design using CAD and database management | |
WO1995004962A1 (en) | Object-oriented graphic picking system | |
Pawson et al. | Naked objects: a technique for designing more expressive systems | |
JPH09251416A (en) | Hypermedia type document management device | |
Decouchant et al. | Griffon: A cooperative, structured, distributed document editor | |
Maier et al. | Peer-to-peer information workspaces in infotop | |
US6880006B1 (en) | System and method for contextual passive rule-based navigation between applications supporting network-disconnected use | |
CA2154451C (en) | Object-oriented cursor tool | |
Carlsson | A Categorization of HCI patterns | |
Salber et al. | Extending the scope of PAC-Amodeus to cooperative systems | |
Araujo | A Design Process based on patterns and non-functional requirements | |
Frohner | Layered Design Visualisation. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FZDE | Discontinued |