public ViewModelConnection(ViewModelConnector source, ViewModelConnector sink)
 {
     this.ID        = Guid.NewGuid();
     this.Source    = source;
     this.Sink      = sink;
     base.Unloaded += new RoutedEventHandler(Connection_Unloaded);
 }
示例#2
0
        private void HitTesting(Point hitPoint)
        {
            bool hitConnectorFlag = false;

            DependencyObject hitObject = designerCanvas.InputHitTest(hitPoint) as DependencyObject;

            while (hitObject != null &&
                   hitObject != sourceConnector.ParentDesignerItem &&
                   hitObject.GetType() != typeof(ViewModelDesignerCanvas))
            {
                if (hitObject is ViewModelConnector)
                {
                    HitConnector     = hitObject as ViewModelConnector;
                    hitConnectorFlag = true;
                }

                if (hitObject is ViewModelDesignerItem)
                {
                    HitDesignerItem = hitObject as ViewModelDesignerItem;
                    if (!hitConnectorFlag)
                    {
                        HitConnector = null;
                    }
                    return;
                }
                hitObject = VisualTreeHelper.GetParent(hitObject);
            }

            HitConnector    = null;
            HitDesignerItem = null;
        }
示例#3
0
 public ViewModelConnectorAdorner(ViewModelDesignerCanvas designer, ViewModelConnector sourceConnector)
     : base(designer)
 {
     this.designerCanvas  = designer;
     this.sourceConnector = sourceConnector;
     drawingPen           = new Pen(Brushes.LightSlateGray, 2);
     drawingPen.LineJoin  = PenLineJoin.Miter;
     this.Cursor          = Cursors.Cross;
 }
        void thumbDragThumb_DragStarted(object sender, DragStartedEventArgs e)
        {
            this.HitDesignerItem            = null;
            this.HitConnector               = null;
            this.pathGeometry               = null;
            this.Cursor                     = Cursors.Cross;
            this.connection.StrokeDashArray = new DoubleCollection(new double[] { 1, 2 });

            if (sender == sourceDragThumb)
            {
                fixConnector  = connection.Sink;
                dragConnector = connection.Source;
            }
            else if (sender == sinkDragThumb)
            {
                dragConnector = connection.Sink;
                fixConnector  = connection.Source;
            }
        }
示例#5
0
        protected override void OnMouseUp(MouseButtonEventArgs e)
        {
            if (HitConnector != null)
            {
                if (this.sourceConnector.Orientation.ToString() != "Top" && this.HitConnector.Orientation.ToString() == "Top" &&
                    this.sourceConnector.Connections.Count == 0)
                {
                    ModelChildStateObject  SinkconnObj   = new ModelChildStateObject();
                    ModelParentStateObject SourceConnObj = new ModelParentStateObject();

                    DockPanel          Sourcepnl      = (DockPanel)this.sourceConnector.ParentDesignerItem.Content;
                    DockPanel          Sinkpnl        = (DockPanel)this.HitConnector.ParentDesignerItem.Content;
                    ModelConnectorInfo SourceConnInfo = this.sourceConnector.GetInfo();


                    //Bağlanılan state'in Child'ına atanır
                    SinkconnObj.SourcePoint = this.sourceConnector.Position;
                    SinkconnObj.SinkPoint   = this.HitConnector.Position;
                    SinkconnObj.ChildId     = Sinkpnl.Uid;
                    SinkconnObj.ChildType   = Sinkpnl.Tag.ToString();

                    //bağlanan state'in Parent'ına atanır
                    SourceConnObj.SourcePoint  = this.sourceConnector.Position;
                    SourceConnObj.SinkPoint    = this.HitConnector.Position;
                    SourceConnObj.ParentId     = Sourcepnl.Uid;
                    SourceConnObj.ParentType   = Sourcepnl.Tag.ToString();
                    SourceConnObj.PropertyName = SourceConnInfo.ToolTip;

                    //
                    if (ArrangeProperties(SinkconnObj, SourceConnObj, Sourcepnl, Sinkpnl))
                    {
                        ViewModelConnector sourceConnector = this.sourceConnector;
                        ViewModelConnector sinkConnector   = this.HitConnector;
                        sourceConnector.DesignerItemName = Sourcepnl.Tag.ToString();
                        sourceConnector.Name             = SourceConnInfo.ToolTip.ToString();

                        sinkConnector.DesignerItemName = Sinkpnl.Tag.ToString();
                        sinkConnector.Name             = "Top";

                        ViewModelConnection newConnection = new ViewModelConnection(sourceConnector, sinkConnector);
                        newConnection.SourceToolTip        = SourceConnObj.PropertyName;
                        newConnection.SourceDesignerItemId = Sourcepnl.Name;
                        newConnection.SinkDesignerItemId   = Sinkpnl.Name;

                        Canvas.SetZIndex(newConnection, designerCanvas.Children.Count);
                        this.designerCanvas.Children.Add(newConnection);
                    }
                }
                else
                {
                    MessageBox.Show("Bağlantıyı doğru şekilde yapınız.!");
                }
            }
            if (HitDesignerItem != null)
            {
                this.HitDesignerItem.IsDragConnectionOver = false;
            }

            if (this.IsMouseCaptured)
            {
                this.ReleaseMouseCapture();
            }

            AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(this.designerCanvas);

            if (adornerLayer != null)
            {
                adornerLayer.Remove(this);
            }
        }