/// <summary> /// Executes drag over /// </summary> /// <param name="param">The param.</param> private void DragOverFunc(object param) { TraceLab.UI.WPF.EventArgs.GraphDragEventArgs args = param as TraceLab.UI.WPF.EventArgs.GraphDragEventArgs; MetadataDefinition metadataDefinition = args.DragArguments.Data.GetData("ComponentDefinition") as MetadataDefinition; args.DragArguments.Effects = System.Windows.DragDropEffects.None; if (metadataDefinition != null && IsExperimentRunning == false) { args.DragArguments.Effects = System.Windows.DragDropEffects.Copy; } }
/// <summary> /// Executes drop /// </summary> /// <param name="param">The param.</param> private void DropFunc(object param) { if (IsExperimentRunning == false) { TraceLab.UI.WPF.EventArgs.GraphDragEventArgs args = param as TraceLab.UI.WPF.EventArgs.GraphDragEventArgs; TraceLab.UI.WPF.EventArgs.DropLinkEventArgs linkArgs = param as TraceLab.UI.WPF.EventArgs.DropLinkEventArgs; if (args != null) { MetadataDefinition metadataDefinition = args.DragArguments.Data.GetData("ComponentDefinition") as MetadataDefinition; if (metadataDefinition != null) { System.Windows.Point pos = args.Position; AddComponentFromDefinition(metadataDefinition, pos.X, pos.Y); } } else if (linkArgs != null) { ExperimentNodeConnection edge = (ExperimentNodeConnection)linkArgs.ExistingEdge; // If we're NOT removing an edge, OR the new edge will be different than the old edge. if (linkArgs.ExistingEdge == null || (edge.Source == linkArgs.Source && edge.Target != linkArgs.Target)) { if (linkArgs.ExistingEdge != null) { RemoveConnection(edge); } if (linkArgs.Source != null && linkArgs.Target != null) { AddConnection((ExperimentNode)linkArgs.Source, (ExperimentNode)linkArgs.Target); } } } } }