/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/*
* DownloadDataView.java
*
* Created on Jun 28, 2011, 9:00:04 AM
*/
package penny.downloadmanager.view;
import ca.odell.glazedlists.BasicEventList;
import ca.odell.glazedlists.EventList;
import ca.odell.glazedlists.GlazedLists;
import ca.odell.glazedlists.ObservableElementList;
import ca.odell.glazedlists.SortedList;
import ca.odell.glazedlists.swing.EventTableModel;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.Comparator;
import penny.download.Downloads;
import penny.downloadmanager.model.db.Download;
import penny.downloadmanager.model.gui.PropertyEntry;
import penny.downloadmanager.util.Util;
import penny.downloadmanager.view.converter.NumberToSizeConverter;
/**
*
* @author john
*/
public class DownloadDataView extends javax.swing.JDialog implements PropertyChangeListener, WindowListener {
private Download d;
private EventList<PropertyEntry> propertyList;
private EventList<PropertyEntry> extraList;
private EventTableModel<PropertyEntry> propertyModel;
private EventTableModel<PropertyEntry> extraModel;
/**
* Creates new form DownloadDataView
*/
public DownloadDataView(Download d) {
this.setLocationByPlatform(true);
this.d = d;
d.addPropertyChangeListener(this);
Comparator<PropertyEntry> comp = new Comparator<PropertyEntry>() {
@Override
public int compare(PropertyEntry o1, PropertyEntry o2) {
return o1.getKey().compareTo(o2.getKey());
}
};
this.propertyList = new ObservableElementList<PropertyEntry>(
GlazedLists.threadSafeList(new SortedList(new BasicEventList<PropertyEntry>(), comp)),
GlazedLists.beanConnector(PropertyEntry.class));
for (String s : Download.propertyNames) {
PropertyEntry e = new PropertyEntry(s, getPropValue(s));
d.addPropertyChangeListener(e);
propertyList.add(e);
}
propertyModel = new EventTableModel<PropertyEntry>(propertyList, new String[]{PropertyEntry.PROP_KEY, PropertyEntry.PROP_VALUE}, new String[]{PropertyEntry.PROP_KEY, PropertyEntry.PROP_VALUE}, new boolean[]{false, false});
this.extraList = new ObservableElementList<PropertyEntry>(
GlazedLists.threadSafeList(new SortedList(new BasicEventList<PropertyEntry>(), comp)),
GlazedLists.beanConnector(PropertyEntry.class));
for (String s : d.getExtraProperties().keySet()) {
PropertyEntry e = new PropertyEntry(s, d.getExtraProperties().get(s));
d.addPropertyChangeListener(e);
extraList.add(e);
}
extraModel = new EventTableModel<PropertyEntry>(extraList, new String[]{PropertyEntry.PROP_KEY, PropertyEntry.PROP_VALUE}, new String[]{PropertyEntry.PROP_KEY, PropertyEntry.PROP_VALUE}, new boolean[]{false, false});
initComponents();
jSplitPane1.setDividerLocation(.5);
}
public Download getDownload() {
return d;
}
/**
* 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")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
bindingGroup = new org.jdesktop.beansbinding.BindingGroup();
downloadData = d;
uRLConverter = new penny.downloadmanager.view.converter.URLConverter();
mD5Converter = new penny.downloadmanager.view.converter.MD5Converter();
numberToSizeConverter = new NumberToSizeConverter(d);
bytesToStringConverter1 = new penny.downloadmanager.view.converter.BytesToStringConverter();
nanoToTimeStringConverter1 = new penny.downloadmanager.view.converter.NanoToTimeStringConverter();
jTabbedPane1 = new javax.swing.JTabbedPane();
jPanel1 = new javax.swing.JPanel();
progress = new javax.swing.JProgressBar();
urlText = new javax.swing.JTextField();
jLabel1 = new javax.swing.JLabel();
md5Text = new javax.swing.JTextField();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
saveText = new javax.swing.JTextField();
tempText = new javax.swing.JTextField();
jLabel4 = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
jTextField1 = new javax.swing.JTextField();
jLabel6 = new javax.swing.JLabel();
jTextField2 = new javax.swing.JTextField();
jLabel7 = new javax.swing.JLabel();
jLabel8 = new javax.swing.JLabel();
jTextField3 = new javax.swing.JTextField();
jLabel9 = new javax.swing.JLabel();
jTextField4 = new javax.swing.JTextField();
jLabel10 = new javax.swing.JLabel();
jTextField5 = new javax.swing.JTextField();
jLabel11 = new javax.swing.JLabel();
jTextField6 = new javax.swing.JTextField();
jLabel12 = new javax.swing.JLabel();
jTextField7 = new javax.swing.JTextField();
jScrollPane4 = new javax.swing.JScrollPane();
jList4 = new javax.swing.JList();
jPanel2 = new javax.swing.JPanel();
jSplitPane1 = new javax.swing.JSplitPane();
jScrollPane1 = new javax.swing.JScrollPane();
jList1 = new javax.swing.JList();
jScrollPane2 = new javax.swing.JScrollPane();
jList2 = new javax.swing.JList();
jPanel3 = new javax.swing.JPanel();
jScrollPane3 = new javax.swing.JScrollPane();
jList3 = new javax.swing.JList();
jPanel4 = new javax.swing.JPanel();
jScrollPane5 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();
jPanel5 = new javax.swing.JPanel();
jScrollPane6 = new javax.swing.JScrollPane();
jTable2 = new javax.swing.JTable();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
progress.setMaximum(10000);
org.jdesktop.beansbinding.Binding binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, downloadData, org.jdesktop.beansbinding.ELProperty.create("${downloaded}"), progress, org.jdesktop.beansbinding.BeanProperty.create("value"));
binding.setConverter(numberToSizeConverter);
bindingGroup.addBinding(binding);
urlText.setEditable(false);
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, downloadData, org.jdesktop.beansbinding.ELProperty.create("${url}"), urlText, org.jdesktop.beansbinding.BeanProperty.create("text"));
binding.setConverter(uRLConverter);
bindingGroup.addBinding(binding);
jLabel1.setText("MD5");
md5Text.setEditable(false);
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, downloadData, org.jdesktop.beansbinding.ELProperty.create("${MD5}"), md5Text, org.jdesktop.beansbinding.BeanProperty.create("text"));
binding.setConverter(mD5Converter);
bindingGroup.addBinding(binding);
jLabel2.setText("Save");
jLabel3.setText("Temp");
saveText.setEditable(false);
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, downloadData, org.jdesktop.beansbinding.ELProperty.create("${savePath}"), saveText, org.jdesktop.beansbinding.BeanProperty.create("text"));
bindingGroup.addBinding(binding);
tempText.setEditable(false);
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, downloadData, org.jdesktop.beansbinding.ELProperty.create("${tempPath}"), tempText, org.jdesktop.beansbinding.BeanProperty.create("text"));
bindingGroup.addBinding(binding);
jLabel4.setText("URL");
jLabel5.setText("Downloaded");
jTextField1.setEditable(false);
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, downloadData, org.jdesktop.beansbinding.ELProperty.create("${downloaded}"), jTextField1, org.jdesktop.beansbinding.BeanProperty.create("text"));
binding.setConverter(bytesToStringConverter1);
bindingGroup.addBinding(binding);
jLabel6.setText("Size");
jTextField2.setEditable(false);
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, downloadData, org.jdesktop.beansbinding.ELProperty.create("${size}"), jTextField2, org.jdesktop.beansbinding.BeanProperty.create("text"));
binding.setConverter(bytesToStringConverter1);
bindingGroup.addBinding(binding);
jLabel7.setText("Progress");
jLabel8.setText("Download Time");
jTextField3.setEditable(false);
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, downloadData, org.jdesktop.beansbinding.ELProperty.create("${downloadTime}"), jTextField3, org.jdesktop.beansbinding.BeanProperty.create("text"));
binding.setConverter(nanoToTimeStringConverter1);
bindingGroup.addBinding(binding);
jLabel9.setText("Retry Time");
jTextField4.setEditable(false);
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, downloadData, org.jdesktop.beansbinding.ELProperty.create("${retryTime}"), jTextField4, org.jdesktop.beansbinding.BeanProperty.create("text"));
binding.setConverter(nanoToTimeStringConverter1);
bindingGroup.addBinding(binding);
jLabel10.setText("Attempts");
jTextField5.setEditable(false);
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, downloadData, org.jdesktop.beansbinding.ELProperty.create("${attempts}"), jTextField5, org.jdesktop.beansbinding.BeanProperty.create("text"));
bindingGroup.addBinding(binding);
jLabel11.setText("Content Type");
jTextField6.setEditable(false);
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, downloadData, org.jdesktop.beansbinding.ELProperty.create("${contentType}"), jTextField6, org.jdesktop.beansbinding.BeanProperty.create("text"));
bindingGroup.addBinding(binding);
jLabel12.setText("Message");
jTextField7.setEditable(false);
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, downloadData, org.jdesktop.beansbinding.ELProperty.create("${message}"), jTextField7, org.jdesktop.beansbinding.BeanProperty.create("text"));
bindingGroup.addBinding(binding);
jScrollPane4.setBorder(javax.swing.BorderFactory.createTitledBorder("Locations"));
jList4.setModel(downloadData.getLocationsModel());
org.jdesktop.beansbinding.ELProperty eLProperty = org.jdesktop.beansbinding.ELProperty.create("${locations}");
org.jdesktop.swingbinding.JListBinding jListBinding = org.jdesktop.swingbinding.SwingBindings.createJListBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, downloadData, eLProperty, jList4);
bindingGroup.addBinding(jListBinding);
jScrollPane4.setViewportView(jList4);
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jScrollPane4, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 450, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel4)
.addComponent(jLabel1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(md5Text, javax.swing.GroupLayout.DEFAULT_SIZE, 401, Short.MAX_VALUE)
.addComponent(urlText, javax.swing.GroupLayout.DEFAULT_SIZE, 401, Short.MAX_VALUE)))
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel2)
.addComponent(jLabel3))
.addGap(4, 4, 4)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(tempText, javax.swing.GroupLayout.DEFAULT_SIZE, 402, Short.MAX_VALUE)
.addComponent(saveText, javax.swing.GroupLayout.DEFAULT_SIZE, 402, Short.MAX_VALUE)))
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup()
.addComponent(jLabel5)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 128, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 44, Short.MAX_VALUE)
.addComponent(jLabel6)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, 145, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup()
.addComponent(jLabel7)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(progress, javax.swing.GroupLayout.DEFAULT_SIZE, 368, Short.MAX_VALUE))
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup()
.addComponent(jLabel10)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTextField5, javax.swing.GroupLayout.PREFERRED_SIZE, 46, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel11)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTextField6, javax.swing.GroupLayout.PREFERRED_SIZE, 133, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup()
.addComponent(jLabel8)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, 106, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(jLabel9)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTextField4, javax.swing.GroupLayout.DEFAULT_SIZE, 98, Short.MAX_VALUE))
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup()
.addComponent(jLabel12)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTextField7, javax.swing.GroupLayout.DEFAULT_SIZE, 368, Short.MAX_VALUE)))
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel4)
.addComponent(urlText, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(md5Text, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2)
.addComponent(saveText, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel3)
.addComponent(tempText, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel5)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel6))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(progress, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel8)
.addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel9)
.addComponent(jTextField4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel10)
.addComponent(jTextField5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel11)
.addComponent(jTextField6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel12)
.addComponent(jTextField7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane4, javax.swing.GroupLayout.DEFAULT_SIZE, 179, Short.MAX_VALUE)
.addContainerGap())
);
jTabbedPane1.addTab("Download", jPanel1);
jSplitPane1.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);
jList1.setBorder(javax.swing.BorderFactory.createTitledBorder("src links"));
jList1.setModel(downloadData.getSrcLinksModel());
jScrollPane1.setViewportView(jList1);
jSplitPane1.setTopComponent(jScrollPane1);
jList2.setBorder(javax.swing.BorderFactory.createTitledBorder("href links"));
jList2.setModel(downloadData.getHrefLinksModel());
jScrollPane2.setViewportView(jList2);
jSplitPane1.setRightComponent(jScrollPane2);
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jSplitPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 446, Short.MAX_VALUE)
.addContainerGap())
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jSplitPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 469, Short.MAX_VALUE)
.addContainerGap())
);
jTabbedPane1.addTab("Links", jPanel2);
jScrollPane3.setBorder(javax.swing.BorderFactory.createTitledBorder("words"));
jList3.setModel(d.getWordsModel());
jScrollPane3.setViewportView(jList3);
javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 446, Short.MAX_VALUE)
.addContainerGap())
);
jPanel3Layout.setVerticalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 469, Short.MAX_VALUE)
.addContainerGap())
);
jTabbedPane1.addTab("Words", jPanel3);
jTable1.setModel(propertyModel);
jScrollPane5.setViewportView(jTable1);
javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
jPanel4.setLayout(jPanel4Layout);
jPanel4Layout.setHorizontalGroup(
jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel4Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane5, javax.swing.GroupLayout.DEFAULT_SIZE, 446, Short.MAX_VALUE)
.addContainerGap())
);
jPanel4Layout.setVerticalGroup(
jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel4Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane5, javax.swing.GroupLayout.DEFAULT_SIZE, 469, Short.MAX_VALUE)
.addContainerGap())
);
jTabbedPane1.addTab("Properties", jPanel4);
jTable2.setModel(extraModel);
jScrollPane6.setViewportView(jTable2);
javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5);
jPanel5.setLayout(jPanel5Layout);
jPanel5Layout.setHorizontalGroup(
jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel5Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane6, javax.swing.GroupLayout.DEFAULT_SIZE, 446, Short.MAX_VALUE)
.addContainerGap())
);
jPanel5Layout.setVerticalGroup(
jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel5Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane6, javax.swing.GroupLayout.DEFAULT_SIZE, 469, Short.MAX_VALUE)
.addContainerGap())
);
jTabbedPane1.addTab("Extra Properties", jPanel5);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 482, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jTabbedPane1)
);
bindingGroup.bind();
pack();
}// </editor-fold>//GEN-END:initComponents
// Variables declaration - do not modify//GEN-BEGIN:variables
private penny.downloadmanager.view.converter.BytesToStringConverter bytesToStringConverter1;
private penny.downloadmanager.model.db.Download downloadData;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel11;
private javax.swing.JLabel jLabel12;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JLabel jLabel9;
private javax.swing.JList jList1;
private javax.swing.JList jList2;
private javax.swing.JList jList3;
private javax.swing.JList jList4;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JScrollPane jScrollPane3;
private javax.swing.JScrollPane jScrollPane4;
private javax.swing.JScrollPane jScrollPane5;
private javax.swing.JScrollPane jScrollPane6;
private javax.swing.JSplitPane jSplitPane1;
private javax.swing.JTabbedPane jTabbedPane1;
private javax.swing.JTable jTable1;
private javax.swing.JTable jTable2;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField2;
private javax.swing.JTextField jTextField3;
private javax.swing.JTextField jTextField4;
private javax.swing.JTextField jTextField5;
private javax.swing.JTextField jTextField6;
private javax.swing.JTextField jTextField7;
private penny.downloadmanager.view.converter.MD5Converter mD5Converter;
private javax.swing.JTextField md5Text;
private penny.downloadmanager.view.converter.NanoToTimeStringConverter nanoToTimeStringConverter1;
private penny.downloadmanager.view.converter.NumberToSizeConverter numberToSizeConverter;
private javax.swing.JProgressBar progress;
private javax.swing.JTextField saveText;
private javax.swing.JTextField tempText;
private penny.downloadmanager.view.converter.URLConverter uRLConverter;
private javax.swing.JTextField urlText;
private org.jdesktop.beansbinding.BindingGroup bindingGroup;
// End of variables declaration//GEN-END:variables
private String getPropValue(String key) {
return Util.toFormattedString(d, key);
}
@Override
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getSource().equals(d)) {
boolean add = true;
for (PropertyEntry i : propertyList) {
if (i.getKey().equals(evt.getPropertyName())) {
add = false;
}
}
if (add) {
for (PropertyEntry e : extraList) {
if (e.getKey().equals(evt.getPropertyName())) {
add = false;
}
}
}
if (add) {
PropertyEntry entry = new PropertyEntry(evt.getPropertyName(), d.getExtraProperties().get(evt.getPropertyName()));
d.addPropertyChangeListener(entry);
extraList.add(entry);
}
}
}
@Override
public void windowOpened(WindowEvent e) {
}
@Override
public void windowClosing(WindowEvent e) {
for (PropertyEntry entry : propertyList) {
d.removePropertyChangeListener(entry);
}
for (PropertyEntry entry : extraList) {
d.removePropertyChangeListener(entry);
}
}
@Override
public void windowClosed(WindowEvent e) {
}
@Override
public void windowIconified(WindowEvent e) {
}
@Override
public void windowDeiconified(WindowEvent e) {
}
@Override
public void windowActivated(WindowEvent e) {
}
@Override
public void windowDeactivated(WindowEvent e) {
}
}