コード例 #1
0
 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;
 }
コード例 #2
0
ファイル: MainWindow.xaml.cs プロジェクト: LexaGal/Plants
        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;
        }