private ResultsProgressDialog progressDialog(int rowCount) {

    ResultsProgressDialog progressDialog;
    progressDialog = new ResultsProgressDialog(rowCount);
    setVisible(false);
    progressDialog.pack();

    progressDialog.setLocation(GUIUtilities.getLocationForDialog(progressDialog.getSize()));
    progressDialog.setVisible(true);

    return progressDialog;
  }
  private Object exportDelimited() {
    int delimIndex = delimCombo.getSelectedIndex();
    char delim = 0;

    switch (delimIndex) {
      case 0:
        delim = '|';
        break;
      case 1:
        delim = ',';
        break;
      case 2:
        delim = ';';
        break;
      case 3:
        delim = '#';
        break;
      case 4:
        delim = customDelimField.getText().charAt(0);
        break;
    }

    ResultsProgressDialog progressDialog = null;
    PrintWriter writer = null;
    File exportFile = null;

    try {
      exportFile = new File(fileNameField.getText());

      StringBuilder rowLines = new StringBuilder(5000);
      writer = new PrintWriter(new FileWriter(exportFile, false), true);

      int rowCount = model.getRowCount();
      int columnCount = model.getColumnCount();

      progressDialog = progressDialog(rowCount);

      if (columnHeadersCheck.isSelected()) {
        for (int i = 0; i < columnCount; i++) {
          rowLines.append(model.getColumnName(i));
          if (i != columnCount - 1) {
            rowLines.append(delim);
          }
        }
        writer.println(rowLines.toString());
        rowLines.setLength(0);
      }

      boolean applyQuotes = applyQuotesCheck.isSelected();
      for (int i = 0; i < rowCount; i++) {

        for (int j = 0; j < columnCount; j++) {

          Object value = model.getValueAt(i, j);
          if (applyQuotes && isCDATA((RecordDataItem) value)) {

            rowLines.append("\"" + valueAsString(value) + "\"");

          } else {

            rowLines.append(valueAsString(value));
          }

          if (j != columnCount - 1) {

            rowLines.append(delim);
          }
        }

        writer.println(rowLines.toString());
        rowLines.setLength(0);
        progressDialog.increment(i + 1);
      }

      return "done";

    } catch (IOException e) {

      return handleError(e);

    } finally {
      if (progressDialog != null && progressDialog.isVisible()) {
        progressDialog.dispose();
        progressDialog = null;
      }
      if (writer != null) {
        writer.close();
      }
    }
  }
  private Object exportExcel() {

    OutputStream outputStream = null;
    ResultsProgressDialog progressDialog = null;

    try {

      outputStream = createOutputStream();

      ExcelWorkbookBuilder builder = createExcelWorkbookBuilder();

      builder.createSheet("Result Set Export");

      int rowCount = model.getRowCount();
      int columnCount = model.getColumnCount();

      progressDialog = progressDialog(rowCount);

      List<String> values = new ArrayList<String>(columnCount);

      if (columnHeadersCheck.isSelected()) {

        for (int i = 0; i < columnCount; i++) {

          values.add(model.getColumnName(i));
        }

        builder.addRowHeader(values);
      }

      for (int i = 0; i < rowCount; i++) {

        values.clear();

        for (int j = 0; j < columnCount; j++) {

          Object value = model.getValueAt(i, j);
          values.add(valueAsString(value));
        }

        builder.addRow(values);
        progressDialog.increment(i + 1);
      }

      builder.writeTo(outputStream);

      return "done";

    } catch (IOException e) {

      return handleError(e);

    } finally {

      if (progressDialog != null && progressDialog.isVisible()) {
        progressDialog.dispose();
        progressDialog = null;
      }

      if (outputStream != null) {
        try {
          outputStream.close();
        } catch (IOException e) {
        }
      }
    }
  }