/*
 * AbspeichernDemo.java nach einer Vorlage von Mathis Koblin
 *
 */

import javax.swing.JFrame;
import javax.swing.JFileChooser;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException; 
import java.io.FileOutputStream;
import java.io.FileInputStream;
import java.beans.XMLEncoder;
import java.beans.XMLDecoder;

/**
 *
 * @author  ProgPrakt-Team
 * @version 1.0
 */
public class AbspeichernDemo {

    public static void main(String[] args) {
	
	// ein etwas spannenderes Objekt als in der Vorführung
	JFrame meinFenster = new JFrame("mein Titel");	
	meinFenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	meinFenster.add(new javax.swing.JFileChooser());
	// Achtung: dieser JFileChooser hatt keine Programmlogik!!
	Object meinObjekt = meinFenster;
	
	String pfad = "das Wunschverzeichnis, bei dem gestartet wird";
	JFileChooser auswaehler = new JFileChooser(pfad);
	// gibt man hier kein Argument, so ist es das Homeverzeichnis unter Unix
	
	auswaehler.setFileSelectionMode(JFileChooser.FILES_ONLY);
	// keine Verzeichnisse auswählen lassen
	
	auswaehler.setDialogType(JFileChooser.SAVE_DIALOG);
	// abspeichern vorsehen
	
	auswaehler.setVisible(true);
	auswaehler.showSaveDialog(null);
	// dabei das Argument ein Fenster, auf das man sich räumlich bezieht
	
	File ausgabedatei = auswaehler.getSelectedFile();
	// kann scheitern, wenn keine Datei gewählt wurde!! 
	// also besser anders programmieren
	
	String ausgabedateipfad = ausgabedatei.getPath();
	ausgabedatei.delete();
	// löschen, falls schon vorhanden
	
	ausgabedatei = new File(ausgabedateipfad);
	// neue Datei diesen Namens
	
	try {
	    
	    FileOutputStream hinaus = new FileOutputStream(ausgabedatei,true);
	    
	    XMLEncoder kodierer = new XMLEncoder(hinaus);
	    kodierer.writeObject(meinObjekt);
	    //  kodierer.flush();   nicht nötig
	    kodierer.close();
	    //  hinaus.flush();     nicht nötig
	    hinaus.close();
	} catch (FileNotFoundException e) {
	    e.printStackTrace();
	} catch(IOException e) {
	    e.printStackTrace();
	}

	// nun lesen

	auswaehler.showOpenDialog(null);	
	File eingabedatei = auswaehler.getSelectedFile();
	JFrame fenster = new JFrame(); 
	try{
	    FileInputStream hinein = new FileInputStream(eingabedatei);
	    XMLDecoder dekodierer = new XMLDecoder(hinein);
	    fenster = (JFrame)dekodierer.readObject();  // leider type casting nötig
	    dekodierer.close();
	    hinein.close();
	} catch (FileNotFoundException e) {
	    e.printStackTrace();
	} catch(IOException e) {
	    e.printStackTrace();
	}
	fenster.pack();
	fenster.setVisible(true);
    }
} 
