private void ReleaseDrag()
 {
     screenView.ReleaseMouseCapture();
     screenView.MouseMove -= OnMouseMove;
     screenView.MouseUp   -= OnMouseUp;
     draggingView          = null;
 }
        public View GetView(int position, View convertView, ViewGroup parent)
        {
            Context c;

            if (!_contextReference.TryGetTarget(out c) || _adapter == null)
            {
                return(null);
            }

            LinearLayout view = null;

            if (!(convertView is LinearLayout) || !((int)convertView.Tag).Equals(_itemsPerRow))
            {
                // create a linear Layout
                view = new LinearLayout(c);
                view.SetPadding(0, 0, _cellSpacing, 0);
                view.LayoutParameters = _rowLayoutParams;
                view.Orientation      = Orientation.Horizontal;
                view.BaselineAligned  = false;
                view.Tag = Integer.ValueOf(_itemsPerRow);
            }
            else
            {
                view = (LinearLayout)convertView;
            }

            for (var i = 0; i < _itemsPerRow; ++i)
            {
                var subView = i < view.ChildCount ? view.GetChildAt(i) : null;
                var p       = position * _itemsPerRow + i;

                var newView = subView;
                if (p < _adapter.Count)
                {
                    if (subView is PlaceholderView)
                    {
                        view.RemoveView(subView);
                        subView = null;
                    }
                    newView = _adapter.GetView(p, subView, view);
                }
                else if (subView == null || !(subView is PlaceholderView))
                {
                    newView = new PlaceholderView(c);
                }
                if (newView != subView || i >= view.ChildCount)
                {
                    if (i < view.ChildCount)
                    {
                        view.RemoveView(subView);
                    }
                    newView.LayoutParameters = _itemLayoutParams;
                    view.AddView(newView, i);
                }
            }

            return(view);
        }
            private void RightButtonClicked(object sender, MouseButtonEventArgs e)
            {
                PlaceholderView view = screenView.GetViewUnder(Mouse.GetPosition(screenView));

                if (view == null)
                {
                    return;
                }

                view.ShowLayoutFixMenu();
            }
            private void StartDrag(MouseButtonEventArgs e, PlaceholderView view)
            {
                draggingView = view;

                dragMouseStart = e.GetPosition(screenView); // TODO sert à rien de le stocker
                dragViewOffset = new Point(dragMouseStart.X - view.ContentBounds.X, dragMouseStart.Y - view.ContentBounds.Y);

                screenView.CaptureMouse();
                screenView.MouseMove += OnMouseMove;
                screenView.MouseUp   += OnMouseUp;
            }
            private void OnMouseMove(object sender, EventArgs e)
            {
                if (toolTipView != null)
                {
                    double distance = Point.Subtract(Mouse.GetPosition(screenView), mouseTriggerPosition).Length;
                    if (distance > 10)
                    {
                        toolTipView.ShowToolTip(false);
                        toolTipView = null;
                    }
                }

                timer.Stop();
                timer.Start();
            }
            private void OnMouseDown(object sender, MouseButtonEventArgs e)
            {
                Point           mousePosition = e.GetPosition(screenView);
                PlaceholderView view          = screenView.GetViewUnder(mousePosition);

                if (view == null)
                {
                    interaction.DispatchEvent(new BaseEventArgs(ScreenViewMouseInteraction.EVENT_REQUEST_DESELECTION));
                    return;
                }

                if (view.IsSelected)
                {
                    StartDrag(e, view);
                }
                else
                {
                    interaction.DispatchEvent(new IntEventArgs(ScreenViewMouseInteraction.EVENT_REQUEST_SELECTION, view.Model.Id));
                }
            }
            private void DisplayTooltip()
            {
                PlaceholderView view = screenView.GetViewUnder(Mouse.GetPosition(screenView));

                if (view == null)
                {
                    return;
                }

                if (!view.GetLabelHitTestRect().Contains(Mouse.GetPosition(screenView)))
                {
                    return;
                }

                if (toolTipView != null)
                {
                    toolTipView.ShowToolTip(false);
                    toolTipView = null;
                }

                toolTipView          = view;
                mouseTriggerPosition = Mouse.GetPosition(screenView);
                view.ShowToolTip(true);
            }
 public PlaceholderViewEventArgs(int eventId, PlaceholderView view, Point point) : base(eventId)
 {
     View  = view;
     Point = point;
 }
예제 #9
0
        public View GetView(int position, View convertView, ViewGroup parent)
        {
            Context c;
            if (!_contextReference.TryGetTarget(out c) || _adapter == null) return null;

            LinearLayout view = null;
            if ( !(convertView is LinearLayout) || !((int)convertView.Tag).Equals(_itemsPerRow))
            {
            // create a linear Layout
            view = new LinearLayout(c);
            view.SetPadding(0, 0, _cellSpacing, 0);
            view.LayoutParameters = _rowLayoutParams;
            view.Orientation = Orientation.Horizontal;
            view.BaselineAligned  = false;
            view.Tag = Integer.ValueOf(_itemsPerRow);
            }
            else
            {
            view = (LinearLayout) convertView;
            }

            for (var i = 0; i < _itemsPerRow; ++i)
            {
            var subView = i < view.ChildCount ? view.GetChildAt(i) : null;
            var p = position * _itemsPerRow + i;

            var newView = subView;
            if (p < _adapter.Count)
            {
                if (subView is PlaceholderView){
                    view.RemoveView(subView);
                    subView = null;
                }
                newView = _adapter.GetView(p, subView, view);
            }
            else if (subView == null || !(subView is PlaceholderView))
            {
                newView = new PlaceholderView(c);
            }
            if (newView != subView || i >= view.ChildCount) {
                if (i < view.ChildCount) {
                    view.RemoveView(subView);
                }
                newView.LayoutParameters =_itemLayoutParams;
                view.AddView(newView, i);
            }
            }

            return view;
        }