Adjusted editor to changes made in logic.model
[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                 } catch (IOException e)
49                 {
50                         savePath = null;
51                         System.err.println("Failed to save component!");
52                         e.printStackTrace();
53                 }
54         }
55
56         public static void openLoadDialog() throws IOException
57         {
58                 String[] result = DialogManager.openMultiTextDialog("Load Component...", "Load", "Cancel", "Path");
59                 if(result != null)
60                 {
61                         new Editor((DeserializedSubmodelComponent) SubmodelComponentSerializer.deserialize(new ViewModelModifiable(), result[0]));
62                 }
63         }
64 }