public void actionPerformed(final ActionEvent e) {
      final KettleQueryEntry kettleQueryEntry = (KettleQueryEntry) queryNameList.getSelectedValue();
      final KettleTransFromFileProducer fileProducer = kettleQueryEntry.createProducer();
      final KettleDataFactory dataFactory = new KettleDataFactory();
      dataFactory.setQuery(kettleQueryEntry.getName(), fileProducer);

      try {
        DataFactoryEditorSupport.configureDataFactoryForPreview(dataFactory, designTimeContext);

        final DataPreviewDialog previewDialog = new DataPreviewDialog(KettleDataSourceDialog.this);

        final KettlePreviewWorker worker =
            new KettlePreviewWorker(dataFactory, kettleQueryEntry.getName());
        previewDialog.showData(worker);

        final ReportDataFactoryException factoryException = worker.getException();
        if (factoryException != null) {
          ExceptionDialog.showExceptionDialog(
              KettleDataSourceDialog.this,
              Messages.getString("KettleDataSourceDialog.PreviewError.Title"),
              Messages.getString("KettleDataSourceDialog.PreviewError.Message"),
              factoryException);
        }
      } catch (Exception ex) {
        ExceptionDialog.showExceptionDialog(
            KettleDataSourceDialog.this,
            Messages.getString("KettleDataSourceDialog.PreviewError.Title"),
            Messages.getString("KettleDataSourceDialog.PreviewError.Message"),
            ex);
      }
    }
  public KettleDataFactory performConfiguration(
      DesignTimeContext context, final KettleDataFactory dataFactory, final String queryName) {
    loadData(dataFactory, queryName);
    if ((dataFactory == null) || (!dataFactory.queriesAreHomogeneous())) {
      // allow caller to render the default dialog... we are done here
      return super.performConfiguration(context, dataFactory, queryName);
    } else {
      try {

        refreshQueryUIComponents();
        if (performEdit() == false) {
          return null;
        }

      } catch (Exception e) {
        // attempt to fall back to the default dialog...

        // TODO: LOG SOMETHING USEFUL HERE
        return super.performConfiguration(context, dataFactory, queryName);
      }
    }

    final KettleDataFactory kettleDataFactory = new KettleDataFactory();
    kettleDataFactory.setMetadata(dataFactory.getMetaData());
    for (final KettleQueryEntry queryEntry : getQueryEntries()) {
      final KettleTransformationProducer producer = queryEntry.createProducer();
      kettleDataFactory.setQuery(queryEntry.getName(), producer);
    }

    return kettleDataFactory;
  }
    public void valueChanged(final ListSelectionEvent e) {
      final Object value = queryNameList.getSelectedValue();
      if (value == null) {
        nameTextField.setEnabled(false);
        fileTextField.setEnabled(false);
        stepsList.setEnabled(false);
        editParameterAction.setEnabled(false);
        return;
      }

      inUpdateFromList = true;
      nameTextField.setEnabled(true);
      fileTextField.setEnabled(true);

      final AbstractReportDefinition report = designTimeContext.getReport();
      final MasterReport masterReport = DesignTimeUtil.getMasterReport(report);
      final ResourceKey contentBase;
      if (masterReport == null) {
        contentBase = null;
      } else {
        contentBase = masterReport.getContentBase();
      }

      try {
        final KettleQueryEntry selectedQuery = (KettleQueryEntry) value;
        fileTextField.setText(selectedQuery.getFile());
        nameTextField.setText(selectedQuery.getName());
        final StepMeta[] data = selectedQuery.getSteps(report.getResourceManager(), contentBase);
        stepsList.setListData(data);
        final String selectedStepName = selectedQuery.getSelectedStep();
        if (selectedStepName != null) {
          for (int i = 0; i < data.length; i++) {
            final StepMeta stepMeta = data[i];
            if (selectedStepName.equals(stepMeta.getName())) {
              stepsList.setSelectedValue(stepMeta, true);
              break;
            }
          }
        }
        stepsList.setEnabled(true);
        editParameterAction.setEnabled(true);
      } catch (ReportDataFactoryException rdfe) {
        logger.warn("Non-critical failure while executing the query", rdfe);
        stepsList.setEnabled(false);
        editParameterAction.setEnabled(false);
      } catch (Exception e1) {
        designTimeContext.error(e1);
        stepsList.setEnabled(false);
        editParameterAction.setEnabled(false);
      } catch (Throwable t1) {
        designTimeContext.error(new StackableRuntimeException("Fatal error", t1));
        stepsList.setEnabled(false);
        editParameterAction.setEnabled(false);
      } finally {
        inUpdateFromList = false;
      }
    }
  public KettleDataFactory performConfiguration(
      final KettleDataFactory dataFactory, final String queryName) {
    queryListModel.clear();

    loadData(dataFactory, queryName);
    if (performEdit() == false) {
      return null;
    }

    final KettleDataFactory kettleDataFactory = new KettleDataFactory();
    for (int i = 0; i < queryListModel.getSize(); i++) {
      final KettleQueryEntry queryEntry = (KettleQueryEntry) queryListModel.getElementAt(i);
      final KettleTransFromFileProducer producer = queryEntry.createProducer();
      kettleDataFactory.setQuery(queryEntry.getName(), producer);
    }

    return kettleDataFactory;
  }
    public void actionPerformed(final ActionEvent e) {
      final HashSet<String> names = new HashSet<String>();
      for (int i = 0; i < queryListModel.getSize(); i++) {
        final KettleQueryEntry o = (KettleQueryEntry) queryListModel.getElementAt(i);
        names.add(o.getName());
      }

      String queryName = Messages.getString("KettleDataSourceDialog.Query");
      for (int i = 1; i < 1000; ++i) {
        final String newQuery = Messages.getString("KettleDataSourceDialog.Query") + " " + i;
        if (names.contains(newQuery) == false) {
          queryName = newQuery;
          break;
        }
      }

      final KettleQueryEntry newQuery = new KettleQueryEntry(queryName);
      queryListModel.addElement(newQuery);
      queryNameList.setSelectedValue(newQuery, true);
    }