Ignore:
Timestamp:
Jan 19, 2011, 11:43:55 AM (11 years ago)
Author:
matkovic
Message:

-fixed a Line issue
-Path finding only at "Mouse-Drop"

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/WorkspaceManager/View/Container/WorkSpaceEditorView.xaml.cs

    r2280 r2383  
    3939        private Point? lastMousePositionOnTarget;
    4040        private Point? lastDragPoint;
     41        private Point? startDrag;
    4142        private Point previousDragPoint = new Point();
    4243        private ConnectorView selectedConnector;
     
    4647        private Panel root { get { return (this.scrollViewer.Content as Panel); } }
    4748        private BottomBox bottomBox { get { return (BottomBoxParent.Child as BottomBox); } }
    48         public bool IsKeyMultiKeyDown;
     49        public bool IsCtrlToggled { get; set; }
    4950
    5051        public UserContentWrapper UserContentWrapper { get; set; }
     
    7172            CompositionTarget.Rendering += new EventHandler(CompositionTarget_Rendering);
    7273
     74            scrollViewer.ScrollChanged += OnScrollViewerScrollChanged;
     75            scrollViewer.PreviewMouseWheel += OnPreviewMouseWheel;
    7376            scrollViewer.DataContext = root;
    74             scrollViewer.ScrollChanged += OnScrollViewerScrollChanged;
    75             scrollViewer.PreviewMouseLeftButtonUp += OnMouseLeftButtonUp;
    76             scrollViewer.PreviewMouseWheel += OnPreviewMouseWheel;
    7777
    7878            this.bottomBox.FitToScreen += new EventHandler<FitToScreenEventArgs>(bottomBox_FitToScreen);
     
    8282        }
    8383
    84         void OnMouseMove(object sender, MouseEventArgs e)
    85         {
    86             if (lastDragPoint.HasValue)
    87             {
    88                 Point posNow = e.GetPosition(scrollViewer);
    89 
    90                 double dX = posNow.X - lastDragPoint.Value.X;
    91                 double dY = posNow.Y - lastDragPoint.Value.Y;
    92 
    93                 lastDragPoint = posNow;
    94 
    95                 scrollViewer.ScrollToHorizontalOffset(scrollViewer.HorizontalOffset - dX);
    96                 scrollViewer.ScrollToVerticalOffset(scrollViewer.VerticalOffset - dY);
    97             }
    98         }
    99 
    10084        private void Thumb_DragDelta(object sender, System.Windows.Controls.Primitives.DragDeltaEventArgs e)
    10185        {
     86            if (IsCtrlToggled)
     87                return;
     88
    10289            scrollViewer.ScrollToHorizontalOffset(scrollViewer.HorizontalOffset - e.HorizontalChange);
    10390            scrollViewer.ScrollToVerticalOffset(scrollViewer.VerticalOffset - e.VerticalChange);
    104             scrollViewer.Cursor = Cursors.SizeAll;
     91            this.Cursor = Cursors.SizeAll;
    10592        }
    10693
     
    121108        }
    122109
    123         void OnMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
    124         {
    125             scrollViewer.Cursor = Cursors.Arrow;
    126             scrollViewer.ReleaseMouseCapture();
     110        private void Thumb_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
     111        {
     112            if (!IsCtrlToggled)
     113                return;
     114
     115            rectangle.Visibility = Visibility.Visible;
     116            startDrag = e.GetPosition(root);
     117            this.Cursor = Cursors.Cross;
     118        }
     119
     120        private void Thumb_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
     121        {
     122            rectangle.Visibility = Visibility.Collapsed;
     123            this.Cursor = Cursors.Arrow;
     124            startDrag = null;
    127125            lastDragPoint = null;
    128126        }
    129127
     128        void WorkSpaceEditorView_MouseMove(object sender, MouseEventArgs e)
     129        {
     130            if (IsCtrlToggled && startDrag.HasValue)
     131            {
     132                Point currentPoint = e.GetPosition(root);
     133                Point hasValue = (Point)startDrag;
     134
     135                //Calculate the top left corner of the rectangle
     136                //regardless of drag direction
     137                double x = hasValue.X < currentPoint.X ? hasValue.X : currentPoint.X;
     138                double y = hasValue.Y < currentPoint.Y ? hasValue.Y : currentPoint.Y;
     139
     140                //Move the rectangle to proper place
     141                rectangle.RenderTransform = new TranslateTransform(x, y);
     142                //Set its size
     143                rectangle.Width = Math.Abs(e.GetPosition(root).X - hasValue.X);
     144                rectangle.Height = Math.Abs(e.GetPosition(root).Y - hasValue.Y);
     145            }
     146            dummyLine.EndPoint = Mouse.GetPosition(root);
     147        }
     148
    130149        void OnScrollViewerScrollChanged(object sender, ScrollChangedEventArgs e)
    131150        {
     151            if (IsCtrlToggled)
     152                return;
     153
    132154            if (e.ExtentHeightChange != 0 || e.ExtentWidthChange != 0)
    133155            {
     
    184206            if ((Keyboard.GetKeyStates(Key.LeftCtrl) & KeyStates.Down) > 0)
    185207            {
    186                 IsKeyMultiKeyDown = true;
     208                IsCtrlToggled = true;
    187209            }
    188210            else
    189                 IsKeyMultiKeyDown = false;
     211                IsCtrlToggled = false;
    190212
    191213            if ((Keyboard.GetKeyStates(Key.LeftCtrl) & Keyboard.GetKeyStates(Key.C) & KeyStates.Down) > 0)
     
    294316        private void setBaseControl(WorkspaceModel WorkspaceModel)
    295317        {
     318            this.MouseMove +=new MouseEventHandler(WorkSpaceEditorView_MouseMove);
    296319            this.MouseLeave += new MouseEventHandler(WorkSpaceEditorView_MouseLeave);
    297320            this.Loaded += new RoutedEventHandler(WorkSpaceEditorView_Loaded);
     
    355378            {
    356379                ConnectionModel connectionModel = this.Model.newConnectionModel(((ConnectorView)source).Model, ((ConnectorView)target).Model, ((ConnectorView)source).Model.ConnectorType);
    357                 CryptoLineView conn = new CryptoLineView(connectionModel);
     380                CryptoLineView conn = new CryptoLineView(connectionModel,source,target);
    358381                conn.StartPointSource = source;
    359382                conn.EndPointSource = target;
     
    386409                conn.Stroke = new SolidColorBrush(color);
    387410                conn.SetBinding(CryptoLineView.StartPointProperty, CreateConnectorBinding(source));
    388                 conn.EndPoint = Mouse.GetPosition(this);
     411                conn.EndPoint = Mouse.GetPosition(root);
    389412            }
    390413        }
     
    491514        }     
    492515
    493         void WorkSpaceEditorView_MouseMove(object sender, MouseEventArgs e)
    494         {
    495             this.dummyLine.EndPoint = Mouse.GetPosition(root);
    496             previousDragPoint = e.GetPosition(root);
    497         }
     516
    498517
    499518        void shape_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
     
    591610                    continue;
    592611
    593                 CryptoLineView conn = new CryptoLineView(connModel);
     612                CryptoLineView conn = new CryptoLineView(connModel,null,null);
    594613                connModel.UpdateableView = conn;
    595614                connModel.OnDelete += DeleteConnection;
Note: See TracChangeset for help on using the changeset viewer.