package jetbrains.mps.console.tool; /*Generated by MPS */ import org.apache.log4j.Logger; import org.apache.log4j.LogManager; import jetbrains.mps.project.Project; import org.jetbrains.mps.openapi.model.SModel; import javax.swing.SwingUtilities; import org.apache.log4j.Level; import jetbrains.mps.make.script.IScript; import jetbrains.mps.make.script.ScriptBuilder; import jetbrains.mps.make.facet.IFacet; import jetbrains.mps.make.facet.ITarget; import jetbrains.mps.ide.messages.MessagesViewTool; import jetbrains.mps.make.MakeSession; import jetbrains.mps.make.IMakeService; import java.util.concurrent.Future; import jetbrains.mps.make.script.IResult; import jetbrains.mps.smodel.resources.ModelsToResources; import jetbrains.mps.internal.collections.runtime.Sequence; import java.util.concurrent.ExecutionException; import jetbrains.mps.baseLanguage.closures.runtime._FunctionTypes; import jetbrains.mps.ide.findusages.model.SearchResults; import jetbrains.mps.ide.project.ProjectHelper; import jetbrains.mps.ide.findusages.view.UsagesViewTool; public class ConsoleUtil { private static final Logger LOG = LogManager.getLogger(ConsoleUtil.class); public static boolean make(final Project project, final SModel model) { if (SwingUtilities.isEventDispatchThread()) { if (LOG.isEnabledFor(Level.ERROR)) { LOG.error("Must be called not from EDT"); } return false; } IScript scr = new ScriptBuilder().withFacetNames(new IFacet.Name("jetbrains.mps.lang.core.Generate"), new IFacet.Name("jetbrains.mps.lang.core.TextGen"), new IFacet.Name("jetbrains.mps.make.facets.JavaCompile"), new IFacet.Name("jetbrains.mps.make.facets.ReloadClasses"), new IFacet.Name("jetbrains.mps.make.facets.Make")).withFinalTarget(new ITarget.Name("jetbrains.mps.make.facets.Make.make")).toScript(); final MessagesViewTool mvt = project.getComponent(MessagesViewTool.class); final String messagesListName = "Console Make"; mvt.getAvailableList(messagesListName, true).setWarningsEnabled(false); mvt.getAvailableList(messagesListName, true).setInfoEnabled(false); MakeSession session = new MakeSession(project, mvt.newHandler(messagesListName), true); if (IMakeService.INSTANCE.get().openNewSession(session)) { Future<IResult> future = IMakeService.INSTANCE.get().make(session, new ModelsToResources(Sequence.<SModel>singleton(model)).resources(false), scr); try { return future.get().isSucessful(); } catch (InterruptedException e) { if (LOG.isEnabledFor(Level.ERROR)) { LOG.error("Error on making temporary model", e); } } catch (ExecutionException e) { if (LOG.isEnabledFor(Level.ERROR)) { LOG.error("Error on making temporary model", e); } } } return false; } public static void show(Project p, _FunctionTypes._return_P0_E0<? extends SearchResults> results) { try { check_xg48a4_a0a0a0c(ProjectHelper.toIdeaProject(p)).show(results.invoke(), "No results to show"); } catch (Exception e) { if (LOG.isEnabledFor(Level.WARN)) { LOG.warn("Exception in showing custom console result", e); } } } private static UsagesViewTool check_xg48a4_a0a0a0c(com.intellij.openapi.project.Project checkedDotOperand) { if (null != checkedDotOperand) { return checkedDotOperand.getComponent(UsagesViewTool.class); } return null; } }