Example #1
0
		public void Initialize(Plan plan)
		{
			Plan = plan;
			OnPropertyChanged(() => Plan);
			IsNotEmpty = Plan != null;
			using (new TimeCounter("\tPlanDesignerViewModel.Initialize: {0}"))
			using (new WaitWrapper())
			{
				using (new TimeCounter("\t\tDesignerCanvas.Initialize: {0}"))
					((DesignerCanvas)DesignerCanvas).Initialize(plan);
				if (Plan != null)
				{
					using (new TimeCounter("\t\tDesignerItem.Create: {0}"))
					{
						foreach (var elementBase in PlanEnumerator.Enumerate(Plan))
							DesignerCanvas.Create(elementBase);
						foreach (var element in PlansViewModel.LoadPlan(Plan))
							DesignerCanvas.Create(element);
						DesignerCanvas.UpdateZIndex();
					}
					using (new TimeCounter("\t\tPlanDesignerViewModel.OnUpdated: {0}"))
						Update();
				}
			}
			ResetHistory();
		}
Example #2
0
		public static ObservableCollection<ElementViewModel> GetAllElements(Plan plan)
		{
			var elements = new ObservableCollection<ElementViewModel>();
			var allElements = new List<ElementBase>(plan.ElementRectangles);
			allElements.AddRange(plan.ElementEllipses);
			allElements.AddRange(plan.ElementPolylines);
			allElements.AddRange(plan.ElementTextBlocks);
			allElements.AddRange(plan.ElementPolygons);
			allElements.AddRange(plan.ElementExtensions);
			allElements.AddRange(plan.ElementGKDevices);
			allElements.AddRange(plan.ElementRectangleGKZones);
			allElements.AddRange(plan.ElementRectangleGKGuardZones);
			allElements.AddRange(plan.ElementRectangleGKSKDZones);
			allElements.AddRange(plan.ElementRectangleGKDirections);
			allElements.AddRange(plan.ElementRectangleGKMPTs);
			allElements.AddRange(plan.ElementRectangleGKDelays);
			allElements.AddRange(plan.ElementRectangleGKPumpStations);
			allElements.AddRange(plan.ElementPolygonGKZones);
			allElements.AddRange(plan.ElementPolygonGKGuardZones);
			allElements.AddRange(plan.ElementPolygonGKSKDZones);
			allElements.AddRange(plan.ElementPolygonGKDirections);
			allElements.AddRange(plan.ElementPolygonGKMPTs);
			allElements.AddRange(plan.ElementPolygonGKDelays);
			allElements.AddRange(plan.ElementPolygonGKPumpStations);
			allElements.AddRange(plan.ElementRectangleSubPlans);
			allElements.AddRange(plan.ElementPolygonSubPlans);
			allElements.AddRange(plan.ElementTextBoxes);
			allElements.AddRange(plan.ElementGKDoors);
			foreach (var elementRectangle in allElements)
			{
				elements.Add(new ElementViewModel(elementRectangle));
			}
			return elements;
		}
Example #3
0
		public static Color GetSubPlanColor(Plan plan)
		{
			Color color = Colors.Black;
			if (plan != null)
				color = Colors.Green;
			return color;
		}
Example #4
0
		public PlanLinkViewModel(Plan plan, Guid elementUID)
		{
			ElementUID = elementUID;
			PlanUID = plan.UID;
			PlanName = plan.Caption;
			ShowOnPlanCommand = new RelayCommand(OnShowOnPlan); 
		}
Example #5
0
		public static IEnumerable<ElementBase> EnumeratePrimitives(Plan plan)
		{
			return new ElementBase[0]
				.Concat(plan.ElementRectangles)
				.Concat(plan.ElementEllipses)
				.Concat(plan.ElementTextBlocks)
				.Concat(plan.ElementTextBoxes)
				.Concat(plan.ElementPolygons)
				.Concat(plan.ElementPolylines);
		}
Example #6
0
		private void ValidatePlanZones(Plan plan)
		{
			Errors.AddRange(GKPlanExtension.Instance.FindDuplicateItems<GKZone, IElementReference>(plan.ElementPolygonGKZones, plan.ElementRectangleGKZones).Select(item => new ZoneValidationError(item, GetErrorMessage("Зона", plan), ValidationErrorLevel.Warning, true, plan.UID)));
			Errors.AddRange(GKPlanExtension.Instance.FindDuplicateItems<GKGuardZone, IElementReference>(plan.ElementPolygonGKGuardZones, plan.ElementRectangleGKGuardZones).Select(item => new GuardZoneValidationError(item, GetErrorMessage("Охранная зона", plan), ValidationErrorLevel.Warning, true, plan.UID)));
			Errors.AddRange(GKPlanExtension.Instance.FindDuplicateItems<GKSKDZone, IElementReference>(plan.ElementPolygonGKSKDZones, plan.ElementRectangleGKSKDZones).Select(item => new SKDZoneValidationError(item, GetErrorMessage("Зона СКД", plan), ValidationErrorLevel.Warning, true, plan.UID)));
			Errors.AddRange(GKPlanExtension.Instance.FindDuplicateItems<GKPumpStation, IElementReference>(plan.ElementPolygonGKPumpStations, plan.ElementRectangleGKPumpStations).Select(item => new PumpStationValidationError(item, GetErrorMessage("Насосная станция", plan), ValidationErrorLevel.Warning, true, plan.UID)));
			Errors.AddRange(GKPlanExtension.Instance.FindDuplicateItems<GKDelay, IElementReference>(plan.ElementPolygonGKDelays, plan.ElementRectangleGKDelays).Select(item => new DelayValidationError(item, GetErrorMessage("Задержка", plan), ValidationErrorLevel.Warning, true, plan.UID)));
			Errors.AddRange(GKPlanExtension.Instance.FindDuplicateItems<GKDirection, IElementReference>(plan.ElementPolygonGKDirections, plan.ElementRectangleGKDirections).Select(item => new DirectionValidationError(item, GetErrorMessage("Направление", plan), ValidationErrorLevel.Warning, true, plan.UID)));
			Errors.AddRange(GKPlanExtension.Instance.FindDuplicateItems<GKMPT, IElementReference>(plan.ElementPolygonGKMPTs, plan.ElementRectangleGKMPTs).Select(item => new MPTValidationError(item, GetErrorMessage("МПТ", plan), ValidationErrorLevel.Warning, true, plan.UID)));
			Errors.AddRange(GKPlanExtension.Instance.FindDuplicateItems<GKDoor, IElementReference>(plan.ElementGKDoors).Select(item => new DoorValidationError(item, GetErrorMessage("Точка доступа", plan), ValidationErrorLevel.Warning, true, plan.UID)));
		}
		private void AddPlan(Plan plan, PlanViewModel parentPlanViewModel)
		{
			var planViewModel = new PlanViewModel(plan);
			_map.Add(plan.UID, planViewModel);
			if (parentPlanViewModel == null)
				Plans.Add(planViewModel);
			else
				parentPlanViewModel.AddChild(planViewModel);
			foreach (var childPlan in plan.Children)
				AddPlan(childPlan, planViewModel);
		}
		private void AddPlan(Plan planFolder, PlanViewModel parentPlanViewModel)
		{
			var planViewModel = new PlanViewModel(planFolder);
			if (parentPlanViewModel == null)
				Plans.Add(planViewModel);
			else
				parentPlanViewModel.AddChild(planViewModel);
			var plan = planFolder as Plan;
			if (plan != null && plan.UID == _elementSubPlan.PlanUID)
				SelectedPlan = planViewModel;

			foreach (var childPlan in planFolder.Children)
				AddPlan(childPlan, planViewModel);
		}
Example #9
0
		public PlanMonitor(Plan plan, Action callBack)
			: base(plan, callBack)
		{
			Plan.ElementGKDevices.ForEach(item => Initialize(item));
			Plan.ElementRectangleGKZones.ForEach(item => Initialize(item));
			Plan.ElementPolygonGKZones.ForEach(item => Initialize(item));
			Plan.ElementRectangleGKGuardZones.ForEach(item => InitializeGuard(item));
			Plan.ElementPolygonGKGuardZones.ForEach(item => InitializeGuard(item));
			Plan.ElementRectangleGKSKDZones.ForEach(item => InitializeSKD(item));
			Plan.ElementPolygonGKSKDZones.ForEach(item => InitializeSKD(item));
			Plan.ElementRectangleGKDelays.ForEach(item => Initialize(item));
			Plan.ElementPolygonGKDelays.ForEach(item => Initialize(item));
			Plan.ElementRectangleGKDirections.ForEach(item => Initialize(item));
			Plan.ElementPolygonGKDirections.ForEach(item => Initialize(item));
			Plan.ElementRectangleGKMPTs.ForEach(item => Initialize(item));
			Plan.ElementPolygonGKMPTs.ForEach(item => Initialize(item));
			Plan.ElementGKDoors.ForEach(item => Initialize(item));
		}
Example #10
0
		private void AddPlan(Plan plan, PlanViewModel parentPlanViewModel)
		{
			if ((_filter == null || _filter.Contains(plan.UID)) && !(_isAllPlan && plan.IsNotShowPlan))
			{
				var planViewModel = new PlanViewModel(_plansViewModel, plan);
				planViewModel.IsExpanded = true;
				AllPlans.Add(planViewModel);
				if (parentPlanViewModel == null)
					Plans.Add(planViewModel);
				else
					parentPlanViewModel.AddChild(planViewModel);
				if (SelectedPlan == null && !planViewModel.IsFolder)
					SelectedPlan = planViewModel;

				foreach (var childPlan in plan.Children)
					AddPlan(childPlan, planViewModel);
			}
		}
		public DesignerPropertiesViewModel(Plan plan)
		{
			Title = "Свойства элемента: План";
			if (plan == null)
			{
				plan = new Plan();
				var width = RegistrySettingsHelper.GetDouble("Administrator.Plans.DefaultWidth");
				var height = RegistrySettingsHelper.GetDouble("Administrator.Plans.DefaultHeight");
				var color = RegistrySettingsHelper.GetColor("Administrator.Plans.DefaultColor");
				if (width != 0)
					plan.Width = width;
				if (height != 0)
					plan.Height = height;
				plan.BackgroundColor = color;
			}
			Plan = plan;
			ImagePropertiesViewModel = new ImagePropertiesViewModel(Plan);
			IsEnable = ImagePropertiesViewModel.ImageBrush != null;
			ImagePropertiesViewModel.UpdateProperty += ImagePropertiesViewModel_UpdateProperty;
			CopyProperties();
		}
		void ClearElements(Plan plan)
		{
			var elements = plan.ElementGKDevices.Cast<IElementReference>()
					.Union(plan.ElementGKDoors)
					.Union(plan.ElementPolygonGKDelays)
					.Union(plan.ElementPolygonGKPumpStations)
					.Union(plan.ElementPolygonGKDirections)
					.Union(plan.ElementPolygonGKGuardZones)
					.Union(plan.ElementPolygonGKMPTs)
					.Union(plan.ElementPolygonGKSKDZones)
					.Union(plan.ElementPolygonGKZones)
					.Union(plan.ElementRectangleGKDelays)
					.Union(plan.ElementRectangleGKPumpStations)
					.Union(plan.ElementRectangleGKDirections)
					.Union(plan.ElementRectangleGKGuardZones)
					.Union(plan.ElementRectangleGKMPTs)
					.Union(plan.ElementRectangleGKSKDZones)
					.Union(plan.ElementRectangleGKZones);
			elements.ForEach(element => element.ItemUID = Guid.Empty);
			plan.Children.ForEach(child => ClearElements(child));
		}
		private void OnPlanPaste(Plan plan, bool isRoot)
		{
			using (new WaitWrapper())
			{
				var planViewModel = AddPlan(plan, isRoot ? null : SelectedPlan);
				if (isRoot)
					ClientManager.PlansConfiguration.Plans.Add(plan);
				else
				{
					SelectedPlan.Plan.Children.Add(plan);
					SelectedPlan.Update();
				}
				planViewModel.ExpandChildren();
				SelectedPlan = planViewModel;
				ClientManager.PlansConfiguration.Update();
				ServiceFactory.SaveService.PlansChanged = true;
				ServiceFactoryBase.Events.GetEvent<PlansConfigurationChangedEvent>().Publish(null);
			}
		}
Example #14
0
		private void Update(Plan plan)
		{
			CanvasWidth = plan.Width;
			CanvasHeight = plan.Height;
			CanvasBackground = PainterCache.GetBrush(plan);
		}
Example #15
0
		public static void SetSubPlan(IElementSubPlan element, Plan plan)
		{
			element.PlanUID = plan == null ? Guid.Empty : plan.UID;
			element.Caption = plan == null ? string.Empty : plan.Caption;
			element.BackgroundColor = GetSubPlanColor(plan);
		}
Example #16
0
		public static IEnumerable<ElementBase> Enumerate(Plan plan)
		{
			return EnumeratePrimitives(plan)
				.Union(plan.ElementRectangleSubPlans)
				.Union(plan.ElementPolygonSubPlans);
		}
Example #17
0
		public PlanViewModel(Plan plan)
		{
			Plan = plan;
		}
Example #18
0
		public PlanMonitor(Plan plan, Action callBack)
			: base(plan, callBack)
		{
			Initialize();
		}
		private void RenewPlan(Plan plan)
		{
			plan.UID = Guid.NewGuid();
			foreach (var child in plan.Children)
				RenewPlan(child);
		}
Example #20
0
		private string GetErrorMessage(string typeName, Plan plan)
		{
			return string.Format("{0} дублируется на плане {1}", typeName, plan.Caption);
		}
Example #21
0
		public PlanLinkViewModel(Plan plan, Guid elementBaseUID)
		{
			ShowOnPlanCommand = new RelayCommand(OnShowOnPlan);
			Plan = plan;
			ElementUID = elementBaseUID;
		}
		public IEnumerable<ElementBase> LoadPlan(Plan plan)
		{
			foreach (var planExtension in _planExtensions)
				foreach (var element in planExtension.LoadPlan(plan))
					yield return element;
		}
Example #23
0
		public void Initialize(Plan plan)
		{
			Plan = plan;
			Initialize();
		}
		//private static void UpdateZoneType(IElementZone elementZone, GKGuardZone zone)
		//{
		//	elementZone.SetZLayer(zone == null ? 20 : 40);
		//	elementZone.BackgroundColor = zone == null ? Colors.Black : Colors.Brown;
		//}
		
		//private static void UpdateSKDZoneType(IElementZone elementZone, GKBase zone)
		//{
		//	elementZone.SetZLayer(zone == null  ? 50 : 60);
		//	elementZone.BackgroundColor = zone == null ? Colors.Black : Colors.Green;
		//}
		//private static void UpdateDelayType(IElementDelay elementGKDelay, GKDelay gkDelay)
		//{
		//	elementGKDelay.BackgroundColor = gkDelay == null ? Colors.Black : Colors.LightBlue;
		//}
		//private static void UpdatePumpStationType(IElementPumpStation elementGKPumpStation, GKPumpStation gkPumpStation)
		//{
		//	elementGKPumpStation.BackgroundColor = (gkPumpStation == null) ? Colors.Black : Colors.Cyan;
		//}
		//private static void UpdateDirectionType(IElementDirection elementGKDirection, GKDirection gkDirection)
		//{
		//	elementGKDirection.SetZLayer(gkDirection == null ? 10 : 11);
		//	elementGKDirection.BackgroundColor = gkDirection == null ? Colors.Black : Colors.LightBlue;
		//}
		//private static void UpdateMPTType(IElementMPT elementGKMPT, GKMPT gkMPT)
		//{
		//	elementGKMPT.SetZLayer(gkMPT == null ? 10 : 11);
		//	elementGKMPT.BackgroundColor = gkMPT == null ? Colors.Black : Colors.LightBlue;
		//}
		private static void UpdateSubPlan(ElementBase elementSubPlan, Plan plan)
		{
			elementSubPlan.BackgroundColor = plan == null ? Colors.Black : Colors.Green;
		}