CA2207331C - Method for associating data bearing objects with user interface objects - Google Patents

Method for associating data bearing objects with user interface objects Download PDF

Info

Publication number
CA2207331C
CA2207331C CA002207331A CA2207331A CA2207331C CA 2207331 C CA2207331 C CA 2207331C CA 002207331 A CA002207331 A CA 002207331A CA 2207331 A CA2207331 A CA 2207331A CA 2207331 C CA2207331 C CA 2207331C
Authority
CA
Canada
Prior art keywords
user interface
association
instance
data
type
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
CA002207331A
Other languages
French (fr)
Other versions
CA2207331A1 (en
Inventor
Richard Williamson
Linus Upson
Jack Greenfield
Daniel Willhite
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.)
Next Software Inc
Original Assignee
Next Software 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 Next Software Inc filed Critical Next Software Inc
Publication of CA2207331A1 publication Critical patent/CA2207331A1/en
Application granted granted Critical
Publication of CA2207331C publication Critical patent/CA2207331C/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

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/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • 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

Abstract

The present method provides objects called association objects (350) that are interposed between a controlling object (340) and each user interface object (360). The association object for a particular kind of user interface object contains code that allows the association object to interact with the specific kind of user interface object. Each association object also presents a standard interface to a controlling object, regardless of the kind of user interface object with which the association object is associated. The association object takes care of any conversion or translation that must be performed to convert a data value sent by the controlling object into an appropriate value that can be displayed by the user interface object.
Accordingly, instead of requiring different interface code for each kind of user interface object used (360), a controlling object (340) requires only a single block of interface code for communicating with all association objects (350).

Description

CA 0220733l l997-06-06 METHOD FOR ASSOCIATING DATA BEARING
OBJECI S WITH USER INTERFACE OBJECTS
BACKGROUND OF THE ~VENTION
~ 1. FIELD OF THE INVENTION

The present invention relates to the field of object oriented progr~mming languages.
2. BACKGROUND ART

Object oriented progr~mming languages are progr~mming languages in which program ~lement~ are viewed as objects that can pass mess~geS to 15 each other. An object includes its own data and progr~mming code and is intf~rn~lly self-reliant. The progrAmming code of an object includes procedures or methods. The methods of an object are invoked by mess~ges received from another object. Each object is an instance of an object class.
The ~ elLies of the objects in a dass are ~l~fine~l by a class d~finitiotl A
20 class ri~finitiQn may utilize a hierarchical class structure in which objects in the class inherit properties of a parent class in ~ lition to ~rop~- Lies explicitly ~i~fine~l for the class. This inheritance property allows objects from to be reused from one program to another, f~t ilit~ting the sharing of progr~mming code between diL~.~l~L programs.
To write an application program in an object oriented progr~mming language, a progr~mm~r j~lPntifies the real-world objects of a problem, the data and proressing requirements of those objects, and the communil ~tion~
nee-led between the objects, and encapsulates these in ciass definition~. This 30 process is simplified by taking advantage of the inheritance property of object W O96/18147 PCTrUS9S/15852 classes by basing the class ~lPfinitions to the extent possible on preexisting object classes.

Objects are assembled in a modular fashion to create applir~hor 5 Objects comml-nicAte with one another by means of mpss~ges. In order for meaningful comml-nic~tions to occur, the message sent from a s~n~ling object to a receiving object must be a mPss~ge to which the receiving object can respond. The sending object must thelero~ know the type of m~sSAge to which the receiving object will respond. Similarly, if the m~ssAge is one that 10 invokes a response from the receiving object, the s~n~ling object must be prepared to accept the response.

Although objects are generally internally self-reliant, and can therefore be viewed as modules that can be assembled with other objects into a variety 15 of applir~tion programs, the simple assembling of objects does not create a functional program. The objects must also be able to il,l~icollllnunicate with each other. Although objects represent reusable code, A~i~litionAl code must be written to provide for the required commllnicAffon between objects. For an object to communicate with a number of different objects, each of which 20 send and receive different m~ss~ges~ the object must be provided with a~lo~liate code for each of the different objects.

An example is a controlling object that bears data and/or m~nAgeS a number of data bearing objects and communicates with a number of user 25 interface objects that display data provided by the controlling object to a user and accept input from a user. Figure 1 shows an example of the interactions between a prior art controller object 100 managing data bearing objects 105a to 105f and a graphical user interface 110. Graphical user interface 110 includes three kinds of user interface objects: a table object 120, two text field objects W O96~18147 PCT~US95/15852 130 and 140, respectively, and two check box objects 150 and 160, respectively.
Each of these three kinds of user interface objects opelaLes differently and responds to and generates different messages. Controller 100 th~.e~le contAin~ separate interface code for interfacing with each kind of object.
5 Accordingly, controller 100 rcnt~in~ table object interface code 170, text field object interface code 180, and check box object interface code 190.

Certain prior art object oriented progr~mming environm~nt~ provide user interfaces with a pre~l~fine-l structure. These prell~finerl structures do 10 not allow developers the free-lorn to easily assemble custom user interfaces.

W O96/18147 PCT~US95/15852 SUMMARY OF THE INVENTION

The present invention comprises a method for allowing a controlling object to interface with any number of user interface objects without 0 5 requiring separate interface code for each user interface object and without restricting the user interface to certain predetermined ~lesign~. The present method provides objects called association objects that are interposed between a controlling object and each user interface object. Each kind of user int~rf~ce object has a correspon~iing association object. The association object10 for a particular kind of user interface object contains code that allows the ~ association object to interact with the specific kind of user interface objectwith which it is associated. Each association objec~ also presents a standard interface to a controlling object, regardless of the kind of user interface object with which the association object is associated. The association object takes 15 care of any conversion or tr~n~l~tion that must be performed to convert a data value sent by the controlling object into an ayyroyl;ate value that can be displayed by the user interface object. Accordingly, instead of requiring different interface code for each kind of user interface object used, a controlling object requires only a single block of interface code for 20 communicating with all association objects, which in turn provide the user interface specific code needed for each kind of user interface object.

W O96/18147 PCTAUS9~/15852 BRIEF DESCRIPTION OF THE DRAWINGS

Figure 1 is a diagram of a controller object and user int~rh~e objects of the prior art.

Figure 2 is a diagram of a controller object and user interface objects in one embo~limerlt of the present invention.

Figure 3 is a diagram of the ar~hitectllre of an EllLe.~lise Objects 10 Framework application.

Figure 4 is a diagram showing the relationship between data corlt~ine-l in a database and data contained in ~iction~ry and ~LLL~L~lise objects in one embofiim~n~ of the present inv~ntion Figure 5 is a flow chart for one embodiment of the present inv~ntion Figure 6A is a flow diagram illustrating "takeValuesFromDictionary".

Figure 6B is a flow diagram illustrating "findMethod".

Figure 6C is a flow diagram illustrating "findInstance".

4 Figure 7A is a flow diagram illustrating "valuesForKeys".
Figure 7B is a flow diagram illustrating "returnMethod".

Figure 7C is a flow diagram illustrating "returriInstance".

DETAILED DESCRI:PTION OF THE ~VENTION

In the following description, numerous specific details are set forth in order to provide a thorough understanding of the present inv~ntion It will 5 be apparent to one skille~l in the art, however, that the present invention may be prA~tice-3 without these specific details. In other instances, well-known features have not been described in detail in order not to llnnec~ssArily obscure the present invention.

Figure 2 is a block diagram showing the r~lAhcn~hip between a controlling object and user interface objects in one embodiment of the present invontion Figure 2 shows a controller object 100 that mAnAges a number of data bearing objects 105a to 105f and a user interface 110 including a table object 120, two text field objects 130 and 140, respectively, and two 15 check box objects 150 and 160 respectively. Controller 100 passes data between data bearing objects 105a to 105f and the various user interface objects 120, 130r 140, 150 and 160. However, instead of s~nlling and receiving messages directly to and from the user interface objects as in the prior art ~y~lelll of Figure 1, in the embo~iimpnt of the present invention shown in Figure 2, 20 controller 100 communicates indirectly with the user interface objects via "association" objects 210a, 210b, 210c, 220a, 220b, 230a and 230b that are interposed between controller 100 and each of user interface objects 205a, 205b, 205c, 130, 140, 150 and 160, respectively. Controller 100 sends and receives nless~ges to and from the association objects, while the association 25 objects send and receive m~ss~ges to and from the user interface objects as well as to and from controller 100. The association objects present a consistent interface to controller 100. Accordingly, instead of having blocks ofinterface code for each of the three kinds of user interface objects contAine~l in user interface 110 (i.e. table objects, text field objects, and check box objects), W O96118147 PCTrUS95/15852 controller 100 needs only a single block of interface code with which it can communicate with any asso~ i~tion object. The association objects in turn take care of any conversion or tr~nsl~tion required between mess~es sent and received by controller 100 and messages sent and received by the various 5 user interface objects.

In the emborlim~nt of the invention shown in Figure 2, a separate asso~ i~tion object is l~tili7e-1 for each user interface object, even if there are several user int~rfAce objects of the same kind. Thus, in the embolliment of 10 Figure 2, separate text field association objects 220a and 220b are used for each of text field objects 130 and 140, respectively. In the same m~nn~r, separate check box association objects 230a and 230b are used for each of check box objects 150 and 160, respectively, and separate table column asso- i~tion objects 210a, 210b and ZlOc are used for each column of table 205, which in this 15 embodi~nent cc,llL~,ises table colurnn objects 205a, 205b and 205c, respectively.
In other embo~liment~, table 205 may comprise a single object and be associated with a single assori~tion Association objects are objects provided by the present invention that 20 can be llhli7e~1 by a programmer to tie a controlling object to a variety of different kinds of user interface ob~ects, without requiring the progr~mm~r to provide the controlling object with the code necessary to cornmlmicate with each type of user interface object. The controlling object need only be ~ provided with the means to send and respond to standard messages. The 25 association objects in turn take care of the nless~ge sen~ing and receiving requir~m~nt~ specific to each kind of user interface object. The object - oriented progr~mming environm~nt used with the embodim~nt of Figure 2 ~ is particularly suited for the development of data base application programs.

However, the method of the present invention can also be used for non-data base applications.

The association objects of the present invention are useful particularly 5 in a progrAmming environmPnt that provides a s~l~oction of user interface objects to a programmer. The present invention adds a pre~ finerl association for each user interface object provided by the progrAmming el-vilo~-ment An application progrAmmPr wishing to display data from a controlling object can easily create an ayp~o~liate user interface by selecting 10 the desired user interface object and linking it with the controlling object using the ~ iate association object for the user interface object s~lerte-1.
A progrAmm~r may also develop custom user interface objects and corresponding association objects.

The purpose of a user interface is to display data output to a user and to accept data input from a user. Although the specific merhAnil ~ of how data is displayed on a user interface or how it is received from a user varies dep~n~ling upon the specific type of user interface object used, the basic underlying process is the saIne: a user interface object receives data from a 20 controlling object and displays it, in some mAnn~r, on the user interface; if a change is made by the user on the user interface, that change is tr~n~mitte-1 tothe controlling object. The present invention allows the controlling object to deal with these basic underlying processes, while isolating the controlling object from any more complex control requir~m~nt~ of particular user 25 interface objects.

One embo~liment of the present invention is used in "Enterprise Objects Framework (TM)", a set of tools and resources for the NEXl~
(TM) object oriented programming environment from NeX~ Computer, Inc.

w o 96rl8147 PCTAUS95/15852 _9_ EllL~l~lise Objects Framework provides tools that enable program developers to design database applirAfion~ that work with r~l~tion~l databases, that are easy to build and m~int~in~ that communicate with other applir~hons, and that utili~e standard interface features. ElLL~ ise Objects Framework is 5 ~ies~ihed in detail in Enterprise Objects Framework Developer's Guide (Ne~Cr Computer, Inc., 1994) and Enterprise Objects Framework Reference (Ne~Cr Computer, Inc., 1994), both of which are incorporated herein by reference.

The arrhite~lre and data flow of an EnL~.t,l;se Objects Framework application is shown in Figure 3. In the application shown in Figure 3, data flows from a r~l~hrn~l database 300 to a user interface 360, and vice versa, viaa number of illl~l v~lling modules and levels.

The flow of data from the relational database 300 to user interface 360 proceeds as follows. Data in the form of rows of data from r~l~hon~l database 300 are retrieved from r~l~tion~ t~h~e 300 to an adaptor level 310, using well-known r~l~tion~ t~h~e access terhniques. At adaptor level 310, the raw data received from relational ~l~t~h~e 300 is packaged into "-liction~ry 20 objects." Dir~ n~ry objects cc-nt~in key-value pairs: each key typically represents the name of a database column, and the key's value colle~onds to the data for the column of the particular row that was read from r~ ion~l ~i~f~h~se 300. The key-value coding protocol used in El,l~l~lise Objects Framework is described below in fhe section entitlprl Key-Value Coding 25 Protocol. This key-value coding protocol is also described in co-p~n~ling U.S.
Patent ApplicAtion Serial No. 08/353,524 for "Dynamic Object Communication Protocol" filed on December 7, 1994, ~signe~l to the ~signee of the present invention, and incorporated herein by reference. As shown in CA 0220733l l997-06-06 W O 96/18147 PCTrUS9S/15852 Figure 3, data in the form of these dictionary objects is passed from adaptor level 310 to database level 320.

Database level 320 creates "enterprise objects" from the dictionary 5 objects. El~L~lise objects are like other objects used in object oriented progr~mnting languages in that they couple data with methods for operating on that data. However, an ~ ise object has certain characteristics that distinguish it from other object classes. An enterprise object has properties that map to stored data, and an instance of an el,Lel~lise object typically 10 corresponds to a single row or record in a database. Further, an enterprise object knows how to interact with other parts of the El~ lise Object Framework to give and receive values for its properties. The ingrer~iPnt~ that make up an enterprise object are its class definition and the data values for the row or record to which it corresponds. The merh~nism that enables an 15 ~l,Lel~lise object to exchange its values with other objects is the Key ValueCoding protocol referred to above and described below in the section entitled Key-Value Coding Protocol. The Key Value protocol also allows an object to set its values at runtime from a dictionary, as explained below.

When an object is to be loaded with values from a dictionary, the methods and instance variables of the object are e~minefl to determine if there is a match between keys in the rliction~ry and the object. This is accomplished by searching for the method "set (property)" where property is the column name or key in the ~lirtion~ry. For example, with property n~me~l "lastName", the ~ysL~ looks for a method of the form "setLastName". If there is a match, the value of the property '1astName" can be loaded into the object using the setLastName method.

CA 0220733l l997-06-06 W O96/lX147 PCT~US95/15852 If no methods produce a mAt~h, the ~ysLen- looks for an instance variable whose name is the same as the property's and sets is value directly.

When a dictionary is to be loA(le-l with values from an object, the 5 properties of the ~ ry are provided as an array. For each property, the methods of the object are ex~minPd to determine if they are of the form "property". If there is a match, the object's value for that method is returned to the ~liction~ry. If there is no match, the instances of the object are ~min~-l If an instance is found that matches the property, the value is 10 returned to the dictionary.

takeValuesFromDictionary The method for seffing values in an object is imp]PmPntP~ by 15 "takeValuesFromDicfion~ry". This method is implemented on the root object of the enviro1lm~nt so that, in a class hierarchy ~y~Lell~, every object inherits the method. In one embo-lim~nt, the default imp]em~nPtions of the key-value co~ling methods use the class fl~finition as follows:

1. The key-value coding method looks for an accessor method based on the property name. For example, with a property n~me-l lastName, take ValuesFromDictionary: looks for a mefho-l of the form setLastName: (note that the first letter of the property name is made uppercase).
2. If the key-value coding method doesn't find an accessor method, it looks for an instance variable whose name is the same as the property's and sets or retrieves its value directly. In setting an W O 96/18147 PCTrUS95115852 instance variable, takeValuesFromDiction~ry: retains the new value and releases the old one.

The takeValuesFromDictionary method may be impl~mPnted as 5 described in the pseudo code provided in the section ~ntitlefl Pseudocode.
The operation of takeValuesFromDictionary is illustrated in the flow diagrams of Figures 6A, 6B, and 6C.

takeValuesFromDictionary Flow Referring first to Figure 6A takeValuesFromDictionary is illustrated.
At decision block 602, the argument "All key-value pairs in dictionary processed?" is made. This step checks to see if the object has been ~x~minetl for all dichon~ry pairs. If the argument at rlet~t~ion block 602 is true, the 15 Sy~L~ ends at step 612. That means that all dictionary- pairs have been proc.ossef~ for the object, and thus the method is completed. If the argumen~
at ~leri~ion block 602 is false, not all pairs have been processed. At step 604 the class description for the object is obtained and ~minecl At step 606, "findMethod" is executed to determine if the object has a set method with a 20 name that matches a property of the key-value pair. This step is illustrated in more detail in Figure 6B.

After fin~ ethod has been exectlte~l at step 606, the ~y~l~m proceeds to decision block 608. At decision block 608, the argument "method found?" is 25 made. This step is to determine whether there has been a match between the methods of the object and the property of the key-value pair. If the argument at (let~i~ion block 608 is true, a match has been found and the data can be lo~-lef~ into the object. The routine of Figure 6A ends at step 612. If the argument at ~e~ ion block 608 is false, no methods match the ~lo~elly of the W O96tl8147 PCTnUS9~/158~2 key-value pair and the ~y~ must then check the instances of the object.
This is accomplished by invoking "findInstance" at step 610. This step is illustrated in more detail in Figure 6C. After fin~lTn~tance has been ~xecllte~l, the :jy~L~ln ends at step 612.
findMethod Flow Step 606 of Figure 6A, "findMethod" is illustrated in more detail in Figure 6B. The process "findMethod" is used to e~mine the m~thc~c of the 10 object being P~AminP~ to ~lpt~rmin~ if its methods match the properties of the key-value pairs being proc~sefl At step 622, the method to be searched for is fine~l as being of the type "set" plus the property of the key being processed (e.g. if the ~o~ y of the key-value pair is "lastName", then the ~y~"~ looks for "setLastName"). At step 624, the class description is ~ min~l for the -15 method that is being searched. At ~~ri~ion block 626, the argurnent "metho~lfound?" is made. This is to determine if the object contAin~ the method that is being searched. If the argument is false, findMethod ends at step 634 and returns to ~l~ri~ion block 626 of Figure 6A.

If the argument at ~le~ ion block 626 is true, a match has been found.
The ~ys~m at 628 determines the argument type for the method. At step 630, the value of the key-value pair is converted to the argument ty-pe if neCpssAry.At step 632, the method with the value as argument is called to load the data value into the object. At step 634, fin~ ethod ends and returns to takeValuesFromDiction~ry of Figure 6A.

W O96118147 PCTrUS95/15852 findInstance Flow Step 610 of Figure 6A, "fin~lTnstance", is illustrated in Figure 6C. In the ~lel~l.ed embodiment of the present invention! the methods of an object are 5 examined first when ~ttPmpting to load data. If no suitable methods are found, the instance variables aré Px~mine~l using "finllTn.stance". At step 642,the class description of the object is e~minell to determine if there is an instance equal to the key property of the key-value pair being procPsse-l At ~le~ ision block 644, the argument "instance found?" is made. If the argument 10 is false, that is if no instances match the property, the fin~lTnstance process ends at step 644 and returns to step 612 of Figure 6A.

If the argument at decision block 644 is true, a match between and instance variable and the key-value property has been found. The system 15 then at step 646 determines the instance type. At step 648, the storage offset of the instance in the object is determin~l At step 650, the value of the key-value pair being examined is converted to the object's instance type. At step 652, the value from the key-value pair is assigned to the instance in the objectusing the previously determined instance offset. At step 654, fin~lTnstance 20 ends and returns to step 612 of Figure 6A.

valuesForKeys The method for ]o~ling a dictionary with values from an object is 25 "valuesForKeys". The class ~l~finihorl~ for valuesForKeys is as described above for "takeValuesForDictionary". The valuesForKeys method may be implPmPntell as described in the pseudo code (see section entitled Pseudocode below). The operation of valuesForKeys is illustrated in the flow diagrams of Figures 7A, 7B, and 7C.

CA 0220733l l997-06-06 W O 96/18147 PCTrUS95/lS852 valuesForKeys Flow r Referring first to Figure 7A, valuesForKeys is illustrated. When 5 valuesForKeys is invoked, it is to take data from an object and load it into adata destinAtion (e.g. a r~l~tionAi ~i~t~h~e). The ~,opelLies of the keys of thekey-value dirhon~ry of the data destination are put into a key array. At ~Pri~ion block 720, the argument "All keys in key array processed?" is made.
If the argument is true, all array entries have been processed and the method 10 is over, the process ends at step 714. If the argument is false, the next key in the key array is proc~s~l At step 704, the ~y~L~ gets the class description for the object. At step 706, ''~eLul~lMethod" is executed to determine if the objecthas any methods (e.g. setValue, getValue, etc.) that match the key property.
This step is illustrated in more detail in Figure 7B.
After retllrnl\~ethod has been execllte-l at step 706, the ~ysL~ returns to lle~i~ion block 708. At rl~ ion block 708, the argument "method found?"
is made. This step is to determine whether their was a match between any of the methods of the object and the key property. If the argument at t1e~ i~ion 20 block 708 is true, a match has been found and the data can be lc ~lefl into the data des~in~tion The process then ends at step 714. If the argument at ~le~i~ion block 708 is false, no methods match the key property. The ~y~le then checks the instance variables for m~trhe~. This is ~cco~nplished by invoking "returnInstance'i at step 710. This step is illustrated in more detail 25 in Figure 7C. After returnInstance has been executed, the process stores the key and returned value as a key-value pair in the key-value dictionary. At step 714, valuesForKeys ends.

returnMethod Flow Step 706 of Figure 7A, "returnMetho~l", is illustrated in Figure 7B.
The process "returnMethod" is used to P~mine the methods of the object to 5 determine if any; of its methods match the property of the key ~r~ Ly array value being processed. At step 722, the method to be searched for is made defined as one having the current key property. At step 724, the dass description is ex~mined for the defined method. At decision block 726, the argument "method found?" is made. If the argument is false, there is no 10 match, returnMethod ends at step 734 and returns to valuesForKeys of Figure 7A.

If the argument is true, at step 728, a match has been found. At step 728, the value type of the method is determinPfl- At step 730, the method is 15 called and returns the result as value. At step 732, the process converts thevalue to value type, if neress~ry, and the value can be lo~de-l into the data destin~tion. The process returnMethod ends at step 734.

returnInstance Flow Step 710 of Figure 7A, "returnInstance" is illustrated in Figure 7C. In the ~lefelred embodiment of the present invention, this process is invoked only when no m~t--hing methods have been found for a key property being processed. At step 742, the class description is examined to determine if there 25 is an instance variable that m~t~ h~ the key property. At c~e.-i~ion block 744, the argument "instance found?" is made. If the argument is false, no m~tl~h~ have been found, the returnInstance process ends at step 752 and returns to valuesForKeys of Figure 6A.

W O96/18147 PCT~US95/15852 If the argument at ~le~i~ion block 744 is true, there is a match of an instance variable and the key property. At step 746, the type of the instance vAriAhle is determine~l At 748, the storage offset of the instance variable in the object is determin~ri At step 750, the value of the instance is converted to5 instance type and can be 1O~tle~ into key-value pair of the dictiorl~ry of the data destin~tion- At step 752, returnInstance ends and returns to valuesForKeys of Figure 7A.

Returning to Figure 3, the ~ se objects created at ~ hA~e level 10 320 are passed from ~l~t~h~e level 320 to data source 330. Data source 330 is- an object that has the ability to fetch, insert, update and delete el,L~l~ise objects. Changes made by data source 330 to an e..l~ .ise object are p~serl down via database level 320 and adaptor level 310 to r~l~tionAl database 300 so that a corresporlllin~ change is made to the ll~ph~e for a change made to 15 an ~ lise object.

Data source 330 supplies ~l.L~.~lise objects created at ~l~t~h~e level 320 to controller 340. As shown in Figure 3, controller 340 transports data in the form of values from the enterprise objects to user interface 360 via 20 asso. i~tion objects 350. Controller 340 coor~lin~tes the values displayed in the user interface with the correspon-lin~ enterprise object values. When ellL~ ise objects are modified, controller 340 tells data source 330, which is responsible for prop~g~ting changes to r~l~tion~ t~h~e 300. A description of the controller object class provided by Elllelpl.se Objects Framework is set 25 forth below in the section entitled Controller Object Class.

Movement of data in the architecture shown in figure 3 is bi-directioT-Al Changes made by a user to data values displayed on user W O 96/18147 PCTrUS9S/15852 interface 360 propagate to relational rl~tAhA~e 300 in the opposite direction asdata from database 300 propagates to user interface 360.

As mPntic-ne-l above, the merhAni.cm by which data moves through 5 an Enterprise Object Framework application is a key-value coding informal protocol. Regardless of their characteristics, objects that CC.l~Ollll to the key-value coding protocol (such as ellL~l~lise objects) have a rommon characL-eristic: their data is accessed by other objects in the form of key-value pairs. Key-value coding methods enable an object to receive values for its 10 keys and to give out its keys' values to other objects.

By using key-value coding, different types of objects can pass their values to each other, thereby transporting data through the different layers shown in Figure 3. Figure 4 shows how the properties in an enterprise object 15 420 colle~ond to the key-value pairs in a llictionAry 410, and how both in turn correspond to a row in a relationl database 400. Enterprise object properties and dictionary keys (such as firstName and lastName shown in Figure 4) map to columns in the ~l~tAh~se; the value for each key (for example "Lesly" and "Oswald", respectively) m~trhr-s the column's value for 20 the colle~onc~ing row.

User interface 360 of Figure 3 typically ronPins a number of user interface objects such as pop-up lists, forms, text fields, and tables. These user interface objects display the values of keys of enterprise objects, and, if the 25 values are edited in the user interface, comm~lnirAte the changes back to the el~ lise objects.

The interface between user interface objects and related enterprise objects is provided by controller object 340 and association objects 350 of W O 96/18147 PCTAUS9~/158~2 Figure 3, which together may be viewed as an interface layer between L~,~lise objects and user interface objects.

The primary actor in the interface layer is controller 340. Controller 5 340 uses asso- i~tion objects to mP~liAte between e,lL~ ;se objects and user int~rfAce 360. Each association object links a single user interface object to aclass property name (key) in an ellL~l~lise object or objects m~n~ed by the controller. The property (key) value is displayed in the user interface object with which the associ~tion object is linke~l Enterprise Objects Framework 10 provides a nurnber of pre-~lPfirlefl association objects and associated user - interface objects to the developer. The section entitled Association Objects ~below) contains descriptions of association objects provided by Enterprise Objects Framework. Specific aSsori~tion objects provided by Ellle~lise Objects Frarnework include EOAssociation (an abstract association object 15 class) and the subclasses EOActionCellAssociation, EOColumnAssori~1;on;
EOControlAssociation; EOIrnageAssori~tion; EOMatrixAssori~tion, EOPopUpAssori~tion; EOQl1~lifie~1~ssori~ticn; and EOTextAssori~tion As described above, an association object ties a single user interface 20 object (such as a text field) to a value cc,lle~onding to a key in an enlel~lise object or objects m~n~ged by the controller object. For example, a text field may display the value "Jun-19-1992" for the key "hireDate" of ~l.L~ l;se object 420 of ~igure 4. An association object is provided with an ay~r~liate key to enable it to obtain data from a data bearing object using a key-value 25 co-lin~ protocol. By means of association objects and their keys and the key-value coding ~y~l~ll., a controller can set data from data bearing objects to user interface objects and retrieve data from user interface objects into data bearing objects. The user interface objects~ association objects, and keys can be ~sPmhled without data, and be archived for later use with an application W O 96118147 PCTrUS95/15852 program. By using the key-value coding protocol, these objects can be assembled and configured ahead of time and made to execute at run time with no compilation.

One of the ftmctiQns performed by association objects, if neefle-l, is to convert values extracted by the controller from an enterprise object and passed to an association object to a type that can be displayed by the colle~ ling user interface object. In a simil~r manner, a data source converts edited values returned to the controller from an association object to an a~ro~l;ate value class that can be applied by the data source to the ~ corresponrling enterprise object.

A controller works closely with it's association objects to ensure that values displayed in the user interface remain synchronized with the correspon~ling ellLel~lise object values. When an enterprise object value changes, the controller tells its association objects. Conversely, when an association object is notified of a change in a displayed value by its user interface object, the association object informs its controller of the change that occurred.
Figure 5 shows the sequence of steps that occur when the value displayed by a user interface object has changed. The sequence starts when a user changes the value of a displayed user interface object at block 500. For example, a user may change the hire date of "Jun-19-1992" displayed in a text field object for w,~ lise object 420 of Figure 4 to a new date of "Jun-19-1991"
by typing the new date in the text field object displayed on the user interface.

In response to this change, at block 510 of Figure 5, the user interface object sends its association object (in this emborlinlent there is a one-to-one W ~ 96J18147 PCrrUS95/15852 correspondence between user interface objects and association objects) a mPss~z~e ~hat this user initiated change has occurred. The association object, in turn, at block 520, notifies its con~oller of the change by sending the controller a "asso~ honnidEdit" mP~s~e. An "assori~tionT)idEdit" m~ss~e 5 informs the controller that a change has occurred, but does not include the new value. To obtain the new value, the controller sends the notifying asso~ ion object a "value" Tness~ge at block 530, upon which the association object returns the new value at block 535.

After receiving the new value, the controller sends its data source a "coerceValue:forKey;" mess~ge at block 540. This message causes the data source to convert the new value received from the association object to a value class type that can be used by the ~ 0nC~in~ enterprise object. The controller then delivers the new, converted value to the enterprise object by means of a "takeValuesFromDictionary:" m~ss~ge at block 550.
"takeValuesFromDi~ tion~ry" is a standard message that is part of the key-value coding protocol used to transfer data between objects in the Enterprise Objects Framework.

Next, the controller sends "updateObject:" and "saveObjects" mess~ges to its data source at block 560. In response to these me~s~ges, the data source causes the data in the rl~t~h~e to be updated and stored to reflect the new value.

Although the above sequence of steps has been described as taking place in without buffering, buffering te( hniques that are well known in the art can be used at various steps along the sequence. For example, changes made in the user interface objects can be buffered before being sent to update the e~ ,;se objects, or changes to the el~L~l~lise objects can be made W O96tl8147 PCTrUS95/lS852 without buffering while the sPn~ling of the changes to the data source is buffered.

Since each user interface object has a colle~ ling association object, 5 and since a user interface typically has a number of user interface objects, acontroller will typically be associated with a number of asso~ iAti-n objects.
Further, a number of different user interface objects may display a value for the same key of an el~ ise object. As a result, if a value displayed by one user interface object is changed by a user, that change may be r~flectell in 10 other user interface objects. Accordingly, after the value in an e~.Lel~lise object has been changed in response to a new value entered by the user, the controller sends all of its association objects "contentsDidChange" m~ss~ges at block 570. In A~l~lition, when the change in value also causes the selected enterprise object to change (a "sPlectell" enterprise object is the current object 15 for which values are displayed in the user interface, or, in the case where a user interface object displays values for multiple enterprise objects simtlltAneQusly, such as a table, the sPlected ~l,L~l~lise object is the object whose values are highlighte-l), the controller also sends all of its associationobjects a "s~lectionl )idChange" messAge at block 580. This enables each 20 asso.~iAtion object to display values for the currently s~lecte~ enterprise object, or highlight the values for the s~lecte~l enterprise object if the user interface object associated with the assol iAtic n object displays values for multiple e.llel~ise objects.

A "contentsDidChange" n~SAge received by an association object constitutes a signal to the association object that the value displayed by its user interface object may have changed. To determine whether the change that occurred affects the value that an association object is displaying in its user interface object, at block 585, each association object sends the controller .

W O96/18147 PCTrUS95115852 a "valuesForKeys" m~ss~e to obtain the current value for the key that is displayed in the association object's user interface object. "valuesForKeys", like "takeValuesFromDictionAry", is a standard Tn~s~ge that is part of the key-value coding protocol used to transfer data between obJects in the 5 EllL~l~lise Objects Framework. When an association object receives the current value for its user int~rf~ce object, it compares the current value with the last value that it received (which ordinarily would also be the value being displayed by its user intPrf~ce object) at block 590. If the current value is different from the last value, the association object sends a me~S~ge to its user 10 interface object to update the displayed value to the new value at block 595.

From the point of view of the controller, all association objects look the same: the controller commllnic~t~ with all assori~tion objects using the same set of standard meSs~ges. The process shown in Figure 5, particularly 15 from block 520 onward, thus applies in general to any change in value made to any user interface object. The way in which a user interface object interactswith its assori~hcn object, and the specific mess~ges that are used for commllnicAtion~ between an asso~ i~tion object and its user int~rf~ce object, however, will vary dep~n-ling upon the characteristics specific to a particular 20 user intPrf~re object. Accordingly, the particular m~nner in which the steps shown in blocks 500 and 510 are ~elfolll.ed may vary from association object to asso~ iAtion object.

In ~ ihQn to il~fulllling its association objects when its enterprise 25 objects or currently splerte~l enterprise object have changed, a controller in Enterprise Objects Framework uses a "endEditing" method to order its association objects to finish e~liting. Before a controller can perform certain o~elaLions (such as fetching, inserting a new enterprise object, or setting an undo mark) it must collect any new edits from its association objects. When W O96118147 PCTrUS9~/15852 the controller sends "~nllF-liting" m~s~ges to its association objects, they finish e-liting, relinquish first responder status, and notify the controller ofany changes with "associationDidEdit:". The protocol used by a controller to send notifi~ ~tion m-oss~ges to its association objects is described below in the 5 section ~ntitlerl Notification Protocol.

In addition to providing a number of pre~ fin~-l user interface objects and association objects, Enterprise Objects Framework allows a developer to create custom user interface objects and associated custom asso~ i~tion objects.10 The "EOAssociation" object described below in the section entitled Association Objects can be used by a developer as a basis for ~l~fining a customassociation object.

Thus a method for associating controlling and data bearing objects 15 with user interface objects has been prP~nte~l Although the present invention has been described with respect to certain example embo-lim~nt~, it will be apparent to those skilled in the art that the present invention is not limited to these specific embo~limPnt~. For example, instead of communicating with data bearing objects via a controller object, the 20 association objects of the present invention may communicate directly with data bearing objects. Instead of using a separate association object for each user interface object, an association object may be associated with more than one user interface object. The specific messages sent and received by association objects and data bearing and data controlling objects can vary 25 from the specific messages described herein. The specific steps and sequencesof steps described herein may be configured by a user and may vary from one embo~im~nt to another. Other embodiments incorporating the inventive features of the present invention will be apparent to those skille-i in the art.

PCTrUS9S/158S2 KEY-VAr.U~ CODING PROTOCOL

e~--~Fon~l~ocnp~ ho~ rc~_,I>e. ~.ll~dn~lt~

EOKeyValueCoding ~In~onn-l pn~tttcoi) c~t~ c~. NSObject ObJ~t D~r-d In: ~E~Y~ lucC

Categor~r De IIJU~n lhe n~ d tl~ ~rY ,v ' C- ", C-4~t~ f~n the n in ~r-r~ ' t n~i-n~ rtr d~ i~ d~e E-~Cbj~uF~i---hichtkpr~Ti~d~ ~li~ellYb~t~
tC~d~ ~ d ~ ~ n~ ~ ~ i nso~ n~ n~ o~ject ~ ~c~t iu --NSD~r _h~ ~ ~-e tk ~ d iu ~
T~e~for8~t~ edf~t'~h~i t~V~ ~ ' J.,~hieh~th~k~tdthe dia~ p~l i- ~ tify thc ~ ~ for ~ obea'~ ~iCL Tl~e n ' ' ' ~ hbb es~cu d~e ~hl- r~~ bo-~ NsYo~ t ~ d ~pet to e tbe ~ ~ ~
i~d b-r e~j~u (~ to ~ j n~ ce ~1~ ditealy U ~d be), ~ th t y~ d~'l 1~ tYr lo ~~ril~ ~1 eo~b imply o itlte~t- y~r e ter~e ebjecl- i-to the F~crL Ye~lr ~~l~ri~e obF~ e - ~ edwb the d~r~lti ,~ to oe~,e~i-~d~h~~-~her~ ter~ db~etheobj~

T.kF~_~tpn~i~ de-~h ,' ' of I ' V ' ~ ~' ' J Dnd~l--~F IC.~--tt t~fo~
~d~=ob~etbellb~tkFr~ "~ I NSD~oy- d~ ' '' ~ ' ~.tl~h otc t~bf~~e _ . , S; n~tfnlly imple~t th~e n~bod- by direal~ their ~ibe p it- Tec f~ Obj~t ~ d NSObj5c~ o~ the olher h-Dd. d~nic-lly b~k tb~ ~ t~lcd b~d o tbe dd i it~ of the ~er'- el~ Tht - i ' r~ ~eKr~ ~th th t yoltr e te~ eb~~t d---~ s~ld r~el~ ~ to o~e eir~r l~r~ &~ ~
1- ~i~ ~ r- e b~ ~ Ohe detoll~ , ~ ot Lk b, ~ e~e ~e ~ deri iuo-alb--~:
1. 11Y ~lue e YI;~ ~hcd bo~ ter ~- ~r n~hod b~ on Lhe p~n~ ~ Fcr e~b. ~hh -p~ ~d ~N_~, I V . ~ . loo~ t~ ~ nYth~l e1f Ihe fmm ~tl~ ( ~e d ~1 d: f A l~er d Ihe p~ ~-m jr ~e u~e). ~-d . ~.. ~ ~ bo~ t~ ~ ~t d bc ~~rn 2. U ehe ~ ~G-~ eY h~l dee-- - fi-d ~- r me~d, h boiu ~~ ~- i~ ~ble ~e ~ i~ Ik ~ me ~e be p~n;- od YU ~ ~~ iu ~ dir al~o 1~ Ce ~ble.
~ r. ~ .. ~ ~ Y~ e~ Ihe ol l OK.
T~, _ nd T~ ConY~bn Tb- d~t~ll , d Ih- ~elue eodi-~ hl ~n e ~e ~ ~lue. ~ do ~o q~i-~ ~

W O96tl8147 PCTrUS9S115852 ~nc coDY0ion moD~ r~bjed d~ 1~ ~ p~nblc rc- e~lc ~o F~ ~~ NSSt i-~ lo l-LeV F. rU
hc v-lu r~ ~ ~op~ty ~he r~ceiver a~ o b~ ~- NSD-te The eoder ot ~ l~c~v~lue eodin~ n~e iJ thw ~pOD iblc r~ cDn~iD~ ~ Ihc vJlueJ re of Ihe ~er d~ /~--F~ - ~~ c~mple coqveru r~iD~ vJlucJ
fircm ~hc wer interrJc~ ~vi~h h- d t~ ~e ~ eoe~V-harorRql mahod U pu re unD~ ~ d t~ ~rcc ~ e pur CDlerpnJe ol~j~u pu c n wc Ihb meth~ ~elL Note Ih t it pu m WiDt Ihe Fr~c-lc J ~ l~yer you c~- dctcrmi e Çrorn ~ EOModel ~ v~lue cl~ iJ ~td _i b e ch ~ - ~OD n - ~ ~c u~~hi~ iu ~ ~ ot eOerQ~hetrOrlCq ~be l~cy v luc c~tiD~ mc~ h~De o e ~I c~e ~ith ~ rd ~o v-lue ~ Numnx ~her must oe tr~ufe r d is ~ NSNumbct objecu b~ ueu ~ ~ery ctrlcicn~ fcr c Icul-tios ~ ~ c m~t objecu ~re uum~nc F~~F~i~J ~ C ~-- (numcrie) tYF~ ~Dd decl~ hcir ~ n~ ~o h~e them i- ~ rorrm 1- ddi ic~ ~o oei~ NSNumb-n ic -' ~ uumerie p~paq Y-IUC ~ h--dle i b~ ~- EOCo~ller ~J NSS ri-~objcct . Elec we Dumcric ~pertics re very al~0~~ ~he def~uh , ~ - of the hy-v luc ~~dic~ rre~
coavert ~v object v lue to the C ~I r (uumeric) qpe r~red oy the e~er~e ob~ ~ ~or rr~od or i~ce v~ri~blc. For c~mF Ic, n~e put ellte~iJe ooject dcfiac~ the e ~or metha~:
--(void) ~ I iD~)sakl~
--(uluiped io~)cebr-~
For the ~dS-I~: methot, ~eY ' ''.. ~1 ' ~, co VA~ the object v~lue f~ the ~~1~~ ~e~ in the dictio11 ry o ~'D ur~ed ir t ~cd p-r~ r ~ar~. Simil-rly, ~ r~ oocveru the r~ v lue d the ~-lu~ rndhod lo ~ NSNul~ ~i ir Jcru thJt ir~to the d;c ic~ th~l it rc~
The der ul~ uppart thc ~dkl~vint ~hr ~YF~:
dl r u~i~nodch r Jhort u~i~lled ~hort iut u~i~ned i~t bo~ UlUi~Oli 10~t nO t d~e Objec~ v~lueJ re eoDver~d ~o ~l~e ~ ~i h tbe n~ni mcD p~ r i e. iD ~ tY l e, ~d ~ o~
Note th~ the Itey-v luc codi-t n-ahod- do~'~ checL th t ~- ooject ~1~ ctu~lly rr~ lo tbe~e ~ hiJ c~
reml~ h ~ ru--uime error if thc obi~ct d~D'~ re pODd tO the ~i Le mess~
~8 impan~t i~ uc to 0 uioer i- WiD~ C ~I r IrFe~ iJ Ih~ moct ~el tia~l d~ ~Ik~ the u~e of ~ NUIL v luc diniDd ~m Dy ~umcr e v hle, , ' in he E~lterFue Ob~ 1 _ by ~c EONun el~ S;DCC the C
r ~ypcr C D't ~ ' ' ~ di~tiDa NUI~ v h~c, tbe dcr uh: ,7,' of the ~y-v bc codi~
r~e ~ ~ F , ' ' OO r - _ u~ EONu~ object th-t DCe~h tO be conver ed. You ~uld eilher d~itD rour d~e uot lo u~e NlJtl v luc~ r~ umcrie oolur~, ~ deJip ~our c~ue ol~ ch~ to ux NSNurrlber ooiocu ~re NUIl v~iuc~ ~re lic_e~L

Your O VD CDteJprUe obioct ci~ C D Cithe!r rr y a~l the def uh behvior of iu n~ ~ or ovenidc it. ~i~Dy ~
compktdr. F~ c~le. ~ uh:l~ of NSObject m-y b~vc ~ fc~ pr~ r~t h ~ lo h~ ;~ V-r-bn the n~n c~ ~11 be h~leo by tbe dcf uh i , ' 1- thu c~ mi~ht u~4D7CDt t~ DXdKX~ ~f thi.
c~e~ory ~o~ordiD~ to the fdk~ri~t ternp.~L
- ~DOOL~t k~_7 ~ '71ctlo~ry I~SDlctloa ry ~l~Dletlo~y )~ut~bl-~ er~ ~ ' utDlet /' ~k - uCeblc v r-lon ot th~ d-ln dlc~
~tDlet ~ Dlet~on~ry ~~l~r~ ucor-l~
~ e~_r v~lu-~ you n-~7 tro~ uutDlc~lon ry r_~vlng ~h_ ' Iro utDlet ~~ yOu do ~o .
r~urn l~UP r ~ ry~ u~Dlctl lht~ SHEET (RULE 91) W 0~6118147 PCTrUS95rlS852 ~V' F~ hC~ t~ ib ~o m<luble cqr~ d ~he diaiOo~ p~ io Il h ~dler ~e key- h eed~ lo, rcn~ovint ~m frorn he dieuoo~ ro Ib~t Ihe n~erci~ , ' ~'~ ~er ~n ~ ~ell ~nd Ih~n p~ ~he ~n~ini~ ~luc~j~ov~r To ~ ~e ely ovenide ~he suprel~' ' ~ lhiJm~hd wuld h ve ~o hDtl~ eve~ Ikr v~lue p~it io ~h~ die~i~ury. ret~nio~ e~ ~iue pun were h-odkd, ~od N~
ir o,v d~nn e~dn l be ~o~Ded - INSDletlon~y 'IvJlu-rrorll-ys~ INSArr-y ')k<y-NS~tut-bl-ArrJy ~utl~-yr ~ Y~ mut-bleCoPyl ~utor~
nlcolon ry 'mu~ c~ . INsMu~ olctl~r~y dle~Lon ryl:
In~ 1:
for 11 ~ utl~ey- councl - 1 1 ~ 0 1--) 1 s- I ~ you c~ pu~ th- v -lu- for th- Icey ~ I Into l~utD~et 1~ your ob~~t rcor-r th~ v~ue ~ ut-bl- ob~et you - ~hou~d cr,--~-- n 1nmu~bl- Copy .nd ~u~or~ s- ~t b tor~
' puttlng It In~o utD~et r~utDlet v111 r-t~ln ~ At ~ou olv-1 t ~~ n- d d If It- you put th-- v~lu-- tor th-- Ic y ~t I In th-- dlCG '~ 1 l~ut~-y~ r~ov-Ob~
1: _ IrutDlet ~dAV~trl~ro~Dletlomlry~l uper v-l~ rG,I~ y nutl~
return r~u~Dlet;
) e~ ~ n~n~e c~ of ~he Itey ~my p~ed in. ~d ~ r~u ble di~o~ il~ which ~o pbee ~he V l~ r--F~ Ir h~dke he ~ i~ ~cet- o ~nd ranover th~n f om thc ~y thco p~ thc ~NiOiny l~cy ~o _Kr ~od ~ ~he ren~od nlue~ o the dicuo~ry h-e ~uWn~. To a~mplaely ~ioe ~he A~rd~-~ m thod on in~v e~ the n~re ~o r per ~fter ~nu~ ~11 the v lue~ i~ oo fiod f~ thc in o thc dic~ry.
C~rl T~oc rin~ dem~d c re ~vi~h reprd to d e ~cv-v lue codiog Firs~ e nv re ~h~ the def uh , - ~ ert~ev-~ rU " J-do~o't yu rJotee~heord~th~q~luc~ re- ~Thu~, your eore~e ooFa ~ ~or rne~ ~uldn~ ume th~t other pn~ue ~luc~ h~ve oceo en blished ~vhen ~eJ're jovokd, ~ur yplic~ i~ o sioy the ~ l~ycr y~ hould be c~cful in i ~ ~sor mahod- Ih-l ~a ~ ~1~(ori o~enidin~t IceV~ ~~. ~ - J~) bou~eodin~ e tolhev lueoopcbiothedic~ry.
t~eV- ~ oReo xnt ~rhile ~ fetch i- io p~gre~s nd if yc lr - Je~ m~e ~o EOF uh objcc~ h _iU ~ to kteh the obpct it ~ ilt ~o~ ou iny ~ ~~ ~re~. See the EI~D ~ - Y~lotioniofonn~lprotoc~ 1 r ~ Ço~ onh~ o~~lc soundthi-~cblem T~4 it'~ ~*Ac r~ . p~crq'~ v~uc in ~ d-t-b~se to oe NULL in ~ hich c~e ~r eo~ue obFct reci~ ul EONull ob~ ~ Ihc V~hK If you ~Ik_ NUIl ~lue- in your d-r~ ~our nterpn e ooj~ h ve to ch~~ ~rhaher the h~c5 they ra ei re re EO- ulb ~d t~e~t them ~

Mothod Typ~
Sc~o~ d~v~ --t~eV ~.. ~ ~.
--~F~Key~:
R~atiot k~ bi dbp --fh- hKtyBiadin~-RE~ IED SHEET (RULE 91) W O96/18147 PCTrUS9S/15852 -2~-U~GJ~
r ~hK~/r ~ -~ v ~,r ~.
Iuv~lidYe~ ~ c~d ~ 1 _ i ' f~ he receiva'~ cl~s. n~e Eo~c~ue 01~ E
~ ' ~o qximi~c thc def uh ~ , ' ' ol Ihe o hcr melho~ of ~hi~ p~ocol br c-chin~ mc~hod ~elec~a~
uld ir~ulcc ~~ri-ble ~ypc; ' Tbi~ mc~ hould be icv~d ~vheoev~ ~ dw i~ modir~cd ~ an~ved fio n ~he nulumc ~lcm.

--(BOOL~t~e~ ' ~, q~ ~ ~.(NC~
Seu p~ of ~he .~ f om - q - ' ~. Rcn~ YES if Ihe ecejva re-d ~n v~h~ f~ d c dic~- y, NO if i~ cnJldo't l~lce ~11 v~h~.
~en ~ d iD e~r ce l-y0 of ~hc Eo~c Obje~ F~vor~ do~ uide~ uro ~1uc of NO ~o be - ul err~. ~d ~ lce ~o ~1 ~OD b~ cd ~I n~ ~ ren~ v~

~ r_. K~:
~ cr~ K ~ SAmr~)~A~
Ren n~ ~ dia~n q p~V~jD~ ~m~rY~-~ ~iblc~he ~ i3 ~qAm~.N~~I v h~ ~q x~ed ~c ~o~lobcre~evoL

RECTtFlED SHEET (Rl ILE 91) _ _ _ _ _ CA 0220733l l997-06-06 W O 96/18147 PCTrUS95/15852 - 2g -EOFault hh~~ From: Dooe (EOFa~ ~ o n~ ~bss) D ebl~d In: au~/EOhllhh Cla~ De~ lyUG~
/~J EOFsuh i~ te~e abpct (~ D Ur-)' 01' eue~ix o~jea~ C d l~ b~D t ~d ~eCD fetched f~m thc V~'be~ ~ For ' .AC~ Del re~ ~11 o~jc~ ~ h s ' ~ ' ~ ~ it cre-~es EOFu~lts f~ the - of~ho~e.' ' '~ (U2ksS. r~. ooe. - ~ " the.~ ve S~drb~
(etch~ s~d ~r~iqued~ Br ot fetd~iD~ s,- obiect uDril the sppCes;tK~ sa~ De~ h t~ l ~e~
i~ic-- ~h the d~b~x ~e~r.
~ EOFsult e - ~eh ~e d ~iD~hieh c~e ;CSeSIIed ~ ~ ~ Ol~ _ S; rraY4 ~ h e - s~t ~DSn~YOf ob~s ~n~ ~ ~ ~me ~Y~G~.i-_~e~e h- ~ e~l~ ~ ~m~f~. TO~De - ~Yult ;D- b f~tS.~h~t~m~r~ '; , ~hi~JfU~ ~ ~ ~ f uh fe~b~ ~ d h~ the ~ obpa o~s ~fdDer~t~me~WSo~m~te~;t~SOme e2~~d~u. ~tcd ~b_~ ~o snnr l~h b~ its o'ojx~ u s ~ ~d it ~c~ ~e d~ t ~es ~ill~ thc OODj.eDIJOtIhCUT--Y (obJ~dAtl~l~ , ~Dd ~ oo).
EOF-ulu d eidY qpe ~ c e lledr~
~he '~ 3. ~- JK.~ ~t~ clo~sm~ es~ bolt.~dthe ._,F ~i. Q ~~ ~ chsn~e~te~ul t~yf uh Youc~o-~c~te ~t furlt cbj~ ~h dse c d ~ n~
Yo~r yplic~iou ~ csplieitq a~c fSIth o'oj c~ ~o ~void leteh ooDfL;a~ Ihis i~ ~ eODC~o f~ ~.'~ e~tod ellte~rue DoF~s th t ~ lo tct~ ~'~ ' t' t~xc ~heo oy their ' ~ . - tr'leit~
t~e~' ' F. ~ ~ ~.~_ ~ Fc ~ mdho~s(dexn~ ntheEoKeyv~cod;~d E30~ r ~ - ~ s~u,e the ch~DDd th t fetch~ tue eDt~prisc ~bFct js '~, t'ue e~taprix o'oj~ e~-~ uJe i to fetd~ oth~ . '; ' IDu~t be c reful ool to ~ ~Dy obj~s re s~lly l#llt obpd~ Dtcrllrue obpct c~t usc c diff~scD ch~DDel to fer~h ~r obicct ' ' - 1~. ~
i c~ ~c ~ f ult obpa ~ th t d~c i~e ~ri--ble t Ic s ~iotriDs o ~lid poiDt S.
,~ ~ ~~ed el~-er~ix obpa ~st ~ f ult obpd ~hik its eh D~el is oosy IetehiDe. Do;~lS so r use~ thc l~lt to ~Qt ~ fc~t ~vidt th~t cl~-- nel. tent iic8 iD ~ fach c~~ Ihe eDtetp isc ooJ~t slso c~o t ~epbcc t; ~ f ult ~ oqject it fctchc~ it eU; tbe f~lt h.~ s~c~y becD u iqucd 'oy t~e timc thc eDtet~ e obp~
~cu i, u~d otb s e te~e o~ llu~ okl r~efercD~Y to it. ~D smy f~ult, houcves, c o oe ~cpbccd; rw mt~,D- ~V~Dt to ~pbcc ~- ~y f utt ro ~DtC t'~ q~liG~ ~ the facD~ ard~s ~ ~ill oe ~scd to facn it- t~
thJ~ D<~ t C~ F~9 f~th o~pa ~ to ~ n~es s f h ~ese thc t~r~d objcct. ~t. cut d-~ o fddu F~ c~mple. e~
s tl e d , of obpa th~ ~11 be tac~d. cot the EOF-utl d~ Tbe folk~iDO~ i~Kc mabo~t Deitbcr c~use c f ult o'upct to fetc~ Dor '~ the tn~e idectity of ~ f uh ouiect~
~orclc- e d~
eoota~ToProto~l:

RE~TtFlED SHEET (RULE 91~

W O 96/18147 PCTrUS95/15852 d~ip~it~
VY; ~-i McmbnOI~:
(tetunu ~ 0) p iD-F~
tek~
tr~ToSelea~.
Ie~ iD
'- C~ ' ~e Fon~ F~ult Ob~ et to F-leh Y~l C D fcrce ~ f~ul( <~jea to fetch ~ ~endiDg i~ ~ mc~ge th.t i~ c n'l h-Ddle ~ ~ f uh n~e tn--~e- Ii~d ;D
~evia~ xaioll ~11 ~xlc vrith ~e~ie ND-time . Dd ~o doD I e~e ~etehiDt, but ~ me~ge th~t u (~uch ~ the Ice~ lue eodi-t method . ' ~ ~ ~ eu tont me~ge n~ch ~ ) c~
the f Uk to feteh iu d-t~ ~i~ iu d~e eh DneL EOF ult ~bo defiK~ the ~elr n~ ~o th~t i ~ e~ thc f uh to retch thj~ p~ovidc~ metho~ th t h~ DO e~ea OD ~ ~OmDI cbJecL but th~t ~ou C~D ~l~p ll~e tO
eu~e ~ l ull objcct to ~eteh R~memb r th t y~ ~oultD't C ~UC ~ hUIt tO feYch it etf if iu d~e ch D el i~ huy.
Wllh ~ oo;~ r~Uk ~ou C D ~ USe FOD ~ ~~' OtJ ~ me~ o ~a the ~u f~
the fuhThi~techDiquc~ll~ ~uto leteh the 1 ult ~ d u CVeD ~heD iu d ub-~e ch DDel i~ ~ ~ USiD~ ~
differc-l ~l~e Ch~DeL n~t ~~1 ~ ehec~ ~he hcr h ~ fetchiD~ f~ ~1 uh coj~ ~d tr~fon u the 1 uh i lo ~D iDn DCC of it--~Dtcr~e oojeet cl~
FOrC;D~ ~ faYh on ~ 1 uk iJ ~ dcoe ~ ~pbeiD~ the ~m~ f uh ~ hh oDe th~ h-- ~ dil fereDt d~ub-~e ehul eL
~d thcD c iD~ tl~ ~ f uh Yo leYh itKIf:
ld ~rr~y~ t~ U~ thl~ r- nd 1~ n ~rr-y t-ul~ /
ld ~ 1 t~
t~ ~ l~r~Ult ~rr-yl-ulr~l~rhQu~llrl-r I-rr-y qu-lltl-rl t-cehrvrd-r l-rr-y t-~ lOrd I
v~ll--bl~l son-l l-rr-Y svn-l I s l-rr-y ~utor-~rr-y ~ lltv. Ie ~-lrl r-~-lnl ~i~ ~de c~pt c~e~ ~ De r ~ TSy f~qk vritb the ~ me i ~ the one v~in~ fetehd e~t th~t it r ~i~ -d~ub ~e eh----DCi th~ int bl~ f~~iDg It thcD KDlh dt o the De~ l~uk to fcrec il o fa~. ~d ~ig~ it lo tDC
Ori~iD I ~

t D Varlabl~
c~ ~:

i~ ~ poi-~er to ~he iD~CC ~ c~ ~c Mefflod T~
C~iDt~l~. ~ rr~F~r~ ~~ '~'~' ",, , - ~ .
~d~;cctF uklVi ~; ~ tit~~
G~i~t ' - oout s f uh RECTI-'IED SHEET (RULE 913 W O96118147 PCTrUS951I5852 ~clc~F~.
~ r_r r_r Ar ~iF~ul~
c.,r_r rc.r , ~r~r --.d~

Cl~t h~cL~
. _, F~ .t ' ~ ~
(NSAm~ ,F ~ - Q ~~~ 4F~ ' ~ r ~~en~NSAm~ r ~ I ~Ft)D ~ ~ ' ~)~Ch~d R~u ~ nn~f~ ht~oG~f~i~ ~ ~ ~C~iD~ ~ ~Q~ r ~ ~r. ' ' ~ ' ~ ~D~
hc3 i~ ~ d rO~ ~e f~ ti~l-e.. Ir ~ d i5 ~dChiD~t ~ d~
~ fcl~ c~ _ill l~UIt, ~h l~dc~~~ ~ul~

Tunu aFaYlr i to r f~hl~ i~i li~ d i~uncc of hc lu~t c~. DocJ ~o~ Idch d~ f~ d~ ~ i8~ R~i~
~ ~ ''-,, ~ . '' iris~cd_ith~objca~ti~n-l~r uhc~ Y<~rhouldnrcl~wcdlowlhi~
r~

- ~ ~ Ir~ r - --R~tl~Et~D-- ' C~ 'th taFaYI~ c~t~ed~rilh,~nilil afiaYII i58-t~ ho~jca.

n'~ F~rF
~EOE.ti\t1'~ 't~F~ F~
J ~c ~tiq ~t aFa~ J crc~ ~i~ (~ ~ dclcrmi~ed ~nhc qu-lifi~ I~ ~ UDy l ult). Raun~ nil if aFa~ i;~'t ~ ~ ~~F~

JD) ~~f~dUh~ F.F
Rd~ut~c ~d'EO~n~nrOrderic~ob,ecu th~t aFa~lt w~ i~, cr un ir aFa~ lt i~ ~-y r~ulL

RFCTIF~~D SHEET (RULE 91) W O96/18147 PCTrUS95/15852 hF u~
~OOL~F ~ Ob; r YES U ~Ob~ r uk d~, NO a~i~ You ~hould wc ~ , Do~ l.KbfflO~; if ~u ecd r ~ .r.~ ~r ~kdF ~ -P~ u~q f uh ror ~- CD~C ~jC~s ~id~ ~c ~ied ~m-ry ~Cy ~Dd ~D~ny. When ~L
aC~I tachc- ~ ~ ot~p~ f~ Ihc r~L ~ll~i. ~ it f~ w. Ir aa~l i~ ret~i- ~ ~ ~c r~h ~ac~
tofc~Çct~~~olliet~11 I~NL ~ithu~cf~cdrc~lt~

K ~ r_. F t ,r r ~hC FimUy ~r f~ ~ ; - r~ ~ rc- ~ ~mr r~- ~ ~ r~uk ob~

~~ rorF ~t r.. r ~
R~u~c~olif~ w~tof0~thcob~xttrd~eu~oF~ucn~udr~~F~ l~ar~kth~uthc ~ir~ ~co~itythchuk~c~ ~cFinw~cy,- r ' f~ ~ Y nr r~k ~ u ~mdr ~lif~ IhC r uh---~ c~d ~ith ~ ~il if ~t i~n~ F~lt objcc~
s~ ~ho: -~(EoE~hr O F_ ' rc r ~
R~ ~u Ihc cluu ~u ~~ill bc i - - - - ' ~h~ aFa~lr u GodK L Fcr ~ .,.a ru~ ~c ch~ o ~n~ by ~hc c- ity tbc f uh ~ ~ i h far ~ rny r uh thc cluu u NS1~n~1c~rny. Rn~ nil if aF~ls ir -t ~ r~h ob,Fs:~

nc~ M~t.od:~ -d~- ~n ~n - (NSS~
~ellY~ ~ Jtrio~ objc~ IJI t ~c~ he ~u of ~bc r~h objea, ~hhout cuui-~ h ~o rel~h iu d-l~ A
fuuh'~ dc~ipl;o ~uiw rbc ~-m d iu eotnS ~~ Ihe ~c A ;u Fin~ ~cy; ~ rn~ h-~de cri~io oo~i~u ~e qu lili~ u od o fetcb iu d~.

~t;llFlED SHEET .(RULE 91) ~ n Cuu~ ~h- f~ osje~ lo leteh ;~ dC You C-n ~e ~ mC~-ye lo ~~~e ~ r Uh ooj~ lo fach ilJ d~

kE~ ltU SHEET (R(JLE 91) W O96118147 PCTrUS95/15852 C OrrIlROT.T.F.T~ OBJF.CT ~T.~SS

E.-~ ~ F~ 11~ ID Cq~ h 01~ b~ rl~r Co~u.r. b~ .UI Ri~h~ ..d EOController hh~ F~m: N~'i Ch~ I)JUon .'_ EOCo~ ~i~ ~ ~e~ d ~u~in ~ C4~U~ ih u~ ~tu e e~,;eeu ~he i~r ~ ebjea~di~ 7 ~-1~ f~ F~ ~ a e e-~ e~p~.~, ~ d Ih: ~e~ll~ F~e~ e~n~ ~e ~c ~-lue- f~m ~e i-~r--e~ieG~ n~e ob~u ~ F-oce~udl~ m~e~ ~ ~e~ ed r~ ~c e~jeL A ~ u ~e i- )~
e~ -l m r~T~ be Fn~ ~ F ~e~ ~ defiK~ ~ fir rc~hi~ ~ e~ rnsn ~ i~ni~
eil,~ ino d dclain~ eYlD 6~m ne~e. ~ d rO- eh~D~in~ ~le ~FniC- d Csini~t el~ hu ~ce ~ ~I-o eD fe~ lo t~e Fn~ ud Fr~ ~ rùc~lo ~llo~ i lo F ni~ i-n~er~d rel-~-~hi~ ~1 ~e FnA -- A _ ~ inS i Io lo~ b~ O ~e~
The ~Y ObF~U F~ ~o d u ~e el~--~: F~ ~ ~ d F~ r The e el~ A~ide ebFr~ frr ~ b e~ Ihe ~ie uo- ~ mooeL od ~L o eo fo.~ lo ~e Fr~ A_ r F~ A A Dd Ft~ ~ F
Fn~ ~ iu eA~erf~e ~~Fa- ~- A ~An--7. ~Ad id -- irA--~n Ol~lr ,~ iA~ i~ 11_ y E~Co e~l A~S I o r~i~ui~ ~ Ade iOII dle fo~ m or ~ ~ Al i~L rOu e~-- isl~L delae. ~ ~e oojrl ~1 --~ni~l~ iAdes ~ e~ --o ~ ~ioA 10 ~11 Ylcaed ob~
A
A~ ~0G~r erA~nu ieu-- _ilb u~cr i~lerr ce obpeu ~u~lh Fr~ eoFeu. A- ~ei~o Ii~ -i~ ~d ~n1 ~f ~ AeAI-clAo ~ e urp i~e ~~FC~ lo ~ u~ i~lerr~_e obj~a. JUAh ~~ ~ T~IFA ld ~
hAJCT~eVie~ io i~re~ bbfo~n~oin~ u~i~f AeobFa.A~lif~ e ~-d e Yl~ieA eb~~ or--~e~ d-- wer i~r~ce ob~cel i- edilaL nd up~ui~ Ihe u cr i~lcrr A. obFa lo nello ~iuc~ et' dle _o ~~ ~Ic~De obFA~.
You e n oo~e n~ ~~i ~ioe~ i~ buTr~: Buuldcs. bu~ if ~ ou ~.:cd lo Yl o e up 1~ ~u e~ u u.ll~
hlAb Ion;l~
~C:ontrol~r ~ uA~ ~hl~ ~sI--CI ~ ~ ~~~OeCI ~ . . ' f Cl~-Oel-~lon ~ ' -~
~oec~ e~ ~ ~
Il---I>cCI-~ locl Inl~ n~on~r-ll--~:on~ol~-~
o~lA~lOn~ r/o)~
I.qCon~r-ll.r - tl ~ I:
ThiJ eode ~Aeervl ~ sun~ o ~A d~e ~IUI ~oci--lie~ NUel--~--e--: il r~ to ~e ù~er i~lerf oe A--bF~ 10 ~ ~ drr_lll dA f~ Y OC Ii ~ ~e~le~ Ci~Uo~ 10 molul~ Ibr pq~n~ ~n~d ~n~N~n e . ~fY_~ nu~ m AO eod rm ~u tl~ uYr ima~_e obFa ~d- Io ~ bdon A.) F~lly, i ddA ~be ~oà~ ~o ll~ n m~ed b~ ~ eA~iArf _ilh I ~

W O 96/18147 PCTrUS95/15852 Nob: Thi- ~ppro~ doessn'l ~ors~ t~ ~D N~Cl'~sc~ie~ Iu ssu ocissisioso e~ ss Ot ~ ' ~ i re~re ~pcei~l h-Ddlin~ See Ihe EO~-~ ' ~o~sstiosl dss~ ' tOr more r ~-lf rou h~ ss~sceiss Is ssnrssocissslioD dss ~s de i~ned ~o ~~or t Yilh ~ u~~ in~erfsssce ob~jca 9at e D esplieitl~ r~usL~se StDiDsrl IICC o~ thsssl cs~ss iDncss d ~ SSS~SSiDt thc uJcr iDIer~
ss~c Oo~ ~ itr dcl~uk sss~Lion clssa~s ~iSnplr ~ ' f~ 1~ clc~tin~ ~ ~c ss~tio- f~ ~ ~i~sss u~ erf ce oS~j~
~n ss~uon fo mLss ~r~ btim-~c link--ith it~ u~~ in erf ee ooiea_ 11 nc~rlr ~ r~ cu it,elr up .. . onu~s ~ usTc~
nd often et. iuclf up .- thc tc~t ddey-te or h~ uxr ins~csfYe o~jcct ~, _cs1L You ~sd ~ume s h-l . u~ inscrf w cbjeels rn ns4~ed by ~n sss~usoei tion i~ off-lis~nitss ~rith reSssL~s to ehss~l~in~ it~ n~te. stso l h~odlc ss;l c's-u ' stnc's ~lidsstiors in ~llC eontrdl~ ~ dcleple ~ iD tsbe erJscr~c oojeeu them ebess (Dote th~l ~ etsL~sstom ss~ti~ c~n ~s~o sr~ndk "
,~ ~li~htl) diff~eDt ~ype ot ss~oa-tion i~ ts~t ocr~een ss~o EIX~ ~ sl... ~n EOQu~ ed~-tioo si~ s~O
c~s~'lcr in ~ - ' - ' I i ' ~o th t--he~ thc oojea ele~ in Ihe m~ eDu~l~ eh ngcss shc det~l ss~ntrosler'- d tss ssso~uee i s ~s~ urcd to ~vidc objeeLt rebtec to the one ~cieaed iD thc mssLssta ~ r~bil s~rL.'I ~ rsd th- Co vll r ~irl CoDLrollcns slinsced in t ~ ~L~~ re ~ted pees~ily WbeD SSSI~ s:0Contro la z~os~ ~ f~
_~ToOb~, ss ~T ~ e ~. ~ ss~&pbJ ssrseY-sc h esi~ecscss the ~stin-~>on of c ch of is~ ' s~ ec if ~h tootcc~iss~s o~nE~onsrolless If ~o i pS~g~lCJshe~ooasL~thcm thus~ ts~e~uc nodipby of ssLl linsced ~ "
If you oos~'t ~nl to ~a up ~ psur of eontrollen in ~ - ' ' ' ' ' ' ~ou ess~n nll ~sSve one of them r~8 the rrsc~ss lissted ss~ove by U~SSiD~ thc ss~d~tC ' ~ rrsc~Ssc er eonsxetisss~ Loc tYo eootrollens in Sntafsssce Buuld~ Lin~n~ cont~>'sles ~ to~ah~ i- thi~ sssn~rs~~ ~Ik~ tshc a~issc i _ ' c~ mYI-~in1~ theis~
o~n ~ of c~ta~uc objeet~ to rcmsssis~ iLh rc~eet to ~11 Ji~il'~nt ooesnno~ You cssLn linsc ~y sum~er of a~n~dlen toSeth~ i8 ts'nLs f~'lios s'~u~ ~ou sshould s~e A~re sh t ti,e f~ ai<~ rc pn~5-s~d oo~ ùx ch is enl~; eontrdlens sssoove the ose ti~t reeei~e~ sbc 0s~iSi8ss~s rrse~c ss~rcs't soutslod (usie~s the eh is iss ~ los~p Wl~icD iss ps rmitted) ~un~sr~sssssssdUr~o E~ '~ offens two rscvel~ of eh-D~c s'~ffds~ ~ ~ pc~l usdo ' ThcTe ss re r vo ~isd~ of ch;~n Se~s eds's~s to thc vss~iuc~ of entcspruc drje~. Dd sopcs~rs~5 on she e-tc~c obj~ in d c d~ls~ ~e fis~enisnsL deletiolL
SSLDd tS~SC Yith buffaed etit~) WheD n eoDssdsla i~ bu'frain~ ediu. is ~v~ e~r ch ngc ssen~ s~ istss ssa~Lion ooieds It d~~n t yol Y thcsse c hJspJ lo iu cmcrpruc cloJecu uss is is s~occiveSs ~ T~ ~ s~c Si~l r y e~ion,s en IS'~>C OOJe~ t5 beld S'V,Y thc c08~>sl~ rcsss l ~ied to thc d l, ~curcc u5~u~ tshc coot~skm~cciv~ -_~TDr ' ~ SS~SS.8C.
You C~8 sscmoYe buffcrisg ~o th t ch-s~ ssue ' " IJ ~ved bY cntin~ ~ eo8troiles~ -stctS-eToO;bJe~ t.~XtS-Y.-T~n r ~L ' 't s~c ~hists~'Os'csho~soctw sssulosn tic J~ing sssnrceu thc Sssute Or tshc t 08D ollcr - cstcsp~ilc object s ssu~d d~l~ ~c S sv~ o:
C~s4c~ f~S~u~ B~usvs~r.

YES YES ~rlch-n1~~rci ' - 'J cntloshccoe~llcr' d s-~ouo~ t shedcf uss o~Yios f~ eon8011crs c~d i- Islcrf cc 13uuldcr YES ~Jo Ediu i '' - 1~ ~o ro enteflrue ooFes5; ycu mun eDd _~T-'t ~ o et d ch~cr lo Lhc d~ ~c N0 YES Ediu rcouffcred 0~whcD~ouJcsd~--~T~j~ th Dge~ei r' - '~ est to thc 8 L ~~
NO NO You tr~t c d ~-~T~K~Ioefrca ch n~toeD~nxohFcu Lhc~
_~T-~t ' ~. Io ~e d the ch~c~ Io Lhc d 1. x~rcc Thi- iJ thc dcf~uh Och-vior ~or eo8troncn cseued )_~ n~

HE~ tD SI~EET (RLILE 91) CA 0220733l l997-06-06 W O 96/18147 PCTrUS95/15852 1~ ddidoo to buffe iot eh~o~et ~~ EOCootro~l~ nuiot~inJ ~ 7 undo n e~ ~h t re0 dJ tluYe ch~o~ fta they ~e bxo y~plied You c~o eod ~ cootrdler ~ n-~Undo ~ e ~1 ~ny ui ne to rn r~ ~he eu~enl F~ot o~ the u-do n~
~ I ta ~do ~-~e revert~ the d~D5e~ io the unoo n-clt b cl~ to th~t poi7t deleted object~ re re~ered. ituetled ~o,recu YC oeleted. ~nd ~ ' F " ~ ~od ~veo re uDdooe You c o cooG~ure D E.OContrdkr tO
1~ rn~r~ ~o undo pOiOI ft~ ev~y oF~r Goo, or you c~n nUtDU lly coou7~1 uodo m~rh to ~oup operuio u to~ethcr o th t they c o ~11 be aooooe--ith ~ ~io~le undo tncs-~e For rnore ' ' - oll d 1- ~ource-"ee the EOD - ~ nd EO~ ''' ' '~~ - S-- protOcol ~rr,r;
N-7tl~ C: L " r'- D-l~t--~D EOCor~ll~ ootil~ it~ deleg~te d D~rly every q~s Goo it F,crforrn~ It coDftrm ~oy io~~tion. ddetioo or up~hte ~i~h it~ dele~ue oefore performiD~ the opcr liOD ~nd Daifies the dele5-te of uDdo U d ~ ve ~cr tioru ~od of e i~ ~electioo Fu~he if - ch n1p lo the t~ urce f ~Is ror ~Dy re-~on the dek~-le h- ~ ch oce to ~ell the to irnply coolioue or lo roll b cl~ Ch Dges ~if the d t~ s~rce ~upp~~ rdl~) ~7 ~ dek~ te Dood oo ~o r~cei ~e ~ Do irK Lio~7 fron7 it~ conuoll~ i~ implcrnem the ~opri-le rnethod~ The e n~ Jlre d - t ~cr EocO.~n~~. d~ ~Dd iD51~11Ce n7ethod~, und~~Metho~h I , ' ' by the De~ te ~ If ~he dekt-te doe~D't irnpkrna~ ~ p-ltia~l r rnethod. it i~D't iDvdted In~i~nce Var~sbh~
~ooe ded~d ;D ~ C1 Me~od Type~
ID;~ ;Ot D E(~ oo~ollcr --iDn~i ~ n C!
M n4io ' -' ~dd ' ~
- kyr --rern~e~-Getti~ the oo~ --~nObj~t~
Fe chin~ ooica- --~ctch M~o--~iD~ th7e ek~ioD --~c - ~
~ ,~bj~
~ 7i'--- relca~ e~
--~clcaPrevio~
--~aSel~ F,,.~Objca UterFetch:
--.d~F.,.~ObJe:~ fterFetch _dniD~ oo,ecL.~ lF,~
--~aV-lue~ forOt~jea:
--~odEditio Performi~ c~ ioDJ oo o~jecu --dele~ lDde~:
- i~nObr~ '''I ' ' Rt(iltHEU SHEET (RULE 9t) _ in~Ot Di-e~lin~eb n~e~
_ ;.r), ~1' ,, 1 S Yin~ edit lo o~Jecl~ YeToObjecu -~aS~ve T~jea~
-~ Ye ToO~
S-vin~ to tbc d t~ rce --~YeT~I) r~
--~etS~YesTc --~-Ye~To~
CODI~II;D~ UDdO --_i,,,. . ..
--nY~UDdO
--undo _ r~t ~
t 6r,...~i~
-- Lr..~ tio~
~~ ~''JndoM~
--UndoM rl~
P~ ' _ the u~er imd ce --~ pl-,Y
Ch-;Di~ e~trdlen --~etl~ C~
_ ~ -- IL.
Senin1~ the d-t~ ~a~ e _ ~r --d~S~cc SeniD~ the dclelpte _ .n~
--delc~-te AaioD n~ --deklc _ ~ ~r ~
_~ 'C~ " '' _ ~etch --in~ert:
_, _ ~ ~JYcT~'r r _ ~YeToO~:
--~eleaNe~t --~deaPteYicus:
--undo h~L~.c~ Me~od~

F~tCll~ltL~ SHEET ~RULE 91 W O 96/18147 PCTrUS95/15852 - 3~ -h o~i~ tO the ~ n D-ged oy he eoo~rolla Li --~S~y ~~ODJee~J
R~lunu ~11 e~e obj~ ~ ble thn~u~h Ihe eoDlrollcr S~ ~o: --~Dje~

_ tVoid' ' ~ r (F~A~Oc;~oO ~)~soe~ti~
l~e~ ~e COD~~ th t o~soei~tti~ b~J ~ FleDdin~ ediL Thc eoDlroll~ ~c~ ~rtee~sti~ J ~e~ ~D~ c n~
tlc ne_ v he to itJ edit l~lTer It' ~e eoD~l~er il eonfi1~ured to l-VC eh n~c~ Ih~D the eh n~~ ~rc i " - ~ ~vee' to the obFa~ Il the eoe~olier docn I sve eh n~c~ , the ch-nge~ doD't t lce effeet unul thc eoDt~llcr re~ ivc -~e~)bke~ KD-~e.
Thi- ~od iavo~ d~c ~ek~- e mdxld ot' L '- '~;'- ' 3i J__L~., . . ' q (EOA ' ' 1--~e (EO~ ~ToObJ~t~

~ r ~ ~S~ ~~ .
1~ Ihe coD~;I~ ~ ~ ---tBOOL~
~iCI ~he eoD~oner-J ebctie<L This n~hod is ~ she te~t rcr sc~Jin~ _~c l ~vith ~ emplr ~r DOe~D ' ~r ~c ~ i~ ce 0~ Rnurns 'fES if ~uee~ssful. ~ O if ne~
S-- ~~: ~ ~J

,t ~ _ . ._ --~d 'FoD c._--ees ~ ' ' ~ - ~ '' R~DS ~JIe COD~Il~ J t--t--~ e.

d~

R~s the eoD~ler'- ock~-te.

RECT~FIED SHEET (RULE~91) W 096118147 PCT/US9SrI5852 rbbt-:

lbi- ctio mahod i-~olce~ S ' ' lo dekle ~i eleaed objee~ R~ ~elr ir dd~ ~ i~l rc~
YES, di i~il rat~ NQ

' CL;- L '' ' --~OOL~ ~O'D~ ' io~l~c~
Dkkta ~ o~ea at ~1~. ixDdiD 8 a~vai iDy ~e o~ieg~ ~n~Y~iit~eoo~ci~iy dekte~ ~0 ~ix it Ike rl~r~ ~cc cY~'~ deiac, ~ mahod ~e~ ~o ~n--~uoO i~cl oo~if~ Ihe wcs ~ci r~w ~0 if the d~
~e c o Oeiac. in~ ~J'' ' _ ~d ~odfic ~he dek~ e ~i~ dD~ide~ . U ~ dek~e ~c a de3el~ ~d~le~thedeie~aewi~. I ." "~ ; Ddthcr~o~ia5 Dd ~ a~
Dei~o i51 ~D op~--lloD a~iied l; - ~ lo tile r,~lje~; ~Ou doD t De~d 1~ teDd _--eToObkc~ l-r thê r.~ocr~ll~ i~
r~Dfi~a5 ~o ~ e to Ihc d--t ~c~e ~ the~ ~he d~e~ re i ~ ~ rn de to ~re d~ w~e ~ _elL
If the eoo~dicr doe~-- s ~ ve ci~ -- 1~, hc ~DtC doD ~ t~c cac~t in Ihc d.~ uscc ~DUl thc ~Dt~iC
rcccivc5 a_~eT~ m3 9b - ~ho: - d~e~ eT_~ S

- ~ -~ h t' n _ ~ooL~
Deiclcs all ebjea~ ;D th~ el~eSiO~5;--~e ~r o~rii~5 for WeteO~ ;DCIUCI;D1~ ioYoC-~ of dele~a~e ~s) Rest~ YE5 if ~11 oojca~ i- sine eieaiOD wac ' ~ oclcted (e~ if d~re _crc ~o ob~e~s ~clec cd), NO o~ If siw mclhot remnu NO is's po~n~lc sh~s ool~ ~o ne oo~kcu ;D Ihe JekC~;OD h~ CeD
delel D k~ si elecsio~l iJ considered ~ iDgk opcn~ioD rO~ poses of u~do, evclt if ~e r~rAn~Jlcr ~ e~rc~
epa~si~L
5 ~ ~:--~eie~e~

.~r -- (~i,~i aEai., ac rt allodilspeDdiD~ iD IheroDsro~ier.~odaboiD wcrhtcrf ~e ohjec~ ~y~eDdirlt di ~ dEdi~ llofshc eoD~Ikr J ~ _ ). ~ ntel}~od i~ ool)~ weftli iflheo~o~ c ;SD I CO~I t~d 10 ~C 10 01~ ~ - . n ~ho~ eToCLJ

.lr r~
. .
RECTI~IED SltEET (RULE 91~

W O96/18147 PCTrUS95115852 --(vo~d)~i~Op~d~~c 11 pendint opcr~tion~ rnethod i~ or~ u~e~ul ir ~e eo~ lla i~a l eonfiprcd lo ~-ve to Ihe d t- sourre _ - n~
ecT-I~ c c~
--di~rdO~
~ rAethod il~Vo4~ di~Oper~tn~ Dd reo~r~ ~eK

'~
--(v~d~
Sc~ ~ _ to e ch of the r~Dtroller ~ thi~ rAethod i~ involted ~heDev~r thc eo~ller xeds to ~r~ e ~- eD~ to editi~ il~ the wer i nterl~ Co~ ~hr h i~ whenever ~ ~he ~a~loller retehe~
~ the r~Dtroller ~ve~ r~n~er to itJ obje~~ or to it~ d t~ ~eur~
~ An ooject i~ scned rr delelc~L
~ The xlea oo eh~
~ The ul~do n-c~ ir ~Itered ~ ~ I-~Ur do ~lo ~ rcl~cUDooe n~c S~ ~: --. '~ - ' _ (EO~OC~t;O~ p~~o~ol) f-~r~
--(BOOL~rr~e~
Fetd~ obF~ fn~m the eott~oller ~ rl t- J~CC. retur~in~ YES il ~ful NO it ra~
Bcrcre lachil,~. iDVok~ nDd co ~firrn~ th t pendir~l ch--o~ c n be di~rdeo ~ involcin~
Al o conf~ th t ~ny dc~l cootrollerJ c~n di~rd pcDdint ch nte ~b~u the retch ~od retunu ffO if hD~d rnur~ ffO ~ if ~Dy of thc dc~il ~ Gn~ d co~llc~ doD t ~llo_ di~rd ~fter dlrrnin~ th t r~ Dl~e~ C~D OC di~sda~ p~ds to d~rd .n ecil- Dd or~tio~ ~d cle~ the undo n~d;
~t t~w poia_ tAe cont~oJter seD b ~ to iu dcl~yt ~b~i~ the rar h nd r=in~ NO ir the delc~ue ra mu ~O U the dek euc retun~ YES the contr~ller eo~ r ~ .o i-. d t~ K urce ~nd ~ ek~ion _ith the De~ ob~
After Ictchio~ obj~2~ the cor~ner cnds contr~lkrD;~FetdlOo~: to it~ delcpt~ ~Dd 1? C~ to it -- If ~hc coo~ller - ela lion ch~n~ed ~ - re ult of retchin~ -i o Knd~ t ~ ~ to the - Fm~lly t~e con~>llcr prop~-~ the tarh rne te to ~11 de~ il nd G~ed comrollcr S~ ~bO:-~ t-~- -~ke~UD~- ~b~t r .lO~jce~U~crFetch ~c~:
_ r"~ :~r ~hi~ ~OD ma~l ioVotJ tdel Dd returns e~ if t ~ch ra rn~ YES n~l U it rctur~ ffO

t C~ _ Forl~ ~O- ~

RECTtFlED SHEET (RULE 91) - 4~ -- ~on. y ~~ r r - -Rc~ ~ES u ~e e ~ ~r oper~ ~dre~ ~0. ~e d.l. ~ NO~her~
~ha:-_-~Tr~_ S_~ ~F~obky~ Td '- ~t 1~ rOrO~
-~oo~ ~ ~ . r. Ob3~
R~ rs if ~r obpe~ been ed;led hlce the l-n _~eToObjec~r ~nc~ e, ~0 otherwi~e.
e T~J ' ~ ~rOr~
--cdy~ber:toroh3~

nltW~r rr_ ~ r- ~Foo ~ . r y ~Oc led ror. ~0 ~d iU d~ ~rom oo~e~ u pro~l Sy ~ .c. ~is ~s Ihe dd~tcd i~i~f~or, ~ e ~ ~Y dC

_L
~hir ~ n~he1o u~~ ~rtOtJ ~ o iD~ ~ -e_ obFc~ ~fier Ihc cle~ed objc~, ~ if ~o~hi~
JckClCIL t the eDd of the ~y. Rct~ ~tlC. ~ oll if ~uerlO~J et~ ' rennu niL

loseru ~-d ekcu ~ o~ oSjco ~ ed by loe eoetroller'J c'-u JOurCe, ~I v~l~ Sy invo~io~
~OLJ ~ ~ lovo~ ~ 'F~ oefiorc perforlruo~ Ihe i~or,. R= v~e oojea th t ~ ioxneL or nll on f ~lure.
Not: You must ~a the ~ ob,~-s Fim ry ky Sefore ~Vint lo ~he o~ ~ If v~e c~7or~1er i~ dp ed lo ~vc ~ to Ihe d~ ~ e ~u d)euld3-l ~e Ihi~ ne~L
R-i~cs NSR~ F-- ,~1' if o~cr iodic~teJ ~ pOrilioo pe~t Ihe e d of Ihe eoo~ller ~ ~r of o~
S- ~v:--e~leO$3~1 ~EOD - ' p~ of Ihe ~s~ byer) _ ~.~o~J EO ' ~ t v ~ i O
llucru~EO tcr~ri~vhe~nrofe ~x~cob~c~n~e d~hc~er.l~lvok~. 'F'~-ctsefo~
pcrformiu~ vhe in ertiotL Jl~t~ the oSje~ thul ~ i~d. ~ dl oo f ilure. R-i~ NS~E~ jf c_(~
dic-~~ ~ ,o~itiOI- p t thc eoo of the eoovrolkr J u~y of objeclL
lo crlioo i ~- ope~ioo y~piied ' " - ly ~ the oSjeel. you oou-~ v~d lo e d ~- eTeOb ~ U th~ e~udler i~
oooG~m~d to ~ lo the o O ~ou~ ~ thc~ the d o~e~ uc i ' - Iy m de to the d~ ~rce ~---cL
U tbe ~tn~lkr e~-t ~ ve d~-o~e- - '1~., Ihe rJ~rn~eJ doo-l t~e effect i- thc d~ ~e u~ul v' e ov~ll~
reeei~ T-D ~--iRE~ lEi) SHEET tRULE 91) -~ 01-: You mlllrt ~d ~nEO ~ prim ry ILer be~orc ~vin~ ~o the du~ ~ource It the coDtrolkr i~ ~nl7~u~d to ~-~e lo the d~t~ ~rce ~EO murt ~l~dy h-ve iu pnm~rr ~cr ~t ~vhcD you in ert j~
Arter i~er~iDt the ot~jea the cootroller ~clea~ it ~nd ~ends ' 3Ch~n~ Jnd .J~ ~ ' lCh~ to ~11 of iu ThitmethcdiD~o~etthedeley~temdhod~t ." .. ~ t~rlobJ~~ " "'1 lobkct:~Dd t~0edToinxrtOD~~t: Sce th d foe th~ methods ~or - OD ho~ the~ frea iruertiolL
ho:-~X-t~ eJT:~ s hD~cn~ d ,, _ ~oo~

Verifiel thu disc rdiDI~ d edil~ oot 5 ved to obje~t ~Dd upd~ not ~-Ved to the d-t- ourcc i~ ve Retun t YES

it di~rdiD~ e,t e~Du od ~rpd-te~ i~ ~llo ved ~10 it nrx A cs~nr~ol1er ux t thi~ method ~heD retr~io~ ~ d eh o~iot the ~clecoo~ to rn~i e ~ure thu ~tt opcr tioo do~o t l- .t.~ J J di~rd pcodin1~ t h-r/gc5 U thc coo~roller h-~ ~Dy peodir~; edit t. jt ~d~ t l! Mm)i~rdEth~s to the d le~-te. Il thc dck~ue rett~t 1~0. th~t merh~d i '~ re~ hO If thc dclc~ue rerurn YES this mcthod rontinue- br ehe~ kiD~ vheth~

C~iOlU ~n y l~e di~rded Ir the d l ptc doc~o t irnplerrent Il ~YillDi~dE DtJ; the eD~roller CpCD ~--~rtcDtioD ~Dd ~ritiD~ the u~~ U it-J ~y~o di c~rd ediu. The i~nel oft0 the u~cr the ehoi~e to 9Ye the ediU

(cu~in~ _Y~TeObj~l~r ~o ix iDYt~ed). Io c-ncel ~vhuey~ Oper~tiOD iDYciced tiu~ rnohod. cr to lio~ edju lo be diu rded it the tucr r~ tO "ve ediu or to ~Dr~ L thi~ rn~thcd re~ O.

hcst. if there ttre Dr op~tiot~s od ~tved to the d t~t source the contrdl~ ~eDd~r . d ~ . dCl. _ J~' to the deiqpt ~ i~ it he deie~-te doe~D t irr4~krnent thi~ rnetood th~ cootrcller epau ~D ~ttCDtioD p Dd ~itiD~ the tt~ to ~-ve. e~Deei rJr lio~v d~rd or opcr uons; if thc u~er chx~es to ~vc Oper tioD~ ~ to c~De t. this method raur~t NO. Fo-iir. ir ~li of tttese eoDditioDs re i~ed. th~ method returDs YES.
5~ ~: --di~rdE~it~ Te~ObJ~.--_Y~T. r S _ : Urdo'~ '' d --~001'' ~

ReD~ YES if UDtio is ~D bled. hO ~viSc UDdo is by dcr~ult r,ot ~D bled ror coorrdkn ercued ~ . Ilr. thcu~ it ir ~or ccDr~llen cn:-ted iD loterr~ce Builder.

i~

- ~SArrltr ~~

RCtUrDS the iccr~ tlsed by the coorrol1er ~ vhich ~D t oer.~-n~y ~11 the Icers used by iu eDterpri~e objeas). The~e i e~ re the D-mes d ~operties or the ecDrrcller J ente~pri~c objecu. ~~ usod il- the EOi;~rV~heCodjnt iDr~Tn i prctocd derm~d by toc ~c~ l~yn. Ther~ rn y be dupiic tc ~cy~ h thc teturned ur-r.

ho: --i~q (EOA~tioD) n~o --(Yoid)_~U~
Eod- editioit ~d m~ the e~Dt n~tc ot the undo n~it ~- ~D uodo pcio~. AD _>d- mes- ltc rcYert ch-D~ rn de n~~ thc i~t uDdc i~at rr~ d. Thi~ ~hod doc~ noLoini~ ir ur do jSD t ca~d or it ~ ro~r~ ~ ~irc dy ~a o~ tbc t~P ~f R~CT~FIED SHEET (RULE 91) W O 96118147 PCTr~S95/15852 u do 5~
S~ st~ ~rJ ~_r~ e~ eUt~d~,--, 'F '~

U~

~i~t s~hod ittvolceJ s~Ut do s~ad returns tlelC

' ~ - t~, --~F50l~l ' Ll:~esqOpes~l wt R=t YES if ~ t uodo r~otttt i~ trurs~co upcu eYety iO~cnio~ . deletiolt ~-d ~wlie t;ott of etiu to ~ t et~te~Y ~~F~
N0 oth~~ Cotttrolscrst crcstlcd ~ by defitult tsbts l s7urst c~a-r o~Liott ~htle tho~c t~ted itt Ittterr ce -oujlder do 5~ st,ho _ J ' ~ -c Un~ s;.
--(usui~oed itsl~ ' ' ' 5_ Re~ur~u tbe tr~imum ttum~er ef uDdo sn rh ts~ c e#~uolkr ~ill r~o~ MY5~5 ~dded oerot~d ts~u lisrut c~uY c rlier s~rs'~st lo r~ 11 off tt c qun ~ lhi~t mes~}~d ist ts~ eful ~or ~netittg mq ts~sstp 'Ihc def uh tr~itr~n u ~o.
stetu 11y its~est t~o !itsniL
5t~0:--5~ t ' ' I

I I
- ¢OCottts~olkr '' ~~ ' r RcmnLt tsbe D~l eooo oll~ i- ts~e eootsroller ch io See Ibe es~ss oescri~io s tor i '~ 04 t5'1e c~or~ler es~

~d5~1ttpJ~ty --(void~ty Se5ld5 ~ ~ .0 .n ~te eoots~er J - - ~ estusitt~ tltettt to reclispl-y ts~eir uxr itsterrs ce itctr~
5~ ~l~o h~5 tbe t oolroller'J da5ul t 00~5ir~ st, td s~e~l eootroller redsupl-y S~ ~ --t~Coo~lle5r r ~ ~
--(Yoid)~le_eUsndo Ce0 t~ll u do i ' ' ~io uodo i~ p~n'blc uoul ~ ~v uodo poinl ist - ' ' ' 1 cid~ ~ ~ilb :~ ~ho: - trtttriuE~t~Ope~llo RE~ lttJ SHEET (RULE 91~

W O 96/18147 PCTrUS9S1158S2 Q ' ~
--(~o;~ ~-~ EO~oci tio- ~)~uocio~on Rcmov~ o~oc o~ r~om Ib~ Ct m D~ted by the col-lroll~.
S - ho: -- d~ ~' 'i ~nn~To~
- (BOOL)_-e T~ S .
Rc~r~ YES if ~ViDt ~o oi~jecu ~ iD crtiD~ or d~ktint ~D ob~1ea. twlu in ~he contrdkr ~er~onnin~
_~eTD!~ ~ S ~. NO if it do~'t. Co~llcn cre teo ~ by dcf~ult doD'I ~-vc - ~. but thc~ cr~tod iD IDtCr~ ce Buuldcr do.
ho: --_~eToO~3~.--e~-e~ToObkct~ ~- ''~

~ToOL; ~ A I ~~
--(BOOL~ ~~T~j~ ~' ~11 RCQ~U Y~S if the CODUT~ ' '~ eToOh5~~ ~rh~D ~D ~oci tio~ Dotirle~ it of ~D edit ~ ~vhe~
cop~ i~ dited ~ ~-tV~e~orOb~~t:. Ret~DS NO oth~r~vi~c. CODtrOllCr~ c~ted ~ by dd ult do t-t ~ve ~ y. ~ ~ e cre td iD IDtCr~YC Buikkr do.
S~ ~0 _ ~ ry~F~' _~T~

~ToDt- '' ~----(BOOL)--veT ~
End- cditi~ ~d ~VCJ .n pCDdiDt OpCS~Ltioq~ f~ tbe co~oller iud(. f~ it~ dc~u~ c~rolkn. Dd f~ ;IJ DC~t eomroner. ~r Dooe of d e e >D~llen h~ ed ediu to their obj~5. ~ n~etbod h~s ~o ~ a: u~e ~ToOb~ lo e n~e p~din~ edns ~re pdied to the d~s be~e i~in8 ~-~T. ' ' - . Renu~ YES if .n eh~nye~ re vcd lo the d t~ ~o~. NO i~ ~y ~ ~e o~nLtion t~ or i- refwed ~ tbe dclet-Le. If thi- rnetbod ren~s NO ~ the co~r~lkr J d~ ~ce docsll t ~uwort rolliDt o cic oper L~5. JornC ch~ e n~-y h ve beeD
5~1 ~r~V-~'-vj~t D d~ the coDtrdler xDd- il ~ p~F~D.t~~~ mc~ge ~Lf it re~ ls). If tbe objec~ rettDsNO
the co~oner ~~~ jL~ dele~ Le ~ T~P~. r ~ . me~ lf the dele~ te ~s FOC~ D r~ JI e~ the eoe1troller Cc~ltiDUe~ ~vi ~ the renuiDiDt oojec~s. If tbe o~le~te rsuns~ EORdlb~D -~ r-ilqreRe~~e ~ doesD-t impkrneDt ~he dek~ e method. the c~qtroner roll~ L~ if ~be d~ ~o~lrce sslpp~u rdib~_~l r~un~s NQ
If the ob~~t ret~5 YES front p~Fo D ~ '- . theD the c~mttdkr checic5 ~vitb iu dkkpte t~ e~ch opcntioD
~o ~Ve ~Dd e~ ~stOb~ct:. e;d t-Ob~et; ~ pd-l~j~l: to the d-t~ ~~ee depeDdiDt on the cb-Dte to ~ved It ~y of thc~ t~ t l-h. th~ ntetbod itttonns the dele~tc. rtop5 ~ViD~. ~nd rau~t NO.

Th~ n~od n~y iDVo~e ~y ot the de~elt~te n~h~~ 1i5t~1~ elo~v, dep~din~ ott tbe iDdividu-l ~ve opcr tio u bei portcrn~et. S~ tbe ~' of hc i~ldi~l tne~odt lor more OD ho~v thq iDter~ct ~ith _-~T~S_rct.
1~ Tc~ ~.r~ ",~
c~lkrWillS-~cT~ ~' ~.
coarollerDi~ eTe~ ' ~ .
, n _ t~p~ ' O 5 l~t(~;l ItltU S~tEET ~RULE 91) W O 96/18147 PCTrUS95/lS8S2 t ~ '~' e 'i " .,~; - r~ c " ' ~T.~ ~.c ~,~,~ . r~. c ~ bo-rob~cA~ n:~-deldeo~3~llnde~ 'F~

~ ~v~Ts~
- ~eT-~ ~ ' aio~moh~invo~e-~-eTr~ c ~i~g~dt~eT~ ra~YE3.~ifilrc~0.

~n~ToO~cb _~OOL1 ~'~~~~Y~
~e~i~ ~d~~ ~edi~m~k~oo~x~op~o~y~y~~~dkr-r~ R~ ~ if ~II du~l~e~ re ' -1~ s~ed to ~c r~o~dkr It eojx~, NO ir ~y gve q K nu~t rDls ~ i~ re~ by ~K
eclell~t~ Il' thi- me~d ra~rss NO #~ncehn8e~n-y h-ve eceo s ~:d _hlc o hen s~y 800 1- JS~io~ ~ et of edi~t to ~o ettt~rpri~e objccs, thc eoott~ller fit~t eo rtrms the aioct ~ith its ~eletJte by eodin8 it . rn OtJ~_L. roc~tc. ir the deleg te t~ t~l the co~ller ~ the s~ve oper~
teluros NQ ~ eootrdter ~~ ll t~n~r- v 1~ e fre n thi~ tne~te ~1 eoo~cns the ~ vrlu~ ~ ~Ddis~
csemV-l-e:~or}Cqt to itJ ~ rour~ It theo t pplie the r~t-~etteo v~ltK~ to thc eDIaprix d~ect by eodiot the eole~e objert ~ ceV~ sF. . ~ .f J . n~e ( tnethed of the u l ess kyer-~ EOReyV C ~ "
i3fo~ roloeol)~ Aher s-vio~ e eh obj~a the eontroner seoes . . " '' '-- -_Te~J~: lo it delc~
Ir the eoou oller s ves lo the d ~ ~ - - " y ttlco ~he e eh s~ved edjl is " - ~ ~ppl ied te. thc d~
he eootrdl~ do~ ro-l sve d~ oges - - 1~, the eh-o~cs ooo-l freet the d~l- ~e uotil the eolltt~lkr teeeive~ ~ ~cT~ . s~s~e.
Fin~lly. ~er svioS ~ll edits the eootrd kr aKL~t ' ~;d O_n~e sod eh~rdEdltJ to it t - - ~x ~ ll or rhc e~n~e5 ~rere r ' ~~ sved, the m~lkr h~ it~t rie~u1 eo~tt~lien ~ot n~t mo~JI~ s~e to ~~F~ ~--e~L
S- ho: -- ~ _ xlVob~s-.SorObjecl:. ~ T-rt - _, 'F~ _ ~Jv ToCL
~ TeObJ~

Thi~ ~cfioo mclhod jOVO~eJ _-~ToOo~. rauroinl ~-K it ~--ToO~j~l- r~u~s rEs. ~ ir i ~ NO.

~ I ... .
--fBOOL~elretN~t Scl~ Ihe db~ rter the alrreoBy ekc~d objecL 11' oo objeaJ rc ekaod or if Ihe l~t otjea iJ ~eka~L Ihen3 thc r0. 0~. bu~ elcae~ Ir mulliple objea~ ue ~ckae4 dli~ r~ sel~ d c sojea A~ r ~hc rmn ooFa i- Ihc clcc~io~Thi~ m~hcd resullJ i~ ' ' me~tc teiot eol, ~Dd rc~w uhc v-luc reo~cd br sh-l tL) StlEET ~RULE 91) W O96/18147 PCTrUS95115852 me~
~h;. ~neth~l ;J u CfUI rQr ~cr iDIerruY Ih-l tispl~ one objea ~ ime mc~od iD~C~ ~h~N~ ret~io~ ~dtif~kd~e~rennu~3,~i~ilrcnnuNO.

-~BOOL~ -lec~
Seka~ d~e obj~ ~ef~c ~e e~rc~ely ele~d obje~ ~ ~o d7jern~ rc ele~ed th~n ~he G~s~ objed ~ome~ ele~ed, Il ~he f~l o~jea is ~cle~d ~heD Ihe h~t cb~ ~ Jelea~ If muhiplc obj~t~ re JeleacL Ih~J melhot Jclea~
Iheobjeab~Sorc~hefi~ jeai~hc e~eai~ Thi-methodreml-~in~ i ~' ' me~gebci~ e~(, ~d raumr d~c ~ tc rcsun ed t7~ mc~
Thi- D~Kxl is ~1 t~ uJ~r iDt~Sr~ ~ d~ r 0~l~ ODe objea ~1 ~ Iine.

~ tn-Ao~.~

Thi. ~OD ~hod iD~ dOapr~io~ renlrD~ t ~dPre~o~ ~:O~S YES. r~l ir it r~ NO.

R~ ~ ~dee~ o~
S.. ~ _ ~ . ,, . ' ~ t ~
--(NS~rr~y -)~
R~s ~D ~ ~r NSNun~r objea~ ;deDutyiD~ Ihe iDteze~ cr Ihe eleaed objea~ iD the co~2roll~ ~ Drr--y cr ebjea~.
S-- ~o: --~ rdObj~,--~OIb~t~

R~ ~ES ir ~e ~. ~cbaJ Ihe re.~ Or iu oojeaJ ~er ~rmiD~ . ~e~. ~o it DO~
S~uho:-~

I~;IIHW SHEEr (RlJiLE 9~) W O 96/18147 PCTrUS95115852 ~ oid) ~ ~ .-.tid d~
Set the ee~trellcr'r ~t- ~oLtree to ~ ' ele-n tbe Yl~:uea ~Dd the u~do ~e~ Ind d~ ~I pendi~
ch~te . ll-i- metho~ i-vokr the dclc~-le method . 'I . ~ " '~ r - ~_ 1 o:--r~! IJ~ ~rdE~ J '~

--(vo~d) ~~ ' _ ',t 1~; r Set- the coatrdkr'J dek~-te lo ~nobjecL Doe~'r ret~ O~jccL

~ e~ 3 ~ROOLylos Set~ ~in~ toJ1el~ ~hether the e~llcr m rb ~ l~edo pOiD~ fier e~err iluatiol~, ocle~t, er etiit ot ~n o~
Co~ ere ted, " - '~ do t't m~r~ e~ e~ion b~ del uh. ~hk Ihox ere-~ed in l~rf~ Buil~er do.
5- ~0~ ~Uno~

--(~oid)~ ' ' ' r' ; _ ' int~/~Lt Sel- to ~J~ the m~imum number ot uDdo m~r~ th~t ~111 be tecordoL M~ lded u~ler the m~mum ~unt euuc~ e~;cr m rl~ tO be di~L Thi~ methed ir u eful ~elr t~netir~ r~ u~ Settil~ tte m~imum to O
utnit~d uDdo~ueueittt~ thir ir the W uh U e~ ' ' ' todi~eu~o 5~ ho:--~ndo ~ " .tEOC oottoll~ ~
Setr the DeSt eoturoller il~ the eootrolkr eh ir to aG~ kr See thc el~ dc~io~ tor ' - c~ tbc oac~llcr rh i~

~-tSev_ToD~
--(E~OOL~ ~- ',T~ ' .J ~BOOLylo~
Seu ~rdin~ tope~ ~rhcther e~tiotu n~:h ~ itwn. ddeu ~D~ upd-te ~ith e~ n~ t ;~ thc m-trollcr pcrtormin~ _YeT-'' ~ Rctunu YES it nKx~l. NO if the eootrdkr h~ ~y pc~di~ <~cr~ùc~
t~ iu d ul ~o Co~11,0 ere ~ oon't rrve ~ eq dct ult, but tho e e~ i- Irtetf~ Buikler da ~ ~0:-- elS~T~)~

RECTiFlED SHEET (RULE 91) W O 96/18147 PCTrUS95/15852 T~X
-fBOOL) -~ToObjY~A ~ ~.(BOOL~nt SCU ~i D~ toJ70~ ~hcthcr thc c~Dtroll~r ~ performs ~ eToO'Dj~d- ~hc t ~o o'o)cct iJ edhe~ Raun t YES itnu~ful, NO ir~he ~ntrollerh~ ~ny peotinll cdit- for it- oojcc~.
Coau~ e~ted ~ doo-t t VC - ~y or dcf ult. bul Iho~e c~ted i- Itttcrt cc Builder do.
S~ ~o: --~e<S--etToD~-S~ 'F~ e(V~a-~:torObkcts "r~
-fBOOL~ ' ~S~r ~~Sclccn~
Sett thc cicctioo ~ ~D ~rr~r Or NSNurnbcr o'ojea~. Raurn~ YES it ~hc sclcc~uoD i~ c~n~cd to nScl~cnon. NO if oo~.
lbc cD~lleS ~ ely ~eo~ itl~;~Ano~e~l to ~11 of its dcuu~ coo~rollc~. ~nd s~ ~ny ot tDem setur u NO tl~
tele~ion u~'t cb~ed. U th~ deuul coo- Onen ~llo-~ disc~rd ~his method iDVdCC~: 'F ~ xtt Ihe xlectx~
rroe~e~. ~Dd aotiG~ il~ ~ - ~ith ~.s~ Ch_ ~ F-)-lly. Ihi~ nethod xs~
eo ts~X '~ , " ' lo Ihe dde~e,~l~
Il ~,t t~tico ~~ICI7~U to ch D~e the telectioc ofil~ CODtrOIler ~Dd t ~ the ~cittioe hc~ld ~et the Ylea~ of i .~5 U e~ iDU~rs~e o~.~ca trorn tte CODlrOIlcr ~ eCtioD. Il C-D do thi~ or ~implr KndiD~ it~eJt a~h~L

FA ~ Idt --(~id~tseie~F~tOb~erFetcll:(BOOL~nnt Sett t~di~t toJ~t ~haher the coeuoTtcr s~elecu the ~nt of i~5 oo~ her pcrr~miD~ ~ raclu S~- ~o: --_.t~ ' L ~- -~ ' F ' ' ' ~B00Lylat s-n oie~ ~ di~ b~ ustdo ~rdiD~ toJ7ot UDdo i~ oy der~uh DOt eD~blcd r~ comrolkn cre ted I 1 .hOu~D i. i. r~ c~o~rnnerr cs~ d ie Interr~c B uldcr Thi~ nr~od d~st l ~rrect c~ in~ uDdo ~ su You C~D U,...~ il, di, nk uodo. IheD rea~ blc it ~Dd pe,r~
D2~. ho~cr D~' ch~ m de ~hik uDdo ~v~ dis oied ~oD't oe re ~e~L

- n ~ tOb~
--(~;~t'~ ~~Vnl~es torOb3e~1 otE0 k~Pi~ ~vYd les to nnEO c~ U thq ~e ediu nudc by ~n ~ - U the conuoiicr doeJ~ e ~r ~o oh~ t~ e~ ~lue~ sc bufrcr~d ~ ediu th~ ~ill c~u-llr ~te KDt ~o nnEO upOD the De~t _ eT Ob~ n~gc U Ihe ~iles s~Ye ~ '1~ to oojecu thcn thc ch~D~e~ s3re i ~ r-~ed lo thc oin~eaL
The c~ ~ . se ~ naifYcd ~heD ~n edi~ i~ sn~de ~ilh thu mahoL Ynu ~houid ~d thtc eoDtsdier n~e hc~ ~ fi~Di5h editi~t o~ cJ~ r to up~e the u er i-lerf a:
53~0: -- ' '3l IE~ - _~ToOb~

l~t~;lltitO SllEET ~RULE 91) -4~-undo ~ oid)~ndo Xc~enr ~ll eh-o~ b thc uodo n~c~ ~o lhc 1--1 uDdo mul~ ~a; ir~senc~ objeaJ re rcmoved, dclcted ob~ ren~ed.
~d o)~ edit~ ~re re~e~ed If IlKre rc o UDoo r~r~ ~e~. ooc ootluo~
Thi- r~thod fnl iD~dCCJ ~c'roOb~ 10 reumubte rll ch D~ i- the opeluicq Wra, ti~m _h;ch thc1'rc re~ed Ir thc ~er i~ edi~int ~ v luc ~nd the coo~roller rn~rlc~ e~q ~lion. this roulu io the uodo ~ioo ~rlunll~ re~atiD~ jurt Ihe edil io protrerL
The conlmD~ ~ r~ it- deleple be~ore re~ic~ ch-r ~e ~ith ~ ~ n~ WmUr do~ r~ iJ tbe ~el~ e returru ~ 0 the uodo opa li~ ir ~ et 5imil rly, f~ c~ nte re~ned ~he r~ot~ller ~eDd~ oek~-lc r ~ " . ' O~J me~c; if the dek~rse rclurD~ NO the~ the uodo ~or Ih-~ oo~ Iciwed ~l the uDdo qxr tioocootirme~_~t~rthe h-o~ebreverudtheeootn~ller~ u 1' "ITD ' 0~ 1 to~udele~-c F;D n~, dt~ ~11 eh~oteJ h ve oeeo re~ned the controllcr SCDd~ nbUdo~ ~0 it~ dek~ le ~r,d ~3Cl~ nploit~ ler~J ekclioochr~teri~ oJeKlr ' ' 'Y~C-~ oit S -~J~ ~pbJ,--m~r~U~ r~E-er~r~tiw;~

ondo:

~i~ ~;oo rnethod iDVo~ ~0 ~d ret~ ~K

Meff~ods l...?le lt~d by the D~l~h 3 ''' r ~ ~n~,~ ,..
--(void) . r (EOCo~dkr ~)co~rrdl~r r~ J .
(NSStriog ~)a~c~
~c~aVa~ ' SeDI from ' ~' -1; 'F "~ to ilLform the dclel~r~e tb_t oL~o~ n h~ ~rf~ncd iU~ ediL

~ ~r o~ ~
--(void~ ~)conrroLlrr ~ r ~ S ~ cFOD~ .c SeDI f~-t ~r ~ S ~.. to iDform O e delet-te Ih~l c~rrolkr'~ d t- o~e i~ ~ aD~aSo~r c i~ ,,r ~ c , s ~ ~:
--(vo;d) ~ ' 'F~ller ~)co rr_llrr Se-l ~h0e~er cO~rroUr;~ ~cleaioe ch~c~ Io i-form ~he oekp~e of Ihe ch D~c t ~ ~ ' ID I ' CL l t~
--(vo d~ ~1 .(E~Cr~rdler ~)c~lroll~r di~ t ro Se~ of o c dckle methoo_ lo iDf~m the dek~- e o~ ervsrr~ler h~ ~ktod o EO.

ht~ tD SHEET (RULE 91~

=

W O 96/18147 PCT~US95/15852 - Jn ~ ' LrO~; - ' Q~ ~ ~t.
--(~o,id' t~ Dtrolkt ~)contmll~r d'kll~L, ~O
L ~t _.rL~_~--c~
SCDI fr, m_-~T-~ ~ S _~loi-fc~nthee;cl~leth t con~roll~r b- delccd t~Eortom ~r __~1' Jr ~' CLJ- .
~ d) JL ~ (EOCoDtro kt ~krn roUcrdidF~tehOl~ S~y ~ ccrt Scnt f~m te~ t~- iDf~nn tbc dclc~ptc ~h t contr-ller b.~ &tchcd thc est~pnsc ob~ ;D ob,irat FTOrD ;U d t_ x~

c ~r~L l~rr' ~ ~ j~'c --(v~ ll (E4~ contr ll~r did~crtObj~t anEO
Scnt ~xn _--Te{~ Io i~m thc dclet~e th l eentrelkr b-t insctted ~Eo.

.
_ (v~ e le~kr ~)et~troll~r d41r~. FO
L ~t Scnt fro~n _-e~,r - ~ .0 illf_cm thc dele~te tl~ ce~t~tl~r h~ in~ened onEO in~o ~- ~ - -' W--bvn -- ~r ' ~' 'I ~ ~ _.
~ id~ ~r (Ftx- ~L. ~p~ rolkr~ n ~ ~.(id cEOD ' ~ t~
S~nt fn~ T~r ~ ~ .0 iDs~m the delcptc h t con~rolt~rh~ toDed ~c~ eh nSe~t j~ ~e rDidS~-TsD~ ,~_ _ ~(~ ' ~-- ~T-''~t ' ~. (EOCon~rollcr-)co tn~ r Scnt fn~rD _~eT~n ~ ~ 0 info~m the dele2~tc th t coruroller h-s finishet ~ vin~ n ~.~ ,0 i~ d t~
~: Tbi~ n~bod il ooly iD ~o~cd if ~11 operrli~u ~crc '~ cd .,t.. r I~ ~_ToOb~
--(~o d' ~ Et~CoDIrdler ~)co~rolkr elJdS--~Te~;~ FO
scntf~D_~T--Ob,~ oid~nlhedkle~ lcth l c~rdkrh~ ~vYetedil~loa~lEO

. J~. v~ ~do:
--(~e~d)~ IU lo~(FlXe~~ co Iroll~r Se t f~m ~d~ ~ i f~m the dclcl-te Ih-l conlrolkr h~ pcrf~med ~a uedo oper-liO~

RECI IFltu Sl tEET (RIJLE 91) W O 96/18147 PCTrUS95/15852 ~r,~ n . ~ ;ct~ ~
-(- 'd, ~ (Fr~ )co~ro/kr"~ OLJ ' r,g SCDt f~m ~o~o u~ inf~ dck~ t a~hrtL~r h~- ucoooe d~ tEO.

F ~ ' ~L ,~
_ (~7~ ~ .(F~ , '' '~ttvU~r ~ J ~ r~

Scrlf~m_--T-~'~ ~toi~onm thc dcle~c th~ ~~ t~r hu u xhtcd ~EO j~ _ n_~

..t~T~D~ L; ~,r s~ ~.
r C---- r~ )ct~kr r~De~oD~ ' ~- J - rj,~
~r r q~ "
Salt Irom ~-'r '' ' S ~. to h~rOnn thc dde~p-e th t contn~ r h.~ r~led to deklc ~EO S~m ~ . .. U It~e o~lcy~ ~ E~ , c~lt~J~r ~tiDUC~ olher c~ to tb~ ~
~rcc If thc ~lc~te ~ EOR lro ~ .Re~e c~r ~ ~o11b~ to it~ th~ ~s if d~ ~Ce ~PO-dJ 10 thU me~C _~e~ '' ~ b~D Dd ~ ~ r llure ~ul _ b~ thed t~e. hccoD~leriD~ thedekplen~ ~ _--Tt ' Dd ~,r '' 'Voll~o ~r ~AT'i~ - ~LI~ ~' 1~ ' ''- ._.
~(EOCo~ l~ ~ r l~lletlT I~Ob~echolEO
~.r ~._ Scot f~ eTorr - - to iafoom thc ddeute th~ a~rvltcr hl~ feiled to i~uert anEO icto a&~St~trcc If the oelc~ue t~ EOC ' ~ ~_ co rn~lkrcooti~ ~vin~ ~I cr C~D~ to d e d-~
curcc If the oele~-tc ro ~ .r - ~R_ ct~U~r seD~ ~ o ;D d~
if the d u ~cc ~pood~ to th-t me~l~c ~e r ~lJ r ~ tbeo ~u ~d ~rt ~ f~il~e ~uh iO ~II;D~ b-elc the d-t~ Jourcc thc c~ot~ller i~olce~ the dkkp~e mah~ . q ~ UYI ~ 4 ~_ r:r~ Jn -J ~- ~ToUp~ ' CLJ ~ '~
_ (FnD - ~ ~ r ) (~
r~r~ ~o ~ L ~
Se~tr~n_~-T r . toieformthedele~ leth tc~LrnV rhutuld ~ p~hleanEOi-aDa~rr~.lr~e delc~-le ~en~ F~C ~t _. r ~ R-~ ce~v/kr co ni-w e ~ io~ ~her ch-~ lo the d~
~ U hedeleut~ E~r~ } R~ c~n U~r e~ rol~ ~o iu d-~- ~~
ir thc d- - ource re~d~ to Ihu n~e ~ r ~. the O dX~J U ~ 11~ ~ fulure ~uh FlE~ ltl) SHEET (RULE 91) ~ =

W O 96/18147 PCTrUS95/158S2 _5,~_ b n~lin~ b-ct thc ~t~ ~rcc the coatrollcr invo~c thc dekRYe mcth~ Jl ~ D r ~ nd ~ ~ "'P-~ ~ r~ct c _ ~ vl ~b -tToP~ ~ ~r~
-(EOtAb S .. r ~ n~ .(E~ocrtollcr -)conrroll r ~ 'O
t~~rro~reForD
Scnt f~m _ eT~ - .. ~hcn ~EO rm~ O from r ~. ~r. D ~ ~ m~ If the dclc~-tc ~ Re pooe c~tro~l~r CAn inue- ~-~ in~ _~hcr cb~n~eJ ~o thc d t~ If the oelc~ tc r~~ FOR ~ ~ ~ F~ ~Re~e controlkr cnd~ On~ ~O ;~S d~t~ ~ it tkc t~t~
rc ~ to t~t rnc~tc ~-eT D - thcn ~b~u ~nt ren nu ~ fJilurc rcJult r~ CL; ~ n ~rO . A _.
' .(EOCon~rdkr ')co~n~ r ~eO~_LF ~iFor~ c ~ Cr rcr Sem ~n _--e r r~ ~ to inf_rm tbc o l ~--c th t rL - ~c re2~ ~10 f~ J rne~c c, ' . ~ ~' C~, ~
_ (BOOI ' n ~. .(EOCo~roner -)co~ trdkr _IDDd~t~J~ ~O
Seot fro~ ~ny ot tbe deL-te maho~ to idorm the ockT-te th t ct~rtn~lkr ~ill ddete nEO It tke deAeptc retw NO
thc dekrioo ir~ t p~f~ned ~d _ eToOoj~trr is ~b~lad; if tsr~ ~de~te ~ YES the dektjon II IIIQ ~ ¦ -- t~
-(BOO~ ~ . ~. .(Eo~Anct ~)ct~sn~lkr ~deO~, FO
rL ~ ..
Sen f~m~ toi~f - rsA~thedclc~r~teth sc_ s 'I _~ deleteancOfrorn c rL Ittke dcleTr~te re~ NO ~be dcA~i~ Lrn ~ pcrformeo (th<~gh _-~T3D ~. eootiDrlcs f~ aher operY~k if tshe .~ I LC~ YES 1.hCdCA~ir~ l~h.

r~AnD~
~ " "~ j~F ~ cortrAllcr ~)cor~srrJlkr Scnt frAm ~r~ ~o inforon tke delegr tc th~t corlsn~lkr i~ ~ so dDc~rd ~AcDdin~ etit~ It the deleT~te d~ timplerncntthirmc~deor~rolkro,A~en~nr~ncntjonpael~t~rnin~theuertsl tediurrqbedi~rdoLUthe r le~ te re~Yrar NO tl~ Id~Uo_ d rrn~nu NO; if tbe dek~te re~u YES then ~o_ d U ~he dcle~rue ~r~ to m~c r~re eti~J ru~ ~ct it e~n e~plicitlr Knd _-~T~J~ ~o ea SroUer ~ Jt y, ~
--(BOOI~ t~ ..t~ ,'rA.OCootro~cr~~cotl/roUer Sca fn-n ~o--rd ~o it~form the tele~t~sc tht t ~otl~n7/l r ir r bout tAA di~rd oc~din~ o,A~r tion delrtiKd ~~

REL~l ll-ltl) S'~IEET ~RULE 9~) h d~t ~ U Ihc ~kk~e~e docJc ~ implemcc~ rne~ e ~ ttect~ i~el ~iot the t xr ti~t 1~ m-~ be diJdct, Uthe oelq Ic r~ NO then i~Dl~o~o rett~u NO, if Ih~ dciq~ tc rert~ YES
the- ' "t t~ r t t~, U the oclq~te ~ to m ice n~c tlpd~ ~e ~ed i~ e - e~pliei~J Jctld _~eT ~D ~ to ~n7U~r t ~ ~ ~ iDF~t J~
lo~ fsom tdeh ~o ir form the ode~te t~ conr~U~r i~ ~t~ ~o feteh U thc dde~e rer~ NO ~hc rd~ i~
~txnct if Ihe dekpte rer~Dc YES thc ~dr~ ~xedL

' Jn-l, ~ In~b~ ' ~ ' _iDln~)' J ' "O
5ertfrontiac t~lOlJ ~~ ' toirfeemthet!cle~ctr~tin t ", _''i~crt ~EO irtoh ~r of co~ t o lr~c~ U Ihe delel~te ~t NO the tt~tic~t iJ ~, ;r the oelet Le tr~nu YES d)o irL~ F~~ 1) e deleptc rr-) rrad i f y arc0, ~JnJ I Iy by ~ettiD~ it~ Ley ~o ~ truque ~hle c,c.,~ r~ t~
O(r ~ ~~e~trDll~r ~'l~e~J - ;~O
. ~ . ~ .~ . ..
Satfsnn_~eT ~ ~ _.toi~fo mthedelepteti~ t; ~ erto~cOir~o-rL - '~ ;e ~f~hcdcleg-te re~ NO thc ir~oll ~ t perf~d (ti~ ~c-eT='t r _ e-otiDue~ fcr othee r~ic~) it the dck~-te ~_ YE!i the ir eniolt Foc~b - ~,r . ~ dlb- ' ~r -Scrt from _~ T ~ ~ ~_ lo i-f~~ tbe dele2~ te th t ~ ~ rdl b~ dl~tY j~ _n - ,~ The dele~ue eD~ t prevellt thi~ . bl~ m y Lr ce ~i~ ev~ ~oo r. ~ b xd oo thi- r r ~ ~ Oi~ ~
--~N~ EOCor,t~ller ~kol treJkr D~ ~wYal~~
~ ~!LJ --O
Ser~l *om _~cToOb,kctr ~o infr~ the dk~Suc tin t ~ gve ab'tr to o~O~ ~vYal_rJ i_ ~ dK_iO~ ~
_e~v-iue p~ ~e Lqr rc the ~~ or p~per~ i~eloou-~ ~o o~O ~ d ~e ~h~ re rhe ~ ~1~ o EO
~TI be ~ eo f~ tho e p~ ie~ The ddetue o~ r n~ the Y-h~ c~ ~hey re, or e~o ra~ ~ ~uiYtie~ et of ~h~
to ~ppy ~ ? the d~j~cL If tnc oeie~ue ra~ dl the ~ ~ 't perf~d ~d ~-~T~ ~rteoL

n~ Ji- r~ I~Toi~

RECTIFIED ~HEET ~RULE 91) =

W O96118147 PCTrUS95/15852 ~ ~T~ .tE~ier ~)c~rdLrr S~d f~n _~T: " ~ S ~. Io ;~ he otle~le del~ NO ~e ~c i- ~bo~ed; it Ihe dtl~p e r~ sle ~re pr~

&- ~ r'~B Uncb:
--(E~ ~ b ~ ~. ~lnd~s~o~er ~)ctm~n~lltr Sc~l f~n ~b so i~orm Ihe dele~ue ~ ~ " _ ~ us~ ch~eL If Ihe dek~-~e s~ NO the us~do i~ ~; if ~e del~ple reosnu YES Ihe u~do ~cn~i~

r~ 1r~C'~
--(~ ' b . " .~C~-sdJe~ ''~
Se-l S~n ~ lo nform she dek~e th~ " _ ~' u~b ch~p~ p~iou~ly m de ~o c/nEO. It d e delc~ e rc~ NO ~e ~-do e~n~ fcr ~EO ool y i- ~d (~e l r~er us~ <~ i~); i~ ~e dde~le rd~
~i s~ ~o op~ r<, o EO i~

-. IllUF QL ~ 1~

Sc~ r~ ~r~T~ o ir form ~e ddep~e ltus ~ '- _~' ~e olEO ir -~ I'~ _ U lhe dde~le se~ NO t~e up~ue Y~'l perf~nrJ (~ ~-To~ ' F ._ ~~u~8 for rJhcr ~k If Ihc dek~e rc~ YES Ihe updue ~L

RECT~FIED SHEET (RULE 91) mnSC r~bJcCIJ Ft mcwotk Rcle~c 1.0 Col)y~l~hl 01994 b~r NcX--f eom~ ulct Inc ~11 RlchlJ R~etvcù.

EOAssociation Inheri~s From: NSObjeel Con~orms To EO~ . n . _ Daelated In: Lcc/CO~ - ~ h Class Description EOAssoeiation is an nbslrael elass derming Ihc link bclwccn an FfK' ullu whieh managcs a eollcetion Or d~ ~ t _ cnlerprise objcels and a single user inler~aee elomcnb such as A eùlumn in an NXTableView or a eontrol An EO~ssoeiaGon ._ _ " tbc display snd ediWng of propeny values ror hs eonlroller' 5 colcrprisc objeets EOJ~ ' ' elsn aiso link two eonuollers (see ~hc EOQualifiedAssoeinlion eless ~ ror morc i r .. ~ .
An EOAssoeiation l;nlcs just onc properly ot thc objcas supplicd by ils Fr~ Io ils user inlerfsce objcce This properly is idcntiGcd by a Iccy ~s used in ihC ~CCCsS laycr's EOKcyVdueCoding informal proloeol An assoeialioa for a user inlerfaec objeel eapablc of displaying multiple emerprise objeels (sueh as an NXTablcVicw) displays data ror ail objcets in tbc eontrollcr while an usoei-Gon ror a user intcrGIee objcel enpable or displayinR only onc cmcrpriSe objcel (sueh u a Tc~tFicld) displays dal- ror Ihc Gu st scleeled objcel in Ihc eontrollcr ~n EOAssoeis~ion is notified or ebangcs in ils eonuoller ~htough the EO~ r ' ': ~ - pro~oeol UPOD
teeeiving notiee of Is ehangc tbc ssoeiallon de~crrnincs whieh objeets il nceds lo display vducs for and sends caeh -. ' 1;~ Ke~: me-sage with an rr y eonlaining Ihe icey for Ihc usoeialion's propcrty The assoCialiOn then upd-lcs thc uscr inlerfaee objcel wilh Ihe vaiue relumed it IPs dirrerenl firom Ihe eurrenl v-luc Ir thc EOAssoeialion's user inlerfaee objcel ehanges Ihen the EOAssoeiation musl send Ihal ehanEe lo hs eontrnilcr EO,~ -' usually sct Ihcmsclvcs up as Ihe largets of eonlrol objcel so thnl Ihey'rc notiGcd of sueh eh n~~ For e~mplc whcn a user cdits a Tc~clFIeld ~ Ihc namc of an enlerprisc objeel and prcs5cs Rctum Ihc Te~ctField sends its ssoei-lion an aelion rn~sagc Ihe EOAssoei-tion Ihen gels the new vnlue in Ihc Tc~lFicld and inrorms ils eootrollcr Ih-l thc uscr inlerfaee objcel ehangcd by sending the eontroller n _ ' " ''' ' r~- rnes5age Io raponsc lo this ' the eontroller scnds a value mcssage lo Ihc assoeimion lo gel Ihe new value ror Ihc cnlerprisc objcel~
For more ' on how EO~ ' work wilh EO~' 'I and user inletraee objcets scc the EOC " elasss~ "'-- ' andlheEO~ -- 'J~JI;f~ a;oaproloeol~l- r ;- For ' on for a speeifie dafination elnss scc one ot the rollowing elass AY~Qa~ 1C Subelass D~ 0 Obleet Class EOAefionCellAssoeimion Any AelionCell subelnss ~sueh as TealFichlCell) EOErowserAssoeialion NXi3rowser EO'' ~ ssoeiation 13ullon EOColumnAssoeiation NXTableVcelor (in n NXTableView) EO~' ' A ssoCialion Sec bclow EOimageAssoeialion NXlmagcVicw EOMnlri~Assoeintion Mnlrbc tbnt see L elow) EOPopUpAssoeimion PopUpLisl P~E~ ltD SHEET ~RULE 91) W O 96/18147 PCTrUS95/15852 EOQunlirlcdAssocin~ion EOControllcr EOTc~lAssocinlion Te~
EOConlrolAssociDlion cnr. bc uscd wilh Dny simplc conlrol IhDI mnnngcs D siAglc vDluc sucl~ DS D Tc~lFicld or D
Slidcr. Ilowcvcr ir D conlrol hns n dcdicDlcd DssOCinliOn subclnss you should usc IhDl~ i:or c~Dmplc Elullons should bc linkcd willl inslnnccs orEO~ullonAssocinlion Nolo: EOMnlri~tAssocinlion hn5 vcry limhcd ~ y. If you wnnl lo crcAIc A~ - whh in-lividunl hcms in n mnu-hl (cspccinlly widl liclds in ~ Eorm objccl) usc EOAaionCcllAssociDIion.
Allhough Ihc imcrrDcc of nny DssociDlion comDins only 8 rcW mClllOdS, IhCir ' , ' - - - Drc OrlCn highly dcpcndcm on onc nnolllcr _nd on Ihc WDy dlc dcslinnlion objccls DCI. I3CCDUSC or dlis if you nccd 10 crcAIe Dn DssOCiDliOn clnss ~or n cuslom uscr inlcrrDcc objccl clDss you should crcDlc il DS Dn immcdiDIc subclDss Or EOAssocinlion.
.

Instance Variables Nonc dcclDrcd in lhis clnss.

Adopted Protocols EO~ rl r}
r,~
--endEdiling Method Types Inilindizing ncw inslnnccs --inilY i ~
Gcllin~ Dssocinlion mcmbcrs - conlrollcr --dcslinnlion Gclling Ihc kcy nnd VD]UC --kcy --YAduc Instance Methods conlroller _ (Frr~ llc ~)conlroller Rclurns Ihc EOr~ 11 rcsponsiblc ror Ihc nssocinlion.

do~lln~llc,n d Rclurns Ihc objccl llml Ihc nssocinlion monilors. This is Iypicnlly ~ uscr inlcrrDCC obicch bul docsn l havc lo bc.

RElil IFltU StlEET (RULE 91) PCT/US95~15852 WIthCo~ ~t~
- InllWllllColllrollcr:(EOColurollcr ~,.r, ker~ sslring-)aKcy .. .. . .
iniliillizcs 3 ncwiy DllocDlcd EOAssochllion wW~ .,n.. aK~y is Ihc nDIIlc of Ibc propcny rcprcscmcd by Ihc And is used A5 IhC idellliGCr rOr VDIUC Irnllsrcrs 10 Dnd ~rom ~Icslillalion (Iypically D uscr inlcrracc objccl or anolhcr Eoconlroller). This is Ihc dcsignalcd inilialiLcr for ihc EOAssocia~ion clDss. Raums sclt.
Sao al~o: - ndd~ (ECiConlrollcr) key - (NSSlrjng ~)kC,Y
Rclurns Ihc namc or Ihc propcrly Iha~ Ihc assOciDIiOn IrDnsrcrs lo ami rrom hs dcslinDIion.

valua _ y--tue Rclums ~hc YiltUC Or Ihc ~ ~idliO~.'s dcslinnlion AS an inslancc or an approprialc vAluc cliLss (scc "Mapping from Dalabasc lo Objecls" in Ihc acccss laycr't EOAllribulc class q rriri~ ' ) For c~amplc, ~hc vaduc class for a Tc~lFIcld's vaiuc is NSSlring.
For . . ' using Ihc ~cccss IDycn it Ihc valuc chlss spccificd rOr an CnlCrprisc objccl's allribulc in Ihc EOModcl isn'l NSString or NSDala, il musl malch atDclly Ihc valuc class used by Ihc associalion.
Saa also: --key, - IskcVnluesF. ~ '~ ' ,, . (EOtCcyVaiucCoding informai pro~ocol) I~L~ Fl~D S4EET~RULE 91) W O96/18147 PCTrUS95/lS852 -5~-EnlcrfJrl~c ~blectJ Fr ~cwork ~ele~c l o Copyritl~l ~1994 by Ncxr Cumpuler, Inc. ~11 Rlthl~ Rr ~rvcL

EOActionCellAssociation lnhcrlts From EOCon~rolAssocialion EOAssoci-lion NSObjcc Conlorm5 To EOt~ ,Lrlc~nion (EOAssoci~lion) Occlarcd In: s~ L~ OControl~ 1 Class Description EOActionCellAssociillion is ~n ~SSoCiDliOn Ih~l works with Im indivi lu~l ccll of ~ comrol such ~s ~ M3trix A ccll ssoci-Lon is nccdcd bcc~usc t control oftcrs only ~ singlc IC~cl dcleg-lc for ~11 of ils Ctlls, bul n associ~lioD linkcd with a ccll occds lo know whcn iU own ccll has finishcd cdiling, If you scl up scvcral EOAclionCclL~- - ' wilh a Matrix, ror cxamplc, only onc can hc thc Icxl dclcg~lc, nukin~ il diflicull for anothcr lo bc nolificd whcn iU ccll cnds cditing To avcrt Ihis problcm, EOAcLonCcllAssoci-tions rcgis~cr thcmsclves globally rtccording lo their dcstinatioD
cells WheD thetr control objecl ends cdiling, thc association regislcrcd as Ihc control's Icxl dclcgalc looks up thc ssoci-lion for thc control's selcclcd ccll snd propagnlcs the notirlCIIlion lo it AlLhough the interf cc of ~ny essoci~ttion contains only a fcw rnethods, various ' ' trc oftcn highly dcpcndcn~ on onc nothcr and on thc way thc dcsLntttion objccts l~a Bcc~usc of this, if you nccd lo crc lc ~n associalion cl ss for ~ cuslom subcl~ss of AcllonCcll, you should crenlc il es an immcdialc subcl~ss of EOAssocistjoD

Instance Variables Nonc dccl red in lhis cbss Instance Methods Nonc decl red in Ihis clltss RECl IFIED Sl~iEET (RULE 91) W O96/18147 PCTAUS95~158~2 - 5g -rul~rpd~e ObJeeu r~meworl~ Relel~se l .o Copy~ C\199J by NCxT Compul~r I~-c. AU Rl~l-l. R~~rve~.

EOColumnAssociation Inherlt~ From: EOAssoeiadon: NSObjca ConlormY To: EO~ ~ N~iru..~ , (EOAssoeinlion~
r~eclared In: ' ~roC,~ ~C~ACi~UAn h Class Description ~n EOColumnAssoeimion displnys and edils a eolumn of an i~CrnblcVicw eomaining Ihc valucs ror ils key ot all enlerprisc objceLs ;n ils eonlroller. You eAn hook up ~ny numbcr of eolumn ~ lo n singlc NXrablcVicw. ~s long as tbey aJI hve Ihc s~me eontroller.
Howevet. beeausc an NXT blcVicw cxpeets lo havc only a singlc objeet aeling as ils daia souree (no~ lo be eonfiused witb the eontroller's dala souree) one of Ihe eolurnn ! ~ ~- mus~ slep forward lo play Ihnl role. The eolumn ~ tor n p~ieular eonLroller ~md NXrsblcVicw Icnow lo rcndczvous under this IQd ~ . whieh uses iLself and its eoborts a~ eolumn idcnlificrs and forwards rcqucsls for dn~a aeecss lo thc approprialc 1-~-A~'i~' ' n ~llhough Ihe inlcrraec of Imy essoeiation eonli ins only a fcw rnelhods various ~ . ' ~ - arc of Icn highly oepeDdenl on ooc another and on the way the deslinalion objeeLs llel. Beeausc Or Lhis~ Ir you need lo erenlc n nssoei~lion Cl1SS tor a eusmm subelass of NXrablcVeelor you should ercalc il ~ n immcdi~lc suoel~ss ot EOAssoeialion.
Edlt BuHnrlng Beeause an NXTablcVicw doesn' I slore daLa on ils own EC)ColumnAssoeialions have lo eaehe their ediled values (in olher words buf&red e(lils nol yel senl lo the eon~oller). When asl~ed lo gel a vaiuc for ~ p~rlieular index uhc assoeialion asks hs eonlrollcr for Ihc cnlcrprisc objeel al uhnl indcx and looks ror a vnluc eaehcd undcr Ihnl objeeL Only if il doesn'l find onc does il ask Ihe enlerprise objeet ror iLs value. When the eonlroller savcs lo objceLs aJI of iLs eolumn ~ (and imy olher c ~ - Ihal burrer cdils) arc senl disenrdi~dlts messagcs Iclling Ihem lo purgc Iheir eaehcd vaiues.
Settlng Up an EOC ' 4~s~YI7'l-)n When seltin~ up an EOColumnAssoeimion ~ .~ - "y you musl eonligurc the newly initiaiizcd assoeialion by sending il a xlTnblcVlew: m~sagc wilh Ihc NXTablcVicw of Ihc dcslinmion eolumn as an nrgumcnL This rnclhod scLs Ihc assoeialion up as Ihc NXl ablcVicw' s dnul sourec and dclcgnle ir needcd. Sce Ihc rneuhod dcseripfion tor morc Instance Variables Nonc deelared in Ihis elass.

Htl;~ L) Si~EET (RULE 91) -W O 96118147 PCTrUS9S/15852 En~a~ c Obkcu Fr~reworl~ Rclc~ e 1.0 Cop~rltlU ~1994 by ~cX r Con~pulcr Inc. ~11 Rl~bu R~crYc~.

EOControlAssociation Inherlts From: EOAssocialion: NSObject Conlorms To: EO~ u~;r...nio" (EOAssociDlion) Deelared In: fa~.~/coconlrol~-sn~ n h Class Description EOControlAssocinlion is Ihe defiull nssocialion fom~ll subclnsses of Comrol e~ccepl Bullon Form Malri~
NXElrows~ od NXimageView. It sels ils eonlrol's vrdue wilh selSlrlnl V-lue: ~nd gch ils eomrol's vidue by invoicing stringV~lue. ~ eonurol associnlion Ihus wor~ wells with ~ny "simplc" conlrol hm displ~ys only ~ singlc Yaiue sueb ns a Te~lField or Slider.
A conlrol associnlion seh ihelf up ~s Ihe Inrgel of ils des~inAlion conlrol nd if Ih~l eonUol responds to Ihe sdT~ me5snge s Ihe eonlrol's le~cl deleRnle. This Idlows ~ eonlrol associaliOn lo notify ils eonlrolla of nn edi~ whenever ils eonlrol ser,ds an sc~ion message snd whenever ih eonlrol ends edi~ing (for e~ample by ~hc user pressing Tab or Relum or selecling ~no~her le~cl rleld).
Allbougb ~be im~face of any essoe;alion Conlnins only ~ few melhods Iheir . ' ' nre of len _ighly depeodeol on one Imolha and OD he w~y Ihe desdn-~ion objcc~s aCI. Because of Ibis if you r eed lo crenle an associalion ClilS5 for a cuslom subel ss of Coolrol~ you should crcale il ns an imrncdble subcl~ss of EOAssocilllion.

Instance Variables None declared in Ihis class.

Instance Methods Nonc dcch~rcd in Ihis class.

RE(~ SHEET (RULE 91) Emctlld~e ObJccls Fn rneworlc Rclc~c 1.0 Coryd~b~ Ol99-~ by NcXI Compner, Inc. ~11 Rlchl- Rc~crve~l.

EOlmageAssociation Inherlt~ From: EOAssocialioll: NSObjccl Conlorm~ To: EO~ olircal;o,. (EOAssocinlion) Declared In~ CO~ ,~ ~ ~ h Class Descrlption An EOlrr~geAssocialion uscs an NXlrnageVicw lo display nn NXlrnnge for Ihc rpptoprilllc Iccy of ils conlrollcr's sclcacri objccl. nd scls n ncw irnngc for Ihal objccl when onc it drsggcd ovcr Ihc NXlrnagcVicw.
t~llhough Ihc inlerfnce of ny ~snchlion conlnin~ only a fcw rnclhods. vsrious ~ , ' - ure of Icn highly dcpcndenl on one anolhcr and on the way thc dcslinallon objccls acl. Bccausc of Ihis, if you nccd lo Crcalc an associa~ion ele~ss for ~ cuslom subclass of NXlmagcVicw, you should crallc il as an imrncdiale subclass Or EOAssoci~lion.

Instance Variables None dcclsrcd in Ihis elass.

Instance Methods None dcclared in Ihis class.

RECTIFIED SHEET (RULE ~1) W O96118147 PCTrUS95/158S2 Emc-rt~CObJccls Fr~rr~vrl~lc Rclc~c I .o Cory~ u cl lg9 1 by NcXI Col~lpu~cn Ir~c. /UI Rl~ln~ Rc~ervc~.

EOMatrixAssociation Inherlta i~rom: EO~ssocihlion: NSObjecl Conlorma To: EO~ utir~ n;o~ (EO~ssocinlion) D~lclared In: ~ L.~OM~tA~ or; -Class Description ~n EOMatrixAssociation m~n-gcs ~ MatAx ot 13unonCells ~ ~ selec~ion lisl addinp cells ~or every objec~ in i~s eontroller snd displsying ~he v~iues for i~ key. To work properly wilh ~ rn~lA~ ssociAtion. ~ M-tAx should use r C~ of~ypc NX_ONOFF hnve s modc ot Nx-R~ nlo~ :)r)E and bc conlaincd in 5 ScrollV iew. This - 5_ - ailows you lo use the Matri~c lo sclea a singlc objccl al a ~imo.
FO 1~ Associalion of rcrs a more lle~cible seleclion lisl lhan EoMatrixAssr)ci~ion~ sincc an NxBrowser cim tioW
cmply und mulliplc sdections in ~ddition lo thc usuni onc objecl a~ a timc. A browscr-bascd sclection lis~ is ~Iso casicr lo sel up sincc Ihcrc s no cxtr- c ~ ~o do bcyond connec~ing thc association.
Aithough lhc iolcrLcc of any ssocintion conl ins only a fcw methods vaAous i arc oftcn highly dcpendcol on onc nothcr ~tnd on Lhc way thc destioation objects ~ICI. Because of this if you Dced to cre~te ~m assoclation class for a custom subclass of Matrix you should creatc it as ~n immcdiatc subclass of EOAssoeiatioo.

Instance Variables Nonc decl rcd in Ihis class.

Instance Methods Nonc declucd in this cb~ss.

Rt~l IFIELl SHEET tRUiEE 91) --6~ --En~rpdse Ob]ccb Famcwork Relcue 10 Copy lclu ~1994 by NeXT Cornpu~~, U)c, ~11 Rl~hl~ Racrvc l EOPopUpAssociation Inherll~' From r:OAssociation NSObjccl Con~orms To: EO~ ' ' Nu~G. t ~, ,(EOAssociation) Declrred In ~ ~ - r~ OPopUp~ - h Class Description An EOPopUpAssocintion uscs n popup lisl lo displny Ihc vnluc of nn enlerprisc objccl for its ~ey, nnd nolifics its controllct when the user choos~ a ncw ilem in thc popup lisl To scl up a popup ~ n, you havc lo crc-tc thc popup lisl in Inlcrfncc 8uildcr and mnnually popul-lc il with ilcms ~ -r " Ig Ihc possiblc vntucs for Ihc associ-dol~'s tcy You Ihcn fiorm Ihc associalion rrom IhC conboUcr lo Ihc popup lisPs buUon Whcn Ihc ssocinUon is nolificd Or n chnngc by ils controllcr, il gClS LhC v~duc ot Ihc rl~S~ sclcclcd cnlcrprisc objccl ~od 1001~5 for a mnlching string vrduc in thc popup lis~'s ilcms If il finds an ilcm eqund lo thc cnlcrprisc objccPs valuc, il h s thc popup lisl sclccl th-l ilcm Ir il docsn'l Gnd n ilcm wilh ~c v-luc, il Icmpornrily crc Ics n c~bn ilCm Wilh Ih-l vnluc, ~dds il lo thc bollom of thc popup lisl, nd has Ihc popup lisl sclccl i~ Thc nc~l limc Ihc associmion is notificd of a changc in sclcctioo or conlcnts by i~s comrollcr, il rcmovcs thc Icmporary ilcm from thc popup list 8y 1 'ly ~dding itcms lo ils popup list thc ssocialion gunrnnlccs Ihn~ thc right Ihing is displnycd cvcn for a valuc oulsidc tbc sct ot"lcgnl" valucs, Wbcn thc uscr 5clccts an itcm in thc popup list, thc association simply scnds an u ~ --n~ mcssngc lo ils controllcr An EOPopUpAssoclnUon's valuc is Ihc strin8 vnluc ot thc sclcclcd ilcm in thc popup list, so Ihis ilcm will bc uscd ns thc ncw vnluc for Ihc cnlcrprisc objccl Nolc Ihal if a Icmporary ilcm was nddcd lo thc popup lisl, il's ~ rcmovcd if Ihc uscr chooscs n diffcrcnl onc Allhough tbc inlcrfacc of nny association conlains only a fcw mcthods, various ' , ' ' arc oncn highly dcpcndcm on onc anothcr and on thc w-y thc dcslinmion objccts ncl I~ccausc of this, if you nccd lo crcalc an association clnss tor a cuslom subclnss ot PopUpLisl, you should crcmc il ~s ao immcdialc subclass of EOAssoci-tion Instance Variables Nonc dcclnrcd in Ihis class Instance Methods Nonc dcclnrcd in Ihis clnss Ut~lltltu SHEET (RULE 91~

P'~TrUS95/15852 i~ttcrprisc ~bk~l~ Ft~wodl RCIeAtC 1.0 Cop~tllshl ¢~1994 by NtXI Colt-pulcr, Irc. ~11 Rl~ht~ Ra~tt~-l.

EOQualifiedAssociation Inherlts From: EOAssocialion: NSObjcc~
Conlorms To: EO~ (EOAssociation) ~etclared In: ~ ~ r' 1:0Q ' - '-.s - ~ ~ h Class Description Thc EOQuaiillcdAssociation class implcmcnLs l be~vvccn F~ '' OBen scvctal clcn cms in thc uscr intcrrace ~rc linkcd Ihrough a ' ' . ' ' ' EC)Qu~lil;edAssocintions c~t blish Ihcse l;nlcs. Whcn n Ft~- ol' receivu a s~ttvcTrtObJt cts s~veT- rt,t ~ - ~. or redisplay messagc il not ooly propagatcs tbal acLon o i~s ne~l controllcr bul i~ also chccks each association lo scc if iLs destinalion can pcrform Ihal ~CliOn in which case i~ ~Iso propagalcs thc ac~ion lo thc association' s dcstination. Thc dcslination doesn' ~ haYc lo bc Ut~ co Ihroul~h ~o EOQuallfiedAssoci~lioD though; i~ ntcrcly has lo rcspond lo Ihc approptialc mcss-gcs and havc sornc ~ind of associalion th~l worl~s propcrly with iL
Whcn Im EOQuallficdAssocialion rcccivcs a ~ '~ or ' " 'l''Chanec rrom its con~oller tt_c rL astcr) il nc cds lo rcquali~y lu dcslinaLion controller (Ihc dclail). Il docs Ihis by gcluing Lbc sclcclcd objcc~ from tbc m~sler controllcr and using 1~ Y ~ "ry:orCtbJec~: (dcsctibc~t in thc e~ .t~-~n ~-prolocol ,~ r- -~ -.) to quAlify thc d-t sourcc of iu dcs~inalion controllcr wilh Ihc Associalion ~cy ~nd loc sclecled objccL And ~hcn having ~hc dcslina~ion coo~rollcr felch ~o upda~c iLs display. A dc~ail conlroller can _ '~y display vAlucs only when e~mc~iy onc objcct is sclecled in ~hc rolulct if ~hc mAs~ct con rollcr docsn'~ havc clAclly onc obJccl sclcclcd ~hc associ~ion passcs nll a5 Ihc objcc~ Io quAllfy for which disAblcs Ihc dclAil con~rollcr.
1~'5 possiblc ror an EOQu-lir~edAssocia~ion ~o bc 5C~ Up wilh ~ dclAil comrollcr lOAl docsn't yc~ havc ~ d~lA sourcc. In thi5 c5sc ~hc Assoclalion will ~c~ a dc~-ll da~a sourcc from ~hc mAs~cr by scnding il a ~ ' ~ ...QualllledByKcy:
tncssagc (dcscribed in ~hc FOI ' '5 ~ S- prolocol ,1- ~:r ':- ).11 Ihcn ~~signs loc ncw da~ sourcc lo ~hc dcLail conlroll~ by scnding il A S,~n ~ . mcssllgc.

Instance Variables Nonc declared in Ihis class.

Instance Methods Nonc declucd in Ihis class.

~E~IlFlFiJ SHEET [RULE 91) lnstance Methods ~otTableVlew:
--(void~sc~T-blcVlew:(NXl'nblcVicw ')aTablcVicw IraTabfcVicw docsn'l nlrcndy havc n column sssocintion rrom thc samc conlroller ~s ils dnla sourcc, scls up Ihc rcccivct as lhe dala sourcc and dclcgalc~ so Ibal i~ acls on hehalf or all other column ~ ' ticd lo a Jab/c Vicw.
You should alwJys scnd this mcssngc lo a column associntion thnt you crcllc t.:c~

~ableVlew ~ CI-ablcVicw ~ blcYlnr Rcturns thc NXTIblcVicw cont~ining thc dcstin~tion columo of thc A~sochlion.

~tl;llFltL) SHEET (RULE 91) W O96118147 PCTrUSg511S852 rn~C~rC O~kCU Fr/mC~JC ReIeYC 1.0 CAP~th~ ~l99~t bY NCXT COmPUICr. I~IC. All Rl~hU RCS~CU.

EOTextAssociation Inherlln Ftom EOAssociation Con~ormr~ To EOA ;r -- ~J~air.i t;~ " (EOAssociation) Deelerod In : ~:OTCXtA~-Ari~;An h Glass Descriptlon ~n EOTc~tAssociation manages a Tc~t obj~t, and is cap~blc of hlmdling dlsplay ot ASCII, RTF, and scrialized RTF
wi~h ~- ' - (RTFD) A u~t ssOCialion monitors ny cditing donc lo Ihc Tc~t objcct nd wbcn thc Tc~ object cnds cditiDg (rO. c~c mplc, if thc uscr prcsscs En~cr), thc ~a~l assoclation inforn s it comrollcr When a le~t ssoeialion is noOOed Or a ehange by its controller, il gels the vaiuc of Ihe firsl sclectcd cntcrprisc objcc as r w ehuacl~ data and e~cunin~ il Gor an RTF or RTFD signalurc Thc associalion thcn sends Ihe appropriate mess~gc lo its Tc~cl objccl ror the fornult allowin~ ~heTcll objccl to propcrly display the vdue regudless of the fiom~,sL
When s!~ed ror its vduc, bowcver, n te~ct associ-tion rctums an NSString (NSData for RTFD) cont~ing thc tc~l in whatcvcr forro sl its Te~tl objcc~ uses Toxt C a~ ~' "'q~ Toxt Format Sio~le fon~ Plain le~l in an NSStrin~ objecl Multiplc ronts allowed RTF in an NSString objcct Graphies ~llowcd RTFD in n NSDau obJccl This c~n causc problcms if you Issoclnlc ~ ~cy whnsc ,o, . " valuc is of onc Iypc (such as plain tc~t) with a Tact obJecl configured to cdit another Iypc (such as RTF) In this case the enlerprise objects reeeive telcl in a formst they tnay nol oc ~blc lo hsndlc You should always talcc carc to rnsteh thc te~ct forrn ts of thc valucs you intcnd ~o disphy with tbe _ fig ' of thc Tc~t obJect ~ilhough the intcrft ec of any usociation contains only a rcw mcthods, various i ~ ' arc o~cn highly dcpcndcnt on onc snothcr and on thc way thc dcslin~tion obJects aet BCCAUSe Or this, if you nccd to ercstc an ssociation class ror s cuslom subclass orTc~d, you should ercDte it as an immcdiate subcla5s of EOAssoci stion, Instance Yarlables Nonc declarcd in thls elass, Instance Methods None declued in this elass, FiE~ u SHEET (RUL~ 91~

_ NO l l~lCAr~ON PROTOCOL

f.m~rpdcObJecttFtuncwor~Rele~cl.OCop~h~Ol~,Wb~NrXrCon~pul~,l~ lRl~lu~ReJcr~cui.

EOAssociationNotification Adoptod 8y: EO~ssoeirlion Ooelarad In: r 'E ~ ' ~~ h Protocol Descriptlon Tbe EOJ ; I proloeol decl r~ mclhods sen~ by n F~ to Icll i~s f,OA~socJfion~ ~bou~
ch ngcs lo its cmcrptiSc objccts Whcnevcr n objca ;5 modified by ~ controllcr, whcthcr by bcing inscttcd, dclcled, or upd-lcd Ihe conttollcr scnds coch of ils EO~'~ssoei-lions n r~ mcssngc silowiog Ihc 4socblion lo dispbty ny ncw v iucs Ir thc chnnEe lo thc con~rollcr i1l1so involv~ o chsngc of sclccdon it scnds ~ I '~t- _ lo c ch nssoci~tion, ~o tb t thc s~oci-fion c n disphy v lucs for thc ptopcr objeel, ot hifjhll; hl thc seleclcd objeas if ils uscr inl~frce objea displ~ys multiplc vJlu~
Tbc controllcr slso infotms iu ssoci~lions whcn 0 opcntion it's pcrfotminf; would invitild~tc t oy citchcd vsiucs for ~ thc uKt Im~f ee objcets. Wh0 Ihc controllct ssvcs or disctu ds hs buffcred edits, i~ r0dcrs Itny cditcd v~lucs c~chcd by its ssoei-tions I _1~ _ ' so lacnds cltch tls-oci-tion ~ disattdEdiL~i rncss-gc Fnt CltUnplc, o NXr~blcVicw docsn'~ t~e~uttily notc ~hc vt~iu~ i~ displnys, bu~ gcts Ihcm ~hrouEh Itnolbcr objecL such s Itn FOC ' ' ssocllttiom Thc Itssoci~tion obJcc~ c~ui~lly s~or~ lloy cdiled ntlu~ foahc column, u d dis~trdEdlts inrortos thc ssoci slion tho~ thc citchcd voiu~ il bits rc no longcr spplicablc ~ny odhct opcndon dbc controllcr ~ ' f inscrting ~ ncw objcct, sc~ting rtn undo :~; cditing ot ~ UKt Inlctrltcc obJcet lo cnd In Ihis cuc, thc conttollcr scnds endEdlllng lo citch of its ' , so d~itt tbcy e o finlsb cditln~ tccl~im ny sh rcd tcsourccs (~uch ~s ~ wlndow'~ field cditnr), nd notify thc conurollcr wirh ,p.
, ' ~ ' 3 lha ErlA ~r,c ' ' 1: ',1 Proloeol Thc daeriplions in ~his ~p~r;r~ n providc t~ii Ihc dct~tils of whol tbc mclhods should do, bu~ Ihcrc tc n fcw issu~ in , ' ' _ Ihcm db~ you nccd ~o bc Itwlrc Or Bcc-u-c tm i1ssoci-tinn nol only rccciv~ mcss-g~ from ,its controll~, bul sends dtcm lo i~s cnntrolla s wcll, ~ recunivc loop eould rcsuk If your usoeistion subclus s0ds foasitga b-ei~ lo ils con~rollcr from onc of ~be no~irtcuion mcthods of Ihis prmoeol For aritmplc, it your usoci-tinn nccds lo t~ller Ihc controllcr's Klcc~lon in ils own ~ 'Cl ,_ mcssaRc, 11 will bc scn~ nothcr ~I '~~ __ mcss~c whilc slill h ndlin~ thc rusl You ~hould chhct Imp!cmcm yout usocl-don no~ ~o ~ffcc~
thc controll~'s sclccdon or vtdues, ot ynu should dcvisc s mcchnnism fot prcvcndnc ~hc usoel~llon notific~tion mcthods from bclnE rccunivcly invoi~cd ~no~hct sligh~ ' ' ' s~cmS from Ihc Im;mtlc rcl-lionship bclwccn n ~ssocirnion Jnd Its uscr intcrfYc objcc ~n ~ssoci-llon 1- usu~lly ~o dmplc, ~mi ils I ~ ' ~o licd lo thc ~pecirlc bch~vlor of 11~ u~cr Imerfi~cc nbjcc clus"hit~ lI's usu~lly culcao implcmcm ~ ncw usoci-ùon ~s ~ subcl-~ or f'O~soci-tlon r~thcr Ih n onc of hs subclssscs i Me~hodTypes W O96/18147 PCTrUS95115852 -6~-S~ vnlucs ~ 3 Han~lling edi~s --di ~
- cndEdilin8 Instance Methods content~r~l IChnnge --(void' ~ ' Ch-n8e Sent to nn EOAssocialion by il5 con~rollet whcncvcr Ihc conlrollcr's objccls hnvc chnngcd; for c~nmplc, whcn nn objccl is cdilcd~ inscncd, or dclc~cd, or whcn ~hc con~rollcr pcr~orms n fclch opcralion The ~ssoci-uion should dc~crminc whclhcr ny vducs it's rcsponsiblc for hnvc chnneed, nd if so should upd~lc hs uscr inlcrf cc objcc~
An ssoci-lion m y be scm bolh n s ~ I ' Ch~ngc nd ~ r ~ ~ ~ n~ _ mclhod ~ot a sin~lc ch n~c io lbc conuroiicr For c~r,mplc, if ~ sclecled objccl is dclclcd, bolh Ihe conlcnts and lhc sclecuon chnngc dlscardEdlls --(void~dlscardi; dlls ~n EOC ~ " scnds Ihis mclhod lo ils conurollcrs bcforc rclching, lo nolity Ihcm Ihsl ny cdilcd valucs Ihcy cachc ror thcir uscr inl~rncc objecls should bc disposcd Or endEdltlng --(VO;'I) 'F~ e In~orms Poc EOAssocinlion ~hnl il should rormaily cnd ny cdiuing in hs us~ inlerfAcc objccl ~d inform Ihc conurollcr Or any pcnding cdi~ by scnding - ' I' 'I' ' FA" This aiso usudly rcsulls in ~hc uscr intcrfacc objccl rcsigning fi"s~
rcspondcr Se1~ UISO: -, ' F~ LFor (Wiodow clnss Or Ihc Applicnuion Kfi) nl~C~ r~yr - (~ I d~ lCI g Scr l Io nn EO~ssoci-uion by ils conu~oller whenever Ihe conlrollcr's selccuion inde~es hnve ch ngcd Tbc ssocialion sbould h~vc ils user interfacc objcc~ redisplny ilsclr lo rcllccl Ihe ch nge in seleclion For ~ uscr inl~fncc objecl Ib-l displnys ~ single vduc, ihc sssociUion sels Ih-l objecPs vduc lo uhc propcrly vniue for Ihe firsl sclcclcd objecl io Ibe coouroller For a user inlerrace objccl Ihal displnys mulliplc vadues, Ihe Ysocinlion hn5 Ihc objccl htghlighl ils vdu~ in nccordancc wilh Ihc sclcclion Ao sssocinlion mny bc scnl bolh ~ ' ' '~IJCbnnge ~nd ~ - ~ ' " ~' ' "I __ mclhod for n sioelc chnngc in Ihc conurollcr For c~smplc, if a sclcclcd objccl is dclclcd, bolh l;lc comcms snd Ihc sclccdon changc i~t~;J I~IED SHEET (RULE 91) W O96/18147 69 PCTrUS9~ 8S2 PSEUWCODE
// We provide a default impl~m~nf~ficn of the Key-Value C'orling Protocol // on the root class in the NEX~ object hierarchy, NSObject. All // classes inheriting from NSObject will autom~fil~lly get this 5 // impl.om~nt~fic-n However, classes may override this behavior by // implem~ntin~ their own versions of takeValuesFromDictionary and/or // valuesForKeys.
~ Lelface NSObject (KeyValueCoding) - takeValuesFromDictior~ry:(Dictionary *)valueDictionary;
10 - (Dicfioll~ry ~)valuesForKeys:(Array ~)keyArray;
a?end ~impl~m~nf~fion NSObject (KeyValueCoding) / / Aggregate versions added to the root object class 15 - takeValuesFromDictionary:valueDictionary {
for each key and value in ~lichon~ry do {
[self takeValue:value forKey:key];
}

20 }
- (Di~fion~ry 't)valueForKeys:keyArray {

id resultDiction~ry = [Di~t~ ry new];
for each key in keyArray {
value = [self valueForKey:key];
[resultDichorl~ry setValue:value forKey:key];
return resultDiction~ry;
}

30 // single value versions - takeValue:value forKey:key {
scTnfo = [self getfl~c~sTnfo];
// look if they have method of name "set<KeyName>"
35 methodInfo = [~ l~.ssTnfo lookupMethodNamed:"set"+key];
if (methodInfo) {
type = getArgumentType switch (type) {
OB~ECT:
Rt~;lltltl~ SHEET ~RULE 91) [self callMethodNamed:"set"+key withArgl1rnentvalue]
FLOAT:
[self callMethodNamed:"set"+key withArgllm~nt [value floatValue]];
All other types }
} else {
/ / look for instance variable instanceVariableIIufo = [rl ~ ~sTnfo lookupInstanceVariableN~m~l key];
if (instanceVariableInfo) {
type= [instanceVariableType];
// perform ~ssignment to instance variable offsetOfVariable = [instanceVariableInfo offset];
switch (type) {
OBJECT:
*(id)(self + offsetOfVariable) = valueToAssign;
break;
PLOAT:
~((float *)(self + offsetOfVariable)) = [value floatValue], break;
All other types }
) 25 }
- valueForKey:key {

/ / like takeValue:forKey except backwards.. ;-) I.e.:
sTnfo = [self get~ sTnfo];
/ / look if they have method with the same name as the key.
// e.g. "firstName"
methodInfo = [~l~ssTnfo lookupMethodN~rneA-key];
if (methodInfo) {
type = getArgumentType switch (type) {
OBp~CT:
return [self callMethodNanleA key];
FLOAT:
RECTIFIED SHEET (RULE 91) W O96/18147 PCTrUS95115852 // ~is method ~tll~lly returns a C scalar numeric type, not an / / object, so we have to put an "object wrapper" around the value // retllrned.
return [NSNumber numberWithFloat:(float)[self cAllMethodN~rnerl key];
All other types...
}

} else {
/ / look for instance variable instanceVariableInfo = [~ sTnfo lookupInstanceVariableN~n ecl~key];
if (instanceVariableInfo) {
type = [instanceVariableType];
// perform ~si~nnlPnt to instance variable offsetOfVariable = [instanceVariableInfo offset];
switch (type) ( OBJECT:
return *(id)(self + offsetOfV~ri~hle);
break;
~LOAT:
// this variable is actually a C scalar numeric type, not an / / object, so we have to put an "object wrapper" it.
return [NSNumber numberWithFloat:
~((float ~)(self + offsetOfVariable))];
break;
Allother types }
}
}

30 The actual implenl~ntAhon of the above caches the state n~cess~ry to perform a get or set operation in a "binding" object; The actual sr~nning of class illro~ tion only occurs the first time a get or set operation is performed for a particular key.

35 ~end RE~TIFIED SHEET (RULE 91)

Claims (21)

We claim:
1. In an object oriented programming environment, a method for associating a controlling object managing one or more data bearing objects with one or more user interface objects comprising the steps of:
defining a first association object for a first type of user interface object, said first association object being capable of sending messages specific to saidfirst type of user interface object to and receiving messages specific to said first type of user interface object from said first type of user interface object, andfurther being capable of sending standard messages to and receiving standard messages from said controlling object;
creating a first instance of said first type of user interface object;
creating a first instance of said first association object;
providing said first instance of said first association object with a key for obtaining data from a data bearing object;
linking said first instance of said first association object with said first instance of said first type of user interface object and said controlling objectsuch that in response to a standard message received from said controlling object said first instance of said first association object sends a message specific to said first type of user interface object to said first instance of said first type of user interface object and in response to receiving from said first instance of said first type of user interface object a message specific to said first type of user interface object said first instance of said first association object sends a standard message to said controlling object.
2. The method of claim 1 further comprising the steps of:
defining a second association object for a second type of user interface object, said second association object being capable of sending messages specific to said second type of user interface object to and receiving messages specific to said second type of user interface object from said second type of user interface object, and further being capable of sending standard messages to and receiving standard messages from said controlling object;
creating a first instance of said second type of user interface object;
creating a first instance of said second association object;
providing said first instance of said second association object with a key for obtaining data from a data bearing object;
linking said first instance of said second association object with said first instance of said second type of user interface object and said controllingobject such that in response to a standard message received from said controlling object said first instance of said second association object sends message specific to said second type of user interface object to said first instance of said second type of user interface object and in response to receiving from said first instance of said second type of user interface object a message specific to said second type of user interface object said first instance of said second association object sends a standard message to said controlling object.
3. The method of claim 1 further comprising the steps of:
creating a second instance of said first type of user interface object;
creating a second instance of said first association object;
providing said second instance of said first association object with a key for obtaining data from a data bearing object;
linking said second instance of said first association object with said second instance of said first type of user interface object and said controllingobject such that in response to a standard message received from said controlling object said second instance of said first association object sends amessage specific to said first type of user interface object to said second instance of said first type of user interface object and in response to receiving from said second instance of said first type of user interface object a message specific to said first type of user interface object said second instance of said first association object sends a standard message to said controlling object.
4. The method of claim 1 wherein standard messages sent by said controller object to association objects comprise a message for conveying a current value of data contained in a data bearing object.
5. The method of claim 1 wherein standard messages sent by said controller object to association objects comprise a message for indicating that data contained in a data bearing object has changed.
6. The method of claim 1 wherein standard messages received by said controller object from association objects comprise a message for indicating that a data value displayed in a user interface object has been edited.
7. The method of claim 1 wherein standard messages received by said controller object from association objects comprise a message for conveying a current value of data displayed in user interface object.
8. The method of claim 1 wherein standard messages sent by said controller object to association objects comprise a message for requesting a current value of data displayed in a user interface object.
9. The method of claim 1 wherein standard messages received by said controller object from association objects comprise a message for requesting a current value of data contained in a data bearing object.
10. The method of claim 9 wherein data is stored in said data bearing object in the form of a key-value pair and said message for requesting a current value of data contained in a data bearing object comprises said key provided to said association object.
11. The method of claim 8 wherein data is stored in said user interface object in the form of a key-value pair and said message for requesting a current value of data displayed by a data bearing object comprises a key for identifying data contained in said user interface object.
12. A method for displaying data contained in data bearing objects on a user interface in an object oriented programming environment comprising the steps of:
providing a controller object for managing a plurality of data bearing objects;
providing a plurality of types of user interface objects for displaying data on a user interface;
for each type of user interface object, providing a corresponding association object capable of sending messages specific to said type of user interface object to and receiving messages specific to said type of user interface object from said type of user interface object, and further being capable of sending standard messages to and receiving standard messages from said controlling object;
providing means for providing an instance of an association object with a key for obtaining data from a data bearing object;
providing means to link an instance of an association object with an instance of a corresponding type of user interface object and a controller object such that in response to a standard message received from said controlling object said instance of said association object sends a message specific to said corresponding type of user interface object to said instance ofsaid corresponding type of user interface object and in response to receiving from said instance of said corresponding type of user interface object a message specific to said corresponding type of user interface object said instance of said association object sends a standard message to said controlling object.
13. The method of claim 12 wherein standard messages sent by said controller object to association objects comprise a message for conveying a current value of data contained in a data bearing object.
14. The method of claim 12 wherein standard messages sent by said controller object to association objects comprise a message for indicating that data contained in a data bearing object has changed.
15. The method of claim 12 wherein standard messages received by said controller object from association objects comprise a message for indicating that a data value displayed in a user interface object has been edited.
16. The method of claim 12 wherein standard messages received by said controller object from association objects comprise a message for conveying a current value of data displayed in user interface object.
17. The method of claim 12 wherein standard messages sent by said controller object to association objects comprise a message for requesting a current value of data displayed in a user interface object.
18. The method of claim 12 wherein standard messages received by said controller object from association objects comprise a message for requesting a current value of data contained in a data bearing object.
19. The method of claim 18 wherein data is stored in said data bearing object in the form of a key-value pair and said message for requesting a current value of data contained in a data bearing object comprises a key for identifying data contained in said data bearing object.
20. The method of claim 17 wherein data is stored in said user interface object in the form of a key-value pair and said message for requesting a current value of data displayed by a data bearing object comprises a key for identifying data contained in said user interface object.
21. The method of claim 12 wherein said plurality of types of user interface objects includes a table column type of user interface object.
CA002207331A 1994-12-07 1995-12-07 Method for associating data bearing objects with user interface objects Expired - Lifetime CA2207331C (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US35352594A 1994-12-07 1994-12-07
US353,525 1994-12-07
PCT/US1995/015852 WO1996018147A1 (en) 1994-12-07 1995-12-07 Method for associating data bearing objects with user interface objects

Publications (2)

Publication Number Publication Date
CA2207331A1 CA2207331A1 (en) 1996-06-13
CA2207331C true CA2207331C (en) 2003-02-25

Family

ID=23389493

Family Applications (1)

Application Number Title Priority Date Filing Date
CA002207331A Expired - Lifetime CA2207331C (en) 1994-12-07 1995-12-07 Method for associating data bearing objects with user interface objects

Country Status (6)

Country Link
US (2) US6154786A (en)
EP (1) EP0803093B1 (en)
AU (1) AU4465996A (en)
CA (1) CA2207331C (en)
DE (1) DE69522713T2 (en)
WO (1) WO1996018147A1 (en)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69621197T2 (en) * 1995-09-06 2002-11-07 Seiko Epson Corp Peripheral control system with a majority of objects
US5999728A (en) * 1996-07-30 1999-12-07 Sun Microsystems, Inc. Method and apparatus for enhancing the portability of an object oriented interface among multiple platforms
US6330006B1 (en) * 1998-05-12 2001-12-11 Silverstream Software, Inc. Method and apparatus for synchronizing an application's interface and data
US7062773B1 (en) * 1998-07-20 2006-06-13 International Business Machines Corporation System and method for providing graphical user interface control enhancers
US6366921B1 (en) * 1999-02-09 2002-04-02 International Business Machines Corporation System and method for data manipulation in a dynamic object-based format
US7117293B1 (en) * 2000-05-12 2006-10-03 Apple Computer, Inc. Method and apparatus for archiving and unarchiving objects
US20020059116A1 (en) * 2000-07-31 2002-05-16 Bulatovic Marija V. Method and system for selectively displaying advertisements on a display device
US6820268B2 (en) * 2000-10-30 2004-11-16 Next Computer, Inc. Method for associating data bearing objects with user interface objects
EP1286261A1 (en) * 2001-08-13 2003-02-26 Alcatel Method, control interface module, intermediate modules and so equipped network management system for the operation of a control interface module
US6938262B2 (en) * 2001-09-10 2005-08-30 Hewlett-Packard Development Company, L.P. Dual data representation
US7721193B2 (en) * 2001-10-18 2010-05-18 Bea Systems, Inc. System and method for implementing a schema object model in application integration
US20030076353A1 (en) * 2001-10-23 2003-04-24 Blackstock Michael A. Graphical user interface for collaboration
JP2003186855A (en) * 2001-12-20 2003-07-04 Fujitsu Ltd System and method for object cooperation by type collation
CA2388101A1 (en) * 2002-02-01 2003-08-01 Concepts Egeria Inc. Conceptual user interface
EP1378826A1 (en) * 2002-07-01 2004-01-07 Sun Microsystems, Inc. Filter network for data representation
US7552129B2 (en) * 2006-04-26 2009-06-23 International Business Machines Corporation Automatically binding and populating a selection control with both display labels and identification values
US8146027B1 (en) * 2009-05-07 2012-03-27 Xilinx, Inc. Creating interfaces for importation of modules into a circuit design
US9697204B2 (en) * 2010-08-16 2017-07-04 Perfect Sense, Inc. Automatic placement of hyperlinks on words and phrases in documents
US20180267678A1 (en) * 2017-03-14 2018-09-20 Salesforce.Com, Inc. Techniques and architectures for managing text strings to be provided by a graphical user interface

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4835685A (en) * 1985-05-06 1989-05-30 Computer X, Inc. Virtual single machine with message-like hardware interrupts and processor exceptions
US5551035A (en) * 1989-06-30 1996-08-27 Lucent Technologies Inc. Method and apparatus for inter-object communication in an object-oriented program controlled system
US5163130A (en) * 1989-10-11 1992-11-10 Next Computer, Inc. System and method for configuring a graphic interface
US5553223A (en) * 1990-04-03 1996-09-03 U S West Advanced Technologies, Inc. Method and system of selectively transmitting display formats and data between a host computer and an intelligent terminal
US5280610A (en) * 1990-08-14 1994-01-18 Digital Equipment Corporation Methods and apparatus for implementing data bases to provide object-oriented invocation of applications
US5327529A (en) * 1990-09-24 1994-07-05 Geoworks Process of designing user's interfaces for application programs
US5276816A (en) * 1990-12-31 1994-01-04 International Business Machines Corporation Icon object interface system and method
US5119475A (en) * 1991-03-13 1992-06-02 Schlumberger Technology Corporation Object-oriented framework for menu definition
CA2128387C (en) * 1993-08-23 1999-12-28 Daniel F. Hurley Method and apparatus for configuring computer programs from available subprograms
US5485617A (en) * 1993-12-13 1996-01-16 Microsoft Corporation Method and system for dynamically generating object connections

Also Published As

Publication number Publication date
EP0803093A1 (en) 1997-10-29
DE69522713T2 (en) 2002-07-04
US6154786A (en) 2000-11-28
CA2207331A1 (en) 1996-06-13
WO1996018147A1 (en) 1996-06-13
US6513072B1 (en) 2003-01-28
EP0803093A4 (en) 1998-04-01
EP0803093B1 (en) 2001-09-12
DE69522713D1 (en) 2001-10-18
AU4465996A (en) 1996-06-26

Similar Documents

Publication Publication Date Title
CA2207331C (en) Method for associating data bearing objects with user interface objects
EP1285337B1 (en) Displaying graphical objects
EP0529844B1 (en) Method and apparatus for deriving object type
US5680563A (en) Object-oriented operating system enhancement for filtering items in a window
AU732374B2 (en) A management interworking unit and a method for producing such a unit
US5276883A (en) System and method for uniform control of local and remote applications in a data processing network
US4905181A (en) Interactive system with state manager subsystem
US5729745A (en) Methods and apparatus for creating a base class for manipulating external data connections in a computer generated document
JPH0764791A (en) Method and apparatus for interfacing in object-oriented computer system
CN100388214C (en) Resources calling method in multiline range process
US8051429B2 (en) Method for associating data bearing objects with user interface objects
JP2000056990A (en) Inter-applet communication system
CA2276415A1 (en) System and method for automatically instantiating classes in a virtual machine
CN104715173B (en) Desktop software filtration system
Moreau et al. Stabilization by means of periodic output feedback
Ramme et al. A distributed computing center software for the efficient use of parallel computer systems
WO1997044729A1 (en) Application services builder
US20080120723A1 (en) Methods, systems and computer program products for authorizing access to features of software applications
AU7510998A (en) Method &amp; apparatus for monitoring and controlling real-time information in a building automation system
US7127527B1 (en) Network element terminal data interface system and method
CN115859264B (en) Injection method based on UWP program under Windows10 and Windows11
US20020112088A1 (en) Interface to a network management system of a communication network
US7099868B1 (en) State management for a step architecture
GB2340263A (en) User interface having entry filters to modify data input to structured entry fields
Tuckwell et al. Enhancement of epidemic spread by noise and stochastic resonance in spatial network models with viral dynamics

Legal Events

Date Code Title Description
EEER Examination request
MKEX Expiry

Effective date: 20151207