Please take time to read the code disclaimer.
/**
* 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;
}
}