示例#1
0
        protected override void OnElementChanged(ElementChangedEventArgs <Xamarin.Forms.View> e)
        {
            base.OnElementChanged(e);


            if (e.OldElement != null)
            {
                LongClick -= HandleLongClick;
            }
            if (e.NewElement != null)
            {
                LongClick += HandleLongClick;
                DraggableView dragView = Element as DraggableView;
                dragView.RestorePositionCommand = new Command(() =>
                {
                    SetX(originalX);
                    SetY(originalY);
                    //if (!firstTime)
                    //{
                    //    SetX(originalX);
                    //    SetY(originalY);
                    //}
                });
            }
        }
 public MindMapPage()
 {
     this.ViewModel      = new MindMapViewModel();
     this.BindingContext = this.ViewModel;
     InitializeComponent();
     dndLayout.DoubleTapped += (object sender, EventArgs e) =>
     {
         TappedEventArgs evnt           = e as TappedEventArgs;
         Point           tappedLocation = (Point)evnt.Parameter;
         MindMapEntity   mapEntity      = new MindMapEntity
         {
             Title = $"MindMap{tappedLocation.X}{tappedLocation.Y}"
         };
         MindMapView   mindMapView = new MindMapView(mapEntity);
         DraggableView mindMapDrag = new DraggableView {
             Content = mindMapView
         };
         TapGestureRecognizer tapGesture = new TapGestureRecognizer();
         tapGesture.Tapped += (sender1, e1) =>
         {
             this.ViewModel.CurrentMindMapEntity = (sender1 as MindMapView).MapEntity;
         };
         mindMapView.GestureRecognizers.Add(tapGesture);
         this.dndLayout.Children.Add(
             mindMapDrag,
             tappedLocation
             );
     };
 }
示例#3
0
        private void HandleLongClick(object sender, LongClickEventArgs e)
        {
            DraggableView dragView = Element as DraggableView;

            if (firstTime)
            {
                originalX = GetX();
                originalY = GetY();
                firstTime = false;
            }
            dragView.DragStarted();
            touchedDown = true;
        }
示例#4
0
        private void dragView_DragEnd(object sender, EventArgs e)
        {
            DraggableView view = (DraggableView)sender;
            string        Guid = view.ClassId;

            if (view.DragDirection == DragDirectionType.Horizontal & view.DragMode == DragMode.Touch)
            {
                if (AppConstants.GetSwipe(Guid, view.DragValue))
                {
                    current_context.OnQuoteCommand.Execute(Guid);
                }
            }
        }
示例#5
0
        private void dragView_DragEnd(object sender, EventArgs e)
        {
            DraggableView view   = (DraggableView)sender;
            string        chatID = view.ClassId;

            if (view.DragDirection == DragDirectionType.Horizontal & view.DragMode == DragMode.Touch)
            {
                if (this.Parent.Parent.Parent.BindingContext is ChatPageViewModel parent_page_model)
                {
                    //DependencyService.Get<IMessage>().ShortAlert($"Outgoing: {view.DragValue}");
                    if (AppConstants.GetSwipe(chatID, view.DragValue))
                    {
                        parent_page_model.OnQuoteCommand.Execute(chatID);
                        (this.Parent.Parent.Parent as ChatPage).FocusCommand.Execute(null);
                    }
                }
            }
        }
示例#6
0
        public EntityViewPage()
        {
            InitializeComponent();

            TestEntity = new Entity
            {
                Name       = "Test",
                Properties = new PropertyEntity[] {
                    new PropertyEntity {
                        Name = "Name", Type = typeof(string)
                    },
                    new PropertyEntity {
                        Name = "Color", Type = typeof(Color)
                    },
                    new PropertyEntity {
                        Name = "Count", Type = typeof(int)
                    }
                },
                Methods = new MethodEntity[] {
                    new MethodEntity {
                        Name = "AddToCount", Params = new PropertyEntity[] { new PropertyEntity {
                                                                                 Name = "toAdd", Type = typeof(int)
                                                                             } }
                    }
                }
            };

            EntityView entityView = new EntityView();

            entityView.BindingContext = TestEntity;

            DraggableView draggableView = new DraggableView()
            {
                Content = entityView, DragMode = DragMode.Touch, DragDirection = DragDirectionType.All
            };

            stackLayout.Children.Add(draggableView);
        }
示例#7
0
        private void DevicesList_ItemTapped(object sender, ItemTappedEventArgs e)
        {
            var device = (DeviceModel)e.Item;

            if (ParentLayoutGrid.Children.Count > 0)
            {
                var lastUnplacedDevice = ParentLayoutGrid.Children.Where(d => d.GetType() == typeof(DraggableView))
                                         .FirstOrDefault(c => ((c as DraggableView).BindingContext as DeviceModel).IsPlaced == false);

                if (lastUnplacedDevice != null)
                {
                    lastUnplacedDevice.BindingContext = device;
                }
                else
                {
                    var dragView = new DraggableView {
                        BindingContext = device
                    };
                    dragView.DragEnd += DragView_DragEnd;
                    ParentLayoutGrid.Children.Add(dragView, 1, 0);
                }
            }
        }
示例#8
0
        public override bool OnTouchEvent(MotionEvent e)
        {
            float         x        = e.RawX;
            float         y        = e.RawY;
            DraggableView dragView = Element as DraggableView;

            switch (e.Action)
            {
            case MotionEventActions.Down:
                if (dragView.DragMode == DragMode.Touch)
                {
                    if (!touchedDown)
                    {
                        if (firstTime)
                        {
                            originalX = GetX();
                            originalY = GetY();
                            firstTime = false;
                        }
                        dragView.DragStarted();
                    }

                    touchedDown = true;
                }
                dX = x - this.GetX();
                dY = y - this.GetY();
                break;

            case MotionEventActions.Move:
                bool   dragged   = false;
                double dragvalue = 0;
                if (touchedDown)
                {
                    //if (dragView.DragDirection == DragDirectionType.All || dragView.DragDirection == DragDirectionType.Horizontal)

                    if (dragView.DragDirection == DragDirectionType.Horizontal)
                    {
                        float diff = x - dX;
                        if (diff <= 0)
                        {
                            SetX(originalX);
                        }
                        else
                        {
                            SetX(diff);
                            if (diff > 50)
                            {
                                dragged = true;
                            }
                        }
                        dragvalue = diff;
                    }

                    //if (dragView.DragDirection == DragDirectionType.All || dragView.DragDirection == DragDirectionType.Vertical)
                    //{
                    //    SetY(y - dY);
                    //}
                }
                dragView.DragEnded(dragged, dragvalue);
                break;

            case MotionEventActions.Up:
                touchedDown = false;
                //dragView.DragEnded(false, 0);
                break;

            case MotionEventActions.Cancel:
                touchedDown = false;
                break;
            }
            return(base.OnTouchEvent(e));
        }
示例#9
0
        protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            DraggableView dragView = Element as DraggableView;

            base.OnElementPropertyChanged(sender, e);
        }
示例#10
0
 private void XamlDraggableView_OnTouched(object sender, OnTouchedEventArgs e)
 {
     LastDraggedDV = e.View;
 }
示例#11
0
 public OnTouchedEventArgs(DraggableView v)
 {
     View = v;
 }