WorkflowDesigner.DesignSurfaceController.OnSurfaceMouseLeftButtonDown C# (CSharp) Method

OnSurfaceMouseLeftButtonDown() private method

private OnSurfaceMouseLeftButtonDown ( object sender, System.Windows.Input.MouseButtonEventArgs e ) : void
sender object
e System.Windows.Input.MouseButtonEventArgs
return void
    private void OnSurfaceMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
      var sourceConnector = VisualTreeHelper.FindElementsInHostCoordinates(e.GetPosition(null), _surface).OfType<ObjectConnector>().FirstOrDefault();
      if (sourceConnector != null && CanStartConnection(sourceConnector))
      {
        _sourceConnector = sourceConnector;
        _lineGeometry = new LineGeometry();
        _lineGeometry.StartPoint = _lineGeometry.EndPoint = e.GetPosition(_surface);

        _path = new Path
        {
          Stroke = new SolidColorBrush(Colors.Black),
          StrokeThickness = 2,
          Data = _lineGeometry
        };

        _surface.Children.Add(_path);

        return;
      }

      var designerControl = VisualTreeHelper.FindElementsInHostCoordinates(e.GetPosition(null), _surface).OfType<ActivityHost>().FirstOrDefault();
      if (designerControl != null)
      {
        SelectItem(designerControl);

        _clickPosition = e.GetPosition(designerControl);
        _dragStarted = true;
        return;
      }

      var link = VisualTreeHelper.FindElementsInHostCoordinates(e.GetPosition(null), _surface).OfType<LinkHost>().FirstOrDefault();
      if (link != null)
      {
        SelectItem(link);
        return;
      }

      SelectItem(null);
    }