net.wotonomy.ui.swing
Class TimedTextAssociation

java.lang.Object
  extended by net.wotonomy.control.EODelayedObserver
      extended by net.wotonomy.ui.EOAssociation
          extended by net.wotonomy.ui.swing.TimedTextAssociation
All Implemented Interfaces:
java.awt.event.ActionListener, java.awt.event.FocusListener, java.util.EventListener, java.util.Observer, javax.swing.event.DocumentListener, net.wotonomy.control.EOObserving

public class TimedTextAssociation
extends net.wotonomy.ui.EOAssociation
implements java.awt.event.FocusListener, java.awt.event.ActionListener, javax.swing.event.DocumentListener

TimedTextAssociation works like TextAssociation, but instead of using a delayed event to update the model, it uses a timer so that the model is only updated if the user pauses typing for some short interval. This is useful when the update and/or re-read of the model is a costly operation. Bindings are:

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

Field Summary
protected  boolean autoUpdating
           
protected static java.lang.String EMPTY_STRING
           
protected  java.text.Format format
           
protected  boolean hasDocument
           
protected  int interval
           
protected  boolean isListening
           
protected  javax.swing.Timer keyTimer
           
protected  boolean needsUpdate
           
protected  boolean wasNull
           
 
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
TimedTextAssociation(java.lang.Object anObject)
          Constructor specifying the object to be controlled by this association.
 
Method Summary
 void actionPerformed(java.awt.event.ActionEvent evt)
          Updates object on action performed.
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 bindAspect(java.lang.String anAspect, net.wotonomy.ui.EODisplayGroup aDisplayGroup, java.lang.String aKey)
          Binds the specified aspect of this association to the specified key on the specified display group.
 void breakConnection()
          Breaks the connection between this association and its object.
 boolean canBindAspect(java.lang.String anAspect, net.wotonomy.ui.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.
 void changedUpdate(javax.swing.event.DocumentEvent e)
           
 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.
 void focusGained(java.awt.event.FocusEvent evt)
          Notifies of beginning of edit.
 void focusLost(java.awt.event.FocusEvent evt)
          Updates object on focus lost and notifies of end of edit.
 java.text.Format format()
          Gets the Format that is used to convert values from the display group to and from text that is displayed in the component.
 void insertUpdate(javax.swing.event.DocumentEvent e)
           
 boolean isAutoUpdating()
          Returns whether the data model is updated for every change in the controlled component.
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.
static java.lang.String primaryAspect()
          Returns the aspect that is considered primary or default.
protected  void queueUpdate()
          Triggers the key timer to start.
 void removeUpdate(javax.swing.event.DocumentEvent e)
           
 void setAutoUpdating(boolean isAutoUpdating)
          Sets whether the data model is updated for every change in the controlled component.
 void setFormat(java.text.Format aFormat)
          Sets the Format that is used to convert values from the display group to and from text that is displayed in the component.
 void subjectChanged()
          Called when either the selection or the contents of an associated display group have changed.
protected  boolean writeValueToDisplayGroup()
          Writes the value currently in the component to the selected object in the display group bound to the value aspect.
 
Methods inherited from class net.wotonomy.ui.EOAssociation
associationClassesForObject, copyMatchingBindingsFromAssociation, displayGroupForAspect, displayGroupKeyForAspect, displayName, object, setValueForAspect, setValueForAspectAtIndex, shouldEndEditing, shouldEndEditingAtIndex, valueForAspect, valueForAspectAtIndex
 
Methods inherited from class net.wotonomy.control.EODelayedObserver
discardPendingNotification, objectWillChange, observerQueue, priority, update
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

wasNull

protected boolean wasNull

EMPTY_STRING

protected static final java.lang.String EMPTY_STRING
See Also:
Constant Field Values

needsUpdate

protected boolean needsUpdate

hasDocument

protected boolean hasDocument

isListening

protected boolean isListening

format

protected java.text.Format format

autoUpdating

protected boolean autoUpdating

interval

protected int interval

keyTimer

protected javax.swing.Timer keyTimer
Constructor Detail

TimedTextAssociation

public TimedTextAssociation(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,
                             net.wotonomy.ui.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 net.wotonomy.ui.EOAssociation

bindAspect

public void bindAspect(java.lang.String anAspect,
                       net.wotonomy.ui.EODisplayGroup aDisplayGroup,
                       java.lang.String aKey)
Binds the specified aspect of this association to the specified key on the specified display group.

Overrides:
bindAspect in class net.wotonomy.ui.EOAssociation

establishConnection

public void establishConnection()
Establishes a connection between this association and the controlled object. This implementation attempts to add this class as an ActionListener and as a FocusListener to the specified object.

Overrides:
establishConnection in class net.wotonomy.ui.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 net.wotonomy.ui.EOAssociation

subjectChanged

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

Overrides:
subjectChanged in class net.wotonomy.ui.EOAssociation

endEditing

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

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

writeValueToDisplayGroup

protected boolean writeValueToDisplayGroup()
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.

setFormat

public void setFormat(java.text.Format aFormat)
Sets the Format that is used to convert values from the display group to and from text that is displayed in the component. Having a formatter disables auto-updating.


format

public java.text.Format format()
Gets the Format that is used to convert values from the display group to and from text that is displayed in the component.


actionPerformed

public void actionPerformed(java.awt.event.ActionEvent evt)
Updates object on action performed.

Specified by:
actionPerformed in interface java.awt.event.ActionListener

focusGained

public void focusGained(java.awt.event.FocusEvent evt)
Notifies of beginning of edit.

Specified by:
focusGained in interface java.awt.event.FocusListener

focusLost

public void focusLost(java.awt.event.FocusEvent evt)
Updates object on focus lost and notifies of end of edit.

Specified by:
focusLost in interface java.awt.event.FocusListener

isAutoUpdating

public boolean isAutoUpdating()
Returns whether the data model is updated for every change in the controlled component. If false, the data is only updated on focus lost or the enter key. Default is true.


setAutoUpdating

public void setAutoUpdating(boolean isAutoUpdating)
Sets whether the data model is updated for every change in the controlled component.


queueUpdate

protected void queueUpdate()
Triggers the key timer to start.


insertUpdate

public void insertUpdate(javax.swing.event.DocumentEvent e)
Specified by:
insertUpdate in interface javax.swing.event.DocumentListener

removeUpdate

public void removeUpdate(javax.swing.event.DocumentEvent e)
Specified by:
removeUpdate in interface javax.swing.event.DocumentListener

changedUpdate

public void changedUpdate(javax.swing.event.DocumentEvent e)
Specified by:
changedUpdate in interface javax.swing.event.DocumentListener


Copyright © 2006 null. All Rights Reserved.