1 package net.systemeD.halcyon.connection.actions
\r
3 import net.systemeD.halcyon.connection.*;
\r
6 public class MergeNodesAction extends CompositeUndoableAction {
\r
7 // Node2's tags are merged into node1, then node2 is deleted.
\r
8 private var node1:Node;
\r
9 private var node2:Node;
\r
10 static public var lastProblemTags:Array;
\r
12 public function MergeNodesAction(destnode:Node, sourcenode:Node) {
\r
13 super("Merge nodes "+destnode.id+" "+sourcenode.id);
\r
14 this.node1 = destnode;
\r
15 this.node2 = sourcenode;
\r
16 lastProblemTags=null;
\r
19 public override function doAction():uint {
\r
21 super.clearActions();
\r
24 // mergeRelations(); TODO
\r
25 lastProblemTags= node1.mergeTags(node2,push); // TODO use to warn user
\r
26 node2.replaceWith(node1, push);
\r
35 public override function undoAction():uint {
\r
43 public function mergeRelations():void {
\r
44 for each (var r:Relation in node2.parentRelations) {
\r
45 // ** needs to copy roles as well
\r
46 if (r.findEntityMemberIndex(node1)==-1) {
\r
47 r.appendMember(new RelationMember(node1, ''), push);
\r