The present invention relates generally to the field of software and in particular to a system and method of affinity group window management in a GUI environment.
The use of Graphical User Interface (GUI) environments is well known in the computer arts, as evidenced by the popularity of the Microsoft Windows® and Apple Computer OS X® operating systems. In these GUI environments, applications run in separate windows, any one of which may be active at a time (also referred to as selected, or receiving the window focus). Typically, the selected or active window is raised to the top of the apparent stack of windows, or in computer graphics terms, the highest z-order level of the GUI environment.
Some applications that run in GUI environments spawn multiple, related windows, such as to provide menus of functions represented by graphical icons, or windows that provide warnings, help text, or the like. Examples include the AutoCAD® mechanical drafting application by AutoDesk, Inc., and the PhotoShop® image editing application by Adobe, Inc. A property of these multi-window applications is that when any of the windows in the application are selected, or receive the GUI environment window focus, the entire set pops to the highest z-order level, or top of the desktop, together.
This feature of multiple-window z-order level shifting when any one window receives focus is programmed into the applications. There does not currently exist a way for a user to easily select windows in a GUI environment to change z-order level together, as a group, when one of the windows is selected.
The present invention relates to a method of associating windows in a GUI environment into one or more affinity groups by a user and accessing the windows as a group. The method comprises providing a GUI environment that includes a plurality of windows, and establishing, by the user, an affinity group comprising a subset of the plurality of windows in the GUI environment such that the windows comprising the affinity group are related. The method then includes raising the z-order of windows in the affinity group above other windows in the GUI environment when any one window in the affinity group is selected.
Raising the z-order of windows in the affinity group above other windows in the GUI environment may comprise, in one embodiment, raising all windows in the affinity group to the highest z-order level. Further, it may comprise tiling the windows to simultaneously occupy the highest z-order level. In another embodiment, raising the z-order of windows in the affinity group above other windows in the GUI environment may comprise raising the selected window to the highest z-order level, and raising the other windows in the affinity group to z-order levels immediately below the highest level.
The processor 12 is connected to a bus 18, to which are connected a variety of data storage devices and input and output devices. For example, a fixed disk drive 20 containing a computer-readable medium, from which GUI software 16 may be loaded into memory 14, may be attached to the bus 18. Additionally, a removable media disk drive 22 that receives removable computer-readable media 24 may be attached to the bus 18. The removable media 24 may comprise a floppy disk, a CD-ROM or DVD-ROM, a magnetic tape, high-capacity removable media, or the like. Removable media 24 may contain a variety of digital data, and in particular may contain GUI software 16. The software 16 may be copied from the removable media 24 to the fixed disk drive 20, and subsequently loaded into memory 14 from the fixed disk drive 20. Alternatively, the software 16 may be loaded directly from the removable media 24 into the memory 14.
Also connected to the bus 18 are input devices such as a keyboard 26 and a mouse 28, as well known in the art. The computer system 10 may additionally include output devices such as a printer 30 or display device 32. Display device 32 may comprise a traditional CRT monitor, a liquid crystal display (LCD), or the like.
In operation, software 16 executing on the computer system 10 provides a GUI environment to the user on the display device 32, as displayed, for example, in
A well-known advantage of a GUI environment is that it allows a user to simultaneously work with multiple, disparate applications, each running in a separate window. For example,
The concept of Z-ordering is well known in computer graphics, and relates to the apparent depth of graphic elements presented on a display 32. As used herein, the lowest Z-order element displayed in the GUI environment is that which appears furthest from the user, that is, on the “bottom” of the stack of overlaid windows, icons, and other GUI elements. Conversely, the highest Z-order element is that which appears on the “top” of the GUI environment. For example, a well-known behavior of GUI environments—particularly those constructed around the desktop metaphor—is that when a window is selected, or receives focus, it rises to the highest Z-order, overlying and occluding any other windows within its extent.
Under prior art GUI environment window management systems, a user could arrange the windows as depicted in
The windows 36, 38, 40 may be grouped together in a variety of ways. In one embodiment, a window group icon 48 is added to each window 36, 38, 40, 42, 44 by the GUI window manager. The window group icon 48 preferably appears in the window title bar, adjacent the familiar minimize, maximize, and close buttons 46 (in the Windows desktop environment; other GUI environments typically include similar window management buttons). The window group icon 48 preferably includes a graphic suggestive of grouping windows, such as the two blocks and double-headed arrow as depicted in
According to one embodiment of the present invention, when an affinity group of windows 36, 38, 40 is selected and rises to the highest Z-order level of the GUI environment, all of the windows 36, 38, 40 in the group are tiled, or resized and positioned so as to simultaneously display on the highest Z-order level without overlapping each other.
According to another embodiment of the present invention, when one window 36, 38, 40 of an affinity group is selected, only that window 36, 38, 40 rises to the top Z-order level, and the other windows 36, 38, 40 of the affinity group rise to Z-order levels immediately below the top level. This embodiment may be better suited to a user working with an affinity group having a large number of member windows 36, 38, 40, wherein tiling all of the windows on the highest Z-order level would leave insufficient room within each window to display an adequate portion of the corresponding application. This embodiment is also particularly applicable to an affinity group in which at least one window 36, 38, 40 requires a large display area. According to this embodiment, each window 36, 38, 40 of the affinity group may be sized to consume a large portion, or all, of the available space in the GUI environment, while maintaining the other windows 36, 38, 40 of the affinity group at the uppermost Z-order levels of the GUI environment for the user's convenience. The order of windows 36, 38, 40 within the affinity group in z-order levels below the selected window 36, 38, 40 may be the order in which they were added to the affinity group, the order in which they were created, the order in which they were last accessed, or any other ordering.
According to another embodiment of the present invention, an affinity group is established by the user by entering keystrokes, as opposed to the drag and drop operation of the GUI environment. To form an affinity group, a user may select a first window 36. With the window 36 selected, or receiving the GUI environment focus, the user inputs a window group keystroke combination. The user then selects another window 38, and enters a window group keystroke combination. This ties the two windows 36, 38 together in an affinity group. Additional windows, such as window 40, may be added to the group similarly. Preferably, the window group keystroke combination is a keystroke combination that is not recognized or acted upon by the application running in the relevant window 36, 38, 40. For example, the window group keystroke combination may include one or more qualifier keys, such as CTRL, ALT, SHIFT, or the like, and one or more “regular” keys, such as WG, representing “Window Group.” Preferably, the same window group keystroke combination is used to select each of the windows 36, 38, 40 to be added to the affinity group. Alternatively, a first window group keystroke combination may be utilized upon selecting the first window 36 such as for example, CTRL-PageUp, to mimic the “pick up” phase of the drag and drop operation. A second window group keystroke combination may then be used upon selecting the second window 38, such as CTRL-PageDown. The use of separate window group keystroke combinations more closely mimics the “drag and drop” operation using the GUI environment.
As with the drag and drop operation, a user may create multiple, separate affinity groups using the window group keystroke combination. Assuming a first affinity group has been established comprising windows 36, 38, 40, a user may create a second affinity group by selecting, for example, window 42, executing a window group keystroke combination, selecting another window that is not a member of the first affinity group, such as window 44, and entering a window group keystroke combination. This will tie windows 42, 44 into a second affinity group. According to the present invention, there is no limit to the number of affinity groups that a user may create. In particular, in a virtual desktop in GUI environment, where a large number of windows may be created and maintained, affinity groups are useful for managing windows 36, 38, 40 running related applications, and the affinity group relationship is retained across the virtual desktop spaces.
At step 52, the user selects any window 36, 38, 40, within the affinity group, to raise the Z-order level of the entire group. This operation depends on the GUI environment, but typically comprises placing the cursor on some exposed portion of the window for a predetermined duration or alternately clicking a mouse button; selecting an associated window icon 37, 39, 41; cycling window focus through all open windows (such as by the ALT-TAB keystroke in the Windows GUI environment) or the like. Selecting one window 36, 38, 40 may raise all of the windows 36, 38, 40 in the group to the highest Z-order level in the GUI environment simultaneously, as depicted in
Although the present invention has been described herein with respect to particular features, aspects and embodiments thereof, it will be apparent that numerous variations, modifications, and other embodiments are possible within the broad scope of the present invention, and accordingly, all variations, modifications and embodiments are to be regarded as being within the scope of the invention. The present embodiments are therefore to be construed in all aspects as illustrative and not restrictive and all changes coming within the meaning and equivalency range of the appended claims are intended to be embraced therein.