/**
   * This event is called when the data has finished being processed. Once it is it passes the
   * processed data to this main controller the event is passed from WeatherDataProgressDialogClass
   */
  @Override
  public void processedWeatherDataEmitted(WeatherDataProcessedEvent event) {
    ObservableList<WeatherData> weatherDataList = event.getWeatherDataList();
    // TODO build the daily matrix
    // TODO setOnSucceeded the matrix task

    TimeSeries weatherSeries =
        ChartComponentsFactory.createWeatherTimeSeries("NOAA", weatherDataList);
    intervalGraphPanel.addTemperatureSeries(weatherSeries);

    BuildWeatherMatrixTask weatherMatrixTask = new BuildWeatherMatrixTask(weatherDataList);
    ExecutorService executor = Executors.newSingleThreadExecutor();

    weatherMatrixTask.setOnSucceeded(
        new EventHandler<WorkerStateEvent>() {
          @Override
          public void handle(WorkerStateEvent event) {
            ObservableList<DailyWeatherData> dayTimeWeatherData =
                weatherMatrixTask.getDailyWeatherDataList();
            dailyWeatherData = dayTimeWeatherData;
            // we set the variable dayTimeInterval in the controller so it
            // can be called from outside whenever necessary
          }
        });
    executor.execute(weatherMatrixTask);
  }
  /** This handles the deletion of a meter or multiple meters */
  @FXML
  private void handleDeleteMeter() {
    int selectedIndex = meterTable.getSelectionModel().getSelectedIndex();
    consumptionHeatMap.removeHeatMap();
    generationHeatMap.removeHeatMap();
    // if something is selected
    if (selectedIndex >= 0) {
      meterTable.getItems().remove(selectedIndex);
      meterTable.getSelectionModel().clearSelection(selectedIndex);

    } else {
      // nothing is selected
      Dialogs.create()
          .title("No selection")
          .masthead("No meter selected")
          .message("Please select a meter in the table")
          .showError();
    }

    // TODO: handles whenever there are no meters left, there is a glitch
    // with the columns being fixed

    intervalGraphPanel.removeMeter(selectedIndex);
    barChartPanel.removeMeter(selectedIndex);
  }
 /**
  * This method handles the checkboxes in the table
  *
  * @param selectedIndex
  * @param meter
  */
 public void activateSeries(int selectedIndex, Meter meter) {
   intervalGraphPanel.activateSeries(selectedIndex, meter);
 }
 /**
  * This method handles the change in color of a specific series
  *
  * @param selectedIndex
  * @param Color
  */
 public void changeSeriesColor(int selectedIndex, java.awt.Color color) {
   intervalGraphPanel.updateColors(selectedIndex, color);
 }