/**
   * Builds ESA table at index {@code index} in initial ESA table list , one ESA header corresponds
   * to one ESA table
   */
  private void yieldEsaTable() {
    //      algorithm is:
    //      1. acquire the eiaHeader of the current file;
    //      2. construct the ESA table one channel after another;
    //      3. update the status.
    ESATable esaTable = null;

    // need check, Fangping, 08/20/2010
    ESAHeader esaHeader = MainWindow.dupEdfFileHeaders.get(selectedEDF).getEsaHeader(); // 1.
    esaTable = new ESATable(esaHeader, true); // 2.
    // configure the status
    Boolean savedOnce = false; // start of 3.
    Boolean updateSinceLastSave = true;
    File workingFile = MainWindow.getWkEdfFiles().get(selectedEDF);
    int category = EDFTable.MasterHeaderCategory.ESA_WORKSET;
    esaTable.setStatesAllInOne(
        savedOnce, updateSinceLastSave, workingFile, category, selectedEDF); // end of 4.
    esaTable.setSourceMasterFile(sourceFiles.get(selectedEDF)); // set source file

    MainWindow.setIniEsaTable(esaTable, selectedEDF);
  }