@Override
  public void handleEvent(Event event) {
    Vector<File> rawFiles = ((ClinicalData) this.dataType).getRawFiles();
    Vector<String> siteIds = this.setOtherIdsUI.getSiteIds();
    Vector<String> visitNames = this.setOtherIdsUI.getVisitNames();

    // write in a new file
    File file =
        new File(
            this.dataType.getPath().toString()
                + File.separator
                + this.dataType.getStudy().toString()
                + ".columns.tmp");
    try {
      FileWriter fw = new FileWriter(file);
      BufferedWriter out = new BufferedWriter(fw);
      out.write(
          "Filename\tCategory Code\tColumn Number\tData Label\tData Label Source\tControlled Vocab Code\n");

      for (int i = 0; i < rawFiles.size(); i++) {

        // site identifier
        if (siteIds.elementAt(i).compareTo("") != 0) {
          int columnNumber =
              FileHandler.getHeaderNumber(rawFiles.elementAt(i), siteIds.elementAt(i));
          if (columnNumber != -1) {
            out.write(rawFiles.elementAt(i).getName() + "\t\t" + columnNumber + "\tSITE_ID\t\t\n");
          }
        }

        // visit name
        if (visitNames.elementAt(i).compareTo("") != 0) {
          int columnNumber =
              FileHandler.getHeaderNumber(rawFiles.elementAt(i), visitNames.elementAt(i));
          if (columnNumber != -1) {
            out.write(
                rawFiles.elementAt(i).getName() + "\t\t" + columnNumber + "\tVISIT_NAME\t\t\n");
          }
        }
      }
      // add lines from existing CMF
      try {
        BufferedReader br =
            new BufferedReader(new FileReader(((ClinicalData) this.dataType).getCMF()));
        String line = br.readLine();
        while ((line = br.readLine()) != null) {
          String[] s = line.split("\t", -1);
          if (s[3].compareTo("SITE_ID") != 0 && s[3].compareTo("VISIT_NAME") != 0) {
            out.write(line + "\n");
          }
        }
        br.close();
      } catch (Exception e) {
        this.setOtherIdsUI.displayMessage("Error: " + e.getLocalizedMessage());
        e.printStackTrace();
        out.close();
      }
      out.close();
      try {
        String fileName = ((ClinicalData) this.dataType).getCMF().getName();
        ((ClinicalData) this.dataType).getCMF().delete();
        File fileDest = new File(this.dataType.getPath() + File.separator + fileName);
        FileUtils.moveFile(file, fileDest);
        ((ClinicalData) this.dataType).setCMF(fileDest);
      } catch (IOException ioe) {
        this.setOtherIdsUI.displayMessage("File error: " + ioe.getLocalizedMessage());
        return;
      }

    } catch (Exception e) {
      this.setOtherIdsUI.displayMessage("Error: " + e.getLocalizedMessage());
      e.printStackTrace();
    }
    this.setOtherIdsUI.displayMessage("Column mapping file updated");
    WorkPart.updateSteps();
    WorkPart.updateFiles();
    UsedFilesPart.sendFilesChanged(dataType);
  }
  @Override
  public void handleEvent(Event event) {
    this.selectRawFilesUI.openLoadingShell();
    new Thread() {
      public void run() {
        String[] paths = selectRawFilesUI.getPath().split(File.pathSeparator, -1);
        for (int i = 0; i < paths.length; i++) {
          String path = paths[i];
          if (path == null) {
            selectRawFilesUI.setIsLoading(false);
            return;
          }
          File rawFile = new File(path);
          if (rawFile.exists()) {
            if (rawFile.isFile()) {
              if (path.contains("%")) {
                selectRawFilesUI.setMessage("File name can not contain percent ('%') symbol.");
                selectRawFilesUI.setIsLoading(false);
                return;
              }
              String newPath =
                  dataType.getPath().getAbsolutePath() + File.separator + rawFile.getName();
              if (selectRawFilesUI.getFormat().compareTo("Tab delimited raw file") != 0
                  && selectRawFilesUI.getFormat().compareTo("SOFT") != 0) {
                selectRawFilesUI.setMessage("File format does not exist");
                selectRawFilesUI.setIsLoading(false);
                return;
              }
              if (selectRawFilesUI.getFormat().compareTo("SOFT") == 0) {
                File newFile = new File(newPath);
                if (newFile.exists()) {
                  selectRawFilesUI.setMessage("File has already been added");
                  selectRawFilesUI.setIsLoading(false);
                  return;
                } else {
                  if (createTabFileFromSoft(rawFile, newFile)) {
                    ((ClinicalData) dataType).addRawFile(newFile);
                    selectRawFilesUI.setMessage("File has been added");
                  }
                }
              } else if (selectRawFilesUI.getFormat().compareTo("Tab delimited raw file") == 0) {
                if (!checkTabFormat(rawFile)) {
                  selectRawFilesUI.setIsLoading(false);
                  return;
                }

                File copiedRawFile = new File(newPath);
                if (!copiedRawFile.exists()) {
                  try {
                    FileUtils.copyFile(rawFile, copiedRawFile);
                    ((ClinicalData) dataType).addRawFile(copiedRawFile);
                    selectRawFilesUI.setMessage("File has been added");
                  } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                    selectRawFilesUI.setMessage("File error: " + e.getLocalizedMessage());
                    selectRawFilesUI.setIsLoading(false);
                    return;
                  }
                } else {
                  selectRawFilesUI.setMessage("File has already been added");
                  selectRawFilesUI.setIsLoading(false);
                  return;
                }
              }

            } else {
              selectRawFilesUI.setMessage("File is a directory");
              selectRawFilesUI.setIsLoading(false);
              return;
            }
          } else {
            selectRawFilesUI.setMessage("Path does no exist");
            selectRawFilesUI.setIsLoading(false);
            return;
          }
        }
        selectRawFilesUI.setIsLoading(false);
      }
    }.start();
    this.selectRawFilesUI.waitForThread();
    selectRawFilesUI.updateViewer();
    WorkPart.updateSteps();
    UsedFilesPart.sendFilesChanged(dataType);
  }