`
`[19]
`
`[11] Patent Number:
`
`6,121,968
`
`Arcuri et al.
`
`[45] Date of Patent:
`
`Sep. 19, 2000
`
`US006121968A
`
`[54] ADAPTIVE MENUS
`
`[75]
`
`Inventors: Michael P. Arcuri, Seattle; Thomas
`SCOtt C0011, Kirkland; Jeifrey .I-
`Johnson, Bellevue; Alexis Warren
`Jacob Manning, Redmond; Martijn
`Eldert van Tilburg, Seattle, all of
`WaSh-
`
`Steve Harris, et al. “Inside WordPerfect 6 for Windows”,
`New Riders Publishing, p. 1063, 1994.
`
`“Suitable Icon” IBM Technical Disclosure Bulletin, vol. 39,
`N0. 11, pp. 63_64, 1996.
`
`Microsoft® Works Reference, Appendix E: Macros, ©Copy-
`right Microsoft Corporation 1987, 1988, 1989, pp. 369-382.
`
`[73] Assignee: Microsoft Corporation, Redmond,
`WaSh~
`
`Microsoft Word User’s Guide, Version 5.0, ©Copyright
`1991-1992 Microsoft Corporation, pp. 61-66.
`
`Primary Examiner—Raymond J. Bayerl
`Assistant Examiner—Tadesse Hailu
`Attorney, Agent, or Firm—Jones & Askew, LLP
`
`ABSTRACT
`[57]
`Drop down menus provided by a computer program are
`provided in two states, a short menu state and a long menu
`state. When a user opens a desired menu, the menu opened
`will initially take the form of a short menu of executable
`commands which are a subset of the total number of
`executable commands available under the selected menu.
`
`The short menu may be dynamically expanded into a long
`menu which will contain the complete set of executable
`commands available under the selected menu. The short
`b
`d
`t dt
`th
`1
`d
`fth
`h
`0
`men“ may ea ap 9
`‘°*P‘°*rS°“a “Ce 5°
`ellserw 9“
`the user selects commands from the long menu which are not
`contained in the short menu. Usage information is stored and
`d t d
`th
`f
`h
`d
`dt
`9 9
`9
`9
`on
`up a 9
`9 usage 9 9“ menu Comm“
`short menu. Menu commands are removed from the adapted
`short menus based on non-use of those menu commands by
`the user. Information stored, maintained, and updated on the
`.
`usage of the menu commands added to the short menus is
`stored in a compact and efficient data structure which
`
`facilitates efficient computer memory use.
`
`30 Claims, 7 Drawing Sheets
`
`SET NO OF
`SESSIONS
`SINCE LAST
`USED = 0
`
`[21] Appl. No.: 09/098,403
`.
`.
`[22]
`Jun’ 17’ 1998
`F1199’
`[51]
`Int. Cl.7 .................................................... .. G06F 13/00
`
`[52]
`345/352; 345/348; 345/333
`[58] Field of Search ..................................... 345/352, 146,
`345 343 333 335 334
`/
`’
`’
`’
`
`[56]
`
`References Cited
`U.S. PATENT DOCUMENTS
`
`.
`.
`
`.
`
`7/1987 SteiI1haft-
`4,680,729
`9/1987 Redford et al.
`4,692,858
`8/1991 Ephrath et al.
`5,041,967
`5/1992 Kerr .
`5,115,501
`6/1993 Padawer et al.
`5,220,675
`11/1993 B““1dt-
`5>261>042
`2/1994 Gram .
`5,287,514
`......................... .. 345/339
`11/1995 Blades etal.
`5,465,358
`7/1997 Tuniman et a1. N
`N 345/352
`5,544,737
`7/1997 M011fS11I1d Ct 31-
`-- 345/354
`5,644,739
`3/1998 Siefert et al.
`..
`5,726,688
`5/1998 Oran et al.
`............................ .. 345/348
`5,757,371
`6/1998 Gram .
`5,760,768
`5,825,357 10/1998 Malamud .............................. .. 345/340
`5>867>162
`2/1999 O’L°‘“Y ct a1~
`~~ 345/352
`5,897,670
`4/1999 Nielsen ................................. .. 345/334
`
`
`
`OTHER PUBLICATIONS
`
`Sybex; Microsoft Excel’ 1994’ Chapter 1.
`“Intelligent Tool Tracker/Display IBM Technical Disclosure
`Bulletin”, Vol. 37, No. 2A Feb. 1, 1999, p. 175.
`
`500
`
`
`
`SEARCH FOR
`COMMAND
`USAGE RECORD
`515
`
`SELECT MENU
`COMMAND
`
`RECORD7
`YES
`
`CREATE
`RECORD
`
`ADD
`-—— CONMANDTO
`SHORT MENU
`
`DISMISS MENU
`TD HIDDEN
`STATE
`
`550
`
`555
`
`
`
`
`
`
`INCREMENT
`USAGECOUNT
`
`
`
`Apple Exhibit 103
`
`Apple v. Core Wireles
`IPR2015-0189
`
`Page 0000
`
`ENUMERATE
`COMMANDS FOR
`SELECTED
`MENU
`
`SET
`
`ALLOw_DECAv
`BIT FOR
`EXISTING
`RECORDS = 1
`
`
`
`Apple Exhibit 1036
`Apple v. Core Wireless
`IPR2015-01898
`Page 00001
`
`
`
`U.S. Patent
`
`Sep. 19,2000
`
`Sheet 1 of7
`
`6,121,968
`
`_o._c22
`
`//
`
`C.
`
`u-_....__._.
`
`_
`
`__
`
`_
`
`_
`
`
`
`
`
`E0352<mm<.2004
`
`m:.os_mm
`
`mm.S.=2oo
`
`51/
`
`
`
`E0352<mm<85>
`
`_9.—m
`
`_EE<o<:23“89>ozammoomm
`
`_zmzmrm
`
`_oz=<mmn_o
`
`_8
`
`_5:5
`
`_m§_aoomn_
`_mmzo:.<o_._&<
`
`xmozfimz
`
`uo<uEm»z_
`
`
`
`Eon.iamw
`
`mo<uEm:z_
`
`mu<uEm»z_
`
`#930
`
`xm_o
`
`
`
`mama.._m_n_
`
`mo<uEm:.z_
`
`u_Bzo¢s_
`
`V5593..
`
`mama
`
`mo<..E.n:z_
`
`
`
`$5002:<mwoxn_
`
`zo_»<o_._&<
`
`m2<m.oomn_
`
`5:5
`
`
`
`nozéuoxmzo:<o_._&<uzckmmmo
`
`«Sane:mmm2<moocn_mmzmfirm.
`
`
`Page 0000
`
`Page 00002
`
`
`
`
`
`
`
`
`
`
`
`U.S. Patent
`
`Sep. 19,2000
`
`Sheet 2 of7
`
`6,121,968
`
`
`
`
`
`’K’/
`
`
`
`
`
`
`.
`/xi
`r
`/7’
`
`I] file Edit _iw l_nsert _Format Iools Iable \_/_V
`‘
` I? V_Veb Layout
`
`
`
`El Draft
`
`Ioolbars
`
`ljeader and Footer
`
`_
`hort version
`mands like
`
`
`al all comm
`you seem tc
`
`u has been
`command or leave the m
`menus adapt quickly but
`immediately when used_
`application sessions. Afl
`commands that you norm
`a smaller, more personal
`
`Zoom...
`
`VV
`
`
`
`
`I
`
`,/ /’ //
`
`'-Wzaifi 0 ,,
`
`
`
`0
`' 116
`//////A% .
`h§i'§nV§§$i'a?<3
`7
`_________________' al all comtm
`
`yu has been
`Emotes
`'::7:ki3zm
`
`‘El Qomments
`when used,
`
`essions. Afl
`© HTML Source
`at you norm
`
`8 FE" Screen
`re personal
`*2:c.:i:.:::5 |=|(; 23
`
`
`
`
`
`Qutlme
`
`
`770
`
`
`
`ou seem c
`
`
`
`118
`
`Page 0000
`
`
`
`Page 00003
`
`
`
`U.S. Patent
`
`Sep. 19,2000
`
`Sheet 3 of7
`
`6,121,968
`
`
`
`W
`_
`
`
`Qutline
`
`E graft
`
`
`
`[oolbars
`
`
`hort version
`mands like
`
`
`
`you seem tc
`» u has been
`leave the m
`quickly bul
`when used.
`essions. Afl
`at you norm
`re personal
`
`
` 1,;//
`
`0
`l
`Ell/4 ‘W
`1] file _l_Edit |_nsert _Format Iools _T_able W
`
`E] Erint Layout
`
`
`
`
`
`
`
`
`
`J:
`
`§ v
`
`
`
`
`E Vjeb Layout
`D_raft
`Ioolbars
`Q Euler
`
`
`
`hort version
`Lleader and Footer
`mands like
`al all comm
`you seem to
`» u has been
`0 ’ ‘ an or leave the m
`menus adapt quickly bul
`immediately when used.
`application sessions. Afl
`commands that you norm
`a smaller. more personal F | G _ 2 D
`
`Page 0000
`
`
`
`Page 00004
`
`
`
`U.
`
`waP
`
`mS
`
`7Mm
`
`m><#_m_aw:zws_
`mmmomoz<n_xm_m.,
`
`:zm_s_Eoxmmmm_mm_s_m_n_mam:
`
`S.azms.029mmmm_s_m_ommw:
`
`:zm_s_oz9op
`
`
`
`moz<n_xmmmmn:zms_maomomum:
`
`1’6
`
`Q06
`
`9,.nm0.“.
`
`Page
`
`Page 00005
`
`
`
`
`U.S. Patent
`
`Sep. 19,2000
`
`Sheet 5 of7
`
`6,121,968
`
`400
`
`430
`
`COMMAND
`IDENTIFIER
`
`NUMBER OF
`SESSIONS SINCE
`
`LAST USE
`
`ALLOW_DECAY
`
`440
`
`450
`
`460
`
`470
`
`MENU (N)
`
`COMMAND(N)
`
`COMMAND(N)
`USAGE
`
`RECORD
`
`F|G.4A
`
`F|G.4B
`
`Page 0000
`
`Page 00006
`
`
`
`U.S. Patent
`
`Sep. 19,2000
`
`Sheet 6 of7
`
`6,121,968
`
`500
`
`505
`
`510
`
`COMMAND
`
`530
`
`SEARCH FOR
`COMMAND
`USAGE RECORD
`
`
`
`SET NO. OF
`SESSIONS
`SINCE LAST
`USED = o
`
`515
`
`NO
`
`545
`
`520
`
`EXECUTE
`COMMAND
`
`RECORD
`,,
`-
`
`‘"53
`
`INCREMENT
`USAGE COUNT
`
`CREATE
`RECORD
`
`ADD
`COMMAND TO
`
`SHORT MENU 525
`
`550
`
`DISMISS MENU
`TO HIDDEN
`STATE
`
`F | G . 5
`
`Page 0000
`
`526
`
`
`
`
`ENUMERATE
`COMMANDS FOR
`
`SELECTED
`MENU
`
`
`527
`
`SET
`ALLOW_DECAY
`BIT FOR
`EXISTING
`
`RECORDS = 1
`
`Page 00007
`
`
`
`U.S. Patent
`
`Sep. 19,2000
`
`Sheet 7 of7
`
`6,121 968
`
`600
`
`START
`
`(605
`
`NO
`
`685
`
`END
`
`‘'55 606
`
`
`
`NO
`
`YES
`
`607
`
`SET ALLOW_DECAY
`Bn=o
`
`610
`
`665
`
`DECREMENT USAGE
`COUNT BY‘
`
`667
`
`DECREMENT
`USAGE COUNT BY
`
`MAX OF 2 OR 25%
`
`CL(§’h%§",\'J°D
`USAGE RECORD
`615
`
`YES
`
`SESSION = 6
`
`LAST
`sessuom = 9
`?
`
`N0 660
`
`
`
`DELETE COMMAND
`USAGE RECORD
`
`YES
`
`
`
`Page 0000
`
`Page 00008
`
`
`
`6,121,968
`
`1
`ADAPTIVE MENUS
`
`TECHNICAL FIELD
`
`This invention generally relates to computer program user
`interfaces and more particularly relates to dynamically
`increasing and decreasing the number of available com-
`mands in a shortened computer program menu based on the
`particular needs of a user of that program and based on the
`historical utilization of particular commands by a user of
`that computer program.
`
`BACKGROUND OF THE INVENTION
`
`In recent years, use of computers has increased dramati-
`cally worldwide. Users of computers utilize computer pro-
`grams for a variety of purposes including word processing,
`data base management, desktop publishing, and the like. In
`order to facilitate more efficient utilization of computer
`programs, a variety of commands is typically provided in
`each computer program for allowing a user to manipulate
`data and text based on the particular application and the
`needs of the user. For example, a user of a word processing
`program may wish to open a variety of documents or files,
`edit those documents or files, and arrange the layout or print
`characteristics of text contained in those documents or files
`
`according to the particular needs of the user.
`The available functionality of a computer application
`program is typically accessed by selecting commands within
`a menu displayed on a user interface of the application
`program. As designers of computer application programs
`provide more and more commands and menus, these menus
`become “cluttered” and confusing to users. This cluttering of
`menus with large numbers of commands (often not utilized
`by the user of the program application) is often referred to
`as “bloat.”
`
`Some application programs include the capability to use
`“short” sets of menus which expose only a subset of the
`available commands as opposed to “long” sets of menus
`which expose the full set of available commands in a
`particular menu. The content of such short menus is often
`predetermined and static. Because the commands available
`to the user in such short menus often are static, the user must
`either use the long menu or the preset short menu, but the
`user is incapable of changing the content of the short menu
`to provide a more desirable set of commands.
`Some computer program applications allow the user to
`customize the menus and the commands that appear on the
`menus. This allows the advanced user to remove commands
`
`the
`they do not use and add additional commands that
`program designers did not place on the menus by default.
`This is normally done through a dialog which allows the user
`to drag unwanted controls off the menus. However, if the
`user ever wants one of the removed controls or commands
`back, the user must search for the desired control and add it
`back to the appropriate menu. Customizing the menus can be
`a complicated and confusing task. Unfortunately, most users
`either lack the sophistication to perform such menu
`customization, or
`they are afraid to delete currently
`unneeded commands or controls in the event that they might
`need those commands or controls at some point in the future.
`Therefore, there is a need for a system and method for
`dynamically changing the available commands in a given
`short menu based upon the particular needs and utilization
`behavior of the user.
`
`There is further a need for a system and method that can
`dynamically add to and subtract from available commands
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`2
`provided in a short menu without the need for the user to
`deliberately and manually select from a preset long menu or
`from a preset short menu.
`There is further a need for a system and method for
`creating and updating a record of usage of menu commands
`added to a short menu where the record is compact and
`computer memory efficient.
`SUMMARY OF THE INVENTION
`
`The present invention satisfies the above-described needs
`by providing a system and method for dynamically changing
`the available commands in a given short menu based upon
`the particular needs and utilization behavior of a user. In
`general, drop down menus provided by a computer program
`are provided in two states, a short menu state and a long
`menu state. When a user opens a desired menu, the menu
`opened will initially take the form of a short menu contain-
`ing a subset of executable commands of the total number of
`executable commands available under the selected menu.
`
`The short menu may be dynamically expanded into a long
`menu, which will contain the complete set of executable
`commands available under the selected menu.
`
`Generally stated, the short menu may be adapted to the
`personal needs of the user when the user selects commands
`from the long menu which are not contained in the short
`menu. Usage information is stored and updated on the usage
`of each menu command added to a short menu. Menu
`
`commands are removed from the adapted short menus based
`on non-use of those menu commands by the user. Informa-
`tion stored, maintained, and updated on the usage of the
`menu commands added to the short menus is stored in a
`
`compact and efficient data structure which facilitates effi-
`cient computer memory use.
`One aspect of the present invention provides a method for
`expanding a menu of a computer program module. A deter-
`mination is made as to which commands should be included
`
`in a subset of multiple commands within a short form of the
`menu displayed on a display device. When an expansion
`action is detected,
`the short form menu is expanded by
`displaying a long form of the menu having each of the
`commands. In response to expanding the menu, other menus
`contained in the program module also can be expanded.
`Various methods may be employed for use as expansion
`actions. The expansion action may include detecting the
`selection of an icon contained in the short form of the menu
`
`or detecting the hovering of a mouse controlled arrow or
`cursor over an icon contained in the short form of the menu.
`
`The expansion action may also include detecting the execu-
`tion of a keyboard accelerator or detecting a mouse con-
`trolled double-click over a menu selection key. The expan-
`sion action may further include detecting the hovering of a
`mouse controlled arrow or cursor over the short form of the
`menu.
`
`In another aspect of the present invention, a method of
`creating an adaptive menu of a computer program module is
`provided. A short form of the menu can be displayed on a
`display device, the short form having a subset of a group of
`commands. A need for an additional command not included
`
`in the subset of commands can be detected. In response, the
`short form of the menu can be expanded by displaying a long
`form of the menu having each of the group of commands. In
`response to selecting the additional command from the long
`form of the menu. The additional command can be added to
`
`the subset of the group of commands contained in the short
`form of the menu.
`A first record can be created to document the number of
`times the additional command is selected. A count main-
`
`Page 0000
`
`Page 00009
`
`
`
`6,121,968
`
`3
`tained in the first record can be incremented each additional
`time the command is selected. A second record also can be
`created to track the number of sessions the program module
`was used wherein the additional command was not selected.
`The second record is incremented for each time the program
`module is used and the additional command is not selected.
`The count in the first record can be decremented by “n”
`usage counts if the second record is incremented to represent
`a prescribed number of sessions during which the additional
`command is not selected. The additional command can be
`removed from the short form of the menu after the count in
`the first record is decremented to a prescribed number of
`usage counts. The prescribed number of usage counts is
`typically zero
`In another aspect of the present invention, a method of
`creating and updating an historical usage record for a
`command within a menu of a program module is provided.
`Generally, an historical usage record can be created, includ-
`ing a command identifier field, a usage count field, and a last
`session count field. The usage count can be incremented
`each time the menu command is selected from the menu.
`The last usage count can be incremented each time the
`program module is operated and the command is not
`selected for use. The usage count can be decremented by “n”
`usage counts if the last session count is incremented to a
`prescribed number of sessions during which the command
`was not selected. The historical usage record can be deleted
`if the usage count field is decremented to a prescribed
`number of usage counts. If desired,
`the historical usage
`record may include an Allow_Decay field. The Allow_
`Decay field may contain data determinative of whether the
`usage count should be analyzed.
`In another aspect of the present invention, a computer-
`readable medium having stored thereon a data structure is
`provided. Afirst data field contains data representing a menu
`command of a program module. Asecond data field contains
`data representing a first number of executions of the menu
`command identified by the data contained in the first data
`field. A third data field contains data representing a number
`of sessions the program module containing the menu com-
`mand has been operated during which the menu command
`was not executed. If data contained in the third data field is
`
`altered to represent a predetermined number of the sessions,
`the n in the data in the second data field is altered to
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`represent a second number of executions of the menu
`command.
`
`45
`
`In another aspect of the present invention, a method for
`visually distinguishing commands in a menu of a program
`module is provided. Generally, a short form of the menu is
`presented on a display device, the short form having a subset
`of a group of commands the subset of commands contained
`in the short form of the menu is displayed in a first visual
`configuration. The short form of the menu can be expanded
`by displaying a long form of the menu, the long form having
`each of the group of commands. Each of the group of
`commands not included in the subset of commands can be
`
`displayed in a second visual configuration. The first visual
`configuration typically comprises a first color, and the
`second visual configuration comprise a second color.
`Other objects, features, and advantages of the present
`invention will become apparent upon reading the following
`specification, when taken in conjunction with the drawings
`and the appended claims.
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`FIG. 1 is a block diagram of a personal computer that
`provides an exemplary operating environment for an
`embodiment of the present invention.
`
`50
`
`55
`
`60
`
`65
`
`4
`FIGS. 2A, 2B, 2C, and 2D depict illustrative computer
`programs screen shots according to an exemplary embodi-
`ment of the present invention.
`FIG. 3 is a state diagram illustrating an exemplary inter-
`action between hidden menus, short menus, and long menus
`based upon utilization by the user of the computer program.
`FIG. 4A is a simplified block diagram illustrating the
`interaction of a computer program module with a given
`menu, a given set of commands within that menu and a
`command usage record for each of the given commands in
`accordance with an exemplary embodiment of the present
`invention.
`
`FIG. 4B is a simplified block diagram illustrating the
`preferred data structure of the computer usage record of FIG.
`4A in accordance with an exemplary embodiment of the
`present invention.
`FIG. 5 is a flow diagram illustrating the preferred steps for
`updating the command usage record of FIG. 4B and of
`adding commands to an exemplary short menu in accor-
`dance with the present invention.
`FIG. 6 is a flow diagram illustrating the preferred steps for
`reducing or decaying the usage count maintained in the
`command usage record and for deleting the command usage
`record if the usage count is reduced to a prescribed count.
`DETAILED DESCRIPTION OF THE
`DISCLOSED EMBODIMENTS
`
`In accordance with an exemplary embodiment of the
`present invention, drop down menus for a computer appli-
`cation program can be provided in two states, a short menu
`state and a long menu state. When a user drops a desired
`menu onto the screen of the monitor of a computer, the menu
`dropped will initially take the form of a short menu of
`executable commands, which are a subset of the total
`number of executable commands available under the
`
`the present
`selected menu. As will be discussed below,
`invention provides the ability to dynamically expand the
`short menu into a long menu, which will contain the
`complete set of executable commands available under the
`selected menu.
`
`The initial short menu provided to the user contains a set
`of executable commands predefined by the developer of the
`computer application program. When a user needs an
`executable command not included in the initial short menu,
`the short menu is expanded to the long menu state where the
`user will find the needed executable command. Once the
`
`user selects the needed executable command from the long
`menu, the present invention dynamically adds the selected
`executable command to the short menu to adapt the short
`menu to the personal needs of the user.
`Once an executable command is added to the short menu
`
`to adapt the short menu to the user’s personal needs, the
`present invention provides for monitoring the usage of the
`added executable command by the user. Subsequently, each
`time the user “boots up” the application program, the present
`invention provides for an analysis of the user’s previous
`usage of the menu commands added to the short menu from
`the long menu. As the user’s usage of menu commands
`which have been added to the short menu decreases or
`
`ceases, an exemplary embodiment of the present invention
`removes the added menu commands from the short menu in
`
`accordance with usage parameters as will be discussed in
`detail below. Additionally, the present invention maintains
`data on the user’s usage of menu commands added to the
`short menu in a data structure which is compact and efficient
`and which saves memory space.
`
`Page 0001
`
`Page 00010
`
`
`
`6,121,968
`
`5
`The detailed description which follows is represented
`largely in terms of processes and symbolic representations
`of operations by conventional computer components,
`including a processor, memory storage devices for
`the
`processor, connected display devices, and input devices.
`Furthermore,
`these processes and operations may utilize
`conventional computer components in a heterogeneous dis-
`tributed computing environment,
`including remote file
`servers, computer servers, and memory storage devices.
`Each of these conventional distributed computing compo-
`nents is accessible by the processor via a communication
`network.
`
`The processes and operations performed by the computer
`include the manipulation of signals by a processor or remote
`server and the maintenance of these signals within data
`structures resident in one or more of the local or remote
`
`memory storage devices. Such data structures impose a
`physical organization upon the collection of data stored
`within a memory storage device and represent specific
`electrical or magnetic elements. These symbolic represen-
`tations are the means used by those skilled in the art of
`computer programming and computer construction to most
`effectively convey teachings and discoveries to others
`skilled in the art.
`
`For the purposes of this discussion, a process is generally
`conceived to be a sequence of computer-executed steps
`leading to a desired result. These steps generally require
`physical manipulations of physical quantities. Usually,
`though not necessarily, these quantities take the form of
`electrical, magnetic, or optical signals capable of being
`stored,
`transferred, combined, compared, or otherwise
`manipulated. It is conventional for those skilled in the art to
`refer to these signals as bits, bytes, words, values, elements,
`symbols, characters,
`terms, numbers, points,
`records,
`objects, images, files or the like. It should be kept in mind,
`however, that these and similar terms should be associated
`with appropriate physical quantities for computer
`operations, and that these terms are merely conventional
`labels applied to physical quantities that exist within and
`during operation of the computer.
`It should also be understood that manipulations within the
`computer are often referred to in terms such as adding,
`calling, comparing, receiving, sending, reading, transferring,
`determining, routing, selecting, transmitting, etc. which are
`often associated with manual operations performed by a
`human operator. The operations described herein are
`machine operations performed in conjunction with various
`input provided by a human operator or user that interacts
`with the computer.
`Referring now to the drawings, in which like numerals
`represent
`like elements throughout
`the several
`figures,
`aspects of the present invention and the preferred operating
`environment will be described.
`
`Exemplary Operating Environment
`FIG. 1 and the following discussion are intended to
`provide a brief, general description of the suitable comput-
`ing environment
`in which the invention may be imple-
`mented. While the invention will be described in the general
`context of an application program that runs on an operating
`system in conjunction with a personal computer,
`those
`skilled in the art will recognize that the invention may also
`be implemented in combination with other program mod-
`ules. Generally, program modules include routines,
`programs, components, data structures (such as tables or tree
`structures), etc., that perform particular tasks or implement
`particular abstract data types. Moreover, those skilled in the
`art will appreciate that the invention may be practiced with
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`6
`other computer system configurations, including hand-held
`devices, multiprocessor systems, microprocessor-based or
`programmable consumer electronics, minicomputers, main-
`frame computers, and the like. The invention may also be
`practiced in distributed computing environments where
`tasks are performed by remote processing devices that are
`linked through a communication network. In a distributed
`computing environment, program modules may be located
`in both local and remote memory storage devices.
`Referring now to FIG. 1, an exemplary system for imple-
`menting the present invention includes a conventional per-
`sonal computer 20,
`including a processor 21, a system
`memory 22, and a system bus 23 that couples the system
`memory 22 to the processor 21. The system memory 22
`includes read only memory (ROM) 24 and random access
`memory (RAM) 25. A basic input/output system 26 (BIOS)
`is stored in ROM 24. The BIOS 26 essentially contains the
`basic routines that help to transfer information between
`elements within the personal computer 20 during certain
`computer operations, such as during start-up. The personal
`computer 20 further includes a hard disk drive 27, a mag-
`netic disk drive 28 (e.g., that reads from and writes to a
`removable disk 29), and an optical disk drive 30 (e.g., that
`reads from an optical disk 31 or reads from or writes to other
`optical media). The hard disk drive 27, magnetic disk drive
`28, and optical disk drive 30 are connected to the system bus
`23 by a hard disk drive interface 32, a magnetic disk drive
`interface 33, and an optical drive interface 34, respectively.
`The drives and their associated computer-readable media
`provide non-volatile storage for the personal computer 20.
`Although the description of computer-readable media above
`includes the hard disk drive 27, a removable magnetic disk
`29 and a removable optical disk 31, such as a CD-ROM disk
`or DVD, it should be appreciated by those skilled in the art
`that other types of removable media which are readable by
`a computer, such as magnetic cassettes, flash memory cards,
`digital tapes, Bernoulli cartridges, and the like, may also be
`used in the exemplary operating environment.
`Anumber of program modules may be stored in the drives
`and RAM 25, including an operating system 35, one or more
`program modules 36 (such as a word processing program
`module), other program modules 37.
`The operating system 35, in conjunction with the BIOS 26
`and associated device drivers, provides the basic interface
`between the computer’s hardware and software resources,
`the user, and program modules. Auser may enter commands
`and information into the personal computer 20 through a
`keyboard 40 and an input or pointing device, such as a
`mouse 42.
`
`input devices (not shown) may include a
`Other
`microphone, a key pad, a touch sensor, a joystick, a game
`pad, a satellite dish, a scanner, or the like. The keyboard 40,
`mouse 42, and other input devices are often connected to the
`processor 21 through a serial port interface 46, such as a
`game port or a universal serial bus (USB). A monitor 47 or
`other type of display device is also connected to the system
`bus 23 via an interface, such as a video adapter 48. In
`addition to the monitor 47, personal computers typically
`include other peripheral output devices (not shown), such as
`speakers and printers.
`The personal computer 20 may operate in a networked
`environment using logical connections to one or more
`remote programmable devices, such as a remote computer
`49. The remote computer 49 may be a server, a router, a peer
`device, or other common network node. Typically,
`the
`remote computer 49 includes many or all of the elements
`described relative to the personal computer 20, although
`
`Page 0001
`
`Page 00011
`
`
`
`6,121,968
`
`7
`only a memory storage device 50 has been illustrated in FIG.
`1. The logical connections depicted in FIG. 1 include a local
`area network (LAN) 51 and a wide area network 52.
`Such networking environments are commonplace in offices,
`enterprise-wide computer networks, intranets and the global
`Internet.
`
`When used in a LAN networking environment, the per-
`sonal computer 20 is connected to the local network 51
`through a network interface 53. When used in a WAN
`networking environment, the personal computer 20 typically
`includes a modem 54 or other means for establishing com-
`munications over the wide area network 52, such as the
`global Internet. The modem 54, which may be internal or
`external, is connected to the system bus via the serial port
`interface 46. In a networked environment, program modules
`depicted relative to the personal computer 20, or portions
`thereof, may be stored in the remote memory storage device
`50.
`It will be appreciated that
`the network connections
`shown are exemplary and other means of establishing a
`communications link between the personal computer 20 and
`the remote computer 49 may be used.
`Exemplary User Interfaces
`Personalized adaptive short menus, as created in accor-
`dance with an exemplary embodiment of the present
`invention, act as caches of the menu commands that a user
`is likely to need. The commands the user is likely to need are
`the ones he or she has used before.
`In an exemplary
`embodiment of the present invention, fewer, more relevant
`menu commands are presented in each predefined short
`menu by default. The default setting of the menu commands
`presented in the short menu is predefined by the developer
`of a given computer application program, such as illustrated
`in FIG. 2A. As should be understood, the default setting
`initially may contain no commands, and the short menu may
`be filled with only those commands selected by the user
`from the corresponding long menu, as described below.
`Further, it should be understood, the default setting initially
`may contain all commands.
`Once the user begins actual use of the computer applica-
`tion program, the short menus are personalized and adapted
`to fit the usage behavior of the individual user, as briefly
`described above. It should be understood, however,
`that
`while the short menus are not a replacement for the long
`menus which contain all available menu commands, an
`exemplary embodiment of the present invention provides for
`the presentation of the short menus by default until the user
`effects an expansion from the short menu into the long
`menu, as described above. Thus,
`the present
`invention
`reduces the “bloat” phenomenon characteristic of numerous
`and often superfluous menu commands located in the full
`length long menus.
`During use of the default short menus or the adapted short
`menus, the user does not have to think about the menus. The
`user simply uses the short menus which typically will have
`exactly the menu commands he or she needs. The menu
`commands found on the adapted short menus will be famil-
`iar to the user and will be easy to browse. This aspect of the
`present invention allows the user to be in better control of
`the computer application program he or she is using.
`However, if the user does need to find a new menu command
`or would like to browse some menu command that he or she
`
`has not used in a while, the menus easily expand from the
`default or adapted short menu to the long menu to facilitate
`the user’s needs.
`
`As briefly described above, the present invention provides
`a method and system for allowing a user to dynamically
`expand a preset short menu of commands to a long menu of
`
`8
`commands when the user desires or needs commands not
`
`present in the short menu of commands. Before describing
`the particular implementation of the present invention, it is
`advantageous at this point to describe a set of exemplary
`user interfaces encountered by a user of a given computer
`application program employing an exemplary embodiment
`of the present invention. FIGS. 2A, 2B, 2C, and 2D depict
`illustrative computer program display screens according to
`an exemplary embodiment of the present invention.
`Referring to FIG. 2A, a user of an exemplary word
`processing pro