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(); }
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; }
public static Color GetSubPlanColor(Plan plan) { Color color = Colors.Black; if (plan != null) color = Colors.Green; return color; }
public PlanLinkViewModel(Plan plan, Guid elementUID) { ElementUID = elementUID; PlanUID = plan.UID; PlanName = plan.Caption; ShowOnPlanCommand = new RelayCommand(OnShowOnPlan); }
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); }
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); }
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)); }
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); } }
private void Update(Plan plan) { CanvasWidth = plan.Width; CanvasHeight = plan.Height; CanvasBackground = PainterCache.GetBrush(plan); }
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); }
public static IEnumerable<ElementBase> Enumerate(Plan plan) { return EnumeratePrimitives(plan) .Union(plan.ElementRectangleSubPlans) .Union(plan.ElementPolygonSubPlans); }
public PlanViewModel(Plan plan) { Plan = plan; }
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); }
private string GetErrorMessage(string typeName, Plan plan) { return string.Format("{0} дублируется на плане {1}", typeName, plan.Caption); }
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; }
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; }