/**
  * Remove summary report
  *
  * <p>This method will close data access controller, it will also stop all ongoing tasks related
  * to this data access controller.
  *
  * @param controller data access controller
  */
 public final synchronized void replaceSummaryReport(
     DataAccessController controller, DataAccessController replacement) {
   // remove summary report
   summaryReportTracker.remove(controller);
   // add new summary report for the new data access controller
   getSummaryReportModel(replacement);
 }
  /**
   * Add a new data access controller, and set it foreground status
   *
   * @param controller data access controller
   * @param foreground foreground status
   */
  public final synchronized void addDataAccessController(
      DataAccessController controller, boolean foreground) {
    // initialize summary report model
    getSummaryReportModel(controller);

    // set left control panel to visible
    setLeftControlPaneVisible(true);

    dataAccessMonitor.addDataAccessController(controller, foreground);
  }
  /**
   * Replace one data access controller with another.
   *
   * @param original original data access controller
   * @param replacement replacement data access controller
   * @param cancelTasks whether to cancel the tasks associated with this controller
   */
  public final synchronized void replaceDataAccessController(
      DataAccessController original, DataAccessController replacement, boolean cancelTasks) {
    if (cancelTasks) {
      // cancel all the tasks related to this data access controller
      TaskManager taskMgr = this.getTaskManager();
      taskMgr.cancelTasksByOwner(original);
    }

    // remove gui component
    removeDataContentPane(original);

    // remove pride action
    removePrideAction(original);

    // remove summary report for the original data access controller
    summaryReportTracker.remove(original);

    // add new summary report for the new data access controller
    getSummaryReportModel(replacement);

    // replace
    dataAccessMonitor.replaceDataAccessController(original, replacement);
  }