Esempio n. 1
0
 /// <summary>
 /// Left mouse button up
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void DesignerScrollViewer_OnPreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
 {
     if (ViewModel.MouseMode == MouseMode.Panning || _dragStartPoint.HasValue)
     {
         DesignerScrollViewer.ReleaseMouseCapture();
         _dragStartPoint = null;
         e.Handled       = true;
     }
 }
Esempio n. 2
0
 /// <summary>
 /// Left mouse button down
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void DesignerScrollViewer_OnPreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
 {
     if (ViewModel.MouseMode == MouseMode.Panning)
     {
         _dragStartPoint           = e.GetPosition(DesignerScrollViewer);
         _capturedHorizontalOffset = DesignerScrollViewer.HorizontalOffset;
         _capturedVerticalOffset   = DesignerScrollViewer.VerticalOffset;
         DesignerScrollViewer.CaptureMouse();
         Keyboard.Focus(DesignerScrollViewer);
         e.Handled = true;
     }
 }
Esempio n. 3
0
 /// <summary>
 /// Mouse move
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void DesignerScrollViewer_OnPreviewMouseMove(object sender, MouseEventArgs e)
 {
     if (ViewModel.MouseMode == MouseMode.Panning)
     {
         if (_dragStartPoint.HasValue)
         {
             Vector delta = e.GetPosition(DesignerScrollViewer) - _dragStartPoint.Value;
             DesignerScrollViewer.ScrollToHorizontalOffset(_capturedHorizontalOffset - delta.X);
             DesignerScrollViewer.ScrollToVerticalOffset(_capturedVerticalOffset - delta.Y);
             e.Handled = true;
         }
     }
 }
Esempio n. 4
0
        /// <summary>
        /// Mouse wheel used
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void DesignerScrollViewer_OnPreviewMouseWheel(object sender, MouseWheelEventArgs e)
        {
            if (Keyboard.Modifiers != 0)
            {
                TableViewControl viewControl = e.Source as TableViewControl;
                if (viewControl != null)
                {
                    try
                    {
                        var grid = viewControl.TableDataGrid;
                        var item = grid.SelectedItem;
                        var row  = grid.ItemContainerGenerator.ContainerFromItem(item) as DataGridRow;
                        var cbox = VisualTreeHelperEx.FindDescendantByName(row, "DataTypeComboBox") as ComboBox;
                        if (cbox != null)
                        {
                            cbox.IsDropDownOpen = false;
                        }
                    }
                    catch (Exception exc)
                    {
                        Trace.WriteLine(exc.Message);
                    }
                }
            }

            if ((Keyboard.Modifiers & ModifierKeys.Control) != 0)
            {
                double newScale = ViewModel.Scale;
                if (e.Delta > 0)
                {
                    newScale += 0.05;
                }
                else if (e.Delta < 0)
                {
                    newScale -= 0.05;
                }
                ViewModel.ChangeZoomCommand.Execute(newScale.ToString("G"));
                e.Handled = true;
            }
            else if ((Keyboard.Modifiers & ModifierKeys.Shift) != 0)
            {
                DesignerScrollViewer.ScrollToHorizontalOffset(DesignerScrollViewer.HorizontalOffset + e.Delta);
                e.Handled = true;
            }
        }
Esempio n. 5
0
        private void EditCanvas_MouseWheel(object sender, MouseWheelEventArgs e)
        {
            DesignerBaseCanvas it1 = sender as DesignerBaseCanvas;

            if (it1 == null)
            {
                return;
            }

            if ((Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
            {
                IPagePropertyData page = this.DataContext as IPagePropertyData;
                Rect selectWdgBounding = page.BoundingRect;

                if (e.Delta > 0)
                {
                    //ExternCanvas.
                    ScaleTransform scaletransform = ExternCanvasBorder.RenderTransform as ScaleTransform;

                    scaletransform.ScaleX = PageScaleEnumerator.GetValue(scaletransform.ScaleX, true);// Math.Min(1.7, scaletransform.ScaleX + 0.01);

                    double hOffset = (selectWdgBounding.Left + selectWdgBounding.Width / 2) * scaletransform.ScaleX - DesignerScrollViewer.ActualWidth / 2;
                    double vOffset = (selectWdgBounding.Top + selectWdgBounding.Height / 2) * scaletransform.ScaleX - DesignerScrollViewer.ActualHeight / 2;
                    DesignerScrollViewer.ScrollToHorizontalOffset(hOffset);
                    DesignerScrollViewer.ScrollToVerticalOffset(vOffset);

                    NLogger.Debug("e.Delta: " + e.Delta + " Scale: " + scaletransform.ScaleX + " view width: " + viewWidth + " view height: " + viewHeight + " horizontalOffset: " + hOffset + " verticalOffset:" + vOffset + " DesignerScrollViewer.ActualWidth:" + DesignerScrollViewer.ActualWidth);
                }
                else if (e.Delta < 0)
                {
                    ScaleTransform scaletransform = ExternCanvasBorder.RenderTransform as ScaleTransform;
                    scaletransform.ScaleX = PageScaleEnumerator.GetValue(scaletransform.ScaleX, false); //Math.Max(0.3, scaletransform.ScaleX - 0.01);
                    //scaletransform.ScaleY = PageScaleEnumerator.GetValue(scaletransform.ScaleY, false); //Math.Max(0.3, scaletransform.ScaleY - 0.01);
                    double hOffset = (selectWdgBounding.Left + selectWdgBounding.Width / 2) * scaletransform.ScaleX - DesignerScrollViewer.ActualWidth / 2;
                    double vOffset = (selectWdgBounding.Top + selectWdgBounding.Height / 2) * scaletransform.ScaleX - DesignerScrollViewer.ActualHeight / 2;
                    DesignerScrollViewer.ScrollToHorizontalOffset(hOffset);
                    DesignerScrollViewer.ScrollToVerticalOffset(vOffset);

                    NLogger.Debug("e.Delta: " + e.Delta + " Scale: " + scaletransform.ScaleX + " view width: " + viewWidth + " view height: " + viewHeight + " horizontalOffset: " + hOffset + " verticalOffset:" + vOffset + " DesignerScrollViewer.ActualWidth:" + DesignerScrollViewer.ActualWidth);
                }

                e.Handled = true;
            }
        }
Esempio n. 6
0
        private void DesignerScrollViewer_PreviewMouseMove(object sender, MouseEventArgs e)
        {
            base.OnMouseMove(e);
            //double a = e.GetPosition(DesignerScrollViewer).X;
            //double b = e.GetPosition(DesignerScrollViewer).Y;
            //if (e.LeftButton == MouseButtonState.Pressed)
            //{
            //    Debug.WriteLine("scrollview-->>------" + a + "----" + b);
            //}

            if (e.LeftButton == MouseButtonState.Pressed)
            {
                Type ty = e.OriginalSource.GetType();
                //if(e.Source is CPSScrollViewer && (e.OriginalSource is Adorner)==false)
                //{ return; }
                if (e.OriginalSource.GetType().Equals(typeof(Thumb)) ||
                    e.OriginalSource.GetType().Equals(typeof(RepeatButton)))
                {
                    return;
                }

                Point  position = e.GetPosition(DesignerScrollViewer);
                double xScroll  = DesignerScrollViewer.ActualWidth - position.X;
                double yScroll  = DesignerScrollViewer.ActualHeight - position.Y;
                if (xScroll < 30)
                {
                    DesignerScrollViewer.ScrollToHorizontalOffset(DesignerScrollViewer.HorizontalOffset + Math.Min(10, Math.Abs(30 - xScroll)));
                }
                else if (position.X < 10)
                {
                    DesignerScrollViewer.ScrollToHorizontalOffset(DesignerScrollViewer.HorizontalOffset - Math.Min(10, Math.Abs(10 - position.X)));
                }

                if (yScroll < 30)
                {
                    DesignerScrollViewer.ScrollToVerticalOffset(DesignerScrollViewer.VerticalOffset + Math.Min(10, Math.Abs(30 - yScroll)));
                }
                else if (position.Y < 10)
                {
                    DesignerScrollViewer.ScrollToVerticalOffset(DesignerScrollViewer.VerticalOffset - Math.Min(10, Math.Abs(10 - position.Y)));
                }
            }
        }
Esempio n. 7
0
        private void EditCanvas_MouseWheel(object sender, MouseWheelEventArgs e)
        {
            DesignerBaseCanvas it = sender as DesignerBaseCanvas;

            if (it == null)
            {
                return;
            }

            if ((Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
            {
                IPagePropertyData page = this.DataContext as IPagePropertyData;
                Rect selectWdgBounding = page.BoundingRect;

                if (e.Delta > 0)
                {
                    //ExternCanvas.
                    ScaleTransform scaletransform = ExternCanvasBorder.RenderTransform as ScaleTransform;
                    //scaletransform.ScaleX = Math.Min(1.7, scaletransform.ScaleX + 0.01);
                    //scaletransform.ScaleY = Math.Min(1.7, scaletransform.ScaleY + 0.01);
                    scaletransform.ScaleX = PageScaleEnumerator.GetValue(scaletransform.ScaleX, true);

                    DesignerScrollViewer.ScrollToHorizontalOffset((selectWdgBounding.Left + selectWdgBounding.Width / 2) * scaletransform.ScaleX - DesignerScrollViewer.ActualWidth / 2);
                    DesignerScrollViewer.ScrollToVerticalOffset((selectWdgBounding.Top + selectWdgBounding.Height / 2) * scaletransform.ScaleX - DesignerScrollViewer.ActualHeight / 2);
                }
                else if (e.Delta < 0)
                {
                    ScaleTransform scaletransform = ExternCanvasBorder.RenderTransform as ScaleTransform;
                    //scaletransform.ScaleX = Math.Max(0.3, scaletransform.ScaleX - 0.01);
                    //scaletransform.ScaleY = Math.Max(0.3, scaletransform.ScaleY - 0.01);
                    scaletransform.ScaleX = PageScaleEnumerator.GetValue(scaletransform.ScaleX, false);
                    DesignerScrollViewer.ScrollToHorizontalOffset((selectWdgBounding.Left + selectWdgBounding.Width / 2) * scaletransform.ScaleX - DesignerScrollViewer.ActualWidth / 2);
                    DesignerScrollViewer.ScrollToVerticalOffset((selectWdgBounding.Top + selectWdgBounding.Height / 2) * scaletransform.ScaleX - DesignerScrollViewer.ActualHeight / 2);
                }
                e.Handled = true;
            }
        }
Esempio n. 8
0
        /// <summary>
        /// Scale changed
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        private void ViewModelOnScaleChanged(object sender, ScaleEventArgs args)
        {
            double contentHorizontalMiddle = (args.OldHorizontalOffset + args.OldViewportWidth / 2) / args.OldScale;
            double contentVerticalMiddle   = (args.OldVerticalOffset + args.OldViewportHeight / 2) / args.OldScale;

            if ((int)DesignerScrollViewer.ScrollableWidth == 0)
            {
                contentHorizontalMiddle = ViewModel.CanvasWidth / 2;
            }

            if ((int)DesignerScrollViewer.ScrollableHeight == 0)
            {
                contentVerticalMiddle = ViewModel.CanvasHeight / 2;
            }

            double newContentHorizontalOffset = contentHorizontalMiddle - (ViewModel.ViewportWidth / 2) / ViewModel.Scale;
            double newContentVerticalOffset   = contentVerticalMiddle - (ViewModel.ViewportHeight / 2) / ViewModel.Scale;

            double newHorizontalOffset = newContentHorizontalOffset * ViewModel.Scale;
            double newVerticalOffset   = newContentVerticalOffset * ViewModel.Scale;

            DesignerScrollViewer.ScrollToHorizontalOffset(newHorizontalOffset);
            DesignerScrollViewer.ScrollToVerticalOffset(newVerticalOffset);
        }
 private void UpdateScrollAndScale(DesignerCanvas canvas)
 {
     if (DataContext is DiagramViewModel && canvas != null)
     {
         if (canvas != null)
         {
             DiagramViewModel view      = DataContext as DiagramViewModel;
             ScaleTransform   transform = null;
             if (canvas.LayoutTransform is ScaleTransform)
             {
                 transform = canvas.LayoutTransform as ScaleTransform;
             }
             else
             {
                 transform = new ScaleTransform();
                 canvas.LayoutTransform = transform;
             }
             transform.ScaleX = view.Scale;
             transform.ScaleY = view.Scale;
             DesignerScrollViewer.ScrollToHorizontalOffset(view.HorizontalOffset);
             DesignerScrollViewer.ScrollToVerticalOffset(view.VerticalOffset);
         }
     }
 }
Esempio n. 10
0
        private void DesignerScrollViewer_DragOver(object sender, DragEventArgs e)
        {
            Point  position = e.GetPosition(DesignerScrollViewer);
            double xScroll  = DesignerScrollViewer.ActualWidth - position.X;
            double yScroll  = DesignerScrollViewer.ActualHeight - position.Y;

            if (xScroll < 50)
            {
                DesignerScrollViewer.ScrollToHorizontalOffset(DesignerScrollViewer.HorizontalOffset + 50 - xScroll);
            }
            else if (position.X < 30)
            {
                DesignerScrollViewer.ScrollToHorizontalOffset(DesignerScrollViewer.HorizontalOffset - 30 + position.X);
            }

            if (yScroll < 50)
            {
                DesignerScrollViewer.ScrollToVerticalOffset(DesignerScrollViewer.VerticalOffset + 50 - yScroll);
            }
            else if (position.Y < 30)
            {
                DesignerScrollViewer.ScrollToVerticalOffset(DesignerScrollViewer.VerticalOffset - 30 + position.Y);
            }
        }