You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

GrafikModel.java 3.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. /*
  2. * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
  3. * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
  4. */
  5. package ChatProgramm.model;
  6. import java.awt.Point;
  7. import java.io.BufferedInputStream;
  8. import java.io.BufferedOutputStream;
  9. import java.io.FileInputStream;
  10. import java.io.FileNotFoundException;
  11. import java.io.FileOutputStream;
  12. import java.io.IOException;
  13. import java.io.ObjectInputStream;
  14. import java.io.ObjectOutputStream;
  15. import java.util.ArrayList;
  16. import java.util.Collections;
  17. import java.util.List;
  18. import java.util.logging.Logger;
  19. import java.util.prefs.Preferences;
  20. import ChatProgramm.util.OhmLogger;
  21. /**
  22. *
  23. * @author le
  24. */
  25. public class GrafikModel
  26. {
  27. private Figur aktuelleFigur;
  28. private ArrayList<Figur> figuren;
  29. private Preferences pref;
  30. private static Logger lg = OhmLogger.getLogger();
  31. public GrafikModel()
  32. {
  33. aktuelleFigur = new Figur();
  34. figuren = new ArrayList<>();
  35. }
  36. public void addPoint(Point p)
  37. {
  38. aktuelleFigur.addPoint(p);
  39. }
  40. public List<Point> getPunkte()
  41. {
  42. return aktuelleFigur.getPunkte();
  43. }
  44. public List<Figur> getFiguren(){
  45. return Collections.unmodifiableList(figuren);
  46. }
  47. /**
  48. * Persistenz via Serialisierung
  49. * @param dateiname
  50. * @throws FileNotFoundException
  51. * @throws IOException
  52. */
  53. public void speicherePunkte(String dateiname) throws FileNotFoundException, IOException
  54. {
  55. // an Preferences denken!!
  56. FileOutputStream fos = new FileOutputStream(dateiname);
  57. //wichtig Puffer -> Performance
  58. BufferedOutputStream bos = new BufferedOutputStream(fos);
  59. //Serialisierung
  60. ObjectOutputStream oos = new ObjectOutputStream(bos);
  61. oos.writeObject(figuren);
  62. oos.flush(); // Puffer
  63. oos.close();
  64. }
  65. public void lesePunkte(String dateiname) throws FileNotFoundException, IOException, ClassNotFoundException
  66. {
  67. // an Preferences denken!!
  68. FileInputStream fis = new FileInputStream(dateiname);
  69. //wichtig Puffer -> Performance
  70. BufferedInputStream bis = new BufferedInputStream(fis);
  71. //Serialisierung
  72. ObjectInputStream ois = new ObjectInputStream(bis);
  73. Object daten = ois.readObject(); // Achtung
  74. // if (daten instanceof ArrayList)
  75. // {
  76. // punkte = (ArrayList<Point>)daten;
  77. // }
  78. //eleganter
  79. if (daten instanceof ArrayList liste)
  80. {
  81. figuren = liste;
  82. }
  83. }
  84. public void endShape() {
  85. figuren.add(aktuelleFigur);
  86. aktuelleFigur = new Figur();
  87. }
  88. /**
  89. * Bestimmt die Adresse des zuletzt besuchten Ordners
  90. * @return letzter Ordner
  91. */
  92. public String getPref()
  93. {
  94. pref = Preferences.userNodeForPackage(getClass());
  95. return pref.get("lastDirectory", null);
  96. }
  97. /**
  98. * Setzt die Preferenz zu dem zuletzt besuchten Ordner
  99. * @param lastDirectory Bezeichner "lastDirectory"
  100. * @param lastAdress Adresse des zuletzt besuchten Ordners
  101. */
  102. public void putPref(String lastDirectory, String lastAdress)
  103. {
  104. pref.put(lastDirectory, lastAdress);
  105. }
  106. }