aboutsummaryrefslogtreecommitdiffstatsci
path: root/Samples/dragNdrop/dragNdrop.cs
blob: 29c22f28616e54e69b707bb2eb51ac918192aa29 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
using System;
using Crow;
using Samples;
using Crow.Drawing;

namespace tests
{
	public class BasicTests : SampleBase
	{
		static void Main ()
		{
			using (BasicTests app = new BasicTests ()) {
				app.Run ();
			}
		}

		protected override void OnInitialized ()
		{
			Load ("#ui.test.crow").DataSource = this;
		}

        private void refreshGraphicTree (object sender, MouseButtonEventArgs e) {
            NotifyValueChanged ("GraphicTree", (object)null);
            NotifyValueChanged ("GraphicTree", GraphicTree);
        }

        Group startGroup = null;
        

        private void W_StartDrag (object sender, DragDropEventArgs e) {
			Rectangle r = e.DragSource.LastPaintedSlot;
            startGroup = e.DragSource.Parent as Group;
			if (e.DragSource.bmp == null) {
				Console.WriteLine ($"DragSource surface is null: {e.DragSource}");
				return;
			}

            Surface dragImg = CreateSurface (ref r);
            using (Context gr = new Context(dragImg)) {
                gr.SetSource (e.DragSource.bmp, 0, 0);
                gr.Paint ();
            }
			CreateDragImage (dragImg, r);
            /*lock (UpdateMutex)
                startGroup.RemoveChild (e.DragSource);*/
        }
        private void W_EndDrag (object sender, DragDropEventArgs e) {
            lock (UpdateMutex)
                startGroup.AddChild (e.DragSource);
			ClearDragImage ();
        }

        private void W_DragEnter (object sender, DragDropEventArgs e) {
            lock (UpdateMutex)
                (e.DropTarget as Group).AddChild (e.DragSource);
        }
        private void W_DragLeave (object sender, DragDropEventArgs e) {
            lock (UpdateMutex)
                (e.DragSource.Parent as Group).RemoveChild (e.DragSource);
        }
        private void W_Drop (object sender, DragDropEventArgs e) {
            //(e.DropTarget as Group).AddChild (e.DragSource);            
			ClearDragImage ();
        }


    }
}