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);
}
}