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).
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?