package jetbrains.mps.ide.httpsupport.nodeaccess.plugin; /*Generated by MPS */ import jetbrains.mps.ide.httpsupport.runtime.base.HttpRequestHandlerBase; import java.util.List; import jetbrains.mps.internal.collections.runtime.ListSequence; import java.util.ArrayList; import jetbrains.mps.project.Project; import jetbrains.mps.ide.httpsupport.manager.plugin.HttpRequest; import jetbrains.mps.ide.httpsupport.runtime.base.HttpSupportUtil; import jetbrains.mps.project.ProjectManager; import jetbrains.mps.project.MPSProject; import com.intellij.openapi.vfs.VirtualFile; import jetbrains.mps.ide.common.FileOpenUtil; import io.netty.handler.codec.http.HttpResponseStatus; import io.netty.buffer.Unpooled; public class FileOpener_RequestHandler extends HttpRequestHandlerBase { private static final List<String> QUERY_PREFIX = ListSequence.fromListAndArray(new ArrayList<String>(), "file"); private final boolean myCorrectRequest; private final String file; private final Project project; public FileOpener_RequestHandler(HttpRequest request) { super(request); boolean correctRequest = true; { String file_serialized = ListSequence.fromList(this.request.getParameterValue("file")).getElement(0); if (file_serialized != null) { this.file = file_serialized; } else { correctRequest = false; this.file = null; } } { String project_serialized = ListSequence.fromList(this.request.getParameterValue("project")).getElement(0); if (project_serialized != null) { this.project = HttpSupportUtil.getProjectByName(project_serialized); } else { this.project = ProjectManager.getInstance().getOpenedProjects().get(0); } } myCorrectRequest = correctRequest; } @Override protected List<String> getQueryPrefix() { return QUERY_PREFIX; } @Override public boolean canHandle() { if (!(myCorrectRequest) || !(super.canHandle())) { return false; } return !(this.file.endsWith(".java")); } @Override public void handle() throws Exception { if (this.project instanceof MPSProject) { final com.intellij.openapi.project.Project ideaProject = as_tdoo4z_a0a0a0a0p(this.project, MPSProject.class).getProject(); VirtualFile projectFile = ideaProject.getBaseDir(); if (projectFile != null) { final VirtualFile virtualFile = projectFile.findFileByRelativePath(this.file); if (virtualFile != null) { this.project.getModelAccess().runWriteInEDT(new Runnable() { public void run() { FileOpenUtil.openFile(ideaProject, virtualFile, 1); HandlerUtil.requestFocus(FileOpener_RequestHandler.this.project); } }); this.request.sendResponse(HttpResponseStatus.OK, "image/gif", Unpooled.copiedBuffer(HandlerUtil.SUCCESS_STREAM)); return; } } } else { HandlerUtil.showNoProjectIsAvailablePopup(); } this.request.sendResponse(HttpResponseStatus.OK, "image/gif", Unpooled.copiedBuffer(HandlerUtil.FAILURE_STREAM)); } private static <T> T as_tdoo4z_a0a0a0a0p(Object o, Class<T> type) { return (type.isInstance(o) ? (T) o : null); } }