[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

US6208336B1 - Dynamic graphical user interface feature-set configuration - Google Patents

Dynamic graphical user interface feature-set configuration Download PDF

Info

Publication number
US6208336B1
US6208336B1 US09/044,918 US4491898A US6208336B1 US 6208336 B1 US6208336 B1 US 6208336B1 US 4491898 A US4491898 A US 4491898A US 6208336 B1 US6208336 B1 US 6208336B1
Authority
US
United States
Prior art keywords
command
program
user interface
classes
graphical user
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
US09/044,918
Inventor
Kapono D. Carter
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oracle America Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Priority to US09/044,918 priority Critical patent/US6208336B1/en
Assigned to SUN MICROSYSTEMS, INC. reassignment SUN MICROSYSTEMS, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: CARTER, KAPONO D.
Priority to JP11698599A priority patent/JP2000029590A/en
Priority to EP99400686A priority patent/EP0943988A3/en
Priority to CNB991062876A priority patent/CN1280689C/en
Application granted granted Critical
Publication of US6208336B1 publication Critical patent/US6208336B1/en
Assigned to Oracle America, Inc. reassignment Oracle America, Inc. MERGER AND CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: Oracle America, Inc., ORACLE USA, INC., SUN MICROSYSTEMS, INC.
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces

Definitions

  • the present invention is directed to software programming systems and, more particularly, to systems and methods that dynamically reconfigure a graphical user interface associated with an application based on the additional features available at run-time.
  • Software developers have realized the advantages of using modular concepts in the design of computer program logic.
  • Software built using modular concepts are more portable to other hardware platforms, more compatible with other software and hardware interfaces, and tend to be more easily designed, tested, installed, and maintained.
  • Software developers design the program logic as groups of separate software modules (components) that perform specialized tasks. The developers design each module to be as independent and abstract as possible from other modules.
  • Object-oriented programming promotes modular software design. Object-oriented programming allows the software developer to associate a packet of information with a set of methods (or functions) for manipulating the information. The information packet with its associated methods is collectively called an object. By accessing a particular object, the developer gains implicit access to the object's associated methods.
  • Object-oriented systems make a distinction between the description of an object and the object itself. More than one similar object may be described by the same general description.
  • the object description is called a class because the description can be used to describe a type or “class” of similar objects.
  • an object is an instance of a class.
  • An example of an object-oriented programming language using objects and classes is Sun MicrosystemsTM JavaTM object-oriented programming language described in a text entitled “Java 1.1 Developer's Guide,” 2nd ed., 1997 by Sams.net Publishing, Jamie Jaworski, Ed., which is hereby incorporated by reference. Sun, Sun Microsystems, the Sun logo, Java, and Java-based trademarks are trademarks or registered trademarks of Sun Microsystems Inc. in the United States and other countries.
  • a problem with this solution is that it requires the software developer to create many versions of the same application with varying degrees of additional functionality, as desired by the customers. Otherwise, the software developer might create only a single version integrating all of the additional functionality. This, however, would increase the cost of software production and force customers that desire only the basic application to purchase the additional functionality.
  • Systems and methods consistent with the present invention address this need by moving the additional functionality to separate classes or modules that may be sold separate from the basic application, determining at run-time what functionality is available, and modifying the graphical user interface associated with the application to display controls for the available functions.
  • a system consistent with the present invention dynamically constructs a graphical user interface associated with an application.
  • a command class library stores command classes that represent additional functions to be integrated with the application.
  • An execution unit attempts to instantiate the command classes at run-time of the application, determines which of the command classes were instantiated successfully, and constructs the graphical user interface such that the graphical user interface contains the additional functions of the successfully instantiated command classes.
  • FIG. 1 is a diagram of a computer system consistent with the present invention
  • FIG. 2 is a diagram of a memory of FIG. 1 in an implementation consistent with the present invention
  • FIG. 3 is a diagram of the command class library of FIG. 2 in an implementation consistent with the present invention.
  • FIGS. 4A, 4 B, and 4 C are a flowchart of run-time activity consistent with the present invention.
  • FIGS. 5A, 5 B, and 5 C illustrate an example of a graphical user interface for a mail application that has been constructed in accordance with the present invention.
  • Systems and methods consistent with the present invention reconfigure the graphical user interface associated with a program based on the additional features determined to be available at run-time. That is, during execution, the program determines which classes are available and then constructs a graphical user interface to reflect all of the available classes. Each class typically represents one feature offered by the program. For example, one class for a mail program may represent a calendar function.
  • FIG. 1 is a diagram of a system architecture for a computer system with which the invention may be implemented.
  • the exemplary computer system of FIG. 1 is for descriptive purposes only. Although the description may refer to terms commonly used in describing particular computer systems, such as an IBM PS/2 personal computer, the description and concepts equally apply to other computer systems such as network computers, workstations, and even mainframe computers having architectures dissimilar to FIG. 1 .
  • the implementation is described with reference to a computer system implementing the Java programming language, the JavaTM runtime environment, and the JavaTM Virtual Machine specifications, although the invention is equally applicable to other computer systems having similar requirements.
  • the present invention may be implemented with both object-oriented and non-object-oriented programming systems.
  • Computer system 1000 includes a central processing unit (CPU) 1050 , which may be implemented with a conventional microprocessor, a random access memory (RAM) 1100 for temporary storage of information, and a read only memory (ROM) 1150 for permanent storage of information.
  • CPU central processing unit
  • RAM random access memory
  • ROM read only memory
  • a memory controller 1200 is provided for controlling RAM 1100 .
  • a bus 1300 interconnects the components of computer system 1000 .
  • a bus controller 1250 is provided for controlling bus 1300 .
  • An interrupt controller 1350 is used for receiving and processing various interrupt signals from the system components.
  • Mass storage may be provided by diskette 1420 , CD ROM 1470 , or hard drive 1520 .
  • Data and software may be exchanged with computer system 1000 via removable media such as diskette 1420 and CD ROM 1470 .
  • Diskette 1420 is insertable into diskette drive 1410 which is, in turn, connected to bus 1300 by a controller 1400 .
  • CD ROM 1470 is insertable into CD ROM drive 1460 which is, in turn, connected to bus 1300 by controller 1450 .
  • Hard disk 1520 is part of a fixed disk drive 1510 which is connected to bus 1300 by controller 1500 .
  • User input to computer system 1000 may be provided by a number of devices.
  • a keyboard 1560 and mouse 1570 are connected to bus 1300 by controller 1550 .
  • controller 1550 may be connected to bus 1300 and an appropriate controller and software, as required.
  • DMA controller 1600 is provided for performing direct memory access to RAM 1100 .
  • User output may be generated by video controller 1650 which controls video display 1700 .
  • Computer system 1000 also includes a communications adaptor 1900 which allows the system to be interconnected to additional computing resources via a local area network (LAN) or a wide area network (WAN), such as the Internet, schematically illustrated by bus 1910 and network 1950 .
  • LAN local area network
  • WAN wide area network
  • Signals traveling through network 1950 can generally be referred to as “carrier waves,” which transport information.
  • carrier waves transport information.
  • Operation of computer system 1000 is generally controlled and coordinated by operating system software.
  • the operating system controls allocation of system resources and performs tasks such as memory management, process scheduling, networking, and services, among other things.
  • FIG. 2 is a diagram of memory 2000 consistent with the present invention.
  • Memory 2000 may include system RAM 1100 (FIG. 1 ), but may alternatively include other types of memories including any of the memories shown in FIG. 1 .
  • Memory 2000 includes runtime system 2100 , applications 2200 , and data memory 2300 .
  • Java Virtual Machine (JVM) 2120 is a microprocessor implemented in software that runs using the capabilities provided by the operating system and the computer hardware.
  • JVM is described, for example, in a text entitled “The Java Virtual Machine Specification,” by Tim Lindholm and Frank Yellin, Addison Wesley, 1996, which is hereby incorporated by reference.
  • the runtime system 2100 also includes command class library 2140 . Command class library 2140 will be described below with reference to FIG. 3 .
  • Applications 2200 include programs executed by CPU 1050 and interpreted by JVM 2120 .
  • the programs include object-oriented applets, such as applets in the Java programming language, as well as other object-oriented programs, multiplatform programs, secure programs, distributed networking programs, multithreaded programs, web programs, etc. Some of the programs operate on objects stored in data memory 2300 .
  • Data memory 2300 stores data used by CPU 1050 and JVM 2120 .
  • FIG. 3 is a diagram of command class library 2140 .
  • Command class library 2140 stores multiple command classes 3100 - 3400 that contain, if successfully instantiated, additional functionality for an application.
  • Command class 3100 for example, includes constructor 3120 and package portion 3140 .
  • Constructor 3120 records a list of the identities of external packages (or items) upon which command class 3100 depends (i.e., other classes required to perform its functionality).
  • Package portion 3140 contains conventional code of the Java programming language for instantiating these packages.
  • constructor 3120 When invoked by JVM 2120 , constructor 3120 attempts to locate any packages (or classes in a package) that it needs for successful instantiation of command class 3100 . Constructor 3120 need not instantiate the packages found, it may only determine whether they exist. Package portion 3140 will instantiate the packages at a later time in a conventional manner, as required by the application.
  • constructor 3120 fails to locate a package, constructor 3120 throws an Exception.
  • the Exception informs JVM 2120 that instantiation of command class 3100 failed, and, therefore, the features offered by the command class are unavailable to the application user and should not be included in the graphical user interface.
  • FIGS. 4A-4C are a flowchart of run-time activity consistent with the present invention.
  • FIGS. 5A-5C illustrate an example of a graphical user interface for a mail application that has been constructed in accordance with the present invention.
  • JVM 2120 In executing an object-oriented programming language, such as the Java programming language, JVM 2120 performs many operations, including the execution of applications [step 4110 ]. While JVM 2120 will be described as performing the application execution, this activity is actually performed by CPU 1050 through the Java runtime system 2100 .
  • JVM 2120 will encounter instructions for constructing a graphical user interface that permits a user to interact with the application [step 4120 ]. Upon encountering these instructions, JVM 2120 accesses command class library 2140 in order to attempt to instantiate the command classes containing the additional functionality available for the application. JVM 2120 invokes constructor 3120 , for example, of command class 3100 (FIG. 3 ), using a “try-catch” clause [step 4130 ]. The try-catch clause allows the application to attempt to instantiate a command class and still continue to run in the event that an Exception is thrown because the command class could not be instantiated.
  • constructor 3120 attempts to locate the packages (classes) needed for successful instantiation of command class 3100 from the list constructor 3120 maintains [step 4140 ]. For each package successfully located, constructor 3120 returns, but discards, a pointer to the package. If a package cannot be located, constructor 3120 throws an Exception, such as:
  • constructor 3120 declares the instantiation unsuccessful [step 4150 ] and reports the unsuccessful instantiation in the way of a thrown Exception to JVM 2120 [step 4210 ] (FIG. 4 B). JVM 2120 then determines whether there are any remaining command classes to be instantiated [step 4220 ]. If one exists, JVM 2120 returns to step 4130 (FIG. 4A) to invoke the constructor for that command class.
  • JVM 2120 determines whether any command class has been successfully instantiated [step 4230 ]. If no command classes were instantiated, then JVM 2120 displays a basic (or default) graphical user interface on video display 1700 (FIG. 1) with only the basic controls for proper operation of the application [step 4240 ].
  • FIG. 5A illustrates an example of a graphical user interface with basic controls for a mail application.
  • the graphical user interface includes four basic controls depicted as buttons: In Box 5110 , Out Box 5120 , Trash 5130 , and Send Mail 5140 . These buttons invoke functions well known in the art.
  • JVM 2120 displays the graphical user interface on video display 1700 with additional controls relating to the successfully instantiated command classes [step 4250 ].
  • FIG. 5B illustrates an example of a graphical user interface with additional controls for a mail application.
  • the graphical user interface includes the four basic controls 5210 - 5240 and additional controls for a Spell Checker 5250 and a Thesaurus 5260 . These buttons invoke functions well known in the art.
  • step 4150 constructor 3120 successfully locates all of the required packages
  • constructor 3120 declares the instantiation successful, and reports the successful instantiation to JVM 2120 [step 4310 ] (FIG. 4 C).
  • JVM 2120 reconfigures the graphical user interface to add one or more controls for the successfully instantiated command class [step 4320 ]. As described above, these controls make the services provided by the command class available to the user.
  • JVM 2120 determines whether there are any remaining command classes to be instantiated [step 4330 ]. If one exists, JVM 2120 returns to step 4130 (FIG. 4A) to invoke the constructor for that command class. If there are no remaining command classes to be instantiated, however, JVM 2120 displays the graphical user interface on video display 1700 with additional controls relating to the successfully instantiated command classes [step 4340 ].
  • FIG. 5C illustrates an example of a graphical user interface with additional controls for a mail application.
  • the graphical user interface includes the four basic controls 5310 - 5340 and additional controls for a Calendar 5350 , a Spell Checker 5360 , and a Thesaurus 5370 . These buttons invoke functions well known in the art.
  • Systems and methods consistent with the present invention dynamically determine the form of a graphical user interface associated with an application based on a run-time determination of the available features.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Digital Computer Display Output (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

A system dynamically constructs a graphical user interface associated with an application. A command class library stores command classes that represent additional functions to be integrated with the application. An execution unit attempts to instantiate the command classes at run-time of the application, determines which of the command classes were instantiated successfully, and constructs the graphical user interface for the application such that the graphical user interface contains the additional functions of the successfully instantiated command classes.

Description

BACKGROUND OF THE INVENTION
The present invention is directed to software programming systems and, more particularly, to systems and methods that dynamically reconfigure a graphical user interface associated with an application based on the additional features available at run-time.
Software developers have realized the advantages of using modular concepts in the design of computer program logic. Software built using modular concepts are more portable to other hardware platforms, more compatible with other software and hardware interfaces, and tend to be more easily designed, tested, installed, and maintained. Software developers design the program logic as groups of separate software modules (components) that perform specialized tasks. The developers design each module to be as independent and abstract as possible from other modules.
Object-oriented programming promotes modular software design. Object-oriented programming allows the software developer to associate a packet of information with a set of methods (or functions) for manipulating the information. The information packet with its associated methods is collectively called an object. By accessing a particular object, the developer gains implicit access to the object's associated methods.
Object-oriented systems make a distinction between the description of an object and the object itself. More than one similar object may be described by the same general description. The object description is called a class because the description can be used to describe a type or “class” of similar objects. In other words, an object is an instance of a class. An example of an object-oriented programming language using objects and classes is Sun Microsystems™ Java™ object-oriented programming language described in a text entitled “Java 1.1 Developer's Guide,” 2nd ed., 1997 by Sams.net Publishing, Jamie Jaworski, Ed., which is hereby incorporated by reference. Sun, Sun Microsystems, the Sun logo, Java, and Java-based trademarks are trademarks or registered trademarks of Sun Microsystems Inc. in the United States and other countries.
Software developers conventionally provide to a customer all classes required by an application for run-time operation. However, an application may require classes that are not present at run-time. Consider, for example, a mail application that is integrated with a calendar module. The calendar module provides additional functions to the mail application, such as permitting the scheduling of appointments and events. The graphical user interface for the mail application might contain a schedule appointment button for invoking the appointment scheduling functions. A schedule appointment button would be useless. however, if the calendar classes are not available.
Software developers address this problem by creating two separate versions of the mail application: one integrated with the calendar, and one without it. This way, the software developers can meet the customers' needs by providing only those additional functions that the customers desire.
A problem with this solution is that it requires the software developer to create many versions of the same application with varying degrees of additional functionality, as desired by the customers. Otherwise, the software developer might create only a single version integrating all of the additional functionality. This, however, would increase the cost of software production and force customers that desire only the basic application to purchase the additional functionality.
Therefore, a need exists for providing customers with an application having only the desired functionality without requiring the creation of several versions of the application.
SUMMARY OF THE INVENTION
Systems and methods consistent with the present invention address this need by moving the additional functionality to separate classes or modules that may be sold separate from the basic application, determining at run-time what functionality is available, and modifying the graphical user interface associated with the application to display controls for the available functions.
A system consistent with the present invention dynamically constructs a graphical user interface associated with an application. A command class library stores command classes that represent additional functions to be integrated with the application. An execution unit attempts to instantiate the command classes at run-time of the application, determines which of the command classes were instantiated successfully, and constructs the graphical user interface such that the graphical user interface contains the additional functions of the successfully instantiated command classes.
BRIEF DESCRIPTION OF THE DRAWINGS
The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate an embodiment of the invention and, together with the description, explain the objects, advantages, and principles of the invention. In the drawings:
FIG. 1 is a diagram of a computer system consistent with the present invention;
FIG. 2 is a diagram of a memory of FIG. 1 in an implementation consistent with the present invention;
FIG. 3 is a diagram of the command class library of FIG. 2 in an implementation consistent with the present invention;
FIGS. 4A, 4B, and 4C are a flowchart of run-time activity consistent with the present invention; and
FIGS. 5A, 5B, and 5C illustrate an example of a graphical user interface for a mail application that has been constructed in accordance with the present invention.
DETAILED DESCRIPTION
The following detailed description of the invention refers to the accompanying drawings. The same reference numbers in different drawings identify the same or similar elements. Also, the following detailed description does not limit the invention. Instead, the scope of the invention is defined by the appended claims and equivalents.
Systems and methods consistent with the present invention reconfigure the graphical user interface associated with a program based on the additional features determined to be available at run-time. That is, during execution, the program determines which classes are available and then constructs a graphical user interface to reflect all of the available classes. Each class typically represents one feature offered by the program. For example, one class for a mail program may represent a calendar function.
SYSTEM DESCRIPTION
FIG. 1 is a diagram of a system architecture for a computer system with which the invention may be implemented. The exemplary computer system of FIG. 1 is for descriptive purposes only. Although the description may refer to terms commonly used in describing particular computer systems, such as an IBM PS/2 personal computer, the description and concepts equally apply to other computer systems such as network computers, workstations, and even mainframe computers having architectures dissimilar to FIG. 1.
Furthermore, the implementation is described with reference to a computer system implementing the Java programming language, the Java™ runtime environment, and the Java™ Virtual Machine specifications, although the invention is equally applicable to other computer systems having similar requirements. Specifically, the present invention may be implemented with both object-oriented and non-object-oriented programming systems.
Computer system 1000 includes a central processing unit (CPU) 1050, which may be implemented with a conventional microprocessor, a random access memory (RAM) 1100 for temporary storage of information, and a read only memory (ROM) 1150 for permanent storage of information. A memory controller 1200 is provided for controlling RAM 1100.
A bus 1300 interconnects the components of computer system 1000. A bus controller 1250 is provided for controlling bus 1300. An interrupt controller 1350 is used for receiving and processing various interrupt signals from the system components.
Mass storage may be provided by diskette 1420, CD ROM 1470, or hard drive 1520. Data and software may be exchanged with computer system 1000 via removable media such as diskette 1420 and CD ROM 1470. Diskette 1420 is insertable into diskette drive 1410 which is, in turn, connected to bus 1300 by a controller 1400. Similarly, CD ROM 1470 is insertable into CD ROM drive 1460 which is, in turn, connected to bus 1300 by controller 1450. Hard disk 1520 is part of a fixed disk drive 1510 which is connected to bus 1300 by controller 1500.
User input to computer system 1000 may be provided by a number of devices. For example, a keyboard 1560 and mouse 1570 are connected to bus 1300 by controller 1550. It will be obvious to those reasonably skilled in the art that other input devices, such as a pen, a tablet, or speech recognition mechanisms, may be connected to bus 1300 and an appropriate controller and software, as required. DMA controller 1600 is provided for performing direct memory access to RAM 1100. User output may be generated by video controller 1650 which controls video display 1700.
Computer system 1000 also includes a communications adaptor 1900 which allows the system to be interconnected to additional computing resources via a local area network (LAN) or a wide area network (WAN), such as the Internet, schematically illustrated by bus 1910 and network 1950. Signals traveling through network 1950 can generally be referred to as “carrier waves,” which transport information. Although aspects of the present invention are described as being stored in memory in the form of instructions, one skilled in the art will appreciate that those aspects may be stored on other computer-readable media, such as secondary storage devices like hard disks, floppy disks, or CD ROM, or other forms of RAM or ROM, or a carrier wave.
Operation of computer system 1000 is generally controlled and coordinated by operating system software. The operating system controls allocation of system resources and performs tasks such as memory management, process scheduling, networking, and services, among other things.
FIG. 2 is a diagram of memory 2000 consistent with the present invention. Memory 2000 may include system RAM 1100 (FIG. 1), but may alternatively include other types of memories including any of the memories shown in FIG. 1.
Memory 2000 includes runtime system 2100, applications 2200, and data memory 2300. At the core of the Java runtime system 2100 is Java Virtual Machine (JVM) 2120. JVM 2120 is a microprocessor implemented in software that runs using the capabilities provided by the operating system and the computer hardware. The JVM is described, for example, in a text entitled “The Java Virtual Machine Specification,” by Tim Lindholm and Frank Yellin, Addison Wesley, 1996, which is hereby incorporated by reference. The runtime system 2100 also includes command class library 2140. Command class library 2140 will be described below with reference to FIG. 3.
Applications 2200 include programs executed by CPU 1050 and interpreted by JVM 2120. The programs include object-oriented applets, such as applets in the Java programming language, as well as other object-oriented programs, multiplatform programs, secure programs, distributed networking programs, multithreaded programs, web programs, etc. Some of the programs operate on objects stored in data memory 2300. Data memory 2300 stores data used by CPU 1050 and JVM 2120.
EXEMPLARY COMMAND CLASS LIBRARY
FIG. 3 is a diagram of command class library 2140. Command class library 2140 stores multiple command classes 3100-3400 that contain, if successfully instantiated, additional functionality for an application. Command class 3100, for example, includes constructor 3120 and package portion 3140. Constructor 3120 records a list of the identities of external packages (or items) upon which command class 3100 depends (i.e., other classes required to perform its functionality). Package portion 3140 contains conventional code of the Java programming language for instantiating these packages.
When invoked by JVM 2120, constructor 3120 attempts to locate any packages (or classes in a package) that it needs for successful instantiation of command class 3100. Constructor 3120 need not instantiate the packages found, it may only determine whether they exist. Package portion 3140 will instantiate the packages at a later time in a conventional manner, as required by the application.
If constructor 3120 fails to locate a package, constructor 3120 throws an Exception. The Exception informs JVM 2120 that instantiation of command class 3100 failed, and, therefore, the features offered by the command class are unavailable to the application user and should not be included in the graphical user interface.
SYSTEM OPERATION
FIGS. 4A-4C are a flowchart of run-time activity consistent with the present invention. FIGS. 5A-5C illustrate an example of a graphical user interface for a mail application that has been constructed in accordance with the present invention.
In executing an object-oriented programming language, such as the Java programming language, JVM 2120 performs many operations, including the execution of applications [step 4110]. While JVM 2120 will be described as performing the application execution, this activity is actually performed by CPU 1050 through the Java runtime system 2100.
At some point during application execution, JVM 2120 will encounter instructions for constructing a graphical user interface that permits a user to interact with the application [step 4120]. Upon encountering these instructions, JVM 2120 accesses command class library 2140 in order to attempt to instantiate the command classes containing the additional functionality available for the application. JVM 2120 invokes constructor 3120, for example, of command class 3100 (FIG. 3), using a “try-catch” clause [step 4130]. The try-catch clause allows the application to attempt to instantiate a command class and still continue to run in the event that an Exception is thrown because the command class could not be instantiated.
Once invoked, constructor 3120 attempts to locate the packages (classes) needed for successful instantiation of command class 3100 from the list constructor 3120 maintains [step 4140]. For each package successfully located, constructor 3120 returns, but discards, a pointer to the package. If a package cannot be located, constructor 3120 throws an Exception, such as:
public CalendarCommand throws ClassNotFoundException {
if (getClass.getResouce(“/sunw/calendar/Calendar.class”) == null)
throw new ClassNotFoundException();
}
for an unavailable Calendar command class.
If a single required package cannot be located, constructor 3120 declares the instantiation unsuccessful [step 4150] and reports the unsuccessful instantiation in the way of a thrown Exception to JVM 2120 [step 4210] (FIG. 4B). JVM 2120 then determines whether there are any remaining command classes to be instantiated [step 4220]. If one exists, JVM 2120 returns to step 4130 (FIG. 4A) to invoke the constructor for that command class.
If there are no remaining command classes to be instantiated, JVM 2120 determines whether any command class has been successfully instantiated [step 4230]. If no command classes were instantiated, then JVM 2120 displays a basic (or default) graphical user interface on video display 1700 (FIG. 1) with only the basic controls for proper operation of the application [step 4240]. FIG. 5A illustrates an example of a graphical user interface with basic controls for a mail application. The graphical user interface includes four basic controls depicted as buttons: In Box 5110, Out Box 5120, Trash 5130, and Send Mail 5140. These buttons invoke functions well known in the art.
If one or more command classes have been successfully instantiated, however, JVM 2120 displays the graphical user interface on video display 1700 with additional controls relating to the successfully instantiated command classes [step 4250]. FIG. 5B illustrates an example of a graphical user interface with additional controls for a mail application. The graphical user interface includes the four basic controls 5210-5240 and additional controls for a Spell Checker 5250 and a Thesaurus 5260. These buttons invoke functions well known in the art.
If in step 4150 (FIG. 4A) constructor 3120 successfully locates all of the required packages, constructor 3120 declares the instantiation successful, and reports the successful instantiation to JVM 2120 [step 4310] (FIG. 4C). In response, JVM 2120 reconfigures the graphical user interface to add one or more controls for the successfully instantiated command class [step 4320]. As described above, these controls make the services provided by the command class available to the user.
JVM 2120 then determines whether there are any remaining command classes to be instantiated [step 4330]. If one exists, JVM 2120 returns to step 4130 (FIG. 4A) to invoke the constructor for that command class. If there are no remaining command classes to be instantiated, however, JVM 2120 displays the graphical user interface on video display 1700 with additional controls relating to the successfully instantiated command classes [step 4340]. FIG. 5C illustrates an example of a graphical user interface with additional controls for a mail application. The graphical user interface includes the four basic controls 5310-5340 and additional controls for a Calendar 5350, a Spell Checker 5360, and a Thesaurus 5370. These buttons invoke functions well known in the art.
CONCLUSION
Systems and methods consistent with the present invention dynamically determine the form of a graphical user interface associated with an application based on a run-time determination of the available features.
The foregoing description of preferred embodiments of the present invention provides illustration and description, but is not intended to be exhaustive or to limit the invention to the precise form disclosed. Modifications and variations are possible in light of the above teachings or may be acquired from practice of the invention. The scope of the invention is defined by the claims and their equivalents.
For example, an implementation consistent with the present invention has been described as beginning with a basic graphical user interface and adding visual controls based on the additional features found available at run-time. However, this need not be the case. The graphical user interface could be initially loaded with all possible controls. Controls would then be removed from the interface based on the run-time determination of available additional features.
In addition, while the foregoing description described the generation of a graphical user interface, the description and concepts equally apply to other types of user interfaces, such as text-based user interfaces.

Claims (24)

What is claimed is:
1. A system that dynamically constructs a graphical user interface associated with a program, comprising:
a command class library to store at least one command class, the command class representing an additional function for use with the program; and
an execution unit to attempt to instantiate the command class at run-time of the program without updating the program to determine whether the command class was instantiated successfully, and to construct the graphical user interface such that the graphical user interface contains the additional function corresponding to the successfully instantiated command class, wherein the execution unit includes a configuration component to modify the graphical user interface by inserting visual controls for invoking the additional function of the successfully instantiated command class, and to display the modified graphical user interface on a visual display, without user intervention.
2. The system of claim 1, wherein the command class includes:
a constructor to locate items for successful instantiation of the command class when invoked by the execution unit.
3. The system of claim 2, wherein the constructor includes:
a notification component that informs the execution unit whether all items were located, and when the constructor fails to locate at least one of the items, that informs the execution unit that the additional function of the command class is unavailable.
4. The system of claim 1, wherein the execution unit includes:
a reconfiguration component to modify the graphical user interface by adding or removing visual controls for invoking the additional function of the successfully instantiated command class.
5. The system of claim 1, wherein the execution unit includes:
a display component to display a basic graphical user interface on a visual display when the command class is not successfully instantiated.
6. A computer-implemented method for dynamically constructing a user interface associated with a program, command classes associated with the program representing additional functions for use by the program, comprising the steps of:
attempting to instantiate the command classes without updating the program;
determining which of the command classes are instantiated successfully;
constructing the user interface such that the user interface contains the additional functions corresponding to the successfully instantiated command classes;
modifying the user interface by inserting visual controls for invoking the additional function of the successfully instantiated command class, without user intervention; and
displaying the modified graphical user interface on a visual display.
7. The method of claim 6, wherein the attempting step includes the substeps of:
locating items for successful instantiation of the command classes, and
declaring an instantiation successful when all of the items are located.
8. The method of claim 7, wherein the declaring substep includes the substep of:
determining the instantiation unsuccessful when the locating substep fails to locate at least one of the items.
9. The method of claim 6, wherein the constructing step includes the substep of:
modifying the user interface by adding or removing visual representations for invoking the additional functions of the successfully instantiated command classes.
10. The method of claim 6, wherein the constructing step includes the substep of:
displaying a basic user interface on a visual display when the attempting step fails to successfully instantiate any of the command classes.
11. A computer program product stored on a computer-readable medium for dynamically constructing a user interface associated with a program, command classes associated with the program representing additional functions for use by the program, comprising:
an instantiation module to attempt to instantiate the command classes at run-time of the program without updating the program, and to determine which of the command classes were instantiated successfully; and
a configuration module to construct the user interface such that the user interface contains the additional functions corresponding to the successfully instantiated command classes, wherein the configuration module includes:
a modification component to modify the user interface by inserting visual representations for invoking the additional functions of the successfully instantiated command classes, without user intervention, and
a display component to display the modified user interface on a visual display.
12. The computer program product of claim 11, wherein the instantiation module includes:
a locating component to locate items for successful instantiation of the command classes, and
a reporting component to declare an instantiation of one of the command classes successful when all of the items for the command class are located.
13. The computer program product of claim 12, wherein the reporting component includes:
a determination component to declare the instantiation unsuccessful when the locating component fails to locate at least one of the items for the command class.
14. The computer program product of claim 11, wherein the configuration module includes:
a modification component to modify the user interface by adding or removing visual representations for invoking the additional functions of the successfully instantiated command classes.
15. The computer program product of claim 11, wherein the configuration module includes:
a display component to display a basic user interface on a visual display when the instantiation module fails to successfully instantiate any of the command classes.
16. A data processing system comprising:
a memory including
a program,
a command class area to store a plurality of command classes that represent additional modules for use with the program, and
a runtime environment to attempt to instantiate the command classes at run-time of the program without updating the program, to determine which of the command classes were instantiated successfully, and to construct a graphical user interface for the program by adding or removing visual controls for invoking the additional modules of the successfully instantiated command classes; and
a processor for executing the program and the runtime environment.
17. In a system including a memory containing a command class library storing a plurality of command classes representing additional functions for use with a program, and a runtime environment, the runtime environment comprising:
an instantiation module configured to attempt to instantiate the command classes during execution of the program, without updating the program, and to determine which of the command classes were instantiated successfully; and
a configuration module configured to construct a user interface for the program such that the user interface contains the additional functions corresponding to the successfully instantiated command classes, and
wherein the configuration module includes a modification component to modify the user interface, without user intervention, by inserting visual controls for invoking the additional functions of any successfully instantiated command classes.
18. A method that dynamically constructs a graphical user interface associated with a program, comprising the steps of:
storing a plurality of command classes in a memory, each of the command classes representing a module for use with the program;
executing the program;
attempting to locate items for successful instantiation of the command classes during execution of the program without updating the program;
declaring an instantiation of one of the command classes successful only if all of the items for the command class are located;
constructing the graphical user interface by adding or removing visual controls without user intervention, for invoking the modules associated with the successfully instantiated command classes to or from a basic graphical user interface for the program.
19. A system for dynamically constructing a graphical user interface associated with a program, comprising:
a command class library to store a plurality of command classes, the command classes representing an additional function for use with the program, wherein each command class includes:
a constructor for maintaining a list of required packages that each respective command class requires to perform its associated additional function; and
a package portion for instantiating the packages, and
an execution unit to attempt to instantiate a predetermined number of command classes from the plurality of command classes, to invoke each constructor in the predetermined number of command classes to attempt to locate any packages needed for successful instantiation of each command class, and to construct a graphical user interface that contains functions corresponding to the program and any successfully instantiated command classes.
20. The system of claim 19, wherein the constructor includes:
an exception component for generating an exception in response to each constructor failing to locate a required package for each respective command class.
21. The system of claim 20, wherein the execution unit includes:
an exception receiving component for receiving each exception generated by the exception component and excluding each respective command class associated with a missing required package from the graphical user interface.
22. A method for dynamically constructing a graphical user interface associated with a program, comprising the steps of
storing a plurality of command classes in a memory, each command class representing an additional function for use with the program;
executing the program;
attempting to locate items for successful instantiation of the command classes during execution of the program;
declaring an instantiation of one of the command classes successful only if all of the items for the command class are located;
constructing a default graphical user interface including default program functions in the event none of the command classes are instantiated; and
constructing a second graphical user interface including the default program functions and functions corresponding to any successfully instantiated command classes.
23. The method of claim 22, wherein attempting to locate items includes:
generating an exception in the event one or more items could not be located, wherein the program continues to execute after the exception is generated.
24. A data processing system comprising:
a memory including
a program,
a command class area to store a plurality of command classes that represent additional modules for use with the program, wherein the command class includes a constructor to locate items for successful instantiation of the command class; and
a runtime environment to attempt to instantiate the command classes at run-time of the program without updating the program, to determine which of the command classes were instantiated successfully, and to construct a graphical user interface for the program by adding or removing visual controls for invoking the additional modules of the successfully instantiated command classes, without user intervention; and
a processor for executing the program and the runtime environment.
US09/044,918 1998-03-20 1998-03-20 Dynamic graphical user interface feature-set configuration Expired - Lifetime US6208336B1 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
US09/044,918 US6208336B1 (en) 1998-03-20 1998-03-20 Dynamic graphical user interface feature-set configuration
JP11698599A JP2000029590A (en) 1998-03-20 1999-03-19 Dynamically constructing system for graphic user interface, mounting method in computer for dynamically constructing graphic user interface, and run-time operation of graphic user interface
EP99400686A EP0943988A3 (en) 1998-03-20 1999-03-19 Dynamic graphical user interface feature-seat configuration
CNB991062876A CN1280689C (en) 1998-03-20 1999-03-22 Dynamic graphical user interface feature-set configuration

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/044,918 US6208336B1 (en) 1998-03-20 1998-03-20 Dynamic graphical user interface feature-set configuration

Publications (1)

Publication Number Publication Date
US6208336B1 true US6208336B1 (en) 2001-03-27

Family

ID=21935034

Family Applications (1)

Application Number Title Priority Date Filing Date
US09/044,918 Expired - Lifetime US6208336B1 (en) 1998-03-20 1998-03-20 Dynamic graphical user interface feature-set configuration

Country Status (4)

Country Link
US (1) US6208336B1 (en)
EP (1) EP0943988A3 (en)
JP (1) JP2000029590A (en)
CN (1) CN1280689C (en)

Cited By (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020057299A1 (en) * 1999-07-15 2002-05-16 Dobronsky Oren System and method for the dynamic improvement of internet browser navigability
US20030001892A1 (en) * 2001-06-14 2003-01-02 International Business Machines Corporation Property editor graphical user interface apparatus, method and computer program product
US20030055944A1 (en) * 2001-09-19 2003-03-20 Belovich Steven G. Method and system for providing cross-platform, interoperable, rule-based software system
US20030129976A1 (en) * 2001-06-04 2003-07-10 Nec Corporation Mobile telephone set capable of altering key layout thereof and mobile telephone system including the same
US20040122915A1 (en) * 2001-11-28 2004-06-24 John Saare Method and system for an extensible client specific calendar application in a portal server
US20040148354A1 (en) * 2001-11-16 2004-07-29 John Saare Method and system for an extensible client specific mail application in a portal server
US6879665B1 (en) 1999-04-27 2005-04-12 International Business Machines Corporation Method and apparatus for sending messages in a data processing system
US20050125787A1 (en) * 2003-12-05 2005-06-09 Leonid Tertitski Convertible runtime graphical user interface
US20060052080A1 (en) * 2002-07-17 2006-03-09 Timo Vitikainen Mobile device having voice user interface, and a methode for testing the compatibility of an application with the mobile device
US20060123345A1 (en) * 2004-12-06 2006-06-08 International Business Machines Corporation Platform-independent markup language-based gui format
US7064772B1 (en) * 2000-06-01 2006-06-20 Aerocast.Com, Inc. Resizable graphical user interface
US20060230343A1 (en) * 1998-12-08 2006-10-12 Yodlee.Com, Inc. Method and apparatus for detecting changes in websites and reporting results to web developers for navigation template repair purposes
US20060248449A1 (en) * 2005-04-29 2006-11-02 Microsoft Corporation XML application framework
US20060248112A1 (en) * 2005-04-29 2006-11-02 Microsoft Corporation Application description language
US20060245096A1 (en) * 2005-04-29 2006-11-02 Microsoft Corporation Application framework phasing model
US20060248450A1 (en) * 2005-04-29 2006-11-02 Microsoft Corporation XML application framework
US20060248104A1 (en) * 2005-04-29 2006-11-02 Microsoft Corporation Transaction transforms
US20070150820A1 (en) * 2005-12-22 2007-06-28 Salvo Anthony C Data-driven user interface
US20070150821A1 (en) * 2005-12-22 2007-06-28 Thunemann Paul Z GUI-maker (data-centric automated GUI-generation)
US20070220035A1 (en) * 2006-03-17 2007-09-20 Filip Misovski Generating user interface using metadata
US20070236746A1 (en) * 2006-04-06 2007-10-11 International Business Machines Corporation Storing modification data for recreating modifications
US20070245252A1 (en) * 2006-04-05 2007-10-18 International Business Machines Corporation Enhanced display of properties for a program object
US20090106353A1 (en) * 2001-09-19 2009-04-23 Belovich Steven G Method and system for providing an event auditing client server software arrangement
US20090132966A1 (en) * 2003-03-19 2009-05-21 International Business Machines Corporation Method and System for Modifying Properties of Graphical User Interface Components
US7752535B2 (en) 1999-06-01 2010-07-06 Yodlec.com, Inc. Categorization of summarized information
US20100180205A1 (en) * 2009-01-14 2010-07-15 International Business Machines Corporation Method and apparatus to provide user interface as a service
US7856386B2 (en) 2006-09-07 2010-12-21 Yodlee, Inc. Host exchange in bill paying services
US8285982B2 (en) 1999-08-13 2012-10-09 Blinkx Uk Limited System and method for customizing electronic messages
US20120331411A1 (en) * 2011-06-22 2012-12-27 Apple Inc. Cross process accessibility
US8826158B1 (en) * 2011-12-14 2014-09-02 The United States Of America As Represented By The Director, National Security Agency Device for and method of determining changes to GUI
US8959330B2 (en) 1999-07-15 2015-02-17 Pinball Acquisition Corporation Dynamic improvement of internet browser appearance and connectivity
US10073604B2 (en) * 2014-05-15 2018-09-11 Oracle International Corporation UI-driven model extensibility in multi-tier applications
US10438205B2 (en) 2014-05-29 2019-10-08 Apple Inc. User interface for payments

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6806890B2 (en) * 1999-08-17 2004-10-19 International Business Machines Corporation Generating a graphical user interface from a command syntax for managing multiple computer systems as one computer system
US20020163538A1 (en) * 2001-05-07 2002-11-07 Koninklijke Philips Electronics N.V. Electronic mail guide
JP4741908B2 (en) * 2005-09-08 2011-08-10 キヤノン株式会社 Information processing apparatus and information processing method
CN101192254B (en) * 2006-12-13 2010-06-09 腾讯科技(深圳)有限公司 Push button configuration system and push button configuration method
GB0820427D0 (en) * 2008-11-07 2008-12-17 Inq Entpr Ltd Mobile communication device and method
JP2013025612A (en) * 2011-07-22 2013-02-04 Kddi Corp User interface creation device and user interface creation program
US10331174B2 (en) * 2016-09-23 2019-06-25 Apple Inc. Dynamic function row customization

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5327529A (en) * 1990-09-24 1994-07-05 Geoworks Process of designing user's interfaces for application programs
US5404441A (en) * 1992-06-23 1995-04-04 Hitachi, Ltd. Method and apparatus for automatically generating a graphical user interface control program
US5437025A (en) * 1993-01-26 1995-07-25 International Business Machines Corporation System and method for run time configuration of objects in an object oriented computing environment
US5659751A (en) 1990-01-05 1997-08-19 Apple Computer, Inc. Apparatus and method for dynamic linking of computer software components
US5767849A (en) * 1995-08-18 1998-06-16 International Business Machines Corporation Personality neutral window management subsystem
US5786815A (en) * 1996-05-31 1998-07-28 Sun Microsystems, Inc. Configurable runtime graphical user interface widget management
US5901313A (en) * 1991-03-01 1999-05-04 Ast Research, Inc. Application management system

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5659751A (en) 1990-01-05 1997-08-19 Apple Computer, Inc. Apparatus and method for dynamic linking of computer software components
US5327529A (en) * 1990-09-24 1994-07-05 Geoworks Process of designing user's interfaces for application programs
US5901313A (en) * 1991-03-01 1999-05-04 Ast Research, Inc. Application management system
US5404441A (en) * 1992-06-23 1995-04-04 Hitachi, Ltd. Method and apparatus for automatically generating a graphical user interface control program
US5437025A (en) * 1993-01-26 1995-07-25 International Business Machines Corporation System and method for run time configuration of objects in an object oriented computing environment
US5767849A (en) * 1995-08-18 1998-06-16 International Business Machines Corporation Personality neutral window management subsystem
US5786815A (en) * 1996-05-31 1998-07-28 Sun Microsystems, Inc. Configurable runtime graphical user interface widget management

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Jaworski, "Java 1.1 Developer's Guide," 2nd Ed., 1997, Sams.net Publishing.
R. Jones et al., "Garbage Collection, Algorithms For Automatic Dynamic Memory Management," 1996.
T. Lindholm et al., "The Java Virtual Machine Specification," Addison Wesley, 1996.

Cited By (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8069407B1 (en) * 1998-12-08 2011-11-29 Yodlee.Com, Inc. Method and apparatus for detecting changes in websites and reporting results to web developers for navigation template repair purposes
US20060230343A1 (en) * 1998-12-08 2006-10-12 Yodlee.Com, Inc. Method and apparatus for detecting changes in websites and reporting results to web developers for navigation template repair purposes
US6879665B1 (en) 1999-04-27 2005-04-12 International Business Machines Corporation Method and apparatus for sending messages in a data processing system
US7752535B2 (en) 1999-06-01 2010-07-06 Yodlec.com, Inc. Categorization of summarized information
US8959330B2 (en) 1999-07-15 2015-02-17 Pinball Acquisition Corporation Dynamic improvement of internet browser appearance and connectivity
US7222303B2 (en) 1999-07-15 2007-05-22 Hotbar.Com, Inc. System and method for the dynamic improvement of internet browser navigability
US8661349B2 (en) 1999-07-15 2014-02-25 Pinball Acquisition Corporation System and method for the dynamic improvement of internet browser navigability
US20020057299A1 (en) * 1999-07-15 2002-05-16 Dobronsky Oren System and method for the dynamic improvement of internet browser navigability
US8285982B2 (en) 1999-08-13 2012-10-09 Blinkx Uk Limited System and method for customizing electronic messages
US7064772B1 (en) * 2000-06-01 2006-06-20 Aerocast.Com, Inc. Resizable graphical user interface
US20030129976A1 (en) * 2001-06-04 2003-07-10 Nec Corporation Mobile telephone set capable of altering key layout thereof and mobile telephone system including the same
US7231230B2 (en) * 2001-06-04 2007-06-12 Nec Corporation Mobile telephone set capable of altering key layout thereof and mobile telephone system including the same
US20030001892A1 (en) * 2001-06-14 2003-01-02 International Business Machines Corporation Property editor graphical user interface apparatus, method and computer program product
US7322028B2 (en) 2001-09-19 2008-01-22 Belovich Steven G Method and system for providing a virus-immune, rule-based cross-platform software system
US20090106353A1 (en) * 2001-09-19 2009-04-23 Belovich Steven G Method and system for providing an event auditing client server software arrangement
US20030055944A1 (en) * 2001-09-19 2003-03-20 Belovich Steven G. Method and system for providing cross-platform, interoperable, rule-based software system
US20040148354A1 (en) * 2001-11-16 2004-07-29 John Saare Method and system for an extensible client specific mail application in a portal server
US20040122915A1 (en) * 2001-11-28 2004-06-24 John Saare Method and system for an extensible client specific calendar application in a portal server
US7809578B2 (en) * 2002-07-17 2010-10-05 Nokia Corporation Mobile device having voice user interface, and a method for testing the compatibility of an application with the mobile device
US20060052080A1 (en) * 2002-07-17 2006-03-09 Timo Vitikainen Mobile device having voice user interface, and a methode for testing the compatibility of an application with the mobile device
US7865844B2 (en) * 2003-03-19 2011-01-04 International Business Machines Corporation Method and system for modifying properties of graphical user interface components
US20090132966A1 (en) * 2003-03-19 2009-05-21 International Business Machines Corporation Method and System for Modifying Properties of Graphical User Interface Components
US20050125787A1 (en) * 2003-12-05 2005-06-09 Leonid Tertitski Convertible runtime graphical user interface
US20060123345A1 (en) * 2004-12-06 2006-06-08 International Business Machines Corporation Platform-independent markup language-based gui format
US20060248112A1 (en) * 2005-04-29 2006-11-02 Microsoft Corporation Application description language
US8418132B2 (en) 2005-04-29 2013-04-09 Microsoft Corporation Application description language
US8799857B2 (en) 2005-04-29 2014-08-05 Microsoft Corporation XML application framework
US8793649B2 (en) 2005-04-29 2014-07-29 Microsoft Corporation XML application framework
US20060245096A1 (en) * 2005-04-29 2006-11-02 Microsoft Corporation Application framework phasing model
US20060248449A1 (en) * 2005-04-29 2006-11-02 Microsoft Corporation XML application framework
US20060248450A1 (en) * 2005-04-29 2006-11-02 Microsoft Corporation XML application framework
US8275793B2 (en) 2005-04-29 2012-09-25 Microsoft Corporation Transaction transforms
US20060248104A1 (en) * 2005-04-29 2006-11-02 Microsoft Corporation Transaction transforms
US7886269B2 (en) 2005-04-29 2011-02-08 Microsoft Corporation XML application framework
US8046737B2 (en) 2005-04-29 2011-10-25 Microsoft Corporation XML application framework
US20060248451A1 (en) * 2005-04-29 2006-11-02 Microsoft Corporation XML application framework
US8132148B2 (en) * 2005-04-29 2012-03-06 Microsoft Corporation XML application framework
US20070150820A1 (en) * 2005-12-22 2007-06-28 Salvo Anthony C Data-driven user interface
US20070150821A1 (en) * 2005-12-22 2007-06-28 Thunemann Paul Z GUI-maker (data-centric automated GUI-generation)
US20070220035A1 (en) * 2006-03-17 2007-09-20 Filip Misovski Generating user interface using metadata
US20070245252A1 (en) * 2006-04-05 2007-10-18 International Business Machines Corporation Enhanced display of properties for a program object
US8751946B2 (en) * 2006-04-05 2014-06-10 International Business Machines Corporation Enhanced display of properties for a program object
US20070236746A1 (en) * 2006-04-06 2007-10-11 International Business Machines Corporation Storing modification data for recreating modifications
US8812556B2 (en) 2006-04-06 2014-08-19 International Business Machines Corporation Storing modification data for recreating modifications
US7856386B2 (en) 2006-09-07 2010-12-21 Yodlee, Inc. Host exchange in bill paying services
US20100180205A1 (en) * 2009-01-14 2010-07-15 International Business Machines Corporation Method and apparatus to provide user interface as a service
US20120331411A1 (en) * 2011-06-22 2012-12-27 Apple Inc. Cross process accessibility
US8826158B1 (en) * 2011-12-14 2014-09-02 The United States Of America As Represented By The Director, National Security Agency Device for and method of determining changes to GUI
US10073604B2 (en) * 2014-05-15 2018-09-11 Oracle International Corporation UI-driven model extensibility in multi-tier applications
US10438205B2 (en) 2014-05-29 2019-10-08 Apple Inc. User interface for payments
US10748153B2 (en) 2014-05-29 2020-08-18 Apple Inc. User interface for payments
US10796309B2 (en) 2014-05-29 2020-10-06 Apple Inc. User interface for payments
US10902424B2 (en) 2014-05-29 2021-01-26 Apple Inc. User interface for payments
US10977651B2 (en) 2014-05-29 2021-04-13 Apple Inc. User interface for payments
US11836725B2 (en) 2014-05-29 2023-12-05 Apple Inc. User interface for payments

Also Published As

Publication number Publication date
EP0943988A2 (en) 1999-09-22
CN1232201A (en) 1999-10-20
JP2000029590A (en) 2000-01-28
CN1280689C (en) 2006-10-18
EP0943988A3 (en) 2004-12-29

Similar Documents

Publication Publication Date Title
US6208336B1 (en) Dynamic graphical user interface feature-set configuration
US5535389A (en) Business process objects with associated attributes such as version identifier
US5632034A (en) Controlling method invocation sequence through virtual functions in an object-oriented class library
US8024405B2 (en) Declarative model for concurrency-control across lightweight threads
US6301585B1 (en) Redundancy elimination in the persistence of object graphs
US5421013A (en) Agent-based multithreading application programming interface
Yokote et al. A Reflective Architecture for an Object-Oriented Distributed Operating System.
US6615342B1 (en) Method and apparatus for object-oriented interrupt system
US8635595B2 (en) Method and system for managing non-compliant objects
US20070239505A1 (en) Abstract execution model for a continuation-based meta-runtime
EP0531107A2 (en) Program execution manager
Kleinoder et al. MetaJava: an efficient run-time meta architecture for Java/sup TM
US6378003B1 (en) Method and system for deriving metaclasses in an object oriented system
US6163813A (en) Pattern for instantiating objects of unknown type in object-oriented applications
EP0784264B1 (en) A computer-implemented process for determining a minimum code set for an executable application in a data processing system
US6195791B1 (en) Object mechanism and method for coupling together processes to define a desired processing environment in an object oriented framework
US7519801B2 (en) Post-install configuration of modules during startup of a modular application platform
US9830206B2 (en) Cross-thread exception handling
EP1280051A1 (en) Information processing method and system
US7512953B1 (en) System and method for smart proxy creation and management within a distributed object-oriented architecture
US20050273785A1 (en) Program flow control: contexts in environments not supporting direct modification of the CPU state
US20130104148A1 (en) Ambient state for asynchronous methods
US20060282460A1 (en) Method and system for generic data objects
CA2097541C (en) Concurrency control through a class library in object oriented technology
Hammer How to touch a running system: Reconfiguration of stateful components

Legal Events

Date Code Title Description
AS Assignment

Owner name: SUN MICROSYSTEMS, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:CARTER, KAPONO D.;REEL/FRAME:009229/0922

Effective date: 19980521

STCF Information on status: patent grant

Free format text: PATENTED CASE

CC Certificate of correction
FPAY Fee payment

Year of fee payment: 4

FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

FPAY Fee payment

Year of fee payment: 8

FPAY Fee payment

Year of fee payment: 12

AS Assignment

Owner name: ORACLE AMERICA, INC., CALIFORNIA

Free format text: MERGER AND CHANGE OF NAME;ASSIGNORS:ORACLE USA, INC.;SUN MICROSYSTEMS, INC.;ORACLE AMERICA, INC.;REEL/FRAME:037278/0649

Effective date: 20100212