private void RunePageItem_MouseMove(object sender, MouseEventArgs e) { if (e.LeftButton == MouseButtonState.Pressed) { if (dragInit) { Point currentPos = e.GetPosition(this); if (Math.Abs(dragInitPos.X - currentPos.X) > 5 || Math.Abs(dragInitPos.Y - currentPos.Y) > 5) { RunePageItem runePageItem = (RunePageItem)sender; DragViewImage.Source = runePageItem.GetDraggingSnapshot(e, new Point(dragInitPos.X - currentPos.X, dragInitPos.Y - currentPos.Y)); DragDrop.DoDragDrop(RunePagePanel, runePageItem, DragDropEffects.Move); DragViewImage.Source = null; UpdateConfig(); dragInit = false; } } else { dragInit = true; dragInitPos = e.GetPosition(this); } } }
private void RunePageItem_Delete(RunePageItem runePageItem) { MessagePopup messagePopup = new MessagePopup("Are you sure you want to delete this page?"); messagePopup.Decided += delegate(bool result) { if (result) { RunePagePanel.Children.Remove(runePageItem); RunePagePanelDummy.Children.RemoveAt(RunePagePanelDummy.Children.Count - 1); UpdateConfig(); } MainViewGrid.Children.Remove(messagePopup); }; MainViewGrid.Children.Add(messagePopup); }
private void AppendRunePage(Json.Value value) { RunePageItem runePageItem = new RunePageItem(value); runePageItem.Apply += RunePageItem_Apply; runePageItem.Delete += RunePageItem_Delete; runePageItem.Updated += RunePageItem_Updated; runePageItem.MouseMove += RunePageItem_MouseMove; RunePagePanel.Children.Insert(RunePagePanel.Children.Count - 1, runePageItem); Border border = new Border() { Height = 277, Width = 176, Margin = new Thickness(14), Background = new SolidColorBrush(Colors.Black) }; RunePagePanelDummy.Children.Add(border); }
private void RunePageViewer_DragOver(object sender, DragEventArgs e) { RunePageItem draggingPageItem = (RunePageItem)e.Data.GetData(typeof(RunePageItem)); Point overCanvasPoint = e.GetPosition(DragViewCanvas); Canvas.SetLeft(DragViewImage, overCanvasPoint.X - draggingPageItem.SnapShotMousePosition.X); Canvas.SetTop(DragViewImage, overCanvasPoint.Y - draggingPageItem.SnapShotMousePosition.Y); HitTestResult hitTestResult = VisualTreeHelper.HitTest(RunePagePanelDummy, e.GetPosition(RunePagePanelDummy)); if (hitTestResult != null) { Border dragOverPageItemDummy = FindVisualParent <Border>(hitTestResult.VisualHit); int overIndex = RunePagePanelDummy.Children.IndexOf(dragOverPageItemDummy); RunePageItem dragOverPageItem = (RunePageItem)RunePagePanel.Children[overIndex]; if (dragOverPageItem != null && dragOverPageItem != draggingPageItem) { int newIndex = RunePagePanel.Children.IndexOf(dragOverPageItem); RunePagePanel.Children.Remove(draggingPageItem); RunePagePanel.Children.Insert(newIndex, draggingPageItem); } } }
private void RunePageItem_Updated(RunePageItem runePageItem) { UpdateConfig(); }