OpenPreviewOfEveryComponent now no longer simulates components
[Mograsim.git] / plugins / net.mograsim.logic.model.am2900 / src / net / mograsim / logic / model / examples / OpenPreviewOfEveryComponent.java
1 package net.mograsim.logic.model.examples;
2
3 import java.io.IOException;
4 import java.io.InputStream;
5 import java.util.ArrayList;
6 import java.util.Collections;
7 import java.util.List;
8
9 import com.google.gson.JsonObject;
10
11 import net.mograsim.logic.model.LogicUIStandaloneGUI;
12 import net.mograsim.logic.model.am2900.Am2900Loader;
13 import net.mograsim.logic.model.model.LogicModelModifiable;
14 import net.mograsim.logic.model.model.components.ModelComponent;
15 import net.mograsim.logic.model.model.components.atomic.ModelTextComponent;
16 import net.mograsim.logic.model.modeladapter.CoreModelParameters;
17 import net.mograsim.logic.model.modeladapter.LogicCoreAdapter;
18 import net.mograsim.logic.model.preferences.DefaultRenderPreferences;
19 import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
20 import net.mograsim.logic.model.util.JsonHandler;
21
22 public class OpenPreviewOfEveryComponent
23 {
24         public static void main(String[] args) throws IOException
25         {
26                 Am2900Loader.setup();
27
28                 List<String> allComponents = new ArrayList<>();
29
30                 // TODO this is ugly. Is there a better way?
31                 try (InputStream resourceAsStream = Am2900Loader.class.getResourceAsStream("standardComponentIDMapping.json"))
32                 {
33                         allComponents.addAll(JsonHandler.readJson(resourceAsStream, JsonObject.class).keySet());
34                 }
35                 try (InputStream resourceAsStream = IndirectModelComponentCreator.class.getResourceAsStream("standardComponentIDMapping.json"))
36                 {
37                         allComponents.addAll(JsonHandler.readJson(resourceAsStream, JsonObject.class).keySet());
38                 }
39
40                 Collections.sort(allComponents, String::compareToIgnoreCase);
41
42                 LogicModelModifiable model = new LogicModelModifiable();
43                 int y = 0;
44                 for (String componentID : allComponents)
45                         try
46                         {
47                                 ModelComponent createComponent = IndirectModelComponentCreator.createComponent(model, componentID);
48                                 createComponent.moveTo(0, y);
49                                 new ModelTextComponent(model, componentID).moveTo(createComponent.getWidth() + 10, y);
50                                 y += createComponent.getHeight() + 10;
51                         }
52                         catch (RuntimeException e)
53                         {
54                                 new ModelTextComponent(model, "Error creating " + componentID + ": " + e).moveTo(0, y);
55                                 y += 20;
56                         }
57
58                 // give the wires color
59                 LogicCoreAdapter.convert(model, CoreModelParameters.builder().build());
60
61                 new LogicUIStandaloneGUI(model, new DefaultRenderPreferences()).run();
62         }
63 }