Please take time to read the code disclaimer.

<--Go back to Kent's Projects

<--Go back to project post

/**
 * TitleInfoDialog.java
 *
 * Created on Nov 9, 2011, 11:06:33 AM
 */
package encodergui;

import broadscope.StaticClass;
import encodequerygenerator.*;
import java.util.*;
import java.util.logging.*;
import javax.swing.*;
import java.awt.*;
import java.io.*;

/**
 *
 * @author Video
 */
public class TitleInfoDialog extends javax.swing.JDialog {

  private Title currentTitle;
  private LinkedList chapterList;
  private LinkedList languageList;
  private LinkedList languageTextFieldList = new LinkedList();
  private LinkedList trackIgnoreCheckBoxList = new LinkedList();
  private LinkedList trackRadioButtonsList = new LinkedList();
  private LinkedList previewSlidersList = new LinkedList();
  private LinkedList previewLablesList = new LinkedList();
  private ChapterTableModel chapterTableModel;

  /** Creates new form TitleInfoDialog
   * @param parent
   * @param modal
   * @param currentTitle  
   */
  public TitleInfoDialog(java.awt.Frame parent, boolean modal, Title currentTitle) {
    super(parent, modal);
    this.currentTitle = currentTitle;
    this.languageList = currentTitle.getLanguageGroup().getLanguageList();
    this.chapterList = currentTitle.getChapterList();
    this.chapterTableModel = new ChapterTableModel(chapterList);
    initComponents();
    myInitComponents();
  }

  /** This method is called from within the constructor to
   * initialize the form.
   * WARNING: Do NOT modify this code. The content of this method is
   * always regenerated by the Form Editor.
   */
  @SuppressWarnings("unchecked")
    // //GEN-BEGIN:initComponents
    private void initComponents() {
        java.awt.GridBagConstraints gridBagConstraints;

        previewAudioRadioButtonGroup = new javax.swing.ButtonGroup();
        windowLabel = new javax.swing.JLabel();
        languagesPanel = new javax.swing.JPanel();
        languagePanelLeft = new javax.swing.JPanel();
        trackLabel1 = new javax.swing.JLabel();
        trackRadio1 = new javax.swing.JRadioButton();
        languageTextField1 = new javax.swing.JTextField();
        trackIgnoreCheckBox1 = new javax.swing.JCheckBox();
        trackLabel2 = new javax.swing.JLabel();
        trackRadio2 = new javax.swing.JRadioButton();
        languageTextField2 = new javax.swing.JTextField();
        trackIgnoreCheckBox2 = new javax.swing.JCheckBox();
        trackLabel3 = new javax.swing.JLabel();
        trackRadio3 = new javax.swing.JRadioButton();
        languageTextField3 = new javax.swing.JTextField();
        trackIgnoreCheckBox3 = new javax.swing.JCheckBox();
        trackLabel4 = new javax.swing.JLabel();
        trackRadio4 = new javax.swing.JRadioButton();
        languageTextField4 = new javax.swing.JTextField();
        trackIgnoreCheckBox4 = new javax.swing.JCheckBox();
        trackLabel5 = new javax.swing.JLabel();
        trackRadio5 = new javax.swing.JRadioButton();
        languageTextField5 = new javax.swing.JTextField();
        trackIgnoreCheckBox5 = new javax.swing.JCheckBox();
        trackLabel6 = new javax.swing.JLabel();
        trackRadio6 = new javax.swing.JRadioButton();
        languageTextField6 = new javax.swing.JTextField();
        trackIgnoreCheckBox6 = new javax.swing.JCheckBox();
        trackLabel7 = new javax.swing.JLabel();
        trackRadio7 = new javax.swing.JRadioButton();
        languageTextField7 = new javax.swing.JTextField();
        trackIgnoreCheckBox7 = new javax.swing.JCheckBox();
        trackLabel8 = new javax.swing.JLabel();
        trackRadio8 = new javax.swing.JRadioButton();
        languageTextField8 = new javax.swing.JTextField();
        trackIgnoreCheckBox8 = new javax.swing.JCheckBox();
        makeChangesToggleButton = new javax.swing.JToggleButton();
        chapterScollPane = new javax.swing.JScrollPane();
        chapterTable = new javax.swing.JTable();
        goBackButton = new javax.swing.JButton();
        previewPanel = new javax.swing.JPanel();
        previewStartLabel = new javax.swing.JLabel();
        previewStartValueLabel = new javax.swing.JLabel();
        startUnitsLabel = new javax.swing.JLabel();
        previewStartSlider = new javax.swing.JSlider();
        previewLengthLabel = new javax.swing.JLabel();
        previewLengthValueLabel = new javax.swing.JLabel();
        lengthUnitsLabel = new javax.swing.JLabel();
        previewLengthSlider = new javax.swing.JSlider();
        previewChapterButton = new javax.swing.JButton();
        previewButtonsPanel = new javax.swing.JPanel();
        ignoreTitleCheckBox = new javax.swing.JCheckBox();
        removeButton = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle(setWindowTitle());
        getContentPane().setLayout(new java.awt.GridBagLayout());

        windowLabel.setText(setLabel());
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.gridwidth = 2;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
        gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
        getContentPane().add(windowLabel, gridBagConstraints);

        languagesPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Audio Track Info"));
        languagesPanel.setLayout(new java.awt.GridBagLayout());

        languagePanelLeft.setLayout(new java.awt.GridBagLayout());

        trackLabel1.setText(" 1 ");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
        languagePanelLeft.add(trackLabel1, gridBagConstraints);

        previewAudioRadioButtonGroup.add(trackRadio1);
        trackRadio1.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 0;
        languagePanelLeft.add(trackRadio1, gridBagConstraints);

        languageTextField1.setText("Language 1");
        languageTextField1.setEnabled(false);
        languageTextField1.setName(""); // NOI18N
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.ipadx = 100;
        languagePanelLeft.add(languageTextField1, gridBagConstraints);

        trackIgnoreCheckBox1.setText("Ignore");
        trackIgnoreCheckBox1.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 3;
        gridBagConstraints.gridy = 0;
        languagePanelLeft.add(trackIgnoreCheckBox1, gridBagConstraints);

        trackLabel2.setText(" 2 ");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
        languagePanelLeft.add(trackLabel2, gridBagConstraints);

        previewAudioRadioButtonGroup.add(trackRadio2);
        trackRadio2.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 1;
        languagePanelLeft.add(trackRadio2, gridBagConstraints);

        languageTextField2.setText("Language 2");
        languageTextField2.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.ipadx = 100;
        languagePanelLeft.add(languageTextField2, gridBagConstraints);

        trackIgnoreCheckBox2.setText("Ignore");
        trackIgnoreCheckBox2.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 3;
        gridBagConstraints.gridy = 1;
        languagePanelLeft.add(trackIgnoreCheckBox2, gridBagConstraints);

        trackLabel3.setText(" 3 ");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
        languagePanelLeft.add(trackLabel3, gridBagConstraints);

        previewAudioRadioButtonGroup.add(trackRadio3);
        trackRadio3.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 2;
        languagePanelLeft.add(trackRadio3, gridBagConstraints);

        languageTextField3.setText("Language 3");
        languageTextField3.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.ipadx = 100;
        languagePanelLeft.add(languageTextField3, gridBagConstraints);

        trackIgnoreCheckBox3.setText("Ignore");
        trackIgnoreCheckBox3.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 3;
        gridBagConstraints.gridy = 2;
        languagePanelLeft.add(trackIgnoreCheckBox3, gridBagConstraints);

        trackLabel4.setText(" 4 ");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 3;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
        languagePanelLeft.add(trackLabel4, gridBagConstraints);

        previewAudioRadioButtonGroup.add(trackRadio4);
        trackRadio4.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 3;
        languagePanelLeft.add(trackRadio4, gridBagConstraints);

        languageTextField4.setText("Language 4");
        languageTextField4.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 3;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.ipadx = 100;
        languagePanelLeft.add(languageTextField4, gridBagConstraints);

        trackIgnoreCheckBox4.setText("Ignore");
        trackIgnoreCheckBox4.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 3;
        gridBagConstraints.gridy = 3;
        languagePanelLeft.add(trackIgnoreCheckBox4, gridBagConstraints);

        trackLabel5.setText(" 5 ");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 4;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
        languagePanelLeft.add(trackLabel5, gridBagConstraints);

        previewAudioRadioButtonGroup.add(trackRadio5);
        trackRadio5.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 4;
        languagePanelLeft.add(trackRadio5, gridBagConstraints);

        languageTextField5.setText("Language 5");
        languageTextField5.setToolTipText("test");
        languageTextField5.setEnabled(false);
        languageTextField5.setName(""); // NOI18N
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 4;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.ipadx = 100;
        languagePanelLeft.add(languageTextField5, gridBagConstraints);

        trackIgnoreCheckBox5.setText("Ignore");
        trackIgnoreCheckBox5.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 3;
        gridBagConstraints.gridy = 4;
        languagePanelLeft.add(trackIgnoreCheckBox5, gridBagConstraints);

        trackLabel6.setText(" 6 ");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 5;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
        languagePanelLeft.add(trackLabel6, gridBagConstraints);

        previewAudioRadioButtonGroup.add(trackRadio6);
        trackRadio6.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 5;
        languagePanelLeft.add(trackRadio6, gridBagConstraints);

        languageTextField6.setText("Language 6");
        languageTextField6.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 5;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.ipadx = 100;
        languagePanelLeft.add(languageTextField6, gridBagConstraints);

        trackIgnoreCheckBox6.setText("Ignore");
        trackIgnoreCheckBox6.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 3;
        gridBagConstraints.gridy = 5;
        languagePanelLeft.add(trackIgnoreCheckBox6, gridBagConstraints);

        trackLabel7.setText(" 7 ");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 6;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
        languagePanelLeft.add(trackLabel7, gridBagConstraints);

        previewAudioRadioButtonGroup.add(trackRadio7);
        trackRadio7.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 6;
        languagePanelLeft.add(trackRadio7, gridBagConstraints);

        languageTextField7.setText("Language 7");
        languageTextField7.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 6;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.ipadx = 100;
        languagePanelLeft.add(languageTextField7, gridBagConstraints);

        trackIgnoreCheckBox7.setText("Ignore");
        trackIgnoreCheckBox7.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 3;
        gridBagConstraints.gridy = 6;
        languagePanelLeft.add(trackIgnoreCheckBox7, gridBagConstraints);

        trackLabel8.setText(" 8 ");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 7;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
        languagePanelLeft.add(trackLabel8, gridBagConstraints);

        previewAudioRadioButtonGroup.add(trackRadio8);
        trackRadio8.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 7;
        languagePanelLeft.add(trackRadio8, gridBagConstraints);

        languageTextField8.setText("Language 8");
        languageTextField8.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 7;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.ipadx = 100;
        languagePanelLeft.add(languageTextField8, gridBagConstraints);

        trackIgnoreCheckBox8.setText("Ignore");
        trackIgnoreCheckBox8.setEnabled(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 3;
        gridBagConstraints.gridy = 7;
        languagePanelLeft.add(trackIgnoreCheckBox8, gridBagConstraints);

        languagesPanel.add(languagePanelLeft, new java.awt.GridBagConstraints());

        makeChangesToggleButton.setText("Make Changes");
        makeChangesToggleButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                makeChangesToggleButtonActionPerformed(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
        languagesPanel.add(makeChangesToggleButton, gridBagConstraints);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
        getContentPane().add(languagesPanel, gridBagConstraints);

        chapterTable.setModel(chapterTableModel);
        chapterScollPane.setViewportView(chapterTable);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
        gridBagConstraints.weightx = 0.5;
        gridBagConstraints.weighty = 0.5;
        getContentPane().add(chapterScollPane, gridBagConstraints);

        goBackButton.setText("<- Go Back");
        goBackButton.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                goBackButtonMouseClicked(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 3;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHWEST;
        gridBagConstraints.insets = new java.awt.Insets(18, 10, 7, 0);
        getContentPane().add(goBackButton, gridBagConstraints);

        previewPanel.setLayout(new java.awt.GridBagLayout());

        previewStartLabel.setText("Preview Start");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
        gridBagConstraints.weightx = 0.1;
        gridBagConstraints.insets = new java.awt.Insets(8, 5, 2, 2);
        previewPanel.add(previewStartLabel, gridBagConstraints);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
        gridBagConstraints.insets = new java.awt.Insets(8, 2, 2, 2);
        previewPanel.add(previewStartValueLabel, gridBagConstraints);

        startUnitsLabel.setText("sec");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.weighty = 0.1;
        gridBagConstraints.insets = new java.awt.Insets(8, 2, 2, 2);
        previewPanel.add(startUnitsLabel, gridBagConstraints);

        previewStartSlider.addChangeListener(new javax.swing.event.ChangeListener() {
            public void stateChanged(javax.swing.event.ChangeEvent evt) {
                previewStartSliderStateChanged(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.gridwidth = 3;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.insets = new java.awt.Insets(5, 5, 10, 5);
        previewPanel.add(previewStartSlider, gridBagConstraints);

        previewLengthLabel.setText("Preview Length");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
        gridBagConstraints.weightx = 0.1;
        gridBagConstraints.insets = new java.awt.Insets(8, 5, 2, 2);
        previewPanel.add(previewLengthLabel, gridBagConstraints);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
        gridBagConstraints.insets = new java.awt.Insets(8, 2, 2, 2);
        previewPanel.add(previewLengthValueLabel, gridBagConstraints);

        lengthUnitsLabel.setText("sec");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.insets = new java.awt.Insets(8, 2, 2, 2);
        previewPanel.add(lengthUnitsLabel, gridBagConstraints);

        previewLengthSlider.addChangeListener(new javax.swing.event.ChangeListener() {
            public void stateChanged(javax.swing.event.ChangeEvent evt) {
                previewLengthSliderStateChanged(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 3;
        gridBagConstraints.gridwidth = 3;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
        previewPanel.add(previewLengthSlider, gridBagConstraints);

        previewChapterButton.setText("Preview Selected");
        previewChapterButton.setToolTipText("Select one of the audio tracks and click here to preview");
        previewChapterButton.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                previewChapterButtonMouseClicked(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 4;
        gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
        previewPanel.add(previewChapterButton, gridBagConstraints);

        previewButtonsPanel.setLayout(new java.awt.GridBagLayout());
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 5;
        gridBagConstraints.gridwidth = 3;
        previewPanel.add(previewButtonsPanel, gridBagConstraints);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 3;
        gridBagConstraints.ipadx = 50;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10);
        getContentPane().add(previewPanel, gridBagConstraints);

        ignoreTitleCheckBox.setSelected(currentTitle.isIgnore());
        ignoreTitleCheckBox.setText("Ignore Title?");
        ignoreTitleCheckBox.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                ignoreTitleCheckBoxItemStateChanged(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
        gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
        getContentPane().add(ignoreTitleCheckBox, gridBagConstraints);

        removeButton.setText("Remove?");
        removeButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                removeButtonActionPerformed(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
        gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
        getContentPane().add(removeButton, gridBagConstraints);

        pack();
    }// //GEN-END:initComponents

  //
  private void goBackButtonMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_goBackButtonMouseClicked
    this.setVisible(false);
    this.dispose();
  }//GEN-LAST:event_goBackButtonMouseClicked

  private void makeChangesToggleButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_makeChangesToggleButtonActionPerformed
    if (makeChangesToggleButton.isSelected()) {
      makeChangesToggleButton.setText("Submit Changes");
      changeLanguageLockStatus(true);
    } else {
      submitChanges();
      makeChangesToggleButton.setText("Make Changes");
      changeLanguageLockStatus(false);
    }
  }//GEN-LAST:event_makeChangesToggleButtonActionPerformed

  private void previewChapterButtonMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_previewChapterButtonMouseClicked
    String filepath = preview();
    if (filepath.equals("ERROR")) {
      JOptionPane.showMessageDialog(this, "Please select a Language Track and Chapter");
    } else {
      openPreview(filepath);
    }
  }//GEN-LAST:event_previewChapterButtonMouseClicked

  private void previewStartSliderStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_previewStartSliderStateChanged
    setPreviewLabels();
  }//GEN-LAST:event_previewStartSliderStateChanged

  private void previewLengthSliderStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_previewLengthSliderStateChanged
    setPreviewLabels();
  }//GEN-LAST:event_previewLengthSliderStateChanged

  private void ignoreTitleCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_ignoreTitleCheckBoxItemStateChanged
    currentTitle.setIgnore(ignoreTitleCheckBox.isSelected());
  }//GEN-LAST:event_ignoreTitleCheckBoxItemStateChanged

  private void removeButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_removeButtonActionPerformed
    int choice = JOptionPane.showConfirmDialog(this, "Are you sure you want to remove this?" + StaticClass.newline + "You will not be able to recover from this action.", "Confirm removal", 0);
    if (choice == 0) {
      DVD dvd = currentTitle.getDvd();
      dvd.getTitleList().remove(currentTitle);
      this.dispose();
    }
  }//GEN-LAST:event_removeButtonActionPerformed
  //

  //
  /**
   * This is the stuff I like to initiate
   */
  private void myInitComponents() {
    int rowHeight = chapterTable.getRowHeight();
    int tableHeight = rowHeight * chapterList.size();
    chapterScollPane.setPreferredSize(new Dimension(200, tableHeight + 28));
    chapterTable.setPreferredSize(new Dimension(200, tableHeight));
    setLanguageObjects();
    setPreviewObjects();
    updateAllLanguages();
    StaticClass.addFullLogo(getContentPane(), getClass(), true, 150, java.awt.GridBagConstraints.CENTER, true);
    StaticClass.centerAndPack(this);
    StaticClass.setUnifiedColor(rootPane, java.awt.Color.white);
  }

  /**
   * This method sets the lists of gui objects
   */
  public void setLanguageObjects() {
    languageTextFieldList.add(languageTextField1);
    languageTextFieldList.add(languageTextField2);
    languageTextFieldList.add(languageTextField3);
    languageTextFieldList.add(languageTextField4);
    languageTextFieldList.add(languageTextField5);
    languageTextFieldList.add(languageTextField6);
    languageTextFieldList.add(languageTextField7);
    languageTextFieldList.add(languageTextField8);
    trackIgnoreCheckBoxList.add(trackIgnoreCheckBox1);
    trackIgnoreCheckBoxList.add(trackIgnoreCheckBox2);
    trackIgnoreCheckBoxList.add(trackIgnoreCheckBox3);
    trackIgnoreCheckBoxList.add(trackIgnoreCheckBox4);
    trackIgnoreCheckBoxList.add(trackIgnoreCheckBox5);
    trackIgnoreCheckBoxList.add(trackIgnoreCheckBox6);
    trackIgnoreCheckBoxList.add(trackIgnoreCheckBox7);
    trackIgnoreCheckBoxList.add(trackIgnoreCheckBox8);
    trackRadioButtonsList.add(trackRadio1);
    trackRadioButtonsList.add(trackRadio2);
    trackRadioButtonsList.add(trackRadio3);
    trackRadioButtonsList.add(trackRadio4);
    trackRadioButtonsList.add(trackRadio5);
    trackRadioButtonsList.add(trackRadio6);
    trackRadioButtonsList.add(trackRadio7);
    trackRadioButtonsList.add(trackRadio8);
    for (int i = 0; i < languageList.size(); i++) {
      trackRadioButtonsList.get(i).setEnabled(true);
    }
    if (!languageList.isEmpty()) {
      trackRadio1.setSelected(true);
    }
    if (!chapterList.isEmpty()) {
      ListSelectionModel selectionModel = chapterTable.getSelectionModel();
      selectionModel.setSelectionInterval(0, 0);
    }
  }

  /**
   * This method sets the Preview Objects
   */
  public void setPreviewObjects() {
    int min = 1;
    int max = 10;
    int majorTick = 4;
    int minorTick = 1;
    previewSlidersList.add(previewStartSlider);
    previewSlidersList.add(previewLengthSlider);
    previewLablesList.add(previewStartValueLabel);
    previewLablesList.add(previewLengthValueLabel);
    for (int i = 0; i < previewSlidersList.size(); i++) {
      if (i == 0) {
        max = 20;
      } else if (i == 1) {
        max = 60;
      }
      majorTick = (max - min) / 5;
      minorTick = majorTick / 5;
      previewSlidersList.get(i).setMinimum(min);
      previewSlidersList.get(i).setMaximum(max);
      previewSlidersList.get(i).setMajorTickSpacing(majorTick);
      previewSlidersList.get(i).setMinorTickSpacing(minorTick);
      previewSlidersList.get(i).setPaintLabels(true);
      previewSlidersList.get(i).setPaintTicks(true);
      previewSlidersList.get(i).setValue((max - min) / 4);
    }
  }

  /**
   * This method will set the values of the labels based on the sliders for the time limits
   */
  public void setPreviewLabels() {
    for (int i = 0; i < previewSlidersList.size(); i++) {
      previewLablesList.get(i).setText(Integer.toString(previewSlidersList.get(i).getValue()));
    }
  }

  /**
   * This allows us to set the label for the top but make sure the title exists first.
   * @return Label content
   */
  public String setLabel() {
    if (currentTitle == null) {
      return "No current Title. Please try again...";
    } else {
      return currentTitle.getDvd().getSeries().getName() + " - " + currentTitle.getDvd().getName() + " - Title " + currentTitle.getNumber();
    }
  }

  /**
   * This allows us to set the title for the window but make sure the title exists first.
   * @return title for the window
   */
  public String setWindowTitle() {
    if (currentTitle == null) {
      return "No current Title. Please try again...";
    } else {
      return "View info for Title " + currentTitle.getNumber();
    }
  }
  //

  //
  /**
   * This method will update the text for the Languages
   */
  public void updateAllLanguages() {
    clearLanguages();
    if (currentTitle != null) {
      if (languageList.size() == 0) {
        languageTextField1.setText("No");
        languageTextField2.setText("audio");
        languageTextField3.setText("Tracks?");
        languageTextField4.setText("Or");
        languageTextField5.setText("error");
        languageTextField6.setText("in");
        languageTextField7.setText("scanning");
        languageTextField8.setText("process!");
      }
      for (int i = 0; i <= languageList.size() - 1 && i <= 7; i++) {
        updateLanguageInfo(languageTextFieldList.get(i), trackIgnoreCheckBoxList.get(i), languageList.get(i).isIgnore(), languageList.get(i).getName());
      }
    }
  }

  /**
   * Updates specific info per language
   * @param languageTextField the field to be updated
   * @param trackIgnoreCheckBox set to be the value of ignore
   * @param ignore whether the language is to be ignored or not
   * @param languageName the text to be put in the languageTextField
   */
  public void updateLanguageInfo(JTextField languageTextField, JCheckBox trackIgnoreCheckBox, boolean ignore, String languageName) {
    if (ignore) {
      trackIgnoreCheckBox.setSelected(true);
    } else {
      trackIgnoreCheckBox.setSelected(false);
    }
    languageTextField.setText(languageName);
  }

  /**
   * This method clears all the text in the languages
   */
  public void clearLanguages() {
    for (JTextField languageTextField : languageTextFieldList) {
      languageTextField.setText("");
    }
  }

  /**
   * This method allows the user to edit the languages
   * @param enabled - whether or not we want them all enabled.
   */
  public void changeLanguageLockStatus(boolean enabled) {
    for (int i = 0; i < languageList.size(); i++) {
      languageTextFieldList.get(i).setEnabled(enabled);
      trackIgnoreCheckBoxList.get(i).setEnabled(enabled);
    }
  }

  /**
   * This method updates the changes whenever they are made
   */
  public void submitChanges() {
    for (int i = 0; i < languageList.size(); i++) {
      languageList.get(i).setName(languageTextFieldList.get(i).getText());
      languageList.get(i).setIgnore(trackIgnoreCheckBoxList.get(i).isSelected());
    }
    currentTitle.getLanguageGroup().resetLanguageHash();
  }
  //

  //
  /**
   * This method will create a file to preview the selected file
   * @return 
   */
  public String preview() {
    Language language = null;
    Chapter selectedChapter = null;
    DVD dvd = currentTitle.getDvd();
    String HBCLIFolder = currentTitle.getDvd().getSeries().getOwner().getHBCLIFolder();
    System.out.println("You are about to preview a chapter:");
    System.out.println("\t" + currentTitle.getDvd().getSeries());
    System.out.println("\t" + currentTitle.getDvd());
    System.out.println("\t" + currentTitle);
    boolean found = false;
    while (!found) {
      for (int i = 0; i < trackRadioButtonsList.size(); i++) {
        if (trackRadioButtonsList.get(i).isSelected()) {
          found = true;
          language = languageList.get(i);
          selectedChapter = chapterList.get(chapterTable.getSelectedRow());
          System.out.println("\t" + languageList.get(i));
          System.out.println("\t" + chapterList.get(chapterTable.getSelectedRow()));
          break;
        }
      }
      if (!found) {
        return "ERROR";
      }
    }
    String outputDirectory = currentTitle.getDvd().getSeries().getOwner().getPreviewFolder();
    if (!new File(outputDirectory).exists()) {
      new File(outputDirectory).mkdirs();
    }
    int previewStart = getPreviewStart(selectedChapter);
    int previewLength = previewLengthSlider.getValue();
    String output = outputDirectory + "\\Preview - " + language.getNumber() + " " + language.getName() + " - Title " + currentTitle.getNumber() + " - Chapter " + selectedChapter.getNumber() + ".m4v";
    String command = HBCLIFolder + "\\HandBrakeCLI -t " + currentTitle.getNumber() //Title number
            + " -a " + language.getNumber() //Audio track
            + " -o \"" + output + "\"" //Output directory and filename
            + " -i \"" + dvd.getDirectory() + "\"" //Input directory
            + " --start-at duration:" + previewStart //the start of the preview
            + " --stop-at duration:" + previewLength //the length of the preview
            + " -f mp4 --deinterlace=\"slower\" --strict-anamorphic  -e x264 -q 20 -E faac -6 dpl2 -R Auto -B 160 -D 0.0 -x ref=2:bframes=2:subq=6:mixed-refs=0:weightb=0:8x8dct=0:trellis=0 --verbose=1"; //Hardcoded settings
    try {
      Process p = Runtime.getRuntime().exec(String.format("cmd /c %s", command));
      HBCLIPreviewer stderr = new HBCLIPreviewer(p.getErrorStream());
      HBCLIPreviewer stdout = new HBCLIPreviewer(p.getInputStream());
      stderr.start();
      stdout.start();
      int exitValue = p.waitFor();
      if (exitValue == 0) {
        System.out.print(stdout.toString());
      } else {
        System.err.print(stderr.toString());
      }
    } catch (InterruptedException ex) {
      Logger.getLogger(TitleInfoDialog.class.getName()).log(Level.SEVERE, null, ex);
    } catch (IOException ex) {
      Logger.getLogger(TitleInfoDialog.class.getName()).log(Level.SEVERE, null, ex);
    }
    System.out.println("Command: " + command);
    return output;
  }

  /**
   * This method will find out what duration to give HBCLI to preview what they want on the chapter.
   */
  public int getPreviewStart(Chapter selectedChapter) {
    int previewStart = previewStartSlider.getValue();
    int durationToChapter = 0;
    for (int i = 0; i < chapterList.size(); i++) {
      if (chapterList.get(i) != selectedChapter) {
        durationToChapter += chapterList.get(i).getLength();
      } else {
        break;
      }
    }
    return previewStart + durationToChapter;
  }

  /**
   * This method will open the preview just run
   */
  public void openPreview(String filepath) {
    try {
      System.out.println("Filepath: " + filepath);
      File file = new File(filepath);
      Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL " + file);
    } catch (IOException ex) {
      Logger.getLogger(TitleInfoDialog.class.getName()).log(Level.SEVERE, null, ex);
    }
  }

  //
  /**
   * This method sets the radio button selection
   */
  public void setSelectedTrack(int trackNumber) {
    trackRadioButtonsList.get(trackNumber).setSelected(true);
  }

  /**
   * @param args the command line arguments
   */
  public static void main(String args[]) {
    /** Set the Nimbus look and feel */
    //
        /** If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
     * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
     */
    try {
      for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
        if ("Nimbus".equals(info.getName())) {
          javax.swing.UIManager.setLookAndFeel(info.getClassName());
          break;
        }
      }
    } catch (ClassNotFoundException ex) {
      java.util.logging.Logger.getLogger(TitleInfoDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (InstantiationException ex) {
      java.util.logging.Logger.getLogger(TitleInfoDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (IllegalAccessException ex) {
      java.util.logging.Logger.getLogger(TitleInfoDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (javax.swing.UnsupportedLookAndFeelException ex) {
      java.util.logging.Logger.getLogger(TitleInfoDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }
    //

    /** Create and display the dialog */
    java.awt.EventQueue.invokeLater(new Runnable() {

      public void run() {
        TitleInfoDialog dialog = new TitleInfoDialog(new javax.swing.JFrame(), true, new Title(new DVD(new Series(new DVDScanner(new EncodeFrame()), "NO SERIES!"), "NO DVD!")));
        dialog.addWindowListener(new java.awt.event.WindowAdapter() {

          @Override
          public void windowClosing(java.awt.event.WindowEvent e) {
            System.exit(0);
          }
        });
        dialog.setVisible(true);
      }
    });
  }
  //
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JScrollPane chapterScollPane;
    private javax.swing.JTable chapterTable;
    private javax.swing.JButton goBackButton;
    private javax.swing.JCheckBox ignoreTitleCheckBox;
    private javax.swing.JPanel languagePanelLeft;
    private javax.swing.JTextField languageTextField1;
    private javax.swing.JTextField languageTextField2;
    private javax.swing.JTextField languageTextField3;
    private javax.swing.JTextField languageTextField4;
    private javax.swing.JTextField languageTextField5;
    private javax.swing.JTextField languageTextField6;
    private javax.swing.JTextField languageTextField7;
    private javax.swing.JTextField languageTextField8;
    private javax.swing.JPanel languagesPanel;
    private javax.swing.JLabel lengthUnitsLabel;
    private javax.swing.JToggleButton makeChangesToggleButton;
    private javax.swing.ButtonGroup previewAudioRadioButtonGroup;
    private javax.swing.JPanel previewButtonsPanel;
    private javax.swing.JButton previewChapterButton;
    private javax.swing.JLabel previewLengthLabel;
    private javax.swing.JSlider previewLengthSlider;
    private javax.swing.JLabel previewLengthValueLabel;
    private javax.swing.JPanel previewPanel;
    private javax.swing.JLabel previewStartLabel;
    private javax.swing.JSlider previewStartSlider;
    private javax.swing.JLabel previewStartValueLabel;
    private javax.swing.JButton removeButton;
    private javax.swing.JLabel startUnitsLabel;
    private javax.swing.JCheckBox trackIgnoreCheckBox1;
    private javax.swing.JCheckBox trackIgnoreCheckBox2;
    private javax.swing.JCheckBox trackIgnoreCheckBox3;
    private javax.swing.JCheckBox trackIgnoreCheckBox4;
    private javax.swing.JCheckBox trackIgnoreCheckBox5;
    private javax.swing.JCheckBox trackIgnoreCheckBox6;
    private javax.swing.JCheckBox trackIgnoreCheckBox7;
    private javax.swing.JCheckBox trackIgnoreCheckBox8;
    private javax.swing.JLabel trackLabel1;
    private javax.swing.JLabel trackLabel2;
    private javax.swing.JLabel trackLabel3;
    private javax.swing.JLabel trackLabel4;
    private javax.swing.JLabel trackLabel5;
    private javax.swing.JLabel trackLabel6;
    private javax.swing.JLabel trackLabel7;
    private javax.swing.JLabel trackLabel8;
    private javax.swing.JRadioButton trackRadio1;
    private javax.swing.JRadioButton trackRadio2;
    private javax.swing.JRadioButton trackRadio3;
    private javax.swing.JRadioButton trackRadio4;
    private javax.swing.JRadioButton trackRadio5;
    private javax.swing.JRadioButton trackRadio6;
    private javax.swing.JRadioButton trackRadio7;
    private javax.swing.JRadioButton trackRadio8;
    private javax.swing.JLabel windowLabel;
    // End of variables declaration//GEN-END:variables
  //

  /**
   * @return the currentTitle
   */
  public Title getCurrentTitle() {
    return currentTitle;
  }

  /**
   * @param currentTitle the currentTitle to set
   */
  public void setCurrentTitle(Title currentTitle) {
    this.currentTitle = currentTitle;
  }
}