class RealTimePanelController(Observer):
    def __init__(self, real_time_subplots, app_controller):
        self.real_time_subplots = real_time_subplots
        self.app_controller = app_controller
        self.subplot_factory = RealTimeSubplotFactory()
        self.property_parser = PropertiesParser()

    def create_panel(self, panel_parent):
        self.panel = RealTimePanel(
            panel_parent, self.real_time_subplots, self.property_parser.get_property("Real-Time Plots")
        )
        self.panel.add_panel_observers(self)

    def start_plotting(self):
        self.panel.startTimer()
        self.app_controller.start_data_acquisition()

    def stop_plotting(self, save):
        self.panel.stop_timer()
        self.panel.Hide()
        self.app_controller.stop_data_acquisition(save)

    def update(self, event):
        if event == "start":
            self.start_plotting()
        elif event == "stop":
            self.stop_plotting(True)
        elif isinstance(event, PlotTypesChangedObservableEvent):
            self._create_subplots(event.list_of_plots)

    def _create_subplots(self, list_of_subplots):
        self.real_time_subplots = self.subplot_factory.create_subplots(list_of_subplots)
        self.panel.update_subplots(self.real_time_subplots)
 def create_panel(self, panel_parent):
     self.panel = RealTimePanel(
         panel_parent, self.real_time_subplots, self.property_parser.get_property("Real-Time Plots")
     )
     self.panel.add_panel_observers(self)