package me.escapeNT.pail.GUIComponents;
import java.util.logging.Level;
import javax.swing.JOptionPane;
import me.escapeNT.pail.Util.Localizable;
import me.escapeNT.pail.Util.UpdateHandler;
import me.escapeNT.pail.Util.Util;
/**
* Dialog displaying update status and progress.
* @author escapeNT
*/
public class UpdateView extends javax.swing.JDialog implements Localizable {
private static UpdateView instance;
/**
* @return the instance
*/
public static UpdateView getInstance() {
return instance;
}
/**
* @param aInstance the instance to set
*/
public static void setInstance(UpdateView aInstance) {
instance = aInstance;
}
/** Creates new form UpdateView */
public UpdateView() {
setInstance(this);
pack();
setLocationRelativeTo(Util.getPlugin().getMainWindow());
setModal(true);
initComponents();
setResizable(false);
setSize(475, 310);
getRootPane().setDefaultButton(update);
changes.append(Util.translate("Version ") + UpdateHandler.getCurrentVersion() + ":\n");
for(String s : UpdateHandler.getChanges()) {
changes.append("\n • " + Util.translate(s));
}
translateComponent();
}
/** This method is called from within the constructor to
* initialize the form.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
progress = new javax.swing.JProgressBar();
progressLabel = new javax.swing.JLabel();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jScrollPane1 = new javax.swing.JScrollPane();
changes = new javax.swing.JTextArea();
update = new javax.swing.JButton();
Ignore = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("Update Available");
getContentPane().setLayout(null);
getContentPane().add(progress);
progress.setBounds(20, 240, 440, 20);
progressLabel.setText(" ");
getContentPane().add(progressLabel);
progressLabel.setBounds(20, 260, 440, 20);
jLabel1.setFont(new java.awt.Font("Lucida Grande", 1, 14));
jLabel1.setText("An update for Pail is available!");
getContentPane().add(jLabel1);
jLabel1.setBounds(140, 10, 230, 17);
jLabel2.setText("Changes:");
getContentPane().add(jLabel2);
jLabel2.setBounds(20, 30, 70, 16);
changes.setColumns(20);
changes.setEditable(false);
changes.setRows(5);
changes.setFocusable(false);
jScrollPane1.setViewportView(changes);
getContentPane().add(jScrollPane1);
jScrollPane1.setBounds(20, 50, 440, 150);
update.setText("Update");
update.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
updateActionPerformed(evt);
}
});
getContentPane().add(update);
update.setBounds(370, 210, 88, 29);
Ignore.setText("Remind me later");
Ignore.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
IgnoreActionPerformed(evt);
}
});
getContentPane().add(Ignore);
Ignore.setBounds(234, 210, 130, 29);
pack();
}// </editor-fold>//GEN-END:initComponents
private void IgnoreActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_IgnoreActionPerformed
dispose();
}//GEN-LAST:event_IgnoreActionPerformed
private void updateActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_updateActionPerformed
new Thread(new Runnable() {
public void run() {
try {
UpdateHandler.downloadLatest(UpdateView.getInstance());
} catch (Exception ex) {
Util.log(Level.SEVERE, ex.toString());
JOptionPane.showMessageDialog(getRootPane(), Util.translate("Update failed.")
+ Util.translate("\nThe latest version can be downloaded manually\nfrom the plugin thread."),
Util.translate("Update Failed"), JOptionPane.ERROR_MESSAGE);
UpdateHandler.updateFile.delete();
UpdateView.getInstance().dispose();
}
}
}).start();
}//GEN-LAST:event_updateActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton Ignore;
private javax.swing.JTextArea changes;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JProgressBar progress;
private javax.swing.JLabel progressLabel;
private javax.swing.JButton update;
// End of variables declaration//GEN-END:variables
/**
* @return the progress
*/
public javax.swing.JProgressBar getProgress() {
return progress;
}
/**
* @return the progressLabel
*/
public javax.swing.JLabel getProgressLabel() {
return progressLabel;
}
/**
* @return the Ignore
*/
public javax.swing.JButton getIgnore() {
return Ignore;
}
/**
* @return the update
*/
public javax.swing.JButton getUpdate() {
return update;
}
public final void translateComponent() {
Util.translateTextComponent(Ignore);
Util.translateTextComponent(jLabel1);
Util.translateTextComponent(progressLabel);
Util.translateTextComponent(update);
}
}