public PlantAreaMenuBuilder(StackPanel plantAreaSensorsPanel, StackPanel plantAreaChartsPanel, Menu menu, IControlsRefresher controlsRefresher, DbMeasuringMessagesRetriever dbMeasuringMessagesRetriever, ChartDescriptor chartDescriptor) { controlsRefresher.RefreshControl += RefreshControls; _plantAreaSensorsPanel = plantAreaSensorsPanel; _plantAreaChartsPanel = plantAreaChartsPanel; _menu = menu; _chartDescriptor = chartDescriptor; _dbMeasuringMessagesRetriever = dbMeasuringMessagesRetriever; _refreshLastMin = false; _autorefresh = false; }
private Border CreateFullPlantAreaPanel(PlantsArea area, int marginLeft, int marginTop) { DataGridsBuilder dataGridsBuilder = new DataGridsBuilder(); FrameworkElementFactoriesBuilder frameworkElementFactoriesBuilder = new FrameworkElementFactoriesBuilder(); StackPanel plantAreaSensorsPanel = new StackPanel { VerticalAlignment = VerticalAlignment.Top, HorizontalAlignment = HorizontalAlignment.Left, Orientation = Orientation.Horizontal, Width = 1330, Height = 300, CanVerticallyScroll = true, CanHorizontallyScroll = true, }; plantAreaSensorsPanel.Children.Add(new Label { VerticalAlignment = VerticalAlignment.Top, HorizontalAlignment = HorizontalAlignment.Left, Content = area.ToString() }); BindingList<DataGridSensorView> dataGridSensorViews = new BindingList<DataGridSensorView>( area.Sensors.OrderBy(s => s.IsCustom).ToList().ConvertAll(s => new DataGridSensorView(s))) { AllowNew = true, AllowEdit = true, AllowRemove = true }; BindingList<DataGridServiceScheduleView> dataGridServiceScheduleViews = new BindingList<DataGridServiceScheduleView>( area.ServicesSchedulesStates.ServicesSchedules.ToList() .ConvertAll(s => new DataGridServiceScheduleView(s))) { RaiseListChangedEvents = true, AllowNew = true, AllowRemove = true, AllowEdit = true }; FrameworkElementFactory removeSensorButtonTemplate = frameworkElementFactoriesBuilder.CreateRemoveSensorButtonTemplate(area, dataGridSensorViews, dataGridServiceScheduleViews, RemoveSensor); FrameworkElementFactory sensorSaveButtonTemplate = frameworkElementFactoriesBuilder.CreateSensorSaveButtonTemplate(area, dataGridSensorViews, dataGridServiceScheduleViews, SaveSensor); FrameworkElementFactory onOffSensorButtonTemplate = frameworkElementFactoriesBuilder.CreateOnOffSensorButtonTemplate(); DataGrid sensorViewsDataGrid = dataGridsBuilder.CreateSensorsDataGrid(area, dataGridSensorViews, removeSensorButtonTemplate, sensorSaveButtonTemplate, onOffSensorButtonTemplate); DataGrid serviceStatesDataGrid = dataGridsBuilder.CreateServiceSystemsDataGrid(area); FrameworkElementFactory serviceScheduleSaveButtonTemplate = frameworkElementFactoriesBuilder.CreateServiceScheduleSaveButtonTemplate(area, dataGridServiceScheduleViews, SaveServiceSchedule); FrameworkElementFactory onOffServiceScheduleButtonTemplate = frameworkElementFactoriesBuilder.CreateOnOffServiceScheduleButtonTemplate(); DataGrid serviceSchedulesDataGrid = dataGridsBuilder.CreateServicesSchedulesDataGrid(area, dataGridServiceScheduleViews, serviceScheduleSaveButtonTemplate, onOffServiceScheduleButtonTemplate); Button removePlantsAreaButton = frameworkElementFactoriesBuilder.CreateRemovePlantsAreaButton(RemovePlantsArea, area); plantAreaSensorsPanel.Children.Add(sensorViewsDataGrid); plantAreaSensorsPanel.Children.Add(serviceStatesDataGrid); plantAreaSensorsPanel.Children.Add(serviceSchedulesDataGrid); StackPanel plantAreaChartsPanel = new StackPanel { Orientation = Orientation.Vertical, Visibility = Visibility.Collapsed }; ChartDescriptor chartDescriptor = new ChartDescriptor(area.Id, area.Plant.MeasurableParameters.First().MeasurableType, 30, DateTime.Now.Subtract(new TimeSpan(0, 0, 30)), DateTime.Now); PlantAreaChartsPanelBuilder plantAreaChartsPanelBuilder = new PlantAreaChartsPanelBuilder(area.Plant.MeasurableParameters, frameworkElementFactoriesBuilder, plantAreaChartsPanel, chartDescriptor); plantAreaChartsPanelBuilder.RebuildChartsPanel(); Menu menu = new Menu(); DbMeasuringMessagesRetriever dbMeasuringMessagesRetriever = new DbMeasuringMessagesRetriever(new MySqlMeasuringMessageMappingRepository(), _observer.MessagesDictionary); PlantAreaMenuBuilder plantAreaMenuBuilder = new PlantAreaMenuBuilder(plantAreaSensorsPanel, plantAreaChartsPanel, menu, frameworkElementFactoriesBuilder, dbMeasuringMessagesRetriever, chartDescriptor); plantAreaMenuBuilder.RebuildMenu(); DockPanel plantAreaFullPanel = new DockPanel(); plantAreaFullPanel.Children.Add(menu); plantAreaFullPanel.Children.Add(removePlantsAreaButton); plantAreaFullPanel.Children.Add(plantAreaSensorsPanel); plantAreaFullPanel.Children.Add(plantAreaChartsPanel); ScrollViewer scrollViewer = new ScrollViewer { Height = plantAreaSensorsPanel.Height, CanContentScroll = true, Content = plantAreaFullPanel, VerticalScrollBarVisibility = ScrollBarVisibility.Auto }; Border border = new Border { VerticalAlignment = VerticalAlignment.Top, HorizontalAlignment = HorizontalAlignment.Left, BorderBrush = Brushes.Black, Background = (LinearGradientBrush)ResourceDictionary["PlantsAreaBackground"], BorderThickness = new Thickness(2), Width = plantAreaSensorsPanel.Width, Height = plantAreaSensorsPanel.Height, Margin = new Thickness(marginLeft, marginTop, 0, 0), Child = scrollViewer }; return border; }