X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=plugins%2Fnet.mograsim.logic.model%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2FLogicUICanvas.java;h=dda6753850d4a2113ba52e221c89093c6e1c19be;hb=3274bf1091e8c29cc3bff7f909bdd8b29220848d;hp=c4a8c2d4eddceacfe9b713cd6b5ba11b27fbea66;hpb=269b34bc8e58453170ad4bb34266eb2d78d5627a;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 c4a8c2d4..dda67538 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; /** @@ -165,6 +164,7 @@ public class LogicUICanvas extends ZoomableCanvas get.addListener(SWT.Selection, getAction); stateIDText.addListener(SWT.DefaultSelection, getAction); debugShell.open(); + addDisposeListener(e -> debugShell.dispose()); } private void compsChanged(Consumer compAdded, Consumer compRemoved, ModelComponent c, @@ -216,21 +216,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") - 1); } 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); } }); }