United States Patent5712995
CohnJanuary 27, 1998

Title

Non-overlapping tiling apparatus and method for multiple window displays

Abstract

A user interface provides a non-overlapped tiling mechanism for management of windows or panes. The non-overlapped tiling mechanism provides independent manipulation of panes and partitions between panes, and creates arrays of partitions from an array of panes in a tiled area. The partition arrays include whole partitions, segments, and combinations of segments. The various types of partitions can be managed and manipulated to effect resizing, repositioning and adjustment of multiple panes simultaneously. The mechanism provides free form and arbitrary arrangement of panes in configurations which do not require or necessarily exhibit any particular symmetry, any parent-child relationship, or any other fixed relationship among panes. The mechanism also provides for ad hoc addition, deletion and hiding of panes. Additionally, application regions can be freely associated and displayed with any of the panes, and associations between application regions and panes can be changed.


Inventors:Cohn; Robert M. (Cambridge, MA)
Assignee:Galileo Frames, Inc. (Cambridge, MA)
Appl. No.:530644
Filed:September 20, 1995

Current U.S. Class:715/792 
Current International Class:G06F 3/033 (20060101)
Field of Search:395/155-161,326-358 345/119-120 348/564-568

U.S. Patent Documents
4961070October 1990Maher et al.
5060170October 1991Bourgeois et al.
5146335September 1992Kim et al.
5371847December 1994Hargrove
5390295February 1995Bates
5487143January 1996Southgate
5561757October 1996Southgate
Other References
Cohen et al., "Automatic Strategies in the Siemens RTL Tiled Window Manager", IEEE, pp. 111-119, 1988. .
Myers, "A Taxonomy of Window Manager User Interfaces", IEEE, pp. 65-84, Sep. 1988. .
Cohen et al., "Constraint-Based Tiled Windows", IEEE, pp. 2-11, Nov. 1984..~
Primary Examiner: Breene; John E.
Attorney, Agent or Firm:Wolf, Greenfield & Sacks, P.C.

Claims


What is claimed is:
1. A tiling system comprising:
a plurality of non-overlapping panes, wherein a pane can be situated adjacent to more than one pane along an edge in a first direction, and wherein a pane can be situated adjacent to more than one pane along an edge in a second direction transverse to the first direction;
a plurality of partitions adjacent said plurality of panes, wherein at least two of the plurality of partitions have a common end;
means for moving one of the partitions having a common end; and
means for simultaneously moving the at least two partitions having a common end.

2. The tiling system of claim 1, wherein the at least two partitions having a common end are aligned.

3. The tiling system of claim 2, further comprising:
means for jointly displaying partitions which are aligned; and
means for displaying at least one of the aligned partitions distinctly from the partitions which are aligned.

4. The tiling system of claim 2, further comprising means for simultaneously moving at least two partitions which are positioned in directions transverse to each other.

5. The tiling system of claim 2, wherein a first application region is associated with a first pane, said tiling system further comprising means for disassociating the first application region from the first pane and associating the first application region with a second pane.

6. The tiling system of claim 5, wherein a second application region is associated with said second pane, said tiling system further comprising means for associating said second application region with said first pane when said first application region is associated with said second pane.

7. The tiling system of claim 2, further comprising means for creating an additional pane from a portion of at least one of said plurality of panes.

8. The tiling system of claim 7, wherein the means for creating a new pane include first means for defining an area for placement of the additional pane by movement of at least one partition.

9. The tiling system of claim 8, wherein the means for creating a new pane include second means for defining an area for placement of the additional pane by simultaneous movement of the at least one partition and at least one other partition aligned with the at least one partition.

10. The tiling system of claim 2, further comprising:
means for removing a first pane from said plurality of panes; and
means for resizing at least one pane of said plurality of panes which is adjacent to said first pane to include an area defined by said first pane.

11. The tiling system of claim 2, further comprising aligning means for moving a first partition which is within a range of a second partition so as to align the first and second partitions.

12. The tiling system of claim 11, wherein said aligning means includes means for altering said range.

13. The tiling system of claim 11, further comprising:
a plurality of predefined partition positions; and
wherein said aligning means includes means for moving said first partition into alignment with one of said plurality of predefined partition positions.

14. The tiling system of claim 2, further comprising parallel moving means for moving at least one partition which is parallel to the at least two partitions having a common end so as to maintain a predetermined dimension for at least one of said plurality of panes, when one of the at least two partitions having a common end is moved.

15. The tiling system of claim 2 further comprising means for associating application regions of another interface with respective ones of said plurality of panes.

16. The tiling system of claim 1, wherein the at least two partitions having a common end are transverse.

17. The tiling system of claim 16, further comprising parallel moving means for moving at least one partition parallel to a first one of the transverse partitions and at least one partition parallel to a second one of the transverse partitions so as to maintain a predetermined dimension of at least one of the plurality of panes when the transverse partitions are moved.

18. The tiling system of claim 1, further comprising partition creating means for creating said plurality of partitions based upon said plurality of non-overlapping panes.

19. The tiling system of claim 18, wherein said partition creating means includes:
edge means for identifying edges of said plurality of panes;
matching means for determining coextensive edges of adjacent panes; and
partition means for identifying coextensive edges of adjacent panes as partitions of said plurality of partitions.

20. The tiling system of claim 19, wherein said matching means includes:
means for identifying common edges of adjacent panes;
means for determining whether identified common edges are coextensive; and
means for iteratively expanding edges to include aligned edges of separate panes when common edges are not coextensive.

21. The tiling system of claim 18, further comprising partition set creating means for creating sets of aligned partitions of the plurality of partitions.

22. The tiling system of claim 1, further comprising parallel moving means for moving at least one partition which is parallel to one of the at least two partitions having a common end so as to maintain a predetermined dimension for at least one of said plurality of panes, when one of the at least two partitions having a common end is moved.

23. A method for manipulating panes in a non-overlapping tiling system comprising the steps of:
defining a plurality of non-overlapping panes, wherein a pane can be situated adjacent to more than one pane along an edge in a first direction, and wherein a pane can be situated adjacent to more than one pane along an edge in a second direction transverse to the first direction;
defining a plurality of partitions adjacent to said plurality of panes;
defining at least one first set of aligned partitions including at least two partitions which are aligned
selecting one partition from a first set of aligned partitions; and
changing a position of said selected partition so as to manipulate at least one of the plurality of panes.

24. The method of claim 23 further comprising the step of defining at least one second set of aligned partitions including at least two partitions which are aligned and which transverse to at least one first set of partitions.

25. The method of claim 23, wherein a first application region is associated with a first pane and a second application region is associated with a second pane, the method further comprising the steps of associating said first application region with said second pane and associating said second application region with said first pane when said first application region is associated with said second pane.

26. The method of claim 23, further comprising the steps of:
removing a first pane from said plurality of panes; and
resizing at least one pane of said plurality of panes which is adjacent to said first pane to include an area defined by said first pane.

27. A method for manipulating panes in a non-overlapping tiling system comprising the steps of:
defining a plurality of non-overlapping panes;
defining a plurality of partitions adjacent to said plurality of panes;
defining at least one first set of aligned partitions including at least two partitions which are aligned;
displaying the plurality of partitions; and
jointly displaying the at least one first set of aligned partitions distinctly from the plurality of partitions.

28. The method of claim 27, wherein the step of defining a plurality of non-overlapping panes includes the step of defining a plurality of panes wherein a pane can be situated adjacent to more than one pane along an edge in a first direction, and wherein a pane can be situated adjacent to more than one pane along an edge in a second direction transverse to the first direction.

29. A tiling system having a plurality of non-overlapping panes comprising:
means for selectively coupling at least two of the plurality of panes which are adjacent in a first direction such that the at least two panes can be jointly manipulated in a second direction transverse to the first direction when coupled and individually manipulated in the second direction when not coupled; and;
wherein the means for selectively coupling includes:
a first individually selectable control for coupled manipulation of the at least two panes; and
a plurality of second individually selectable controls, each corresponding to one of the at least two panes, for uncoupled manipulation of the corresponding pane.

30. The tiling system of claim 29, further comprising:
second means for selectively coupling at least two of the plurality of panes which are adjacent in the second direction such that the at least two panes can be jointly manipulated in the first direction when coupled and individually manipulated in the first direction when not coupled;
wherein the second means for selectively coupling includes:
a third individually selectable control for coupled movement of the at least two panes adjacent in the second direction; and
a plurality of fourth individually selectable controls, each corresponding to one of the at least two panes adjacent in the second direction, for uncoupled movement of the corresponding pane.

31. The tiling system of claim 29, further comprising:
means for displaying the panes, the first individually selectable control and the plurality of second individually selectable controls.

32. The tiling system of claim 31, wherein the first individually selectable control and the plurality of second individually selectable controls are simultaneously and distinctly displayed.

33. The tiling system of claim 31, wherein the first individually selectable control and plurality of second individually selectable controls are pickup regions.

34. The non-overlapping tiling system of claim 29, further comprising means for manipulating panes.

35. The tiling system of claim 29, wherein a first application region is associated with a first pane, said tiling system comprising means for disassociating the first application region from the first pane and associating the first application region with another one of said plurality of non-overlapping panes.

36. The tiling system of claim 35, wherein a second application region is associated with said other pane, said tiling system further comprising means for associating said second application region with said first pane when said first application region is associated with said other pane.

37. The tiling system of claim 29, further comprising means for creating an additional pane from a portion of at least one of said plurality of panes.

38. A tiling system having a plurality of non-overlapping panes comprising:
means for selectively coupling at least two of the plurality of panes which are adjacent in a first direction such that the at least two panes can be jointly manipulated in a second direction transverse to the first direction when coupled and individually manipulated in the second direction when not coupled; and
means for selectively coupling at least two of the plurality of panes which are adjacent in the second direction such that the at least two panes can be jointly manipulated in the first direction when coupled and individually manipulated in the first direction when not coupled;
means for selectively coupling a first pane, at least one second pane adjacent the first pane in the first direction, and at least one third pane adjacent the first pane in the second direction such that the first pane, the at least one second pane, and the at least one third pane can be jointly manipulated in the first and second directions when coupled.

39. A tiling system having a plurality of non-overlapping panes, wherein a pane can be situated adjacent to more than one pane along an edge in a first direction, and wherein a pane can be situated adjacent to more than one pane along an edge in a second direction transverse to the first direction, the tiling system comprising:
means for selectively coupling at least two of the plurality of panes which are adjacent in a first direction such that the at least two panes can be jointly manipulated in a second direction transverse to the first direction when coupled and individually manipulated in the second direction when not coupled,
wherein the means for selectively coupling includes:
a first individually selectable control for coupled manipulation of the at least two panes; and
a second individually selectable control for uncoupled manipulation of at least one of the at least two panes.

40. The tiling system of claim 39, further comprising means for selectively coupling at least two of the plurality of panes which are adjacent in the second direction such that the at least two panes can be jointly manipulated in the first direction when coupled and individually manipulated in the first direction when not coupled.

41. A tiling system comprising:
a plurality of non-overlapping panes, wherein a pane can be situated adjacent to more than one pane along an edge in a first direction, and wherein a pane can be situated adjacent to more than one pane along an edge in a second direction transverse to the first direction;
means for associating at least one application region with at least one of said plurality of panes;
means for changing an association of a first application region from an association with a first one of said plurality of panes to an association with a second one of said plurality of panes.

42. The tiling system of claim 41, further comprising means for changing an association of a second application region associated with said second pane to an association with said first pane when the association of the first application region with the first pane is changed.

43. A tiling system comprising:
a plurality of non-overlapping panes;
a plurality of partitions adjacent said plurality of panes;
means for jointly displaying partitions which are aligned; and
means for displaying at least one of the aligned partitions distinctly from the partitions which are aligned.

44. The tiling system of claim 43, wherein the display means displays each of the partitions in the set of aligned partitions distinctly from the set of aligned partitions.

45. The tiling system of claim 44, further comprising:
means for selecting one of a single partition and a set of aligned partitions including said single partition; and
means for moving the selected one of a single partition and set of aligned partitions so as to manipulate at least one pane.

46. The tiling system of claim 43, wherein a pane can be situated adjacent to more than one pane along an edge in a first direction, and wherein a pane can be situated adjacent to more than one pane along an edge in a second direction transverse to the first direction.

47. A system for creating partitions adjacent panes in a tiling system having a plurality of panes, a first set of aligned edges of a first set of the panes, and a second set of aligned edges of a second set of the panes which is adjacent to the first set of panes, wherein the second set of aligned edges is aligned with the first set of aligned edges, the system comprising:
means for iteratively expanding a first subset of the first set of aligned edges;
means for iteratively expanding a second subset of the second set of aligned edges;
means for determining whether the first subset is coextensive with the second subset; and
means for identifying coextensive subsets as partitions.

48. The system of claim 47, wherein a pane can be situated adjacent to more than one pane along an edge in a first direction, and wherein a pane can be situated adjacent to more than one pane along an edge in a second direction transverse to the first direction.

49. The tiling system of claim 47, further comprising partition set creating means for creating sets of aligned partitions.

50. A non-overlapping tiling system comprising:
a plurality of non-overlapping panes, wherein a pane can be situated adjacent to more than one pane along an edge in a first direction, and wherein a pane can be situated adjacent to more than one pane along an edge in a second direction transverse to the first direction;
a plurality of partitions adjacent to said plurality of panes;
means for selecting one of a single partition and a set of aligned partitions including said single partition as a movement partition; and
means for moving the movement partition.

51. The tiling system of claim 50, wherein the means for selecting includes at least one first individually selectable control for selecting the single partition and at least one second individually selectable control for selecting the set of aligned partitions including the single partition.

52. The tiling system of claim 51, further comprising:
means for simultaneously and distinctly displaying the at least one first individually selectable control and the at least one second individually selectable control.

53. An apparatus for manipulating panes in a tiling system having a plurality of non-overlapping panes comprising:
first manipulation means for simultaneously moving a first edge which is an edge of a first pane and a second edge which is an edge of a second pane and which extends the first edge;
second manipulation means for moving the first edge without moving the second edge;
third manipulation means for simultaneously moving a third edge, which is an edge of the first pane transverse to the first edge, together with one of the first edge, the second edge, and a fourth edge which extends the third edge; and
fourth manipulation means for moving the third edge without moving the first, second and fourth edges.

54. The tiling system of claim 53 further comprising means for associating application regions of another interface with respective ones of said plurality of panes.

55. A tiling system comprising:
a plurality of non-overlapping panes;
a plurality of partitions adjacent said plurality of panes; and
aligning means for aligning a first partition with a second partition when said first partition is within a range of said second partition; and
wherein the aligning means includes means for altering said range.

56. The tiling system of claim 55, wherein a pane can be situated adjacent to more than one pane along an edge in a first direction, and wherein a pane can be situated adjacent to more than one pane along an edge in a second direction transverse to the first direction.

57. A tiling system comprising:
a plurality of non-overlapping panes;
a plurality of partitions adjacent said plurality of panes; and
aligning means for aligning a first partition with a second partition when said first partition is within a range of said second partition; and
wherein said aligning means includes:
a plurality of predefined partition positions; and
means for locating a partition into alignment with one of said plurality of predefined positions.

58. The tiling system of claim 57, wherein a pane can be situated adjacent to more than one pane along an edge in a first direction, and wherein a pane can be situated adjacent to more than one pane along an edge in a second direction transverse to the first direction.

59. A tiling system comprising:
a plurality of non-overlapping panes;
a plurality of partitions adjacent to said plurality of panes, wherein at least two of the plurality of partitions are aligned; and
means for creating an additional pane including:
first means for defining an area for placement of the additional pane by movement of one partition of the aligned partitions; and
second means for defining an area for placement of the additional pane by movement of the one partition and at least one other of the aligned partitions.

60. A tiling system having a plurality of non-overlapping panes and a plurality of partitions adjacent to the panes, the system comprising:
means for moving at least one partition to define an area between an initial position and a final position of the at least one partition; and
means for creating an additional pane in the area such that one of the panes is situated adjacent to more than one pane along an edge in a first direction and one of the panes is situated adjacent to more than one pane along an edge in a second direction transverse to the first direction.

61. A tiling system comprising:
a plurality of non-overlapping panes;
a plurality of partitions abutting said plurality of panes; and
means for creating an additional pane including means for defining an area for placement of the additional by moving a partition between two adjacent panes.

62. A tiling system comprising:
a plurality of non-overlapping panes;
a plurality of partitions adjacent said plurality of panes, wherein at least two partitions are aligned;
first parallel moving means for moving a partition parallel to the aligned partitions and moving one of the aligned partitions so as to maintain a predetermined dimension for at least one of said plurality of panes; and
second parallel moving means for moving the partition parallel to the aligned partitions and moving the aligned partitions so as to maintain a predetermined dimension for at least one of said plurality of panes.

63. A tiling system comprising:
a plurality of non-overlapping panes;
a plurality of partitions adjacent said plurality of panes, wherein at least two of the plurality of partitions are transverse;
parallel moving means for moving a first transverse partition, a second transverse partition, at least one partition parallel to the first transverse partition and at least one partition parallel to the second transverse partition so as to maintain a predetermined dimension of at least one of the plurality of panes.

64. A computer system comprising:
a processor for executing program steps; and
a display connected to the processor; and
a set of program steps to be executed on the processor which generate a tiling system on the display, the tiling system including:
a plurality of non-overlapping panes, wherein a pane can be situated adjacent to more than one pane along an edge in a first direction, and wherein a pane can be situated adjacent to more than one pane along an edge in a second direction transverse to the first direction;
a plurality of partitions adjacent to said plurality of panes, wherein at least two of the plurality of partitions have a common end;
means for moving one of the partitions having a common end; and
means for simultaneously moving the at least two partitions having a common end.

65. A tiling system comprising:
a plurality of non-overlapping panes, wherein a pane can be situated adjacent to more than one pane along an edge in a first direction, and wherein a pane can be situated adjacent to more than one pane along an edge in a second direction transverse to the first direction, and wherein at least one of the panes is a tenanted pane with which an application region is associated, and at least one of the panes is an untenanted pane with which no application region is associated; and
means for displaying each application region at a position corresponding to an associated tenanted pane and for displaying each untenanted pane as an empty pane.

66. The tiling system of claim 65, further comprising means for associating an application region with the at least one untenanted pane.

67. The tiling system of claim 66, further comprising means for exchanging application region associations between a first pane and a second pane.

68. The tiling system of claim 65, wherein an application region is associated with a tenanted pane, the system further comprising:
means for associating the application region with an untenanted pane.

69. The tiling system of claim 68, further comprising means for removing an association of the tenanted pane and the application region so that the tenanted pane becomes an untenanted pane.

70. The tiling system of claim 65, further comprising means for removing an association of the tenanted pane and the application region so that the tenanted pane becomes an untenanted pane.

71. The tiling system of claim 70, wherein one of the first pane and second pane is an untenanted pane having a null application region association.

72. A tiling system having a plurality of non-overlapping panes comprising:
means for selectively coupling at least two of the plurality of panes which are adjacent in a first direction such that the at least two panes can be jointly manipulated in a second direction transverse to the first direction when coupled and individually manipulated in the second direction when not coupled; and
means for selectively coupling at least two of the plurality of panes which are adjacent in the second direction such that the at least two panes can be jointly manipulated in the first direction when coupled and individually manipulated in the first direction when not coupled;
wherein the means for selectively coupling includes:
a first individually selectable control for coupled manipulation of the at least two panes; and
a second individually selectable control for uncoupled manipulation of the at least two panes.

73. The tiling system of claim 72, further comprising:
means for manipulating the plurality of partitions and the at least one set of aligned partitions, wherein displayed partitions and displayed aligned partitions are controls for selecting one of the partitions or sets of aligned partitions to be manipulated.

74. A non-overlapping tiling system comprising:
a plurality of non-overlapping panes;
a plurality of partitions adjacent to said plurality of panes, wherein the plurality of partitions include at least one set of aligned partitions including at least two partitions which are aligned;
means for displaying the plurality of partitions; and
means for jointly displaying the at least one set of aligned partitions distinctly from the plurality of partitions.

75. The tiling system of claim 74, wherein a pane can be situated adjacent to more than one pane along an edge in a first direction, and wherein a pane can be situated adjacent to more than one pane along an edge in a second direction transverse to the first direction.

Description

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates to display systems, including computer displays, with multiple application windows or panes. More particularly, the present invention relates to the management, manipulation, arrangement, creation and deletion of non-overlapping panes in a display system.

2. Discussion of the Related Art

Over the last several years computer user interfaces and software applications have undergone much change. Early character-based user interfaces, such as that of DOS, provided environments in which software application programs would be run serially, one application at a time, with each application using the entire display. More recently, graphical user interfaces (GUIs), such as that of Microsoft Windows, have become common, providing environments in which multiple software applications run simultaneously, sharing portions of the display.

Sharing of a display area among several applications or application regions is typically accomplished by dividing the display area into multiple rectangular regions or windows which can have various sizes and positions. In environments such as Microsoft Windows version 3.1, the individual windows are allowed to overlap other windows such that certain windows will be obscured by or hidden behind foreground windows. This often presents users the problem of trying to find and move between the various windows and applications. Additionally, because each window must be sized, positioned and arranged on an individual basis, it is often difficult, inexpedient and inefficient to arrange and organize convenient layouts of multiple windows. As the number of windows and applications increases, these problems become increasingly significant.

Sharing of a display area among multiple applications or application regions is not only a concern in the implementation of operating systems, but is often a concern in the implementation of application programs. A well known example of this can be found in Microsoft's "Program Manager" included in Windows version 3.1. This program adheres to Microsoft's widely used "Multiple Document Interface" specification (MDI), in which a parent window contains multiple overlapping child windows. In the case of the Program Manager, each of the child windows contains collections of icons which can be selected to start other programs.

Because there tend to be large numbers of windows, and because the child windows are resized and repositioned individually, other windows are frequently overlapped, resulting in their being obscured and sometimes lost. Users commonly struggle with sizing and arranging of the child windows so that each child window can be quickly located and conveniently accessed. This is very often inconvenient for the user, if not frustrating, particularly when there are many child windows to be arranged.

This problem is widespread and designers and implementers of user interfaces have long struggled to find alternatives to and methods for dealing with the awkwardness and difficulty of arranging multiple windows in an overlapped window interface. While various alternatives have been attempted, none has been entirely successful, and this long-felt problem has to date remained unsolved by existing methods.

A not entirely successful alternative to overlapped window interfaces has been non-overlapping tiled interfaces in which multiple windows are displayed in a single plane in such a way that no overlapping of windows occurs. Here, a display area is occupied by a set of rectangular regions or windows and may be separated by partitions. The windows are often referred to as panes or may also be referred to as tiles, screens and panels, among other terms. The partitions between the panes are effectively shared border areas and may not always be visible in a non-overlapping tiled interface. They may also be referred to as splitters or splitbars among other terms. Typically, the entire display area is fully occupied by a combination of panes alone or in combination with partitions, such that no gaps or other subregions of the display area exist.

Single-plane tiling interfaces can reduce or eliminate many of the difficulties of the overlapped window interfaces. The non-overlapping tiled interfaces prevent windows from being obscured and hidden by overlapping windows and provide the user various means for simultaneous resizing and arranging of multiple windows. One of the most common means for doing so is by manipulation of the partitions between panes, allowing the user to adjust the edges of multiple panes at the same time.

While providing these advantages over overlapped window interfaces, however, other disadvantages are introduced by existing single-plane tiling interfaces. In particular, the general free-form arrangement capabilities found in the overlapped window interfaces are not available in existing single-plane tiling mechanisms. Instead, existing single plane tiling interfaces impose various sorts of restrictions and constraints on number of panes, arrangement, relative symmetry, sizing, positioning, ordering and manipulation of panes. Additionally, existing non-overlapping tiling mechanisms are limited in their ability to provide mechanisms for convenient assignment and reassignment of application windows to panes.

Such limitations stem largely from the fact that in overlapped window interfaces, individual windows can be resized and repositioned without affecting placement and sizing of other windows, as windows are allowed to overlap. Non-overlapped tiling mechanisms, on the other hand, are concerned with avoiding overlapping of windows and therefore may automatically resize or reposition neighboring windows when any individual window is resized or repositioned. Such adjustment of non-overlapping neighboring windows is not easily generalized and presents many difficulties for generalized arrangements and configurations of windows. As a result, existing single plane tiling mechanisms introduce various kinds of constraints and limitations in configuration, manipulation and modification of tiled window layouts. As a consequence of this restrictiveness, such existing mechanisms and interfaces are in many regards more limiting and confining than the overlapped window interfaces.

FIG. 1 depicts an example of a pane configuration which could be implemented using a single plane tiled interface. Such a configuration or layout of panes can be created by various existing mechanisms. A screen or display area 1 is divided into four panes 10, 11, 12, 13 by a horizontal partition 21, and a vertical partition 20. The screen containing the panes of a tiled interface may be termed a parent window or a tiler. The individual panes may contain or be associated with application windows, regions or objects which may be termed pane tenants or tenant windows, applications or objects, among other terms.

Partition 20 includes two segment partitions 23, 24 and partition 21 includes two segment partitions 25, 26. Whole partitions, such as partitions 20, 21 may include (that is, be co-located with, so as to include the area of) multiple aligned segment partitions. While whole partitions may be co-located with segment partitions, (e.g., 20 is co-located with 23 and 24), the whole and segment partitions are regarded, managed and manipulated as separate entities by the present invention. Existing non-overlapped tiling mechanisms, however, do not have the ability to separately manage segment and whole partitions, that is, the joined segments. Instead, they operate either exclusively on whole partitions or exclusively on segment partitions.

Whole partitions, such as 20, 21, may include multiple segment partitions and be termed composite whole partitions. Other whole partitions, termed unitary whole partitions, such as 29 of FIG. 2, are neither comprised of smaller segments nor are elements of a larger composite whole partition.

In FIG. 1, the whole partitions 30, 31, 32 and 33 are situated with the tiler's borders and are each composite whole partitions having multiple segment partitions. Partition 30 includes, that is, is co-located with, segment partitions 40, 41; partition 31 includes segment partitions 42, 43; partition 32 includes segment partitions 44, 45; and partition 33 includes segment partitions 46, 47.

Border or exterior partitions, such as 30-33, 40-47 are situated with the tiler's border or frame. Interior partitions, such as 20, 21 and 23-26 are not situated with the tiler's frame. Cross partitions provide for simultaneous management and manipulation of both a horizontal and vertical partition. For instance, a cross partition 22 may be implemented at the intersection of 20, 21.

While the various partitions may be coextensive with or substantially aligned with the edges of individual panes, in this discussion pane edges are treated as separate geometric entities, and are simply the sides of a pane.

Existing single-plane tiling mechanisms demonstrate various degrees of capability and limitations in functionality. They can be best understood by separating them into three categories of functionality: (1) whole-partition mechanisms; (2) multi-level mechanisms; and (3) edge-based mechanisms.

Whole-Partition Mechanisms

Whole-partition mechanisms are characterized by layouts in which whole partitions extend entirely across the display area. The pane configurations are generally in rows and columns of one or more panes, and exhibit matrix or spreadsheet-style symmetry. Whole-partition mechanisms generally provide the ability to manipulate and maneuver whole partitions only and do not provide management or manipulation of segment partitions. As an example, the pane configuration of FIG. 1 could be created and managed by a whole-partition mechanism. Panes 10, 11, 12, 13 would be adjustable and resizable only by manipulation of whole partitions 20, 21. Because segment partitions are not separately managed by whole-partition mechanisms, segment partitions
23, 24, 25, 26 would not be able to be separately manipulated. This limitation results in causing all panes to be resized whenever either of the whole partitions 20, 21 is manipulated. For instance, if pane 10 were widened by moving whole partition 20
to the right, pane 12 would also be widened and both 11 and 13 would additionally be narrowed. Because of basic limitations such as these, whole-partition mechanisms lack the more general facility to alter the relative symmetry and arrangement of panes and partitions.

Spreadsheet programs such as "Microsoft Excel version 5" use such whole-partition mechanisms to divide a spreadsheet into paned viewing areas (by selecting the Window-Split menu option). Here, the rows and columns from disparate portions of the spreadsheet are placed into separate panes. A layout of four panes can be had, separated by two whole partitions and arranged in quadrants similar to the arrangement of FIG. 1. Alternatively, a layout of two panes can be arranged, separated either by a single vertical or a single horizontal partition.

Whole-partition mechanisms are limited in a number of ways. Generally there are no manipulable exterior or border partitions. Partition movement may be restricted in various ways by different implementations of such mechanisms. Pane layouts generally cannot be altered in an ad hoc fashion. Instead, only a certain set of pre-defined layouts is available. These layouts are pre-programmed by the application with certain fixed pane symmetries. Because of this inflexibility the user is restricted from arranging the panes for maximum convenience.

Other limitations stem from the fact that segment partitions are not individually managed or manipulable. Because only whole partitions can be manipulated, adjusting the edge of any single pane causes an entire whole partition to be adjusted. In ram, this results in the resizing and repositioning of all panes abutting the whole partition-namely, an entire row or column and adjacent rows or columns. The effect of this is to greatly restrict the user's ability to individually size and position particular panes without impacting the size and position of many, if not all, other panes in the configuration. Further, because only whole partitions can be adjusted, the relative symmetry between panes remains static and cannot be changed.

Another important limitation of whole-partition mechanisms is that panes cannot be created or deleted individually or in an ad hoc fashion. Instead, entire whole partitions must be created and removed, resulting in the creation and removal of columns or rows of abutting panes to one side of the partition. For instance, in an implementation of the configuration of FIG. 1 by a whole-partition mechanism, no pane can be individually deleted. Instead, if the user wished to delete pane 10, either of the whole partitions 20 or 21 would be required to be deleted as an entirety. Pane 10 could be deleted by removing partition 20, but this would result in the unwanted deletion of pane 12. Alternatively, pane 10 could be deleted by removing partition
21, but this would result in the unwanted deletion of pane 11. If the user then wanted to recreate pane 11, this could only be accomplished, using the whole-partition mechanism, by restoring the removed partition and reestablishing a quadrant layout similar to that of FIG. 1.

Multi-Level Mechanisms

Multi-level mechanisms address some of the shortcomings of the whole-partition mechanisms. In particular, new panes can be added in a non-matrixed fashion. This is done by creating new levels of matrixed panes inside an area occupied by a single pane at a higher or parent level.

FIG. 3 depicts a configuration which could be created by a multi-level mechanism. Here, a parent window is divided into a left and right area by partition 50. The right area includes the single pane 52. The left area includes pane 51, which is further subdivided by partition 60 into two second-level panes 61 and 62. At a first level, panes 51 and 52 are separated by whole partition 50 within the bounds of the parent window. At a second or child level within the bounds of pane 51, panes 61
and 62 are separated by whole partition 60.

The configuration shown in FIG. 2 could also be created using a multi-level mechanism. The screen 2 includes a main window separated into four panes 10-13 as in FIG. 1. Pane 13 has been further subdivided at a lower level by partition 29 into two panes 14, 15. Partition 29 can be moved to adjust the sizes of panes 14, 15 without changing the higher level panes 10-13. Furthermore, additional partitions might be configured at the same level to create a matrix of panes within pane 13. Each partition extends entirely across the next higher level pane in the vertical or horizontal direction.

Unlike a whole-partition mechanism, a multi-level mechanism can be constructed such that the requirements of matrix can be worked around to give the user alternative layout options. However, while the multi-level mechanism improves on some of the shortcomings of the whole-partition mechanisms, it does not do so in a general way, and many significant limitations remain resulting in inflexible mechanisms. Generally there is no provision for manipulable exterior (border) partitions. Different layouts can be constructed only if pre-programmed in the software, and no ad hoc mechanisms are provided for generalized creation, deletion and flexible placement of panes and partitions.

Whole-partition mechanisms may provide the ability to simultaneously manipulate both horizontal and vertical partitions. For instance, in the configuration of FIG. 1, the user might be able to simultaneously manipulate both partitions 20 and 21
by selecting cross partition 22 at the intersection between the two partitions. Existing multi-level mechanisms are often unable to provide this capability for partitions at different levels, even when intersecting. Thus, a single horizontal partition (21 in FIG. 2) at a first level cannot be manipulated at the same time as a lower level vertical partition (29 in FIG. 2).

A single configuration or pane layout can be formed using different mechanisms. However, the functionality, manipulation capabilities and limitations differ depending on how the layout was created with either single or multi-level mechanisms. For example, the configuration of FIG. 1 can be created in a variety of ways. With a whole-partition mechanism, the layout includes a vertical partition 20 and a horizontal partition 21. None of the segments 23, 24, 25, 26 are individually managed or manipulable.

The same layout can be obtained in a multi-level mechanism using a single horizontal partition 21 at a first level, and two distinct partitions 23, 24 at a second level. In the single level mechanism, the vertical partition 20 can be manipulated so as to horizontally resize all panes 10-13 simultaneously. However, in the multi-level mechanism, the two vertical partitions 23, 24 cannot be joined or manipulated together. That is, multi-level mechanisms have no capability to join separate segment partitions such as 23, 24 for simultaneous management or manipulation.

Thus, movement of partition 24 would only resize the lower panes 12, 13, and would not simultaneously manipulate partition 23 so as to resize the upper panes 10, 11. Additionally, the horizontal partition 21 can only be manipulated as a whole in either mechanism. Since the horizontal partition is at the first level, it cannot be separated into distinct partitions 25, 26.

Thus, the existing mechanisms have neither the ability to separate a single partition into segments so as to be managed and manipulated individually nor to join individual aligned partitions so as to be managed and manipulated as a whole. The effect of this is to significantly constrain the range of movement of panes and to limit the user's ability to conveniently and arbitrarily resize and reposition panes.

Multi-level mechanisms can somewhat increase the flexibility of whole-partition mechanisms by relaxing matrix symmetry requirements. Once created at a given level, however, the symmetric organization of panes remains static and unchangeable at that level. For instance, in the multi-level configuration of FIG. 1 just discussed, panes 10 and 11 are separated by partition 23 and are together managed at a child level. The child level's area is bounded at the top by the parent window's boundary, and at the bottom by whole partition 21, neither of which can be separated into segments. As a consequence, panes 10 and 11 must always have vertically equivalent positions, and will always be symmetric in this regard. Pane symmetry will be preserved and inflexible on either side of any existing partition, and there is no automatic mechanism for altering this.

Multi-level mechanisms furthermore restrict the range of motion of panes and partitions at lower levels. Because a lower level mechanism is bounded by the partitions and boundaries of a higher level, the lower level's panes and partitions are confined within those boundaries. For instance, a multi-level mechanism may be used for the configuration of FIG. 2, in which panes 14 and 15 are managed at a child level and separated by partition 29, also at the child level. The child level's bounds are those of pane 13, that is, whole partition 21 at the top, whole partition 20 on the left, and the parent window's boundaries at the right and bottom. Neither of the panes 14, 15 can be resized or repositioned outside these bounds, and movement of partition 29 is similarly confined. It is only by altering the child level's boundaries that any further movement of 14, 15 or 29 can occur.

Edge-Based Mechanisms

The text editor software "Brief" (version 3.1) provides an example of a third existing mechanism for non-overlapped tiling interfaces, the edge-based mechanism. Unlike the whole-partition and multi-level mechanisms, this mechanism provides for movement of individual pane edges only and does not provide for management of either composite whole partitions or cross partitions.

Were the configuration of FIG. 1 to be implemented by an edge-based mechanism, the interface's capabilities and limitations would be significantly different from those of either a whole-partition or multi-level implementation of the same configuration. As edge-based mechanisms deal exclusively with the individual edges of panes, only the segment partitions 23, 24, 25 and 26 would be managed or manipulable. Because the edge-based mechanisms have no ability to combine and manage multiple aligned segment partitions as composite whole partitions, neither of the whole partitions 20, 21 would be managed or manipulable

The difference in behavior and functionality is significant. The configuration of FIG. 4 could be obtained by moving segment partition 23 of FIG. 1 to the left to form partition 27, and by moving segment partition 24 to the right to form partition 28. This configuration has altered the relative symmetry between panes 10 and 12 and between panes 11 and 13. Alternatively, either of the two horizontal segment partitions 25, 26 could have been moved, creating a completely different layout. By providing manipulation of segment partitions, edge-based mechanisms provide for finer control of layouts, dynamic pane symmetry, and the ability to create ad hoc configurations.

Known edge-based mechanisms have significant limitations, however, including the inability to join or consolidate segment partitions into whole partitions. Thus, neither partition 20 nor 21 of FIG. 1 would be implemented, managed or manipulable by such an edge-based mechanism. Because of this, there is no means for resizing an individual pane while maintaining its relative symmetry with surrounding panes. Also, while whole-partition mechanisms commonly provide for simultaneous manipulation of both horizontal and vertical partitions, known edge-based mechanisms do not do so. That is, edge-based mechanisms do not implement cross partitions, such as 22, and vertical and horizontal partitions, such as 20, 21, cannot be simultaneously moved.

Known examples of edge-based mechanisms exhibit other important limitations. Wherever a single pane edge is not evenly aligned with one or more opposite edges of other panes, partition movement is not implemented. Thus, in a configuration such as that of FIG. 4, the horizontal partition 21 is not manipulable. This results in the inability to vertically resize any of the panes. In effect, various layouts cause panes to become locked or positionally frozen in one or more dimensions.

Known edge-based mechanisms also limit the range of movement of partitions, such that a partition's movement is confined to the area of the surrounding panes. For example, in an edge-based implementation of FIG. 2, partition 29 cannot be moved to the left of partition 24. Known edge-based are not implemented for graphical user interfaces, nor are they fully responsive to mouse or pointer device manipulation. They fail to provide manipulation of border partitions. They fail to include the ability to scroll panes when their combined extent exceeds the display width of the parent window.

Thus, while edge-based mechanisms provide seemingly greater flexibility in arrangement of the pane layout than either the whole-partition or multi-level mechanisms, they suffer from a number of flaws and limitations.

While the various existing mechanisms show a wide variety of capabilities, one desirable capability which is not found in the prior art is the ability to install a non- overlapped tiling interface upon a pre-existing overlapped window interface. That is, the existing mechanisms lack the ability to take over the window placement control of an overlapped window interface so as to convert it to a single-plane tiling interface with the existing windows of the original interface. Rather, existing single-plane tiling interfaces must be explicitly developed and independently started and no means exists for transferring window control from an overlapped window interface to a non-overlapping single-plane mechanism.

A number of limitations and deficiencies are apparent in both overlapped and existing non-overlapped interfaces. Overlapped window interfaces cause windows to be obscured or lost, and make it difficult for the user to navigate among multiple windows, thereby restricting the user's ability to effectively operate and interact with the computer. While overlapped mechanisms provide free-form arrangement, they fall short in not providing convenient organization or multiple windows.

Existing single-plane tiled interfaces, on the other hand, do not allow overlapping windows to obscure or hide any of the other panes. However, while existing non-overlapped mechanisms provide organization and arrangement of multiple windows, they variously lock or freeze symmetries between panes, pane sizing and manipulation alternatives, and fail to provide general free-form manipulation.

Software users have long desired a method for convenient organization and unimpeded arrangement of multiple application windows. This desire has long been apparent but remains unsolved by known art.

Therefore, a need exists for a non-overlapping single-plane tiled user interface which eliminates the restrictiveness of existing single-plane tiled interfaces. In particular, such a single-plane tiled interface:

1 could provide greater free-form arrangement of panes;

1 could provide management and manipulation of both segment partitions and whole partitions;

1 could allow discrete selection of segment partitions and whole partitions;

1 might not require panes to be arranged with any particular symmetry;

1 could provide for ad hoc creation, deletion and hiding of panes on an individual basis;

1 might not restrict or limit partition movement;

1 could provide for simultaneous movement of both vertical and horizontal partitions;

1 could permit any individual pane to be resized in either the vertical or horizontal dimension without regard to the layout or configuration of the tiler;

1 could be able to collapse panes to a minimum width or height in order to facilitate resizing of other panes and movement of other partitions;

1 could allow scrolling for arrangements of panes where the panes' extent exceeds the display area of the tiler;

1 could provide for auto-alignment of partitions;

1 could provide for arrangement of panes in certain predefined and convenient configurations;

1 could be able to save and restore particular layouts of panes;

1 could conveniently associate and reassociate applications and application regions with particular panes; and

1 could be able to be installed as a non-native interface in a pre-existing, already-running overlapped window interface so as to control window positioning.

SUMMARY OF THE INVENTION

The deficiencies of existing interfaces are substantially overcome by the present invention which provides an interface for management and manipulation of non-overlapping windows. According to one aspect of the invention, a user interface includes multiple non-overlapping panes separated by partitions, which are individually moveable so as to effect resizing or movement of abutting panes. The configuration or layout of panes does not require or necessarily exhibit any particular symmetry, any parent-child relationship, or any other fixed relationship among panes. Multiple aligned segment partitions can be selected for simultaneously resizing adjacent panes. Intersecting vertical and horizontal partitions can be selected together for simultaneous resizing of panes in two dimensions. Partitions may be formed of multiple segment partitions which are substantially aligned. Segment partitions, cross partitions and whole partitions may be distinctly displayed and discretely selected.

According to another aspect of the invention, any pane may be resized in any dimension without regard to the layout or configuration of panes. Partition movement is not restricted by the dimensions of the surrounding panes. Instead, surrounding panes may be automatically adjusted in size or location, or collapsed to a minimum size and repositioned so as to accommodate such movement. Such collapsing and repositioning of panes occurs successively such that extreme movement of a particular partition may cause a neighboring pane to be collapsed and repositioned and this may in turn cause one of its neighboring panes to be collapsed and repositioned, etc.

According to a further aspect of the invention, the interface may include multiple sets of pane configurations. Pane configurations may also be created to extend beyond the display area's boundaries, with scrolling in either the vertical or horizontal dimensions.

According to another aspect of the invention, tenant application regions, windows or objects can be associated with any panes in the interface, or alternatively, panes may be untenanted. Tenant application regions can also be moved from one pane to another. Panes may be hidden and automatically resized to predefined configurations. Additionally, the interface can be integrated with existing interfaces to provide additional functionality.

According to another aspect of the present invention, the features of tilers, panes and partitions can be altered. Title bars, function buttons, background, text, partitions and partition pickup or selection regions can be varied in size, color and appearance.

With these and other objects, advantages and features of the invention that may become apparent, the nature of the invention may be more clearly understood by reference to the following detailed description of the invention, the appended claims and the several drawings attached hereto.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is an illustration of a first non-overlapping pane configuration.

FIG. 2 is an illustration of a second non-overlapping pane configuration.

FIG. 3 is an illustration of a third non-overlapping pane configuration.

FIG. 4 is an illustration of a fourth non-overlapping pane configuration.

FIG. 5 is an illustration of computer hardware for which the interface of the present invention may be implemented.

FIG. 6 illustrates operation of the interface of the present invention in conjunction with applications and other interfaces.

FIGS. 7A-7F illustrate different processes for forming the configuration of FIG. 1.

FIG. 8 illustrates a configuration of panes in an interface according to an embodiment of the present invention.

FIG. 9 illustrates data structures in conjunction with an embodiment of the present invention.

FIG. 10 illustrates dimensions of a pane.

FIG. 11 is a block flow diagram of the layout modification process.

FIG. 12 is a block flow diagram of a process for creating partition arrays.

FIG. 13 is an expanded view of panes and pane edges in the configuration of FIG. 8.

FIGS. 14A-14D illustrate the operation of work arrays in creating a vertical partition array for the configuration of FIG. 8.

FIGS. 15A-15D illustrate the operation of work arrays in creating a horizontal partition array for the configuration of FIG. 8.

FIGS. 16A and 16B are block flow diagrams of the process for matching edges.

FIG. 17 is another embodiment of the configuration of FIG. 1.

FIG. 18 illustrates a tiler configuration according to the present invention.

FIGS. 19A-19C illustrate partition arrays for the configuration of FIG. 18.

FIGS. 20A-20F illustrate partition movement.

FIGS. 21A-21C illustrate visible and non-visible panes in a tiler configuration.

FIGS. 22A-22B illustrate pane deletion.

FIGS. 23A-23B illustrate the use of tabs according to the present invention.

FIGS. 24A-24F illustrate operations of the present invention in connection with alterations of tiler display dimensions.

DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS

Referring now in detail to the drawings wherein like reference numerals represent like elements, there is illustrated in FIG. 5, computer hardware 100 for implementation of a preferred embodiment of the present invention. The computer hardware
100 includes a central processing unit (CPU) 110 for executing program instructions. The program instructions may include one or more application programs and instructions representing the interface of the present invention. The CPU may include more than one processor operating simultaneously. The program instructions and data used in executing the instructions are stored in a memory 130 connected to the CPU 110, which may include one or more of RAM, ROM, magnetic disk, magnetic tape, cache memory, or other memory storage device. A user inputs information to manipulate the interface or operate applications through a keyboard 120 or pointing device 125 such as a mouse connected to the CPU 110. Information is output on a display 140 for communication to the user. The present invention relates to an interface which defines the presentation of the information on the display 140. The invention is not limited to software implementations nor is it limited to displays for general purpose computers. It could also be applied, for example, to an audio-visual device or a television set for simultaneous display of different programs in non-overlapping panes.

FIG. 6 illustrates the operation of the interface 200 of the present invention in connection with applications 150, 151, 152, which are associated with panes 210, 211, 212, respectively. The interface 200 controls the position, size and appearance of the panes and correlates application regions to the display regions defined by the panes. Additionally, other interfaces 170 may also be operating simultaneously in connection with different applications 160. These interfaces may be hidden or may occupy certain portions of the display 140. Thus, the non-overlapping interface 200 can be coordinated with existing systems.

Pane and Partition Manipulation

The interface 200 of the present invention permits the creation, management and manipulation of panes, whole partitions, segment partitions and cross partitions unrestricted by and without requiring any fixed pane layout or symmetry. By way of example, the configuration of panes shown in FIG. 1 could be created using the interface 200. However, unlike existing mechanisms, each whole partition and each segment partition can be individually managed by the present invention and can be discretely selected and manipulated by the user.

Whole partitions 20, 21 can each be moved to resize all panes horizontally or vertically, respectively. Additionally, segment partitions 23, 24, 25, 26, which are co-located with 20, 21, can be separately managed by the present invention and can be individually selected and manipulated to resize only the abutting panes. Thus, when segment partition 23 is moved, only the upper panes 10, 11, are affected, and the lower panes 12, 13 are not altered. When segment partition 25 is moved, only the left-hand panes 10 and 12 are adjusted, and the right-hand panes are unaffected.

The present invention may also provide management of cross partitions, such that a cross partition 22, formed at the intersection of partitions 20, 21 can be manipulated to resize panes in both the horizontal and vertical directions simultaneously. Further, all of the exterior whole partitions 30-33 and all of the exterior segment partitions 40-47, can be managed by the invention and can be selected and manipulated by the user. According to one embodiment of the invention, when such exterior partitions are moved toward the interior of the tiler, new panes are automatically created.

Manipulation of whole partitions, segment partitions or cross partitions is also not restricted by other partitions. For example, in the configuration of FIG. 2, partition 29 can be moved to the left past partition 24. In such a movement, partition 24 is consequently moved to accommodate the manipulation of partition 29. Alternatively, when partition 29 is moved to the left, the whole partition 20 can be consequently moved to accommodate the movement. Additionally, means exist for selecting whether whole or segment partitions are consequently moved. Further, if there were additional partitions and panes to the left of partition 20, they would also be automatically moved to accommodate the movement of partition 29.

Movement of cross partitions is also unconstrained. For instance, movement of the cross partition 22 at the intersection of 20 and 21 or movement of the cross partition at the intersection of 21 and 29 of FIG. 2 would cause automatic shifting and consequent movement of both horizontal and vertical partitions and automatic resizing of other panes to accommodate the movement. Thus, the interface 200 permits completely independent manipulation of whole, segment and cross partitions so as to effect convenient free-form sizing and positioning of panes, unconstrained by and without regard to fixed layouts or symmetries.

Any particular pane layout can be arrived at through any number of different individual adjustments, manipulations and sequences of prior arrangements of panes and partitions. The capabilities of the interface, however, are not restricted by the sequence of steps used to create a given layout, and manipulation alternatives are the same for equivalent layouts no matter how arrived at.

For example, the configuration in FIG. 1 can be created from a single-paned tiler, as illustrated in FIGS. 7A-7C, by adding a horizontal partition 21, adding a first vertical segment partition 23, and adding a second vertical segment partition 24
aligned with segment partition 23 to create partition 20.

Alternatively, as illustrated in FIGS. 7D-7F, the configuration could also be created by first adding a horizontal partition 21. Next, the addition of a vertical partition 20 causes the extent of 21 (of FIG. 1) to be reduced (to form partition
25) and creates a single right-hand pane encompassing the area of panes 11, 13. Finally, the addition of a horizontal partition 26 causes the creation of another pane, and brings partitions 25 and 26 into alignment such that 25 and 26 are segment partitions and together create the composite whole partition 21 as illustrated in FIG. 16F. In another alternative sequence, the configuration of FIG. 1 could be generated in one or two steps by adding partitions 20 and 21 either individually or both at once, to divide the tiler into the quadrants of FIG. 1.

Many other different series of steps and intermediate configurations could be used to create the configuration of FIG. 1. Unlike existing systems, though, the functionality of the interface is not affected by the method or sequence of the configuration's creation. Regardless of the creation sequence, when the present invention is used to implement the configuration of FIG. 1, not only can the two composite whole partitions 20, 21 be individually managed for display, selection and manipulation, but the segment partitions 23, 24, 25, 26, cross partition 22 and all the exterior partitions 30-33 and 40-47 can also be individually managed.

Existing mechanisms are much more limited. Existing whole-partition mechanisms provide for manipulation of the whole partitions 20 and 21 only; existing edge-based mechanisms provide for manipulation of segment partitions 23, 24, 25 and 26 only; and existing multi-level mechanisms provide for manipulation of one whole and two segment partitions only, depending on the configuration of a predefined layout--either the partitions 20, 25 and 26, or the partitions 21, 23 and 24.

The present invention may in part be distinguished from existing mechanisms by its ability to simultaneously manage both segment and composite whole partitions. The invention may also in part be distinguished from existing mechanisms by the range of movement, sizing and adjustment it affords to particular sets of panes.

In the four quadrant configuration of FIG. 1, any pane can be adjusted with either a horizontally opposite or a vertically opposite pane, such that no other panes are affected. Additionally any pane can be collectively adjusted with the other three panes (including the diagonally opposite pane) either vertically or horizontally. Thus, pane 10 may be adjusted with pane 11 only, without affecting the bottom panes 12, 13, by manipulation of segment partition 23. Pane 10 may also be adjusted with pane 12 only, without affecting the right hand panes 11, 13, by manipulation of segment partition 25. Pane 10 may also be adjusted either horizontally or vertically along with all the other three panes by manipulating the whole partitions 20, 21
respectively, or alternatively, by manipulating cross partition 22.

Existing art is variously limited according to this understanding of the present invention. Whole-partition mechanisms are able to adjust all four panes at once, but are unable to provide means for adjusting either 10 and 11 only or 10 and 12
only. Multi-level mechanisms are able to provide means for adjusting all four panes collectively, and are also able to provide means for adjusting 10 and 11 only, or 10 and 12 only, but not both sets. Edge-based mechanisms are able to adjust 10 and 11
only, or 10 and 12 only, but have no means for adjusting all panes collectively.

In addition to the above capabilities, the present invention may also provide implementation of cross partitions for simultaneous management and manipulation of both horizontal and vertical partitions, as well as exterior whole and segment partitions, 30-33 and 40-47. Further, the present invention can provide for the ad hoc creation and removal of panes and partitions. The present invention can provide such capabilities for any number of panes and partitions, in any non-overlapped configuration without regard to and without being restricted by any fixed or predefined symmetry, parent-child or other special relationship between individual panes.

Data Structures

FIG. 8 shows a configuration for three panes 210, 211, 212 of the interface 200 which will be used in describing the structure and operation of the interface 200. FIG. 9 illustrates the data structures for describing and controlling the panes and partitions between panes in a preferred embodiment of the present invention. The tiler data structure 205 defines a pane configuration in the interface. More than one tiler 205 may be created and used simultaneously. Tilers may be included in or form conventional overlapped and non-overlapped windows which can be managed with other windows and incorporated into other overlapped or non-overlapped interfaces. Each tiler defines a specific dynamically changeable pane configuration and includes identifiers, flags and data 301-333 for representing the tiler on the display. Such information may include a name 301 for the tiler and references to the screen and tiler dimensions 321, 322 and scrolling 323, 324. More particularly, the tiler structure includes vertical and horizontal partition arrays 327, 329, a cross partition array 331 and a pane array 333.

The pane array 333 includes one or more pane data structures 215 in an array format. The pane data structure 215 includes: a pane name 340; a reference 341 to the tiler 205 to which the pane belongs; a reference 345 to the tenant application object associated with the pane; and rectangular dimensions of the pane's exterior extent 347, interior extent 348, and title bar 349. The rectangular dimensions of a normal position 350 for the pane is also part of the data structure. The normal position 350 is used when the pane is changed from a maximized, minimized or hidden state back to a normal position. Two sets of flags indicate attributes of the pane. Border flags 343 indicate whether the edges of the pane are situated with the tiler's borders. Pane flags 344 indicate whether the pane is maximized, shown, hidden, a principal pane for the tiler or an initial predefined pane.

The rectangular dimensions of a pane 210 are illustrated in FIG. 10. The exterior rectangle dimensions 347 define a rectangle 410 with the position of the four sides or edges 411-414 of the pane. Panes of a tiler are maintained in non-overlapping fashion by co-locating sides of exterior rectangles 411-414 of adjacent panes. Alternatively, additional buffer areas and gaps between panes may also be used, or certain portions of panes may be allowed to overlap without causing substantial overlapping of pane contents.

The interior rectangle dimensions 348 define a rectangle 420 for an application window with the position of the four sides 421-424. A title bar rectangle 430 may be cut out of the interior rectangle. As shown in FIG. 8, the title bar may include the title 260 as well as various other function buttons 261-266. Function buttons can be used to perform functions, such as selection of a specific application to be placed in and associated with a pane; application-specific options and menus; maximizing, minimizing or hiding a pane; and resetting a pane to a normal position.

Partitions between panes are defined by the partition data structure 230. This data structure is identical for vertical and horizontal partitions, which are maintained in separate arrays 327, 329 of the tiler 205. The partition data structure
230 includes an edge definition 360, a pickup and display rectangle 361 and a movement amount 362 which can be used during partition manipulation. The pickup rectangle corresponds to a hotspot or mouse-sensitive area which can be used for selection and display of a partition. Partition display areas may be situated in the spaces between interior rectangles 348 of adjacent panes.

While the edge data structure 240 may correspond to the edge of a pane, it is also used to define various other edges and lines. It includes a line's position or location 370, which corresponds to the x coordinate for vertical lines and the y coordinate for horizontal lines. The start value 371, and end value 372, correspond to top and bottom end points for vertical lines and left and right end points for horizontal lines. A set of flags 373 are used to define the location of the edge relative to a pane (top, left, right, bottom) or tiler border. When an edge data structure 240 is contained or referenced by a partition data structure 230, the flags 373 may also serve to define partition attributes or types of partitions, such as whole, segment or multi-segment partitions.

The cross partition array 331 defines intersections between partitions. Cross partitions are used for simultaneous movement of horizontal and vertical partitions. The cross partition data structure 250 includes the position 380, 381; indices to the intersecting horizontal and vertical partitions 382, 383 in the corresponding horizontal and vertical partition arrays 327, 329; and a pickup and display rectangle 384.

Pane Layout Modification Cycle

A tiler of the present invention includes a layout of non-overlapped panes which can be altered by the user in various ways to effect a new layout. Layout alterations may be done successively and in a sequence or cycle of steps.

FIG. 11 is a block flow diagram which indicates the major steps in a layout modification sequence. At step 700, the user initiates an action which affects the layout of panes in the tiler. Such an action may include partition movement, pane creation, deletion or hiding, resetting of partition parameters such as thickness, auto-alignment or other attributes, or rearranging the layout to one of several predefined layouts or layout styles, among others. At step 701, handling of the initiated action is dispatched to the appropriate handling function, such as a partition manipulation function or a pane arrangement function. At step 702, the handling function directly alters the external rectangles 347 (the position within the tiler) and border flags of affected panes. For example, when the user has finished repositioning a partition, the function handling partition movement modifies the external rectangles of panes on either side of the repositioned partition.

At step 703, adjustments are made to accommodate a tiler's extent to its display area. Step 703 may further include resetting of the tiler's scrolling parameters to provide scrolled access to portions of the tiler's extent outside the visible display area. At step 704, and as shown in greater detail in FIG. 12, the vertical, horizontal and cross partition arrays of the tiler, 327, 329, 331, are entirely rebuilt based on the new pane positions and parameters and replace all prior partitions. Once new partition arrays have been constructed, the pane tenants, that is, the application windows or application regions residing within the panes, are repositioned and redisplayed, as indicated at step 705. At step 706, the newly built partitions themselves are displayed. At step 707, the system waits for new user input which may cause additional layout modification by a variety of means and thus, re-execution of the sequence starting at step 700.

Throughout the layout modification cycle, the contents of a tiler's pane array 333 remain constant, except when new panes are added to the tiler or when existing panes are deleted. When a pane is hidden, a flag 344 is cleared to indicate that it is no longer shown, rather than removing the pane from the pane array. While the pane array's contents remain relatively static, the contents of the vertical, horizontal and cross partition arrays, 327, 329, 331, are rebuilt (step 704) with every modification to the tiler's layout.

In a preferred embodiment, the operation of the interface relies on exact alignment and matching of pane edges. Because of this, any slight change in alignment and location of pane edges may require reanalysis and reconstruction of partition arrays. Thus, the partition arrays are discarded and new partition arrays are constructed after any partition movement, rearrangement, deletion, hiding, showing or resizing of panes within the tiler, swapping of pane positions, alteration of partition thickness, changing of auto-alignment parameters, minimum pane width or height, or other partition, pane or tiler attributes. Reconstruction of the partition arrays also occurs after the tiler is resized, its contents are scrolled, predefined layouts are applied, application-specific actions are performed, a tab bar or other auxiliary frame windows are shown or hidden, and various other modifications which affect the layout.

Construction of Partition Arrays

The present invention provides manipulation of non-overlapping panes. According to an embodiment of the invention, pane manipulation can be effected by reference to and manipulation of partitions aligned with the panes. Partition arrays 327,
329, 331 are constructed and maintained to afford such movement and manipulation of panes.

The process of constructing partition arrays, which is invoked at step 704 of FIG. 11, is illustrated in FIG. 12. At the point at which the actions of FIG. 12 are executed, modification to the tiler's layout has occurred (steps 700, 701), the external rectangles 347 of the panes have been modified (step 702) and adjustments to the tiler's extent have taken place (step 703). At step 500 of FIG. 12, the vertical partition array is created, followed by creation of the horizontal partition array (step 510). At step 520, cross partitions are formed by examining the intersections of the vertical and horizontal partitions and are stored in an array. At step 530, the tiler's previous partition arrays are discarded and are replaced by the new partition arrays, and the partition construction process concludes at step 540, by returning to the caller. Subsequent processing, as shown in FIG. 11, causes repositioning and redisplay of pane tenants (step 705), and redisplay of the newly built partitions (step 706) before awaiting the next layout-modifying action (step 707).

The construction of partition arrays is centered on the identification of which combinations of pane edges are aligned so as to allow them to be jointly managed as partitions. This process is called edge matching and seeks to identify the smallest groupings of edges that can be managed and manipulated together. In effect, this results in the identification of the smallest groupings of panes which can be moved or resized together.

A pane edge is a simple geometric entity representing one of the four sides of a pane. A partition, though, is more complex and may represent a correlation of panes and their edges. While a single pane edge may be used to form one or more partitions, partitions may also be composed of multiple pane edges. For instance, the right edge of pane 10 in FIG. 1 may be used in the formation of segment partition 23, composite whole partition 20 and cross partition 22. In contrast, composite whole partition 20 aggregates four edges--the left edges of panes 11 and 13 and the right edges of panes 10 and 12.

A partition, moreover, can be managed by the interface as a data structure which may be moveable and alterable, and which may have different kinds of characteristics and functionality. As a data structure, it may further provide the basis for implementation of various kinds of user interface devices. In the present invention, these user interface devices are also termed partitions, but in the following discussion it should be clear from the context whether the data structure or the user interface device is indicated. Such partition user interface devices may be selectable and manipulable by the user so as to alter the pane configuration. The invention, however, does not require such user interface devices, nor do partitions necessarily have to be visible. Instead, various alternative methods can be used to effect modifications to pane layouts.

There is little difference in the method for building vertical and horizontal partitions. Because of this, the same partition construction subroutine 501 can be used in separate passes--vertical edges are considered in a first pass (step 500), and horizontal edges in a second pass (step 510). Alternatively, separate routines could be used for the vertical and horizontal passes, which could then operate sequentially or concurrently.

So as to be able to use common terms for the construction of both vertical and horizontal partitions, the terms near edge and far edge are used to represent opposing edges of a pane. Near edge means the left edge of a pane for vertical edge analysis and the top edge for horizontal edge analysis. Far edge means the right edge when performing vertical edge analysis and the bottom edge when performing horizontal edge analysis. These terms are arbitrary and for convenience only. FIG. 13
illustrates the edges of the panes 210, 211, 212 used to form partitions. The panes 210, 211, 212 are respectively referenced as 1, 2, and 3, with corresponding edges referenced as r, t, b, for left, right, top and bottom edges. For the vertical pass, the left edges 1l, 2l, 3l are near edges, and the right edges 1r, 2r, 3r are far edges. For the horizontal pass, the top edges 1t, 2t, 3t are near edges, and the bottom edges 1b, 2b, 3b are far edges.

The creation of partitions involves determining which edges are to be used in forming a partition, so as to be members of the partitions. An edge is considered to be a member of a partition if the edge is aligned with the partition and its extent is contained by and fully included within the partition's extent. A pane itself is considered to be a member of a partition if one of its edges is a member of the partition.

Because border (exterior) partitions are situated at the tiler's borders, they are not between panes, and have member panes to one side only. Border partitions are therefore formed simply from the edges of panes which are situated at one of the tiler's borders or frame. Because of this, border partitions are not formed from combinations of both near and far edges, but instead are formed near edges exclusively or from far edges exclusively.

Interior partitions, on the other hand, are situated between panes, such that there are one or more member panes to each side of an interior partition. Stated differently, an interior partition is formed by a combination of at least one near edge and at least one far edge of different panes. The creation of interior partitions, then, involves finding a combination of near edges which is coextensive with a combination of far edges.

At step 502, a series of work arrays are created for use in the edge matching and partition construction process. As illustrated in FIG. 14A, these work arrays include arrays for near edges 540, far edges 541, matched edges 542 and partitions
543. At step 503, edge data structures representing the near and far edges of each of the panes are created and placed in the appropriate array. This is done by iterating through all shown panes in the tiler, identifying the near and far edges of each pane's exterior rectangle 347, and building corresponding edge data structures for each such edge.

Each of the near edge, far edge and matched edge work arrays, are maintained in sorted order. They are ordered first by the edge position or location (the x coordinate for vertical edges and the y coordinate for horizontal edges), and subordered by the start of the edge's extent (the top for vertical edges and the left for horizontal edges). FIGS. 14A-14D illustrate the contents and operation of these work arrays in creating vertical partitions for the pane configuration of FIG. 8. The parenthetical information in FIGS. 14A-14D is to help distinguish types of edges and partitions.

The near and far edge arrays are first assembled and initialized at step 503, and as shown in FIG. 14A. Once this has been done, the edge matching process (steps 504 and 505) begins. Because there are no corresponding opposite edges or panes for exterior (border) edges, all exterior edges are considered automatically matched and are moved (step 504) out of the near and far edge arrays into the matched edge array in sorted order as shown in FIG. 14B. After step 504 is complete, only interior edges remain in the near and far edge arrays.

Matching of interior edges is the process of finding combinations of near edges which are aligned and have the same extent as a combination of far edges (step 505). In the example, the process is simple because the near edge 3l and the far edge
2r are aligned with each other and both have the same extent. These two edges are combined to form a single edge data structure 240 with the common location and extent of the two edges so matched. This matched edge data structure (designated 3l+2r) is then moved into the matched edge array as shown in FIG. 14C. At this point all near and far edges have been moved from the initial near and far edge arrays into the matched edge array.

As pane edges are maintained in alignment with either a tiler border or with one or more edges of other panes, the edge matching process will always find a combination of edges such that all edges will eventually be matched. Exterior edges, those aligned with the tiler's borders, are automatically matched with themselves. All interior edges, in some combination, will be able to be matched with one or more opposite edges. After completion of step 505, the matched edge array represents the smallest or atomic groupings of edges which can be managed and moved together while preserving non-overlapped tiling and rectangularity of aligned panes.

The next step in the partition construction process (step 506) is to build initial partitions from combinations of one or more matched edges as stored in the matched edge array at the completion of step 505. There are three basic types of partitions which are initially formed:

unitary whole partitions, which are formed from matched edges which are not extended by any other matched edges;

composite whole partitions, which are built from two or more matched edges which are aligned and extend each other, and are the largest combination of aligned edges which can be manipulated together; and

segment partitions, which are segments of a composite whole partition and are formed from the individual matched edges which have been used to form composite whole partitions.

Matched edges represent the smallest groupings of pane edges which can be moved together. Partitions may be formed from either single matched edges, or from combinations of matched edges. For instance, the matched edges 1l and 2l can be combined to form the composite whole partition 1l+2l, so as to be moved together. Because these two matched edges can both also be moved individually, they can additionally be used to form the individual segment partitions 1l and 2l.

The process of constructing partitions from matched edges involves iterating through the matched edge array to identify which matched edges extend other matched edges. An edge, a matched edge or a partition is considered extended by another when the two are aligned (such that vertical entities have the same x coordinate and horizontal entities have the same y coordinate) and when the extent of one begins where the other ends.

Those matched edges, such as 3l+2r, which are not extended by others, will be used to form unitary whole partitions. Those matched edges, such as 1l and 2l, which are extended by others, can be joined to form composite whole partitions. Additionally, when matched edges are so joined or composited, they are individually used to form segment partitions. Thus, because matched edges 1l and 2l extend each other, the composite whole partition 1l+2l can be formed, as well as the two individual segment partitions 1l and 2l. These segment partitions are, in a sense, child partitions of a parent composite whole partition.

FIG. 14D shows the contents of the partition array 543 after construction of initial partitions from matched edges. In addition to the partitions 1l, 2l and 1l+2l, matched edge 3l+2r, which is not extended by any other matched edge, forms the unitary whole partition 3l+2r only. Because matched edges 1r and 3r extend each other, they can be used to form composite whole partition 1r+3r as well as the individual child segment partitions 1r and 3r.

As each partition is formed, it is placed in sorted order in the partition work array 543 such that whole and segment partitions are stored together. In one embodiment, the vertical and horizontal partition arrays may be maintained in an order which simplifies the partition lookup process. Partitions are first ordered by their position or location-the x coordinate for vertical partitions and the y coordinate for horizontal partitions. Within a group of partitions at the same location, the partitions are subordered by type, with multi-segment partitions first, segment partitions next and whole partitions last. A group of same-type partitions at a given location is further subordered by the start of the partitions' extent. Alternative orderings may also be used.

After completion of the vertical partition construction pass (step 500), steps 502-509 are repeated for the horizontal pass (step 510). FIGS. 15A-15D illustrate the contents of the work arrays 540-543 during the horizontal pass for the configuration of FIGS. 8 and 13. At step 503, the top and bottom pane edges are inserted into the near and far edge arrays, 540 and 541 respectively (FIG. 15A). The border edges are then moved from the near and far edge arrays to the matched edge array
542 at step 504 (FIG. 15B). At step 505, the remaining interior edges are matched and moved to the matched edge array 542 (FIG. 15C).

Unlike the vertical pass, however, as shown in FIG. 15C, there is no simple one-to-one matching of interior near and far edges. Instead, the combination of the two near edges 2t and 3t, which extend each other, are in combination coextensive with the far edge 1b. When a set of near edges is found to be coextensive with a set of far edges, the near and far edges, in combination, are considered to be matched. Because the combined extent of 2t and 3t is the same as the extent of 1b, the three edges together are matched (1b+2t+3t). A single edge data structure 240 is then formed with the common position and the entire extent of the three individual edges, and is placed in the matched edge array, as shown in FIG. 15C.

When a one-to-one matching of coextensive near and far edges is not found, as in this instance, extending edges must be successively combined until a set of one or more combined near edges is found to be coextensive with a set of one or more combined far edges. Once all near and far edges are combined to form matched edges, partition data structures can be constructed.

The process for the successive combination is illustrated in the block flow diagrams in FIGS. 16A and 16B. Data is initialized at step 601. At the first iteration (no extension in step 603), a local copy of the edge information is made at step
604, and then an attempt is made to find a match at step 605. Step 605 is further illustrated in FIG. 16B, discussed below. If a matching edge is not found, then the edge must be extended (step 606) and the process is repeated. For the second iteration (yes in step 603), the local copy of the previously considered edge is extended by the next successive edge (step 609), and then a match is again attempted (step 605). Because edges are ordered by location and subordered by extent, edges which extend each other will be found at successive locations in the edge arrays. When a match is found, the edges, as extended, are added to the matched edge array at step 610 (or alternatively, at step 642 of FIG. 16B). The process is repeated until all edges have been matched.

FIG. 16B illustrates the process of finding a combination of far edges to match a near edge or extended near edges. Given a near edge or group of extended near edges as an input parameter, the process looks for a single far edge or a group of extended far edges which are coextensive with the near edge parameter. As with the process illustrated in FIG. 16A, the edge matching process selects an edge by making a local copy (step 635) on the first iteration, i.e., not extending at step 634, or extending a current edge with the previous local copy of an edge (step 641). Prior to extending an edge, the system determines whether the edges extend each other and can be combined (step 639). Because edges which extend each other must be successive entries in the edge array, at step 639, if the two edges do not extend each other, then no match has been found and the process returns to the caller at step 605.

At step 636, the near edge parameter and the local copy of the far edge are compared. If the combination of near edges is coextensive with the combination of far edges, then they are combined to form a matched edge. This is done at step 642 (or alternatively at step 610 of FIG. 16A) by creating a new edge data structure with the common position and extent and inserting it in sorted order into the matched edge array. After creating the matched edge the function returns to the caller (step 643) and subsequent edges are considered. If the combination of edges does not match (step 637), then the far edge is extended, if possible, and a new comparison is made in the next iteration.

As shown in FIG. 15B, once the border edges are automatically matched and moved into the matched edge array, the interior edges 2t, 3t and 1b remain to be matched. First a local copy of near edge 2t would be made (step 604) and an attempt made to match it. In attempting to match edge 2t, a local copy of far edge 1b would be made at step 635. Since the edges do not match (step 636) and there are no more far edges (step 633), the process returns to step 606 to extend the near edge. Since there is another near edge (step 603), the local copy of the near edge is extended to include both 2t and 3t (step 609) and an attempt is made to match the extended near edge. A local copy of the first far edge is again made (step 635) and compared with the local copy of the extended near edge. In this case, the edges match, and are combined and moved into the matched array in sorted order.

As with the vertical pass, after all the edges have been matched, partitions are formed from each matched edge and combinations of matched edges as illustrated in FIG. 15D. In this case, unitary whole partition 1t will be formed; matched edge
1b+2t+3t, is not extended by any other matched edge and forms a single unitary whole partition only; and lastly, matched edges 2b and 3b extend each other and can be combined to form both the composite whole partition 2b+3b and the two individually manipulable segment partitions 2b and 3b. The horizontal partition construction pass has then considered six pane edges, formed four matched edges and five partitions, of which there are two unitary whole partitions (1t and 1b+2t+3t), one composite whole partition (2b+3b) and two segment partitions (2b and 3b).

Once the vertical and horizontal partition construction passes have been completed, cross partitions are constructed by examining the intersections of the vertical and horizontal partitions. When an intersection is found, a cross partition data structure is created in the cross partition array 331, with references 382, 383 to the particular intersecting vertical and horizontal partitions (step 520). A cross partition so constructed provides the user the ability to manipulate both the vertical and horizontal partitions simultaneously. In a preferred embodiment, only interior whole partitions are included in determining cross partitions, and exterior partitions and segment partitions are ignored. Of course, cross partitions could be used to permit simultaneous manipulation of any perpendicularly intersecting partitions. In the case of the layout of FIG. 8, only one intersection of whole interior partitions exists--the intersection the vertical partition 3l+2r and the horizontal partition
1b+2t+3t.

Once all partitions have been created, the tiler's previous partition arrays are discarded and replaced with the newly created arrays (step 530). Subsequent processing causes pane tenants to be repositioned (step 705), and new partitions to be displayed (step 706). Partition construction is invoked in many different circumstances, and only certain panes may need to be moved or redrawn for any particular situation. For instance, if partition 274 (FIG. 8) were to be moved, only panes 211 and
212 would be repositioned, and pane 210 would remain unchanged. Positioning of pane contents involves allocating space within the pane's exterior rectangle for partition display, the title bar (if shown) and the pane's tenant window. A pane's exterior rectangle frames all of the component areas of the pane and each edge of the exterior rectangle may be directly aligned with other panes' edges or the tiler's border.

While a partition user interface device may appear to be between individual panes, in one embodiment, they are displayed within the exterior rectangles of the panes on either side of a partition. As shown in FIG. 10, partitions may be depicted in the space between the exterior rectangle 410 and the interior rectangle 420. Thus, a partition's edge definition 360 corresponds to a line of a given location and extent, and the partition's pickup or display rectangle 361 define a display area which may overhang abutting panes. Additionally, because segment, whole and cross partitions may be co-located, they will share the same display area, though they are able to be distinctly displayed according to one aspect of the invention. Such distinct display is shown in FIG. 17 and discussed below.

The process for repositioning pane contents is straightforward. The partition display areas are first subtracted from the exterior rectangle. This is based on user-configurable parameters for partition display thickness. By setting partition thickness to 0, partitions can be hidden. Because interior partitions may straddle two or more panes, half of the partition thickness can be allotted from the pane(s) on one side of the partition and half can be allotted from the pane(s) on the other side. If the title bar is shown separately from the tenant window, an area is allotted at the top, and the remaining pane space is reserved for the tenant window, that is, the application window or region associated with the pane. The title bar may alternatively be not shown, be shown elsewhere, or be included as part of the tenant application window. Once the pane space has been divided, the tenant window is repositioned, and the title bar and partitions are redisplayed. In a preferred embodiment, whole partitions are drawn first with a user-configurable color and style. Segment and cross partitions which will overlap whole partitions are then drawn on top of portions of the whole partitions.

Discrete Access and Display of Co-located Partitions

An important aspect of the interface is its ability to distinctly display multiple co-located partitions so as to allow them to be distinguished from each other, and so that a user may discriminate among them for individual selection. FIG. 17
depicts the configuration of FIG. 1, but now with the details of segment, cross and whole partition pickup regions shown. A pickup region is a hotspot or area which is individually responsive to a mouse or other pointing device partition selection. Such pickup regions may be specially colored or have other distinctive display features, and may also be indicated by other means, such as by modifying the pointing device's cursor when it is located over the pickup regions. The mouse sensitivity area and the display area of a pickup region are usually the same. However, in situations in which partitions are not visible, or have reduced thickness, so as to make ordinary pointing device selection difficult, the sensitivity region may extend beyond the display area. In this way, partitions may be more easily accessed without unnecessarily occupying display space.

As with FIG. 1, FIG. 17 illustrates four panes 10-13 separated by two composite whole partitions 20, 21. Also shown are shaded segment and cross partition pickup regions, which correspond to the like numbered segment and cross partitions of FIG.
1. Segment partitions 23, 24, which are together coextensive with 20, are displayed on top of 20, but so as to be individually distinguished from 20, and so as to be individually selectable. Similarly, the pickup regions corresponding to cross partition 22 and segment partitions 25, 26 are distinctly displayed.

Pickup regions represent and provide selection of entire partitions. Thus, when the pickup region 23 is selected by the pointer device, the entire segment partition coextensive with the right edge of pane 11 is selected. When the pickup region
24 is selected, the entire segment partition coextensive with the right edge of pane 12 is selected. Similarly, while cross partition 22 is co-located with the whole partitions 20, 21, the cross partition's pickup region allows it to be individually accessed, selected and manipulated. When selected, the entire cross partition, including both 20 and 21 is selected.

Because manipulation of whole partitions tends to be done more frequently than manipulation of segment partitions, a generally larger pickup region is reserved for whole partitions. This larger pickup region includes the remaining unshaded areas, that region of the partition exclusive of segment or cross partition pickup regions. In order to select the whole partition 20 then, the pointing device is positioned over one of the unshaded areas of that partition, that is, any portion of whole partition 20 excluding the segment and cross partition pickup regions 20, 21 and 22.

A chief advantage of this ability to provide individual display of and access to multiple co-located partitions is that it allows the interface to manage multiple kinds of partitions and present them to the user for alternative kinds of manipulation.

Flanking Segment Partitions and Multi-Segment Partitions

The discussion of the process of partition construction has so far covered the initial creation of segment, whole and cross partitions. Two other types of partitions are also created in later steps: flanking segment partitions (at step 507) and multi-segment partitions (at step 508). The process is illustrated with respect to the more complex arrangement of panes shown in FIG. 18.

A flanking segment partition is a segment partition which has the same location and extent as a corresponding unitary whole partition. The manipulation of a flanking segment partition, however, differs from that of the unitary whole partition when moved beyond an adjacent partition. In one embodiment, when a unitary whole partition is moved beyond a next partition, it will cause consequent movement of the next whole partition, so as to accommodate movement of the first partition. When a segment or flanking segment partition is instead moved, other segment partitions will be selected for consequent movement. Such consequent partition movement is discussed more fully in a later section.

For example, in FIG. 18, a unitary whole partition 764 is coextensive with a flanking segment partition 765. When the unitary whole partition 764 is moved downward past the next partition, the composite whole partition 768, including segment partitions 766 and 767, will be consequently moved as pane 713 is collapsed to a minimum height. Movement of partition 768, in turn, results in the additional resizing and repositioning of panes 710 and 711 as well as 712-714, and thus causes modification to all five panes of the configuration. When, instead, flanking segment partition 765 is moved downward past the next partition and to similarly cause collapsing of pane 713, only segment partition 766 will be consequently moved, and both panes 710, 711 will be unaffected.

Flanking segment partitions have the same behavior, functionality and appearance as other segment partitions, and in a sense, are artificial segment partitions, created primarily to provide this sort of partition manipulation. They are formed by a different process than that described earlier for other segment partitions. In one embodiment, this process involves examining candidate unitary whole partitions. For each such candidate, a search is done to find out whether parallel neighbor segment partitions exist--these would be the segment partitions which the flanking segment partitions would cause to move. Such neighbor segment partitions must be interior partitions, must be a nearest neighbor to the candidate partition, and must have an extent which fully includes the extent of the candidate partition. If such a neighboring parallel segment partition is found, a flanking segment partition is formed. It is given the same location and extent as the candidate unitary whole partition and placed in the appropriate partition array. If no such neighboring segment partitions are found, no flanking segment partition is added.

A multi-segment partition is a joining of two or more segment partitions to form a separately managed and manipulable partition. Multi-segment partitions behave and are manipulated like single segment partitions and provide simultaneous movement and manipulation of two or more segment partitions. The purpose of multi-segment partitions is to provide additional and alternative manipulation of the tiled layout. Because of this, in a preferred embodiment, multi-segment partitions are not built if there is a coextensive whole partition--such a whole partition would provide the same manipulation capabilities, and there would be no utility in creating the additional multi-segment partition. Instead, the extent of multi-segment partitions is always less than the extent of a co-located composite whole partition. In one embodiment, multi-segment partitions may be created for combinations of two border segment partitions only. However, multi-segment partitions could be created for any number or type of segments.

Multi-segment partitions are constructed at step 508 after formation of the initial whole and segment partitions, and after formation of flanking segment partitions. They are built by iterating through the partition work array 543, and for each segment partition, looking for another segment partition which extends the first segment partition. Once found, the two segment partitions are composite to form a candidate multi-segment partition. A search of the partition array is then done to determine whether a coextensive whole partition exists. If no such coextensive whole partition is found, the candidate multi-segment partition is added to the partition array. Otherwise the candidate multi-segment partition is discarded, as it would duplicate the operation of the whole partition.

As an example, in FIG. 18, segments 729, 730 and 731 are on the right border of the tiler and are coextensive with the right edges of panes 712, 713 and 714, respectively. Whole partition 733 is a combination of all three of these segments. Segments 729 and 730 can be combined to form a multi-segment partition 732 which is not coextensive with the whole partition 733. Similarly, segments 730 and 731 can be combined to form a multi-segment partition 734 also not coextensive with 733.

FIG. 19A illustrates the contents of the vertical partition array for the configuration of FIG. 18; FIG. 19B illustrates the contents of the horizontal partition array for the configuration of FIG. 18; and FIG. 19C illustrates the contents of the cross partition array for the configuration of FIG. 18.

Pane and Partition Movement

Once all partitions have been created and displayed and the pane tenants have been positioned, the user is able to manipulate the various partitions to effect new layouts. Partition movement may be accomplished using a pointing device such as a mouse. Alternatively, other methods, including keyboard, programmatic and indirect methods, could be used for selecting partitions to be moved and for indicating the direction and extent of movement.

When the user positions the mouse over a partition, an appropriate cursor may be displayed indicating the partition type (segment, whole, multi-segment or cross partition) and the partition direction (vertical or horizontal). A particular partition can be selected for movement by selecting it with the pointing device, such as by pressing the left mouse button. Because various types of partitions have overlapping extents, but need to be individually selected, managed and manipulated, each type of partition may be assigned and displayed as a pickup region (e.g., 22-26 of FIG. 17) to allow the user to uniquely select a particular partition.

As the mouse is moved, the cross, vertical and horizontal partition arrays are searched to determine which partition's pickup region, if any, is located at the current mouse position. If the search results in a partition being found at the current mouse position, an appropriate cursor, corresponding to the located partition, may be shown. When the user presses the mouse button to select a partition, the same lookup process is used to identify the selected partition.

In one embodiment, when a search for a partition at a given location is performed, the cross partition array 331 is searched first, effectively giving cross partitions precedence over all other partitions. If no cross partition is found at the location, the vertical partition array 327 is next searched, followed by a search of the horizontal partition array 329. Because of the ordering which places multi-segment and segment partitions ahead of whole partitions in the vertical and horizontal partition arrays, multi-segment and segment partitions are selected ahead of and are given precedence over co-located whole partitions. In effect, the segment partitions' smaller pickup regions are excluded from the larger pickup region of co-located whole partitions. A whole partition's pickup region then, can be maintained as a single rectangle, 361, with excluded segment partition pickup regions given precedence in the lookup process. Thus, when the mouse is situated over segment partition 23's pickup region, the associated segment partition is selected ahead of the co-located pickup region of whole partition 20.

In a preferred embodiment, the user can perform partition movement by positioning the mouse over one of the partition pickup regions, selecting the partition with the left mouse button, dragging the partition to new tentative locations with the mouse button held down, and finally, repositioning the partition at the desired location by releasing the mouse button. While being dragged, none of the partition locations change, but the new partition location is drawn on the tiler as a tracking partition to give the user feedback. Such tracking partitions are not true partitions in the sense of separating panes, and no corresponding partition data structures are allocated. Instead, they are just graphic representations of where the partition being moved would be placed were the mouse to be released. Rather than allocating and creating partition data structures 230, tracking partition display can be derived from existing partitions by reference to the movement field 362. This movement amount represents a partition's current location relative to its original location at the beginning of the partition movement operation.

FIG. 20A illustrates a configuration with movement of a tracking partition. Segment partitions 805 and 806 are coextensive with the right edges of panes 851 and 854 respectively, and together are coextensive with composite whole partition 804.