示例#1
0
		bool displayUnitSelector; // Indicates whether Grid UnitSeletor should be displayed.
		
		public GridRailAdorner(DesignItem gridItem, AdornerPanel adornerPanel, Orientation orientation)
		{
			Debug.Assert(gridItem != null);
			Debug.Assert(adornerPanel != null);
			
			this.gridItem = gridItem;
			this.grid = (Grid)gridItem.Component;
			this.adornerPanel = adornerPanel;
			this.orientation = orientation;
			this.displayUnitSelector=false;
			this.unitSelector = new GridUnitSelector(this);
			adornerPanel.Children.Add(unitSelector);
			
			if (orientation == Orientation.Horizontal) {
				this.Height = RailSize;
				previewAdorner = new GridColumnSplitterAdorner(this, gridItem, null, null);
			} else { // vertical
				this.Width = RailSize;
				previewAdorner = new GridRowSplitterAdorner(this, gridItem, null, null);
			}
			unitSelector.Orientation = orientation;
			previewAdorner.IsPreview = true;
			previewAdorner.IsHitTestVisible = false;
			unitSelector.Visibility = Visibility.Hidden;
			
		}
		protected override void OnInitialized()
		{
			base.OnInitialized();
			if (this.ExtendedItem.Parent != null)
			{
				if (this.ExtendedItem.Parent.ComponentType == typeof(Canvas))
				{
					FrameworkElement extendedControl = (FrameworkElement)this.ExtendedItem.Component;
					AdornerPanel adornerPanel = new AdornerPanel();

					// If the Element is rotated/skewed in the grid, then margin handles do not appear
					if (extendedControl.LayoutTransform.Value == Matrix.Identity && extendedControl.RenderTransform.Value == Matrix.Identity)
					{
						_canvas = this.ExtendedItem.Parent.View as Canvas;
						_handles = new[]
						{
							_leftHandle = new CanvasPositionHandle(ExtendedItem, adornerPanel, HandleOrientation.Left),
							_topHandle = new CanvasPositionHandle(ExtendedItem, adornerPanel, HandleOrientation.Top),
							_rightHandle = new CanvasPositionHandle(ExtendedItem, adornerPanel, HandleOrientation.Right),
							_bottomHandle = new CanvasPositionHandle(ExtendedItem, adornerPanel, HandleOrientation.Bottom),
						};
					}

					if (adornerPanel != null)
						this.Adorners.Add(adornerPanel);
				}
			}
		}
		protected override void OnInitialized()
		{
			base.OnInitialized();
			if (this.ExtendedItem.Parent != null)
			{
				if (this.ExtendedItem.Parent.ComponentType == typeof(Grid)){
					FrameworkElement extendedControl = (FrameworkElement)this.ExtendedItem.Component;
					AdornerPanel adornerPanel = new AdornerPanel();
					
					// If the Element is rotated/skewed in the grid, then margin handles do not appear
					if (extendedControl.LayoutTransform.Value == Matrix.Identity && extendedControl.RenderTransform.Value == Matrix.Identity)
					{
						_grid = this.ExtendedItem.Parent.View as Grid;
						_handles = new[]
						{
							_leftHandle = new MarginHandle(ExtendedItem, adornerPanel, HandleOrientation.Left),
							_topHandle = new MarginHandle(ExtendedItem, adornerPanel, HandleOrientation.Top),
							_rightHandle = new MarginHandle(ExtendedItem, adornerPanel, HandleOrientation.Right),
							_bottomHandle = new MarginHandle(ExtendedItem, adornerPanel, HandleOrientation.Bottom),
						};
						foreach(var handle in _handles) {
							handle.MouseLeftButtonDown += OnMouseDown;
							handle.Stub.PreviewMouseLeftButtonDown += OnMouseDown;
						}
						
						
					}
					
					if (adornerPanel != null)
						this.Adorners.Add(adornerPanel);
				}
			}
		}
		/// <summary>
		/// Arranges the adorner element on the specified adorner panel.
		/// </summary>
		public override void Arrange(AdornerPanel panel, UIElement adorner, Size adornedElementSize)
		{
			Point p = new Point(0, 0);
			if (shape is Line)
			{
				var s = shape as Line;
				double x, y;
				
				if (alignment == PlacementAlignment.BottomRight)
				{
					x = s.X2;
					y = s.Y2;
				}
				else
				{
					x = s.X1;
					y = s.Y1;
				}
				p = new Point(x, y);
			} else if (shape is Polygon) {
				var pg = shape as Polygon;
				p = pg.Points[Index];
			} else if (shape is Polyline) {
				var pg = shape as Polyline;
				p = pg.Points[Index];
			}

			var transform = shape.RenderedGeometry.Transform;
			p = transform.Transform(p);
			
			adorner.Arrange(new Rect(p.X - 3.5, p.Y - 3.5, 7, 7));
		}
			public override void Arrange(AdornerPanel panel, UIElement adorner, Size adornedElementSize)
			{
				adorner.Arrange(new Rect(column.Offset - GridRailAdorner.SplitterWidth / 2,
				                         -(GridRailAdorner.RailSize + GridRailAdorner.RailDistance),
				                         GridRailAdorner.SplitterWidth,
				                         GridRailAdorner.RailSize + GridRailAdorner.RailDistance + adornedElementSize.Height));
			}
		int numClicks;           // No of left-button clicks on the element.
		
		public InPlaceEditorExtension()
		{
			adornerPanel=new AdornerPanel();
			isGettingDragged=false;
			isMouseDown=Mouse.LeftButton==MouseButtonState.Pressed ? true : false;
			numClicks=0;
		}
		public CanvasPositionHandle(DesignItem adornedControlItem, AdornerPanel adornerPanel, HandleOrientation orientation)
		{
			Debug.Assert(adornedControlItem != null);
			this.adornedControlItem = adornedControlItem;
			this.adornerPanel = adornerPanel;
			this.orientation = orientation;

			Angle = (double) orientation;
			
			canvas = (Canvas) adornedControlItem.Parent.Component;
			adornedControl = (FrameworkElement) adornedControlItem.Component;
			Stub = new MarginStub(this);
			ShouldBeVisible = true;

			leftDescriptor = DependencyPropertyDescriptor.FromProperty(Canvas.LeftProperty,
			                                                           adornedControlItem.Component.GetType());
			leftDescriptor.AddValueChanged(adornedControl, OnPropertyChanged);
			rightDescriptor = DependencyPropertyDescriptor.FromProperty(Canvas.RightProperty,
			                                                            adornedControlItem.Component.GetType());
			rightDescriptor.AddValueChanged(adornedControl, OnPropertyChanged);
			topDescriptor = DependencyPropertyDescriptor.FromProperty(Canvas.TopProperty,
			                                                          adornedControlItem.Component.GetType());
			topDescriptor.AddValueChanged(adornedControl, OnPropertyChanged);
			bottomDescriptor = DependencyPropertyDescriptor.FromProperty(Canvas.BottomProperty,
			                                                             adornedControlItem.Component.GetType());
			bottomDescriptor.AddValueChanged(adornedControl, OnPropertyChanged);
			widthDescriptor = DependencyPropertyDescriptor.FromProperty(Control.WidthProperty,
			                                                            adornedControlItem.Component.GetType());
			widthDescriptor.AddValueChanged(adornedControl, OnPropertyChanged);
			heightDescriptor = DependencyPropertyDescriptor.FromProperty(Control.WidthProperty,
			                                                             adornedControlItem.Component.GetType());
			heightDescriptor.AddValueChanged(adornedControl, OnPropertyChanged);
			BindAndPlaceHandle();
		}
        protected override void Activate(ModelItem item)
        {
            // Create and add a new adorner panel
            wheelSegmentsPanel = new WheelSegmentAdornerPanel(item);
            Adorners.Add(wheelSegmentsPanel);

            base.Activate(item);
        }
示例#9
0
		/// <summary>
		/// on creation add adornerlayer
		/// </summary>
		public LineExtensionBase()
		{
			_surface = new Canvas();
			adornerPanel = new AdornerPanel(){ MinWidth = 10, MinHeight = 10 };
			adornerPanel.Order = AdornerOrder.Foreground;
			adornerPanel.Children.Add(_surface);
			Adorners.Add(adornerPanel);
		}
//		IPlacementBehavior resizeBehavior;
//		PlacementOperation operation;
//		ChangeGroup changeGroup;
		
		public RenderTransformOriginExtension()
		{
			adornerPanel = new AdornerPanel();
			adornerPanel.Order = AdornerOrder.Foreground;
			this.Adorners.Add(adornerPanel);
			
			CreateRenderTransformOriginThumb();
		}
		private void RemoveAdorner()
		{
			if (adornerPanel != null)
			{
				Adorners.Remove(adornerPanel);
				adornerPanel = null;
			}
		}
示例#12
0
		public RotateThumbExtension()
		{
			adornerPanel = new AdornerPanel();
			adornerPanel.Order = AdornerOrder.Foreground;
			this.Adorners.Add(adornerPanel);
			
			thumb = CreateRotateThumb();
		}
 private void CreateAdornerPanel()
 {
     if (this.adornersPanel == null)
     {
     adornersPanel = new AdornerPanel();
     adornersPanel.IsContentFocusable = true;
     adornersPanel.Children.Add(designerUI);
     Adorners.Add(adornersPanel);
     }
 }
        protected override void OnInitialized()
        {
            base.OnInitialized();

            var adornerPanel = new AdornerPanel();
            var adorner = new PanelMoveAdorner(ExtendedItem);
            AdornerPanel.SetPlacement(adorner, AdornerPlacement.FillContent);
            adornerPanel.Children.Add(adorner);
            Adorners.Add(adornerPanel);
        }
		void DeleteSurface()
		{
			rasterDrawn = false;
			if (surface != null)
			{
				ExtendedItem.Services.DesignPanel.Adorners.Remove(adornerPanel);
				adornerPanel = null;
				surface = null;
			}
		}
示例#16
0
        private void DrawVerticalRectangle(double offset)
        {
            _rectangle.Width = 2;
            _rectangle.Fill  = Brushes.Black;
            var placement = new RelativePlacement(HorizontalAlignment.Left, VerticalAlignment.Stretch)
            {
                XOffset = offset
            };

            AdornerPanel.SetPlacement(_rectangle, placement);
        }
示例#17
0
        protected override void Activate(ModelItem item)
        {
            EnsureAdornerPanelExists();
            AdornerPanel.SetAdornerHorizontalAlignment(adornerView, AdornerHorizontalAlignment.Left);
            AdornerPanel.SetAdornerVerticalAlignment(adornerView, AdornerVerticalAlignment.OutsideTop);
            AdornerPanel.SetAdornerMargin(adornerView, new Thickness(0, 0, 0, 20));

            adornerView.DataContext = new WizardAdornerViewModel(item);

            base.Activate(item);
        }
示例#18
0
        private void DrawHorizontalRectangle(double offset)
        {
            _rectangle.Height = 2;
            _rectangle.Fill   = Brushes.Black;
            var placement = new RelativePlacement(HorizontalAlignment.Stretch, VerticalAlignment.Top)
            {
                YOffset = offset
            };

            AdornerPanel.SetPlacement(_rectangle, placement);
        }
 protected override void OnStopped()
 {
     if (adornerPanel != null)
     {
         designPanel.Adorners.Remove(adornerPanel);
         adornerPanel = null;
     }
     GrayOutDesignerExceptActiveArea.Stop(ref grayOut);
     selectionFrame = null;
     base.OnStopped();
 }
示例#20
0
        protected override void OnInitialized()
        {
            base.OnInitialized();

            var adornerPanel = new AdornerPanel();
            var adorner      = new PanelMoveAdorner(ExtendedItem);

            AdornerPanel.SetPlacement(adorner, AdornerPlacement.FillContent);
            adornerPanel.Children.Add(adorner);
            Adorners.Add(adornerPanel);
        }
 void DeleteSurface()
 {
     if (surface != null)
     {
         ExtendedItem.Services.DesignPanel.Adorners.Remove(adornerPanel);
         adornerPanel  = null;
         surface       = null;
         horizontalMap = null;
         verticalMap   = null;
     }
 }
示例#22
0
 /// <summary>
 /// on creation add adornerlayer
 /// </summary>
 public LineExtensionBase()
 {
     _surface     = new Canvas();
     adornerPanel = new AdornerPanel()
     {
         MinWidth = 10, MinHeight = 10
     };
     adornerPanel.Order = AdornerOrder.Foreground;
     adornerPanel.Children.Add(_surface);
     Adorners.Add(adornerPanel);
 }
        void renderTransformOriginThumb_DragDelta(object sender, DragDeltaEventArgs e)
        {
            var p           = AdornerPanel.GetPlacement(renderTransformOriginThumb) as RelativePlacement;
            var pointAbs    = adornerPanel.RelativeToAbsolute(new Vector(p.XRelativeToContentWidth, p.YRelativeToContentHeight));
            var pointAbsNew = pointAbs + new Vector(e.HorizontalChange, e.VerticalChange);
            var pRel        = adornerPanel.AbsoluteToRelative(pointAbsNew);

            renderTransformOrigin = new Point(pRel.X, pRel.Y);

            this.ExtendedItem.View.SetValue(FrameworkElement.RenderTransformOriginProperty, renderTransformOrigin);
            //this.ExtendedItem.Properties.GetProperty(FrameworkElement.RenderTransformOriginProperty).SetValue(new Point(Math.Round(pRel.X, 4), Math.Round(pRel.Y, 4)));
        }
		protected override void OnDragStarted(MouseEventArgs e)
		{
			adornerPanel = new AdornerPanel();
			adornerPanel.SetAdornedElement(container.View, container);
			
			selectionFrame = new SelectionFrame();
			adornerPanel.Children.Add(selectionFrame);
			
			designPanel.Adorners.Add(adornerPanel);
			
			GrayOutDesignerExceptActiveArea.Start(ref grayOut, services, container.View);
		}
示例#25
0
        protected override void OnDragStarted(MouseEventArgs e)
        {
            adornerPanel = new AdornerPanel();
            adornerPanel.SetAdornedElement(container.View, container);

            selectionFrame = new SelectionFrame();
            adornerPanel.Children.Add(selectionFrame);

            designPanel.Adorners.Add(adornerPanel);

            GrayOutDesignerExceptActiveArea.Start(ref grayOut, services, container.View);
        }
示例#26
0
        private void ScopeElement_KeyDownOrUp(object sender, KeyEventArgs args)
        {
            if (args.IsDown && !args.IsRepeat)
            {
                this.modifierKeyBehaviorManager.TrySwitchModifierKeyBehavior(args);
            }
            bool flag = false;

            if (this.view.Artboard.DesignerView.IsKeyboardFocusWithin)
            {
                foreach (UIElement uiElement in (IEnumerable <UIElement>) this.view.Artboard.DesignerView.Adorners)
                {
                    AdornerPanel adornerPanel = uiElement as AdornerPanel;
                    if (adornerPanel != null && adornerPanel.IsKeyboardFocusWithin && adornerPanel.IsContentFocusable)
                    {
                        flag = true;
                        break;
                    }
                }
            }
            if (this.ActiveBehavior != null && !flag && !this.view.Artboard.IsLiveControlLayerActive)
            {
                this.ActiveBehavior.HandleKey(args);
                if (args.Key == Key.System && (args.SystemKey == Key.LeftAlt || args.SystemKey == Key.RightAlt))
                {
                    if (args.IsRepeat)
                    {
                        args.Handled = true;
                    }
                    else if (args.IsDown)
                    {
                        this.consumeAltKey = false;
                    }
                    else if (this.consumeAltKey)
                    {
                        args.Handled = true;
                    }
                }
                if (this.IsButtonDown)
                {
                    args.Handled = true;
                }
                if (this.view.Artboard.DesignerView.IsMouseCaptureWithin)
                {
                    args.Handled = true;
                }
            }
            if (!args.IsUp)
            {
                return;
            }
            this.modifierKeyBehaviorManager.TrySwitchModifierKeyBehavior(args);
        }
		void CreateSurface(PlacementOperation operation)
		{
			if (ExtendedItem.Services.GetService<IDesignPanel>() != null)
			{
				surface = new Canvas();
				adornerPanel = new AdornerPanel();
				adornerPanel.SetAdornedElement(ExtendedItem.View, ExtendedItem);
				AdornerPanel.SetPlacement(surface, AdornerPlacement.FillContent);
				adornerPanel.Children.Add(surface);
				ExtendedItem.Services.DesignPanel.Adorners.Add(adornerPanel);
			}
		}
示例#28
0
 void CreateSurface(PlacementOperation operation)
 {
     if (ExtendedItem.Services.GetService <IDesignPanel>() != null)
     {
         surface      = new Canvas();
         adornerPanel = new AdornerPanel();
         adornerPanel.SetAdornedElement(ExtendedItem.View, ExtendedItem);
         AdornerPanel.SetPlacement(surface, AdornerPlacement.FillContent);
         adornerPanel.Children.Add(surface);
         ExtendedItem.Services.DesignPanel.Adorners.Add(adornerPanel);
     }
 }
        // The following method is called when the adorner is activated.
        // It creates the adorner control, sets up the adorner panel,
        // and attaches a ModelItem to the adorned control.
        protected override void Activate(ModelItem item)
        {
            // Save the ModelItem and hook into when it changes.
            // This enables updating the slider position when
            // a new Background value is set.
            adornedControlModel = item;
            adornedControlModel.PropertyChanged +=
                new System.ComponentModel.PropertyChangedEventHandler(
                    AdornedControlModel_PropertyChanged);

            // Setup the slider's min and max values.
            opacitySlider.Minimum = 0;
            opacitySlider.Maximum = 1;

            // Setup the adorner panel.
            // All adorners are placed in an AdornerPanel
            // for sizing and layout support.
            AdornerPanel myPanel = this.Panel;

            // The slider extends the full width of the control it adorns.
            AdornerPanel.SetAdornerHorizontalAlignment(
                opacitySlider,
                AdornerHorizontalAlignment.Stretch);

            // Position the adorner above the control it adorns.
            AdornerPanel.SetAdornerVerticalAlignment(
                opacitySlider,
                AdornerVerticalAlignment.OutsideTop);

            // Position the adorner 5 pixels above the control.
            AdornerPanel.SetAdornerMargin(
                opacitySlider,
                new Thickness(0, 0, 0, 5));

            // Initialize the slider when it is loaded.
            opacitySlider.Loaded += new RoutedEventHandler(slider_Loaded);

            // Handle the value changes of the slider control.
            opacitySlider.ValueChanged +=
                new RoutedPropertyChangedEventHandler <double>(
                    slider_ValueChanged);

            opacitySlider.PreviewMouseLeftButtonUp +=
                new System.Windows.Input.MouseButtonEventHandler(
                    slider_MouseLeftButtonUp);

            opacitySlider.PreviewMouseLeftButtonDown +=
                new System.Windows.Input.MouseButtonEventHandler(
                    slider_MouseLeftButtonDown);

            base.Activate(item);
        }
        public BorderForMouseOver()
        {
            adornerPanel       = new AdornerPanel();
            adornerPanel.Order = AdornerOrder.Background;
            this.Adorners.Add(adornerPanel);
            var border = new Border();

            border.BorderThickness = new Thickness(1);
            border.BorderBrush     = Brushes.DodgerBlue;
            border.Margin          = new Thickness(-2);
            AdornerPanel.SetPlacement(border, AdornerPlacement.FillContent);
            adornerPanel.Children.Add(border);
        }
        private void PlaceAdornerPanel()
        {
            AdornerPanel.SetHorizontalStretch(designerUI, AdornerStretch.Stretch);
            AdornerPanel.SetVerticalStretch(designerUI, AdornerStretch.Stretch);

            var placement = new AdornerPlacementCollection();

            placement.PositionRelativeToContentHeight(0, -10);
            placement.PositionRelativeToContentWidth(1, 0);
            placement.SizeRelativeToAdornerDesiredHeight(1, 0);
            placement.SizeRelativeToAdornerDesiredWidth(1, 0);
            AdornerPanel.SetPlacements(designerUI, placement);
        }
		protected override void OnInitialized()
		{
			base.OnInitialized();

			var adornerPanel = new AdornerPanel();
			var border = new Border();
			border.BorderThickness = new Thickness(1);
			border.BorderBrush = new SolidColorBrush(Color.FromRgb(0xCC, 0xCC, 0xCC));
			border.IsHitTestVisible = false;
			AdornerPanel.SetPlacement(border, AdornerPlacement.FillContent);
			adornerPanel.Children.Add(border);
			Adorners.Add(adornerPanel);
		}
示例#33
0
        protected override void OnInitialized()
        {
            base.OnInitialized();

            var adornerPanel = new AdornerPanel();
            var border       = new Border();

            border.BorderThickness  = new Thickness(1);
            border.BorderBrush      = new SolidColorBrush(Color.FromRgb(0xCC, 0xCC, 0xCC));
            border.IsHitTestVisible = false;
            AdornerPanel.SetPlacement(border, AdornerPlacement.FillContent);
            adornerPanel.Children.Add(border);
            Adorners.Add(adornerPanel);
        }
示例#34
0
        void CreateRenderTransformOriginThumb()
        {
            renderTransformOriginThumb        = new RenderTransformOriginThumb();
            renderTransformOriginThumb.Cursor = Cursors.Hand;

            AdornerPanel.SetPlacement(renderTransformOriginThumb,
                                      new RelativePlacement(HorizontalAlignment.Left, VerticalAlignment.Top)
            {
                XRelativeToContentWidth = renderTransformOrigin.X, YRelativeToContentHeight = renderTransformOrigin.Y
            });
            adornerPanel.Children.Add(renderTransformOriginThumb);

            renderTransformOriginThumb.DragDelta += new DragDeltaEventHandler(renderTransformOriginThumb_DragDelta);
        }
示例#35
0
        public void EnsureAdornerPanelExists()
        {
            if (adornerPanel != null)
            {
                return;
            }

            adornerPanel = new AdornerPanel()
            {
                IsContentFocusable = true
            };
            adornerPanel.Children.Add(adornerView);
            Adorners.Add(adornerPanel);
        }
        /// <summary>
        /// Binds the <see cref="HandleLength"/> to the margin and place the handles.
        /// </summary>
        void BindAndPlaceHandle()
        {
            if (!adornerPanel.Children.Contains(this))
            {
                adornerPanel.Children.Add(this);
            }
            if (!adornerPanel.Children.Contains(Stub))
            {
                adornerPanel.Children.Add(Stub);
            }
            RelativePlacement placement = new RelativePlacement();
            Binding           binding   = new Binding();

            binding.Source = adornedControl;
            switch (orientation)
            {
            case HandleOrientation.Left:
                binding.Path      = new PropertyPath("Margin.Left");
                placement         = new RelativePlacement(HorizontalAlignment.Left, VerticalAlignment.Center);
                placement.XOffset = -HandleLengthOffset;
                break;

            case HandleOrientation.Top:
                binding.Path      = new PropertyPath("Margin.Top");
                placement         = new RelativePlacement(HorizontalAlignment.Center, VerticalAlignment.Top);
                placement.YOffset = -HandleLengthOffset;
                break;

            case HandleOrientation.Right:
                binding.Path      = new PropertyPath("Margin.Right");
                placement         = new RelativePlacement(HorizontalAlignment.Right, VerticalAlignment.Center);
                placement.XOffset = HandleLengthOffset;
                break;

            case HandleOrientation.Bottom:
                binding.Path      = new PropertyPath("Margin.Bottom");
                placement         = new RelativePlacement(HorizontalAlignment.Center, VerticalAlignment.Bottom);
                placement.YOffset = HandleLengthOffset;
                break;
            }

            binding.Mode = BindingMode.TwoWay;
            SetBinding(HandleLengthProperty, binding);

            AdornerPanel.SetPlacement(this, placement);
            AdornerPanel.SetPlacement(Stub, placement);

            DecideVisiblity(this.HandleLength);
        }
		private void CreateAdorner()
		{
			if (adornerPanel == null)
			{
				adornerPanel = new AdornerPanel();
				adornerPanel.Order = AdornerOrder.Background;
				var border = new Border();
				border.BorderThickness = new Thickness(1);
				border.BorderBrush = new SolidColorBrush(Color.FromRgb(0xCC, 0xCC, 0xCC));
				border.IsHitTestVisible = false;
				AdornerPanel.SetPlacement(border, AdornerPlacement.FillContent);
				adornerPanel.Children.Add(border);
				Adorners.Add(adornerPanel);
			}
		}
示例#38
0
        void AddAdornerToChildren(AdornerPanel adornerPanel)
        {
            UIElementCollection children = this.Children;
            int i = 0;

            for (i = 0; i < children.Count; i++)
            {
                AdornerPanel p = (AdornerPanel)children[i];
                if (p.Order > adornerPanel.Order)
                {
                    break;
                }
            }
            children.Insert(i, adornerPanel);
        }
		protected override void Activate(ModelItem item, DependencyObject view)
		{
			view.SetValue(Control.BackgroundProperty, Brushes.Aqua);

			adornedControlModel = item;
			adornedControlModel.PropertyChanged += adornedControlModel_PropertyChanged;

			AdornerPanel draggablePointAdornerPanel = new AdornerPanel();

			AdornerPlacementCollection placement = new AdornerPlacementCollection();

			draggablePointAdornerPanel.CoordinateSpace = AdornerCoordinateSpaces.Layout;

			base.Activate(item, view);
		}
示例#40
0
        private void OnRenderTransformOriginPropertyChanged(object sender, EventArgs e)
        {
            var pRel = renderTransformOrigin;

            if (this.ExtendedItem.Properties.GetProperty(FrameworkElement.RenderTransformOriginProperty).IsSet)
            {
                pRel = (Point)this.ExtendedItem.Properties.GetProperty(FrameworkElement.RenderTransformOriginProperty).ValueOnInstance;
            }

            AdornerPanel.SetPlacement(renderTransformOriginThumb,
                                      new RelativePlacement(HorizontalAlignment.Left, VerticalAlignment.Top)
            {
                XRelativeToContentWidth = pRel.X, YRelativeToContentHeight = pRel.Y
            });
        }
        protected override void Activate(ModelItem item, DependencyObject view)
        {
            view.SetValue(Control.BackgroundProperty, Brushes.Aqua);

            adornedControlModel = item;
            adornedControlModel.PropertyChanged += adornedControlModel_PropertyChanged;

            AdornerPanel draggablePointAdornerPanel = new AdornerPanel();

            AdornerPlacementCollection placement = new AdornerPlacementCollection();

            draggablePointAdornerPanel.CoordinateSpace = AdornerCoordinateSpaces.Layout;

            base.Activate(item, view);
        }
示例#42
0
        protected override void Activate(ModelItem item)
        {
            EnsurePanelCreated();
            mAdornedControlModel = item;
            if (mButton != null)
            {
                mButton.ControlModel = item;
                mButton.IsExpanded   = false;

                AdornerPanel.SetAdornerHorizontalAlignment(mButton, AdornerHorizontalAlignment.OutsideRight);
                AdornerPanel.SetAdornerVerticalAlignment(mButton, AdornerVerticalAlignment.Top);
            }

            base.Activate(item);
        }
示例#43
0
 private void CreateAdorner()
 {
     if (adornerPanel == null)
     {
         adornerPanel       = new AdornerPanel();
         adornerPanel.Order = AdornerOrder.Background;
         var border = new Border();
         border.BorderThickness  = new Thickness(1);
         border.BorderBrush      = new SolidColorBrush(Color.FromRgb(0xCC, 0xCC, 0xCC));
         border.IsHitTestVisible = false;
         AdornerPanel.SetPlacement(border, AdornerPlacement.FillContent);
         adornerPanel.Children.Add(border);
         Adorners.Add(adornerPanel);
     }
 }
        DesignerThumb CreateThumb(PlacementAlignment alignment, Cursor cursor)
        {
            DesignerThumb designerThumb = new ResizeThumb(cursor == Cursors.SizeNS, cursor == Cursors.SizeWE);

            designerThumb.Cursor    = cursor;
            designerThumb.Alignment = alignment;
            AdornerPanel.SetPlacement(designerThumb, Place(ref designerThumb, alignment));
            adornerPanel.Children.Add(designerThumb);

            DragListener drag = new DragListener(designerThumb);

            drag.Started   += drag_Started;
            drag.Changed   += drag_Changed;
            drag.Completed += drag_Completed;
            return(designerThumb);
        }
示例#45
0
        ResizeThumb CreateThumb(PlacementAlignment alignment, Cursor cursor)
        {
            ResizeThumb resizeThumb = new ResizeThumbImpl(cursor == Cursors.SizeNS, cursor == Cursors.SizeWE);

            resizeThumb.Cursor    = cursor;
            resizeThumb.Alignment = alignment;
            AdornerPanel.SetPlacement(resizeThumb, Place(ref resizeThumb, alignment));
            adornerPanel.Children.Add(resizeThumb);

            DragListener drag = new DragListener(resizeThumb);

            drag.Started   += new DragHandler(drag_Started);
            drag.Changed   += new DragHandler(drag_Changed);
            drag.Completed += new DragHandler(drag_Completed);
            return(resizeThumb);
        }
        public MarginHandle(DesignItem adornedControlItem, AdornerPanel adornerPanel, HandleOrientation orientation)
        {
            Debug.Assert(adornedControlItem != null);
            this.adornedControlItem = adornedControlItem;
            this.adornerPanel       = adornerPanel;
            this.orientation        = orientation;
            Angle           = (double)orientation;
            grid            = (Grid)adornedControlItem.Parent.Component;
            adornedControl  = (FrameworkElement)adornedControlItem.Component;
            Stub            = new MarginStub(this);
            ShouldBeVisible = true;
            BindAndPlaceHandle();

            adornedControlItem.PropertyChanged += OnPropertyChanged;
            OnPropertyChanged(this.adornedControlItem, new PropertyChangedEventArgs("HorizontalAlignment"));
            OnPropertyChanged(this.adornedControlItem, new PropertyChangedEventArgs("VerticalAlignment"));
        }
 /// <summary>
 /// Checks whether heigth/width have changed and updates the position of editor
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 void PropertyChanged(object sender, PropertyChangedEventArgs e)
 {
     if (textBlock != null)
     {
         if (e.PropertyName == "Width")
         {
             placement.XOffset = Mouse.GetPosition((IInputElement)element).X - Mouse.GetPosition(textBlock).X - 2.8;
             editor.MaxWidth   = Math.Max((ModelTools.GetWidth(element) - placement.XOffset), 0);
         }
         if (e.PropertyName == "Height")
         {
             placement.YOffset = Mouse.GetPosition((IInputElement)element).Y - Mouse.GetPosition(textBlock).Y - 1;
             editor.MaxHeight  = Math.Max((ModelTools.GetHeight(element) - placement.YOffset), 0);
         }
         AdornerPanel.SetPlacement(editor, placement);
     }
 }
示例#48
0
        protected DesignerThumb CreateThumb(PlacementAlignment alignment, Cursor cursor)
        {
            DesignerThumb designerThumb = new DesignerThumb {
                Alignment = alignment, Cursor = cursor, IsPrimarySelection = true
            };

            AdornerPanel.SetPlacement(designerThumb, Place(designerThumb, alignment));

            adornerPanel.Children.Add(designerThumb);

            DragListener            = new DragListener(designerThumb);
            DragListener.Started   += drag_Started;
            DragListener.Changed   += drag_Changed;
            DragListener.Completed += drag_Completed;

            return(designerThumb);
        }
		public ResizeThumbExtension()
		{
			adornerPanel = new AdornerPanel();
			adornerPanel.Order = AdornerOrder.Foreground;
			this.Adorners.Add(adornerPanel);
			
			resizeThumbs = new ResizeThumb[] {
				CreateThumb(PlacementAlignment.TopLeft, Cursors.SizeNWSE),
				CreateThumb(PlacementAlignment.Top, Cursors.SizeNS),
				CreateThumb(PlacementAlignment.TopRight, Cursors.SizeNESW),
				CreateThumb(PlacementAlignment.Left, Cursors.SizeWE),
				CreateThumb(PlacementAlignment.Right, Cursors.SizeWE),
				CreateThumb(PlacementAlignment.BottomLeft, Cursors.SizeNESW),
				CreateThumb(PlacementAlignment.Bottom, Cursors.SizeNS),
				CreateThumb(PlacementAlignment.BottomRight, Cursors.SizeNWSE)
			};
		}
        public ResizeThumbExtension()
        {
            adornerPanel       = new AdornerPanel();
            adornerPanel.Order = AdornerOrder.Foreground;
            this.Adorners.Add(adornerPanel);

            _designerThumbs = new[] {
                CreateThumb(PlacementAlignment.TopLeft, Cursors.SizeNWSE),
                CreateThumb(PlacementAlignment.Top, Cursors.SizeNS),
                CreateThumb(PlacementAlignment.TopRight, Cursors.SizeNESW),
                CreateThumb(PlacementAlignment.Left, Cursors.SizeWE),
                CreateThumb(PlacementAlignment.Right, Cursors.SizeWE),
                CreateThumb(PlacementAlignment.BottomLeft, Cursors.SizeNESW),
                CreateThumb(PlacementAlignment.Bottom, Cursors.SizeNS),
                CreateThumb(PlacementAlignment.BottomRight, Cursors.SizeNWSE)
            };
        }
示例#51
0
        protected override Size ArrangeOverride(Size arrangeBounds)
        {
            AdornerPanel parent = this.Parent as AdornerPanel;

            if (parent != null && parent.AdornedElement != null)
            {
                if (checkWidth)
                {
                    this.ThumbVisible = PlacementOperation.GetRealElementSize(parent.AdornedElement).Width > 14;
                }
                else if (checkHeight)
                {
                    this.ThumbVisible = PlacementOperation.GetRealElementSize(parent.AdornedElement).Height > 14;
                }
            }
            return(base.ArrangeOverride(arrangeBounds));
        }
 public override void BeginPlacement(PlacementOperation operation)
 {
     base.BeginPlacement(operation);
     if (_rects.Count > 0)
         _rects.Clear();
     
     /* Add Rect of all children to _rects */
     var children = this.ExtendedItem.ContentProperty.CollectionElements;
     foreach (var child in children) {
         Point p = child.View.TranslatePoint(new Point(0, 0), this.ExtendedItem.View);
         _rects.Add(new Rect(p, child.View.RenderSize));
     }
     if (_adornerPanel != null && this.ExtendedItem.Services.DesignPanel.Adorners.Contains(_adornerPanel))
         this.ExtendedItem.Services.DesignPanel.Adorners.Remove(_adornerPanel);
     
     /* Place the Rectangle */
     _adornerPanel = new AdornerPanel();
     _rectangle = new Rectangle();
     _adornerPanel.SetAdornedElement(this.ExtendedItem.View, this.ExtendedItem);
     _adornerPanel.Children.Add(_rectangle);
     this.ExtendedItem.Services.DesignPanel.Adorners.Add(_adornerPanel);
 }
示例#53
0
		private void CreateAdorner()
		{
			if (adornerPanel == null) {
				
				if (cachedAdornerPanel == null) {
					cachedAdornerPanel = new AdornerPanel();
					cachedAdornerPanel.Order = AdornerOrder.Background;
					border = new Border();
					border.BorderThickness = new Thickness(1);
					border.BorderBrush = new SolidColorBrush(Color.FromRgb(0xCC, 0xCC, 0xCC));
					border.Background = Brushes.Transparent;
					border.IsHitTestVisible = true;
					border.MouseDown += border_MouseDown;
					border.MinWidth = 1;
					border.MinHeight = 1;

					AdornerPanel.SetPlacement(border, AdornerPlacement.FillContent);
					cachedAdornerPanel.Children.Add(border);
				}
				
				adornerPanel = cachedAdornerPanel;
				Adorners.Add(adornerPanel);
			}
		}
		/// <summary>
		/// Arranges the adorner element on the specified adorner panel.
		/// </summary>
		public override void Arrange(AdornerPanel panel, UIElement adorner, Size adornedElementSize)
		{
			Size adornerSize = CalculateSize(adorner, adornedElementSize);
			adorner.Arrange(new Rect(CalculatePosition(adornedElementSize, adornerSize), adornerSize));
		}
			public override void Arrange(AdornerPanel panel, UIElement adorner, Size adornedElementSize)
			{
				Point p = _element.TranslatePoint(new Point(), panel.AdornedElement);
				var rect = new Rect(p, _element.RenderSize);
				rect.Inflate(3, 1);
				adorner.Arrange(rect);
			}
		void CreateSurface(PlacementOperation operation)
		{
			if (ExtendedItem.Services.GetService<IDesignPanel>() != null) {

				surface = new Canvas();
				adornerPanel = new AdornerPanel();
				adornerPanel.SetAdornedElement(ExtendedItem.View, ExtendedItem);
				AdornerPanel.SetPlacement(surface, AdornerPlacement.FillContent);
				adornerPanel.Children.Add(surface);
				ExtendedItem.Services.DesignPanel.Adorners.Add(adornerPanel);

				BuildMaps(operation);

				if (operation.Type != PlacementType.Resize && operation.PlacedItems.Count == 1) {
					baseline = GetBaseline(operation.PlacedItems[0].Item.View);
				}
			}
		}
		void DeleteSurface()
		{
			if (surface != null) {
				ExtendedItem.Services.DesignPanel.Adorners.Remove(adornerPanel);
				adornerPanel = null;
				surface = null;
				horizontalMap = null;
				verticalMap = null;
			}
		}
示例#58
0
		public SkewThumbExtension()
		{
			adornerPanel = new AdornerPanel();
			adornerPanel.Order = AdornerOrder.BeforeForeground;
			this.Adorners.Add(adornerPanel);
		}
示例#59
0
		public MarginHandle(DesignItem adornedControlItem, AdornerPanel adornerPanel, HandleOrientation orientation)
		{
			Debug.Assert(adornedControlItem!=null);
			this.adornedControlItem = adornedControlItem;
			this.adornerPanel = adornerPanel;
			this.orientation = orientation;
			Angle = (double)orientation;
			grid=(Grid)adornedControlItem.Parent.Component;
			adornedControl=(FrameworkElement)adornedControlItem.Component;
			Stub = new MarginStub(this);
			ShouldBeVisible=true;
			BindAndPlaceHandle();
			
			adornedControlItem.PropertyChanged += OnPropertyChanged;
			OnPropertyChanged(this.adornedControlItem, new PropertyChangedEventArgs("HorizontalAlignment"));
			OnPropertyChanged(this.adornedControlItem, new PropertyChangedEventArgs("VerticalAlignment"));
		}
		protected override void OnStopped()
		{
			if (adornerPanel != null) {
				designPanel.Adorners.Remove(adornerPanel);
				adornerPanel = null;
			}
			GrayOutDesignerExceptActiveArea.Stop(ref grayOut);
			selectionFrame = null;
			base.OnStopped();
		}