COMPUTER SYSTEM WITH GRAPHICAL USER INTERFACE INCLUDING SPRING-LOADED ENCLOSURES
A new behavior in a graphical user interface allows the user to open and close enclosures, while dragging an object. When the user pauses, gestures, or rolls over a hot spot on top of an icon or text representing a closed enclosure, a temporary window for the closed enclosure is “sprung open” to allow the user to browse inside the enclosure and possible open another enclosure contained within the temporary window. This process can be carried on throughout a hierarchy of windows as the user browses for a destination window for the drag operation. All of the temporary windows except the destination are closed when the mouse button is released, signaling the end of a drag. The user may close sprung open windows by simply moving the cursor out of the sprung open window, or by making some other gesture. If an enclosure to be sprung open was previously open on the desktop, the previously opened window may zoom over to the current mouse position, and then return to its original position when the user mouse is out of the window.
This application is a continuation of co-pending U.S. patent application Ser. No. 11/648,053, filed Dec. 28, 2006, which is a continuation of U.S. patent application Ser. No. 11/187,078, filed Jul. 21, 2005 (now U.S. Pat. No. 7,549,126), which is a continuation application of U.S. patent application Ser. No. 09/964,723, filed Sep. 25, 2001 (now U.S. Pat. No. 6,928,621), which is a continuation of U.S. Ser. No. 09/565,912, filed May 5, 2000 (now U.S. Pat. No. 6,307,545), which is a continuation of U.S. patent application Ser. No. 08/889,719, filed Jul. 8, 1997 (now U.S. Pat. No. 6,061,061), which is a continuation of U.S. application Ser. No. 08/482,186, filed Jun. 7, 1995 (now U.S. Pat. No. 5,680,562), which is a continuation application of U.S. application Ser. No. 08/076,253, filed Jun. 11, 1993 (now U.S. Pat. No. 5,583,984).BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention relates to computer systems with graphical user interfaces, such as window based systems; and more particularly to techniques for finding, moving, and copying objects in such systems.
2. Description of the Related Art
Graphical user interfaces on computer systems are gaining widespread use. Typical systems include the Macintosh Finder™ environment in Macintosh computers provided by Apple Computer, Inc., of Cupertino, Calif., the Windows environment provided by Microsoft Corporation of Redmond, Wash., and the New Wave™ environment provided by Hewlett-Packard of Palo Alto, Calif. In such systems, a workspace on the display system is set up with a desktop metaphor. Within the desktop, there are icons displayed which correspond to objects stored in memory. Many icons represent enclosures that enclose other objects. Opening the enclosures results in display of a window that encloses related icons.
These systems provide the ability to move an object from an enclosure represented by another window or icon, or to copy an object represented by an icon within one window into an enclosure represented by another window or icon. These operations involve first setting up a destination window. The problem of setting up the destination window may be quite complicated, when the system involves a complex hierarchy of enclosures.
Further, the process of setting up the destination window may clutter the desktop with a number of windows, obscuring the windows actually in use.
After setting up the destination window, the cursor is moved to an icon representing the object to be placed in the destination window by the move or copy operation. A drag operation is then executed to move the icon into the destination window. The drag operation typically involves placing the cursor over the icon subject of the drag operation, depressing the mouse button, and while the mouse button remains depressed, moving the cursor into the destination window. The mouse button is released when the cursor is over the destination window. The operating system responds to this manipulation of the graphical interface by either moving the object into the destination window if both the object and the destination are stored on the same disk, or copying the object into the destination window if the destination is on a different disk than the object.
Finally, after the drag operation, the user must clean up the desktop by closing the unneeded windows that were opened during the process of setting up the destination window.
As can be appreciated, this process is quite cumbersome when the destination window is deep in a hierarchy. Also, the problem of setting up the destination window makes initiation of a drag operation problematic. It would be desirable to be able to browse through the storage system hierarchy after the drag operation has begun.SUMMARY OF THE INVENTION
The present invention provides a new behavior in a graphical user interface which allows the user to open and close enclosure windows, while dragging an object. When the user pauses, gestures, or rolls over a hot spot on top of an identifier representing a closed enclosure, a temporary window for the closed enclosure is “sprung open” to allow the user to browse inside the enclosure and possibly open another enclosure contained within the sprung open window. This process can be carried on throughout a deep hierarchy of windows as the user browses for a destination for the drag operation.
The user may close sprung open windows by simply moving the cursor out of the sprung open window, or by making some other indication with the pointing device, as suits the needs of a particular design.
Further, if an enclosure to be sprung open was previously open on the desktop, the previously opened window may zoom over to the current cursor position, and then return to its original position when the user moves the cursor out of the window.
Accordingly, the present invention can be characterized as an apparatus for finding or browsing among enclosures in a computer system which includes a display, a memory, and a pointing device with which the user drags a pointer (cursor) on the display. The apparatus includes a storage system that stores a plurality of objects which include enclosures in the memory. The enclosures comprise objects which may enclose other objects, and when opened, are represented by a window on the desktop. The system includes window management software that draws, windows on the display corresponding to opened enclosures. Also, a mouse with a mouse button, or other input device is included which supplies a signal to indicate a drag operation. The spring loaded enclosures are managed with software responsive to a drag during a drag operation of the pointer over an identifier (textual or graphical) corresponding to a particular enclosure for opening a temporary window for the particular enclosure to display icons within the temporary window that correspond to the objects enclosed by the particular enclosure. Further, the spring-loaded enclosure management software is responsive to a drag during the drag operation of the pointer outside the temporary window for closing the temporary window.
By releasing the mouse button or otherwise indicating an end of the drag operation, the user signals software for placing the particular object subject of the drag into the particular enclosure which has been sprung open during the drag.
The spring-loaded enclosure management software further determines whether the display includes an existing window opened for the particular enclosure during the drag operation to open a temporary window, and, if so, then removing the existing window from the display and drawing the temporary window on the display centered around the cursor, or otherwise associated with the position of the identifier corresponding to the particular enclosure. Also, in one aspect, the invention provides for graphically indicating on the display a zoom of the existing window over to the location of the temporary window. When the temporary window is closed, the existing window may be re-drawn on the display at its original position.
The decision to open a temporary window during a drag operation may be conditioned on actions by the user of the pointing device, such as pausing over the identifier for the particular enclosure, or making some other gesture. For instance, the identifier for enclosures that may be opened may include a hot region or temporary window area. Moving the cursor over the temporary window area of the identifier will cause the enclosure to be sprung open. Alternatively, moving the cursor over an identifier of an enclosure may cause display of a split selector graphic. Moving the cursor to a particular side of the split selector graphic will cause the enclosure to spring open; while moving to the other side of the split selector graphic will cause the split selector graphic to be removed from the screen.
Thus, using the spring-loaded enclosure mechanism of the present invention, the user of a graphical user interface is free to browse through enclosures while dragging, rather than being forced to set up the source and destination before the drag begins. This greatly increases the ease of use of the graphical user interface.
Other aspects and advantages of the present invention can be seen upon review of the figures, the detailed description, and the claims which follow.
A detailed description of a preferred embodiment of the present invention is provided with respect to the figures.
Finally, the system includes a display controller 17 which includes video memory. The display controller 17 drives a display 18 such as a CRT video monitor, LCD flat panel display, or the like. The display system 18 has a screen, generally 19. On the screen 19, a workspace 20 is displayed. The workspace 20 is implemented with a desktop metaphor in the Macintosh type systems. Within the desktop 20, a plurality of identifiers may be displayed, such as the identifier 21 representing a hard disk drive, the identifier 22 representing a floppy disk, and other identifiers not shown which represent files, applications, control panels, or enclosures which enclose other objects. Also on the desktop 20, a plurality of windows, such as windows 23, 24, and 25 may be opened. The windows 23, 24, and 25 enclosed identifiers, such as identifiers 26 and 27 in window 23, identifiers 28, 29, and 30 in window 24, and identifier 31 in window 25.
In the figure, the identifiers are shown as graphical elements, or icons. Alternative identifiers may be textual elements, such as the name of the corresponding object. The behaviors described herein may be applied to both textual and graphical elements, as may occur in windows opened in a view by name mode or a view by icon mode in Macintosh computers.
In the illustration of
The spring-loaded enclosure management software and window management software in the instruction memory 15 of the system are used to open and close windows, and to maintain records concerning the open and closed windows, and their positions within the desktop 20, the location of icons within the windows or on the desktop 20, and the like. During a drag operation, the spring-loaded enclosure management software in the instruction memory 15 is operable to create temporary windows so that the user may browse during the drag operation as described above.
Examples of the operation of the spring-loaded enclosures are provided with reference to
As shown in
As shown in
In the illustrations of
As mentioned with reference to
As shown in
The system also includes timer logic 102 for detecting a pause of the cursor over a particular identifier in the spring-loaded enclosure management routine. Also, the timer 102 may be used for other purposes.
Also included in the control software is spring-loaded enclosure management logic 103. This management logic maintains a list of temporary windows referred to as the “Sprung Stack”, and an indicator of the Top temporary window in the Sprung Stack. The Sprung Stack consists of a set of pointers to records that identify the state of the temporary windows. These records are referred to as Sprung Records.
The system further includes window management logic 104 which performs a variety of functions known to those of skill in the art for managing windows. This window management logic includes a system for opening and closing windows on the desktop in response to pointer actions, and maintains a desktop Window List. The desktop Window List comprises a list of windows that are opened on the desktop, their positions on the desktop, and other characteristics of the window, including the location, the types of windows, and information about icons, if any, enclosed by the window. Further, enclosure windows in the list point to a window record that contains information about the enclosures that are represented by identifiers in the windows, and such other information as is needed.
In cooperation with the drag logic 101, the window management logic 104 maintains a parameter referred to as the Current Window, which indicates the window within which the cursor currently resides. Also, the window management logic 104 maintains a parameter referred to as the Last Window which indicates the last window which the cursor was over, for instance if the cursor moves from inside a window to outside a window. Finally, the window management logic maintains a record referred to as the Current Enclosure which indicates the identifier that the cursor is presently positioned over.
A final component of the control software is known as the drawer management logic 105. The drawer management logic manages windows which are maintained on the screen with a desk drawer metaphor. In particular, the windows are positioned along the periphery of the desktop. They can be slid off the desktop leaving only a drawer identifier on the perimeter of the desktop display. When the desk drawer window is opened in response to a cursor action executed by the user, the window slides onto the screen obscuring any windows underneath it. When the user is done with the window, it can be slid back offscreen to reveal the underlying windows. The desk drawer management logic 105 maintains a Threshold parameter which indicates the distance from the perimeter of the desktop within which a cursor movement will result in opening of the drawer, and a Current Drawer parameter indicating the drawer within which the cursor is currently positioned.
The drawer management logic is described in detail in our co-pending U.S. patent application entitled COMPUTER SYSTEM WITH GRAPHICAL USER INTERFACE INCLUDING DRAWER-LIKE WINDOWS, invented by Thomas J. Conrad and Elizabeth Moller.
The spring-loaded enclosure management logic 103 maintains a Sprung Stack 113. This includes a list of temporary windows, window X, window Y, and so on, which have been opened during a drag operation according to the present invention. Each entry in the Sprung Stack points to a Sprung Record 114. The Sprung Record maintains such information about the temporary window as whether the window was previously opened on the desktop and, if so, where; the location on the desktop of the temporary window; a pointer to a list of identifiers (e.g., 111) for the temporary window; etc.
A functional flow chart for executing the spring-loaded enclosure management is provided with reference to
If the mouse button remains down at block 604, then a drag operation is indicated. In this case, the routine creates a grey outline (referred to as an “altered view” above) of the object and attaches the grey outline to the cursor. Also, the Last Window parameter is set equal to the Current Window parameter (block 606).
After block 606, the mouse button is monitored (block 607). If the mouse button is released, then the algorithm branches to the Finish Drag routine represented by block 608 which is shown in detail in
If, in block 804, the cursor remains over the Current Enclosure, the algorithm tests whether the timer is equal to zero in bock 807. If the timer is not equal to zero, the algorithm tests whether the timer has expired in block 808. If it has expired, then the Spring Open Window routine represented by block 809 and shown in detail in
If in block 807 the timer was equal to zero, then the timer is started (block 810) and the algorithm loops to block 804 to begin monitoring whether the cursor remains over the enclosure until expiration of the timer.
If the window to be sprung open was not already open at block 901, or after block 903, the algorithm opens a temporary window centered about the cursor position (block 904). Next, the temporary window centered about the cursor position is tested to determine whether it is partially offscreen (block 905). If it is partially offscreen, then the window is moved onto the screen (block 906). After block 906, or if the window is completely on the screen at block 905, then the algorithm tests whether the window is too big for the sprung open routine (block 907). If the window is too big then it is resized to fit on the monitor that the cursor is currently on, leaving several pixels of free space around the window (block 908).
After block 907, if the window is not too big, or after it is resized in block 908, the algorithm loops to block 909 where the window reference (description of the temporary window) is stored in the Sprung Record. Next, the Sprung Record is pushed onto the Sprung Stack (block 910). After block 910, the algorithm returns to block 703 of
If the Last Window is not an open drawer, or after the drawer is shut in block 1002, then the algorithm tests whether the Last Window is the Top Window in the Sprung Stack (block 1003). If it is not, then the algorithm returns to block 1003 of
If at block 1003 the Last Window is the Top window in the sprung stack or if the algorithm is entered from block 1301 of
After the Sprung Record is popped off of the Top of the Sprung Stack, the temporary window corresponding to the Top record is closed (block 1005). Next, the algorithm determines whether the Top window (being popped off the stack) needs to be re-opened (block 1006). This occurs if the Top was open at another location on the desktop before the temporary window was opened during the drag operation. If so, the. Top is re-opened at the location indicated in the Sprung Record, and then the algorithm determines whether it should be resized (block 1007). If it needs to be resized, then the resize operation is executed (block 1008). If the Top that is being popped off the top of the Sprung Stack does not need to be resized, or after the resizing in block 1008, then the new Top of the Sprung Stack is opened (block 1009). After block 1009, or if the window does not need to be re-opened from block 1006, the algorithm returns to block 1003 of
III. Alternate Spring Open Gestures
Those skilled in the art will appreciate that there are a variety of techniques for indicating the desire to spring open an enclosure during a drag operation.IV. Conclusion
A new behavior of the graphical user interface has been provided which allows a user to open and close enclosures, such as folders in the Macintosh Finder™ environment, while dragging some other object. When the user pauses, gestures, or rolls over a hot spot on the object during the drag, a temporary window corresponding to that object is opened on top of the cursor. This allows the user to browse inside the enclosure and possibly open a hierarchy of enclosures contained within the newly opened window during the drag operation. The user thus has access to the entire storage system hierarchy during a drag operation. By using the spring loaded enclosure mechanism, the user is left free to browse while dragging, rather than being forced to set up source and destination windows before a drag begins. This greatly improves the basic copy and move functions provided by the graphical user interfaces based on windows and icons.
The foregoing description of preferred embodiments of the present invention has been provided for the purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise forms disclosed. Obviously, many modifications and variations will be apparent to practitioners skilled in this art. The embodiments were chosen and described in order to best explain the principles of the invention and its practical application, thereby enabling others skilled in the art to understand the invention for various embodiments and with various modifications as are suited to the particular use contemplated. It is intended that the scope of the invention be defined by the following claims and their equivalents.
1. A method, comprising:
- performing a drag operation comprising associating an object with a location on a display;
- storing in a memory a plurality of objects including enclosures that comprise objects that may enclose other objects;
- displaying windows on the display corresponding to open enclosures wherein a window for an opened enclosure includes identifiers within the window corresponding to objects enclosed by the opened enclosure; and
- opening a temporary window for a particular enclosure displayed within one of the windows to display identifiers within the temporary window corresponding to objects enclosed by the particular enclosure in response to a drag operation over a location on the display device corresponding to an identifier of the particular enclosure.
Filed: May 4, 2010
Publication Date: Aug 26, 2010
Inventors: Thomas J. Conrad (San Jose, CA), Yin Yin Wong (Menlo Park, CA)
Application Number: 12/773,796
International Classification: G06F 3/048 (20060101);