Exemplo n.º 1
0
        // Handler for element selection on the canvas providing resizing adorner
        void myCanvas_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            // Remove selection on clicking anywhere the window
            if (selected)
            {
                selected = false;
                if (selectedElement != null && aLayer.GetAdorners(selectedElement) != null)
                {
                    // Remove the adorner from the selected element
                    aLayer.Remove(aLayer.GetAdorners(selectedElement)[0]);
                    selectedElement = null;
                }
            }
            //If adding a new link
            if (e.Source.GetType() == typeof(SystemBasicView))
            {
                if (e.Source.GetType() == typeof(SystemBasicView) && _isAddNewLink)
                {
                    if (!_isLinkStarted)
                    {
                        if (_link == null || _link.EndPoint != _link.StartPoint)
                        {
                            _isLinkStarted = true;
                            _linkedSystem = e.Source as SystemBasicView;
                            SystemViewModel svm = (_linkedSystem.DataContext) as SystemViewModel;
                            _tempLink = new TemporaryConnectorViewModel(svm);
                            _tempLink.StartPostion = _linkedSystem.Position;
                            e.Handled = true;
                        }
                    }
                }
                // If a componentView is selected, add adorner layer to it
                else
                {
                    _isDown = true;
                    _startPoint = e.GetPosition(myCanvas);

                    selectedElement = e.Source as UIElement;
                    _originalPoint = selectedElement.TranslatePoint(new Point(0, 0), myCanvas);

                    aLayer = AdornerLayer.GetAdornerLayer(selectedElement);
                    aLayer.Add(new ResizingAdorner(selectedElement, myCanvas));

                    selected = true;
                    e.Handled = true;
                }
            }
        }
Exemplo n.º 2
0
 //added to ComponentSelected Event when Link button is clicked
 public void StartTempConnector(ComponentViewModel start, EventArgs e)
 {
     //Create temporary connector for visual display
     TemporaryConnectorViewModel temp = new TemporaryConnectorViewModel(start as SystemViewModel);
     ComponentVMs.Add(temp);
     //remove handler from event to prevent being called again
     ComponentSelected -= StartTempConnector;
     //create event handler closure to remember start
     ComponentSelectionHandler h = null;
     h = (end, args) =>
     {
         //create real connector with remembered start and new end
         CreateConnector(start as SystemViewModel, end as SystemViewModel);
         //remove h so not called again
         ComponentSelected -= h;
         //remove temporary connector
         ComponentVMs.Remove(temp);
     };
     //add anonymous event handler "h" to ComponentSelected
     ComponentSelected += h;
 }
Exemplo n.º 3
0
 // Handler for drag stopping on user choise
 void DragFinishedMouseHandler(object sender, MouseButtonEventArgs e)
 {
     if(e.Source.GetType() == typeof(SystemBasicView))
     {
         if (_tempLink != null)
         {
             SystemBasicView targetSystem = e.Source as SystemBasicView;
             SystemViewModel s = (targetSystem.DataContext) as SystemViewModel;
             _tempLink.End = s;
             _tempLink.EndPosition = e.GetPosition(this);
             Mouse.OverrideCursor = null;
             _isAddNewLink = false;
             _isLinkStarted = false;
             _context.ComponentVMs.Add(_tempLink);
             _tempLink = null;
             e.Handled = true;
         }
     }
     StopDragging();
     e.Handled = true;
 }