Title: ORGANIZER INTERFACE SYSTEM AND METHOD
Technical Field
The present invention relates generally to user interface and method for computers and, more particularly, to a user interface and method useful with computers and computer software which use plug-in type programs and to use with such plug-in type programs.
Background Many computers use plug-in type computer programs (referred to below as "plug-ins") to carry out specific tasks or groups of tasks. A plug-in is a programming component that operates within an existing program (the "father") and has no life of its own. A plug-in is managed by the "father". Exemplary plug-ins include those which cause a computer to obtain information regarding time and to display on a display device the time in analog format and/or in digital format. Another plug-in is one which checks the status of the battery power supply of a computer and causes the battery voltage and/or percentage of battery energy remaining to be displayed. The above types of plug-ins provide information typically of interest to the computer user. Another example of a plug-in is sold under the trademark DateMate by Palmmate (also known as Common Sense Software Ltd.) of Hertzeliya, Israel; this plug-in provides a substantial amount of information storage and retrieval capability regarding dates, such as birthdays, appointments, things to do, etc.
An exemplary use of plug-ins is to display information which is either standalone, e.g., time and date, or application specific. Other stand-alone plug-ins may be a screen saver, a game, a sound player, a communications routine, etc. An application specific plug-in may be, for example, a program that obtains information concerning the user's next appointment, birthday information, or some other date related information that may be stored in a database/data structure used in connection with a
program such as that known as DateBook program. In the past it was necessary to go to each of the application specific programs, e.g. , by operating each, to obtain the desired information provided thereby. It would be desirable to be able to organize, to manage and to obtain information from such plug-ins and/or application specific programs conveniently and to display the information in one place, e.g., on a single display screen (or on selected multiple display screens).
A software developer may develop a plug-in to extract specific information for display, for playing, or for some other reason. It would be desirable to facilitate the managing and organizing of plug-ins and to facilitate operating plug-ins to obtain convenient and full use thereof. It also would be desirable to facilitate such managing , organizing and use of plug-ins in a Windows type environment or some other environment in which multiple programs can be running and/or called essentially simultaneously. Further, it would be desirable to carry out the foregoing in a relatively efficient manner to try to minimizing the amount of memory and steps required. A developer of a plug-in and/or of other computer programs would have to take care to avoid conflicts with other programs operating on the computer, for example, to assure that user inputs are interpreted correctly, to assure that when one window overlays another (partly or fully) a user input is directed toward the operation of the top-most window/program, etc. It would be desirable to facilitate developing plug-ins and other computer programs to avoid the need for such careful detail to avoiding such conflicts and the like and to help to assure smooth unconflicting simultaneous or substantially simultaneous operation of multiple programs on a computer.
Summary With the foregoing in mind, then, an aspect of the present invention is to manage plug-ins.
Another aspect relates to the presenting in one convenient place information which is stored in and obtained from several programs, databases, data structures, etc.
Another aspect is to provide the developer of a plug-in a convenient set of tools which facilitates concentration on presenting the information and responding to user inputs or events on the plug-in without interfering with other programs or plug-ins operating on the computer system. Several examples include the ability to direct
programming efforts toward the program or plug-in operation without having to be concerned with window layers or with the dragging of windows on a display desktop, etc. Thus, an aspect is to provide organization and management of such considerations, e.g. , window layers and dragging of windows, substantially independently of plug-in operation, in at least some respects.
Another aspect is to use or run a plug-in.
Another aspect is to facilitate managing, organizing and/or running or operating one or more plug-ins.
Another aspect is to facilitate updating or upgrading a plug-in, to manage, organize and/or to run or to operate the updated or upgraded plug-in without losing data obtained, stored, etc., using a prior version of the plug-in.
Another aspect relates to using a plug-in to display a summary of information obtained from a file stored and accessible via a stand-alone program or an application specific program, and in response to further activation of the plug-in accessing further operation, possibly including full operation, thereof and of the appropriate father application to display additional information accessible by the plug-in.
An aspect relates to a user interface for computers, including a display, a number of plug-ins for obtaining information from respective data resources in the computer, and an organizer for simultaneously displaying the information on the display at respective locations.
Another aspect relates to a method of organizing and displaying information from a computer for use by a user, includes obtaining information from a plurality of data storage or data generating resources of a computer system, and simultaneously displaying at respective locations on a display at least some information from each of such resources.
Another aspect relates to a method of using plug-ins to organize and display information from respective programs operable on a computer, includes using respective plug-in to obtain information from a plurality of data storage or data generating resources of a computer system, and simultaneously displaying at respective locations on a display at least some information from each of such resources.
Another aspect relates to a computer operating system, including at least one application specific program, at least one stand-alone program, application specific plug-in to grab data from a database of an application specific program, and an organizer interface for retrieving information from the plug-ins for display. Another aspect relates to a method of displaying information, including obtaining data from a computer or memory by a stand-alone plug-in, using an application specific plug-in, obtaining data from an application specific program, and using an organizer interface, displaying data obtained by the stand-alone plug-in and the application specific plug-in. Another aspect relates to a method of providing an interface for a computer display, including finding plug-ins for applications operative on a computer, and operating the plug-ins based on preferences set therein to display information from respective applications and/or operating such applications.
Another aspect relates to a computer system, including an application program interface and an organizer interface system for simultaneously displaying information derived from applications operating on a computer via the application program interface.
To the accomplishment of the foregoing and related ends, the invention, then, comprises the features hereinafter fully described in the specification and particularly pointed out in the claims, the following description and the annexed drawings setting forth in detail certain illustrative embodiments of the invention, these being indicative, however, of but several of the various ways in which the principles of the invention may be suitably employed.
Other systems, methods, features, and advantages of the present invention will be or become apparent to one with skill in the art upon examination of the following drawings and detailed description. It is intended that all such additional systems, methods, features, and advantages be included within this description, be within the scope of the present invention, and be protected by the accompanying claims.
Although the invention is shown and described with respect to one or more embodiments, it is to be understood that equivalents and modifications will occur to others skilled in the art upon the reading and understanding of the specification. The
present invention includes all such equivalents and modifications, and is limited only by the scope of the claims.
Brief Description of Drawings In the annexed drawings, Fig. 1 is a schematic illustration of a computer using the system, software and method of organizer interface system according to the present invention;
Fig. 2 is a schematic representation of a computer program flow chart showing interrelationship of the organizer interface system and method of the invention and a computer operating system; Fig. 3 is a flow chart representing the initial operation of a computer operating system;
Fig. 4 is a flow chart representing the summary of operation of the organizer interface system and method of the invention;
Fig. 5 is a flow chart of the initialization routine for initializing operation of plug-ins using the organizer interface system and method of the invention;
Fig. 6 is a flow chart depicting the steps for sending commands to all plug-ins; and
Fig. 7 is a flow chart depicting how the invention responds to events.
Description Turning, now, in detail to the drawings, wherein like reference numerals designate like parts in the several figures, and initially to Figs. 1 and 2, a computer system 1 using the organizer interface system 2 of the invention is generally shown.
The computer system 1 may be a portable computer, such as, for example, a hand held computer, one example being that sold under the trademark PALM CONNECTED ORGANIZER sold by 3Com. Another example of a portable computer would be a conventional laptop computer. The computer system 1 also may be a desk top or any other computer. The computer system also may be a computer based cellular phone.
The computer system 1 includes a processor and associated circuitry 12, a memory unit 14, a user input 16 and a display 18. These components may be conventional ones typically used in a portable computer, desk top computer or other computer.
Referring to Fig. 2, an organizer interface system 2 is shown in association with other exemplary portions of software 22 used in a computer, such as a computer system 1 of Fig. 1. The software 22 includes, for example, a computer operating system 24, one or more application programs or application specific programs 26, and one or more plug-ins, two of examples which are shown at 28, 30. Briefly, the application program
26 and computer operating system 24 communicate and interact to carry out a function of the computer, e.g., to store and to retrieve date and address information about respective individuals and to coordinate such storage and retrieval with user inputs, e.g., via a keyboard 16. The application specific plug-in 30 grabs specific data from the database of the program 26, such as the next date and information concerning the next date, e.g., is it a birthday, a meeting, etc. The stand-alone plug-in 28 may be a clock program which grabs from the computer system 1 and/or the operating system
24 the current date and time and prepares to display that information if called to do so .
The above-mentioned information which is grabbed by the plug-ins 28, 30 (and possibly others) is retrieved from them by the organizer interface system 2 and is displayed for convenient viewing on the computer display 18, as will be described in greater detail below.
The computer system 1 includes a processor and associated circuitry 12, such as an AMD K-6 microprocessor, Pentium microprocessor, Motorola DragonBall microprocessor or virtually any other microprocessor or processor unit as may be used in a computer, and associated input/output, control circuits, communications circuits, busses, etc., as is well known in the art. The computer system 1 also includes random access memory (RAM) and/or a read only memory (ROM), which may be separate from or associated with the memory unit 14 mentioned below. The memory unit 14 may be, for example, a floppy disk drive, fixed disk drive, optical drive, tape drive, flash memory, or some other device in which memory media on which computer programs, signals, and the like may be stored and retrieved, as is typical in computer systems. Further, the computer system 1 includes a user input 16, such as a keyboard , mouse, joystick, pointer, pen, click buttons, etc. to allow a user to input information, commands and the like to the computer system 1. The display 18 may be a liquid
crystal display, cathode ray tube, plasma display or some other display on which information may be displayed under control of the computer system 1.
In the description below the invention is described for use in conjunction with a Palm Connected Organizer hand held computer sold by 3Com as the computer system 1. However, it will be understood and appreciated that the invention may be used with other hand held computers, personal digital assistants, and/or with other computers.
The functions and operation of the organizer interface system 2 of the invention are described below with respect to several block diagram flow charts representative of methods, steps and computer programs according to the invention. The actual computer code for carrying out the functions represented by respective steps in the flow charts can be written in one or more desired computer program language by a person who has ordinary skill in the art, especially in the art of computer programming, software engineering and the like. The selected computer program language may be determined according to the computer system 1 and associated apparatus with which the organizer interface system 2 is used.
Turning to Fig. 3, the initialization routine 30 of the organizer interface system is shown. At step 31 the Palm computer system 1 is turned on; and at step 32 the computer operating system is initialized according to the pre-programming thereof by the manufacturer, e.g., 3Com. After such initialization, at step 34 the computer goes to the last application program that had been used in the Palm computer 1 prior to last being turned off or automatically shut down. In the case of a "hacks" program operating on the computer it is possible that the computer would start up on a diffe rent application than was active when the computer was shut down; the description of the invention here disregards the affects of hacks programs. At step 36 an inquiry is made whether such last application is the desired application program, i.e., the application program the user wishes to have operating and active? If affirmative, then the application program is continued at step 38. However, if that application program is not the desired one, then at step 40 the flow chart goes to the applications menu of the Palm computer 1 so the user can select the desired application program. The answer to the inquiry at step 36 and/or the selection of an application program following step
40 may be made by the user providing an input to the Palm computer 1, as by touching
the "pen" to the touch sensitive screen of the computer display 18; such input may be via a keyboard, mouse, joystick, keys or mouse click buttons, etc., depending on the type of computer 1 and the user input device 16 used therewith.
In Fig. 4 the start routine 41 for the organizer interface system 2 is illustrated. The start routine 41 is called and begun if the user selects the organizer interface system 2 from the applications menu at step 40. The start routine 41 also may be called and begun if the organizer interface system 2 was the last application running on the Palm computer 1 prior to the last shut down or turning off of the Palm computer. There may be other options and/or reasons for calling and running the organizer interface system start routine 41. At step 42 the organizer interface system 2 detects that it is to be run and then at step 44 the organizer interface system finds the plug-ins that have been stored in memory of the Palm computer 1. As a plug-in is found or detected, the plug-in is initialized at step 46.
Each application program, plug-in, etc. file has a signature composed of type and creator. For example, all text files should have a TEXT type, all applications should have an APPL type. Plug-ins should have Dplg type. The creator is unique for each set of files belonging for the same application. For example, all Word documents (TEXT type) would have a Mcsf type and the creator would also be the creator of the Word application. The protocol for the plug-ins is pre-defined for the developers of the plug-ins. With the foregoing in mind and provided such protocol is followed, the organizer interface system 2 and the Palm computer 1 will find the plug-ins and will coordinate operation with the plug-ins to carry out the functions of the plug-ins as designed by the developers of the plug-ins.
At the initialization step 46, which also is illustrated in a block diagram flow chart of Fig. 5, a found plug-in is launched. Launching usually means the loading of the plug-in (i.e., the plug-in program; reference to plug-in throughout typically means a program referred to as a plug-in) into memory and initiating the plug-in. The plug-in will initiate itself if it is the first time it is being launched. During such initialization of a plug-in, the plug-in sets its preferences. The plug-in also checks the version of the plug-in, e.g. , version 1, version 1.1, version 2, etc. If the version being launched is a newer version of the plug-in, e.g., an upgrade that adds or supports a new feature not
previously available, such as providing additional information for display or allowing the user to determine how many dates or other pieces of information are to be displayed, compared to the version of the plug-in when it was last launched, then at the initialization step 44, the preferences is updated to reflect the newer version. For example, the preferences may be modified by adding a new data field to it to reflect the change. If the new version does not change functions but only improves one or more functions, e.g., improves running time, then the preferences may not be changed although the version information would reflect the improvement. Updating of plug-in versions usually does not affect data that may have been stored in the plug-in, such as date, address, time, format, or the like so that the update will not overwrite data or cause data to be lost.
When the user installs a plug-in, the organizer interface system 2 knows where to put it, e.g. , in the bottom left corner based on information already stored in the organizer interface system 2 and/or based on information in the preferences or otherwise contained in the plug-in. The organizer interface system 2 arranges everything in the display 18 so it will go in the correct place. Preferably there is one channel or pipe via which the organizer interface system 2 communicates with all of the plug-ins. Once a command or signal is sent to the plug-in, then the plug-in must decide how to use that input and plug-in must operate or function accordingly, e.g., as the developer of the plug-in may have specified in writing the plug-in according to coordinated protocols with the organizer interface system 2. For example, each plug-in must come with a defined set of fields that can be accessed and/or controlled. Some of the defined set of fields may be the following: does the plug-in support resizing, dragging, small/normal view, border around it, etc. These parameters tell the organizer interface system 2 how to display the plug-in and what functionality would be available for this plug-in. Some plug-ins may not respond to certain commands; therefore, the icon (if one exists for this action) or menu command (from the plug-in's context menu) for calling such a response would not be shown or displayed for the user.
Another example of a feature of a plug-in is whether the plug-in has multiple instances; for example, a sticky notes plug-in. The plug-in could allow for display for multiple "sticky notes" (e.g. , Post-It type notes) displayed on the desk top.
Returning to the start routine 41, after initializing and launching a plug-in at step 46, an inquiry is made at step 48 to determine whether all plug-ins were found.
If all plug-ins have not been found, then loop line 49 is followed back to step 44 and the next plug-in is sought, found, launched, and initialized, as mentioned above. The software "knows" if there are more plug-ins by scanning all files with a 'Dplg' type, one after the other, until no files are found. This is done by a system call such as "GetNextFile".
After all plug-ins have been found, a continuous loop function 50 is carried out. The loop 50 operates for each plug-in to send a draw command. Thus, at step 52 each plug-in is respectively selected or called, and then the desired command, for example, a draw command represented at step 54, is carried out. After all plug-ins have been respectively selected at step 52 and a draw command carried out, then the loop 50 is repeated.
Briefly referring to Fig. 5, a block diagram flow chart representing the initialization of plug-ins step 46 is shown. There is a standard way to store p reference on a Palm computer 1 but it is not a requirement. The organizer interface system 2 will send each plug-in an "Init" command and it is up to the plug-in to check if it is new or not, depending on the method it uses to save preferences. Using the standard system calls on the Palm computer 1, a plug-in can try to retrieve its preferences and the system will let the plug-in know if any were found, if not - this mean the plug-in is new or more accurately - it never saved any preferences. At step 60 in inquiry is made whether this is the first time the plug-in is being called and launched. If yes, then at step 62 a preferences set of information concerning the plug-in is created. The plug-in then is launched at step 64, and the routine then returns to step 48 in Fig. 4. However, if at step 60 it is not the first time the plug-in is being run, then at step 66 an inquiry is made to detect whether the plug-in is a newer version or upgrade of a prior version of the plug-in or whether a new feature has been added, as was described above. If the answer is negative, then the plug-in is launched
at step 64 and the routine returns to step 48 in Fig. 4. However, if the answer is yes at step 66, then at step 68, if necessary, for example, due to adding of a new feature, the preferences for the plug-in are updated or modified and possibly other information in the preferences also may be revised. Then, at step 64 the plug-in is launched and the routine 46 returns to step 48 in Fig. 4.
In Fig. 6 is a routine or group of steps 70, which is similar to the loop 50, for sending one or more commands to all plug-ins. The routine 70 is entered at point 72, e.g. , after the loop 50 has been completed and/or in response to a user input, e.g., from the keyboard 16. At step 74 the next plug-in is sought. If it is found at step 76, then at step 78 a command is sent to the plug-in, e.g., to cause it to update information displayed on the computer display 18, to perform a computation, to retrieve information or some other command. User inputs may be those described below with respect to Fig. 7, e.g. , as events or user inputs. The next plug-in is sought then at step 74. If no more plug-ins are found at step 74, the routine 70 exits at 79. Such exit may be to a wait routine, e.g., one that waits until the next command is received from the computer 1, from a user input or event (Fig. 7), such as a user clicked input on a touch sensitive display screen, etc.
Referring to Fig. 7, a routine or set of steps 80 for responding to events, such as when the user presents an input, e.g., clicks on the touch sensitive display screen 18, that occur while the organizer interface system 2 is operating is illustrated. At step 82 a user clicks on the screen 18, e.g., for a Palm computer 1 the user touches the pen to a specific location on the touch sensitive screen 18. At step 84 an inquiry is made whether a plug-in was clicked. If not, then the routine 80 exits at 86 to wait for the next user "click" or some other input, shut-down, etc. If a plug-in was clicked, as detected at step 84, then at step 88 an inquiry is made whether the pen is held down, e.g. , is continuing to be held against the touch sensitive display screen 18 for longer than a prescribed period of time. If yes, then at step 90 an inquiry is made whether the pen is being held in the same place on the display screen 18. If yes, then at step 92 the context menu associated with the given plug-in is opened and features and/or functions thereof can be read, carried out, etc.
If at step 92 the pen is detected as not being held in the same place, this would indicate
an intention to carry out a drag function; and the plug-in or the displayed image produced thereby is dragged to a new location at step 94. After the pen is picked up at step 94 the drag function is completed, a command is sent through the command channel requesting the plug-in to reposition itself according to the new location to which it was dragged, and the routine exits at 86, as above. Similarly, at step 92, after the context menu has been closed or the step or steps according to such context menu has (have) been carried out, the routine exits at 86, as above.
If the pen is detected as being held down at step 88, then an inquiry is made at block 95 whether the pen was touched to the display screen 18 twice, e.g., as a double click. If not, then a pen down command is sent at block 96 to cause an appropriate operation or function of the plug-in that was "clicked". The routine 80 then exits at 86, as above. However, if at inquiry step 95 a double click is detected, e.g., the pen is touched to the screen twice in relatively rapid succession, e.g., as a double click of a conventional mouse click button or the like, then at step 98 a double click command is sent to the plug-in causing an appropriate operation or function of the plug-in as may be included in the programming thereof. The routine 80 then exits at 86, as above.
The plug-in is expected to follow some pre-defined rules, e.g. , launch the "father" application program in response to a double-click. Such rules are not obligatory, yet they are recommended to be followed to create a simple experience for the user of the organizer interface of the invention.
Some of the commands that the organizer interface system 2 can carry out or cause to be carried out by respective plug-ins are listed below. These are exemplary only, and it will be appreciated that others may be exist now or be developed in the future, as by the developers of respective plug-ins. In using the organizer interface system 2, during its operation, it always sends commands using the same one channel. Exemplary commands are, as follows:
Init (initialization of the plug-in, e.g., as described above as at step 46 of Fig. 4).
Set Rect (set rectangle, which allows the resize of the plug-in's "rectangle" or other area it occupies on the display resulting from operation on the plug-in, e.g., a drag or resize operation).
Get Features (detect and/or determine the following features of a plug-in :
Can resize (whether the display of the plug-in can be resized).
Can drag (whether the plug-in or the display thereof can be dragged to another location on the display screen 18; some can, e.g., a "to do" plug-in displaying the next task that should be done as stored by a "To Do" or other program, and some cannot, e.g., a clock display or screen saver).
Has Border (whether the plug-in has a border surrounding the display thereof and/or whether the border can be turned on and off).
Has preferences (whether the plug-in has preferences). Has dual views (whether the plug-in allows for plural views to be displayed, for example, a "To Do Plug" which has a minimum view mode which displays a light bulb (only indicating if there are any items to be displayed by b eing on or off) and a normal view mode which displays the items themselves)).
Draw (draw the image to be displayed by the plug-in, e.g., as was described above at step 54 in Fig. 4).
Pop up (whether a pop-up menu associated with the plug-in is to be displayed).
Pen down (whether a pen down function is detectable and, for example, can cause the plug-in to be dragged on the display 18). Double Click (whether the plug-in is responsive to a double click, e.g., step 98 in Fig. 7).
Open Form (whether the plug-in provides for opening a form that can be filled in by the user) .
An example of use and operation of the organizer interface system 2 and method of the invention is presented in Fig. 8. Running on the computer 1 is an application programming interface (API) 100. That API 100 calls the organizer interface system 2 to operation. The organizer interface system 2 sends commands, for example, using a single channel 102 to various plug-ins 104 after the detecting of the plug-ins, initializing them, etc., e.g., as was described above. The plug-ins 104 have respective features 106, which are detected and relied on for use and display purposes by the organizer interface system 2, including, for example, can resize, can drag, has border,
has preferences, has dual views, is idle hungry, etc.). Based on the information gathered from the plug-in and/or from the features and preferences, the plug-in may "do something" relative to an application program 108, such as the DateBook program mentioned above. For example, the plug-in may obtain data from the next date or several dates and display what events are coming up, such as birthday, things to do, etc., on the display 18.
Although the invention is shown and described with respect to certain embodiments and features, it is evident that equivalents and modifications will occur to others skilled in the art upon the reading and understanding of the specification. Also, it will be appreciated that various features of the invention including the various embodiments and functions disclosed may be combined and/or substituted for each other. The present invention includes all such equivalents and modifications.