class PostProcessingPanelController(Observer):
    def __init__(self, subplots, app_controller):
        self.subplots = subplots
        self.dropbox_repository = DropboxRepository()
        self.app_controller = app_controller
        self.subplot_factory = PostProcessingSubplotFactory()
        self.property_parser = PropertiesParser()

    def create_panel(self, frame):
        names_of_comparable_files = self.dropbox_repository.fetch_names_of_comparable_files()

        self.panel = PostProcessingPanel(frame, self.subplots, names_of_comparable_files,
            self.property_parser.get_property("Post-Processing Plots"))
        self.panel.add_panel_observers(self)
        self.panel.draw_plot_canvas()

    #TODO CRAPPY CODE
    def update(self, event):
        if event == "reset":
            self.app_controller.reset_app()
        elif  isinstance(event, FileCheckedObservableEvent):
            filename = event.filename
            self._add_data_line_to_canvas(filename)
        elif isinstance(event, FileUncheckedObservableEvent):
            filename = event.filename
            self._remove_line_from_canvas(filename)
        elif isinstance(event, PlotTypesChangedObservableEvent):
            self._create_subplots(event.list_of_plots)

    def _create_subplots(self, list_of_subplots):
        self.subplots = self.subplot_factory.create_subplots(list_of_subplots)
        self.panel.update_subplots(self.subplots)

    def _add_data_line_to_canvas(self, filename):
        self.dropbox_repository.add_file_to_compare_to_data(filename)
        self.panel.refresh_canvas()

    def _remove_line_from_canvas(self, filename):
        self.dropbox_repository.remove_file_to_compare_to_data(filename)
        self.panel.refresh_canvas()
 def __init__(self, subplots, app_controller):
     self.subplots = subplots
     self.dropbox_repository = DropboxRepository()
     self.app_controller = app_controller
     self.subplot_factory = PostProcessingSubplotFactory()
     self.property_parser = PropertiesParser()