- Inherits from:
 - (com.apple.client.eointerface) Object
 
(com.apple.yellow.eointerface) NSObject
- Implements:
 - (com.apple.client.eointerface only) NSDisposable
 - (com.apple.client.eointerface only) NSInlineObservable
 
- Package:
 - com.apple.client.eointerface
 - com.apple.yellow.eointerface
 
An EODisplayGroup collects an array of objects from an EODataSource, and works with a group of EOAssociation objects to display and edit the properties of those objects.
| allObjects | Returns all objects in the EODisplayGroup. | 
| displayedObjects | Returns the subset of all objects made available for display. | 
| selectedObjects | Returns the selected objects. | 
| setQualifier | Sets a filter that limits the objects displayed. | 
| setSortOrderings | Sets the ordering used to sort the objects. | 
| updateDisplayedObjects | Filters, sorts, and redisplays the objects. | 
| insertNewObjectAtIndex | Creates a new object and inserts it into the EODataSource. | 
An EODisplayGroup is the basic user interface manager for an Enterprise Objects Framework or Java Client application. It collects objects from an EODataSource, filters and sorts them, and maintains a selection in the filtered subset. It interacts with user interface objects and other display objects through EOAssociations, which bind the values of objects to various aspects of the display objects.
An EODisplayGroup manipulates its EODataSource by sending
it fetchObjects, insertObject,
and other messages, and registers itself as an editor and message
handler of the EODataSource's EOEditingContext. The EOEditingContext
allows the EODisplayGroup to intercede in certain operations, as
described in the EOEditingContext.Editor and EOEditingContext.MessageHandler interface specifications
(both interfaces are defined in EOControl). EODisplayGroup implements
all the methods of these informal protocols; see their specifications
for more information.
Most of an EODisplayGroup's interactions are with its associations, its EODataSource, and its EOEditingContext. See the EOAssociation, EODataSource, and EOEditingContext class specifications for more information on these interactions.
You create most EODisplayGroups in Interface Builder, by dragging an entity icon from the EOModeler application, which creates an EODisplayGroup with an EODatabaseDataSource (EODistributedDataSource, for Java Client applications), or by dragging an EODisplayGroup with no EODataSource from the EOPalette. EODisplayGroups with EODataSources operate independent of other EODisplayGroups, while those without EODataSources must be set up in a master-detail association with another EODisplayGroup.
To create an EODisplayGroup programmatically, simply initialize it and set its EODataSource:
EODistributedDataSource dataSource; /* Assume this exists. */ EODisplayGroup displayGroup; displayGroup = new EODisplayGroup(); displayGroup.setDataSource(dataSource);
After creating the EODisplayGroup, you can add associations as described in the EOAssociation class specification.
Since an EODisplayGroup isn't much use without objects to
manage, the first thing you do with an EODisplayGroup is send it
a fetch message. You can use the basic  fetch method or you can configure the
EODisplayGroup in Interface Builder to fetch automatically when
its nib file is loaded. These methods all ask the EODisplayGroup's
EODataSource to fetch from its persistent store with a fetchObjects message.
An EODisplayGroup's fetched objects are available through its allObjects method. These objects are treated only as candidates for display, however. The array of objects actually displayed is filtered and sorted by the EODisplayGroup's delegate, or by a qualifier and sort ordering array. You set the qualifier and sort orderings using the setQualifier and setSortOrderings methods. The displayedObjects method returns this filtered and sorted array; index arguments to other EODisplayGroup methods are defined in terms of this array.
If the EODisplayGroup has a delegate that responds to  displayGroupDisplayArrayForObjects,
it invokes this method rather than using its own qualifier and sort
ordering array. The delegate is then responsible for filtering the
objects and returning a sorted array. If the delegate only needs
to perform one of these steps, it can get the qualifier or sort
orderings from the EODisplayGroup and apply either itself using EOQualifier's filteredArrayUsingQualifier and
EOSortOrdering's sortedArrayUsingKeyOrderArray methods,
which are added by the control layer.
If you change the qualifier or sort ordering, or alter the delegate in a way that changes how it filters and sorts the EODisplayGroup's objects, you can send updateDisplayedObjects to the EODisplayGroup to get it to refilter and resort its objects. Note that this doesn't cause the EODisplayGroup to refetch.
An EODisplayGroup keeps a selection in terms of indexes into the array of displayed objects. EOAssociations that display values for multiple objects are responsible for updating the selection in their EODisplayGroups according to user actions on their display objects. This is typically done with the setSelectionIndexes method. Other methods available for indirect manipulation of the selection are the action methods selectNext and selectPrevious, as well as selectObjectsIdenticalTo and selectObjectsIdenticalTo.
To get the selection, you can use the selectionIndexes method, which returns an array of NSNumbers, or selectedObjects, which returns an array containing the selected objects themselves. Another method, selectedObject, returns the first selected object if there is one.
EODisplayGroup offers a number of methods for its delegate to implement; if the delegate does, it invokes them as appropriate. Besides the aforementioned displayGroupDisplayArrayForObjects, there are methods that inform the delegate that the EODisplayGroup has fetched, created an object (or failed to create one), inserted or deleted an object, changed the selection, or set a value for a property. There are also methods that request permission from the delegate to perform most of these same actions. The delegate can return true to permit the action or false to deny it. For more information, see each method's description in the EODisplayGroup.Delegate interface specification.
While most of your application code interacts with objects directly, EODisplayGroup also defines methods for its associations to access properties of individual objects without having to know anything about which methods they implement. Accessing properties through the EODisplayGroup offers associations the benefit of automatic validation, as well.
Associations access objects by index into the displayed objects array, or by object identifier. valueForObjectAtIndex returns the value of a named property for the object at a given index, and setValueForObjectAtIndex sets it. Similarly, valueForObject and setValueForObjectaccess the objects by object identifier. EOAssociations can also get and set values for the first object in the selection using selectedObjectValueForKey and setSelectedObjectValue.
(com.apple.client.eointerface only) EODisplayGroup defines String constants for the names of the notifications it posts. For more information, see "Notifications".
NSInlineObservable (com.apple.client.eointerface only)
observerDatasetObserverDataNSDisposable (com.apple.client.eointerface only)
dispose
- Configuring behavior
 - defaultStringMatchFormat
 - defaultStringMatchOperator
 - fetchesOnLoad
 - queryBindingValues
 - queryOperatorValues
 - selectsFirstObjectAfterFetch
 - setDefaultStringMatchFormat
 - setDefaultStringMatchOperator
 - setFetchesOnLoad
 - setQueryBindingValues
 - setQueryOperatorValues
 - setSelectedObject
 - setSelectedObjects
 - setSelectsFirstObjectAfterFetch
 - setUsesOptimisticRefresh
 - setValidatesChangesImmediately
 - usesOptimisticRefresh
 - validatesChangesImmediately
 
- Setting the data source
 - setDataSource
 - dataSource
 
- Setting the qualifier and sort ordering
 - setQualifier
 - qualifier
 - setSortOrderings
 - sortOrderings
 
- Managing queries
 - qualifierFromQueryValues
 - setEqualToQueryValues
 - equalToQueryValues
 - setGreaterThanQueryValues
 - greaterThanQueryValues
 - setLessThanQueryValues
 - lessThanQueryValues
 - qualifyDisplayGroup
 - qualifyDataSource
 - enterQueryMode
 - inQueryMode
 - setInQueryMode
 - enabledToSetSelectedObjectValueForKey
 
- Fetching objects from the data source
 - fetch
 
- Getting the objects
 - allObjects
 - displayedObjects
 
- Updating display of values
 - redisplay
 - updateDisplayedObjects
 
- Setting the objects
 - setObjectArray
 
- Changing the selection
 - setSelectionIndexes
 - selectObjectsIdenticalTo
 - selectObject
 - clearSelection
 - selectNext
 - selectPrevious
 
- Examining the selection
 - selectionIndexes
 - selectedObject
 - selectedObjects
 
- Adding keys
 - setLocalKeys
 - localKeys
 
- Getting the associations
 - observingAssociations
 
- Setting the delegate
 - setDelegate
 - delegate
 
- Changing values from associations
 - setSelectedObjectValue
 - selectedObjectValueForKey
 - setValueForObject
 - valueForObject
 - setValueForObjectAtIndex
 - valueForObjectAtIndex
 
- Editing by associations
 - associationDidBeginEditing
 - associationFailedToValidateValue
 - associationDidEndEditing
 - editingAssociation
 - endEditing
 
- Querying changes for associations
 - contentsChanged
 - selectionChanged
 - updatedObjectIndex
 
- Interacting with the EOEditingContext
 - editorHasChangesForEditingContext
 - editingContextWillSaveChanges
 - editingContextPresentErrorMessage
 
public EODisplayGroup()
See Also: bindAspect (EOAssociation)
public static boolean globalDefaultForValidatesChangesImmediately()
true if
the default behavior for new display group instances is to immediately
handle validation errors, or false if
the default behavior leaves errors for the EOEditingContext to handle when
saving changes.See Also: validatesChangesImmediately
public static String globalDefaultStringMatchFormat()
See Also: defaultStringMatchFormat
public static String globalDefaultStringMatchOperator()
See Also: defaultStringMatchOperator
public static void setGlobalDefaultForValidatesChangesImmediately(boolean  flag)
true,
the default behavior is for display groups to immediately present
an attention panel indicating a validation error. If  flag  is false,
the default behavior if for display groups to leave validation errors
to be handled when changes are saved. By default, display groups
don't validate changes immediately.See
Also:  - saveChanges (EOEditingContext),  setValidatesChangesImmediately
public static void setGlobalDefaultStringMatchFormat(String  format)
%@*". See Also: setDefaultStringMatchFormat
public static void setGlobalDefaultStringMatchOperator(String  op)
See Also: setDefaultStringMatchOperator
public NSArray allObjects()
See Also: displayedObjects, fetch
public void associationDidBeginEditing(EOAssociation  anAssociation)
See Also: editingAssociation, endEditing, associationFailedToValidateValue
public void associationDidEndEditing(EOAssociation  anAssociation)
See Also: editingAssociation, endEditing, associationFailedToValidateValue
public boolean associationFailedToValidateValue(
EOAssociation  anAssociation, 
String  value, 
String  key, 
Object  anObject, 
String  errorDescription)
See Also: displayGroupShouldDisplayAlert ( EODisplayGroup.Delegate)
public void awakeFromNib()
See Also: finishInitialization, redisplay
public boolean clearSelection()
public boolean contentsChanged()
See Also: selectionChanged, updatedObjectIndex
public EODataSource dataSource()
See Also: setDataSource
public String defaultStringMatchFormat()
queryMatch dictionary does
not have an associated operator in the  queryOperatorValues dictionary, then
its value is matched using pattern matching, and the format string
returned by this method specifies how it will be matched. See Also: defaultStringMatchOperator, setDefaultStringMatchFormat
public String defaultStringMatchOperator()
See Also: defaultStringMatchFormat, setDefaultStringMatchOperator
public Object delegate()
See Also: setDelegate
public void delete(Object  anObject)
public boolean deleteObjectAtIndex(int  index)
This
method performs the delete by sending deleteObject to
the EODataSource. If that message throws an exception, this method
fails and returns false.
public boolean deleteSelection()
public NSArray displayedObjects()
See Also: allObjects, updateDisplayedObjects, displayGroupDisplayArrayForObjects ( EODisplayGroup.Delegate), qualifier, sortOrderings
public EOAssociation editingAssociation()
See Also: associationDidBeginEditing, associationDidEndEditing
public void editingContextPresentErrorMessage(
EOEditingContext  anEditingContext, 
String  errorMessage)
public boolean editingContextShouldContinueFetching(
com.apple.client.eocontrol.EOEditingContext  anEditingContext,  
public void editingContextWillSaveChanges(EOEditingContext  anEditingContext)
saveChanges method
as part of the EOEditors informal protocol, this method allows the
EODisplayGroup to prohibit a save operation. EODisplayGroup's
implementation of this method invokes  endEditing, and throws an exception if
it returns false. Thus, if there's an association that refuses
to end editing, anEditingContext doesn't save changes.public boolean editorHasChangesForEditingContext(EOEditingContext  anEditingContext)
 otherwise.See Also: editingAssociation, associationDidBeginEditing, associationDidEndEditing
public boolean enabledToSetSelectedObjectValueForKey(String  key)
public boolean endEditing()
endEditing message, returns true. Otherwise
returns false.See Also: editingAssociation
public void enterQueryMode(Object  sender)
public NSDictionary equalToQueryValues()
See Also: setEqualToQueryValues, greaterThanQueryValues, lessThanQueryValues,
public boolean fetch()
Before fetching,
invokes  endEditing and
sends  displayGroupShouldFetch to the delegate,
returning false if either of these methods does. If both return true,
sends a fetchObjects message to the receiver's EODataSource
to replace the object array, and if successful sends the delegate
a  displayGroupDidFetchObjects message.
public void fetch(Object  anObject)
public boolean fetchesOnLoad()
See Also: fetch, setFetchesOnLoad
public void finishInitialization()
ObjectsChangedInEditingContextNotifications
and InvalidatedAllObjectsInStoreNotifications,
establishes the receiver as an editor for the editing context, and
establishes the receiver as the editing context's message handler
(unless the editing context already has a message handler).public NSDictionary greaterThanQueryValues()
See Also: setGreaterThanQueryValues, lessThanQueryValues, equalToQueryValues
public boolean inQueryMode()
See Also: setInQueryMode, enterQueryMode
public void insert(Object  sender)
(com.apple.client.eointerface only) This action method invokes insertNewObjectAtIndex with an index just past the first index in the selection, or 0 if there's no selection.
public NSDictionary insertedObjectDefaultValues()
insert... method
adds an object that is initially empty. Because the object is empty,
the display group has no value to display on the HTML page for that
object, meaning that there is nothing for the user to select and
modify. Use the  setInsertedObjectDefaultValues method
to set up a default value so that there is something to display
on the page. public Object insertNewObjectAtIndex(int  anIndex)
(com.apple.yellow.eointerface only) Asks
the receiver's EODataSource to create a new object by sending
it a createObject message, then inserts
the new object using  insertObjectAtIndex.
The EODataSource createObject method has the effect of inserting
the object into the EOEditingContext.
If a new object can't be created, this method sends the delegate a displayGroupCreateObjectFailed message or, if the delegate doesn't respond, opens an attention panel to inform the user of the error.
See Also: insert
public void insertObjectAtIndex(
Object  anObject, 
int  index)
Unlike the insertNewObjectAtIndex method, this method does not insert the object into the EOEditingContext. If you use this method, you're responsible for inserting the object into the EOEditingContext yourself.
public Object insertNewObjectAtIndex(int  anIndex)
(com.apple.client.eointerface only) Asks
the receiver's EODataSource to create a new object by sending it
a createObject message, then inserts the
new object using  insertObjectAtIndex.
The EODataSource createObject method has
the effect of inserting the object into the EOEditingContext.
If a new object can't be created, this method sends the delegate a displayGroupCreateObjectFailed message or, if the delegate doesn't respond, opens an attention panel to inform the user of the error.
public NSDictionary lessThanQueryValues()
See Also: setLessThanQueryValues, greaterThanQueryValues, equalToQueryValues
public NSArray localKeys()
See Also: setLocalKeys
public NSArray observingAssociations()
public EOQualifier qualifier()
See Also: updateDisplayedObjects, displayedObjects, setQualifier
public EOQualifier qualifierFromQueryValues()
See Also: qualifyDisplayGroup, qualifyDataSource
public void qualifyDataSource()
qualifyDisplayGroup performs
in-memory filtering of already fetched objects, qualifyDataSource triggers
a new qualified fetch against the database.
public void qualifyDataSource(Object  sender)
public void qualifyDisplayGroup()
public void qualifyDisplayGroup(Object  sender)
public NSDictionary queryBindingValues()
public NSDictionary queryOperatorValues()
queryOperatorValues,
that operator for that key is used.See Also: qualifierFromQueryValues
public void redisplay()
See Also: observingAssociations
public Object selectedObject()
See Also: displayedObjects, selectionIndexes
public NSArray selectedObjects()
See Also: displayedObjects, selectionIndexes
public Object selectedObjectValueForKey(String  key)
See Also: valueForObjectAtIndex
public boolean selectionChanged()
See Also: contentsChanged
public NSArray selectionIndexes()
See Also: displayedObjects, selectedObjects, selectedObject, setSelectionIndexes
public boolean selectNext()
public void selectNext(Object  sender)
public boolean selectObject(Object  anObject)
public boolean selectObjectsIdenticalTo(NSArray  objects)
public boolean selectObjectsIdenticalTo(
NSArray  objects, 
boolean  flag)
See Also: setSelectionIndexes
public boolean selectPrevious()
public void selectPrevious(Object  anObject)
public boolean selectsFirstObjectAfterFetch()
See Also: displayedObjects, fetch, setSelectsFirstObjectAfterFetch
public void setDataSource(EODataSource  aDataSource)
self as
an editor and message handler for the previous EODataSource's EOEditingContext,
if necessary, and registers self with  aDataSource's  editing
context. If the new editing context already has a message handler,
however, the receiver doesn't assume that role.self for ObjectsChangedInEditingContextNotification and InvalidatedAllObjectsInStoreNotification from
the new editing context.See Also: dataSource
public void setDefaultStringMatchFormat(String  format)
The default format
string for pattern matching is "%@*"
which means that the string value in the queryMatch dictionary
is used as a prefix. For example, if the query dictionary contains
a value "Jo" for the key "Name", the query returns all records
whose name values begin with "Jo". 
See Also: defaultStringMatchFormat, setDefaultStringMatchOperator
public void setDefaultStringMatchOperator(String  matchOperator)
queryMatch dictionary.
This operator is used for properties listed in the query dictionaries
( equalToQueryValues,  greaterThanQueryValues, and  lessThanQueryValues)
that have String values and that do not have an associated entry
in the  queryOperatorValues dictionary.
In these cases, the operator  matchOperator  is used
to perform pattern matching. The default value for the query
match operator is caseInsensitiveLike,
which means that the query does not consider case when matching
letters. The other possible value for this operator is like,
which matches the case of the letters exactly. 
See Also: defaultStringMatchOperator, setDefaultStringMatchFormat
public void setDelegate(Object  anObject)
See Also: delegate
public void setEqualToQueryValues(NSDictionary  values)
See Also: equalToQueryValues, setLessThanQueryValues, setGreaterThanQueryValues
public void setFetchesOnLoad(boolean  flag)
See Also: fetch, fetchesOnLoad
public void setGreaterThanQueryValues(NSDictionary  values)
See Also: greaterThanQueryValues, setLessThanQueryValues, setEqualToQueryValues
public void setInQueryMode(boolean  flag)
See Also: inQueryMode, enterQueryMode
public void setInsertedObjectDefaultValues(NSDictionary  defaultValues)
insert... method
to add an object, that object is initially empty. Because the object
is empty, there is no value to be displayed on the HTML page, meaning
there is nothing for the user to select and modify. You use this
method to provide at least one field that can be displayed for the
newly inserted object. The possible keys into the dictionary are
the properties of the entity managed by this display group.See Also: insertedObjectDefaultValues
public void setLessThanQueryValues(NSDictionary  values)
See Also: lessThanQueryValues, setGreaterThanQueryValues, setEqualToQueryValues
public void setLocalKeys(NSArray  keys)
See Also: localKeys
public void setObjectArray(NSArray  objects)
After setting the object array, this method restores as much of the original selection as possible by invoking selectObjectsIdenticalTo. If there's no match and the receiver selects after fetching, then the first object is selected.
See Also: allObjects, displayedObjects, selectsFirstObjectAfterFetch
public void setQualifier(EOQualifier  aQualifier)
| Note: To set the qualifier used to fetch objects from the database, set the qualifier of the display group's dataSource (assuming that the data source is an EODatabaseDataSource). | 
If the receiver's delegate responds to displayGroupDisplayArrayForObjects, that method is used instead of the qualifier to filter the objects.
See
Also:   displayedObjects,  qualifier,  qualifierFromQueryValues, setAuxiliaryQualifier (EODatabaseDataSource
in EOAccess)
public void setQueryBindingValues(NSDictionary  values)
public void setQueryOperatorValues(NSDictionary  values)
queryOperatorValues,
that operator for that key is used.public void setSelectedObject(Object  anObject)
public void setSelectedObjects(NSArray  objects)
public boolean setSelectedObjectValue(
Object  value, 
String  key)
See Also: setValueForObjectAtIndex, valueForObject
public boolean setSelectionIndexes(NSArray  indexes)
This method invokes  endEditing to wrap up any changes
being made by the user. If endEditing returns false,
this method fails and returns false. This method then checks the
delegate with a  displayGroupShouldChangeSelection message.
If the delegate returns false, this method also fails and returns false.
If the receiver successfully changes the selection, its observers
(typically EOAssociations) each receive a  subjectChanged message.
public void setSelectsFirstObjectAfterFetch(boolean  flag)
See Also: displayedObjects, fetch, selectsFirstObjectAfterFetch
public void setSortOrderings(NSArray  orderings)
If the receiver's delegate responds to displayGroupDisplayArrayForObjects, that method is used instead of the sort orderings to order the objects.
See Also: displayedObjects, sortOrderings
public void setUsesOptimisticRefresh(boolean  flag)
The default is false. You can also change this setting in Interface Builder's Inspector panel using the Refresh All check box.
See Also: usesOptimisticRefresh
public void setValidatesChangesImmediately(boolean  flag)
validateValueForKey message,
allowing the object to coerce the value's type to a more appropriate
one or to return an exception indicating that the value isn't
valid. If this method is invoked with a  flag  of true,
the receiver immediately presents an attention panel indicating
the validation error. If this method is invoked with a  flag  of false,
the receiver leaves validation errors to be handled when changes
are saved. By default, display groups don't validate changes immediately.See
Also:  - saveChanges (EOEditingContext),  validatesChangesImmediately
public boolean setValueForObject(
Object  value, 
Object  anObject, 
String  key)
This method should be invoked only by EOAssociation objects to propagate changes from display objects. Other application code should interact with the objects directly.
If the receiver validates
changes immediately, it sends  anObject  a validateValueForKey message, returning false if
the object refuses to validate  value. 
Otherwise, validation errors are checked by the EOEditingContext
when it attempts to save changes.
See Also: setValueForObjectAtIndex, setSelectedObjectValue, valueForObject, validatesChangesImmediately
public boolean setValueForObjectAtIndex(
Object  value, 
int  index, 
String  key)
See Also: setSelectedObjectValue, valueForObjectAtIndex
public NSArray sortOrderings()
See Also: setSortOrderings
public NSUndoManager undoManager()
public void updateDisplayedObjects()
See Also: redisplay, displayedObjects, selectedObjects, qualifier, sortOrderings
public int updatedObjectIndex()
public boolean usesOptimisticRefresh()
See Also: setUsesOptimisticRefresh
public boolean validatesChangesImmediately()
See Also: setValidatesChangesImmediately
public Object valueForKeyObject(
String  key, 
com.apple.client.eocontrol.EOKeyValueCodingAdditions  anObject)
public Object valueForObject(
Object  anObject, 
String  key)
public Object valueForObjectKey(
com.apple.yellow.eocontrol.EOKeyValueAdditions  anObject, 
String  key)
public Object valueForObjectAtIndex(
int  index, 
String  key)
public void willChange()
public static final String DisplayGroupWillFetchNotification
| Notification Object | The EODisplayGroup that received the fetch message. | 
| Userinfo | None |