package org.jetbrains.plugins.gradle.action; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.fileEditor.FileEditorManager; import com.intellij.openapi.fileEditor.OpenFileDescriptor; import com.intellij.openapi.project.DumbAware; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.NotNull; import org.jetbrains.plugins.gradle.settings.GradleSettings; import org.jetbrains.plugins.gradle.util.GradleBundle; /** * Forces the IntelliJ IDEA to open {@link GradleSettings#getLinkedExternalProjectPath() linked gradle project} at the editor * <p/> * Not thread-safe. * * @author Denis Zhdanov * @since 1/31/12 5:16 PM */ public class GradleOpenScriptAction extends AbstractGradleLinkedProjectAction implements DumbAware { private static final Logger LOG = Logger.getInstance(GradleOpenScriptAction.class); public GradleOpenScriptAction() { getTemplatePresentation().setText(GradleBundle.message("gradle.action.open.script.text")); getTemplatePresentation().setDescription(GradleBundle.message("gradle.action.open.script.description")); } @Override protected void doUpdate(@NotNull AnActionEvent event, @NotNull Project project, @NotNull String linkedProjectPath) { } @Override protected void doActionPerformed(@NotNull AnActionEvent event, @NotNull Project project, @NotNull String linkedProjectPath) { final VirtualFile virtualFile = LocalFileSystem.getInstance().findFileByPath(linkedProjectPath); if (virtualFile == null) { LOG.warn(String.format("Can't obtain virtual file for the target file path: '%s'", linkedProjectPath)); return; } OpenFileDescriptor descriptor = new OpenFileDescriptor(project, virtualFile); FileEditorManager.getInstance(project).openTextEditor(descriptor, true); } }