java macros -> java-impl

This commit is contained in:
Dmitry Jemerov
2009-09-01 19:26:56 +04:00
parent 0283d06052
commit 531a7a28b9
9 changed files with 1 additions and 3 deletions
+1
View File
@@ -23,6 +23,7 @@
<orderEntry type="module" module-name="boot" />
<orderEntry type="library" name="asm" level="project" />
<orderEntry type="module" module-name="dom-openapi" />
<orderEntry type="module" module-name="dom-impl" />
</component>
<component name="copyright">
<Base>
@@ -0,0 +1,19 @@
package com.intellij.ide;
import com.intellij.psi.*;
import com.intellij.openapi.actionSystem.DataContext;
public class JavaDataAccessors {
public static final DataAccessor<PsiPackage> FILE_PACKAGE = new DataAccessor<PsiPackage>() {
public PsiPackage getImpl(DataContext dataContext) throws NoDataException {
PsiFile psiFile = DataAccessors.PSI_FILE.getNotNull(dataContext);
PsiDirectory containingDirectory = psiFile.getContainingDirectory();
if (containingDirectory == null || !containingDirectory.isValid()) return null;
return JavaDirectoryService.getInstance().getPackage(containingDirectory);
}
};
public static final DataAccessor<PsiJavaFile> PSI_JAVA_FILE = DataAccessor.SubClassDataAccessor.create(DataAccessors.PSI_FILE, PsiJavaFile.class);
private JavaDataAccessors() {
}
}
@@ -0,0 +1,31 @@
package com.intellij.ide.macro;
import com.intellij.ide.IdeBundle;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.actionSystem.PlatformDataKeys;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.ProjectRootManager;
import com.intellij.openapi.vfs.VirtualFile;
/**
* @author Eugene Belyaev
*/
public final class ClasspathEntryMacro extends Macro {
public String getName() {
return "ClasspathEntry";
}
public String getDescription() {
return IdeBundle.message("macro.classpath.entry");
}
public String expand(final DataContext dataContext) {
final Project project = PlatformDataKeys.PROJECT.getData(dataContext);
if (project == null) return null;
final VirtualFile file = PlatformDataKeys.VIRTUAL_FILE.getData(dataContext);
if (file == null) return null;
final VirtualFile classRoot = ProjectRootManager.getInstance(project).getFileIndex().getClassRootForFile(file);
if (classRoot == null) return null;
return getPath(classRoot);
}
}
@@ -0,0 +1,24 @@
package com.intellij.ide.macro;
import com.intellij.ide.IdeBundle;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.actionSystem.PlatformDataKeys;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.ProjectRootsTraversing;
import com.intellij.openapi.roots.ProjectClasspathTraversing;
public final class ClasspathMacro extends Macro {
public String getName() {
return "Classpath";
}
public String getDescription() {
return IdeBundle.message("macro.project.classpath");
}
public String expand(DataContext dataContext) {
Project project = PlatformDataKeys.PROJECT.getData(dataContext);
if (project == null) return null;
return ProjectRootsTraversing.collectRoots(project, ProjectClasspathTraversing.FULL_CLASSPATH_RECURSIVE).getPathsString();
}
}
@@ -0,0 +1,47 @@
package com.intellij.ide.macro;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiJavaFile;
import com.intellij.ide.IdeBundle;
import com.intellij.ide.JavaDataAccessors;
public final class FileClassMacro extends Macro {
public String getName() {
return "FileClass";
}
public String getDescription() {
return IdeBundle.message("macro.class.name");
}
public String expand(DataContext dataContext) {
//Project project = (Project)dataContext.getData(DataConstants.PROJECT);
//if (project == null) {
// return null;
//}
//VirtualFile file = (VirtualFile)dataContext.getData(DataConstantsEx.VIRTUAL_FILE);
//if (file == null) {
// return null;
//}
//PsiFile psiFile = PsiManager.getInstance(project).findFile(file);
//if (!(psiFile instanceof PsiJavaFile)) {
// return null;
//}
final PsiJavaFile javaFile = JavaDataAccessors.PSI_JAVA_FILE.from(dataContext);
if (javaFile == null) return null;
PsiClass[] classes = javaFile.getClasses();
if (classes.length == 1) {
return classes[0].getQualifiedName();
}
String fileName = javaFile.getVirtualFile().getNameWithoutExtension();
for (int i = 0; i < classes.length; i++) {
PsiClass aClass = classes[i];
String name = aClass.getName();
if (fileName.equals(name)) {
return aClass.getQualifiedName();
}
}
return null;
}
}
@@ -0,0 +1,22 @@
package com.intellij.ide.macro;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.psi.PsiPackage;
import com.intellij.ide.IdeBundle;
import com.intellij.ide.JavaDataAccessors;
public class FileFQPackage extends Macro {
public String expand(DataContext dataContext) throws Macro.ExecutionCancelledException {
PsiPackage aPackage = JavaDataAccessors.FILE_PACKAGE.from(dataContext);
if (aPackage == null) return null;
return aPackage.getQualifiedName();
}
public String getDescription() {
return IdeBundle.message("macro.file.fully.qualified.package");
}
public String getName() {
return "FileFQPackage";
}
}
@@ -0,0 +1,22 @@
package com.intellij.ide.macro;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.psi.PsiPackage;
import com.intellij.ide.IdeBundle;
import com.intellij.ide.JavaDataAccessors;
public final class FilePackageMacro extends Macro {
public String getName() {
return "FilePackage";
}
public String getDescription() {
return IdeBundle.message("macro.file.package");
}
public String expand(DataContext dataContext) {
PsiPackage aPackage = JavaDataAccessors.FILE_PACKAGE.from(dataContext);
if (aPackage == null) return null;
return aPackage.getName();
}
}
@@ -0,0 +1,33 @@
package com.intellij.ide.macro;
import com.intellij.ide.IdeBundle;
import com.intellij.javadoc.JavadocConfiguration;
import com.intellij.javadoc.JavadocGenerationManager;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.actionSystem.PlatformDataKeys;
import com.intellij.openapi.project.Project;
import java.io.File;
public final class JavaDocPathMacro extends Macro {
public String getName() {
return "JavaDocPath";
}
public String getDescription() {
return IdeBundle.message("macro.javadoc.output.directory");
}
public String expand(DataContext dataContext) {
final Project project = PlatformDataKeys.PROJECT.getData(dataContext);
if (project == null) {
return null;
}
JavadocGenerationManager manager = project.getComponent(JavadocGenerationManager.class);
if (manager == null) {
return null;
}
final JavadocConfiguration configuration = manager.getConfiguration();
return configuration.OUTPUT_DIRECTORY == null ? null : configuration.OUTPUT_DIRECTORY.replace('/', File.separatorChar);
}
}
@@ -0,0 +1,61 @@
package com.intellij.ide.macro;
import com.intellij.ide.IdeBundle;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.actionSystem.PlatformDataKeys;
import com.intellij.openapi.compiler.ex.CompilerPathsEx;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.CompilerModuleExtension;
import com.intellij.openapi.roots.ProjectFileIndex;
import com.intellij.openapi.roots.ProjectRootManager;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.VirtualFileManager;
import java.io.File;
public final class OutputPathMacro extends Macro {
public String getName() {
return "OutputPath";
}
public String getDescription() {
return IdeBundle.message("macro.output.path");
}
public String expand(DataContext dataContext) {
Project project = PlatformDataKeys.PROJECT.getData(dataContext);
if (project == null) {
return null;
}
VirtualFile file = PlatformDataKeys.VIRTUAL_FILE.getData(dataContext);
if (file != null) {
ProjectFileIndex projectFileIndex = ProjectRootManager.getInstance(project).getFileIndex();
Module module = projectFileIndex.getModuleForFile(file);
if (module != null){
boolean isTest = projectFileIndex.isInTestSourceContent(file);
String outputPathUrl = isTest ? CompilerModuleExtension.getInstance(module).getCompilerOutputUrlForTests()
: CompilerModuleExtension.getInstance(module).getCompilerOutputUrl();
if (outputPathUrl == null) return null;
return VirtualFileManager.extractPath(outputPathUrl).replace('/', File.separatorChar);
}
}
Module[] allModules = ModuleManager.getInstance(project).getSortedModules();
if (allModules.length == 0) {
return null;
}
String[] paths = CompilerPathsEx.getOutputPaths(allModules);
final StringBuffer outputPath = new StringBuffer();
for (int idx = 0; idx < paths.length; idx++) {
String path = paths[idx];
if (idx > 0) {
outputPath.append(File.pathSeparator);
}
outputPath.append(path);
}
return outputPath.toString();
}
}