127 lines
3.1 KiB
Java
127 lines
3.1 KiB
Java
/*
|
|
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
|
|
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
|
|
*/
|
|
|
|
package ChatProgramm.model;
|
|
|
|
import java.awt.Point;
|
|
import java.io.BufferedInputStream;
|
|
import java.io.BufferedOutputStream;
|
|
import java.io.FileInputStream;
|
|
import java.io.FileNotFoundException;
|
|
import java.io.FileOutputStream;
|
|
import java.io.IOException;
|
|
import java.io.ObjectInputStream;
|
|
import java.io.ObjectOutputStream;
|
|
import java.util.ArrayList;
|
|
import java.util.Collections;
|
|
import java.util.List;
|
|
import java.util.logging.Logger;
|
|
import java.util.prefs.Preferences;
|
|
import ChatProgramm.util.OhmLogger;
|
|
/**
|
|
*
|
|
* @author le
|
|
*/
|
|
public class GrafikModel
|
|
{
|
|
private Figur aktuelleFigur;
|
|
private ArrayList<Figur> figuren;
|
|
private Preferences pref;
|
|
private static Logger lg = OhmLogger.getLogger();
|
|
|
|
public GrafikModel()
|
|
{
|
|
aktuelleFigur = new Figur();
|
|
figuren = new ArrayList<>();
|
|
}
|
|
|
|
public void addPoint(Point p)
|
|
{
|
|
aktuelleFigur.addPoint(p);
|
|
}
|
|
|
|
public List<Point> getPunkte()
|
|
{
|
|
return aktuelleFigur.getPunkte();
|
|
}
|
|
|
|
public List<Figur> getFiguren(){
|
|
return Collections.unmodifiableList(figuren);
|
|
}
|
|
|
|
|
|
/**
|
|
* Persistenz via Serialisierung
|
|
* @param dateiname
|
|
* @throws FileNotFoundException
|
|
* @throws IOException
|
|
*/
|
|
public void speicherePunkte(String dateiname) throws FileNotFoundException, IOException
|
|
{
|
|
// an Preferences denken!!
|
|
FileOutputStream fos = new FileOutputStream(dateiname);
|
|
//wichtig Puffer -> Performance
|
|
BufferedOutputStream bos = new BufferedOutputStream(fos);
|
|
//Serialisierung
|
|
ObjectOutputStream oos = new ObjectOutputStream(bos);
|
|
oos.writeObject(figuren);
|
|
oos.flush(); // Puffer
|
|
oos.close();
|
|
}
|
|
|
|
public void lesePunkte(String dateiname) throws FileNotFoundException, IOException, ClassNotFoundException
|
|
{
|
|
// an Preferences denken!!
|
|
FileInputStream fis = new FileInputStream(dateiname);
|
|
//wichtig Puffer -> Performance
|
|
BufferedInputStream bis = new BufferedInputStream(fis);
|
|
//Serialisierung
|
|
ObjectInputStream ois = new ObjectInputStream(bis);
|
|
Object daten = ois.readObject(); // Achtung
|
|
// if (daten instanceof ArrayList)
|
|
// {
|
|
// punkte = (ArrayList<Point>)daten;
|
|
// }
|
|
//eleganter
|
|
if (daten instanceof ArrayList liste)
|
|
{
|
|
figuren = liste;
|
|
}
|
|
|
|
}
|
|
|
|
public void endShape() {
|
|
figuren.add(aktuelleFigur);
|
|
aktuelleFigur = new Figur();
|
|
}
|
|
public void setFigur(Figur figur){
|
|
aktuelleFigur = figur;
|
|
figuren.add(figur);
|
|
}
|
|
|
|
|
|
/**
|
|
* Bestimmt die Adresse des zuletzt besuchten Ordners
|
|
* @return letzter Ordner
|
|
*/
|
|
public String getPref()
|
|
{
|
|
pref = Preferences.userNodeForPackage(getClass());
|
|
return pref.get("lastDirectory", null);
|
|
}
|
|
|
|
/**
|
|
* Setzt die Preferenz zu dem zuletzt besuchten Ordner
|
|
* @param lastDirectory Bezeichner "lastDirectory"
|
|
* @param lastAdress Adresse des zuletzt besuchten Ordners
|
|
*/
|
|
public void putPref(String lastDirectory, String lastAdress)
|
|
{
|
|
pref.put(lastDirectory, lastAdress);
|
|
}
|
|
}
|
|
|
|
|