private void updateUsedLanguages() { Set<SLanguage> languagesInModel = new HashSet<SLanguage>(((SModelInternal) myModelDescriptor).importedLanguageIds()); Set<SLanguage> languagesInProps = new HashSet<SLanguage>(getUsedLanguages()); languagesInProps.removeAll(languagesInModel); for (SLanguage lang : languagesInProps) { ((SModelInternal) myModelDescriptor).addLanguage(lang); } languagesInModel.removeAll(getUsedLanguages()); for (SLanguage lang : languagesInModel) { ((SModelInternal) myModelDescriptor).deleteLanguageId(lang); } }
protected void addNodeImports(SNode node) { final SModelInternal modelInternal = (SModelInternal) myModel; final AbstractModule module = ((AbstractModule) myModel.getModule()); final Collection<SLanguage> importedLanguages = modelInternal.importedLanguageIds(); for (SNode subNode : ListSequence.fromList( SNodeOperations.getNodeDescendants(node, null, true, new SAbstractConcept[] {}))) { SLanguage usedLanguage = subNode.getConcept().getLanguage(); if (!(importedLanguages.contains(usedLanguage))) { modelInternal.addLanguage(usedLanguage); } for (SReference ref : ListSequence.fromList(SNodeOperations.getReferences(subNode))) { SModel usedModel = SNodeOperations.getModel(SLinkOperations.getTargetNode(ref)); if (usedModel != null && !(modelInternal.importedModels().contains(usedModel))) { modelInternal.addModelImport(usedModel.getReference(), false); module.addDependency( SNodeOperations.getModel(SLinkOperations.getTargetNode(ref)) .getModule() .getModuleReference(), false); } } } }
protected void addBuiltInImports() { SLanguage base = MetaAdapterFactory.getLanguage( MetaIdFactory.langId(0xde1ad86d6e504a02L, 0xb306d4d17f64c375L), "jetbrains.mps.console.base"); Collection<SLanguage> baseAndExtensions = new SLanguageHierarchy(Collections.singleton(base)).getExtending(); SModelInternal modelInternal = ((SModelInternal) myModel); for (SLanguage l : CollectionSequence.fromCollection(baseAndExtensions)) { modelInternal.addLanguage(l); Language sourceLangModule = (Language) l.getSourceModule(); if (sourceLangModule == null) { continue; } modelInternal.addModelImport( sourceLangModule.getStructureModelDescriptor().getReference(), false); ((AbstractModule) myModel.getModule()) .addDependency(sourceLangModule.getModuleReference(), false); } modelInternal.addDevKit( PersistenceFacade.getInstance() .createModuleReference( "fbc25dd2-5da4-483a-8b19-70928e1b62d7(jetbrains.mps.devkit.general-purpose)")); }