protected override void OnDragEnter(DragEventArgs e) { base.OnDragEnter(e); try { if (!CanFocus) { e.Effect = DragDropEffects.None; return; } var ddw = new DragDataWrapper(e.Data); var allowOpen = false; if (ddw.IsFileDrop) { var uri = new Uri(Path.GetFullPath(ddw.GetFilePath())); allowOpen = CanExecute(CommandOpenUri, uri); } else if (ddw.IsLinkDrop) { var uri = new Uri(ddw.GetLinkUri()); allowOpen = CanExecute(CommandOpenUri, uri); } e.Effect = allowOpen ? DragDropEffects.Link : DragDropEffects.None; } catch (Exception ex) { Logger.Error(ex); } }
private static void Drag_LeftMouseDownEventHandler(object sender, MouseButtonEventArgs e) { PickupItem item = sender as PickupItem; ModelItem m = item.Content as ModelItem; if (m == null) { return; } m = new ModelItem(m.Type); // wrap data DragDataWrapper data = new DragDataWrapper(m, DragOperationType.Create); data.DragStartPosition = e.GetPosition(item); DragDrop.DoDragDrop(m, data, DragDropEffects.Copy); }
protected override void OnDragDrop(DragEventArgs e) { base.OnDragDrop(e); try { if (!CanFocus) { return; } var ddw = new DragDataWrapper(e.Data); if (ddw.IsFileDrop) { var uri = new Uri(Path.GetFullPath(ddw.GetFilePath())); this.Activate(); this.BeginInvoke(new Action(() => OnCommand(CommandOpenUri, uri))); //string fileName = ddw.GetFilePath(); //if (fileName != string.Empty) //{ // this.Activate(); // this.BeginInvoke(new OpenFileHandler(OpenFile), fileName, true); //} } else if (ddw.IsLinkDrop) { var uri = new Uri(ddw.GetLinkUri()); this.Activate(); this.BeginInvoke(new Action(() => OnCommand(CommandOpenUri, uri))); //string linkUrl = ddw.GetLinkUri(); //if (linkUrl != string.Empty) //{ // Uri fileUri = new Uri(linkUrl); // this.Activate(); // this.BeginInvoke(new OpenUriHandler(OpenUri), fileUri); //} } } catch (Exception ex) { Logger.Error(ex); } }
private static void DragOverEventHandler(object sender, DragEventArgs e) { DragDataWrapper data = e.Data.GetData(typeof(DragDataWrapper)) as DragDataWrapper; ModelItem m = data.Content as ModelItem; Canvas c = sender as Canvas; Diagram d = Project.Current.Children.FindByCanvas(c); // get relative position Point p = e.GetPosition(c); UpdateMousePos(c, p); switch (data.Type) { case DragOperationType.Create: case DragOperationType.Move: m.Position = new Point(p.X - data.DragStartPosition.X, p.Y - data.DragStartPosition.Y); #if DEBUG_ON // test value System.Console.WriteLine("{0} Drag over canvas", System.DateTime.Now.Millisecond); #endif break; } }
// drag leave (remove object?) private static void DragLeaveEventHandler(object sender, DragEventArgs e) { DragDataWrapper data = e.Data.GetData(typeof(DragDataWrapper)) as DragDataWrapper; ModelItem m = data.Content as ModelItem; Canvas c = sender as Canvas; Diagram d = Project.Current.Children.FindByCanvas(c); if (m == null || d == null) { return; } switch (data.Type) { case DragOperationType.Create: d.Children.Remove(m.ContentObject); #if DEBUG_ON // test value System.Console.WriteLine("{0} Dragging leave canvas", System.DateTime.Now.Millisecond); #endif break; } }