/*
* GeneralPreferencesPane.java
*
* Created on September 23, 2004, 8:32 PM
*/
package kiyut.ekspos.prefs;
import java.awt.*;
import java.io.*;
import javax.swing.*;
/**
*
* @author Kiyut
*/
public class GeneralPreferencesPane extends PreferencesPane {
/** Creates new form GeneralPreferencesPane */
public GeneralPreferencesPane() {
initComponents();
initCustom();
}
/** 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.
*/
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
private void initComponents() {
java.awt.GridBagConstraints gridBagConstraints;
jPanel4 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
progressRepaintSpinner = new javax.swing.JSpinner();
jPanel1 = new javax.swing.JPanel();
cacheDirectoryText = new javax.swing.JTextField();
useCacheCheck = new javax.swing.JCheckBox();
jPanel3 = new javax.swing.JPanel();
cacheDirectoryButton = new javax.swing.JButton();
clearCacheButton = new javax.swing.JButton();
totdCheck = new javax.swing.JCheckBox();
jPanel2 = new javax.swing.JPanel();
setLayout(new java.awt.GridBagLayout());
jPanel4.setLayout(new java.awt.GridBagLayout());
jLabel1.setText("Image Loading Progress Repaint (Only Hint)");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
jPanel4.add(jLabel1, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 0;
gridBagConstraints.ipadx = 30;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 0);
jPanel4.add(progressRepaintSpinner, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
add(jPanel4, gridBagConstraints);
jPanel1.setLayout(new java.awt.GridBagLayout());
cacheDirectoryText.setEditable(false);
cacheDirectoryText.setHorizontalAlignment(javax.swing.JTextField.LEFT);
cacheDirectoryText.setText("cache directory");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(0, 20, 0, 0);
jPanel1.add(cacheDirectoryText, gridBagConstraints);
useCacheCheck.setText("Use Cache");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
jPanel1.add(useCacheCheck, gridBagConstraints);
jPanel3.setLayout(new java.awt.GridLayout(1, 0, 5, 0));
cacheDirectoryButton.setText("Browse");
cacheDirectoryButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cacheDirectoryButtonActionPerformed(evt);
}
});
jPanel3.add(cacheDirectoryButton);
clearCacheButton.setText("Clear cache");
clearCacheButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
clearCacheButtonActionPerformed(evt);
}
});
jPanel3.add(clearCacheButton);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(5, 20, 0, 0);
jPanel1.add(jPanel3, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(10, 0, 0, 0);
add(jPanel1, gridBagConstraints);
totdCheck.setText("Show Thought of the day");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.ipadx = 117;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(10, 0, 0, 0);
add(totdCheck, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 3;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 1.0;
add(jPanel2, gridBagConstraints);
}
// </editor-fold>//GEN-END:initComponents
private void cacheDirectoryButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cacheDirectoryButtonActionPerformed
JFileChooser fc = new JFileChooser();
fc.setCurrentDirectory(new File(cacheDirectoryText.getText()));
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
fc.setFileHidingEnabled(false);
fc.setMultiSelectionEnabled(false);
int returnVal = fc.showOpenDialog(this);
if(returnVal == JFileChooser.APPROVE_OPTION) {
cacheDirectoryText.setText(fc.getSelectedFile().toString());
}
}//GEN-LAST:event_cacheDirectoryButtonActionPerformed
private void clearCacheButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_clearCacheButtonActionPerformed
Runnable doRun = new Runnable() {
public void run() { clearCache(); }
};
EventQueue.invokeLater(doRun);
}//GEN-LAST:event_clearCacheButtonActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton cacheDirectoryButton;
private javax.swing.JTextField cacheDirectoryText;
private javax.swing.JButton clearCacheButton;
private javax.swing.JLabel jLabel1;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JSpinner progressRepaintSpinner;
private javax.swing.JCheckBox totdCheck;
private javax.swing.JCheckBox useCacheCheck;
// End of variables declaration//GEN-END:variables
private void initCustom() {
SpinnerNumberModel model = new SpinnerNumberModel(10, 0, 100, 5);
progressRepaintSpinner.setModel(model);
}
/** {@inheritDoc} */
public void loadPrefs() {
GeneralPreferences prefs = GeneralPreferences.getInstance();
progressRepaintSpinner.getModel().setValue(new Double(prefs.getDouble(GeneralPreferences.PROGRESS_REPAINT_KEY)));
useCacheCheck.setSelected(prefs.getBoolean(GeneralPreferences.USE_CACHE_KEY));
File file = new File(prefs.getString(GeneralPreferences.CACHE_DIRECTORY_KEY));
cacheDirectoryText.setText(file.toString());
totdCheck.setSelected(prefs.getBoolean(GeneralPreferences.TOTD_KEY));
}
/** {@inheritDoc} */
public void savePrefs() {
GeneralPreferences prefs = GeneralPreferences.getInstance();
double doubleValue = 10;
try {
if (progressRepaintSpinner.getValue() != null) {
doubleValue = Double.parseDouble(progressRepaintSpinner.getValue().toString());
if (doubleValue > 100) {
doubleValue = 100;
} else if (doubleValue < 0) {
doubleValue = 0;
}
}
} catch (Exception ex) { }
prefs.putDouble(GeneralPreferences.PROGRESS_REPAINT_KEY, doubleValue);
prefs.putBoolean(GeneralPreferences.USE_CACHE_KEY, useCacheCheck.isSelected());
prefs.putString(GeneralPreferences.CACHE_DIRECTORY_KEY, cacheDirectoryText.getText());
prefs.putBoolean(GeneralPreferences.TOTD_KEY, totdCheck.isSelected());
prefs.save();
}
private void clearCache() {
FileFilter filter = new FileFilter() {
public boolean accept(File file) {
boolean b = false;
if (file.toString().toLowerCase().endsWith(".png")) {
b = true;
}
return b;
}
};
File dir = new File(cacheDirectoryText.getText());
File[] files = dir.listFiles(filter);
ProgressMonitor mon = new ProgressMonitor(this, "Deleting cache...", "", 0,files.length);
mon.setProgress(0);
mon.setMillisToDecideToPopup(2*1000); // 2 seconds
for (int i=0; i<files.length; i++) {
try {
files[i].delete();
Thread.currentThread().yield();
} catch (Exception e) {}
if (mon.isCanceled()) { break; }
mon.setProgress(i);
mon.setNote("");
}
mon.close();
}
}