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);
}
}