mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
java macros -> java-impl
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user