package net.mograsim.logic.model.editor;
-import java.io.IOException;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Optional;
import net.mograsim.logic.model.editor.states.StateManager;
import net.mograsim.logic.model.editor.ui.DialogManager;
import net.mograsim.logic.model.editor.ui.EditorGUI;
-import net.mograsim.logic.model.model.ViewModelModifiable;
-import net.mograsim.logic.model.model.components.GUIComponent;
-import net.mograsim.logic.model.model.wires.GUIWire;
+import net.mograsim.logic.model.model.LogicModelModifiable;
+import net.mograsim.logic.model.model.components.ModelComponent;
+import net.mograsim.logic.model.model.wires.ModelWire;
import net.mograsim.logic.model.serializing.DeserializedSubmodelComponent;
-import net.mograsim.logic.model.serializing.IdentifierGetter;
-import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator;
+import net.mograsim.logic.model.serializing.IndirectModelComponentCreator;
+import net.mograsim.logic.model.snippets.highlevelstatehandlers.DefaultHighLevelStateHandler;
+import net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer;
+import net.mograsim.logic.model.snippets.symbolrenderers.DefaultSymbolRenderer;
public final class Editor
{
final Set<ComponentInfo> copyBuffer = new HashSet<>();
public final DeserializedSubmodelComponent toBeEdited;
public final HandleManager handleManager;
- final static Map<GUIComponent, String> identifierPerComponent = new HashMap<>();
public final EditorGUI gui;
public final StateManager stateManager;
private final SaveLoadManager saveManager;
saveManager = new SaveLoadManager(this);
dialogManager = new DialogManager(gui.shell);
- toBeEdited.submodel.addComponentRemovedListener(c -> identifierPerComponent.remove(c));
-
gui.open();
}
- public ViewModelModifiable getSubmodel()
+ public LogicModelModifiable getSubmodel()
{
return toBeEdited.getSubmodelModifiable();
}
selection.clear();
for (ComponentInfo info : copyBuffer)
{
- GUIComponent comp = addComponent(info.identifier, info.params);
+ ModelComponent comp = addComponent(info.identifier, info.params);
ComponentHandle h = handleManager.getHandle(comp);
h.reqMove(info.relX, info.relY);
selection.add(h);
String selected = gui.getAddListSelected();
try
{
- GUIComponent c = addComponent(selected, params);
+ ModelComponent c = addComponent(selected, params);
selection.clear();
selection.add(handleManager.getHandle(c));
moveSelection(x, y);
successful = true;
}
- catch (@SuppressWarnings("unused") UnsupportedOperationException | JsonSyntaxException | NumberFormatException e)
+ catch (@SuppressWarnings("unused") UnsupportedOperationException | JsonSyntaxException | NumberFormatException
+ | NullPointerException e)
{
String result = DialogManager.openMultiLineTextDialog("Add component", "Create", "Cancel", "Parameters:");
if (result == null)
}
}
- private GUIComponent addComponent(String identifier, JsonElement params)
- {
- GUIComponent comp = IndirectGUIComponentCreator.createComponent(toBeEdited.getSubmodelModifiable(), identifier, params);
- identifierPerComponent.put(comp, identifier);
- return comp;
- }
-
- public static String getIdentifier(GUIComponent c)
+ private ModelComponent addComponent(String identifier, JsonElement params)
{
- if (identifierPerComponent.containsKey(c))
- return identifierPerComponent.get(c);
- return new IdentifierGetter().componentIDs.apply(c);
+ return IndirectModelComponentCreator.createComponent(toBeEdited.getSubmodelModifiable(), identifier, params);
}
public void duplicate()
@SuppressWarnings("unused")
public void addWire(PinHandle a, PinHandle b)
{
- new GUIWire(toBeEdited.getSubmodelModifiable(), a.getPin(), b.getPin(), new Point[0]);
+ new ModelWire(toBeEdited.getSubmodelModifiable(), a.getPin(), b.getPin(), new Point[0]);
}
public static enum Snapping
}
}
- public static void main(String[] args) throws IOException
+ public static void main(String[] args)
{
Am2900Loader.setup();
- SaveLoadManager.openLoadDialog();
+ openNewEditor();
+// SaveLoadManager.openLoadDialog();
+ }
+
+ public static void openNewEditor()
+ {
+ DeserializedSubmodelComponent toBeEdited = new DeserializedSubmodelComponent(new LogicModelModifiable(), null, null, null);
+ toBeEdited.setOutlineRenderer(new DefaultOutlineRenderer(toBeEdited));
+ toBeEdited.setSymbolRenderer(new DefaultSymbolRenderer(toBeEdited));
+ toBeEdited.setHighLevelStateHandler(new DefaultHighLevelStateHandler());
+ new Editor(toBeEdited);
}
public Snapping getSnapping()