X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=plugins%2Fnet.mograsim.logic.model%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2FLogicUICanvas.java;h=50e6471ad3f522c5442e1ec0db32a8f8041a4fc0;hb=3eb713f4790896fbb3b71028a03b946a3d12dbd0;hp=15346c63412b4ddb867e9bdaa14bd8952670093f;hpb=58babf45ae7d259a296656451d796dbe601377a4;p=Mograsim.git diff --git a/plugins/net.mograsim.logic.model/src/net/mograsim/logic/model/LogicUICanvas.java b/plugins/net.mograsim.logic.model/src/net/mograsim/logic/model/LogicUICanvas.java index 15346c63..50e6471a 100644 --- a/plugins/net.mograsim.logic.model/src/net/mograsim/logic/model/LogicUICanvas.java +++ b/plugins/net.mograsim.logic.model/src/net/mograsim/logic/model/LogicUICanvas.java @@ -27,8 +27,7 @@ import net.mograsim.logic.core.types.BitVector; import net.mograsim.logic.model.model.LogicModel; import net.mograsim.logic.model.model.components.ModelComponent; import net.mograsim.logic.model.model.components.submodels.SubmodelComponent; -import net.mograsim.logic.model.model.components.submodels.SubmodelInterface; -import net.mograsim.logic.model.model.wires.ModelWireCrossPoint; +import net.mograsim.logic.model.snippets.highlevelstatehandlers.DefaultHighLevelStateHandler; import net.mograsim.preferences.Preferences; /** @@ -38,8 +37,6 @@ import net.mograsim.preferences.Preferences; */ public class LogicUICanvas extends ZoomableCanvas { - private static final boolean OPEN_DEBUG_SETHIGHLEVELSTATE_SHELL = false; - private final LogicModel model; public LogicUICanvas(Composite parent, int style, LogicModel model) @@ -60,7 +57,7 @@ public class LogicUICanvas extends ZoomableCanvas addListener(SWT.MouseDown, this::mouseDown); - if (OPEN_DEBUG_SETHIGHLEVELSTATE_SHELL) + if (Preferences.current().getBoolean("net.mograsim.logic.model.debug.openhlsshell")) openDebugSetHighLevelStateShell(model); } @@ -218,21 +215,24 @@ public class LogicUICanvas extends ZoomableCanvas recalculateQueued.set(false); componentsByItemIndex.clear(); componentSelector.setItems(); - addComponentSelectorItems(componentsByItemIndex, "", componentSelector, model); + addComponentSelectorItems(componentsByItemIndex, "", componentSelector, model, + Preferences.current().getInt("net.mograsim.logic.model.debug.hlsshelldepth")); } private void addComponentSelectorItems(List componentsByItemIndex, String base, Combo componentSelector, - LogicModel model) + LogicModel model, int depth) { model.getComponentsByName().values().stream().sorted((c1, c2) -> c1.getName().compareTo(c2.getName())).forEach(c -> { - if (!(c instanceof ModelWireCrossPoint || c instanceof SubmodelInterface)) + if (!(c.getHighLevelStateHandler() instanceof DefaultHighLevelStateHandler)) { String item = base + c.getName(); componentsByItemIndex.add(c); componentSelector.add(item); - if (c instanceof SubmodelComponent) - addComponentSelectorItems(componentsByItemIndex, item + " -> ", componentSelector, ((SubmodelComponent) c).submodel); + // this causes negative numbers to result in infinite depth + if (depth != 0 && c instanceof SubmodelComponent) + addComponentSelectorItems(componentsByItemIndex, item + " -> ", componentSelector, ((SubmodelComponent) c).submodel, + depth - 1); } }); }