public static void SetProperty(PlanCallbackData data) { lock (_lockPlan) { var planData = _cachePlan.FirstOrDefault(item => item.PlanUid == data.PlanUid && item.ElementUid == data.ElementUid && item.ElementPropertyType == data.ElementPropertyType); if (planData == null) _cachePlan.Add(data); else { planData.Value = data.Value; planData.LayoutFilter = data.LayoutFilter; } } }
public void Initialize() { _initialized = false; if (PlanTreeViewModel != null) PlanTreeViewModel.Initialize(); _initialized = true; OnSelectedPlanChanged(); if (PlanTreeViewModel != null) { foreach (var plan in PlanTreeViewModel.AllPlans) { foreach (var element in plan.Plan.AllElements) { foreach (var planElementBindingItem in element.PlanElementBindingItems) { var globalVariable = ProcedureExecutionContext.GlobalVariables.FirstOrDefault(x => x.Uid == planElementBindingItem.GlobalVariableUID); if (globalVariable != null) { globalVariable.ValueChanged += () => { var planCallbackData = new PlanCallbackData() { ElementPropertyType = ElementPropertyType.BorderThickness, Value = globalVariable.IntValue, ElementUid = element.UID, PlanUid = plan.Plan.UID }; SetPlanProperty(planCallbackData); }; } } } } } }
void GetPlanProperty(PlanCallbackData data) { var value = new object(); var element = GetElement(data); if (element != null) { var elementRectangle = element as ElementBaseRectangle; if (elementRectangle != null) switch (data.ElementPropertyType) { case ElementPropertyType.Height: value = Convert.ToInt32(elementRectangle.Height); break; case ElementPropertyType.Width: value = Convert.ToInt32(elementRectangle.Width); break; } var elementText = element as IElementTextBlock; if (elementText != null) switch (data.ElementPropertyType) { case ElementPropertyType.FontBold: value = elementText.FontBold; break; case ElementPropertyType.FontItalic: value = elementText.FontItalic; break; case ElementPropertyType.FontSize: value = Convert.ToInt32(elementText.FontSize); break; case ElementPropertyType.ForegroundColor: value = elementText.ForegroundColor; break; case ElementPropertyType.Stretch: value = elementText.Stretch; break; case ElementPropertyType.Text: value = elementText.Text; break; case ElementPropertyType.WordWrap: value = elementText.WordWrap; break; } switch (data.ElementPropertyType) { case ElementPropertyType.IsVisible: value = !element.IsHidden; break; case ElementPropertyType.IsEnabled: value = !element.IsLocked; break; case ElementPropertyType.Color: value = element.BorderColor; break; case ElementPropertyType.BackColor: value = element.BackgroundColor; break; case ElementPropertyType.BorderThickness: value = Convert.ToInt32(element.BorderThickness); break; case ElementPropertyType.Left: value = Convert.ToInt32(element.GetPosition().X); break; case ElementPropertyType.Top: value = Convert.ToInt32(element.GetPosition().Y); break; } } data.Value = value; }
private ElementBase GetElement(PlanCallbackData data) { var plan = PlanTreeViewModel == null ? (PlanDesignerViewModel.Plan.UID == data.PlanUid ? PlanDesignerViewModel.PlanViewModel : null) : PlanTreeViewModel.FindPlan(data.PlanUid); if (plan == null) return null; return plan.Plan.AllElements.FirstOrDefault(x => x.UID == data.ElementUid); }
private void SetPlanProperty(PlanCallbackData data) { var element = GetElement(data); if (element == null) return; switch (data.ElementPropertyType) { case ElementPropertyType.IsVisible: element.IsHidden = !Utils.Cast<bool>(data.Value); break; case ElementPropertyType.IsEnabled: element.IsLocked = !Utils.Cast<bool>(data.Value); break; case ElementPropertyType.Color: element.BorderColor = Utils.Cast<Color>(data.Value).ToRubezhColor(); break; case ElementPropertyType.BackColor: element.BackgroundColor = Utils.Cast<RubezhAPI.Color>(data.Value); break; case ElementPropertyType.BorderThickness: element.BorderThickness = Convert.ToDouble(data.Value); break; case ElementPropertyType.Left: element.SetPosition(new System.Windows.Point(Convert.ToDouble(data.Value), element.GetPosition().Y)); break; case ElementPropertyType.Top: element.SetPosition(new System.Windows.Point(element.GetPosition().X, Convert.ToDouble(data.Value))); break; } var elementRectangle = element as ElementBaseRectangle; if (elementRectangle != null) switch (data.ElementPropertyType) { case ElementPropertyType.Height: elementRectangle.Height = Convert.ToDouble(data.Value); break; case ElementPropertyType.Width: elementRectangle.Width = Convert.ToDouble(data.Value); break; } var elementText = element as IElementTextBlock; if (elementText != null) switch (data.ElementPropertyType) { case ElementPropertyType.FontBold: elementText.FontBold = Convert.ToBoolean(data.Value); break; case ElementPropertyType.FontItalic: elementText.FontItalic = Convert.ToBoolean(data.Value); break; case ElementPropertyType.FontSize: elementText.FontSize = Convert.ToDouble(data.Value); break; case ElementPropertyType.ForegroundColor: elementText.ForegroundColor = Utils.Cast<Color>(data.Value).ToRubezhColor(); break; case ElementPropertyType.Stretch: elementText.Stretch = Convert.ToBoolean(data.Value); break; case ElementPropertyType.Text: elementText.Text = Convert.ToString(data.Value); break; case ElementPropertyType.WordWrap: elementText.WordWrap = Convert.ToBoolean(data.Value); break; } ApplicationService.Invoke(() => { var presenterItem = PlanDesignerViewModel.PresenterItems.FirstOrDefault(item => item.Element == element); if (presenterItem != null) { presenterItem.InvalidatePainter(); presenterItem.DesignerCanvas.Refresh(); } }); }