1 package net.systemeD.halcyon.connection.actions {
3 import net.systemeD.halcyon.connection.*;
5 /** An UndoableEntityAction corresponding to the setting of a single tag and value. */
6 public class SetTagAction extends UndoableEntityAction {
7 private var oldValue:String;
8 private var key:String;
9 private var value:String;
11 public function SetTagAction(entity:Entity, key:String, value:String) {
12 super(entity, "Set "+key+"="+value);
14 this.value = value.substr(0,255);
17 public override function doAction():uint {
18 var tags:Object = entity.getTagsHash();
20 if ( oldValue != value || key == '' ) {
21 if ( value == null || value == "" || key == '' )
26 entity.dispatchEvent(new TagEvent(Connection.TAG_CHANGED, entity, key, key, oldValue, value));
33 public override function undoAction():uint {
34 var tags:Object = entity.getTagsHash();
35 if ( oldValue == null || oldValue == "" )
40 entity.dispatchEvent(new TagEvent(Connection.TAG_CHANGED, entity, key, key, value, oldValue));
45 public override function mergePrevious(prev:UndoableAction):Boolean {
46 if ( !(prev is SetTagAction) )
49 var prevSet:SetTagAction = prev as SetTagAction;
50 if ( prevSet.entity == entity && prevSet.key == key ) {
51 oldValue = prevSet.oldValue;