performAction(new AddMemberToRelationAction(this, index, member, members));
}
- public function appendMember(member:RelationMember):uint {
- members.push(member);
- member.entity.addParent(this);
- markDirty();
-
- dispatchEvent(new RelationMemberEvent(Connection.RELATION_MEMBER_ADDED, member.entity, this, members.length-1));
- return members.length;
+ public function appendMember(member:RelationMember, performAction:Function):uint {
+ performAction(new AddMemberToRelationAction(this, -1, member, members));
+ return members.length + 1;
}
public function removeMember(entity:Entity, performAction:Function):void {
private var member:RelationMember;
private var memberList:Array;
- public function AddMemberToRelationAction(rel:Relation, index:uint, member:RelationMember, memberList:Array) {
+ public function AddMemberToRelationAction(rel:Relation, index:int, member:RelationMember, memberList:Array) {
super(rel, "Add " + member.entity.getType() + " " + member.entity.id + " at position " + index + " to ");
this.rel = rel;
this.index = index;
for each (var r:Relation in way2.parentRelations) {
// ** needs to copy roles as well
if (r.findEntityMemberIndex(way1)==-1) {
- r.appendMember(new RelationMember(way1, ''));
+ r.appendMember(new RelationMember(way1, ''), push);
}
}
}
public function updateEntityAndClose():void {
var relation:Relation = conn.getRelation(relationSelector.selectedItem.relId);
- relation.appendMember(new RelationMember(entity, ''));
+ relation.appendMember(new RelationMember(entity, ''), MainUndoStack.getGlobalStack().addAction);
PopUpManager.removePopUp(this);
}
var conn:Connection = Connection.getConnectionInstance();
var rel:Relation = selectedEntity as Relation
+ var action:CompositeUndoableAction = new CompositeUndoableAction("Rearrange relation members for "+rel);
// drop members
for (var i:int=rel.length-1 ; i>=0; i--) {
} else if (memberObject.type == 'relation') {
e = conn.getRelation(id);
}
- rel.appendMember(new RelationMember(e, memberObject.role));
+ rel.appendMember(new RelationMember(e, memberObject.role), action.push);
}
+ MainUndoStack.getGlobalStack().addAction(action);
}
private function editRelation(id:Number):void {
public function addMember(relation:Relation, role:String):void {
if (_entity != null && !_entity.hasParent(relation))
- relation.appendMember(new RelationMember(_entity, role));
+ relation.appendMember(new RelationMember(_entity, role), MainUndoStack.getGlobalStack().addAction);
}
public function set factory(factory:RelationMemberEditorFactory):void {
for each (var memberEntity:Entity in old) {
rel.removeMember(memberEntity, undo.push);
}
- undo.doAction();
// now add new entity
- // ** FIXME - appendMember should be undoable
- rel.appendMember(new RelationMember(entity,role))
+ rel.appendMember(new RelationMember(entity,role), undo.push);
+
+ undo.doAction();
if (show.label=='Hide') { setHighlights(true); }
}