package jetbrains.mps.build.mps.intentions; /*Generated by MPS */ import jetbrains.mps.intentions.AbstractIntentionDescriptor; import jetbrains.mps.openapi.intentions.IntentionFactory; import org.apache.log4j.Logger; import org.apache.log4j.LogManager; import java.util.Collection; import jetbrains.mps.openapi.intentions.IntentionExecutable; import jetbrains.mps.openapi.intentions.Kind; import jetbrains.mps.smodel.SNodePointer; import org.jetbrains.mps.openapi.model.SNode; import jetbrains.mps.openapi.editor.EditorContext; import jetbrains.mps.internal.collections.runtime.ListSequence; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations; import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory; import org.jetbrains.mps.openapi.language.SAbstractConcept; import java.util.Collections; import jetbrains.mps.intentions.AbstractIntentionExecutable; import jetbrains.mps.build.mps.util.VisibleModules; import jetbrains.mps.build.mps.util.PathConverter; import java.util.Iterator; import jetbrains.mps.build.mps.util.ModuleLoader; import jetbrains.mps.build.mps.util.ModuleChecker; import jetbrains.mps.build.mps.util.ModuleLoaderException; import org.apache.log4j.Level; import jetbrains.mps.openapi.intentions.IntentionDescriptor; public final class ReloadModulesFromDisk_Intention extends AbstractIntentionDescriptor implements IntentionFactory { private static final Logger LOG = LogManager.getLogger(ReloadModulesFromDisk_Intention.class); private Collection<IntentionExecutable> myCachedExecutable; public ReloadModulesFromDisk_Intention() { super(Kind.NORMAL, true, new SNodePointer("r:e8fca550-89ba-41bb-ae28-dc9cae640a8a(jetbrains.mps.build.mps.intentions)", "1753793013241722025")); } @Override public String getPresentation() { return "ReloadModulesFromDisk"; } @Override public boolean isApplicable(final SNode node, final EditorContext editorContext) { if (!(isApplicableToNode(node, editorContext))) { return false; } return true; } private boolean isApplicableToNode(final SNode node, final EditorContext editorContext) { return ListSequence.fromList(SNodeOperations.getNodeDescendants(node, MetaAdapterFactory.getConcept(0xcf935df46994e9cL, 0xa132fa109541cba3L, 0x4780308f5d333ebL, "jetbrains.mps.build.mps.structure.BuildMps_AbstractModule"), false, new SAbstractConcept[]{})).isNotEmpty(); } @Override public boolean isSurroundWith() { return false; } public Collection<IntentionExecutable> instances(final SNode node, final EditorContext context) { if (myCachedExecutable == null) { myCachedExecutable = Collections.<IntentionExecutable>singletonList(new ReloadModulesFromDisk_Intention.IntentionImplementation()); } return myCachedExecutable; } /*package*/ final class IntentionImplementation extends AbstractIntentionExecutable { public IntentionImplementation() { } @Override public String getDescription(final SNode node, final EditorContext editorContext) { return "Reload modules from disk"; } @Override public void execute(final SNode node, final EditorContext editorContext) { VisibleModules visible = new VisibleModules(node); visible.collect(); PathConverter pathConverter = new PathConverter(node); { Iterator<SNode> module_it = ListSequence.fromList(SNodeOperations.getNodeDescendants(node, MetaAdapterFactory.getConcept(0xcf935df46994e9cL, 0xa132fa109541cba3L, 0x4780308f5d333ebL, "jetbrains.mps.build.mps.structure.BuildMps_AbstractModule"), false, new SAbstractConcept[]{})).iterator(); SNode module_var; while (module_it.hasNext()) { module_var = module_it.next(); if (SNodeOperations.isInstanceOf(module_var, MetaAdapterFactory.getConcept(0xcf935df46994e9cL, 0xa132fa109541cba3L, 0x4c6db07d2e56a8b4L, "jetbrains.mps.build.mps.structure.BuildMps_Generator"))) { continue; } try { ModuleLoader.createModuleChecker(module_var, visible, pathConverter).check(ModuleChecker.CheckType.LOAD_IMPORTANT_PART); } catch (ModuleLoaderException ex) { if (LOG.isEnabledFor(Level.ERROR)) { LOG.error(ex.getMessage()); } if (LOG.isDebugEnabled()) { LOG.debug(ex.getMessage(), ex); } // TODO report? } } } } @Override public IntentionDescriptor getDescriptor() { return ReloadModulesFromDisk_Intention.this; } } }