1 package de.lathanda.eos.config;
3 import java.util.Collection;
4 import java.util.Iterator;
5 import java.util.LinkedList;
6 import java.util.TreeMap;
7 import java.util.TreeSet;
9 import de.lathanda.eos.baseparser.AutoCompleteEntry;
10 import de.lathanda.eos.baseparser.BasicParser;
11 import de.lathanda.eos.baseparser.ParserSource;
12 import de.lathanda.eos.baseparser.SystemType;
15 private static TreeMap<String, ParserSource> parserSourceMap =
new TreeMap<>();
19 private final TreeMap<String, String> names =
new TreeMap<>();
22 private String tooltip;
23 private String description;
25 private String parserSource;
26 private TreeMap<String, LangModule> modules =
new TreeMap<>();
27 private TreeMap<String, LangClass> classes =
new TreeMap<>();
28 private LinkedList<LangHelp> helpEntries =
new LinkedList<>();
29 private TreeMap<String, LangMenuItem> menuItems =
new TreeMap<>();
30 TreeSet<AutoCompleteEntry> templates =
new TreeSet<>();
41 generateAutoCompletion();
45 private void generateHelp(
Language lang) {
46 lang.registerHelp(
new Help(
id, label, tooltip, description, modules.values(), classes, helpEntries));
49 private void generateAutoCompletion() {
50 SystemType clsType = SystemType.getClassType();
51 for(LangClass lc:classes.values()) {
52 SystemType cls = SystemType.getInstanceByID(lc.id);
54 for(String scan:lc.scan) {
55 clsType.registerAutoCompleteEntry(AutoCompleteEntry.createClassEntry(cls, scan, lc.label, lc.tooltip));
58 for(LangMethod lm:lc.methods.values()) {
59 String[] parameters =
new String[lm.parameters.size()];
61 for (LangParameter lpa:lm.parameters) {
62 parameters[i++] = lpa.name;
64 cls.registerAutoCompleteEntry(AutoCompleteEntry.createMethodEntry(cls, lm.scan, lm.label, parameters, lm.tooltip));
68 for(LangProperty lp:lc.properties.values()) {
69 cls.registerAutoCompleteEntry(AutoCompleteEntry.createPropertyEntry(cls, lp.scan, lp.label, lp.tooltip));
81 return (label==
null)?id:label;
85 this.parserSource = parser;
95 this.description = description;
98 this.tooltip = tooltip;
106 names.put(key, name);
114 if (modules.containsKey(
id)) {
115 return modules.get(
id);
123 if (classes.containsKey(
id)) {
124 return classes.get(
id);
145 Iterator<LangParameter> itp = lf2.
parameters.iterator();
147 lpa.
type = itp.next().type;
158 Iterator<LangParameter> itp = lm2.
parameters.iterator();
160 lpa.
type = itp.next().type;
175 public void addMenuItem(String
id, String pid, String label, String action, String tooltip) {
182 menuItems.put(
id, lmi);
185 return menuItems.values();
188 return menuItems.get(
id);
191 return classes.values();
194 return modules.values();
198 return classes.get(
id);
static AutoCompleteEntry createTemplateEntry(String sort, String label, String template, int start, int length)
LangProperty getOrCreateProperty(String id)
LangMethod getOrCreateMethod(String attribute)
boolean isLockProperties()
LinkedList< LangParameter > parameters
LinkedList< LangParameter > parameters
LangFunction getOrCreateFunction(String idf)
LangMenuItem getMenuItem(String id)
Collection< LangMenuItem > getMenuItems()
BasicParser createParser(String source)
void setTooltip(String tooltip)
void apply(Language lang)
LangClass getOrCreateLangClass(String id)
void addTemplate(LangTemplate lt)
Collection< LangModule > getModules()
Collection< LangClass > getClasses()
LangClass getLangClass(String id)
LangModule getOrCreateLangModule(String id)
LanguageConfig mergeSystem(LanguageConfig lco)
LanguageConfig(String id, LangFlags flags)
void setDescription(String description)
void addMenuItem(String id, String pid, String label, String action, String tooltip)
void setParser(String parser)
void setLabel(String label)
void registerName(String key, String name)
void registerHelp(LangHelp lh)
BasicParser createParser(String source)