package javacodebook.gui.state; import java.awt.event.*; import java.awt.*; import java.util.*; import java.io.*; /** * Das PropertyFrame speichert vom Benutzer gesetzte Einstellungen über eine * Property. Diese wird in einem File 'gui.properties' beim Programmende * gespeichert, und beim erneuten Programmstart wieder geladen. */ public class PropertyFrame extends Frame{ // Default Status der Application public static final String DEFAULT_MILK = "no"; public static final String DEFAULT_SUGAR = "no"; public static final String DEFAULT_SIZE = "normal"; // Keys für die Persistenten Daten public static final String MILK_KEY = "milk"; public static final String SUGAR_KEY = "sugar"; public static final String SIZE_KEY = "size"; // Konstanten für Checkbox Status public static final String CHECKBOX_MARKED = "yes"; public static final String CHECKBOX_UNMARKED = "no"; // Komponenten des Frames private Checkbox milk = null; private Checkbox sugar = null; private Choice sizeChooser = new Choice(); // Properties-Objekt private Properties properties = new Properties(); /** * Konstruktor von PropertyFrame */ public PropertyFrame(String title) { super(title); setLayout(new FlowLayout()); // Beim Klicken des Schließen-Buttons vom Haupt-Fenster // wird der shutdown()-Methode aufgerufen. this.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent we) { shutdown();} }); // Komponenten werden gebaut und auf das Frame gelegt milk = new Checkbox("Milch"); sugar = new Checkbox("Zucker"); sizeChooser.add("klein"); sizeChooser.add("normal"); sizeChooser.add("groß"); add(milk); add(sugar); add(sizeChooser); // Alte bzw. Default Einstellungen werden gesetzt startup(); } /** * Falls vorhanden werden die Properties geladen, und alte Einstellungen * wieder hergestellt. */ private void startup() { try { // Property wird geladen properties.load(new FileInputStream("gui.properties")); } catch (IOException e) { System.out.println("gui.properties existiert noch nicht"); } // Status der milk-property wird gelesen, und checkbox // dem entsprechend gesetzt if(properties.getProperty(MILK_KEY,DEFAULT_MILK).equals(CHECKBOX_MARKED)) milk.setState(true); else milk.setState(false); // Status der sugar-property wird gelesen und checkbox // dementsprechend gesetzt if(properties.getProperty(SUGAR_KEY,DEFAULT_SUGAR).equals(CHECKBOX_MARKED)) sugar.setState(true); else sugar.setState(false); // Choice Auswahl wird gelesen und gesetzt sizeChooser.select(properties.getProperty(SIZE_KEY,DEFAULT_SIZE)); } private void shutdown() { try { // Status der milk-checkbox wird in Properties geschrieben if(milk.getState()) properties.setProperty(MILK_KEY,CHECKBOX_MARKED); else properties.setProperty(MILK_KEY,CHECKBOX_UNMARKED); // Status der sugar-checkbox wird in Properties geschrieben if(sugar.getState()) properties.setProperty(SUGAR_KEY,CHECKBOX_MARKED); else properties.setProperty(SUGAR_KEY,CHECKBOX_UNMARKED); // Status der choice wird in Properties geschrieben properties.setProperty(SIZE_KEY,sizeChooser.getSelectedItem()); // Properties wird in einem File gespeichert properties.store(new FileOutputStream("gui.properties"), null); } catch (IOException e) {} System.exit(0); } }