Apple Inc. v. Samsung Electronics Co. Ltd. et al

Filing 462

Declaration of DEOK KEUN Matthew Ahn IN SUPPORT OF #461 APPLES OPENING CLAIM CONSTRUCTION BRIEF PURSUANT TO PATENT L.R. 4-5 filed by Apple Inc.(a California corporation). (Attachments: #1 Exhibit A, #2 Exhibit B Part 1, #3 Exhibit B Part 2, #4 Exhibit C Part 1, #5 Exhibit C Part 2, #6 Exhibit D Part 1, #7 Exhibit D Part 2, #8 Exhibit D Part 3, #9 Exhibit D Part 4, #10 Exhibit E Part 1, #11 Exhibit E Part 2, #12 Exhibit F, #13 Exhibit G, #14 Exhibit H, #15 Exhibit I, #16 Exhibit J, #17 Exhibit K, #18 Exhibit L, #19 Exhibit M Part 1, #20 Exhibit M Part 2, #21 Exhibit N, #22 Exhibit O, #23 Exhibit P, #24 Exhibit Q)(Jacobs, Michael) (Filed on 12/8/2011) Modified on 12/9/2011 linking entry to document #461 (dhm, COURT STAFF).

Download PDF
Exhibit A D STATES DEPAR· =·-NT OF CO «--CE United States Patent and Trademark Office April 26, 2011 THIS IS TO CER·•m v TRT a-EXED HERETO IS A TRUE COPY FROM THE RECORDS OF THIS OFFICE OF: U.S. PA· - ·: 6,493,002 ISSUE DATE: December 10, 2002 By Authority of the Under Secretary of Commerce for Intellectual Property and Director of the United States P and Trademark Of11ce P. SWA Certifying Officer APLNDC00022406 CO-, r· - SY-· - III Illlllllllllllllllllllllllllllllllllllllllllllllllllllllll umuuoe93002B1 (12) United States Patent (10) Patent No.: Christensen US 6,493,002 B1 (45) Date of Patent: (54) -· -OD AND APPARATUS FOR DISPLAYING AND ACCESSING CONTROL AND STATUS INFO--·ON IN A 5,202,961 5,416,895 5,428,730 5,588,105 5,617,526 (75) Inventor: Steven W. Christensen, Milpitas, CA (US) 5,640,498 A * 6/1997 Chew ......................... 345/790 (73) Assignee: Apple Computer, Inc., Cupertino, CA (US) 5,678,034 A * 10/1997 Chewet......................... 345/520 5,757,371 A * 5/1998 Oran al. 345/779 (*) Notice: This patent issued on a continued prosecution application filed under 37 CFR 1.53(d), and is subject to the twenty year patent term provisions of 35 U.S.C. 154(a)(2). Subject to any disclaimer, the term of this patent is extended or adjusted under 35 U.S.C. 154(b) by 0 days. (21) Appl. No.: 08/821,004 (22) Filed: Mar. 20, 1997 Related U.S. Application Data (63) Continuation of application No. 08/316,237, filed on Sep. 30, 1994, now abandoned. (51) Int. Cl.' .................................................. GO6F 3/00 (52) U.S. CI. ................... 345/779; 345/772 (58) Field of Seanh ................................. 340, 341, 350, 395/352, 354, 326, 339, 395/345, 973, 974; 345/348, 350, 352, 354, 326, 339, 340, 341, 973, 974, 700, 764, 771-772, 776-779, 781, 784, 788, 791, 798-800, 833, 856 A A A A A * 4/1993 5/1995 * 6/1995 * 12/1996 * 4/1997 *Dec. 10, 2002 Mills et al. .. ... Anderson et al. ........... Baker et al. Foster et al. ................ Oran et al. 345/720 707/503 345/740 345/779 345/779 5,644,334 A * 8/1997 Jones et et al.................. 345/419 7/1997 Hansen al. 5,659,693 A * 345f179 5,825,357 A * 10/1998 Malamud et al. ........... 345/779 6,133,898 A 10/2000 Ludolph et al. ............ 345/790 FOREIGN Fa - DOs amo o EP EP EP EP O 483 777 483777 O 584 391 584392 A2 A A1 A -·-- 10/1991 5/1992 8/1992 3/1994 - CATIONS EPO 0 584 392 A1, Cohausz, English Translation of the German patent document, Mar. 1992.* "PCT Written Opinion", Oct. 4, 1996. Steven Harris, et al.: "Inside R.JPerfect 6 for Windows", 1994, USA, pp. 1104-1108. Mark A. Benge, Matt Smith: "Designing Custom Controls", Spring 1993, USA, pp. 72-85. International Search Report, PCT/US 95/11025, Jan. 03, 1996. * cited by e Primary Examiner-Crescelle N. dela Torre (74) Attorney, Agent, orFirmdlakely, Sokoloff, Taylor & Zafman LLP (57) ART ACT References Cited An interactive computer-controlled display system having a processor, a data display screen, a cursor control device for interactively positioning a cursor on the data display screen, and a window generator that generates and displays a U.S. PATENT DO · -s'· window on a data display screen. The window region A A A A provides status and control information in one or more data display areas. The individiual data display areas may be controlled through the use of controls and indicators on the control strip itself using cursor control keys. (56) 4,862,389 4,885,704 4,896,291 4,931,957 * * * * 8/1989 12/ 989 1/ 990 6/ 990 Takagi 345/794 Takagi et al. ............... 345/166 Gest et al. 345/841 Takagi et al. 345/453 5,091,866 A * 2) 992 Takagi et al. ............... 345/803 5,146,556 A 9/1992 Hullot ........................ 345/790 50 Claims, 13 Drawing Sheets UK EDir MEW MEEL S_E_Cig U31 200 APLNDC00022407 POWER . TO OTHER SUPPLY152 FIG I ---.i SWITCH STO 150 GE107 MODEM LAN 109 121 DECODER 154 ¿y HOT INDICATION / PROCESSOR SPOWERL 182 103 DD t' I/O BUS 101 HARD COPY DEVICE 124 DISPLAY v DD ' SIGNAL 183 181 108 • 153 TIMER CLK ·¯¯¯*, °œ COMPONENTS -- RS CEOR/ UNIT 140 N/ SOUND M I/O CHIP 125 CONTROi i m / FLOPPY DISK M 130 DRIVE 126 - LOCAL BJS 100 184 - TO CLOCK GENERATOR 160 MICRO 5 CONTRO· · 127 KEYBOARD 122 ' SEEMN ' CURSOR CONTROL 123 R 27A CLK M ORY N / NONVOLATILE MEMORY 106 FROM I/O INTERFACE ^CLOõK 160 140 GENERATOR e $ $ APLNDC00022408 d FILE EDIT VIEW .ABEL orrCIAL EXTENSIONS NAME SIZE APPUCATIONS 10 ITEMS APPLELIN CD innaari 12.6 MB IN DISK ERBOOK EDITION M^CTERMINAL uuvarrLAYER WiiMN BHARE PRINTMONITOR outcKnMElu *** TOOL TEXT TOOL TTY TOOL "" 313.6 MB AVAllABLE MODEM REMOTE ACCESS CUENT FOLDER R--•-• TOOLS SIMPLE TEXT WORD 83K 66K šÍÛ ¯¯ 831K 21TEMS Sfi 12.6 MB IN DISK 313.6 MB At 33K 28K 61K - - I l FIG. 2A o 2°° APLNDC00022409 U.S. Patent 200 Dec. 10, 2002 Sheet 3 of 13 US 6,493,002 B1 MODULE DISPLAY AREA 202 CLOSE BOX DRAG/SIZE TAB LEFT SCROLL ARROW 204 RIGHT SCROLL ARROW 205 FIG. 2B H DE BATTERY · H DE BATTERY CONSU H DE TIME REMAINING TIÓN R 0000alalll0 W ' 000 ( FIG. 2C BAi it.ru MONITOR THE POWER ADAPTER IS CONNECTED AND RECHARGING OF THE BAi imlES. FIG. 2D Conv nravidad hv - --- -- - from the PIRE imann nainhana nn ORI9RI9n14 APLNDC00022410 U.S. Patent Dec. 10, 2002 CL> 0_ 00000\ 0000 Sheet 4 of 13 US 6,493,002 B1 0000 0 000ll llllll -¤- 0000 l III 0 lllllllllll FIG. 2E APLNDC00022411 + U.S. Patent 2 Dec. 10, 2002 Sheet 5 of 13 US 6,493,002 B1 210 0 00000100000 W> 212 FIG. 2F CONTROL STRIP SHOW CONTROL STRIP O HIDE CONTROL STRIP FIG. 3 APLNDC00022412 U.S. Patent Dec. 10, 2002 Sheet 6 of 13 US 6,493,002 B1 MAIN LOOP (CALLED BY OPERATING avasc.M) FIG. 4 SAVE PREVIOUS CO-=•·=•, SETUP STRIP'S CONTEXT 401 SECONDARY INITIALIZATION COMPL - NO , I RUN SECONDARY INITIAUZATION 402 403 YES • \ 404 DETERMINE THE USER EVENT TYPE NULL EVENT (IDLE)? YES 405 RUN IDLE TASKS 406 NO MOUSE CLICKT YES 407 = PROCESS MOUSE CLICK ' 408 NO RESTORE PREVIOUS CONTEXT , 409 EXIT APLNDC00022413 U.S. Patent Dec.10, 2002 Sheet 7 of 13 US 6,493,002 B1 CONTROL STRIP MAIN LOOP /RUN SECONDARY INITALIZATION SECONDARY INITIALIZATION 403 HAS THE FINDER STmmD UP? YS NO501 CREATE THE STRIP'S 3 WINDOW 502 SUCCESSFUL? NO YS 503 INITIALIZE STRIPS FONT, COLOR 3 504 lOPEN,lNITIALIZE = = -NALy \ MODULES 505 SET STRIP'S DEFAULT SCREEN LOCATION,SIZE A LOAD USER CONFIGURATION DRAW THE STRIPS CONTENTS 506 507 p 508 EXIT ) * FIG. 5 APLNDC00022414 U.S. Patent Dec. 10, 2002 Sheet 8 of 13 US 6,493,002 B1 CON¯RO. S¯R,P MA.N .OOP /OPEN. IN LA-ZE EX¯ERNAMODULES OPEN, INITIALIZE EXTERNAL MODULES MORE MODULE Fl· -YS 505 NO 601 OPEN MODULE FILE 602 LOAD MODULE CODE INTO MEMORY CALL MODULE TO INITIALIZE ITSELF CALL MODULE TO GET MODULE 'S FEATURES CALL MODULE TO GET ITS DISPLAY WIDTH I CLOSE MODULE FILE LEXIT )* 603 604 605 606 607 ' FIG. 6 APLNDC00022415 U.S. Patent Dec.10, 2002 Sheet 9 of 13 US 6,493,002 B1 CONTROL STRIP MAIN LOOP /DRAW THE STRIP'S CONTENTS ( DRAW THE STRIP'S \ CONTENTS IS THE STRIP VISIBLE? S a a po 701 ORE MODULE NO TO DRAW9 S ' 702 THIS MODULE NEED TO BE REDRAWN? --N 703 YS IS 704 THIS MODULE A BUTTON? YES DRAW BUTTON BACKGROUND GRAGHICS NO- DRAW STATUS-ONLY BACKGROUND GRAGHICS 705 706 CALL MODULE TO 707 ( EXIT ) FIG. 7 GoDV Drovided bv USPTO from the PIRS Imaae Database on 04/25/2011 APLNDC00022416 809 U.S. Patent NO 810 Dec. 10, 2002 811 Sheet 10 of 13 RUN IDLE TASKS) US 6,493,002 B1 CONTROL STRIP MAIN LOOP /RUN IDLE TASKS 801 WINDOW UPDATE YES PENCINGT DRAW THE STRIP'S CONTENTS 802 AO HAS STRIP'S CONFIGURATION CHANGED? YES 803 SA 00pÿ NO YE CO FISG RA ON 804 805 NO CALL CURRENT IDLE MODULE TO y RUN ITS IDLE TASK 806 l \ POST-PROLeaa THE IDLE TASK ./ 'NSO7 UPDATE ID OF NEXT MODULE TO IDLE ¾808 DOES MODU NEED TO SAVE YE SETTINGS? S IT SAFE T YE SAVE NOW7 SAVE MODULE' SETTINGS TO DISK UPDATE STRIP'S HELP MESSAGES NB12 ( EXIT ) FlG. 8 APLNDC00022417 I U.S. Patent * Dec. 10, 2002 Sheet 11 of 13 US 6,493,002 B1 COixinuL STRIP MAIN I OOP /PROCESS MOUSE CUCK PROCESS MOUSE CUCK MOUSE CUCK INSIDE STRIP? 901 DETERMINE WHICH MODULE WAS CLICKED ON 902 MOVE OPERATION? NO YES MOVE MODULE'S DISPLAY, OR MOVE ENTlRE SURIP 903 "i 904 CUCKABLE MODULE? NO a NO > 905 YS TRACK THE MOUSE CUCK 06 MOUSE STILL IN MODULES BOUNDS? 907 YS CALL THE MODULE TO PROCESS THE CUCK 908 POST PROCESS THE CUCK FIG. 9 909 A(EXIT ) Conv nrnvidad hv ilRPTf3 from ihn DIRR Imana ¯ nn O&IOKIOndi APLNDC00022418 U.S. Patent Dec. 10, 2002 Sheet 12 of 13 US 6,493,002 B1 CONTROL STRIP MAIN LOOP /POST PROCESS THE CLICK MODULE POST PROCESSING 9 MODULE WANTS TO UPDATE SETTINGS? 1001 YES FLAG THAT THIS MODULE HAS A SAVE PENDING 1002 i NO MODUL NEREED ETO YES _ DISPLAY? CALL MODULE TO UPDATE ITS WIDTH - 1003 1004 e NO MODULE WANTS TO BE CLOSED? YES CLOSE THE MODULE 1005 1006 NO REC OESEOR YES _ REPOSITION AND REDRAW MODULE DISPLAYS , 1007 1008 N e MODULE HELP STATE CHANGET YES ¯ INVALIDATE OLD HELP STATE 1009 10 NO FlG. 10 Copy provided by USPTO from the PIRS Image Database on 04/25/2011 APLNDC00022419 145tgedolSydoacao8 r/ 146 o ydoacaog yeladolSydoacaos 4 geldoigdoacaog I I APLNDC00022420 US 6,493,002 B1 1 2 METHOD AND APP-·· - - S FOR DISPIAYING AND ACCESSING CONTROL AND STATUS INFORMATION IN A CO-, = · - SYewu The present invention overcomes these problems by pro- viding a status and control information display. The display of the present invention is in an easily accessible format. Also, the display may be configured to p-...-ntly display s in a visible ....-- control and status indicia. This is a continuation of application Ser. No. 08/316,237, fded Sep. 30, 1994, now abandoned. SUMMARY OF THE INVENTION An interactive computer-controlled display system is described. In the present invention, the display system The present invention relates to the field of computer 10 includes a processor, a data display screen, and a cursor systems; particularly, the present invention relates to discontrol device for interactively positioning a cursor on the playing a status and control function bar or window to data display screen. The present invention also includes a enable access of user selected indicia to a computer system window generator that generates and displays a window user. (e.g., a control strip) on a data display screen. In one 15 embodiment, the window comprises a control and/or status BACKGROUND OF THE mv" "ON window for display on the desktop of the computer system The window displays graphics depicting at least one display Typically, a computer system contains a processor, a bus, area of indicia. The individual data areas may be controlled and other peripheral devices. The processor is responsible through the use of controls and indicators in the window for executing instructions using the data in the computer itself using cursor control keys. system. The bus is used by the p..,..-- and the peripheral devices for transferring information between one another. -- DESCRIPTION OF THE DRAWINGS a=M···OFTHE -==··ON The information on the bus usually includes data, address and control signals. The peripheral devices comprise storage devices, input/output (I/O) devices, etc. Computer systems also include information management systems that coordinate the display of information to the user. Currently, the art in computer display management provides the capability of displaying data in rectangular portions (commonly referred to as windows) of a display screen. Such information management systems include the Finder" interface of the computer systems manufactured by Apple Computer, Inc. of Cupertino, Calif. Controls are typically provided to resize and move windows within the confines of the physical display boundaries. Windows may be used to display information regarding application programs, as well as information produced by system programs, that are run on the computer system. Many of these system and control programs provide status and control information and functionality. Some of the system control programs also provide options with respect to the information they provide and the functions they perform. These options can be accessed and/or selected by moving a cursor at a predetermined point in the window and "clicking" a mouse or performing requisite key strokes. Access to these programs may require locating the program (e.g., locating and entering a folder) before execution. The time necessary to access such programs may be unduly long. It is desirable to provide a less obtrusive -- of accessing such system and control programs. The computer system is often capable of displaying multiple windows or data areas on the display screen at the same time. Windows may overlap each other. The information contained in the portion of the window that is overlapped is not visible. The window that is entirely visible to the computer user is typically the active window. Therefore, a program, such as a system or control program may be running, while another program displaying information in another window is selected as active and thereafter covers, partially or completely, the windows or data areas displayed by the system/control program. Sometimes the user may wish to have an unobstructed view of the system/control data area, regardless of the window selected as active (even when the windows overlap each other). Thus, it is desirable at times to have windows that are always visible to the user. However, it is also desirable to be able to eliminate that window at times based on the user's requirements. The present invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which: FIG. 1 is a block diagram of one embodiment of the computer system of the present invention. 3e FIG. 2A displays a computer desktop illustrating the control strip of the present invention as well as opened windows. FIG. 2B illustrates one embodiment of the control strip of 2, 40 45 so ss 6o the present invention. FIG. 2C illustrates a pop-up menu displayed from the control strip of the present invention. FIG. 2D illustrates a help balloon displayed from the control strip of the present invention. FIG. 2E illustrates the process of moving a display area from one position to another in the control strip. FIG. 2F shows the control strip window graphics generated by processing logic being combined with graphics generated by a module to illustrate the creation of the resulting control strip. FIG. 3 illustrates one embodiment of the control panel of the present invention. FIG. 4 is a flow chart of one embodiment of the process for the control strip of the present invention. FIG.5 is a flow chart of one embodiment of the secondary initialization process of the present invention. FIG. 6 is a flow chart of one embodiment of the open and initialization process for the external modules of the present invention. FIG. 7 is a flow chart of one embodiment of the process for drawing the contents of the control strip of the present invention. FIG. 8 is a flow chart of one embodiment of the process for running idle tasks in the sent invention. FIG. 9 is a flow chart of one embodiment of the process for responding to a mouse click occurring in the control strip of the present invention. FIG. 10 is a flow chart of one embodiment of the process 65 for post processing a mouse click in the present invention. FIG.11illustrates a bar graph for display in a data display area in the control strip of the present invention. Copy provided by USPTO from the PIRS Image Database on 04/25/2011 APLNDC00022421 US 6,493,002 B1 3 4 FIG. 12 illustrates a bar graph that results after using arrow direction icons. programs in accordance with the teachings herein, or it may DE•-••-••DES•-•-•·ONOF THE ON prove convenient to construct more specialized apparatus to perform the required method steps. The required structure for a variety of these machines will appear from the descrip- s tion below. In addition, the present invention is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the invention as described herein. 10 OVERVIEW OF THE COmru ou svs - OF THE ----· INVENTION A method and apparatus for providing status and control indicia. In the following detailed description of the present invention numerous specific details are set forth, such as types of status indicia, instruction names, etc., in order to provide a thorough understanding of the present invention. However, it will be apparent to one skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known structures and Referring to FIG. 1, an overview of a computer system of devices are shown in black diagram form, rather than in the present invention is shown in block diagram form. The detail, in order to avoid obscuring the preset invention. 15 present invention may be implemented on a general purpose microcomputer, such as one of the members of the Apple The present description includes material protected by family of personal computers, one of the members of the copyrights, such as illustrations of graphical user interface IBM personal computer family, or one of several other images which the assignee of the present invention owns. computing and assistant devices which are presently comThe assignee hereby reserves its rights, including copyright, mercially available. Of course, the present invention may in these materials, and each such material should be also be implemented on a multi-user system while --regarded as bearing the following notice: Copyright Apple tering all of the costs, speed, and function advantages and Computer, Inc., 1993. The copyright owner has no objection disadvantages available with these machines. The preferred to the facsimile reproduction by anyone of the patent docuembodiment of the present invention is implemented on an ment or the patent disclosure, as it appears in the Patent and Apple PowerBook= computer system developed by the Trademark Office file or records, but otherwise reserves all assignee of the present invention. copyrights whatsoever. As illustrated in FIG. 1, the computer system of the Some portions of the detailed descriptions which follow present invention generally comprises a local bus or other are presented in terms of algorithms and symbolic representations of operations on data bits within a computer ge communication means 100 for communicating information, a processor 103 coupled with local bus 100 for processing memory. These algorithmic descriptions and representations information, a random access memory (RAM) or other are the means used by those skilled in the data processing dynamic storage device 104 (commonly referred to as a arts to most effectively convey the substance of their work main memory) coupled with local bus 100 for storing to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of steps as information and instructions for processor 103, and a readonly memory (ROM) or other non-volatile storage device leading to a desired result. The steps are those requiring 106 coupled with local bus 100 for storing non-volatile physical manipulations of physical quantities. Usually, information and instructions for processor 103. though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, The computer system of the present invention also transferred, combined, compared, and otherwise manipu- e includes an input/output (I/O) bus or other co--A-tion lated. It has proven convenient at times, principally for means 101 for w--a .tion information in the computer reasons of w-men usage, to refer to these signals as bits, system. A data storage device 107, such as a magnetic tape values, elements, symbols, characters, terms, numbers, or and disk drive, including its associated controller circuitry, the like. is coupled to I/O bus 101 for storing information and It should be bome in mind, however, that all of these and 45 instructions. A display device 121, such as a cathode ray tube, liquid crystal display, etc., including its associated similar terms are to be associated with the appropriate controller circuitry, is also coupled to I/O bus 101 for physical quantities and are merely convenient labels applied displaying information to the computer user, as well as a to these quantities. Unless specifically stated otherwise as hard copy device 124, such as a plotter or printer, including apparent from the following discussions, it is appreciated that throughout the present invention, discussions utilizing so its sssociated controller circuitry for providing a visual representation of the computer images. Hard copy device terms such as "processing" or "computing" or "calculating" 124 is coupled with processor 103, main memory 104, or "determining" or "displaying" or the like, refer to the non-volatile memory 106 and mass storage device 107 action and processes of a computer system, or similar through I/O bus 101 and bus translator/interface unit 140. A electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities 55 modem 108 and an ethernet local area network 109 are also coupled to I/O bus 101. within the computer system's registers and - - .. into other data similarly represented as physical quantities within Bus interface unit 140 is coupled to local bus 100 and I/O the computer system memories or registers or other such bus 101 and acts as a gateway between p 103 and information storage, tr-Lin or display devices. the I/O subsystem. Bus interface unit 140 may also provide The present invention also relates to apparatus for per- so translation between signals being sent from units on one of the bases to units on the other bus to allow local bus 100 and forming the operations herein. This apparatus may be speI/O bus 101 to co-operate as a single bus. cially constructed for the required purposes, or it may An I/O controller 130 is coupled to I/O bus 101 and comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the com- controls access to certain 1/O peripherals in the computer puter. The algorithms and displays presented herein are not 65 system. For instance, I/O controller 130 is coupled to inherently related to any particular computer or other appacontroller device 127 that controls access to an alpharatus. Various general purpose machines may be used with numeric input device 122 including alpha-numeric and other nas nreaarielmed Eras EEE DIDO ismassa ¯ nn AdiflElf2nd4 APLNDC00022422 US 6,493,002 B1 5 6 keys, etc., for co-- J.ating information and command selections to processor 103, a cursor control 123, such as a trackball, stylus, mouse, or trackpad, etc., for controlling cursor ..........nt, and a temperature sensor 127A for measuring the internal system temperature. The system also includes a sound chip 125 coupled to I/O controller 130 for providing audio recording and play back. Sound chip 125 may include a sound circuit and its driver which are used to generate various audio signals from the computer system. I/O controller 130 may also provide access to a iloppy disk and driver 126. The processor 103 controls I/O controller 130 with its peripherals by sending commands to I/O controller 130 via local bus 100, interface unit 140 and I/O bus 101. Batteries or other power supply 152 may also be included to provide power necessary to run the various peripherals and integrated circuits in the computer system. Power supply 152 is typically a DC power source that provides a constant DC power to . _1_ units, particularly processor 103. Various units such as p---r 103, display 121, etc., also receive clocking signals to synchronize operations within the computer systems. These clocking signals may be provided by a global clock generator or multiple clock generators, each dedicated to a portion of the computer system. Such a clock generator is shown as clock generator 160. In one embodiment, clock generator 160 comprise a phase-locked loop (PLL) that provides clocking signals to processor 103. In one embodiment, p.--, 103 is a member of the 68000 family of processors, such as the 68040 processor manufactured by Motorola Corporation of Schaumberg, Ill. The memory in the computer system is initialized to store the display areas is individually and variably sized. The size of the control strip itself may also be variably sized. In one embodiment, the size may be adjusted such that none, all, or only a portion of the display areas within its boundaries are visible. The size of the control strip may also be varied such that only a portion of one display area is visible in the control strip. FIG. 2A displays a computer desktop illustrating the control strip of the present invention as well as opened windows. FIG.2B illustrates one embodiment of the control strip of the present invention. Each of the variably sized data areas may be sensitive to user input for control. That is, a user may interact with the individually display data areas. Different parts of the control strip either display information or act as buttons, or both. Note that buttons may display information on their surface. When the user clicks a button, it is highlighted. In one embodiment, buttons may also display additional elements such as pop-up menus (shown in FIG. 2C) or help messages (e.g., balloons shown in FIG.2D). Thus, in one embodiment, control of the individual data areas is accomplished, in part, through the use of small button controls and indicators in the form of various icons. Each of the display areas is associated with a programming module. Each of the modules provides a specific status or control function. In one embodiment, the module is represented by a disk file containing the code necessary for the module to interact with the control strip as well as other elements such as text, icons, pictures, etc. Modules may be the operating system as well as other programs, such as file s 10 15 20 25 designed to be responsive to selection from cursors via a mouse, trackpad, or cursor control keys, such as on a keyboard. Many of the modules are able to provide control to ..J- system functionality, and may provide menus to do the same. directory routines, control programs, system programs and The control strip is a control panel that provides the application programs, and data inputted from I/O controller operating --L--nt for control strip modules. In one 130. The operating system running on processor 103 takes embodiment, the control strip runs on any Macintosh" care of basic tasks such as starting the system, handling computer using a System 7.0 or later operating system. The interrupts, moving data to and from memory 104 and control strip of the present invention may be designed to run peripheral devices via input/output interface unit 140, and on computer systems using other operating systems. managing the memory space in memory 104. In one In one embodiment, the control strip is implemented in a embodiment, the operating system is stored in ROM 106, private window layer that appears in front of the windows of while RAM 104 is utilized as the internal memory for the all the application layers. That is, the control strip window computer system for --ng data and application proappears on top of all application progr.-- og windows that grams. 45 may be generated as part of the execution of an application Processor 103 accesses memory in the computer system program. This prevents other windows from obscuring it. In via an address bus within bus 100. Commands in connection one embodiment, processing logic in the computer system with the operation of memory in the computer system are may maintain a list of windows ordered from the frontmost also sent from the p---r to the memory using bus 100. window on the screen being at the top of the list and the Bus 100 also includes a bi-directional data bus to commubottommost window being at the bottom of the list. Pronicate data in response to the com'mands provided by cessing logic can maintain the control strip window at the processor 103 under the control of the operating system top of the list. running on it. The control strip of the present invention may include Of course, certain implementations and uses of the windowing configurations that are shown as being horizonpresent invention may neither require nor include all of the 55 tal or vertical on the -.-.. Furthermore, the present above components. For example, in certain implementations invention is not limited to a single row or column of status a keyboard or cursor control device for inputting informaand control data areas. In other words, multiple rows and tion to the system may not be required. Furthermore, the computer system may include additional processing units. columns of module data areas may be included in the window of the control strip. OVERVIEW OF THE -- == · · = --··ON The present invention provides a control and/or status CONTROL STRIP -= ON window for display on the desktop of the computer system. The control and status window will be referred to herein as The control strip, such as shown in FIG. 2B, may also be moved to dift'erent portions of the display screen. However, in one embodiment, the window for the control strip may be the control strip. The control strip of the present invention is 65 moved to any location on the display as long as the right a window of graphics depicting one or more display areas and/or left edge of the strip is attached to the right or left for control and/or status indicia. In one embodiment, each of edge, respectively, of the display. The user may also hold APLNDC00022423 US 6,493,002 B1 7 down the option key and drag the tab 203 of the control strip 8 The control strip may also include a battery monitor that 200 with the use of a cursor control device (e.g., trackpad, displays the status of the battery or batteries. In one trackball, mouse) to move the control strip to a new position embodiment, the battery monitor displays the current power on the display. drain in a manner similar to a car's miles per gallon (MPG) In one embodiment, the user may adjust the size of the s indicator. The needle for the power drain indicator indicates control strip window. Adjustments to the size of the window the drain relative to the maximum possible. The control strip may comprise either an increase in the height of the window, of the present invention allows this display to be updated the width of the window, or both. In one embodiment, only frequently so if the user increased the LCD display screen's the width of the control strip window may ahered. The brightness level, the needle would animate to denote the definition and use of windows is well-known in the art. In 10 consequence of the action. one embodiment, the control strip 200 has a tab 203 on its Another control strip module displays the state of File unattached end. The user can drag tab 203 to adjust the Sharing (e.g., on, oif, or users connected) that may be length of the strip. By "clicking" on tab 203, i.e. selection currently employed on the computer system. The file sharing through the use of the trackpad, mouse, cursor control keys, module also lets the user turn file sharing on or off and lets etc., the user is able to shift from a minimal control strip size 15 the user open a control panel to control processing to setup to a um control strip size, and vice versa. In its file sharing on the computer system. minimal size, the graphics of the modules in the control strip The control strip of the present invention may also are not visible and only the tab is showing. In its miprovide a module to allow the internal hard disk power to be size, all of the modules in the control strip are showing. turned off (to save power), and to indicate whether is Recognizing cursor controlled selections through the use of 2o currently on or off. trackpad, trackball, mouse, cursor control keys, etc., as well The control strip may also provide power settings that as the tracking of movements of the cursor made by the same allow the user to select between -- Lum battery conserare well-known in the art. vation or m computer performance without opening Scroll arrows, such as left scroll arrow 204 and right scroll a control panel. In one embodiment, the power settings arrow 205, are provided on the control strip that enable the 25 portion of the control strip also allow the user to open up the window of the control strip to be scrolled to the left or right, power savings control paneL The control strip of the present respectively. Use of scroll arrows with windows is wellinvention may also include a function that places the comknown in the art. puter in sleep mode or allows the user to select the sound The user may also hide the control strip. In one volume. embodiment, to make the control strip disappear completely, 30 Other modules, for example, may provide time and/or the user can click the Hide button in the control strip control date information, may list currently running programming panel, as described later in conjunction with FIG. 3. A close applications, may indicate the amount of available memory, box 201 is also included in control strip 200 In one may control a CD drive, may provide access to audio embodiment, by holding the option key and clicking a display area, the user can drag the display area to another 35 controls and status information. Therefore, the control strip acts as a status and control function bar, or windowing area, position in the control strip. An example of the process of that provides running modules to be displayed in an arrangemoving one display area to another position on the control ment that is to be displayed, such an arrangement being strip is shown in FIG. 2E. Referring to FIG. 2E, the user modifiable such that the size of the window or bar may be selects one of the display areas by, for instance, positioning changed. the cursor over the display area. When the user "clicks" the 40 In one embodiment, the control strip is controllable display area, its border becomes highlighted. While clicking, through a control panel. An exemplary display of such the display area is dragged to another location in the control control panel is shown in FIG. 3. Use of control panels is strip module display area. When the user has moved the well-known in the art. Using the control panel in FIG. 3, the display area to the location of his choice, the user stops "clicking" The control strip display areas are then rear- 45 user is able to hide or show the control strip by clicking the corresponding button in the control panel. Note that in one ranged. embodiment, the control panel may also be used to change After the user rearranges the parts of the control strip, the the font and size of the text in the control strip window. new arrangement is saved. The saving operation may be deferred until .---, such as the hard disk is ready (e.g., PR - --G LOGIC FOR THE ---· spinning) or until just before the computer system is shut 50 INVENTION down or restarted. In other words, in computer systems in The present invention includes computer processing logic which the hard disk is not turned on all the time in order to for generating the control strip of the present invention. 'Ibis save power, the saving operation may be deferred until the processing logic is described, in part, in the flow charts hard disk has been turned on by another. ss shown in FIGS. 4-10. In addition to the computer resources ex --PLARY CONTROIJSTATUS described earlier, the present invention relies upon the INFOM-= ON availability of an operating system and system functions The control strip of the present invention provides a capable of displaying windows, information in windows, standard screen location for a collection of individual modcharacters, and cursor symbols on the display devices. ules that provide status and control functions. In one 60 System functions for interfacing with the cursor control embodiment, the control strip functions include a network devices and cursor function keys, including the tracking of switch that shows whether a network connection for the cursor location within a window, are also required. These computer system, such as an AppleTalk" network connection, is on or off and lets the user turn the network are standard processing components known in the art. ......tion on or off without having to locate and execute 65 When the processor of the present invention is first other network connection software on the computer system powered up, the operating system logic obtains control and (e.g., without having to open the Chooser=). initializes the system components such as read/write APLNDC00022424 US 6,493,002 B1 9 memory, the display device, the cursor control device, the 10 At processing block 407, a test determines if there has cursor function keys, and keyboard. During this initialization process or in response to a user command, the operating system displays the control strip of the present invention. been a "click" of the mouse within the area defined by the control strip. If there has been a click of the mouse within the control strip, the mouse click is processed (processing In one embodiment, the control strip initialization is 5 block 408), and processing continues at processing block 409. The mouse click processing dete....L- the location of performed in two stages. The first stage begins by initially the mouse click, which module in the controls strip was loading at least one routine at start up. Upon loading selected, or "clicked-on", if any, and any action to be taken necessary routines, the operating system allocates storage based on that location. One embodiment of the mouse click for global variables use. Next, resources are loaded for use by the control strip p-- .g logic. These resources 10 processing is described in FIG. 9. If a mouse click has not occurred within the control strip, processing continues include the visual components or indicia that is to appear in directly to processing block 409. the control strip, such as pictures, icons, text, etc. The processing logic for the control strip is patched into the At processing block 409, the previous context is restored operating system. and the processing logic exits to return control to the Later, as a second stage of the initialization during the set 15 operating system. up process, the control strip processing logic causes each of One embodiment of the secondary initialization process the module files to be opened one at a time. The code for the called by the control strip main processing logic is described module is loaded. An initialization routine is run in response in a flowchart in FIG. 5. Referring to FIG. 5, the secondary to a call, during which time, the module itself determines if initialization process begins by testing whether the FinderTM it can run. This information is conveyed to the control strip. has started up (processing block 501). If the FinderTM has not The processing logic then causes the window to be displayed started up, the secondary initialization process ends. and calls the modules to run themselves and appear in the , control strip. FIG. 2F shows the control strip window graphics generated by processing logic being combined with graphics generated by a module to illustrate the creation of the resulting control strip. FIG. 4 is a flowchart of the processing logic responsible for generating the control strip of the present invention and processing events that occur involving the control strip. In one embodiment, the control strip main processing is called by the operating system. Referring to FIG. 4, the processing begins by saving the previous context and sets up the context of the control strip (p g block 401). The previous context refers to the state of the computer system prior to performing control strip processing. 'Hie previous context may correspond to an application program running immediately prior to the control strip processing being called. The context may include settings up its memory space, providing access to its global variables, etc. Next, a test determines if the secondary initialization has been done (processing block 402). If the secondary initialization has not been done, processing continues at process- However, if the Finder " has started up, the window of the ing block 403 where a secondary initialization process is control strip is created (processing block 502). Then a test dete whether the creation of the window of the control strip was successful (processing block 503). If the creation of the window of the control strip was not successful, the process ends. The creation of the window may not be successful because, for instance, there is not enough memory, missing system resources, etc. On the other hand, if the creation of the window of the control strip was successful, the font and color of the control strip are initialized (processing block 504). Then external modules are opened and initialized (processing block 505), the default screen location and size of the control strip are set (processing block 506), the user configuration is loaded (processing block 507), and the contents of the control strip are drawn (processing block 508). The user configuration may include screen location for the control strip, the saved display order of the modules, the window size of the control strip, etc. Then the secondary initialization process ends. The default screen location and size of the control strip are stored in memory and A In one embodiment, these values may be changed by the computer user, such as by run, and processing thereafter continues at processing block 45 interacting with the control strip itself. In another 409. The secondary initialization process causes the proembodiment, the default values are determined and permacessing logic to initialize the control strip. One embodiment nently set by a system designer. Note that specification of the of the secondary initialization process is described in FIG. 5. font, color, default screen location and size may not be On the other hand, if the window of the control strip is required in lieu of the user configuration. Likewise, by using allocated, processing continues at processing block 404 so solely the default settings, the user configuration is not where the processing logic awaits a user event and deterrequired. mines the type of such an event. One embodiment of the process for opening and initial'Ilien a test dete-i-if the user event type is a null event izing external modules such as may be invoked by the (processing block 405). That is, a test determines whether secondary initialization process is shown in FIG. 6. Referthe user event type is idle or not. If the user event type is a 55 ring to FIG. 6, the processing logic begins by testing whether null event, processing continues at processing block 406 there are more module files to be opened (processing block where idle tasks are run, and processing thereafter continues 601). If there are no more module files (e.g., all the modules at processing block 409. Thus, during idle periods, tasks have been opened and loaded), then the process ends. The involved with the control strip window may be run as well modules are opened and initialized one at a time. If there are as tasks of the modules. Examples of module tasks may 60 more module files, the processing logic opens the module include updating help messages (e.g., due to a help feature file (processing block 602) and loads the module code into being enabled on the computer system) and saving updated memory (processing block 603). The processing logic calls state information (e.g., display area on screen moved to new the module to initialize itself (processing 604). The module location, display area resized, module made invisible; modis then also called by the processing logic to obtain the ule indicates state is changed and that it must be saved). On 65 features of the module (processing block 605) and to obtain the other hand, if the event type is not a null event, the width of the module's area, as well as features of the processing continues at processing block 407. module (processing block 606). The features of the module Copy provided by USPTO from the PlHS Imaae Database on 04/25/2011 APLNDC00022425 US 6,493,002 B1 11 12 include help messages to be displayed when the module is perform a save operation. This determination is based on whether the ---- are available (i.e., H.D. is turned on) "clicked on" with the cursor. Then the module file is closed to perform the save operation. If it is not safe to perform a (processing block 607) and the processing loops back to processing block 601. By looping back to processing block save operation, processing continues at processing block 601, the processing logic is able to provide the initialization 5 806. However, if it is safe to save control strip, processing procedures to all the modules, such that when all the continues at processing block 805 where the configuration of modules have been processed the process ends. When the the control strip is saved to disk. Thereafter processing process ends, it returns in a manner well-known in the art to continues to processing block 806. the processing logic that called (e.g., initiated) it. At processing block 806, the current idle module is called One embodiment of a process for drawing the contents of 10 to run its idle task. In one embodiment, the processing logic of the present invention allows only one module to run its the control strip (processing block 508), such as used at processing block 508 of FIG. 5, is described in FIG. 7. idle tasks during each a call to the processing of FIG. 8 (e.g., the currently designated module) to reduce overhead time. Referring to FIG. 7, the processing logic initially determines Identification of the current module is based on an ID if the control strip is visible (processing block 701). If the control strip is not visible, processing ends. That is, if the 15 associated with each of the modules. user has hidden the control strip, the present invention will Then the idle task undergoes post processing (processing not draw its contents. block 807), and the ID of the next module is updated to idle (processing block 808). That is, the module designated as the On the other hand, if the control strip is visible, processing current module for the next call to the processing of FIG. 8 continues at processing block 702 enters a looping structure where the processing logic tests whether there are more 20 will be the next module in the list of modules. An example modules to draw. If there are no more modules to draw, of the post processing is shown in FIG. 10. processing ends and control returns to the process that called it. If there are more modules to draw, processing continues Then, the processing logic dete-- whether the mod- other hand, if the module needs to be redrawn processing causes the module settings to be saved to disk (processing ule needs to save settings for use later (processing block at processing block 703 where the processing logic tests 809). If the module does not need to save its settings, whether the particular module needs to be redrawn. A 25 processing continues to processing block 812. On the other module may need to be drawn when the information being hand, if the settings of the module are to be saved, the displayed needs to be updated. For example, as the amount processing logic tests whether the settings may be saved at of energy in the battery is changing due to energy consumpthis time (processing block 810). One reason the settings tion from the computer system, an update to the battery may not be saved is that the hard disk may be powered down indicia in the control strip must be made. If the module does or tumed off. If the settings cannot be saved at this time, not need to be redrawn, processing loops back to processing processing continues at processing block 812. If the settings block 702 where the more modules test is repeated. On the of the module may be saved at this time, the processing logic continues at processing block 704 where the processing block 811). Thereafter, processing continues at processing logic determines whether the module is a button. If the 35 block 812. module is a button, processing continues at processing block At processing block 812, the help messages for the control 705 where the background graphics of the button are drawn, strip are updated, and processing ends and returns to the and processing continues to processing block 707. If the control of the main processing logic. module is not a button, the status-only background graphics 4o One embodiment of the mouse click processing of the are drawn (processing block 706) and processing continues present invention, such as used in FIG. 4, is shown in a at processing block 707. Note that in one embodiment, the flowchart in FIG.9. Referring to FIG. 9, the processing logic type of background graphics may be obtained using a determines whether a mouse click has occurred inside the message sent to the module requesting its features. control strip (processing block 901). In one embodiment, At p. ..-Lg block 707, the processing logic makes a call 45 this determination may be made by comparing the current to the module to draw itself. That is, it is the responsibility location of the cursor with the location of the control strip of the module itself to draw its status for control indicia. (e.g., status bar). If a mouse click has not occurred inside the Thereafter processing loops back to processing block 702. control strip, then processing loops back upon itself, retesting repeatedly until a mouse click does occur. When a mouse One embodiment of the processing for running idle tasks in FIG. 4 is described in a flowchart in FIG. 8. Referring to 50 click occurs within the control strip, p°9g continues at processing block 902 where a determination is made as to FIG. 8, the processing logic begins by determining whether a window update is pending (processing block 801). If a upon which module the cursor was during the click. window update is pending, the processing continues at The processing logic then determines whether a move processing block 802 when the contents of the control strip operation is being selected by the mouse (processing block are drawn. Window updates may be required due to a change ss 903). If a move operation has been chosen, the display of the in status in one of the modules. Changes may also be due to module is moved or the entire control strip is moved a reordering of the control strip entries. Note that one (processing block 904) and the processing logic ends the embodiment of the process to draw the control strip is shown mouse click process and exits to control of the processing in FIG. 7. Thereafter processing continues at processing logic that called this procedure. The determination of block 803. If a window update is not pending processing so whether to move a module or the entire strip is based on the continues directly to processing block 803. user's keystrokes or mouse movements. On the other hand, At processing 803, processing logic tests whether the if a move operation is not to occur, processing continues at configuration of the control strip has changed. If the conprocessing block 905. figuration of the control strip has not changed, processing At processing block 905 the processing logic det.....i.... continues at processing block 806. If the configuration of the 65 whether the module on which the click occurred is a control strip has changed, processing continues at process"clickable" module, as opposed to a status only module, ing block 804 where a test determines whether it is safe to (processing block 905). That is, the processing logic tests APLNDC00022426 US 6,493,002 B1 13 14 whether the module provides any additional functionality etc., are contained in a file on a disk. The control strip processing logic draws the strip which acts as the background for the individual modules. Each module is responsible for drawing the icons and other objects that make up its user interface. tracked, i.e., the location of the cursor. Contents of Module Files Next, a test dete.... .- if the mouse is still within the In one embodiment, the module file includes only a single bounds of the module (processing block 907). If the mouse resource containing the code necessary for the module to is not within the bounds of the module, processing ends. interact with the control strip. A module file may contain However, if the mouse is within the boundaries of the 10 more than one code .--.- if it is to provide multifuncmodule, the module is called to process the click (processing tional support. In that case, each module in the file is loaded block 908) and the click undergoes post processing and initialized separately and treated as an independent (processing block 909). Thereafter, the process ends. entity. One embodiment of the process for post processing the Module Interface mouse click is shown in FIG. 10. Referring to FIG. 10, the 15 The interface of the module to the control strip comprises processing logic begins by determining whether the module a code ----. In one embodiment, using the Macintosh" desires to update its settings (processing block 1001). If the computer, the type of the code is 'sdev'. This code settings for the module are to be updated, processing conis responsible for performing all of the functions required by tinues at pog block 1002 where a flag is set to indicate the control strip as well as any functions that are custom to that the module has a save pending, and processing contin- 20 the module itself. The module's entry point is at the beginues to processing block 1003. The settings for a module may ning of the resource and is defined as have to be updated due to user interaction, such as in the case pascal long Contro1StripModule (long message, long of an option for a module being turned off or a module params, Rect *statusRect, GraftPtr statusport); acquiring data as part of its functionality. If the settings of 25 Interactions between a module and the control strip are a module do not have to be updated, processing continues managed by passing messages to the module to tell it what directly to processing block 1003. Setting may need to be to do or to obtain information about the module and its updated when the module is displaying information that is capabilities. In one embodiment, each module is required to changing frequently. observe Macintosh= Pascal register saving conventions; At processing block 1003, a test determines whether the 3e that is, it may trash 680x0 processor registers DO, D1, D2, module needs to resize the display. If the display of the AO, and A1, but must preserve all other registers across its module must be resized, processing continues at processing call. Note that other operating systems and implementations block 1004 where the module is called to update its width. of the present invention may have different restrictions. Then processing continues at processing block 1005. On the The message field comprises a message number from the other hand, if the display of the module does not need to be 35 list in the section "Control Strip Module Messages" that resized, processing continues directly to processing block indicates to the module the action to perform. 1005. The params field signifies the result returned by the At processing block 1005, the processing logic deterinitialize call to the module. This would typically be a mines whether the module desires to be closed. If the pointer to a pointer (e.g., the handle) to the private variables module desires to be closed, processing continues at pro- 4e to be used by the module since modules cannot have global cessing block 1006 where the module is closed immediately. variables. This result is passed to the module on all subseThen processing continues at processing block 1007. If the quent calls. Note that in embodiments where modules can module does not desire to be closed, processing continues to have global variables, such a field may be eliminated. The statusRect field comprises a pointer to a rectangle processing block 1007. At processing block 1007, a test determines whether the 45 within the control strip defining the area that a module may control strip is to be resized or closed. If the control strip draw within. The statusPort field specifies a pointer to the graphics port needs to be resized or closed, processing continues at of the control strip. The graphics port may be either a color processing block 1008 where the module displays are repoor black-and-white graphics port, and depends on the comsitioned and redrawn, and then processing continues at processing block 1009. If the control strip is not to be resized so puter system on which the control strip is running. or closed, processing continues directly to processing block The result value returned by the module varies depending 1009. on the message sent to it. Results for each message are described below in the sections on the individual messages. At processing block 1009, a test dete...L.- whether the help state of the module is to be changed. The help state CONTROL = · -- MODULE ----CE refers to help messages that the modules provide to users ss generally. If the help state of the module is to be changed, In one embodiment, control strip modules interact with processing continues at pg block 1010 where the old the control strip processing logic in three ways: by accepting help state of the module is invalidated and the process ends. messages, by calling utility routines, and by calling the If the module help state does not need to be changed, operating system manager (e.g., a call to Gestalt selectors). processing ends. Changes to the help state may occur due to The next three sections describe each of those interactions. a global change in the computer system, such as when a Control Strip Module Messages particular help feature (e.g., help balloons) is enabled. In one embodiment, all control strip modules respond to ADDING CONTROL = · -··· MODULES messages from the control strip processing logic, which is In one embodiment, the control strip of the present 65 responsive to user interaction with the control strip displayed on the screen. The following messages have been invention operates as a shell with individual control and status modules added. Each module and its icons, pictures, defined: when a mouse moves the cursor to select an element in the control strip. If the module is not "clickable," processing ends. If the module is clickable, processing continues to process processing block 906 where the mouse click is s sidad ku i lADTri fram tha DIRA imana ¯ nn ud/9RI9011 APLNDC00022427 US 6,493,002 B1 16 15 embodiment, this bit is set when, for example, a module has a pop-up menu Message name ted with it. If this bit is cleared, the control strip tracks the cursor until the Message No. Description mouse button is released, then sends an sdevMouseClick message, described below, to the module to notify it that there was a mouse-down event. c) sdevHasCustomHelp (2)-If this bit is set, the module is responsible for displaying its own help messages. module's display sdevPeriodicTickle 4 Periodic tickle when nothing else is These help messages may be customized depending on happening 10 its current state. If the bit is cleared, the control strip sdevDrawStatus 5 Update the interface in the control displays a generic help message when the cursor passes strip over the its display area and Balloon Help, or other sdevMouseClick 6 User has clicked on the module's help-based information provider, is on. display area sdevSavSettings 7 Save any changed settings in the d) sdevKeepModuleLocked (3)-Ifthis bit is set, the code module's preferences file 15 of the module is kept locked and protected. In one sdevShowBalloonHelp 8 Display a help balloon, if the module has one embodiment, this bit is set only if the module is passing the address of one of its routines to a routine external to the module (e.g., installing itself in a queue). sdevInitModule sdevGetDisplayWidth The sdevInitModule message is the first message sent to 2e The sdevGetDisplayWidth message is sent to a module to a module after the module has been loaded from its file. determine how much horizontal space (in pixels) its display Initialization allows the module to initialize its variables and currently requires on the control strip. In response to the to determine whether it can run on a particular machine. For message, the module return the number of pixels as its result. example, if the function of the module is to display battery information, it may be only able to run on a portable as In one embodiment, the returned width does not comprise the width required for any configuration, but computer, such as the Powerbook manufactured by Apple instead, reflects how much space it currently requires. Note Computer. that this useful because, in one embodiment, its possible for In response to receiving the sdevInitModule message, the a module to request that its display be resized. module loads and detaches any resources (e.g., text, code, icons, etc.) in its resource file that will be used. Also, space 3e sdevPeriodicTickle The sdevPeriodicTickle message is passed to the module is allocated in the global variables for handles to those periodically to allow the module to update its display due to detached resources. changes in its state. In one embodiment, this message occurs 'Hie sdevInitModule message returns a result depending sdevlnitModule sdevCloseModule sdevFeatures sdevGetDisplayWidth 0 1 2 3 Initialize the module Clean up before being closed Return the feature bits Return the current width of the 5 at regular intervals, while in other embodiments, there is no on its au-=o at installing itself. In one embodiment, a positive result (10) indicates successful installation. The 3s mtweno or --um interval between "tickles." In response to the sdevPeriodi- -'-'- message, the module processing logic passes this result value to the module on all returns, as its result, some bits that signal requests for actions subsequent calls. A negative result indicates an error from the control strip processing logic. In one embodiment, condition, and installation of the module is aborted by the there are 32 bits returned. All undefined bits in the result are control strip processing logic. Also if a negative result occurs and installation has been aborted, the module does 40 reserved for future use and, in one embodiment, are set to 0. The bits are defined as: not receive a close message. a) sdevResizeDisplay (0)-If this bit is set, the module sdevCloseModule - - its display. The control strip processing logic The sDevCloseModule message is sent to a module when sends a sdevGetDisplayWidth message to the module it should be closed. In one embodiment, the module itself and then updates the control strip on the display. decides when to be closed. A module may be closed when 4s b) sdevNeedToSave (1)-[f this bit is set, the module it no longer is required to be running, such as when a battery needs to save changed settings to disk. The control strip level indicator no longer needs to be running when the computer system is receiving its power from an outlet. When the module receives this message, it disposes of all the detached ---.... it loaded as well as its global storage. No so result is expected. sdevFeatures The sdevFeatures message queries the module for the features it supports. This message returns as its result a bitmap consisting of 1 bits for supported features and 0 bits ss for unsupported features. In one embodiment, there are 32 bits returned. All undefined bits are reserved for future features, and, in one embodiment, are set to 0. The bits are defined as: a) sdevWantMouseClicks (0)-If this bit is set, the control so strip notifies the module of mouse down events. If this bit is not set, the control strip assumes that the module only displays status information with no user interac- processing logic marks the request but may defer the actual save operation to a better time (e.g., when the hard disk is spinning). c) sdevHelpStateChange (2)-If this bit is set, the help message of the module needs to be updated due to a change in state. If a help balloon is being displayed for the module, the control strip processing logic removes the previous help balloon with a new help balloon for the current state. d) sdevCloseNow (3)-If this bit is set, the module is requesting to be closed. The control strip processing logic calls the module to save its settings, then calls the module again to close itself by, for example, disposing of any loaded resources, disposing of private storage, etc. sdevDrawStatus tion. The sdevDrawStatus message indicates that the module b) sdevDontAutoTrack (1)-If this bit is set, the control 65 has to redraw its display to reflect the most recent state. In strip highlights the display of the module and then calls the module to perform mouse tracking. In one one embodiment, this message is sent when the user clicks on the display area of the module, when any of the display i APLNDC00022428 US 6,493,002 B1 17 18 of the module is resized, or when the control strip itself needs to be updated, perhaps in response to a screen saver deactivation. pascal Boolean SBlsContro1StripVisible ( ); The SBlsControlStripVisible routine returns a Boolean value indicating whether or not the control strip is currently visible. It returns a value of "true" if the control strip is visible, or a value of "false" if it's hidden. In one embodiment, the SBIsControlStripVisible call returns a value of "true" even when the control strip is no visible. That happens whenever the control strip is no accessible in the current environment. As soon as tha condition changes, the control strip becomes visible again and the returned value correctly reflects the actual state. SBShowHideContro1Strip The °"'wHideControlStrip routine shows or hides the control strip. An exemplary call follows: pascal void SBShowHideControlStrip (Boolean showIt); The SBShowHideControlStriproutine determines the visibility state for the control strip based on the value of the "showIt" parameter. Passing a value of "true" makes the control strip visible, and passing a value of "false" hides it. Modules may not need to call this routine. However, the SBShowHideControlStrip routine provides a means for other software to hide the control strip when it is in the way. Calling the SBShowHideControlStrip routine with a "showIt" value of "true" may or may not show the control strip, depending on the current -L --nt. If the control strip is not accessible, it does not become visible. If a "showIt" value of "true" is passed to this routine, then the control strip becomes visible when the environment changes. SBSafeToAccessStartupDisk The SBSafeToAccessStartupDisk routine determines whether the internal hard disk is turned on so that processing logic of the present invention can determine whether to make a disk access or postpone it until a time when the disk is already spinning. An exemplary call follows: pascal Boolean SBSafeToAccesStartupDisk (); The °"°-"ToAccessStartDisk routine returns a Boolean value of "true" if the disk is turned on and "false" if it is not. SBOpenModuleResourceFile The SBOpenModuleResourceFileroutine opens a module resource file. An examplary call follows: pascal short SBOpenModuleResourcFile (OSType fileCreator); The SBOpenModuleResourceFile routine opens the ---. fork of the module file whose creator is "fdeCreator", and return the file's reference number as its result. If the file cannot be found or opened, the SBOpenMduleResourceFile routine returns a result of -1. The SBOpenModuleResourceFile routine also provides a means for a module to load in large or infrequently used resources that it doesn't usually need, but that it requires for a particular operation. SBInadPreferences The SBLoadPreferences routine loads a resource from a preferences file. An examplary call follows: pascal OSErr SBLoadPreferences (ConstStr255Param prefsResourceName, Handle *preferences); The SBLoadPreferences routine loads a resource containing a module's configuration information from the preferences file of the control strip. The PrefsResourceName parameter points to a Pascal string containing the name of the .-..-. The "Preferences" parameter points to a variable that holds a handle to the .--- read from the file. The handle does not need to be preallocated. If either prefsResourceName or preferences contains a nil pointer, the SBLoadPreferences routine does nothing and returns a result of paramErr. If the resource is successfully The statusRect parameter points to a rectangle bounding the display area of the module, in local coordinates. All s drawing done by a module within the bounds of the control strip is limited to the module's display rectangle. In other embodiment, drawing may extend outside the display rectange of the module. The clipping region of the control strip's window is set to the visible portion of the display rectangle 10 of the module so that all the elements in the display may be drawn. If the clipping region is to be changed, the initial clipping region should be observed to avoid drawing over other items in the control strip. sdevMouseClick 15 When the user clicks in a display area of the module, the control strip processing logic calls the module with the sdevMouseClick message if the sdevWantMouseClicks bit is set in the features of the module. If the sdevDontAntoTrack bit is also set, the control strip 20 processing logic draws the display of the module in its highlighted state and then sends the sdevMouseClick message to the module. If the sdevDontAntoTrack bit is not set, the control strip processing logic tracks the cursor until the mouse button is released. If the cursor is still within the 25 display area of the module, the control strip processing logic sends the sdevMouseClick message to notify the module that a click occurred. In either case, the module can then perform the appropriate function in response to a - -down event. 3e This message returns the same result as the sdevPeriod- icTickle message. sdevSaveSettings The sdevSaveSettings message is passed to the module when the control strip processing logic has determined that as the configuration information may be saved to the disk (e.g., HD turned on, etc.). In one embodiment, the sdevSaveSet- tings message is sent only if the module had previously set the sdevNeedToSave bit in the result of a sdevPeriodicTickle or sdevMouseClick message. The call returns an error code 40 (File Manager, Resource Manager, or the like) indicating the success of the save operation. The control strip processing logic continues to send this message to the module until the module returns a result of 0, indicating a successful save. sdevShowBalloonHelp 45 The control strip processing logic calls the module with the sdevShowBalloonHelp message if Balloon Help is turned on, the module has previously set the sdevHasCustomHelp bit in its features, and the cursor is over the module's display area. In such a case, the module calls the so Help Manager to display a help balloon describing the current state of the module. The module retums a value of 0 if successful or an appropriate error result if not. ··· ·· - RO·····=·55 In one embodiment, the control strip processing logic provides a set of utility routines that are available to control strip modules. They are provided to promote a consistent user interface within the control strip and to reduce the amount of duplicated code that each module would have to go include to support common functions. Therefore, in an embodiment that does not include these utility routines, a portion or all of the modules may include duplicated code supporting common functions. SBlsControlStripVisible ss The SBlsContro1StripVisible routine determines whether the control strip is visible. An exemplary call follows: Copy provided by USPTO from the PIRS Image Database on 04/25/2011 APLNDC00022429 US 6,493,002 B1 19 20 loaded, the SBLoadPreferences routine returns a result of 0. module is open. This is typically the case during a module's initialization call. SBTrackpopupMenu The SBLoadPreferences routine also returns other Memory Manager and Resource Manager errors if it fails during some art of the process. SBSavePreferences The SBSavePreferences routine saves a .. preferences file. An exemplary call follows: ... to a pascal OSErr SBSavePreferences (ConstStr255Param prefsResourceName, Handle preferences); The SBSavePreferences routine saves a .--.., contain- ing a module's configuration information to the preferences file of the control strip. 'Ibe PrefsResourceName parameter points to a Pascal string containing the name of the .---. The "preferences" parameter contains a handle to a block of data which will be written to the file. If either prefsResourceName or preferences has a nil value, the SBSavePreferences routine does nothing and returns a result of paramErr. if the ..-... is successfully saved, the SBSavePreferences routine returns a result of 0. The SBSavePreferences routine can also return other Memory Manager and Resource Manager errors if it fails during some part of the process. SBGetDetachedString The SBGetDetachedIndString routine obtains a string from a detached ..- .. An exemplary call follows: pascal void SBGetDetachedIndString (StringPtr the String, Handle stringList, short whichString); The SBGetDetachedIndString routine is the detached resource version of GetIndString. The parameter thestring points to a Pascal string; the stringList is a handle to a detached 'STR#' .---, and whichString is the index (1-n) into the array of Pascal strings contained in the detached resource. The SBGetDetachedIndString routine copies the string whose index is whichString into the space pointed to by theString. If whichString is out of range, the SBGetDetachedIndString routine returns a zero-length strmg. SBGetDetachIconSuite The SBGetDetachIconSuite routine sets up a detached icon suite. An exemplary call follows: pascal OSErr SBGetDetachIconSuite (Handle *theIconSuite, short theResID, unsigned long selector); The SBGetDetachIconSuite routine creates a new icon suite, loads all of the requested icons, and then detaches the icons. The parameter theIconSuite points to the location where the handle to the icon suite is stored; the parameter theResID is the --- ID of the icons that make up the icon suite; and the parameter "selector" indicates which icons are to be loaded into the suite. In one embodiment, the "selector" parameter contains one (or a combination of) the following values: svAllLargeData 0x000000FF load large 32-by-32-pixel icons (ICNF, 'ic14', 'ic18') svAllSmallData x0000FFOO load small 16-by-16-pixel icons svAllMiniData 0x00FFOOOD fics#', 'ics4', 'ics8') load mini 12-by-12-pixel icons (icm#', iem4', 'icm8') These values may be ORed together to load combinations of icon sizes. The SBGetDetachIconSuite routine returns an appropriate error code if it's unsuccessful, or 0 if it was able to load the icon suite. Note that if none of the icons comprising the icon suite could be found, the call returns the error "resNotFound. In one embodiment, the SBGetDetachlconSuite routine is called only when the .-..- file of the The SBTrackpopupMenu routine manages a pop-up 5 menu. An exemplary call follows: pascal short SBTrackpopupMenu (const Rect *moduleRect, MenuHandle theMenu); The SBTrackpopupMenu routine handles setting up and displaying a pop-up menu associated with a module. The 10 module passes a pointer to its display rectangle and a handle to the menu to use. In one embodiment the menu is displayed immediately above and adjacent to the display rectangle of the module, yet this is not required. By doing so, the user is allowed to view the current configuration or to change the settings. The SBTrackpopupMenu routine returns an indi15 cation as to which menu item was selected, or 0 if no item was selected (e.g., because the user moved the cursor outside the menu's bounds). SBTrackSlider The SBTrackSlider routine displays and sets an arbitrary 20 parameter. An exemplary call follows: pascal short SBTrackSlider (const Rect *moduleRect, short ticksOnSlider, short initialValue); The SBTrackSlider routine displays an unlabeled slider above the module's display rectangle. The slider may be 2, used for displaying and setting the state of an arbitrary parameter. The parameter "ModuleRect" contains a pointer to the module's display rectangle; "ticksOnSlider' is the upper bounds of the value returned by the slider; and "initialValue" is the starting position (0 to ticksOnSlider -1). go When the user releases the mouse button, the SBTrackSlider routine returns the fmal position. SBShowHelpString The SBShowHelpString routine displays a help balloon. An exemplary call follows· 35 pascal OSErr SBShowHelpString (const Rect *moduleRect, StringPtr helpstring); The SBShowHelpString routine displays a module's help balloon. The module passes a pointer to its display rectangle and a pointer to a Pascal string, and the routine displays the 4e balloon if possible. If the help dstring has a length of 0 or the Help Manager is unable to display a balloon, an error result is returned. If the SBShowHelpString routine successfully displays the help balloon, it returns a result of 0. SBGetBarGraphWidth 45 The SBGetBarGraphWidth routine dete.. °- how wide a bar graph drawn by the SBDrawBarGraph routine (described below) will be so that a module can calculate its display width. An exemplary call follows: pascal short °" '"-^aphWidth (short barCount); so The SBGetBarGraphWidth routine returns the width of a bar graph containing barCount segments. If barCount has a value less than 0, the SBGetBarGraphWidth routine returns a width of 0. SBDrawBarGraph ss The SBDrawBarGraph routine draw as bar graph. An exemplary call follows below: pascal void SBDrawBarGraph (short level, short barCount, short direction, Point barGraphTopLeft); The RDrrwBarGraph routine draws a bar graph con60 taining the number of segments specified by the barCount parameter in a module's display area. If the value of barCount is less than or equal to 0, the SBDrawBarGraph routine does nothing. The bar graph is drawn relative to the location specified 65 by barGraphTopLeft. FIG.11illustratesthe manner in which the point barGraphTopLeft determines the position of the bar graph. CoDy provided by USPTO from the PIRS Image Database on 04/25/2011 APLNDC00022430 US 6,493,002 B1 21 22 The "level" parameter determines how many segments are highlighted. The value of "level" should be in the range of 0 to barCount -1. If the value of "level" is less than 0, no segments in the bar graph are highlighted; if "level" is greater than or equal to barCount, all segments in the bar graph are highlighted. The direction parameter specifies which way the bar graph will be drawn to show a larger level. In one embodiment, the direction parameter specifies one of the following values: #define BarGraphSlopeLeft -1 //max end of sloping graph is on the left #define BarGraphFlatRight 0 //max end of flat graph is on the right #define BarGraphSlopeRight 1 //max end of sloping graph is on the right FIG. 12 illustrates the resulting bar graph for each direction value. The arrows indicate which way an increasing level value is displayed. In one embodiment, for sloped versions of the bar graph, the number of segments specified by the barCount value may not be larger than 8. If a larger barCount value is passed, the SBDrawBarGraph routine draws nothing. SBModalDialogInContext The SBModalDialogInContext routine may be used in place of the ModalDialog routine to prevent background applications from being run while the modal dialog window is visible. An exemplary call is as follows: pascal void SBModalDialogInContext (ModalFilterF.-I't. filterProc, short *itemHit); The SBModalDialogInContext routine is a special version of ModalDialog that doesn't allow background applications to be run while a modal dialog window is visible. The SBModalDialogInContext routine is used when the description, it is to be understood that the particular embodi- ment shown and described by way of illustration is in no way intended to be considered limiting. Therefore, references to details of the preferred embodiment are not s intended to limit the scope of the claims which in themselves recite only those features regarded as essential to the invention. Thus, a method and apparatus for generating a window displaying control and status indicia has been described. I claim: 10 1. An interactive computer-controlled display system compnsmg: a px---, 15 20 25 30 a data display screen coupled to the processor; a cursor control device coupled to said p.,,..-. for positioning a cursor on said data display screen; a window generation and control logic coupled to the processor and data display screen to create an operating environment for a plurality of individual programming modules associated with different application programs that provide status and/or control functions, wherein the window generation and control logic generates and displays a first window region having a plurality of display areas on said data display screen, wherein the first window region is independently displayed and independently active of any application program, and wherein each of the plurality of display areas is associated with one of the plurality of individual programming modules, the first window region and the plurality of independent display areas implemented in a window layer that appears on top of application programming windows that may be generated; and an indicia generation logic coupled to the data display screen to execute at least one of the plurality of occurence of context switching is not desired. individual programming modules to generate information for display in one of the plurality of display areas in the first window region, wherein at least one of the The control strip processing logic installs two "Gestalt" plurality of display areas and its associated programselectors to return information to locations external to the ming module is sensitive to user input, and further computer system. One selector returns software attributes, wherein the window generation and control logic and and the other returns the current version of the processing the indicia generation logic use message-based comlogic (e.g., software). 40 munication to exchange information to coordinate gestaltControlStripAttr activities of the indicia generation logic to enable The selector "gestaltContro1StripAttr ('sdev') retum 32 interactive display activity. bits describing the attributes of the current version of the 2. The display system defined in claim 1 wherein the first control strip processing logic. In one embodiment, only the 45 window region comprises a control strip. following bit is defined: 3. The display system defmed in claim 1 wherein said at gestaltControlStripExists 0 1··control strip is installed least one display area is variably sized. gestaltControlStripVersion 4. The display system defined in claim 1 wherein size of The selector gestaltControlStripVersion ('csvr') retums the first window region is variable. the version of control strip processing logic that is installed. 5. The display system defined in claim 4 wherein the first The format of the retumed ,-1- is the same as that of the window region is sized such that none of the plurality of numeric part of a Macintosh" computer system resource, display areas is visible. that is: 6. The display system defined in claim 4 wherein the first window region is sized such that all of the plurality of 55 display areas are visible. 7. The display system defined in claim 4 wherein the first Bits 31-24 Major part of the version, in BCD window region is sized such that aportion of the plurality of Bits 23-20 Minor part of the version, in BCD G-·-· · S-· - R Bits 19-16 Bug release version, in BCD Bits 15-8 Release stage: 35 display areas is visible. 8. The display system defined in claim 1 wherein at least 60 one of the plurality of the display areas only displays information. $40-alpha $20-development 9. The display system defined in claim 1 wherein at least Bits 7-0 Revision level of nonreleased version, in binary one of the display areas acts to provide access to control information when selected. Whereas many alterations and modifications of the 65 10. The display system defmed in claim 9 wherein said at present invention will no doubt become apparent to a person least one of the plurality of display areas displays an $80-final $60-beta of ordinary skill in the art after having read the foregoing additional display element, tano nravidad hv uw.o from the PIRS Imaae Database on 04/25/2011 APLNDC00022431 US 6,493,002 B1 23 24 ferent application programs that provide status and/or 11. The display system defined in claim 1 wherein each of the plurality of display areas is individually and variably sized. 12. The display system defined in claim 1 wherein the first window region always appears in front of application win- 5 dows. 13. The display system defined in claim 1 wherein the first window region is implemented in a private window layer that appears in front of windows for all applications layers. 14. An interactive computer-controlled display system 10 comprismg: a processor; a data display screen coupled to the processor; a cursor control device coupled to said p--. for 15 positioning a cursor on said data display screen; window generation and control logic coupled to the processor and data display screen to create an operating environment for a plurality of individual programming modules associated with diferent application programs go that provide status and/or control functions, wherein the window generation and control logic generates and displays a first window-region having a plurality of display areas on said data display screen, wherein the fust window region is independently displayed and independently active of any application program, and wherein each of the plurality of display areas is associated with one of the plurality of individual programming modules, the first window region and the plurality of independent display areas implemented in a window layer that appears on top of application programming windows that may be generated; and at least one indicia graphics generation logic coupled to the processor and the window generation and control logic, wherein said at least one indicia graphics generation logic generates user sensitive graphics for display in at least one data display area by executing at least one of the plurality of individual programming modules; wherein the window generation and control logic determines when said at least one data display area has been selected by the user and signals said at least one indicia graphics generation logic in response to user 2, control functions; generating a first window sized to accommodate a plurality of display areas for indicia resulting from executing at least one of the plurality of individual programming modules, wherein each of the plurality of display areas is associated with one of the plurality of individual programming modules, and wherein the first window is independently displayed and independently active of any application program, the first window region and the plurality of independent display areas implemented in a window layer that appears on top of application programming windows that may be generated; displaying the indicia in each of said plurality of display areas by executing one of a plurality of individual programming modules corresponding to each indicia; selecting one of the indicia, wherein the selecting comprises a fust programming module determining which of said plurality of display areas is selected and sending a message to a programming module of said plurality of individual programming modules responsible for generating a display of a selected indicia; said programming module performing a function in response to a selection. 22. The method defined in claim 21 wherein one of said plurality of indicia comprises status information. 23. The method defined in claim 21 wherein one of said se plurality of indicia comprises control information. 24. The method defined in claim 21 further comprising: the first programming module requesting a set of features supported by said programming module, wherein said requesting comprises sending a first message to said 35 40 selection, and further wherein said at least one indi- cia graphics generation logic initiates a responst 45 from said at least one of the plurality of programming modules. 15. The display system defined in claim 14 wherein the fust window region is always visible to the user. 16. The display system defined in claim 14 wherein the so first window region comprises a control strip. 17. The display system defined in claim 14 wherein said at least one display area is variably sized. 18. The display system defined in claim 14 wherein each of the plurality of display areas is individually and variably ss sized. 19. The display system defmed in claim 14 wherein the first window region always appears in front of application programming module; and said programming module returning a second message indicative of features supported by said programming module, such that said first programming module interacts with said programming module in response to user interaction with the first programming module based on indicated features as set forth by said programming module. 25. A system comprising: a window generation and control logic to create an operating - , .nt for a plurality of individual programming modules associated with different application programs that provide status and/or control functions, wherein the window generation and control logic generates and displays a first window region having a plurality of display areas, wherein the first window region is independently displayed and independently active of any application program, and wherein each of the plurality of display areas is associated with one of the plurality of individual programming modules, the first window region and the plurality of independent display areas implemented in a window layer that appears on top of application programming windows that may be generated; windows. 20. The display system defined in claim 14 wherein the so first window region is implemented in a private window layer that appears in front of windows for all applications layers. an indicia generation logic coupled to the data display screen to execute at least one of the plurality of individual programming modules to generate information for display in one of the plurality of display areas in the first window region, wherein at least one of the 21. A method for generating control information compris- plurality of display areas and its associated program- ing: 65 creating an operating environment for a plurality of individual programming modules associated with dif- ming module is sensitive to user input, and further wherein the window generation and control logic and the indicia generation logic use message-based com- APLNDC00022432 US 6,493,002 B1 25 26 munication to exchange information to coordinate ated with diferent application programs that provide activities of the indicia generation logic to enable interactive display activity. 26. An interactive computer-controlled display system compnsmg: s a means for positioning a cursor on a data display screen; a means for creating an operating environment for a plurality of individual programming modules associated with different application programs that provide status and/or control functions, wherein a first window 10 region is displayed having a plurality of display areas status and/or control functions, wherein a fust window at least one of the plurality of display areas only displays information. 4, generating a fust window sized to accommodate a plu- region is displayed having a plurality of display areas on said data display screen, wherein the first window region is independently displayed and independently active of any application program, and wherein each of the plurality of display areas is associated with one of the plurality of individual programming modules, the first window region and the plurality of independent display areas implemented in a window layer that appears on top of application programming windows that may be generated; on said data display screen, wherein the first window a means for generating user sensitive graphics for display region is independently displayed and independently in at least one data display area; active of any application program, and wherein each of a means for determining when said at least one data the plurality of display areas is -,wi.ted with one of 15 display area has been selected by the user; and the plurality of individual programming modules, the a means for initiating a response from said at least one of first window region and the plurality of independent the plurality of programming modules. display areas implemented in a window layer that 40. The display system defmed in claim 39 wherein the appears on top of application programming windows first window region is always visible to the user. that may be generated; and 41. The display system defmed in claim 39 wherein the a means for executing at least one of the plurality of first window region comprises a control strip. individual programming modules to generate informa42. The display system defined in claim 39 wherein said tion for display in one of the plurality of display areas at least one data display area is variably sized. in the first window region, wherein at least one of the plurality of display areas and its associated program- as 43. The display system defined in claim 39 wherein each of the plurality of display areas is individually and variably ming module L---itive to user input, wherein an sized. interactive display activity is enabled. 44. The display system defmed in claim 39 wherein the 27. The display system defined in claim 26 wherein the first window region always appears in front of application first window region comprises a control strip. 28. The display system defined in claim 26 wherein said 30 windows. 45. The display system defmed in claim 39 wherein the at least one of the plurality of display areas is variably sized. first window region is implemented in a private window 29. The display system defined in claim 26 wherein size layer that appears in front of windows for all applications of the first window region is variable. layers. 30. The display system defined in claim 29 wherein the first window region is sized such that none of the plurality 35 46. A computer readable medium containing executable computer program instructions, which when executed by a of display areas is visible. data processing system, cause the data processing system to 31. The display system defined in claim 29 wherein the perform a method for generating control information comfirst window regions is sized such that all of the plurality of pnsmg: display areas are visible. 32. The display system defined in claim 29 wherein the 40 creating an operating environment for a plurality of individual programming modules associated with diffirst window regions is sized such that a portion of the ferent application programs that provide status and/or plurality of display areas is visible. control functions; 33. The display system defined in claim 26 wherein said 34. The display system defined in claim 26 wherein said at least one of the plurality of display areas acts to provide rality of display areas for indicia resulting from executing at least one of the plurality of individual programming modules, wherein each of the plurality of display access to control information when selected. areas is associated with one of the plurality of indi- 35. The display system defined in claim 34 wherein said at least one of the data areas display an additional display so vidual programming modules, and wherein the first window is independently displayed and independently element. active of any application program, the first window 36. The display system defined in claim 26 wherein each of the plurality of display areas is individually and variably sized. region and the plurality of independent display areas implemented in a window layer that appears on top of application programming windows that may be gener- 37. The display system defined in claim 26 wherein the 55 first window region always appears in front of application ated; displaying the indicia in each of the plurality of display windows. areas by executing one of a plurality of individual programming modules corresponding to each indicia; and selecting one of the indicia, wherein the selecting comprises a first programming module determining which of the plurality of display areas is selected and sending a message to a programming module of the plurality of individual programming modules responsible for generating a display of a selected indicia, and the programming module performing a function in response to a selection. 38. The display system defined in claim 26 wherein the first window region is implemented in a private window layer that appears in front of windows for all application go layers. 39. An interactive computer-controlled display system comprismg: a means for positioning a cursor on said data display screen; 65 a means for creating an operating environment for a plurality of individual programming modules associ- P--a, n....iAnA hu !RODTT% fwam ihn DID innamen F1mfakeen an fid/ORIOfHi APLNDC00022433 US 6,493,002 B1 27 47. The computer readable medium as set forth in claim 46 wherein ones of the indicia comprises status information. 48. The computer readable medium as set forth in claim 46 wherein one of the indicia comprises control information. 49. The computer readable medium as set forth in claim 5 46 further comprising: the first programming module requesting a set of features supported by said programming module, wherein requesting comprises sending a first message to said programming module; and 10 said programming module returning a second message indicative of features supported by said programming module, such that said first programming module interacts with said progr===ing module in response to user interaction with the first programming module based on 15 indicated features as set forth by said programming module. 50. A system comprising: a means for window generation and control to create an operating - ,--nt for a plurality of individual programming modules associated with different application programs that provide status and/or control functions, wherein the means for window generation and control generates and displays a first window 28 region having a plurality of display areas, wherein the first window region is independently displayed and independently active of any application program, and wherein each of the plurality of display areas is associated with one of the plurality of individual programming modules, the first window region and the plurality of independent display areas implemented in a window layer that appears on top of application programming windows that may be generated; a means for indicia generation coupled to the data display screen to execute at least one of the plurality of individual programming modules to generate information for display in one of the plurality of display areas in the first window region, wherein at least one of the plurality of display areas and its associated program- ming module is sensitive to user input, and further wherein the means for window generation and control and the means for indicia generation use messagebased tion to exchange information to coordinate activities of the means for indicia generation to enable interactive display activity. ***** APLNDC00022434

Disclaimer: Justia Dockets & Filings provides public litigation records from the federal appellate and district courts. These filings and docket sheets should not be considered findings of fact or liability, nor do they necessarily reflect the view of Justia.


Why Is My Information Online?