示例#1
0
文件: MainView.cs 项目: zxmak/ZXMAK2
 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);
     }
 }
示例#2
0
        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);
        }
示例#3
0
文件: MainView.cs 项目: zxmak/ZXMAK2
        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);
            }
        }
示例#4
0
        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;
            }
        }
示例#5
0
        // 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;
            }
        }