- 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)
observerData
setObserverData
NSDisposable (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
()
ObjectsChangedInEditingContextNotification
s
and InvalidatedAllObjectsInStoreNotification
s,
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 |