Editor settings updated
[Mograsim.git] / net.mograsim.logic.model.editor / src / net / mograsim / logic / model / editor / SaveLoadManager.java
1 package net.mograsim.logic.model.editor;
2
3 import java.io.IOException;
4
5 import net.mograsim.logic.model.editor.ui.DialogManager;
6 import net.mograsim.logic.model.model.ViewModelModifiable;
7 import net.mograsim.logic.model.serializing.DeserializedSubmodelComponent;
8 import net.mograsim.logic.model.serializing.SubmodelComponentSerializer;
9
10 public class SaveLoadManager
11 {
12         private String savePath = null;
13         private Editor editor;
14
15         public SaveLoadManager(Editor editor)
16         {
17                 this.editor = editor;
18         }
19
20         public void save()
21         {
22                 if (savePath == null)
23                         openSaveAsDialog();
24                 else
25                         innerSave();
26         }
27
28         public void openSaveAsDialog()
29         {
30                 String result[] = DialogManager.openMultiTextDialog("Save as...", "Save", "Cancel", "Path");
31                 if (result != null)
32                 {
33                         savePath = result[0];
34                         innerSave();
35                 }
36         }
37
38         private void innerSave()
39         {
40                 try
41                 {
42                         SubmodelComponentSerializer.serialize(editor.toBeEdited, c ->
43                         {
44                                 if (Editor.identifierPerComponent.containsKey(c))
45                                         return Editor.identifierPerComponent.get(c);
46                                 return "class:" + c.getClass().getCanonicalName();
47                         }, savePath);
48                 }
49                 catch (IOException e)
50                 {
51                         savePath = null;
52                         System.err.println("Failed to save component!");
53                         e.printStackTrace();
54                 }
55         }
56
57         public static void openLoadDialog() throws IOException
58         {
59                 String[] result = DialogManager.openMultiTextDialog("Load Component...", "Load", "Cancel", "Path");
60                 if (result != null)
61                 {
62                         new Editor((DeserializedSubmodelComponent) SubmodelComponentSerializer.deserialize(new ViewModelModifiable(), result[0]));
63                 }
64         }
65 }