You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by br...@apache.org on 2004/04/27 11:17:01 UTC

cvs commit: cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/formmodel Action.java BooleanField.java Field.java

bruno       2004/04/27 02:17:01

  Modified:    src/blocks/forms/java/org/apache/cocoon/forms/formmodel
                        Action.java BooleanField.java Field.java
  Log:
  Added instance-level event listeners
  
  Revision  Changes    Path
  1.7       +24 -1     cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/Action.java
  
  Index: Action.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/Action.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- Action.java	22 Apr 2004 14:26:48 -0000	1.6
  +++ Action.java	27 Apr 2004 09:17:01 -0000	1.7
  @@ -19,6 +19,8 @@
   import org.apache.cocoon.forms.FormContext;
   import org.apache.cocoon.forms.event.ActionEvent;
   import org.apache.cocoon.forms.event.WidgetEvent;
  +import org.apache.cocoon.forms.event.ActionListener;
  +import org.apache.cocoon.forms.event.WidgetEventMulticaster;
   
   /**
    * An Action widget. An Action widget can cause an {@link ActionEvent} to be triggered
  @@ -33,6 +35,8 @@
    */
   public class Action extends AbstractWidget {
       private final ActionDefinition definition;
  +    /** Additional listeners to those defined as part of the widget definition (if any). */
  +    private ActionListener listener;
   
       public Action(ActionDefinition definition) {
           this.definition = definition;
  @@ -100,8 +104,27 @@
           return ACTION_EL;
       }  
       
  +    /**
  +     * Adds a ActionListener to this widget instance. Listeners defined
  +     * on the widget instance will be executed in addtion to any listeners
  +     * that might have been defined in the widget definition.
  +     */
  +    public void addActionListener(ActionListener listener) {
  +        this.listener = WidgetEventMulticaster.add(this.listener, listener);
  +    }
  +
  +    public void removeActionListener(ActionListener listener) {
  +        this.listener = WidgetEventMulticaster.remove(this.listener, listener);
  +    }
  +
  +    private void fireActionEvent(ActionEvent event) {
  +        if (this.listener != null) {
  +            this.listener.actionPerformed(event);
  +        }
  +    }
       public void broadcastEvent(WidgetEvent event) {
           this.definition.fireActionEvent((ActionEvent)event);
  +        fireActionEvent((ActionEvent)event);
       }
   
   }
  
  
  
  1.7       +25 -1     cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/BooleanField.java
  
  Index: BooleanField.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/BooleanField.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- BooleanField.java	22 Apr 2004 14:26:48 -0000	1.6
  +++ BooleanField.java	27 Apr 2004 09:17:01 -0000	1.7
  @@ -21,6 +21,8 @@
   import org.apache.cocoon.forms.FormContext;
   import org.apache.cocoon.forms.event.ValueChangedEvent;
   import org.apache.cocoon.forms.event.WidgetEvent;
  +import org.apache.cocoon.forms.event.ValueChangedListener;
  +import org.apache.cocoon.forms.event.WidgetEventMulticaster;
   import org.apache.cocoon.xml.XMLUtils;
   import org.xml.sax.ContentHandler;
   import org.xml.sax.SAXException;
  @@ -43,6 +45,8 @@
       // event listeners to be triggered at bind time.
       private Boolean value = Boolean.FALSE;
       private final BooleanFieldDefinition definition;
  +    /** Additional listeners to those defined as part of the widget definition (if any). */
  +    private ValueChangedListener listener;
   
       public BooleanField(BooleanFieldDefinition definition) {
           this.definition = definition;
  @@ -118,7 +122,27 @@
           }
       }
       
  +    /**
  +     * Adds a ValueChangedListener to this widget instance. Listeners defined
  +     * on the widget instance will be executed in addtion to any listeners
  +     * that might have been defined in the widget definition.
  +     */
  +    public void addValueChangedListener(ValueChangedListener listener) {
  +        this.listener = WidgetEventMulticaster.add(this.listener, listener);
  +    }
  +
  +    public void removeValueChangedListener(ValueChangedListener listener) {
  +        this.listener = WidgetEventMulticaster.remove(this.listener, listener);
  +    }
  +
  +    private void fireValueChangedEvent(ValueChangedEvent event) {
  +        if (this.listener != null) {
  +            this.listener.valueChanged(event);
  +        }
  +    }
  +
       public void broadcastEvent(WidgetEvent event) {
           this.definition.fireValueChangedEvent((ValueChangedEvent)event);
  +        fireValueChangedEvent((ValueChangedEvent)event);
       }
   }
  
  
  
  1.10      +26 -5     cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/Field.java
  
  Index: Field.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/Field.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- Field.java	22 Apr 2004 14:26:48 -0000	1.9
  +++ Field.java	27 Apr 2004 09:17:01 -0000	1.10
  @@ -19,9 +19,7 @@
   import org.apache.cocoon.forms.FormContext;
   import org.apache.cocoon.forms.datatype.Datatype;
   import org.apache.cocoon.forms.datatype.SelectionList;
  -import org.apache.cocoon.forms.event.DeferredValueChangedEvent;
  -import org.apache.cocoon.forms.event.ValueChangedEvent;
  -import org.apache.cocoon.forms.event.WidgetEvent;
  +import org.apache.cocoon.forms.event.*;
   import org.apache.cocoon.forms.util.I18nMessage;
   import org.apache.cocoon.forms.validation.ValidationError;
   import org.apache.cocoon.forms.validation.ValidationErrorAware;
  @@ -46,8 +44,11 @@
    * @version CVS $Id$
    */
   public class Field extends AbstractWidget implements ValidationErrorAware, DataWidget, SelectableWidget {
  +    /** Overrides selection list defined in FieldDefinition, if any. */
       protected SelectionList selectionList;
  -    
  +    /** Additional listeners to those defined as part of the widget definition (if any). */
  +    private ValueChangedListener listener;
  +
       private final FieldDefinition fieldDefinition;
   
       protected String enteredValue;
  @@ -317,7 +318,27 @@
           return getFieldDefinition().getDatatype();
       }
   
  +    /**
  +     * Adds a ValueChangedListener to this widget instance. Listeners defined
  +     * on the widget instance will be executed in addtion to any listeners
  +     * that might have been defined in the widget definition.
  +     */
  +    public void addValueChangedListener(ValueChangedListener listener) {
  +        this.listener = WidgetEventMulticaster.add(this.listener, listener);
  +    }
  +
  +    public void removeValueChangedListener(ValueChangedListener listener) {
  +        this.listener = WidgetEventMulticaster.remove(this.listener, listener);
  +    }
  +
  +    private void fireValueChangedEvent(ValueChangedEvent event) {
  +        if (this.listener != null) {
  +            this.listener.valueChanged(event);
  +        }
  +    }
  +
       public void broadcastEvent(WidgetEvent event) {
           getFieldDefinition().fireValueChangedEvent((ValueChangedEvent)event);
  +        fireValueChangedEvent((ValueChangedEvent)event);
       }
   }