/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * GenerateCatalogDialog.java
 *
 * Created on 17 f�vr. 2010, 14:01:28
 */

package com.gmail.dpierron.calibre.gui;

import com.gmail.dpierron.calibre.opds.*;
import com.gmail.dpierron.tools.i18n.Localization;
import com.gmail.dpierron.tools.Helper;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import javax.swing.*;
import java.awt.*;

/**
 * @author David
 */
public class GenerateCatalogDialog extends javax.swing.JDialog implements CatalogCallbackInterface {
  private final static Logger logger = LogManager.getLogger(Catalog.class);
  private Log4jCatalogCallback delegate = new Log4jCatalogCallback();
  protected boolean continueGenerating = true;
  private Long stageStartTime;


  // step progress indicator
  ProgressIndicator progressStep = new ProgressIndicator() {
    @Override
    public void reset() {
      super.reset();
      if (jProgressStep != null)
        jProgressStep.setValue(0);
    }

    @Override
    public void actOnPositionChange(int newPos) {
      if (jProgressStep != null)
        jProgressStep.setValue(newPos);
      try {
        Thread.sleep(1);
      } catch (InterruptedException e) {

      }
    }

    @Override
    public void actOnMessage(String message) {
      super.actOnMessage(message);
      if (lblStepMessage != null) {
        lblStepMessage.setText(message);
      }

    }
    @Override
    public ProgressIndicator setMaxVisible(long maxVisible) {
      super.setMaxVisible(maxVisible);
      if (jProgressStep != null)
        jProgressStep.setMaximum((int) maxVisible);
      return this;
    }
  };


  /**
   * Initialise the progress indicator
   *
   * @param max
   */
  public void setProgressMax(long max) {
    progressStep.setMaxVisible(max);
    progressStep.setMaxScale(max);
  }

  public void incStepProgressIndicatorPosition() {
    checkIfContinueGenerating();
    progressStep.incPosition();
  }

  /**
   * Creates new form GenerateCatalogDialog
   */
  public GenerateCatalogDialog(java.awt.Frame parent, boolean modal) {
    super(parent, modal);
    initComponents();
    // NOTE: Initialise components first so that dialog centers on parent.
    //       Failure to do causes top left to be centred on parent which is undesireable
    setLocationRelativeTo(parent);
    progressStep.setMaxVisible(500);
    translateTexts();
  }

  @Override
  public void pack() {
    super.pack();
    Rectangle oldbounds = getBounds();
    oldbounds.width += 10;
    oldbounds.height += 10;
    setBounds(oldbounds);
  }

  private void translateTexts() {
    setTitle(Localization.Main.getText("gui.generateProgress"));
    lblStoppingGeneration.setVisible(false);
    lblStoppingGeneration.repaint();
    lblStoppingGeneration.setText(Localization.Main.getText("gui.stoppingGeneration")); // NOI18N
    lblStarted.setText(Localization.Main.getText("info.step.started")); // NOI18N
    lblDatabase.setText(Localization.Main.getText("info.step.database")); // NOI18N
    lblTags.setText(Localization.Main.getText("info.step.tags")); // NOI18N
    lblAuthors.setText(Localization.Main.getText("info.step.authors")); // NOI18N
    lblSeries.setText(Localization.Main.getText("info.step.series")); // NOI18N
    lblRecent.setText(Localization.Main.getText("info.step.recent")); // NOI18N
    lblAllbooks.setText(Localization.Main.getText("info.step.allbooks")); // NOI18N
    lblRated.setText(Localization.Main.getText("info.step.rated")); // NOI18N
    lblFeaturedBooks.setText(Localization.Main.getText("info.step.featuredbooks")); // NOI18N
    lblCustomCatalogs.setText(Localization.Main.getText("info.step.customcatalogs")); // NOI18N
    lblIndex.setText(Localization.Main.getText("info.step.index")); // NOI18N
    lblReprocessingEpubMetadata.setText(Localization.Main.getText("info.step.reprocessingEpubMetadata")); // NOI18N
    lblCopyLibToTarget.setText(Localization.Main.getText("info.step.copylib")); // NOI18N
    lblCopyCatToTarget.setText(Localization.Main.getText("info.step.copycat")); // NOI18N
    lblZipCatalog.setText(Localization.Main.getText("info.step.zipCatalog")); // NOI18N
    lblFinished.setText(Localization.Main.getText("info.step.done.gui")); // NOI18N
    cmdStopGenerating.setText(Localization.Main.getText("gui.stopGeneration")); // NOI18N
  }

  public void dumpOptions() {
    delegate.dumpOptions();
  }

  private void boldFont(JLabel label, boolean bold) {
    label.setFont(lblStarted.getFont().deriveFont(bold ? Font.BOLD : Font.PLAIN));
  }

  private void setTimeNow(JLabel label) {
    label.setText(String.format("%tT", System.currentTimeMillis()));
  }

  private void startStage(long nb, JLabel label, String localizationKey) {
    stageStartTime = System.currentTimeMillis();
    progressStep.setMaxScale(nb);
    if (label.isEnabled()) {
      logger.info(Localization.Main.getText(localizationKey) + " (" + nb + ")");
    }
    boldFont(label, true);
    label.setForeground(Color.RED);
  }

  private void endStage(JLabel label, JLabel time, JCheckBox chkBox) {
    if (label.isEnabled()) {
      logger.info(Localization.Main.getText("info.step.donein", System.currentTimeMillis() - stageStartTime));
    }
    System.currentTimeMillis();   // Probably redundant as set when starting stage!
    if (label.isEnabled()) chkBox.setSelected(true);
    label.setForeground(Color.BLACK);
    boldFont(label, false);
    if (label.isEnabled()) setTimeNow(time);
    checkIfContinueGenerating();
  }

  /**
   * Called when a stage will not be relevant to this generate run
   *
   * @param check
   * @param label
   * @param time
   */
  private void disableStage(JCheckBox check, JLabel label, JLabel time) {
    check.setEnabled(false);            // TODO   decide if this is a good idea
    check.setVisible(false);
    label.setEnabled(false);
    time.setEnabled(false);
  }

  /**
   * Update a progess step with the count for that step.
   *
   * @param label     The field to be updated
   * @param summary   The additional text to be added to the field
   */
  private void setCount(JLabel label, String summary) {
    label.setText(label.getText() + " (" + summary + ")");
  }

  public void startInitializeMainCatalog() {
    cmdStopGenerating.setVisible(true);
    cmdStopGenerating.repaint();
    lblStoppingGeneration.setVisible(false);
    lblStoppingGeneration.repaint();
    lblStartedTime.setText("");
    lblDatabaseTime.setText("");
    lblAuthorsTime.setText("");
    lblTagsTime.setText("");
    lblSeriesTime.setText("");
    lblRecentTime.setText("");
    lblRatingTime.setText("");
    lblAllbooksTime.setText("");
    lblFeaturedBooksTime.setText("");
    lblCustomCatalogsTime.setText("");
    lblReprocessingEpubMetadataTime.setText("");
    lblIndexTime.setText("");
    lblCopyLibraryTime.setText("");
    lblCopyCatalogTime.setText("");
    lblZipCatalogTime.setText("");
    lblFinishedTime.setText("");
    startStage(100, lblStarted,"info.step.started");
  }

  public void endInitializeMainCatalog() {
    endStage(lblStarted, lblStartedTime, chkStarted);
  }

  public void startReadDatabase() {
    startStage(100, lblDatabase, "info.step.database");
    setTimeNow(lblStartedTime);
  }

  public void endReadDatabase() {
    endStage(lblDatabase, lblDatabaseTime, chkDatabase);
  }

  public void setDatabaseCount (String summary) {
    setCount(lblDatabase, summary);
  }

  public void setAuthorCount(String summary){
    setCount(lblAuthors, summary);
  }

  public void startCreateAuthors(long nb) {
    startStage(nb, lblAuthors, "info.step.authors");
  }

  public void endCreateAuthors() {
    endStage(lblAuthors, lblAuthorsTime, chkAuthors);
  }

  public void disableCreateAuthors() {
    disableStage(chkAuthors, lblAuthors, lblAuthorsTime);
  }

  public void setSeriesCount(String summary) {
    setCount(lblSeries, summary);
  }

  public void setTagCount(String summary) {
    setCount(lblTags, summary);
  }

  public void setFeaturedCount(String summary) {
    setCount(lblFeaturedBooks, summary);
  }

  public void startCreateTags(long nb) {
    startStage(nb, lblTags, "info.step.tags");
  }

  public void endCreateTags() {
    endStage(lblTags, lblTagsTime, chkTags);
  }

  public void disableCreateTags() {
    disableStage(chkTags, lblTags, lblTagsTime);
  }

  public void startCreateSeries(long nb) {
    startStage(nb, lblSeries, "info.step.series");
  }

  public void endCreateSeries() {
    endStage(lblSeries, lblSeriesTime, chkSeries);
  }

  public void setRecentCount(String summary){
    lblRecent.setText(lblRecent.getText() + " (" + summary + ")");
  }

  public void disableCreateSeries() {
        disableStage(chkSeries, lblSeries, lblSeriesTime);
  }

  public void startCreateRecent(long nb) {
    startStage(nb, lblRecent, "info.step.recent");
  }

  public void endCreateRecent() {
    endStage(lblRecent, lblRecentTime, chkRecent);
  }

  public void disableCreateRecent() {
    disableStage(chkRecent, lblRecent, lblRecentTime);
  }

  public void startCreateRated(long nb) {
    startStage(nb, lblRated, "info.step.rated");
  }

  public void endCreateRated() {
    endStage(lblRated, lblRatingTime, chkRated);
  }

  public void disableCreateRated() {
    disableStage(chkRated, lblRated, lblRatingTime);
  }

  public void setAllBooksCount(String summary) {
    setCount(lblAllbooks, summary);
  }

  public void startCreateAllbooks(long nb) {
    startStage(nb, lblAllbooks, "info.step.allbooks");
  }

  public void endCreateAllbooks() {
    endStage(lblAllbooks, lblAllbooksTime, chkAllbooks);
  }

  public void disableCreateAllBooks() {
    disableStage(chkAllbooks, lblAllbooks, lblAllbooksTime);
  }

  public void startCreateFeaturedBooks(long nb) {
    startStage(nb, lblFeaturedBooks, "info.step.featuredbooks");
  }

  public void endCreateFeaturedBooks() {
    endStage(lblFeaturedBooks, lblFeaturedBooksTime, chkFeaturedBooks);
  }

  public void disableCreateFeaturedBooks() {
    disableStage(chkFeaturedBooks, lblFeaturedBooks, lblFeaturedBooksTime);
  }

  public void startCreateCustomCatalogs(long nb) {
    startStage(nb, lblCustomCatalogs, "info.step.customcatalogs");
  }

  public void endCreateCustomCatalogs() {
    endStage(lblCustomCatalogs, lblCustomCatalogsTime, chkCustomCatalogs);
  }

  public void disableCreateCustomCatalogs() {
    disableStage(chkCustomCatalogs, lblCustomCatalogs, lblCustomCatalogsTime);
  }

  public void startReprocessingEpubMetadata(long nb) {
    startStage(nb, lblReprocessingEpubMetadata, "info.step.reprocessingEpubMetadata");
  }

  public void endReprocessingEpubMetadata() {
    endStage(lblReprocessingEpubMetadata, lblReprocessingEpubMetadataTime, chkReprocessingEpubMetadata);
  }

  public void disableReprocessingEpubMetadata () {
    disableStage(chkReprocessingEpubMetadata, lblReprocessingEpubMetadata, lblReprocessingEpubMetadataTime);
  }

  public void endCreateJavascriptDatabase() {
    endStage(lblIndex, lblIndexTime, chkIndex);
  }

  public void startCreateJavascriptDatabase(long nb) {
    startStage(nb, lblIndex, "info.step.index");
  }

  public void disableCreateJavascriptDatabase() {
    disableStage(chkIndex, lblIndex, lblIndexTime);
  }

  public void setCopyLibCount(String summary){
    lblCopyLibToTarget.setText(lblCopyLibToTarget.getText() + " (" + summary + ")");
  }

  public void startCopyLibToTarget(long nb) {
    startStage(nb, lblCopyLibToTarget, "info.step.copylib");
  }

  public void endCopyLibToTarget() {
    endStage(lblCopyLibToTarget, lblCopyLibraryTime, chkCopyLibToTarget);
  }

  public void disableCopyLibToTarget() {
    disableStage(chkCopyLibToTarget, lblCopyLibToTarget, lblCopyLibraryTime);
  }

  public void setCopyCatCount(String summary){
    lblCopyCatToTarget.setText(lblCopyCatToTarget.getText() + " (" + summary + ")");
  }

  public void startCopyCatToTarget(long nb) {
    startStage(nb, lblCopyCatToTarget, "info.step.copycat");
  }

  public void endCopyCatToTarget() {
    endStage(lblCopyCatToTarget, lblCopyCatalogTime, chkCopyCatToTarget);
  }

  public void startZipCatalog(long nb) {
    startStage(nb,lblZipCatalog,"info.step.zipCatalog");
  }

  public void endZipCatalog() {
    endStage(lblZipCatalog, lblZipCatalogTime, chkZipCatalog);
  }

  public void disableZipCatalog() {
    disableStage(chkZipCatalog, lblZipCatalog, lblZipCatalogTime);
  }

  public void startFinalizeMainCatalog() {
    startStage(100,lblFinished,"info.step.done");
  }

  public void endFinalizeMainCatalog(String where, long timeInHtml) {
    endStage(lblFinished, lblFinishedTime, chkFinished);
    String message = Localization.Main.getText("info.completed");
    logger.info(message);
    logger.info("Time generating HTML was " + timeInHtml + " milliseconds");
    if (where != null) {
      String message2 = Localization.Main.getText("info.step.done", where);
      logger.info(message2);
      message += "\n" + message2;
    }
    if (Helper.statsWarnings != 0) {
      String message2 = Localization.Main.getText("info.completedWithWarnings", Helper.statsWarnings);
      logger.info(message2);
      message += "\n" + message2;
    }
    if (Helper.statsErrors != 0) {
      String message2 = Localization.Main.getText("info.completedWithErrors", Helper.statsErrors);
      logger.info(message2);
      message += "\n" + message2;
    }
    JOptionPane.showMessageDialog(this, message);
  }

  public void showMessage(String message) {
    progressStep.actOnMessage(message);
  }

  public void errorOccured(String message, Throwable error) {
    String msg;
    String title;
    Boolean b = cmdStopGenerating.isVisible();
    cmdStopGenerating.setVisible(false);
    cmdStopGenerating.repaint();
    if (error != null) {
      title = message;
      if (Helper.isNullOrEmpty(title))
        title = error.getClass().getName();
      msg = error.getMessage() + "\n" + error.getClass() + "\n" + Helper.getStackTrace(error);
    } else {
      msg = message;
      title = "";
    }
    lblStoppingGeneration.setVisible(false);
    JOptionPane.showMessageDialog(this, msg, title, JOptionPane.ERROR_MESSAGE);
    cmdStopGenerating.setVisible(b);
    cmdStopGenerating.repaint();
    logger.error(Helper.getTextFromPseudoHtmlText(message), error); Helper.statsErrors++;
  }

  public int askUser(String message, String... possibleAnswers) {
    Boolean b = cmdStopGenerating.isVisible();
    cmdStopGenerating.setVisible(false);
    cmdStopGenerating.repaint();
    int nAnswer = JOptionPane
        .showOptionDialog(this, message, message, JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, possibleAnswers, possibleAnswers[0]);
    if (nAnswer > -1) {
      String logMessage = message + " (answered " + possibleAnswers[nAnswer] + ")";
      logger.info(Helper.getTextFromPseudoHtmlText(logMessage));
    }
    cmdStopGenerating.setVisible(b);
    cmdStopGenerating.repaint();
    return nAnswer;
  }

  private void setCmdStopGeneratingVisbile(boolean state)  {
    cmdStopGenerating.setVisible(state);
    cmdStopGenerating.repaint();
  }
  public void setStopGenerating () {
    clearStopGenerating();
    continueGenerating = false;
  }

  public void clearStopGenerating() {
    setCmdStopGeneratingVisbile(false);
    lblStoppingGeneration.repaint();
  }

  private void actionStopGenerating() {
    setCmdStopGeneratingVisbile(false);
    int n = JOptionPane.showConfirmDialog(this, Localization.Main.getText("gui.stopGeneration.confirm"), "", JOptionPane.OK_CANCEL_OPTION);
    if (JOptionPane.OK_OPTION == n) {
      lblStoppingGeneration.setText(Localization.Main.getText("gui.prepareStopGeneration"));
      lblStoppingGeneration.setVisible(true);
      setStopGenerating();
    } else {
      setCmdStopGeneratingVisbile(true);
    }
  }

  public void checkIfContinueGenerating() throws GenerationStoppedException {
    if (!continueGenerating) {
      lblStoppingGeneration.setText(Localization.Main.getText("gui.stoppingGeneration"));
      throw new GenerationStoppedException();
    }
  }

  /**
   * This method is called from within the constructor to reset the form.
   * WARNING: Do NOT modify this code. The content of this method is always
   * regenerated by the Form Editor.
   */
  @SuppressWarnings("unchecked")
  // <editor-fold defaultstate="collapsed"
  // <editor-fold defaultstate="collapsed"
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {
        java.awt.GridBagConstraints gridBagConstraints;

        jProgressStep = new javax.swing.JProgressBar();
        cmdStopGenerating = new javax.swing.JButton();
        chkStarted = new javax.swing.JCheckBox();
        lblStarted = new javax.swing.JLabel();
        lblStartedTime = new javax.swing.JLabel();
        chkDatabase = new javax.swing.JCheckBox();
        lblDatabase = new javax.swing.JLabel();
        lblDatabaseTime = new javax.swing.JLabel();
        chkAuthors = new javax.swing.JCheckBox();
        lblAuthors = new javax.swing.JLabel();
        lblAuthorsTime = new javax.swing.JLabel();
        chkTags = new javax.swing.JCheckBox();
        lblTags = new javax.swing.JLabel();
        lblTagsTime = new javax.swing.JLabel();
        chkSeries = new javax.swing.JCheckBox();
        lblSeries = new javax.swing.JLabel();
        lblSeriesTime = new javax.swing.JLabel();
        chkRecent = new javax.swing.JCheckBox();
        lblRecent = new javax.swing.JLabel();
        lblRecentTime = new javax.swing.JLabel();
        chkRated = new javax.swing.JCheckBox();
        lblRated = new javax.swing.JLabel();
        lblRatingTime = new javax.swing.JLabel();
        chkAllbooks = new javax.swing.JCheckBox();
        lblAllbooks = new javax.swing.JLabel();
        lblAllbooksTime = new javax.swing.JLabel();
        chkFeaturedBooks = new javax.swing.JCheckBox();
        lblFeaturedBooks = new javax.swing.JLabel();
        lblFeaturedBooksTime = new javax.swing.JLabel();
        chkCustomCatalogs = new javax.swing.JCheckBox();
        lblCustomCatalogs = new javax.swing.JLabel();
        lblCustomCatalogsTime = new javax.swing.JLabel();
        chkReprocessingEpubMetadata = new javax.swing.JCheckBox();
        lblReprocessingEpubMetadata = new javax.swing.JLabel();
        lblReprocessingEpubMetadataTime = new javax.swing.JLabel();
        chkIndex = new javax.swing.JCheckBox();
        lblIndex = new javax.swing.JLabel();
        lblIndexTime = new javax.swing.JLabel();
        chkCopyLibToTarget = new javax.swing.JCheckBox();
        lblCopyLibToTarget = new javax.swing.JLabel();
        lblCopyLibraryTime = new javax.swing.JLabel();
        chkCopyCatToTarget = new javax.swing.JCheckBox();
        lblCopyCatToTarget = new javax.swing.JLabel();
        lblCopyCatalogTime = new javax.swing.JLabel();
        chkFinished = new javax.swing.JCheckBox();
        lblFinished = new javax.swing.JLabel();
        lblFinishedTime = new javax.swing.JLabel();
        lblStepMessage = new javax.swing.JLabel();
        lblStoppingGeneration = new javax.swing.JLabel();
        lblZipCatalog = new javax.swing.JLabel();
        lblZipCatalogTime = new javax.swing.JLabel();
        chkZipCatalog = new javax.swing.JCheckBox();

        setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
        setResizable(false);
        getContentPane().setLayout(new java.awt.GridBagLayout());

        jProgressStep.setMaximum(62);
        jProgressStep.setPreferredSize(new java.awt.Dimension(300, 19));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.gridwidth = 3;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.insets = new java.awt.Insets(5, 5, 15, 5);
        getContentPane().add(jProgressStep, gridBagConstraints);

        cmdStopGenerating.setText("cmdStopGenerating");
        cmdStopGenerating.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                cmdStopGeneratingMouseClicked(evt);
            }
        });
        cmdStopGenerating.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cmdStopGeneratingActionPerformed(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 22;
        gridBagConstraints.gridwidth = 2;
        getContentPane().add(cmdStopGenerating, gridBagConstraints);

        chkStarted.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
        getContentPane().add(chkStarted, gridBagConstraints);

        lblStarted.setText("lblStarted");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
        getContentPane().add(lblStarted, gridBagConstraints);

        lblStartedTime.setText("!");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        getContentPane().add(lblStartedTime, gridBagConstraints);

        chkDatabase.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 3;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
        getContentPane().add(chkDatabase, gridBagConstraints);

        lblDatabase.setText("lblDatabase");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 3;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
        getContentPane().add(lblDatabase, gridBagConstraints);

        lblDatabaseTime.setText("!");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 3;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        getContentPane().add(lblDatabaseTime, gridBagConstraints);

        chkAuthors.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 5;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
        getContentPane().add(chkAuthors, gridBagConstraints);

        lblAuthors.setText("lblAuthors");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 5;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
        getContentPane().add(lblAuthors, gridBagConstraints);

        lblAuthorsTime.setText("!");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 5;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        getContentPane().add(lblAuthorsTime, gridBagConstraints);

        chkTags.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 7;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
        getContentPane().add(chkTags, gridBagConstraints);

        lblTags.setText("lblTags");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 7;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
        getContentPane().add(lblTags, gridBagConstraints);

        lblTagsTime.setText("!");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 7;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        getContentPane().add(lblTagsTime, gridBagConstraints);

        chkSeries.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 6;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
        getContentPane().add(chkSeries, gridBagConstraints);

        lblSeries.setText("lblSeries");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 6;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
        getContentPane().add(lblSeries, gridBagConstraints);

        lblSeriesTime.setText("!");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 6;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        getContentPane().add(lblSeriesTime, gridBagConstraints);

        chkRecent.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 8;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
        getContentPane().add(chkRecent, gridBagConstraints);

        lblRecent.setText("lblRecent");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 8;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
        getContentPane().add(lblRecent, gridBagConstraints);

        lblRecentTime.setText("!");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 8;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        getContentPane().add(lblRecentTime, gridBagConstraints);

        chkRated.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 9;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
        getContentPane().add(chkRated, gridBagConstraints);

        lblRated.setText("lblRated");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 9;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
        getContentPane().add(lblRated, gridBagConstraints);

        lblRatingTime.setText("!");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 9;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        getContentPane().add(lblRatingTime, gridBagConstraints);

        chkAllbooks.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 10;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
        getContentPane().add(chkAllbooks, gridBagConstraints);

        lblAllbooks.setText("lblAllbooks");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 10;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
        getContentPane().add(lblAllbooks, gridBagConstraints);

        lblAllbooksTime.setText("!");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 10;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        getContentPane().add(lblAllbooksTime, gridBagConstraints);

        chkFeaturedBooks.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 4;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
        getContentPane().add(chkFeaturedBooks, gridBagConstraints);

        lblFeaturedBooks.setText("lblFeaturedBooks");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 4;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
        getContentPane().add(lblFeaturedBooks, gridBagConstraints);

        lblFeaturedBooksTime.setText("!");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 4;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        getContentPane().add(lblFeaturedBooksTime, gridBagConstraints);

        chkCustomCatalogs.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 11;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
        getContentPane().add(chkCustomCatalogs, gridBagConstraints);

        lblCustomCatalogs.setText("lblCustomCatalogs");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 11;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
        getContentPane().add(lblCustomCatalogs, gridBagConstraints);

        lblCustomCatalogsTime.setText("!");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 11;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        getContentPane().add(lblCustomCatalogsTime, gridBagConstraints);

        chkReprocessingEpubMetadata.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 15;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
        getContentPane().add(chkReprocessingEpubMetadata, gridBagConstraints);

        lblReprocessingEpubMetadata.setText("lblReprocessingEpubMetadata");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 15;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
        getContentPane().add(lblReprocessingEpubMetadata, gridBagConstraints);

        lblReprocessingEpubMetadataTime.setText("!");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 15;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        getContentPane().add(lblReprocessingEpubMetadataTime, gridBagConstraints);

        chkIndex.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 14;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
        getContentPane().add(chkIndex, gridBagConstraints);

        lblIndex.setText("lblIndex");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 14;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
        getContentPane().add(lblIndex, gridBagConstraints);

        lblIndexTime.setText("!");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 14;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        getContentPane().add(lblIndexTime, gridBagConstraints);

        chkCopyLibToTarget.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 16;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
        getContentPane().add(chkCopyLibToTarget, gridBagConstraints);

        lblCopyLibToTarget.setText("lblCopyLibToTarget");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 16;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
        getContentPane().add(lblCopyLibToTarget, gridBagConstraints);

        lblCopyLibraryTime.setText("!");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 16;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        getContentPane().add(lblCopyLibraryTime, gridBagConstraints);

        chkCopyCatToTarget.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 17;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
        getContentPane().add(chkCopyCatToTarget, gridBagConstraints);

        lblCopyCatToTarget.setText("lblCopyCatToTarget");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 17;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
        getContentPane().add(lblCopyCatToTarget, gridBagConstraints);

        lblCopyCatalogTime.setText("!");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 17;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        getContentPane().add(lblCopyCatalogTime, gridBagConstraints);

        chkFinished.setEnabled(false);
        chkFinished.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                chkFinishedActionPerformed(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 20;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
        getContentPane().add(chkFinished, gridBagConstraints);

        lblFinished.setText("lblFinished");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 20;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
        getContentPane().add(lblFinished, gridBagConstraints);
        lblFinished.getAccessibleContext().setAccessibleName("null");

        lblFinishedTime.setText("!");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 20;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        getContentPane().add(lblFinishedTime, gridBagConstraints);

        lblStepMessage.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        lblStepMessage.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        lblStepMessage.setMaximumSize(new java.awt.Dimension(600, 20));
        lblStepMessage.setMinimumSize(new java.awt.Dimension(600, 0));
        lblStepMessage.setPreferredSize(new java.awt.Dimension(600, 20));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 21;
        gridBagConstraints.gridwidth = 3;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        gridBagConstraints.insets = new java.awt.Insets(15, 5, 5, 5);
        getContentPane().add(lblStepMessage, gridBagConstraints);

        lblStoppingGeneration.setText("lblStoppingGeneration");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 22;
        gridBagConstraints.gridwidth = 2;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        getContentPane().add(lblStoppingGeneration, gridBagConstraints);

        lblZipCatalog.setText("lblZipCatalog");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 19;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
        getContentPane().add(lblZipCatalog, gridBagConstraints);

        lblZipCatalogTime.setText("!");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 19;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
        getContentPane().add(lblZipCatalogTime, gridBagConstraints);

        chkZipCatalog.setEnabled(false);
        chkZipCatalog.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                chkZipCatalogActionPerformed(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 19;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
        getContentPane().add(chkZipCatalog, gridBagConstraints);

        pack();
    }// </editor-fold>//GEN-END:initComponents

  private void cmdStopGeneratingActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdStopGeneratingActionPerformed
    actionStopGenerating();
  }//GEN-LAST:event_cmdStopGeneratingActionPerformed

  private void cmdStopGeneratingMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_cmdStopGeneratingMouseClicked
  }//GEN-LAST:event_cmdStopGeneratingMouseClicked

    private void chkFinishedActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chkFinishedActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_chkFinishedActionPerformed

    private void chkZipCatalogActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chkZipCatalogActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_chkZipCatalogActionPerformed

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JCheckBox chkAllbooks;
    private javax.swing.JCheckBox chkAuthors;
    private javax.swing.JCheckBox chkCopyCatToTarget;
    private javax.swing.JCheckBox chkCopyLibToTarget;
    private javax.swing.JCheckBox chkCustomCatalogs;
    private javax.swing.JCheckBox chkDatabase;
    private javax.swing.JCheckBox chkFeaturedBooks;
    private javax.swing.JCheckBox chkFinished;
    private javax.swing.JCheckBox chkIndex;
    private javax.swing.JCheckBox chkRated;
    private javax.swing.JCheckBox chkRecent;
    private javax.swing.JCheckBox chkReprocessingEpubMetadata;
    private javax.swing.JCheckBox chkSeries;
    private javax.swing.JCheckBox chkStarted;
    private javax.swing.JCheckBox chkTags;
    private javax.swing.JCheckBox chkZipCatalog;
    private javax.swing.JButton cmdStopGenerating;
    private javax.swing.JProgressBar jProgressStep;
    private javax.swing.JLabel lblAllbooks;
    private javax.swing.JLabel lblAllbooksTime;
    private javax.swing.JLabel lblAuthors;
    private javax.swing.JLabel lblAuthorsTime;
    private javax.swing.JLabel lblCopyCatToTarget;
    private javax.swing.JLabel lblCopyCatalogTime;
    private javax.swing.JLabel lblCopyLibToTarget;
    private javax.swing.JLabel lblCopyLibraryTime;
    private javax.swing.JLabel lblCustomCatalogs;
    private javax.swing.JLabel lblCustomCatalogsTime;
    private javax.swing.JLabel lblDatabase;
    private javax.swing.JLabel lblDatabaseTime;
    private javax.swing.JLabel lblFeaturedBooks;
    private javax.swing.JLabel lblFeaturedBooksTime;
    private javax.swing.JLabel lblFinished;
    private javax.swing.JLabel lblFinishedTime;
    private javax.swing.JLabel lblIndex;
    private javax.swing.JLabel lblIndexTime;
    private javax.swing.JLabel lblRated;
    private javax.swing.JLabel lblRatingTime;
    private javax.swing.JLabel lblRecent;
    private javax.swing.JLabel lblRecentTime;
    private javax.swing.JLabel lblReprocessingEpubMetadata;
    private javax.swing.JLabel lblReprocessingEpubMetadataTime;
    private javax.swing.JLabel lblSeries;
    private javax.swing.JLabel lblSeriesTime;
    private javax.swing.JLabel lblStarted;
    private javax.swing.JLabel lblStartedTime;
    private javax.swing.JLabel lblStepMessage;
    private javax.swing.JLabel lblStoppingGeneration;
    private javax.swing.JLabel lblTags;
    private javax.swing.JLabel lblTagsTime;
    private javax.swing.JLabel lblZipCatalog;
    private javax.swing.JLabel lblZipCatalogTime;
    // End of variables declaration//GEN-END:variables

}
