/// <summary>
		/// Creates Painter for specified Primitive.
		/// </summary>
		/// <param name="canvas">Canvase to create Painter for.</param>
		/// <param name="element">Element to create Painter for.</param>
		/// <returns>Created Painter Instance.</returns>
		public static IPainter CreatePainter(CommonDesignerCanvas canvas, ElementBase element)
		{
			if (canvas == null)
				throw new ArgumentNullException("canvas");
			if (element == null)
				throw new ArgumentNullException("element");
			IPrimitive primitive = element as IPrimitive;
			if (primitive == null)
				throw new ArgumentException("Element must be a Primitive", "element");

			Func<CommonDesignerCanvas, ElementBase, IPainter> factoryMethod = null;
			if (factoryMethods.TryGetValue(primitive.Primitive, out factoryMethod))
			{
				// The following Object contains a Tooltip Flag to be copied from Source Element to determine Visibility:
				ToolTipFlagContainer tooltipFlag = new ToolTipFlagContainer();
				ElementBase.Copy(element, tooltipFlag);

				IPainter wrappedPainter = factoryMethod(canvas, element);
				PrimitiveToolTipViewModel tooltip = new PrimitiveToolTipViewModel()
				{
					Name = element.PresentationName,
				};
				return new PrimitivePainter(wrappedPainter)
				{
					ToolTip = tooltipFlag.ShowTooltip ? tooltip : null,
				};
			}
			else
				throw new InvalidOperationException("Unknown Primitive Type");
		}
Beispiel #2
0
		public PresenterItem CreatePresenterItem(ElementBase elementBase)
		{
			var presenterItem = new PresenterItem(elementBase);
			Add(presenterItem);
			presenterItem.CreatePainter();
			return presenterItem;
		}
		public DesignerItemRectangleSubPlan(ElementBase element)
			: base(element)
		{

			Title = Helper.GetSubPlanTitle((IElementSubPlan)Element);
			Group = Helper.SubPlanAlias;
			IconSource = "/Controls;component/Images/CMap.png";
		}
Beispiel #4
0
		public static PointCollection GetRealPoints(ElementBase element)
		{
			if (element is ElementBaseShape)
				return ((ElementBaseShape)element).Points;
			else if (element is ElementBaseRectangle)
				return GetPoints(((ElementBaseRectangle)element).GetRectangle());
			return new PointCollection();
		}
Beispiel #5
0
		public DesignerItemBase(ElementBase element)
			: base(element)
		{
			_contextMenu = null;
			ShowPropertiesCommand = new RelayCommand(OnShowProperties);
			DeleteCommand = new RelayCommand(OnDelete);
			DeleteCurrentCommand = new RelayCommand(OnDeleteCurrent);
		}
Beispiel #6
0
		public PresenterItem(ElementBase element)
			: base(element)
		{
			Cursor = null;
			ShowBorderOnMouseOver = false;
			IsEnabled = true;
			IsPoint = false;
			IsVisibleLayout = !element.IsHidden;
		}
Beispiel #7
0
		public static PointCollection GetPoints(ElementBase element)
		{
			return
				element is ElementBaseShape ?
					Normalize(((ElementBaseShape)element).GetRectangle().TopLeft, ((ElementBaseShape)element).Points, element.BorderThickness) :
				element is ElementBaseRectangle ?
					Normalize(((ElementBaseRectangle)element).GetRectangle(), element.BorderThickness) :
					new PointCollection();
		}
		public PositionSettingsViewModel(ElementBase element, CommonDesignerCanvas designerCanvas)
		{
			ElementBase = element;
			DesignerCanvas = designerCanvas;
			var rectangle = ElementBase.GetRectangle();
			Left = Math.Round(rectangle.X, 3).ToString();
			Top = Math.Round(rectangle.Y, 3).ToString();
			ElementWidth = rectangle.Width;
			ElementHeight = rectangle.Height;
		}
Beispiel #9
0
		public static IPainter Create(CommonDesignerCanvas designerCanvas, ElementBase element)
		{
			Type type = element.GetType();
			var primitive = element as IPrimitive;
			if (primitive != null && primitive.Primitive != Primitive.NotPrimitive)
				return (IPainter)Activator.CreateInstance(_painters[primitive.Primitive], designerCanvas, element);
			var args = new PainterFactoryEventArgs(designerCanvas, element);
			EventService.EventAggregator.GetEvent<PainterFactoryEvent>().Publish(args);
			return args.Painter ?? new DefaultPainter(designerCanvas, element);
		}
		ElementError CreateElementError(Guid planUid, ElementBase element)
		{
			return new ElementError()
			{
				PlanUID = planUid,
				Error = "Несвязанная ссылка на план",
				Element = element,
				IsCritical = false,
				ImageSource = "/Controls;component/Images/CMap.png"
			};
		}
		public DesignerItemRectangle(ElementBase element)
			: base(element)
		{
			SetResizeChrome(new ResizeChromeRectangle(this));
			if (Element.IsExactly<ElementRectangle>() || Element.IsExactly<ElementEllipse>() || Element.IsExactly<ElementTextBlock>())
			{
				Title = element.PresentationName;
				Group = LayerGroupService.ElementAlias;
				ClassName = Element.IsExactly<ElementRectangle>() ? "Прямоугольник" : (Element.IsExactly<ElementEllipse>() ? "Эллипс" : "Надпись");
			}
		}
Beispiel #12
0
		public DesignerItemShape(ElementBase element)
			: base(element)
		{
			SetResizeChrome(new ResizeChromeShape(this));
			if (Element.IsExactly<ElementPolygon>() || Element.IsExactly<ElementPolyline>())
			{
				Title = Element.PresentationName;
				Group = LayerGroupService.ElementAlias;
				ClassName = Element.IsExactly<ElementPolygon>() ? "Многоугольник" : "Линия";
			}
		}
Beispiel #13
0
		protected override void RemoveElement(ElementBase elementBase)
		{
			if (elementBase is ElementPassCardImageProperty)
				PassCardTemplate.ElementImageProperties.Remove(elementBase as ElementPassCardImageProperty);
			else if (elementBase is ElementPassCardTextProperty)
				PassCardTemplate.ElementTextProperties.Remove(elementBase as ElementPassCardTextProperty);
			else if (elementBase is ElementRectangle)
				PassCardTemplate.ElementRectangles.Remove(elementBase as ElementRectangle);
			else if (elementBase is ElementEllipse)
				PassCardTemplate.ElementEllipses.Remove(elementBase as ElementEllipse);
			else if (elementBase is ElementPolygon)
				PassCardTemplate.ElementPolygons.Remove(elementBase as ElementPolygon);
			else if (elementBase is ElementPolyline)
				PassCardTemplate.ElementPolylines.Remove(elementBase as ElementPolyline);
			else if (elementBase is ElementTextBlock)
				PassCardTemplate.ElementTextBlocks.Remove(elementBase as ElementTextBlock);
		}
Beispiel #14
0
		protected override DesignerItem AddElement(ElementBase elementBase)
		{
			if (elementBase is ElementPassCardImageProperty)
				PassCardTemplate.ElementImageProperties.Add(elementBase as ElementPassCardImageProperty);
			else if (elementBase is ElementPassCardTextProperty)
				PassCardTemplate.ElementTextProperties.Add(elementBase as ElementPassCardTextProperty);
			else if (elementBase is ElementRectangle)
				PassCardTemplate.ElementRectangles.Add(elementBase as ElementRectangle);
			else if (elementBase is ElementEllipse)
				PassCardTemplate.ElementEllipses.Add(elementBase as ElementEllipse);
			else if (elementBase is ElementPolygon)
				PassCardTemplate.ElementPolygons.Add(elementBase as ElementPolygon);
			else if (elementBase is ElementPolyline)
				PassCardTemplate.ElementPolylines.Add(elementBase as ElementPolyline);
			else if (elementBase is ElementTextBlock)
				PassCardTemplate.ElementTextBlocks.Add(elementBase as ElementTextBlock);
			return Create(elementBase);
		}
Beispiel #15
0
		public PolygonZonePainter(CommonDesignerCanvas designerCanvas, ElementBase element)
			: base(designerCanvas, element)
		{
			_toolTip = new ImageTextTooltipViewModel();
			if (element is ElementPolygonGKZone)
				_toolTip.ImageSource = "/Controls;component/Images/Zone.png";
			else if (element is ElementPolygonGKSKDZone)
				_toolTip.ImageSource = "/Controls;component/Images/SKDZone.png";
			else if (element is ElementPolygonGKGuardZone)
				_toolTip.ImageSource = "/Controls;component/Images/GuardZone.png";
			else if (element is ElementPolygonGKDirection)
				_toolTip.ImageSource = "/Controls;component/Images/BDirection.png";
			else if (element is ElementPolygonGKMPT)
				_toolTip.ImageSource = "/Controls;component/Images/BMPT.png";
			else if (element is ElementPolygonGKPumpStation)
				_toolTip.ImageSource = "/Controls;component/Images/BPumpStation.png";
			else if (element is ElementPolygonGKDelay)
				_toolTip.ImageSource = "/Controls;component/Images/Delay.png";
		}
Beispiel #16
0
		protected override void RemoveElement(ElementBase elementBase)
		{
			if (elementBase is ElementRectangle)
				Plan.ElementRectangles.Remove(elementBase as ElementRectangle);
			else if (elementBase is ElementEllipse)
				Plan.ElementEllipses.Remove(elementBase as ElementEllipse);
			else if (elementBase is ElementPolygon)
				Plan.ElementPolygons.Remove(elementBase as ElementPolygon);
			else if (elementBase is ElementPolyline)
				Plan.ElementPolylines.Remove(elementBase as ElementPolyline);
			else if (elementBase is ElementTextBlock)
				Plan.ElementTextBlocks.Remove(elementBase as ElementTextBlock);
			else if (elementBase is ElementTextBox)
				Plan.ElementTextBoxes.Remove(elementBase as ElementTextBox);
			else if (elementBase is ElementRectangleSubPlan)
				Plan.ElementRectangleSubPlans.Remove(elementBase as ElementRectangleSubPlan);
			else if (elementBase is ElementPolygonSubPlan)
				Plan.ElementPolygonSubPlans.Remove(elementBase as ElementPolygonSubPlan);
			else
				((PlanDesignerViewModel)PlanDesignerViewModel).PlansViewModel.ElementRemoved(elementBase);
		}
Beispiel #17
0
		public static DesignerItem Create(ElementBase element)
		{
			var args = new DesignerItemFactoryEventArgs(element);
			ServiceFactoryBase.Events.GetEvent<DesignerItemFactoryEvent>().Publish(args);
			if (args.DesignerItem == null)
				switch (element.Type)
				{
					case ElementType.Point:
						args.DesignerItem = new DesignerItemPoint(element);
						break;
					case ElementType.Rectangle:
						args.DesignerItem = new DesignerItemRectangle(element);
						break;
					case ElementType.Polygon:
					case ElementType.Polyline:
						args.DesignerItem = new DesignerItemShape(element);
						break;
				}
			if (args.DesignerItem == null)
				args.DesignerItem = new DesignerItemBase(element);
			return args.DesignerItem;
		}
Beispiel #18
0
		protected override DesignerItem AddElement(ElementBase elementBase)
		{
			if (elementBase is ElementRectangle)
				Plan.ElementRectangles.Add(elementBase as ElementRectangle);
			else if (elementBase is ElementEllipse)
				Plan.ElementEllipses.Add(elementBase as ElementEllipse);
			else if (elementBase is ElementPolygon)
				Plan.ElementPolygons.Add(elementBase as ElementPolygon);
			else if (elementBase is ElementPolyline)
				Plan.ElementPolylines.Add(elementBase as ElementPolyline);
			else if (elementBase is ElementTextBlock)
				Plan.ElementTextBlocks.Add(elementBase as ElementTextBlock);
			else if (elementBase is ElementTextBox)
				Plan.ElementTextBoxes.Add(elementBase as ElementTextBox);
			else if (elementBase is ElementRectangleSubPlan)
				Plan.ElementRectangleSubPlans.Add(elementBase as ElementRectangleSubPlan);
			else if (elementBase is ElementPolygonSubPlan)
				Plan.ElementPolygonSubPlans.Add(elementBase as ElementPolygonSubPlan);
			else
				((PlanDesignerViewModel)PlanDesignerViewModel).PlansViewModel.ElementAdded(elementBase);

			return Create(elementBase);
		}
		public void ElementRemoved(ElementBase element)
		{
			foreach (var planExtension in _planExtensions)
				if (planExtension.ElementRemoved(SelectedPlan.Plan, element))
					break;
		}
		public MonitorPolygonSubPlanPresenterItem(ElementBase element)
			: base(element)
		{
			;
		}
Beispiel #21
0
		public ProcedurePainter(CommonDesignerCanvas designerCanvas, ElementBase element)
			: base(designerCanvas, element)
		{
			_toolTip = new ImageTextTooltipViewModel();
			_toolTip.ImageSource = "/Controls;component/Images/ProcedureYellow.png";
		}
Beispiel #22
0
		public PlanLinkViewModel(RubezhAPI.Models.Plan plan, ElementBase elementBase)
		{
			PlanUID = plan.UID;
			ElementUID = elementBase.UID;
			Name = plan.Caption;
		}
Beispiel #23
0
		public ElementViewModel(ElementBase elementBase)
		{
			ElementBase = elementBase;
			ElementType = ElementBase.GetType();
		}
Beispiel #24
0
		void OnElementSelected(ElementBase element)
		{
			Select(element.UID);
		}
Beispiel #25
0
		public override void CreateDesignerItem(ElementBase element)
		{
			CreatePresenterItem(element);
		}
Beispiel #26
0
		public TextBlockPainter(CommonDesignerCanvas designerCanvas, ElementBase element)
			: base(designerCanvas, element)
		{
			_textDrawing = new GeometryDrawing(null, null, null);
		}
		private bool AllowPaste(ElementBase element)
		{
			var vizualizationElement = element as IMultipleVizualization;
			if (vizualizationElement != null
				&& !vizualizationElement.AllowMultipleVizualization
				&& this.clipboard.SourceAction == ClipboardSourceAction.Copy)
				return false;
			return true;
		}
Beispiel #28
0
		public DesignerItemPoint(ElementBase element)
			: base(element)
		{
			SetResizeChrome(new ResizeChromePoint(this));
		}
Beispiel #29
0
		public PointPainter(CommonDesignerCanvas designerCanvas, ElementBase element)
			: base(designerCanvas, element)
		{
		}
Beispiel #30
0
		public void ResetElement(ElementBase element)
		{
			this.primitivePainter.ResetElement(element);
		}