public ConnectorAdorner(DesignCanvas canvas, Connector sourceConnector)
     : base(canvas)
 {
     this.designCanvas = canvas;
     this.sourceConnector = sourceConnector;
     drawingPen = new Pen(Brushes.LightSlateGray, 1);
     drawingPen.LineJoin = PenLineJoin.Round;
     this.Cursor = Cursors.Cross;
 }
示例#2
0
        public Connection(Connector source, Connector sink,ConnectionShapeInfo connectionShapeInfo=null)
        {
            var connectionShapInfo = connectionShapeInfo;
            var designConnectionInfo = (DesignConnectionInfo)null;
            if (connectionShapeInfo != null)
            {
                designConnectionInfo=new DesignConnectionInfo(connectionShapInfo);
            }
            else
            {
                var shapInfo = new ConnectionShapeInfo();
                designConnectionInfo = new DesignConnectionInfo(shapInfo);
            }
            var currentDate = DateTime.Now;
            designConnectionInfo.CreateDate = currentDate;
            designConnectionInfo.ModifyDate = currentDate;
            designConnectionInfo.SourceID = source.ParentDesignItem.ID;
            designConnectionInfo.SourceOrientation = source.Orientation;
            designConnectionInfo.SinkID = sink.ParentDesignItem.ID;
            designConnectionInfo.SinkOrientation = sink.Orientation;
            this.ShapeInfoUnit = new ConnectionShapeInfoUnit(designConnectionInfo);
            if (designConnectionInfo.SourceSvgBuffer != null)
            {
                using (var stream = new MemoryStream(designConnectionInfo.SourceSvgBuffer))
                {
                    (this.ShapeInfoUnit as ConnectionShapeInfoUnit).SourceSvgDrawing = SvgHelper.CreateSvgViewBox(stream);
                }
            }
            if (designConnectionInfo.SinkSvgBuffer != null)
            {
                using (var stream = new MemoryStream(designConnectionInfo.SinkSvgBuffer))
                {
                    (this.ShapeInfoUnit as ConnectionShapeInfoUnit).SinkSvgDrawing = SvgHelper.CreateSvgViewBox(stream);
                }
            }
            this.SetBinding(Connection.TextProperty, BindingHelper.CreateBinding(designConnectionInfo, "Text"));
            this.SetBinding(DesignCanvas.ZIndexProperty, BindingHelper.CreateBinding(designConnectionInfo, "ZIndex"));
            designConnectionInfo.PropertyChanged += (obj, e) =>
            {
                if (e.PropertyName.Equals("PathGeometry"))
                {
                    UpdateAnchorPosition();
                }
            };

            this.ID = Guid.NewGuid();
            this.Source = source;
            this.Sink = sink;
            //base.Unloaded += new RoutedEventHandler(Connection_Unloaded); //Resolve the issue of swithing tabItem
            base.SelectChanged += (a, b) =>
            {
                if (this.IsSelected) ShowAdorner();
                else HideAdorner();
            };
        }
        void thumbDragThumb_DragStarted(object sender, DragStartedEventArgs e)
        {
            this.HitDesignItem = 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;
            }
        }