package org.pegadi.artis;
import org.pegadi.swing.AbstractPreferencesDialog;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.swing.*;
import javax.swing.border.Border;
import java.awt.*;
import java.util.Properties;
import java.util.ResourceBundle;
public class ArtisPrefsDialog extends AbstractPreferencesDialog {
Logger log = LoggerFactory.getLogger(getClass());
static final String AUTO_SAVE_PREF = "auto-save";
static ResourceBundle strings = ResourceBundle.getBundle("org.pegadi.artis.PrefsDialogStrings");
private JComboBox saveIntervals;
public ArtisPrefsDialog(JFrame parent, Properties preferences) {
super(parent, preferences);
Dimension size = Toolkit.getDefaultToolkit().getScreenSize();
int x = Math.min(((size.width / 5) *4), 810);
int y = Math.min(((size.height / 5) *4), 600);
this.setLocation((size.width - x) / 2, (size.height - y) / 2);
}
protected Component createPreferencesPane() {
Box prefsPane = new Box(BoxLayout.Y_AXIS);
JPanel autoSavePanel = createAutoSavePanel();
prefsPane.add(autoSavePanel);
return prefsPane;
}
private JPanel createAutoSavePanel() {
JPanel autoSavePanel = new JPanel(new FlowLayout());
Border border = BorderFactory.createTitledBorder("Auto-save");
autoSavePanel.setBorder(border);
JLabel autoSaveLabel = new JLabel(strings.getString("autoSaveLabel"));
saveIntervals = new JComboBox();
for(int i=2; i<20; i+=2) {
saveIntervals.addItem(i);
}
autoSavePanel.add(autoSaveLabel);
autoSavePanel.add(saveIntervals);
return autoSavePanel;
}
public void setPreferences(Properties preferences) {
this.prefs = preferences;
Integer selected;
try {
selected = Integer.parseInt(preferences.getProperty(AUTO_SAVE_PREF));
} catch (IllegalArgumentException e){
selected = 10;
log.debug("Error setting auto save interval", e);
}
saveIntervals.setSelectedItem(selected);
}
protected void findChangedPreferences() {
changedPrefs = new Properties();
if(autoSaveChanged()) {
changedPrefs.put(AUTO_SAVE_PREF, saveIntervals.getSelectedItem().toString());
}
}
private boolean autoSaveChanged() {
Integer newAutosave = (Integer) saveIntervals.getSelectedItem();
Integer prefsAutosave;
try {
prefsAutosave = Integer.parseInt(prefs.getProperty(AUTO_SAVE_PREF));
} catch(NumberFormatException e) {
prefsAutosave = -1;
}
if(!newAutosave.equals(prefsAutosave)) {
return true;
}
else {
return false;
}
}
}