2017-05-10 11 views
1

DraggingToolのノードをコピーする方法はありますか?Part.containingGroup?私はの属性を持つCommandHandlerを知っていますが、DraggingToolには同様の機能はありません。GoJSノードのグループをDraggingToolでコピーする

コピーされたノードがドロップされているグループを検出する方法がある場合は、新しいcontainingGroupを設定する方が良いでしょうか? コピーしたノードを購読するイベントはありますか?

私も正常に動作しますが、あなたの「コントロール・ドラッグ」その場合、彼らが可能にすべきではない任意のグループの外に配置されているCommandHandlerを経由して「スイムレーン」のサンプルと同じ問題がここに http://gojs.net/latest/samples/swimLanes.html コピーノードに気づきました私はそう思っています。

+0

私は 'groupTemplate'に' mouseDrop:function(e、grp){if(!e.shift)return; ...} 'はグループへの追加を取り消します。 'grp.diagram.selection'がコピーまたは移動操作であるかどうかを検出する方法はありますか、おそらくアクティブなツールをチェックしてください。 – xander

+0

' mouseDrop'条件を'if 'に変更しました(e.diagram.currentTool.copiedParts === null &&!e.shift)return; 'うまくいくようです。ノードを同じグループまたは異なるグループにコピーすることは可能ですが、グループから移動することは、シフトキーを押したままでのみ機能します。私はサンプルコードのバグかもしれないので、ここに残しておきます。 – xander

答えて

0

あなたはグループ内のノードをドラッグして(Ctrlキーを押しながら)グループをコピーすることもできますか?ドラッグするコレクションにグループを追加する必要があります。 DraggingTool.computeEffectiveCollectionを無効にすることでこれを行うことができます。次のようなものがあります。

myDiagram.toolManager.draggingTool.computeEffectiveCollection = function (parts) { 
    var map = go.DraggingTool.prototype.computeEffectiveCollection.call(this, parts); 
    // add more stuff to map 
    var it = parts.iterator; 
    while (it.next()) { 
     var p = it.value; 
     if (p.containingGroup !== null) { 
     var group = p.containingGroup; 
     map.add(group, new go.DraggingInfo(group.location)); 
     } 
    } 
    return map; 
    } 
+0

いいえ、私の説明がはっきりしない場合は申し訳ありません。私はちょうどコピーされたノードにCtrlキーをドラッグして別のグループにドラッグするときにグループを設定したいと思う。公式のスイムレーンのサンプル(私の質問のリンク)を見て、ノードをドラッグすると、グループが失われます(それは車線の外側に置かれます)。私のコメントで今述べたコードで修正しました。 – xander

関連する問題