The final restructured version for automatic build using maven tycho
[Mograsim.git] / plugins / net.mograsim.logic.model / src / net / mograsim / logic / model / snippets / SubmodelComponentSnippetSuppliers.java
1 package net.mograsim.logic.model.snippets;
2
3 import java.io.IOException;
4 import java.io.InputStream;
5 import java.util.Map;
6
7 import net.mograsim.logic.model.model.components.ModelComponent;
8 import net.mograsim.logic.model.model.components.submodels.SubmodelComponent;
9 import net.mograsim.logic.model.snippets.highlevelstatehandlers.DefaultHighLevelStateHandler;
10 import net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer;
11 import net.mograsim.logic.model.snippets.symbolrenderers.DefaultSymbolRenderer;
12 import net.mograsim.logic.model.util.JsonHandler;
13
14 public class SubmodelComponentSnippetSuppliers
15 {
16         public static final CodeSnippetSupplier<ModelComponent, Renderer> symbolRendererSupplier;
17         public static final CodeSnippetSupplier<ModelComponent, Renderer> outlineRendererSupplier;
18         public static final CodeSnippetSupplier<SubmodelComponent, HighLevelStateHandler> highLevelStateHandlerSupplier;
19
20         static
21         {
22                 symbolRendererSupplier = new CodeSnippetSupplier<>(SnippetDefinintion.create(Void.class, DefaultSymbolRenderer::new));
23                 outlineRendererSupplier = new CodeSnippetSupplier<>(SnippetDefinintion.create(Void.class, DefaultOutlineRenderer::new));
24                 highLevelStateHandlerSupplier = new CodeSnippetSupplier<>(SnippetDefinintion.create(Void.class, DefaultHighLevelStateHandler::new));
25         }
26
27         static
28         {
29                 try (InputStream s = SubmodelComponentSnippetSuppliers.class.getResourceAsStream("standardSnippetIDMapping.json"))
30                 {
31                         if (s == null)
32                                 throw new IOException("Resource not found");
33                         SnippetIDClassNames tmp = JsonHandler.readJson(s, SnippetIDClassNames.class);
34                         tmp.standardSymbolRendererSuppliers.forEach(symbolRendererSupplier::addStandardSnippetID);
35                         tmp.standardOutlineRendererSuppliers.forEach(outlineRendererSupplier::addStandardSnippetID);
36                         tmp.standardHighLevelStateHandlerSuppliers.forEach(highLevelStateHandlerSupplier::addStandardSnippetID);
37                 }
38                 catch (Exception e)
39                 {
40                         System.err.println("Failed to initialize standard snippet ID mapping:");
41                         e.printStackTrace();
42                 }
43         }
44
45         private static class SnippetIDClassNames
46         {
47                 public Map<String, String> standardSymbolRendererSuppliers;
48                 public Map<String, String> standardOutlineRendererSuppliers;
49                 public Map<String, String> standardHighLevelStateHandlerSuppliers;
50         }
51
52         private SubmodelComponentSnippetSuppliers()
53         {
54                 throw new UnsupportedOperationException();
55         }
56 }