2017-05-08 4 views
0

ノードテンプレートごとに異なるResizingToolを使用できますか? 私の場合、いくつかのノートを含むグループがあり、グループResizingToolでグループのサイズを変更し、グループ内のノードはデフォルトのResizingToolを使用する必要があります。グループとノード用のGoJS異なるResizingTool

私が見る限り、resizingToolプロパティは、ダイアグラム自体でのみ設定できるので、すべて同じツールです!

私が今使っている修正プログラムは、ノードタイプ条件に応じて、私のカスタムツールの元のgo.ResizingTool関数を呼び出すことです。

答えて

1

これは1つの正しいアプローチです。それぞれのオーバーライドをhttp://gojs.net/latest/api/symbols/ResizingTool.html#adornedObjectで調べ、何をすべきかを決定します。

同様のアプローチは、二つの異なるResizingTool秒の標準的なものとToolManager.mouseDownToolsとしてインストールカスタム1、両方のインスタンスを持っているだろう。あなたは、それはOKだときにのみ、それはtrueを返しますようにResizingTool.canStartをオーバーライドする必要がありますリスト、そのToolManager.mouseDownToolsにちょうどToolManager.resizingTool前に、カスタム、より具体的な、ツールをインストールしますおよびサイズ変更ハンドルは、いずれかのグループにあります。以下のような

何か:

GroupResizingTool.prototype.canStart = function() { 
    if (!this.isEnabled) return false; 
    var diagram = this.diagram; 
    if (diagram === null || diagram.isReadOnly) return false; 
    if (!diagram.allowResize) return false; 
    if (!diagram.lastInput.left) return false; 

    var h = this.findToolHandleAt(diagram.firstInput.documentPoint, this.name); 
    return (h !== null && h.part.adornedPart instanceof go.Group); 
} 

それとも、あなたの最後の述語が飾らパートは、特定のカテゴリであることを確認します。または他の必要な差別。カスタムcanStartが失敗した

は、次のツールは、通常だけカスタムツールがなかったため、これらのノード上で動作する標準ResizingTool、だろう。

+0

現在、私はすべての上書きでこのようなものを使用しています(2つしかないので推測します): 'if(!(this.adornedObject.part instanceof go.Group))go.ResizingTool。 prototype.resize.call(this、newr); 'しかし、 'ToolManager.mouseDownTools'のヒントは素晴らしいです。特に、2つの' ResizingTools'が必要な場合は特にそうです。 – xander

関連する問題