WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Method and apparatus for modifying a display matrix in a computer window by adding one column or row at a time    
United States Patent5621876   
Link to this pagehttp://www.wikipatents.com/5621876.html
Inventor(s)Odam; Seth T. (Palo Alto, CA); Harker; James R. (Los Altos, CA); Ansanelli; Joseph G. (Palo Alto, CA); Welde, Jr.; John L. (Pope AFB, NC)
AbstractA method of modifying a display matrix in a matrix display area in a window on a computer display screen. The method includes the steps of displaying data in a matrix format, thereby forming a display matrix in the matrix display area, the matrix display area having a first dimension, and increasing, responsive to a selection of an increase activator, the number of existing columns of matrix cells in the display matrix by adding an additional column of matrix cells to the display matrix. The method further includes the step of computing, using a central processing unit, a computed width of a column of matrix cells in the existing columns of matrix cells if the column of matrix cells is reduced in width to accommodate the additional column of matrix cells. The method also includes the steps of reducing the width of the column of matrix cells to accommodate the additional column of matrix cells within the first dimension if the computed width does not fall below a predefined minimum column width, and increasing a width of the matrix display area to accommodate the additional column of matrix cells if the computed width falls below the predefined minimum column width.



 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Drawing from US Patent 5621876
Method and apparatus for modifying a display matrix in a computer window

     by adding one column or row at a time - US Patent 5621876 Drawing
Method and apparatus for modifying a display matrix in a computer window by adding one column or row at a time
Inventor     Odam; Seth T. (Palo Alto, CA); Harker; James R. (Los Altos, CA); Ansanelli; Joseph G. (Palo Alto, CA); Welde, Jr.; John L. (Pope AFB, NC)
Owner/Assignee     Apple Computer, Inc. (Cupertino, CA)
Patent assignment
All assignments
Publication Date     April 15, 1997
Application Number     08/418,417
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     April 7, 1995
US Classification     715/504 345/660 715/788
Int'l Classification     G06F 017/24 G06T 003/40
Examiner     Zimmerman; Mark K.
Assistant Examiner     Hong; Stephen
Attorney/Law Firm     Hickman Beyer & Weaver
Address
Parent Case    
Priority Data    
USPTO Field of Search     395/128 395/139 395/145 395/148 395/157 395/159 345/118 345/119 345/120 345/121 345/123 345/127 345/129 345/130
Patent Tags     modifying display matrix computer window adding one column row time
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
5459825
Anderson
715/815
Oct,1995

[0 after 0 votes]
5337405
Lindauer
715/503
Aug,1994

[0 after 0 votes]
5263134
Paal
715/788
Nov,1993

[0 after 0 votes]
5227771
Kerr
715/800
Jul,1993

[0 after 0 votes]
5073771
Satta

Dec,1991

[0 after 0 votes]
5001697
Torres
715/542
Mar,1991

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


What is claimed is:

1. A method of modifying a display matrix in a matrix display area in a window on a computer display screen, comprising:

displaying data in a matrix format, thereby frowning a display matrix in said matrix display area, said matrix display area having a first dimension;

increasing, responsive to a selection of an increase activator, the number of existing columns of matrix cells in said display matrix by adding an additional column of matrix cells to said display matrix;

computing, using a central processing unit, a computed width of a column of matrix cells in said existing columns of matrix cells if said column of matrix cells is reduced in width to accommodate said additional column of matrix cells;

reducing said width of said column of matrix cells to accommodate said additional column of matrix cells within said first dimension if said computed width does not fall below a predefined minimum column width; and

automatically increasing a width of said matrix display area to accommodate said additional column of matrix cells if said computed width falls below said predefined minimum column width.

2. The method of claim 1 further comprising:

disabling said increase activator to prevent a user from selecting said increase activator if another addition of another column of matrix cells would increase the total number of columns in said matrix display area, after said another addition, beyond a predefined maximum number.

3. The method of claim 1 further comprising:

disabling said increase activator to prevent a user from selecting said increase activator if another addition of another column of matrix cells would increase a width of said window area beyond a predefined maximum window width.

4. The method of claim 1 further comprising:

reducing, responsive to a selection of a decrease activator, the number of existing columns of matrix cells in said display matrix by removing a column of matrix cells chosen for deletion from said display matrix, wherein said matrix display area retains a dimension it has prior to said reducing step.

5. The method of claim 4, wherein said increase activator is visually presented to the user as an increase button, said decrease activator is visually presented to the user as a decrease button, and said selecting is performed with a screen pointer device.

6. The method of claim 4, further comprising:

disabling said decrease activator to prevent a user from selecting said decrease activator if another removal of another column of matrix cells would reduce the total number of columns in said matrix display area, after said another removal, below a predefined minimum number of columns.

7. The method of claim 6 wherein said predefined minimum number of columns is one.

8. The method of claim 1 further comprising:

reducing, responsive to a selection of a decrease activator, the number of existing columns of matrix cells in said display matrix by removing a column of matrix cells chosen for deletion from said display matrix, wherein said matrix display area is reduced in width by an amount equals a width of said column of matrix cells chosen for deletion.

9. The method of claim 1 wherein said increasing step further comprises:

computing an expanded width, said expanded width representing a width of said matrix display area after said additional column of matrix cells is added to said display matrix, said expanded width equals the product of said predefined minimum column width and a total number of columns in said display matrix after said additional column of matrix cells is added to said display matrix.

10. The method of claim 1 wherein said increasing step further comprises:

computing an expanded width, said expanded width representing a width of said matrix display area after said additional column of matrix cells is added to said display matrix, said expanded width equals the sum of the widths of all columns of matrix cells in said display matrix after said additional column of matrix cells is added to said display matrix.

11. A method of modifying a display matrix in a matrix display area in a window on a computer display screen, comprising:

displaying data in a matrix format, thereby forming a display matrix in said matrix display area, said matrix display area having a first dimension;

increasing, responsive to a selection of an increase activator, the number of existing rows of matrix cells in said display matrix by adding an additional row of matrix cells to said display matrix;

computing, using a central processing unit, a computed height of a row of matrix cells in said existing rows of matrix cells if said row of matrix cells is reduced in height to accommodate said additional row of matrix cells;

reducing said height of said row of matrix cells to accommodate said additional row of matrix cells within said first dimension if said computed height does not fall below a predefined minimum row height; and

automatically increasing a height of said matrix display area to accommodate said additional row of matrix cells if said computed height falls below said predefined minimum row height.

12. The method of claim 11 further comprising:

disabling said increase activator to prevent a user from selecting said increase activator if another addition of another row of matrix cells would increase the total number of rows in said matrix display area, after said another addition, beyond a predefined maximum.

13. The method of claim 11 further comprising:

disabling said increase activator to prevent a user from selecting said increase activator if another addition of another row of matrix cells would increase a height of said window area beyond a predefined maximum window height.

14. The method of claim 11 further comprising:

reducing, responsive to a selection of a decrease activator, the number of existing rows of matrix cells in said display matrix by removing a row of matrix cells chosen for deletion from said display matrix, wherein said matrix display area retains a dimension it has prior to said reducing step.

15. The method of claim 14, wherein said increase activator is visually presented to the user as an increase button, said decrease activator is visually presented to the user as a decrease button, and said selecting is performed with a screen pointer device.

16. The method of claim 14, further comprising:

disabling said decrease activator to prevent a user from selecting said decrease activator if another removal of another row of matrix cells would reduce the total number of rows in said matrix display area, after said another removal, below a predefined minimum number of rows.

17. The method of claim 16 wherein said predefined minimum number of rows is one.

18. The method of claim 11 further comprising:

reducing, responsive to a selection of a decrease activator, the number of existing rows of matrix cells in said display matrix by removing a row of matrix cells chosen for deletion from said display matrix, wherein said matrix display area is reduced in height by an amount equals a height of said row of matrix cells chosen for deletion.

19. The method of claim 11 wherein said increasing step further comprises:

computing an expanded height, said expanded height representing a height of said matrix display area after said additional row of matrix cells is added to said display matrix, said expanded height equals the product of said predefined minimum row height and a total number of rows in said display matrix after said additional row of matrix cells is added to said display matrix.

20. The method of claim 11 wherein said increasing step further comprises:

computing an expanded height, said expanded height representing a height of said matrix display area after said additional row of matrix cells is added to said display matrix, said expanded height equals the sum of the heights of all rows of matrix cells in said display matrix after said additional row of matrix cells is added to said display matrix.

21. An apparatus for modifying in a discrete, stepwise manner a display matrix comprising of matrix cells arranged in rows and columns in a matrix display area having a first dimension in a window on a computer display screen, comprising:

an increase activator means;

means for increasing, responsive to a selection of said increase activator means, the number of existing columns of matrix cells in said display matrix by adding an additional column of matrix cells to said display matrix;

means for computing a computed width of a column of matrix cells in said existing columns of matrix cells if said column of matrix cells is reduced in width to accommodate said additional column of matrix cells, wherein said width of said column of matrix cells is reduced to accommodate said additional column of matrix cells within said first dimension if said computed width does not fall below a predefined minimum column width, said width of said matrix display area is automatically increased if said computed width falls below said predefined minimum column width;

a decrease activator means; and

means for reducing, responsive to a selection of said decrease activator means, the number of existing columns of matrix cells in said display matrix by removing a column of matrix cells chosen for deletion from said display matrix, wherein said matrix display area retains a dimension it has prior to said reducing step.

22. The method of claim 1 wherein said computing step further comprises the step of:

integer dividing a width of said matrix display area by a first number of columns of matrix cells, said first number of column equals a sum of said number of existing columns of matrix cells and said additional column of matrix cells; and

if there are remainder pixels left over from said integer dividing step, adding said remainder pixels to a buffer column provided in said window, thereby permitting said buffer column to be displayed with a new width inclusive of said remainder pixels after said additional column of matrix cells is added to said window.

23. The method of claim 4 wherein said computing step further comprises the step of:

integer dividing a width of said matrix display area by a first number of columns of matrix cells, said first number of column equals a value representing of said number of existing columns of matrix cells subtracted by one;

if there are remainder pixels left over from said integer dividing step, adding said remainder pixels to a buffer column provided in said window, thereby permitting said buffer column to be displayed with a new width inclusive of said remainder pixels after said additional column of matrix cells is added to said window.

24. The method of claim 21 wherein said window further comprises:

a buffer column for storing any remainder pixels left over from a computing operation carried out by said computing means in calculating said computed width, said computing operation comprising integer dividing a width of said matrix display area by a first number of columns of matrix cells, said first number of column equals a sum of said number of existing columns of matrix cells and said additional column of matrix cells, said buffer column, after storing said remainder pixels, is displayed in said window with a width inclusive of said remainder pixels.
 Description Submit all comments and votes
 


BACKGROUND OF THE INVENTION

This invention relates generally to computer systems and to displays on computer display screens. More particularly, the present invention relates to apparatus and methods for modifying a display matrix in a display window in a discrete, stepwise manner.

Windows are often used with computer systems implementing graphical user interfaces (GUIs). Many people find that computers having GUIs are easier to learn and use than comparable computers without GUIs. Computers having GUIs include desktop units, such as the popular Apple.TM. Macintosh.TM. and IBM.TM.-compatible computers, notebooks and subnotebooks, such as the popular Apple.TM. Powerbooks.TM. and IBM.TM. ThinkPads, as well as pen-based computers such as the Apple.TM. Newton.TM.. For ease of understanding and without limiting the scope of the invention, a Power Macintosh.TM. computer system manufactured by Apple.TM. Computer Inc. of Cupertino, Calif. is selected for illustration purposes. However, it should be noted that the discussion below is equally applicable to computers of other makes and models.

FIG. 1 shows a typical prior art GUI screen on a computer screen 10. Computer screen 10 represents the area within which images, texts, and other types of data objects can be displayed and manipulated. On an Apple Power Macintosh, computer screen 10 often includes a desktop image 14 which is produced by a Macintosh operating system. Desktop image 14 often includes a menu bar 18 and a desktop display area 20. Within desktop display area 20, shown are a number of icons 22, 24 and 26 representing different objects. For example, icon 22 represents a hard disk drive, icon 24 represents a "trash can" in which files can be deposited to be deleted, and icon 26 represents a folder entitled "desk stuff," which may contain application programs and files of various types.

Menu bar 18 preferably includes a number of menu labels 28, 30, and 32 for implementing pop down menus, as are well known to Macintosh users. Desktop image 14 also includes a screen cursor shown in the form of an arrow 34. The screen cursor works in cooperation with a pointing device, for example, a trackball, a mouse, a joystick, special keys on a computer keyboard, or the like. As is well known to those of skill in the art, the screen cursor may be moved to different positions on computer screen 10 and may assume different forms.

There is also shown in FIG. 1 a window 16 within desktop image 14. Window 16 represents an instance of a utility program known as Finder.TM., also manufactured by Apple Computer, Inc. of Cupertino, Calif. In a typical GUI environment, there are often multiple windows simultaneously open on computer screen 10, each of which may be an instance of a particular application program. At the top of window 16, shown is a title bar 36. As shown in FIG. 1, title bar 36 identifies the current window as "A Folder." Each window has associated with it a window display area 37 within which information from a data set associated with window 16 may be displayed and manipulated. Optional vertical scroll bar 38 and horizontal scroll bar 40 are preferably located at the vertical and horizontal edges of window 16. Window 16 can be moved around desktop display area 20, preferably by dragging on title bar 36. Window 16 can also be resized, preferably by dragging a size box 42 to expand or contract window 16. Further, window 16 can also be closed, preferably by clicking on a close box 44 in the upper left corner of window 16.

Windows sometimes include information regarding the software currently under use and the current system capacity. In FIG. 1, textual information box 46 in window 16 indicates that there is currently 0 item in "A Folder," 53.2 megabytes of total memory capacity on a disk storage device, of which 9.7 megabytes of memory is available. The functions and use of the aforementioned items, which are typical in a GUI environment, are well known to those familiar with the Apple.TM. Macintosh.TM..

In certain types of display windows, information may be more clearly conveyed to the user and manipulable when displayed in a matrix format. Examples of application programs that display information to the user in a matrix format include spreadsheet programs, e.g. ClarisWorks.TM. by Claris Corp. of Santa Clara, Calif., personal information manager programs, e.g. Claris Organizer.TM., manufactured by the aforementioned Claris Corp., or word processing programs that manipulate text displayed in newspaper column styles.

Often times, a user viewing a display matrix wishes to view one additional column or row of matrix cells. To add an additional column or row of matrix cells to the existing display matrix, a user in the prior art manually increases the size of the display window by dragging on a window size box, thereby displaying more of the display matrix. Manually increasing the size of the display window to view an additional column or row of matrix cells is, however, an inconvenient and indirect way to accomplish what the user really wants, i.e. to add an additional column or row of matrix cells to the existing display matrix. Further, when a display window is already at its maximum size, e.g. occupying the entire computer display screen, it is not possible to further increase the size of the display window to add an additional column or row to the existing display matrix.

Another prior art method permits the user to reduce the size of existing cells to create additional room in the display window to accommodate an additional column or row of matrix cells. The reduction in the size of existing cells is typically accomplished by manually changing the size of existing cells in the display window, e.g. by dragging on an edge of a cell or a group of cells. However, this manual operation is also an inconvenient and indirect way of accomplishing the addition of an additional column or row of matrix cells to the existing display matrix. Further, this prior art method needlessly requires the user to exercise judgment regarding the appropriate cell size. To optimally display the additional column or row of matrix cells in the window matrix display area, a user often has to experiment in a trial-and-error fashion with different cell sizes.

Consequently, what is needed is an improved apparatus and method for modifying a display matrix in a display window in a discrete, stepwise manner. The improved method and apparatus preferably adds or removes a row or column of matrix cells responsive to a user's command, and adjusts the display matrix to accommodate the addition or removal such that cells are displayed in an efficient manner in the matrix display area.

SUMMARY OF THE INVENTION

The invention relates to, in one aspect, a method of modifying a display matrix in a matrix display area in a window on a computer display screen. The method includes the steps of displaying data in a matrix format, thereby forming a display matrix in the matrix display area, the matrix display area having a first dimension, and increasing, responsive to a selection of an increase activator, the number of existing columns of matrix cells in the display matrix by adding an additional column of matrix cells to the display matrix. The method further includes the step of computing, using a central processing unit, a computed width of a column of matrix cells in the existing columns of matrix cells if the column of matrix cells is reduced in width to accommodate the additional column of matrix cells. The method also includes the steps of reducing the width of the column of matrix cells to accommodate the additional column of matrix cells within the first dimension if the computed width does not fall below a predefined minimum column width, and increasing a width of the matrix display area to accommodate the additional column of matrix cells if the computed width falls below the predefined minimum column width.

In another aspect, the invention relates to a method of modifying a display matrix in a matrix display area in a window on a computer display screen, including the steps of displaying data in a matrix format, thereby forming a display matrix in the matrix display area, the matrix display area having a first dimension, and increasing, responsive to a selection of an increase activator, the number of existing rows of matrix cells in the display matrix by adding an additional row of matrix cells to the display matrix. The method further includes the step of computing, using a central processing unit, a computed height of a row of matrix cells in the existing rows of matrix cells if the row of matrix cells is reduced in height to accommodate the additional row of matrix cells. The method also includes the steps of reducing the height of the row of matrix cells to accommodate the additional row of matrix cells within the first dimension if the computed height does not fall below a predefined minimum row height, and increasing a height of the matrix display area to accommodate the additional row of matrix cells if the computed height falls below the predefined minimum row height.

In yet another aspect, the invention relates to an apparatus for modifying in a discrete, stepwise manner a display matrix comprising of matrix cells arranged in rows and columns in a matrix display area having a first dimension in a window on a computer display screen, including an increase activator means, and means for increasing, responsive to a selection of the increase activator means, the number of existing columns of matrix cells in the display matrix by adding an additional column of matrix cells to the display matrix. The apparatus further includes means for computing a computed width of a column of matrix cells in the existing columns of matrix cells if the column of matrix cells is reduced in width to accommodate the additional column of matrix cells, wherein the width of the column of matrix cells is reduced to accommodate the additional column of matrix cells within the first dimension if the computed width does not fall below a predefined minimum column width, the width of the matrix display area is increased if the computed width falls below the predefined minimum column width. The apparatus also includes a decrease activator means, and means for reducing, responsive to a selection of the decrease activator means, the number of existing columns of matrix cells in the display matrix by removing a column of matrix cells chosen for deletion from the display matrix, wherein the matrix display area retains a dimension it has prior to the reducing step.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows in a simplified format a typical prior art GUI screen;

FIG. 2 shows in a simplified diagram a computer system for implementing the present invention;

FIG. 3A shows in a simplified format an application program which displays information in a matrix format;

FIG. 3B shows in a simplified format the window of FIG. 3A, including an additional column;

FIGS. 3C and 3D show a window that is increased in width to accommodate the addition of an additional column of matrix cells;

FIG. 4 shows an alternate embodiment including a window having activators for both columns and rows;

FIG. 5 shows a window implementing the present invention in a spreadsheet program;

FIG. 6 shows in a simplified flowchart format the steps involved in modifying a display matrix in accordance with one aspect of the present invention;

FIG. 7 shows in greater detail the draw matrix step 604 of FIG. 6;

FIG. 8 shows in greater detail the determine column width step 656 of FIG. 7;

FIG. 9 shows, in one embodiment, an implementation of step 606 of FIG. 6 that is specific to the Apple Macintosh and Power PC computers; and

FIG. 10 shows in a simplified flowchart format the adjust display matrix by discrete values step 608 of FIG. 6.

DESCRIPTION OF THE PREFERRED EMBODIMENT

Physical Embodiment

It should be noted that the invention employs various process steps involving data stored in computer systems. These steps are those requiring physical manipulation of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It is sometimes convenient, principally for reasons of common usage, to refer to these signals as bits, values, elements, variables, windows, matrix, display areas, cells, objects, or the like. It should be remembered, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities.

Further, the manipulations performed are often referred to in terms, such as identifying, selecting, dragging, or dropping. In any of the operations described herein that form part of the present invention, these operations are machine operations. Useful machines for performing the operations of the present invention include general purpose digital computers or other similar devices. In all cases, there should be borne in mind the distinction between the method of operations in operating a computer and the method of computation itself. The present invention relates, in part, to method steps for operating a computer in processing electrical or other physical signals or quantities to generate other desired physical signals or quantities.

The present invention also relates to an apparatus for performing these operations. This apparatus may be specially constructed for the required purposes, or it may be a general purpose computer selectively activated or reconfigured by a computer program stored in the computer. Although a particular computer may be selected for illustration purpose, the processes presented herein are not inherently related to any particular computer or other apparatus. In particular, various general purpose machines may be used with programs written in accordance with the teachings herein, or a more specialized apparatus may be used to perform the required method steps. The required structure for a variety of these machines will appear from the description given below.

Architecture and Operation of the Apparatus and Method

FIG. 2 shows a general purpose computer system for implementing the present inventive method. Referring to FIG. 2, a computer system 100 in accordance with the present invention includes a central processing unit (CPU) 102, read only memory (ROM) 104, random access memory (RAM) 106, expansion RAM 108, input/output (I/O) circuitry 110, display assembly 112, input device 114, and expansion bus 116. Computer system 100 may also optionally include a mass storage unit 118 such as a disk drive unit or nonvolatile memory such as flash memory and a real-time clock 120.

CPU 102 is preferably a commercially available, single chip microprocessor such as one of the Intel X86 or Motorola 680XX family of chips, and is preferably a reduced instruction set computer (RISC) chip such as the PowerPC microprocessor available from Motorola, Inc. CPU 102 is coupled to ROM 104 by a data bus 122, control bus 124, and address bus 126. ROM 104 contains the basic operating system for the computer system 100. CPU 102 is also connected to RAM 106 by busses 122, 124, and 126 to permit the use of RAM 106 as scratch pad memory. Expansion RAM 108 is optionally coupled to RAM 106 for use by CPU 102. CPU 102 is also coupled to the I/O circuitry 110 by data bus 122, control bus 124, and address bus 126 to permit data transfers with peripheral devices.

I/O circuitry 110 typically includes a number of latches, registers and direct memory access (DMA) controllers. The purpose of I/O circuitry 110 is to provide an interface between CPU 102 and such peripheral devices as display assembly 112, input device 114, and mass storage 118.

Display assembly 112 of computer system 100 is an output device. In the case of certain computers, such as the Apple.TM. Newton.TM., display assembly 112 also serves as a part of the input device. When operating as an input device, a position-sensing apparatus disposed on the surface of display assembly 112 works in cooperation with input device 114 to receive data input from the user. Accordingly, it is coupled to I/O circuitry 112 by a data bus 128. When operating as an output device, the display assembly 112 receives data from I/O circuitry 110 via bus 128 and displays that data on a suitable screen. Note that unless display assembly 112 serves an input function, it is not absolutely necessary that data bus 128 be bi-directional.

The screen for display assembly 112 can be a device that uses a cathode-ray tube (CRT), liquid crystal display (LCD), or the like, of the types commercially available from a variety of manufacturers. Input device 114 can be a keyboard, a mouse, a stylus working in cooperation with a position-sensing display, or the like. Alternatively, input device can be an embedded RF digitizer activated by an "active" RF stylus. Therefore, as used herein, the term input device will refer to any mechanism or device for entering data and/or pointing to a particular location on a screen of a computer display. The aforementioned input devices are available from a variety of vendors and are well known in the art.

Some type of mass storage 118 is generally considered desirable. However, mass storage 118 can be eliminated by providing a sufficient amount of RAM 106 and expansion RAM 108 to store user application programs and data. In that case, RAMs 106 and 108 can optionally be provided with a backup battery to prevent the loss of data even when computer system 100 is turned off. However, it is generally desirable to have some type of long term mass storage 118 such as a commercially available hard disk drive, nonvolatile memory such as flash memory, battery backed RAM, PC-data cards, or the like.

In operation, information is inputted into the computer system 100 by typing on a keyboard, manipulating a mouse or trackball, or "writing" on a tablet or on position-sensing screen of display assembly 112. CPU 102 then processes the data under control of an operating system and an application program stored in ROM 104 and/or RAM 16. CPU 102 then typically produces data which is outputted to the display assembly 112 to produce appropriate images on its screen.

Expansion bus 116 is coupled to data bus 122, control bus 124, and address bus 126. Expansion bus 116 provides extra ports to couple devices such as modems, display switches, microphones, speakers, etc. to CPU 102.

FIG. 3A shows in a simplified format an application program which displays information in a matrix format. For illustration purposes and without limiting the scope of the invention disclosed herein, the application program shown in FIG. 3A is arbitrarily chosen to be a personal information manager program, e.g. a type of program that displays, among others, a calendar and appointments thereon. Referring to FIG. 3A, shown is a window 202. Within window 202, there is shown a matrix display area having a width W.sub.1 and a height H.sub.1. Within matrix display area W.sub.1 H.sub.1, there are eight rows 206, 208, 210, 212, 214, 216, 218, and 220. Matrix display area W.sub.1 H.sub.1 also has, as shown in FIG. 3A, six columns, 224, 226, 228, 230, 232, and 234. Rows 206-220 and columns 224-234 form a eight-by-six matrix display area whose dimensions are, as mentioned earlier, W.sub.1 H.sub.1.

In the personal information manager application program shown in FIG. 3A, column 222 serves as a buffer column and is used to display the hours of a day. Row 204 serves as a buffer row and is used for displaying the header information regarding the days of the week. Row 220 is reserved for the user to make notations regarding the tasks to be done in a particular day of interest. At the intersection of each row and column is a matrix cell for entering, displaying, and manipulating information. For example, at the intersection of row 206 and column 224, there is shown a cell designated cell (206, 224) wherein information may be entered regarding the user's appointment at 5:00 PM on Monday, November the 28th.

A buffer column represents a column whose width is not proportionally adjusted responsive to an increase or decrease in the number of rows or columns displayed in the matrix display area. In some applications, buffer columns may advantageously be utilized to show row heading information, e.g. column 222 of FIG. 3A.

FIG. 3A also shows two scroll arrows: a left scroll arrow 236 and a right scroll arrow 238. When left scroll arrow 236 is selected, e.g. by clicking on arrow button 236, the calendar shown in FIG. 3A is scrolled backward to show an earlier calendar period, e.g. from Sunday, November 27 to Friday, December 2nd. When right scroll arrow 238 is selected, e.g. by clicking on arrow button 238, the calendar shown in FIG. 3A scrolls forward, displaying a more future calendar period, e.g. to Sunday December 4th.

There is also shown in FIG. 3A two activators: an increase activator 240 and a decrease activator 250. In the example of FIG. 3A, increase activator 240 is used to add an additional column of matrix cells to the existing matrix. 0n the other hand, decrease activator 250 is used to remove a column of matrix cells from the existing matrix. When a column is added, by selecting increase activator 240, the newly added column of matrix cells is preferably placed to the right of the existing columns. Conversely, when a column of matrix cells is removed from the display matrix, e.g. by selecting decrease activator 250, the right-most column of matrix cells is preferably removed.

FIG. 3B shows in a simplified format window 202 of FIG. 3A, including an additional column 300. Note that the matrix display area of FIG. 3B has the same dimension of the matrix display area of FIG. 3A: W.sub.1 H.sub.1. Also shown in FIG. 3B are seven columns 222, 224(R), 226(R), 228(R), 230(R), 232(R), and 234(R). Column 222 of FIG. 3B has substantially the same width as column 222 of FIG. 3A since column 222 is a buffer column whose width is not proportionally adjusted responsive to an increase or decrease in the number of rows or columns displayed in the matrix display area. In one embodiment, however, column 222 may be used as a flexible storage column, which may flexibly be expanded to close up any gaps between the columns and the boundaries of a window. Gaps between the columns and the boundaries of a window may exist when, for example, the columns do not fit neatly into the space available within the matrix display area. The amount by which a flexible storage column is expanded is kept track of. As will be seen later, when it is time to adjust the matrix again, that amount is taken into account as part of the matrix display area for the purpose of determining the size of the matrix display area. In contrast to column 222, each of columns 224-234 of FIG. 3A are proportionally reduced in width to accommodate additional column 300. For example, column 224 of FIG. 3A is reduced in width, resulting in column 224(R) of FIG. 3B.

FIGS. 3C and 3D show a window 350 that is increased in width to accommodate the addition of an additional column of matrix cells. FIG. 3C shows in a simplified format window 350, including a matrix display area having a dimension of W.sub.2 H.sub.2. Referring to FIG. 3C, there are shown a plurality of columns, including columns 352, 354, 356, 358, 360, 362, and 364 in display window 350. Also shown are increase activator 240 and decrease activator 250 for adding or removing columns of matrix cells in the manner previously discussed. Column 352 is designated a buffer column, i.e. its width does not proportionally change responsive to an increase or decrease in the number of columns in window 350. Each of columns 354-364 has a width W.sub.c that, for the purpose of illustrating the present invention, is at or only slightly larger than a predefined minimum column width W.sub.M. Predefined minimum column width W.sub.M may be predefined by the user or the software. Typically, predefined minimum column width W.sub.M is set to correspond to a predefined minimum critical area. The minimum critical area is a value preset either by the user or by the software, and represents the minimum area of a cell that can be displayed. It is often advantageous to display only the minimum critical areas of the cells instead of the entire cell areas because a user may wish to display a maximum number of cells in a display matrix in certain view modes.

FIG. 3D shows the window 350 of FIG. 3C after increase activator 240 has been selected once to add an additional column to the display matrix in the matrix display area of window 350. A new column 370, representing Sunday December 4, is added to the calendar window shown in FIG. 3D. Column 352 of FIG. 3D has substantially the same width as column 352 of FIG. 3C. However, each of columns 354(R), 356(R), 358(R), 360(R), 362(R), and 364(R) as well as column 370 has a column width W.sub.M, representing the minimum column width value that is preset by the user. In contrast to the situation of FIG. 3B in which the matrix display area retains it original dimension after an additional column is added, the matrix display area of window 350 of FIG. 3D is increased in width, to W.sub.3, in order to accommodate additional column 370. The increase in the width of the matrix display area and consequently of window 350 is necessary because each of columns 354-364 of FIG. 3C cannot be further decreased in width to accommodate an additional column within the original matrix display area dimension W.sub.2 H.sub.2 without falling below the predefined minimum column width W.sub.M.

FIG. 4 shows an alternate embodiment, including a window 390 having activators for both columns and rows. In FIG. 4, shown are column increase activator 400 and column decrease activator 402. Column increase activator 400 is used for increasing the number of columns of matrix cells displayed while column decrease activator 402 is used for removing a column of matrix cells from window 390. Row increase activator 404 is used to add an additional row of matrix cells to the matrix display area of window 390 while row decrease activator 406 is used for removing a row of matrix cells from window 390. There is also shown in FIG. 4 a constant height row 410 used to note the tasks to be performed in each day of the week. When row increase activator 404 is selected, a row is preferably added at the bottom of the matrix display area before row 410. For example, if row 412 was the last row before the selection of row increase activator 404, newly added row 414 would be inserted between row 412 of the matrix display area and row 410. Conversely, if row decrease activator 406 is selected, the steps mentioned previously are reversed, and row 414 is preferably removed from the matrix display area of application program 390. In this case, row 410 simply moves up to close the gap left by removed row 414. Alternatively, the newly added row may simply be added at the bottom of the matrix display area, e.g. immediately below row 410. In this case, when row decrease activator 406 is selected, the bottom-most row is simply removed from the matrix display area of window 390.

In the example of FIG. 4, the user further has the option of specifying both the minimum column width and the minimum row width. When a row is added, e.g. by selecting row increase activator 404, window 390 preferably keeps the same dimension unless by shrinking the height of existing rows to accommodate a new row in the original dimension of the matrix display area, the width of any of the rows shrinks below the predefined minimum row height. In that case, window 390 is preferably enlarged so that each row at least has a height that equals or exceeds the predefined minimum row height.

FIG. 5 shows a window 450 for implementing the present invention in a spreadsheet program. As is well known, spreadsheet programs are popular for performing calculations, making business forecasts, and organizing data. Spreadsheet window 450 includes a plurality of columns 451, 452, 454, 456, 458, 460, 462, and 464. Column 451 is preferably a buffer column for listing the row numbers of spreadsheet 450. Each of columns 452-464 has a minimum width that is predefined by the user or by the data contained in the cell at the intersection of a row and a column.

As is known, columns of a spreadsheet, such as the spreadsheet of FIG. 5, typically have the same width although such is not a requirement. In one embodiment, when it is desirable to keep all columns proportional in width, i.e. having the same width relative to one another, the width of each column is adjusted proportio