public ConnectorAdorner( DesignerCanvas designer, Connector sourceConnector )
     : base( designer )
 {
     myDesignerCanvas = designer;
     mySourceConnector = sourceConnector;
     myDrawingPen = new Pen( Brushes.LightSlateGray, 1 );
     myDrawingPen.LineJoin = PenLineJoin.Round;
     Cursor = Cursors.Cross;
 }
        public RubberbandAdorner( DesignerCanvas designerCanvas, Point? dragStartPoint )
            : base( designerCanvas )
        {
            myDesignerCanvas = designerCanvas;
            myStartPoint = dragStartPoint;

            myRubberbandPen = new Pen( Brushes.LightSlateGray, 1 );
            myRubberbandPen.DashStyle = new DashStyle( new double[] { 2 }, 1 );
        }
        private void DragLeft( double scale, DesignerItem item, DesignerCanvas canvas )
        {
            var groupItems = canvas.SelectionService.GetGroupMembers( canvas, item ).Cast<DesignerItem>();

            double groupLeft = Canvas.GetLeft( item ) + item.Width;
            foreach ( var groupItem in groupItems )
            {
                double groupItemLeft = Canvas.GetLeft( groupItem );
                double delta = (groupLeft - groupItemLeft) * (scale - 1);
                Canvas.SetLeft( groupItem, groupItemLeft - delta );
                groupItem.Width = groupItem.ActualWidth * scale;
            }
        }
        public ConnectionAdorner( DesignerCanvas designer, Connection connection )
            : base( designer )
        {
            myDesignerCanvas = designer;

            myAdornerCanvas = new Canvas();
            myAdornerCanvas.Focusable = true;
            myAdornerCanvas.IsEnabled = true;

            myVisualChildren = new VisualCollection( this );
            myVisualChildren.Add( myAdornerCanvas );

            myConnection = connection;
            myConnection.PropertyChanged += AnchorPositionChanged;

            InitializeDragThumbs();

            myDrawingPen = new Pen( Brushes.LightSlateGray, 1 );
            myDrawingPen.LineJoin = PenLineJoin.Round;

            Unloaded += OnUnload;
        }
        private void DragTop( double scale, DesignerItem item, DesignerCanvas canvas )
        {
            var groupItems = canvas.SelectionService.GetGroupMembers( canvas, item ).Cast<DesignerItem>();

            double groupBottom = Canvas.GetTop( item ) + item.Height;
            foreach ( var groupItem in groupItems )
            {
                double groupItemTop = Canvas.GetTop( groupItem );
                double delta = (groupBottom - groupItemTop) * (scale - 1);
                Canvas.SetTop( groupItem, groupItemTop - delta );
                groupItem.Height = groupItem.ActualHeight * scale;
            }
        }
        private void DragBottom( double scale, DesignerItem item, DesignerCanvas canvas )
        {
            IEnumerable<DesignerItem> groupItems = canvas.SelectionService.GetGroupMembers( canvas, item ).Cast<DesignerItem>();
            double groupTop = Canvas.GetTop( item );
            foreach ( DesignerItem groupItem in groupItems )
            {
                double groupItemTop = Canvas.GetTop( groupItem );
                double delta = (groupItemTop - groupTop) * (scale - 1);

                Canvas.SetTop( groupItem, groupItemTop + delta );
                groupItem.Height = groupItem.ActualHeight * scale;
            }
        }