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; } } }