/// <summary> /// ドロップ時のDragDropEffectを取得する。 /// </summary> /// <param name="dragNode">ドラッグ対象のツリーノード。</param> /// <returns>ドロップ時のDragDropEffect。</returns> public override DragDropEffects GetDragDropEffect(WarlockTreeNode dragNode) { if (dragNode is ScriptTreeNode) return DragDropEffects.Move; return base.GetDragDropEffect(dragNode); }
/// <summary> /// ドロップ時のDragDropEffectを取得する。 /// </summary> /// <param name="dragNode">ドラッグ対象のツリーノード。</param> /// <returns>ドロップ時のDragDropEffect。</returns> public override DragDropEffects GetDragDropEffect(WarlockTreeNode dragNode) { if (dragNode is ScriptTreeNode) { Func<WarlockTreeNode, bool> checkRecursive = null; checkRecursive = (node) => { if (node == this) return false; foreach (var child in node.Nodes) { if (!checkRecursive((WarlockTreeNode)child)) return false; } return true; }; if (dragNode == this || checkRecursive(dragNode)) { return DragDropEffects.Move; } else { return DragDropEffects.None; } } return base.GetDragDropEffect(dragNode); }
/// <summary> /// ノードのドロップ処理を行う。 /// </summary> /// <param name="dragNode">ドラッグ対象のツリーノード。</param> /// <param name="project">プロジェクト情報のインスタンス。</param> public override void Drop(WarlockTreeNode dragNode, WarlockProject project) { var scriptNode = (ScriptTreeNode)dragNode; var dragDefinition = (ScriptDefinition)scriptNode.Tag; scriptNode.Remove(); project.ScriptDefinitions.Remove(dragDefinition); project.ScriptDefinitions.Add(dragDefinition); this.Nodes.Add(scriptNode); if (!this.IsExpanded) this.Expand(); }
/// <summary> /// ノードのドロップ処理を行う。 /// </summary> /// <param name="dragNode">ドラッグ対象のツリーノード。</param> /// <param name="project">プロジェクト情報のインスタンス。</param> public override void Drop(WarlockTreeNode dragNode, WarlockProject project) { var classNode = (ClassTreeNode)dragNode; var dragDefinition = (ClassDefinition)classNode.Tag; var dropDefinition = (ClassDefinition)this.Tag; classNode.Remove(); project.ClassDefinitions.Remove(dragDefinition); int i = 0; for (i = 0; i < project.ClassDefinitions.Count - 1; i++) { if (project.ClassDefinitions[i] == dropDefinition) break; } project.ClassDefinitions.Insert(i, dragDefinition); Parent.Nodes.Insert(i, classNode); }
/// <summary> /// ノードのドロップ処理を行う。 /// </summary> /// <param name="dragNode">ドラッグ対象のツリーノード。</param> /// <param name="project">プロジェクト情報のインスタンス。</param> public override void Drop(WarlockTreeNode dragNode, WarlockProject project) { var scriptNode = (ScriptTreeNode)dragNode; var dragDefinition = (ScriptDefinition)scriptNode.Tag; var dropDefinition = (ScriptDefinition)this.Tag; var dragParentNode = scriptNode.Parent; var dropParentNode = this.Parent; scriptNode.Remove(); List<ScriptDefinition> dragParentList; if (dragParentNode is ScriptRootTreeNode) { dragParentList = project.ScriptDefinitions; } else if (dragParentNode is ScriptTreeNode) { var parentDefinition = (ScriptDefinition)dragParentNode.Tag; dragParentList = parentDefinition.Children; } else { throw new NotImplementedException(); } dragParentList.Remove(dragDefinition); if (dropDefinition.IsFolder) { dropDefinition.Children.Add(dragDefinition); this.Nodes.Add(scriptNode); if (!this.IsExpanded) this.Expand(); } else { List<ScriptDefinition> dropParentList; if (dropParentNode is ScriptRootTreeNode) { dropParentList = project.ScriptDefinitions; } else if (dropParentNode is ScriptTreeNode) { var parentDefinition = (ScriptDefinition)dropParentNode.Tag; dropParentList = parentDefinition.Children; } else { throw new NotImplementedException(); } int i = 0; for (i = 0; i < dropParentList.Count - 1; i++) { if (dropParentList[i] == dropDefinition) break; } dropParentList.Insert(i, dragDefinition); dropParentNode.Nodes.Insert(i, scriptNode); } }
/// <summary> /// コンストラクタ。 /// </summary> /// <param name="node">参照元のツリーノード。</param> public PropertyObject(WarlockTreeNode node) { _Node = node; }
/// <summary> /// ノードのドロップ処理を行う。 /// </summary> /// <param name="dragNode">ドラッグ対象のツリーノード。</param> /// <param name="project">プロジェクト情報のインスタンス。</param> public virtual void Drop( WarlockTreeNode dragNode, WarlockProject project) { throw new NotImplementedException(); }
/// <summary> /// ドロップ時のDragDropEffectを取得する。 /// </summary> /// <param name="dragNode">ドラッグ対象のツリーノード。</param> /// <returns>ドロップ時のDragDropEffect。</returns> public virtual DragDropEffects GetDragDropEffect(WarlockTreeNode dragNode) { return DragDropEffects.None; }
/// <summary> /// プロパティ表示をリフレッシュする。 /// </summary> /// <param name="node">ツリーノードのインスタンス。</param> private void RefreshProperty(WarlockTreeNode node) { if (Property == null) return; if (node == null) { Property.SetProperty(null); } else { Property.SetProperty(node.GetPropertyObject()); } }
/// <summary> /// ノードのドロップ処理を行う。 /// </summary> /// <param name="dragNode">ドラッグ対象のツリーノード。</param> /// <param name="project">プロジェクト情報のインスタンス。</param> public override void Drop(WarlockTreeNode dragNode, WarlockProject project) { var classNode = (ClassTreeNode)dragNode; var dragDefinition = (ClassDefinition)classNode.Tag; classNode.Remove(); project.ClassDefinitions.Remove(dragDefinition); project.ClassDefinitions.Add(dragDefinition); this.Nodes.Add(classNode); if (!this.IsExpanded) this.Expand(); }