1 package net.mograsim.logic.model.examples;
3 import java.io.IOException;
4 import java.io.InputStream;
5 import java.util.ArrayList;
6 import java.util.Collections;
9 import com.google.gson.JsonObject;
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;
22 public class OpenPreviewOfEveryComponent
24 public static void main(String[] args) throws IOException
28 List<String> allComponents = new ArrayList<>();
30 // TODO this is ugly. Is there a better way?
31 try (InputStream resourceAsStream = Am2900Loader.class.getResourceAsStream("standardComponentIDMapping.json"))
33 allComponents.addAll(JsonHandler.readJson(resourceAsStream, JsonObject.class).keySet());
35 try (InputStream resourceAsStream = IndirectModelComponentCreator.class.getResourceAsStream("standardComponentIDMapping.json"))
37 allComponents.addAll(JsonHandler.readJson(resourceAsStream, JsonObject.class).keySet());
40 Collections.sort(allComponents, String::compareToIgnoreCase);
42 LogicModelModifiable model = new LogicModelModifiable();
44 for (String componentID : allComponents)
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;
52 catch (RuntimeException e)
54 new ModelTextComponent(model, "Error creating " + componentID + ": " + e).moveTo(0, y);
58 // give the wires color
59 LogicCoreAdapter.convert(model, CoreModelParameters.builder().build());
61 new LogicUIStandaloneGUI(model, new DefaultRenderPreferences()).run();