From 5758499ba019a1d730cb406ea2ada45c58e66503 Mon Sep 17 00:00:00 2001 From: Bruno Garcia Date: Sat, 4 Dec 2010 01:30:08 +0000 Subject: [PATCH] Generate a signal for array ElementUpdatedEvents. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6339 542714f4-19e9-0310-aa3c-eee0fc999fb1 --- .../tools/GenActionScriptStreamableTask.java | 2 ++ .../presents/tools/streamable_as.tmpl | 22 ++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/threerings/presents/tools/GenActionScriptStreamableTask.java b/src/main/java/com/threerings/presents/tools/GenActionScriptStreamableTask.java index 42b21fb90..267f6081e 100644 --- a/src/main/java/com/threerings/presents/tools/GenActionScriptStreamableTask.java +++ b/src/main/java/com/threerings/presents/tools/GenActionScriptStreamableTask.java @@ -129,6 +129,7 @@ public class GenActionScriptStreamableTask extends GenTask public final String writer; public final String dobjectField; public boolean dset; + public boolean array; public ASField (Field f, Set imports) { @@ -147,6 +148,7 @@ public class GenActionScriptStreamableTask extends GenTask dset = true; imports.add("com.threerings.presents.dobj.DSet_Entry"); // Used for signals } + array = f.getType().isArray(); reader = ActionScriptUtils.toReadObject(f.getType()); writer = ActionScriptUtils.toWriteObject(f.getType(), name); } diff --git a/src/main/resources/com/threerings/presents/tools/streamable_as.tmpl b/src/main/resources/com/threerings/presents/tools/streamable_as.tmpl index 79592e18f..ffdface1e 100644 --- a/src/main/resources/com/threerings/presents/tools/streamable_as.tmpl +++ b/src/main/resources/com/threerings/presents/tools/streamable_as.tmpl @@ -28,6 +28,9 @@ public class {{classname}} {{^extends.isEmpty}}extends {{extends}} public var {{name}}Removed :Signal = new Signal(DSet_Entry); public var {{name}}Updated :Signal = new Signal(DSet_Entry, DSet_Entry); {{/dset}} +{{#array}} + public var {{name}}Updated :Signal = new Signal(int, Object, Object); +{{/array}} {{/fields}} {{#fields}} @@ -76,6 +79,8 @@ import org.osflash.signals.Signal; import com.threerings.presents.dobj.AttributeChangedEvent; import com.threerings.presents.dobj.AttributeChangeListener; +import com.threerings.presents.dobj.ElementUpdatedEvent; +import com.threerings.presents.dobj.ElementUpdateListener; import com.threerings.presents.dobj.EntryAddedEvent; import com.threerings.presents.dobj.EntryRemovedEvent; import com.threerings.presents.dobj.EntryUpdatedEvent; @@ -84,7 +89,7 @@ import com.threerings.presents.dobj.SetListener; import {{package}}.{{classname}}; class Signaller - implements AttributeChangeListener, SetListener + implements AttributeChangeListener, SetListener, ElementUpdateListener { public function Signaller (obj :{{classname}}) { @@ -152,6 +157,21 @@ class Signaller signal.dispatch(event.getEntry(), event.getOldEntry()); } + public function elementUpdated (event :ElementUpdatedEvent) :void + { + var signal :Signal; + switch (event.getName()) { +{{#fields}}{{#array}} + case "{{name}}": + signal = _obj.{{name}}Updated; + break; +{{/array}}{{/fields}} + default: + return; + } + signal.dispatch(event.getIndex(), event.getValue(), event.getOldValue()); + } + protected var _obj :{{classname}}; } // GENERATED SIGNALLER END