net.wotonomy.ui
Class GenericAssociation

java.lang.Object
  extended by net.wotonomy.control.EODelayedObserver
      extended by net.wotonomy.ui.EOAssociation
          extended by net.wotonomy.ui.GenericAssociation
All Implemented Interfaces:
java.util.Observer, net.wotonomy.control.EOObserving

public class GenericAssociation
extends EOAssociation

GenericAssociation binds one or more properties on an observable object to a display group. The controlled object is expected to use the ObserverCenter and will be observed by this association.

Bindings for this association are generic: the name of the aspect will be treated as a property key on the displayed object(s) and synchronized with the bound property on the controlled object.

NOTE: because we cannot assume that the controlled object will retain a reference to this association, you must explicitly retain a reference to prevent the association from getting garbage collected.

Version:
$Revision: 904 $
Author:
michael@mpowers.net, $Author: cgruber $

Field Summary
protected  java.util.Set aspectsModified
           
protected  boolean objectModified
           
 
Fields inherited from class net.wotonomy.ui.EOAssociation
ActionAspect, ArgumentAspect, aspectToGroup, aspectToKey, AttributeAspectSignature, AttributeToManyAspectSignature, AttributeToOneAspectSignature, AttributeToOneToManyAspectSignature, BoldAspect, ChildrenAspect, control, DestinationAspect, EditableAspect, EnabledAspect, IconAspect, IsLeafAspect, ItalicAspect, LabelAspect, NullAspectSignature, ObjectsAspect, ParentAspect, SelectedObjectAspect, SelectedTitleAspect, SourceAspect, TitlesAspect, ToManyAspectSignature, ToOneAspectSignature, ToOneToManyAspectSignature, URLAspect, ValueAspect, VisibleAspect
 
Fields inherited from class net.wotonomy.control.EODelayedObserver
ObserverNumberOfPriorities, ObserverPriorityFifth, ObserverPriorityFirst, ObserverPriorityFourth, ObserverPriorityImmediate, ObserverPriorityLater, ObserverPrioritySecond, ObserverPrioritySixth, ObserverPriorityThird
 
Constructor Summary
GenericAssociation(java.lang.Object anObject)
          Constructor specifying the object to be controlled by this association.
 
Method Summary
static net.wotonomy.foundation.NSArray aspects()
          Returns a List that describes the aspects supported by this class.
static net.wotonomy.foundation.NSArray aspectSignatures()
          Returns a List of aspect signatures whose contents correspond with the aspects list.
static net.wotonomy.foundation.NSArray associationClassesSuperseded()
          Returns a List of EOAssociation subclasses that, for the objects that are usable for this association, are less suitable than this association.
 void breakConnection()
          Breaks the connection between this association and its object.
 boolean canBindAspect(java.lang.String anAspect, EODisplayGroup aDisplayGroup, java.lang.String aKey)
          Returns whether this association can bind to the specified display group on the specified key for the specified aspect.
 boolean endEditing()
          Forces this association to cause the object to stop editing and validate the user's input.
 void establishConnection()
          Establishes a connection between this association and the controlled object.
static boolean isUsableWithObject(java.lang.Object anObject)
          Returns whether this class can control the specified object.
static net.wotonomy.foundation.NSArray objectKeysTaken()
          Returns a List of properties of the controlled object that are controlled by this class.
 void objectWillChange(java.lang.Object anObject)
          Overridden to track which observed object is changing.
static java.lang.String primaryAspect()
          Returns the aspect that is considered primary or default.
protected  java.lang.Object readValueForKey(java.lang.Object object, java.lang.String key)
           
protected  java.lang.Object readValueFromDisplayGroupForKey(EODisplayGroup displayGroup, java.lang.String key)
           
 void subjectChanged()
          Called when either the selection or the contents of an associated display group have changed.
protected  boolean writeValueForAspect(java.lang.Object value, java.lang.String aspect)
          Writes the value currently in the component to the selected object in the display group bound to the value aspect.
protected  void writeValueForKey(java.lang.Object object, java.lang.Object value, java.lang.String key)
           
 
Methods inherited from class net.wotonomy.ui.EOAssociation
associationClassesForObject, bindAspect, copyMatchingBindingsFromAssociation, displayGroupForAspect, displayGroupKeyForAspect, displayName, object, setValueForAspect, setValueForAspectAtIndex, shouldEndEditing, shouldEndEditingAtIndex, valueForAspect, valueForAspectAtIndex
 
Methods inherited from class net.wotonomy.control.EODelayedObserver
discardPendingNotification, observerQueue, priority, update
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

objectModified

protected boolean objectModified

aspectsModified

protected java.util.Set aspectsModified
Constructor Detail

GenericAssociation

public GenericAssociation(java.lang.Object anObject)
Constructor specifying the object to be controlled by this association. Does not establish connection.

Method Detail

aspectSignatures

public static net.wotonomy.foundation.NSArray aspectSignatures()
Returns a List of aspect signatures whose contents correspond with the aspects list. Each element is a string whose characters represent a capability of the corresponding aspect. An empty signature "" means that the aspect can bind without needing a key. This implementation returns "A1M" for each element in the aspects array.


aspects

public static net.wotonomy.foundation.NSArray aspects()
Returns a List that describes the aspects supported by this class. Each element in the list is the string name of the aspect. This implementation returns an empty list.


associationClassesSuperseded

public static net.wotonomy.foundation.NSArray associationClassesSuperseded()
Returns a List of EOAssociation subclasses that, for the objects that are usable for this association, are less suitable than this association.


isUsableWithObject

public static boolean isUsableWithObject(java.lang.Object anObject)
Returns whether this class can control the specified object.


objectKeysTaken

public static net.wotonomy.foundation.NSArray objectKeysTaken()
Returns a List of properties of the controlled object that are controlled by this class. For example, "stringValue", or "selected".


primaryAspect

public static java.lang.String primaryAspect()
Returns the aspect that is considered primary or default. This is typically "value" or somesuch.


canBindAspect

public boolean canBindAspect(java.lang.String anAspect,
                             EODisplayGroup aDisplayGroup,
                             java.lang.String aKey)
Returns whether this association can bind to the specified display group on the specified key for the specified aspect.

Overrides:
canBindAspect in class EOAssociation

establishConnection

public void establishConnection()
Establishes a connection between this association and the controlled object. This implementation registers with ObserverCenter for change notifications from the controlled object.

Overrides:
establishConnection in class EOAssociation

breakConnection

public void breakConnection()
Breaks the connection between this association and its object. Override to stop listening for events from the object.

Overrides:
breakConnection in class EOAssociation

objectWillChange

public void objectWillChange(java.lang.Object anObject)
Overridden to track which observed object is changing.

Specified by:
objectWillChange in interface net.wotonomy.control.EOObserving
Overrides:
objectWillChange in class net.wotonomy.control.EODelayedObserver

subjectChanged

public void subjectChanged()
Called when either the selection or the contents of an associated display group have changed.

Overrides:
subjectChanged in class EOAssociation

readValueForKey

protected java.lang.Object readValueForKey(java.lang.Object object,
                                           java.lang.String key)

writeValueForKey

protected void writeValueForKey(java.lang.Object object,
                                java.lang.Object value,
                                java.lang.String key)

readValueFromDisplayGroupForKey

protected java.lang.Object readValueFromDisplayGroupForKey(EODisplayGroup displayGroup,
                                                           java.lang.String key)

writeValueForAspect

protected boolean writeValueForAspect(java.lang.Object value,
                                      java.lang.String aspect)
Writes the value currently in the component to the selected object in the display group bound to the value aspect.

Returns:
false if there were problems validating, or true to continue.

endEditing

public boolean endEditing()
Forces this association to cause the object to stop editing and validate the user's input.

Overrides:
endEditing in class EOAssociation
Returns:
false if there were problems validating, or true to continue.


Copyright © 2006 null. All Rights Reserved.