X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.logic.model%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2Fsnippets%2FCodeSnippetSupplier.java;h=26d5a0d959a6b3e51e362ebdb00d0f318716a8a8;hb=95a225aed8eae0fc080440dba779abfdf867ff3d;hp=86b57656e923c74ae0a8b1572c87aa72de2d10d3;hpb=a00663c79d0e26b494ff79eee4b6c049f086c7e0;p=Mograsim.git diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/CodeSnippetSupplier.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/CodeSnippetSupplier.java index 86b57656..26d5a0d9 100644 --- a/net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/CodeSnippetSupplier.java +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/CodeSnippetSupplier.java @@ -1,11 +1,13 @@ package net.mograsim.logic.model.snippets; +import java.util.Collections; import java.util.HashMap; import java.util.Map; public class CodeSnippetSupplier { private final Map standardSnippetIDClassNames = new HashMap<>(); + private final Map standardSnippetIDClassNamesUnmodifiable = Collections.unmodifiableMap(standardSnippetIDClassNames); private final Map> snippetSuppliersForClassNames = new HashMap<>(); private final SnippetDefinintion defaultSnippetSupplier; @@ -14,9 +16,16 @@ public class CodeSnippetSupplier this.defaultSnippetSupplier = defaultSnippetSupplier; } - public void addStandardSnippetID(String standardSnippetID, String associatedSnippetClassName) + public void addStandardSnippetID(String standardSnippetID, String associatedSnippetID) { - standardSnippetIDClassNames.put(standardSnippetID, associatedSnippetClassName); + if (!associatedSnippetID.startsWith("class:")) + throw new IllegalArgumentException("Unrecognized snippet ID format: " + associatedSnippetID); + standardSnippetIDClassNames.put(standardSnippetID, associatedSnippetID); + } + + public Map getStandardSnippetIDs() + { + return standardSnippetIDClassNamesUnmodifiable; } public void setSnippetSupplier(String id, SnippetDefinintion snippetSupplier) @@ -29,13 +38,10 @@ public class CodeSnippetSupplier { if (id != null) { - String snippetClassName; - if (id.startsWith("class:")) - snippetClassName = id.substring(6); - else - snippetClassName = standardSnippetIDClassNames.get(id); - if (snippetClassName != null) + String resolvedID = resolveID(id); + if (resolvedID != null) { + String snippetClassName = resolvedID.substring(6); tryLoadSnippetClass(snippetClassName); SnippetDefinintion snippetSupplier = snippetSuppliersForClassNames.get(snippetClassName); if (snippetSupplier != null) @@ -48,6 +54,13 @@ public class CodeSnippetSupplier return defaultSnippetSupplier; } + public String resolveID(String id) + { + if (id.startsWith("class:")) + return id; + return standardSnippetIDClassNames.get(id); + } + // static helpers private static void tryLoadSnippetClass(String snippetClassName)