mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-10-02 07:47:25 +07:00
Merge branch 'master' of git.labs.intellij.net:idea/community
This commit is contained in:
Generated
+1
-5
@@ -11,6 +11,7 @@
|
||||
<module fileurl="file://$PROJECT_DIR$/RegExpSupport/RegExpSupport.iml" filepath="$PROJECT_DIR$/RegExpSupport/RegExpSupport.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/platform/annotations/annotations.iml" filepath="$PROJECT_DIR$/platform/annotations/annotations.iml" group="platform" />
|
||||
<module fileurl="file://$PROJECT_DIR$/plugins/ant/ant.iml" filepath="$PROJECT_DIR$/plugins/ant/ant.iml" group="plugins" />
|
||||
<module fileurl="file://$PROJECT_DIR$/plugins/relaxng/relaxng.iml" filepath="$PROJECT_DIR$/plugins/relaxng/relaxng.iml" group="plugins" />
|
||||
<module fileurl="file://$PROJECT_DIR$/platform/boot/boot.iml" filepath="$PROJECT_DIR$/platform/boot/boot.iml" group="platform" />
|
||||
<module fileurl="file://$PROJECT_DIR$/platform/bootstrap/bootstrap.iml" filepath="$PROJECT_DIR$/platform/bootstrap/bootstrap.iml" group="platform" />
|
||||
<module fileurl="file://$PROJECT_DIR$/build/build.iml" filepath="$PROJECT_DIR$/build/build.iml" />
|
||||
@@ -35,11 +36,7 @@
|
||||
<module fileurl="file://$PROJECT_DIR$/platform/forms_rt/forms_rt.iml" filepath="$PROJECT_DIR$/platform/forms_rt/forms_rt.iml" group="platform" />
|
||||
<module fileurl="file://$PROJECT_DIR$/plugins/generate-tostring/generate-tostring.iml" filepath="$PROJECT_DIR$/plugins/generate-tostring/generate-tostring.iml" group="plugins" />
|
||||
<module fileurl="file://$PROJECT_DIR$/plugins/git4idea/git4idea.iml" filepath="$PROJECT_DIR$/plugins/git4idea/git4idea.iml" group="plugins/VCS" />
|
||||
<module fileurl="file://$PROJECT_DIR$/plugins/groovy/grape/grape.iml" filepath="$PROJECT_DIR$/plugins/groovy/grape/grape.iml" group="plugins/Groovy" />
|
||||
<module fileurl="file://$PROJECT_DIR$/plugins/groovy/grape/grape-rt.iml" filepath="$PROJECT_DIR$/plugins/groovy/grape/grape-rt.iml" group="plugins/Groovy" />
|
||||
<module fileurl="file://$PROJECT_DIR$/plugins/groovy/hotswap/groovy-hotswap.iml" filepath="$PROJECT_DIR$/plugins/groovy/hotswap/groovy-hotswap.iml" group="plugins/Groovy" />
|
||||
<module fileurl="file://$PROJECT_DIR$/plugins/groovy/rt/groovy-rt.iml" filepath="$PROJECT_DIR$/plugins/groovy/rt/groovy-rt.iml" group="plugins/Groovy" />
|
||||
<module fileurl="file://$PROJECT_DIR$/plugins/groovy/groovypp/groovypp.iml" filepath="$PROJECT_DIR$/plugins/groovy/groovypp/groovypp.iml" group="plugins/Groovy" />
|
||||
<module fileurl="file://$PROJECT_DIR$/plugins/hg4idea/hg4idea.iml" filepath="$PROJECT_DIR$/plugins/hg4idea/hg4idea.iml" group="plugins/VCS" />
|
||||
<module fileurl="file://$PROJECT_DIR$/platform/icons/icons.iml" filepath="$PROJECT_DIR$/platform/icons/icons.iml" group="platform" />
|
||||
<module fileurl="file://$PROJECT_DIR$/java/idea-ui/idea-ui.iml" filepath="$PROJECT_DIR$/java/idea-ui/idea-ui.iml" group="java" />
|
||||
@@ -51,7 +48,6 @@
|
||||
<module fileurl="file://$PROJECT_DIR$/java/compiler/javac2/javac2.iml" filepath="$PROJECT_DIR$/java/compiler/javac2/javac2.iml" group="java/compiler" />
|
||||
<module fileurl="file://$PROJECT_DIR$/plugins/cvs/javacvs-src/javacvs-src.iml" filepath="$PROJECT_DIR$/plugins/cvs/javacvs-src/javacvs-src.iml" group="plugins/VCS/cvs" />
|
||||
<module fileurl="file://$PROJECT_DIR$/plugins/groovy/jetgroovy.iml" filepath="$PROJECT_DIR$/plugins/groovy/jetgroovy.iml" group="plugins/Groovy" />
|
||||
<module fileurl="file://$PROJECT_DIR$/plugins/groovy/jetgroovy-tests.iml" filepath="$PROJECT_DIR$/plugins/groovy/jetgroovy-tests.iml" group="plugins/Groovy" />
|
||||
<module fileurl="file://$PROJECT_DIR$/java/jsp-base-openapi/jsp-base-openapi.iml" filepath="$PROJECT_DIR$/java/jsp-base-openapi/jsp-base-openapi.iml" group="java" />
|
||||
<module fileurl="file://$PROJECT_DIR$/java/jsp-openapi/jsp-openapi.iml" filepath="$PROJECT_DIR$/java/jsp-openapi/jsp-openapi.iml" group="java" />
|
||||
<module fileurl="file://$PROJECT_DIR$/java/jsp-spi/jsp-spi.iml" filepath="$PROJECT_DIR$/java/jsp-spi/jsp-spi.iml" group="java" />
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -172,6 +172,9 @@ def layoutFull(String home, String targetDirectory) {
|
||||
|
||||
layoutPlugin("SpellChecker", "spellchecker", "spellchecker-core")
|
||||
|
||||
layoutPlugin("RelaxNG-Support", "relaxng") {
|
||||
fileset(dir: "$home/plugins/relaxng/lib", includes: "**/*.jar")
|
||||
}
|
||||
|
||||
layoutPlugin("maven") {
|
||||
jar("maven-facade-api.jar") {
|
||||
@@ -264,20 +267,18 @@ def layoutFull(String home, String targetDirectory) {
|
||||
dir("standardDsls") {
|
||||
fileset(dir: "$home/plugins/groovy/resources/standardDsls")
|
||||
}
|
||||
dir("agent") {
|
||||
fileset(dir: "${home}/plugins/groovy/hotswap") {
|
||||
include(name: "gragent.jar")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fileset(dir: "$home/plugins/groovy/resources/conf")
|
||||
fileset(dir: "${home}/plugins/groovy/lib")
|
||||
}
|
||||
}
|
||||
|
||||
dir("Groovypp") {
|
||||
dir("lib") {
|
||||
jar("groovypp.jar") {
|
||||
module("groovypp")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -87,6 +87,4 @@ binding.setVariable("loadProject", {
|
||||
|
||||
requireProperty("home", guessHome())
|
||||
|
||||
project.stagePrinter = { String message ->
|
||||
println "##teamcity[progressMessage '$message']"
|
||||
}
|
||||
project.builder.buildInfoPrinter = new org.jetbrains.jps.teamcity.TeamcityBuildInfoPrinter()
|
||||
|
||||
@@ -240,18 +240,18 @@ public class CompilerConfigurationImpl extends CompilerConfiguration implements
|
||||
catch (NoClassDefFoundError e) {
|
||||
// wrong JDK
|
||||
}
|
||||
}
|
||||
|
||||
final BackendCompiler[] compilers = Extensions.getExtensions(BackendCompiler.EP_NAME, myProject);
|
||||
final Set<FileType> types = new HashSet<FileType>();
|
||||
for (BackendCompiler compiler : compilers) {
|
||||
myRegisteredCompilers.add(compiler);
|
||||
types.addAll(compiler.getCompilableFileTypes());
|
||||
}
|
||||
final BackendCompiler[] compilers = Extensions.getExtensions(BackendCompiler.EP_NAME, myProject);
|
||||
final Set<FileType> types = new HashSet<FileType>();
|
||||
for (BackendCompiler compiler : compilers) {
|
||||
myRegisteredCompilers.add(compiler);
|
||||
types.addAll(compiler.getCompilableFileTypes());
|
||||
}
|
||||
|
||||
final CompilerManager compilerManager = CompilerManager.getInstance(myProject);
|
||||
for (FileType type : types) {
|
||||
compilerManager.addCompilableFileType(type);
|
||||
}
|
||||
final CompilerManager compilerManager = CompilerManager.getInstance(myProject);
|
||||
for (FileType type : types) {
|
||||
compilerManager.addCompilableFileType(type);
|
||||
}
|
||||
|
||||
myDefaultJavaCompiler = JAVAC_EXTERNAL_BACKEND;
|
||||
|
||||
@@ -35,6 +35,7 @@ import com.intellij.openapi.vfs.LocalFileSystem;
|
||||
import com.intellij.openapi.vfs.ReadonlyStatusHandler;
|
||||
import com.intellij.openapi.vfs.VfsUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -151,7 +152,7 @@ public class GenerateAntBuildAction extends CompileActionBase {
|
||||
generated = generateMultipleFileBuild(project, genOptions, filesToRefresh);
|
||||
}
|
||||
if (generated != null) {
|
||||
_generated.addAll(Arrays.asList(generated));
|
||||
ContainerUtil.addAll(_generated, generated);
|
||||
}
|
||||
}
|
||||
catch (IOException e) {
|
||||
|
||||
@@ -28,6 +28,7 @@ import com.intellij.openapi.roots.CompilerModuleExtension;
|
||||
import com.intellij.openapi.roots.OrderRootType;
|
||||
import com.intellij.openapi.util.SystemInfo;
|
||||
import com.intellij.util.Chunk;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.graph.CachingSemiGraph;
|
||||
import com.intellij.util.graph.Graph;
|
||||
import com.intellij.util.graph.GraphGenerator;
|
||||
@@ -239,13 +240,13 @@ public class GenerationOptionsImpl extends GenerationOptions {
|
||||
final Collection<ModuleChunk> nodes = moduleChunkGraph.getNodes();
|
||||
final ModuleChunk[] moduleChunks = nodes.toArray(new ModuleChunk[nodes.size()]);
|
||||
for (ModuleChunk moduleChunk : moduleChunks) {
|
||||
final Iterator<ModuleChunk> depsIterator = moduleChunkGraph.getIn(moduleChunk);
|
||||
List<ModuleChunk> deps = new ArrayList<ModuleChunk>();
|
||||
while (depsIterator.hasNext()) {
|
||||
deps.add(depsIterator.next());
|
||||
}
|
||||
moduleChunk.setDependentChunks(deps.toArray(new ModuleChunk[deps.size()]));
|
||||
myCustomCompilers.addAll(Arrays.asList(moduleChunk.getCustomCompilers()));
|
||||
final Iterator<ModuleChunk> depsIterator = moduleChunkGraph.getIn(moduleChunk);
|
||||
List<ModuleChunk> deps = new ArrayList<ModuleChunk>();
|
||||
while (depsIterator.hasNext()) {
|
||||
deps.add(depsIterator.next());
|
||||
}
|
||||
moduleChunk.setDependentChunks(deps.toArray(new ModuleChunk[deps.size()]));
|
||||
ContainerUtil.addAll(myCustomCompilers, moduleChunk.getCustomCompilers());
|
||||
}
|
||||
Arrays.sort(moduleChunks, new ChunksComparator());
|
||||
if (generateSingleFile) {
|
||||
@@ -273,7 +274,7 @@ public class GenerationOptionsImpl extends GenerationOptions {
|
||||
final Sdk[] projectJdks = ProjectJdkTable.getInstance().getAllJdks();
|
||||
myJdkUrls = new HashSet<String>();
|
||||
for (Sdk jdk : projectJdks) {
|
||||
myJdkUrls.addAll(Arrays.asList(jdk.getRootProvider().getUrls(OrderRootType.CLASSES)));
|
||||
ContainerUtil.addAll(myJdkUrls, jdk.getRootProvider().getUrls(OrderRootType.CLASSES));
|
||||
}
|
||||
return myJdkUrls;
|
||||
}
|
||||
|
||||
@@ -25,11 +25,11 @@ import com.intellij.openapi.vfs.JarFileSystem;
|
||||
import com.intellij.openapi.vfs.VirtualFileManager;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.OrderedSet;
|
||||
import gnu.trove.TObjectHashingStrategy;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
@@ -232,7 +232,7 @@ public class ModuleChunkClasspath extends Path {
|
||||
final Set<String> jdkUrls = options.getAllJdkUrls();
|
||||
|
||||
final OrderedSet<String> urls = new OrderedSet<String>();
|
||||
urls.addAll(Arrays.asList(extension.getOutputRootUrls(forTest)));
|
||||
ContainerUtil.addAll(urls, extension.getOutputRootUrls(forTest));
|
||||
urls.removeAll(jdkUrls);
|
||||
return ArrayUtil.toStringArray(urls);
|
||||
}
|
||||
|
||||
@@ -97,6 +97,8 @@ import java.util.concurrent.TimeUnit;
|
||||
|
||||
public class CompileDriver {
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.compiler.impl.CompileDriver");
|
||||
// to be used in tests only for debug output
|
||||
public static boolean ourDebugMode = false;
|
||||
|
||||
private final Project myProject;
|
||||
private final Map<Pair<IntermediateOutputCompiler, Module>, Pair<VirtualFile, VirtualFile>> myGenerationCompilerModuleToOutputDirMap; // [IntermediateOutputCompiler, Module] -> [ProductionSources, TestSources]
|
||||
@@ -1271,7 +1273,7 @@ public class CompileDriver {
|
||||
for (File outputDirectory : outputDirectories) {
|
||||
File[] files = outputDirectory.listFiles();
|
||||
if (files != null) {
|
||||
filesToDelete.addAll(Arrays.asList(files));
|
||||
ContainerUtil.addAll(filesToDelete, files);
|
||||
}
|
||||
}
|
||||
if (filesToDelete.size() > 0) {
|
||||
@@ -1558,12 +1560,20 @@ public class CompileDriver {
|
||||
if (toDelete.isEmpty() && toCompile.isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
if (LOG.isDebugEnabled()) {
|
||||
if (LOG.isDebugEnabled() || ourDebugMode) {
|
||||
if (!toDelete.isEmpty()) {
|
||||
LOG.debug("Found items to delete, compiler " + compiler.getDescription());
|
||||
final String message = "Found items to delete, compiler " + compiler.getDescription();
|
||||
LOG.debug(message);
|
||||
if (ourDebugMode) {
|
||||
System.out.println(message);
|
||||
}
|
||||
}
|
||||
if (!toCompile.isEmpty()) {
|
||||
LOG.debug("Found items to compile, compiler " + compiler.getDescription());
|
||||
final String message = "Found items to compile, compiler " + compiler.getDescription();
|
||||
LOG.debug(message);
|
||||
if (ourDebugMode) {
|
||||
System.out.println(message);
|
||||
}
|
||||
}
|
||||
}
|
||||
throw new ExitException(ExitStatus.CANCELLED);
|
||||
|
||||
@@ -28,10 +28,14 @@ import com.intellij.openapi.util.Key;
|
||||
import com.intellij.openapi.util.UserDataHolderBase;
|
||||
import com.intellij.openapi.vfs.VfsUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import gnu.trove.THashSet;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class CompositeScope extends UserDataHolderBase implements CompileScope{
|
||||
private final List<CompileScope> myScopes = new ArrayList<CompileScope>();
|
||||
@@ -65,7 +69,7 @@ public class CompositeScope extends UserDataHolderBase implements CompileScope{
|
||||
for (CompileScope scope : myScopes) {
|
||||
final VirtualFile[] files = scope.getFiles(fileType, inSourceOnly);
|
||||
if (files.length > 0) {
|
||||
allFiles.addAll(Arrays.asList(files));
|
||||
ContainerUtil.addAll(allFiles, files);
|
||||
}
|
||||
}
|
||||
return VfsUtil.toVirtualFileArray(allFiles);
|
||||
@@ -84,7 +88,7 @@ public class CompositeScope extends UserDataHolderBase implements CompileScope{
|
||||
public Module[] getAffectedModules() {
|
||||
Set<Module> modules = new HashSet<Module>();
|
||||
for (final CompileScope compileScope : myScopes) {
|
||||
modules.addAll(Arrays.asList(compileScope.getAffectedModules()));
|
||||
ContainerUtil.addAll(modules, compileScope.getAffectedModules());
|
||||
}
|
||||
return modules.toArray(new Module[modules.size()]);
|
||||
}
|
||||
|
||||
+87
-19
@@ -48,6 +48,7 @@ import com.intellij.openapi.vfs.newvfs.ManagingFS;
|
||||
import com.intellij.openapi.vfs.newvfs.NewVirtualFile;
|
||||
import com.intellij.openapi.vfs.newvfs.persistent.FSRecords;
|
||||
import com.intellij.openapi.vfs.newvfs.persistent.PersistentFS;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.SLRUCache;
|
||||
import com.intellij.util.indexing.FileBasedIndex;
|
||||
import com.intellij.util.indexing.IndexInfrastructure;
|
||||
@@ -77,6 +78,7 @@ import java.util.*;
|
||||
|
||||
public class TranslatingCompilerFilesMonitor implements ApplicationComponent {
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.compiler.impl.TranslatingCompilerFilesMonitor");
|
||||
public static boolean ourDebugMode = false;
|
||||
@NonNls
|
||||
private static final String PATHS_TO_DELETE_FILENAME = "paths_to_delete.dat";
|
||||
private static final String OUTPUT_ROOTS_FILENAME = "output_roots.dat";
|
||||
@@ -159,11 +161,17 @@ public class TranslatingCompilerFilesMonitor implements ApplicationComponent {
|
||||
synchronized (mySourcesToRecompile) {
|
||||
final TIntHashSet pathsToRecompile = mySourcesToRecompile.get(projectId);
|
||||
if (_forceCompile || pathsToRecompile != null && !pathsToRecompile.isEmpty()) {
|
||||
if (ourDebugMode) {
|
||||
System.out.println("Analysing potentially recompilable files for " + compiler.getDescription());
|
||||
}
|
||||
while (scopeSrcIterator.hasNext()) {
|
||||
final VirtualFile file = scopeSrcIterator.next();
|
||||
if (!file.isValid()) {
|
||||
if (LOG.isDebugEnabled()) {
|
||||
if (LOG.isDebugEnabled() || ourDebugMode) {
|
||||
LOG.debug("Skipping invalid file " + file.getPresentableUrl());
|
||||
if (ourDebugMode) {
|
||||
System.out.println("\t SKIPPED(INVALID) " + file.getPresentableUrl());
|
||||
}
|
||||
}
|
||||
continue;
|
||||
}
|
||||
@@ -171,17 +179,38 @@ public class TranslatingCompilerFilesMonitor implements ApplicationComponent {
|
||||
if (_forceCompile) {
|
||||
if (compiler.isCompilableFile(file, context) && !configuration.isExcludedFromCompilation(file)) {
|
||||
toCompile.add(file);
|
||||
if (ourDebugMode) {
|
||||
System.out.println("\t INCLUDED " + file.getPresentableUrl());
|
||||
}
|
||||
selectedForRecompilation.add(file);
|
||||
if (pathsToRecompile == null || !pathsToRecompile.contains(fileId)) {
|
||||
addSourceForRecompilation(projectId, file, null);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (ourDebugMode) {
|
||||
System.out.println("\t NOT COMPILABLE OR EXCLUDED " + file.getPresentableUrl());
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (pathsToRecompile.contains(fileId)) {
|
||||
if (compiler.isCompilableFile(file, context) && !configuration.isExcludedFromCompilation(file)) {
|
||||
toCompile.add(file);
|
||||
if (ourDebugMode) {
|
||||
System.out.println("\t INCLUDED " + file.getPresentableUrl());
|
||||
}
|
||||
selectedForRecompilation.add(file);
|
||||
}
|
||||
else {
|
||||
if (ourDebugMode) {
|
||||
System.out.println("\t NOT COMPILABLE OR EXCLUDED " + file.getPresentableUrl());
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (ourDebugMode) {
|
||||
System.out.println("\t NOT INCLUDED " + file.getPresentableUrl());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -211,11 +240,22 @@ public class TranslatingCompilerFilesMonitor implements ApplicationComponent {
|
||||
//noinspection UnnecessaryBoxing
|
||||
final File file = new File(outputPath);
|
||||
toDelete.add(new Trinity<File, String, Boolean>(file, classNamePair.getClassName(), Boolean.valueOf(sourcePresent)));
|
||||
if (LOG.isDebugEnabled()) {
|
||||
LOG.debug("Found file to delete: " + file);
|
||||
if (LOG.isDebugEnabled() || ourDebugMode) {
|
||||
final String message = "Found file to delete: " + file;
|
||||
LOG.debug(message);
|
||||
if (ourDebugMode) {
|
||||
System.out.println(message);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (LOG.isDebugEnabled() || ourDebugMode) {
|
||||
final String message = "Found zombie entry marked for deletion: " + outputPath;
|
||||
LOG.debug(message);
|
||||
if (ourDebugMode) {
|
||||
System.out.println(message);
|
||||
}
|
||||
}
|
||||
// must be gagbage entry, should cleanup
|
||||
zombieEntries.add(outputPath);
|
||||
}
|
||||
@@ -300,8 +340,12 @@ public class TranslatingCompilerFilesMonitor implements ApplicationComponent {
|
||||
final long fileStamp = file.getTimeStamp();
|
||||
info.updateTimestamp(projectId, fileStamp);
|
||||
saveSourceInfo(file, info);
|
||||
if (LOG.isDebugEnabled()) {
|
||||
LOG.debug("Unschedule recompilation (successfully compiled) " + file.getPresentableUrl());
|
||||
if (LOG.isDebugEnabled() || ourDebugMode) {
|
||||
final String message = "Unschedule recompilation (successfully compiled) " + file.getPresentableUrl();
|
||||
LOG.debug(message);
|
||||
if (ourDebugMode) {
|
||||
System.out.println(message);
|
||||
}
|
||||
}
|
||||
removeSourceForRecompilation(projectId, Math.abs(getFileId(file)));
|
||||
if ((fileStamp > compilationStartStamp && !((CompileContextEx)context).isGenerated(file)) || forceRecompile.contains(file)) {
|
||||
@@ -364,8 +408,12 @@ public class TranslatingCompilerFilesMonitor implements ApplicationComponent {
|
||||
final String outputPath = FileUtil.toSystemIndependentName(CompilerIOUtil.readString(is));
|
||||
final String srcUrl = CompilerIOUtil.readString(is);
|
||||
final String className = CompilerIOUtil.readString(is);
|
||||
if (LOG.isDebugEnabled()) {
|
||||
LOG.debug("INIT path to delete: " + outputPath);
|
||||
if (LOG.isDebugEnabled() || ourDebugMode) {
|
||||
final String message = "INIT path to delete: " + outputPath;
|
||||
LOG.debug(message);
|
||||
if (ourDebugMode) {
|
||||
System.out.println(message);
|
||||
}
|
||||
}
|
||||
map.put(outputPath, new SourceUrlClassNamePair(srcUrl, className));
|
||||
}
|
||||
@@ -1069,7 +1117,7 @@ public class TranslatingCompilerFilesMonitor implements ApplicationComponent {
|
||||
|
||||
{
|
||||
final Set<VirtualFile> newRoots = new HashSet<VirtualFile>();
|
||||
newRoots.addAll(Arrays.asList(rootsAfter));
|
||||
ContainerUtil.addAll(newRoots, rootsAfter);
|
||||
if (myRootsBefore != null) {
|
||||
newRoots.removeAll(Arrays.asList(myRootsBefore));
|
||||
}
|
||||
@@ -1079,7 +1127,7 @@ public class TranslatingCompilerFilesMonitor implements ApplicationComponent {
|
||||
{
|
||||
final Set<VirtualFile> oldRoots = new HashSet<VirtualFile>();
|
||||
if (myRootsBefore != null) {
|
||||
oldRoots.addAll(Arrays.asList(myRootsBefore));
|
||||
ContainerUtil.addAll(oldRoots, myRootsBefore);
|
||||
}
|
||||
if (!oldRoots.isEmpty()) {
|
||||
oldRoots.removeAll(Arrays.asList(rootsAfter));
|
||||
@@ -1135,8 +1183,12 @@ public class TranslatingCompilerFilesMonitor implements ApplicationComponent {
|
||||
|
||||
public void beforeFileDeletion(final VirtualFileEvent event) {
|
||||
final VirtualFile eventFile = event.getFile();
|
||||
if (LOG.isDebugEnabled() && eventFile.isDirectory()) {
|
||||
LOG.debug("Processing file deletion: " + eventFile.getPresentableUrl());
|
||||
if ((LOG.isDebugEnabled() && eventFile.isDirectory()) || ourDebugMode) {
|
||||
final String message = "Processing file deletion: " + eventFile.getPresentableUrl();
|
||||
LOG.debug(message);
|
||||
if (ourDebugMode) {
|
||||
System.out.println(message);
|
||||
}
|
||||
}
|
||||
processRecursively(eventFile, true, new FileProcessor() {
|
||||
public void execute(final VirtualFile file) {
|
||||
@@ -1166,8 +1218,12 @@ public class TranslatingCompilerFilesMonitor implements ApplicationComponent {
|
||||
for (int projectId : projects.toArray()) {
|
||||
// mark associated outputs for deletion
|
||||
srcInfo.processOutputPaths(projectId, deletionProc);
|
||||
if (LOG.isDebugEnabled()) {
|
||||
LOG.debug("Unschedule recompilation because of deletion " + file.getPresentableUrl());
|
||||
if (LOG.isDebugEnabled() || ourDebugMode) {
|
||||
final String message = "Unschedule recompilation because of deletion " + file.getPresentableUrl();
|
||||
LOG.debug(message);
|
||||
if (ourDebugMode) {
|
||||
System.out.println(message);
|
||||
}
|
||||
}
|
||||
removeSourceForRecompilation(projectId, Math.abs(getFileId(file)));
|
||||
}
|
||||
@@ -1268,8 +1324,12 @@ public class TranslatingCompilerFilesMonitor implements ApplicationComponent {
|
||||
mySourcesToRecompile.put(projectId, set);
|
||||
}
|
||||
alreadyMarked = !set.add(Math.abs(getFileId(srcFile)));
|
||||
if (!alreadyMarked && LOG.isDebugEnabled()) {
|
||||
LOG.debug("Scheduled recompilation " + srcFile.getPresentableUrl());
|
||||
if (!alreadyMarked && (LOG.isDebugEnabled() || ourDebugMode)) {
|
||||
final String message = "Scheduled recompilation " + srcFile.getPresentableUrl();
|
||||
LOG.debug(message);
|
||||
if (ourDebugMode) {
|
||||
System.out.println(message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1335,8 +1395,12 @@ public class TranslatingCompilerFilesMonitor implements ApplicationComponent {
|
||||
myOutputsToDelete.put(projectId, map);
|
||||
}
|
||||
map.put(outputPath, new SourceUrlClassNamePair(srcUrl, classname));
|
||||
if (LOG.isDebugEnabled()) {
|
||||
LOG.debug("ADD path to delete: " + outputPath + "; source: " + srcUrl);
|
||||
if (LOG.isDebugEnabled() || ourDebugMode) {
|
||||
final String message = "ADD path to delete: " + outputPath + "; source: " + srcUrl;
|
||||
LOG.debug(message);
|
||||
if (ourDebugMode) {
|
||||
System.out.println(message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1348,8 +1412,12 @@ public class TranslatingCompilerFilesMonitor implements ApplicationComponent {
|
||||
if (map != null) {
|
||||
final SourceUrlClassNamePair val = map.remove(outputPath);
|
||||
if (val != null) {
|
||||
if (LOG.isDebugEnabled()) {
|
||||
LOG.debug("REMOVE path to delete: " + outputPath);
|
||||
if (LOG.isDebugEnabled() || ourDebugMode) {
|
||||
final String message = "REMOVE path to delete: " + outputPath;
|
||||
LOG.debug(message);
|
||||
if (ourDebugMode) {
|
||||
System.out.println(message);
|
||||
}
|
||||
}
|
||||
if (map.isEmpty()) {
|
||||
myOutputsToDelete.remove(projectId);
|
||||
|
||||
@@ -23,13 +23,20 @@ import com.intellij.openapi.module.LanguageLevelUtil;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.projectRoots.Sdk;
|
||||
import com.intellij.openapi.roots.*;
|
||||
import com.intellij.openapi.roots.JdkOrderEntry;
|
||||
import com.intellij.openapi.roots.ModuleRootManager;
|
||||
import com.intellij.openapi.roots.OrderEntry;
|
||||
import com.intellij.openapi.roots.OrderEnumerator;
|
||||
import com.intellij.openapi.util.Computable;
|
||||
import com.intellij.openapi.util.Condition;
|
||||
import com.intellij.openapi.vfs.VfsUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.pom.java.LanguageLevel;
|
||||
import com.intellij.util.*;
|
||||
import com.intellij.util.Chunk;
|
||||
import com.intellij.util.JarClasspathHelper;
|
||||
import com.intellij.util.PathsList;
|
||||
import com.intellij.util.StringBuilderSpinAllocator;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.OrderedSet;
|
||||
import gnu.trove.THashMap;
|
||||
import gnu.trove.TObjectHashingStrategy;
|
||||
@@ -178,7 +185,7 @@ public class ModuleChunk extends Chunk<Module> {
|
||||
final Set<Module> modules = getNodes();
|
||||
Set<VirtualFile> roots = new HashSet<VirtualFile>();
|
||||
for (final Module module : modules) {
|
||||
roots.addAll(Arrays.asList(myContext.getSourceRoots(module)));
|
||||
ContainerUtil.addAll(roots, myContext.getSourceRoots(module));
|
||||
}
|
||||
return VfsUtil.toVirtualFileArray(roots);
|
||||
}
|
||||
|
||||
@@ -43,6 +43,7 @@ import com.intellij.openapi.vfs.VfsUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.PathsList;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -182,7 +183,7 @@ public class RmicCompiler implements ClassPostProcessingCompiler{
|
||||
}
|
||||
if (!dirItems.isEmpty()) {
|
||||
final RmicProcessingItem[] successfullyProcessed = invokeRmic(context, parserPool, pair.getFirst(), dirItems, pair.getSecond());
|
||||
processed.addAll(Arrays.asList(successfullyProcessed));
|
||||
ContainerUtil.addAll(processed, successfullyProcessed);
|
||||
}
|
||||
progressIndicator.setFraction(((double)processed.size()) / ((double)items.length));
|
||||
}
|
||||
@@ -294,7 +295,7 @@ public class RmicCompiler implements ClassPostProcessingCompiler{
|
||||
|
||||
commandLine.add("-verbose");
|
||||
|
||||
commandLine.addAll(Arrays.asList(RmicConfiguration.getSettings(module.getProject()).getOptions()));
|
||||
ContainerUtil.addAll(commandLine, RmicConfiguration.getSettings(module.getProject()).getOptions());
|
||||
|
||||
commandLine.add("-classpath");
|
||||
|
||||
|
||||
@@ -25,11 +25,11 @@ import com.intellij.packaging.elements.ComplexPackagingElementType;
|
||||
import com.intellij.packaging.elements.CompositePackagingElement;
|
||||
import com.intellij.packaging.ui.ArtifactEditorContext;
|
||||
import com.intellij.util.Icons;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -65,8 +65,8 @@ public class LibraryElementType extends ComplexPackagingElementType<LibraryPacka
|
||||
|
||||
private static List<Library> getAllLibraries(ArtifactEditorContext context) {
|
||||
List<Library> libraries = new ArrayList<Library>();
|
||||
libraries.addAll(Arrays.asList(LibraryTablesRegistrar.getInstance().getLibraryTable().getLibraries()));
|
||||
libraries.addAll(Arrays.asList(LibraryTablesRegistrar.getInstance().getLibraryTable(context.getProject()).getLibraries()));
|
||||
ContainerUtil.addAll(libraries, LibraryTablesRegistrar.getInstance().getLibraryTable().getLibraries());
|
||||
ContainerUtil.addAll(libraries, LibraryTablesRegistrar.getInstance().getLibraryTable(context.getProject()).getLibraries());
|
||||
return libraries;
|
||||
}
|
||||
|
||||
|
||||
@@ -21,11 +21,11 @@ import com.intellij.openapi.extensions.ExtensionPointName;
|
||||
import com.intellij.openapi.extensions.Extensions;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public abstract class ChunkBuildExtension {
|
||||
@@ -44,7 +44,7 @@ public abstract class ChunkBuildExtension {
|
||||
List<String> allTargets = new ArrayList<String>();
|
||||
final ChunkBuildExtension[] extensions = Extensions.getRootArea().getExtensionPoint(EP_NAME).getExtensions();
|
||||
for (ChunkBuildExtension extension : extensions) {
|
||||
allTargets.addAll(Arrays.asList(extension.getTargets(chunk)));
|
||||
ContainerUtil.addAll(allTargets, extension.getTargets(chunk));
|
||||
}
|
||||
if (allTargets.isEmpty()) {
|
||||
allTargets.add(BuildProperties.getCompileTargetName(chunk.getName()));
|
||||
@@ -68,4 +68,4 @@ public abstract class ChunkBuildExtension {
|
||||
extension.generateProperties(propertyFileGenerator, project, genOptions);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-1
@@ -23,6 +23,7 @@ package com.intellij.debugger.ui.breakpoints;
|
||||
import com.intellij.debugger.DebuggerBundle;
|
||||
import com.intellij.debugger.DebuggerManagerEx;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.ui.ItemRemovable;
|
||||
|
||||
import javax.swing.table.AbstractTableModel;
|
||||
@@ -46,7 +47,7 @@ public class BreakpointTableModel extends AbstractTableModel implements ItemRemo
|
||||
public final void setBreakpoints(Breakpoint[] breakpoints) {
|
||||
myBreakpoints.clear();
|
||||
if (breakpoints != null) {
|
||||
myBreakpoints.addAll(Arrays.asList(breakpoints));
|
||||
ContainerUtil.addAll(myBreakpoints, breakpoints);
|
||||
}
|
||||
fireTableDataChanged();
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.ui.*;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.Icons;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.Convertor;
|
||||
import com.intellij.util.ui.tree.TreeUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -468,7 +469,7 @@ public class BreakpointTree extends CheckboxTree {
|
||||
|
||||
public void setBreakpoints(Breakpoint[] breakpoints) {
|
||||
myBreakpoints.clear();
|
||||
myBreakpoints.addAll(Arrays.asList(breakpoints));
|
||||
ContainerUtil.addAll(myBreakpoints, breakpoints);
|
||||
rebuildTree();
|
||||
}
|
||||
|
||||
|
||||
@@ -34,6 +34,7 @@ import com.intellij.debugger.impl.PositionUtil;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.openapi.editor.markup.RangeHighlighter;
|
||||
import com.intellij.openapi.project.IndexNotReadyException;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Computable;
|
||||
import com.intellij.openapi.util.IconLoader;
|
||||
@@ -331,8 +332,13 @@ public class MethodBreakpoint extends BreakpointWithHighlighter {
|
||||
new MethodDescriptor();
|
||||
//noinspection HardCodedStringLiteral
|
||||
descriptor.methodName = method.isConstructor() ? "<init>" : method.getName();
|
||||
descriptor.methodSignature = JVMNameUtil.getJVMSignature(method);
|
||||
descriptor.isStatic = method.hasModifierProperty(PsiModifier.STATIC);
|
||||
try {
|
||||
descriptor.methodSignature = JVMNameUtil.getJVMSignature(method);
|
||||
descriptor.isStatic = method.hasModifierProperty(PsiModifier.STATIC);
|
||||
}
|
||||
catch (IndexNotReadyException ignored) {
|
||||
return null;
|
||||
}
|
||||
descriptor.methodLine = document.getLineNumber(methodNameOffset);
|
||||
return descriptor;
|
||||
}
|
||||
|
||||
+2
-2
@@ -87,8 +87,8 @@ public class AbstractRerunFailedTestsAction extends AnAction {
|
||||
|
||||
@NotNull
|
||||
protected List<AbstractTestProxy> getFailedTests(Project project) {
|
||||
List<? extends AbstractTestProxy> myAllTests = getModel().getRoot().getAllTests();
|
||||
return Filter.DEFECTIVE_LEAF.and(JavaAwareFilter.METHOD(project)).select(myAllTests);
|
||||
final List<? extends AbstractTestProxy> myAllTests = getModel().getRoot().getAllTests();
|
||||
return Filter.FAILED_OR_INTERRUPTED.and(JavaAwareFilter.METHOD(project)).select(myAllTests);
|
||||
}
|
||||
|
||||
public void actionPerformed(AnActionEvent e) {
|
||||
|
||||
+1
-2
@@ -40,9 +40,8 @@ public class SegmentedInputStreamReader extends Reader {
|
||||
}
|
||||
|
||||
public int read(final char[] cbuf, final int off, final int len) throws IOException {
|
||||
final int maxBytes = Math.min(len, myStream.available());
|
||||
int bytesRead = 0;
|
||||
while (bytesRead < maxBytes) {
|
||||
while (ready() && bytesRead < len) {
|
||||
final int aChar = myStream.read();
|
||||
if (aChar == -1) {
|
||||
return bytesRead == 0 ? -1 : bytesRead;
|
||||
|
||||
+27
-8
@@ -21,10 +21,12 @@ import com.intellij.openapi.actionSystem.DataKey;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.projectRoots.Sdk;
|
||||
import com.intellij.openapi.roots.ModuleRootManager;
|
||||
import com.intellij.openapi.roots.OrderEnumerator;
|
||||
import com.intellij.openapi.roots.*;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.openapi.vfs.encoding.EncodingProjectManager;
|
||||
import com.intellij.util.NotNullFunction;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.nio.charset.Charset;
|
||||
|
||||
@@ -64,8 +66,21 @@ public class JavaParameters extends SimpleJavaParameters {
|
||||
}
|
||||
|
||||
setDefaultCharset(module.getProject());
|
||||
configureEnumerator(OrderEnumerator.orderEntries(module).runtimeOnly().recursively(), classPathType)
|
||||
.classes().collectPaths(getClassPath());
|
||||
configureEnumerator(OrderEnumerator.orderEntries(module).runtimeOnly().recursively(), classPathType, jdk).collectPaths(getClassPath());
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static NotNullFunction<OrderEntry, VirtualFile[]> computeRootProvider(int classPathType, final Sdk jdk) {
|
||||
return (classPathType & JDK_ONLY) == 0 ? null : new NotNullFunction<OrderEntry, VirtualFile[]>() {
|
||||
@NotNull
|
||||
@Override
|
||||
public VirtualFile[] fun(OrderEntry orderEntry) {
|
||||
if (orderEntry instanceof JdkOrderEntry) {
|
||||
return jdk.getRootProvider().getFiles(OrderRootType.CLASSES);
|
||||
}
|
||||
return orderEntry.getFiles(OrderRootType.CLASSES);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public void setDefaultCharset(final Project project) {
|
||||
@@ -102,17 +117,21 @@ public class JavaParameters extends SimpleJavaParameters {
|
||||
if ((classPathType & CLASSES_ONLY) == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
configureEnumerator(OrderEnumerator.orderEntries(project).runtimeOnly(), classPathType).classes().collectPaths(getClassPath());
|
||||
configureEnumerator(OrderEnumerator.orderEntries(project).runtimeOnly(), classPathType, jdk).collectPaths(getClassPath());
|
||||
}
|
||||
|
||||
private static OrderEnumerator configureEnumerator(OrderEnumerator enumerator, int classPathType) {
|
||||
private static OrderRootsEnumerator configureEnumerator(OrderEnumerator enumerator, int classPathType, Sdk jdk) {
|
||||
if ((classPathType & JDK_ONLY) == 0) {
|
||||
enumerator = enumerator.withoutSdk();
|
||||
}
|
||||
if ((classPathType & TESTS_ONLY) == 0) {
|
||||
enumerator = enumerator.productionOnly();
|
||||
}
|
||||
return enumerator;
|
||||
OrderRootsEnumerator rootsEnumerator = enumerator.classes();
|
||||
final NotNullFunction<OrderEntry, VirtualFile[]> provider = computeRootProvider(classPathType, jdk);
|
||||
if (provider != null) {
|
||||
rootsEnumerator = rootsEnumerator.usingCustomRootProvider(provider);
|
||||
}
|
||||
return rootsEnumerator;
|
||||
}
|
||||
}
|
||||
+15
-2
@@ -17,6 +17,9 @@ package com.intellij.execution.configurations;
|
||||
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
|
||||
import java.net.InetAddress;
|
||||
import java.net.UnknownHostException;
|
||||
|
||||
public class RemoteConnection {
|
||||
private boolean myUseSockets;
|
||||
private boolean myServerMode;
|
||||
@@ -90,8 +93,18 @@ public class RemoteConnection {
|
||||
catch (NumberFormatException e) {
|
||||
}
|
||||
if (serverMode) {
|
||||
result = "-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=" +
|
||||
((p == -1)? "..." : Integer.toString(p)) +
|
||||
String localHostName = "<host name>:";
|
||||
try {
|
||||
final InetAddress localAddress = InetAddress.getLocalHost();
|
||||
final String name = localAddress.getCanonicalHostName();
|
||||
if (name != null) {
|
||||
localHostName = name + ":";
|
||||
}
|
||||
}
|
||||
catch (UnknownHostException e) {
|
||||
}
|
||||
result = "-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=" + localHostName +
|
||||
((p == -1)? "<port>" : Integer.toString(p)) +
|
||||
ONTHROW + ",suspend=y" + ONUNCAUGHT;
|
||||
}
|
||||
else {
|
||||
|
||||
+3
-2
@@ -21,11 +21,12 @@ import com.intellij.openapi.module.ModuleManager;
|
||||
import com.intellij.openapi.progress.ProgressManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.project.ProjectBundle;
|
||||
import com.intellij.openapi.roots.ModuleRootManager;
|
||||
import com.intellij.openapi.roots.ContentIterator;
|
||||
import com.intellij.openapi.roots.ModuleRootManager;
|
||||
import com.intellij.openapi.util.MultiValuesMap;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.openapi.vfs.VirtualFileManager;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import gnu.trove.THashSet;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -84,7 +85,7 @@ public class EnableAutodetectionWorker {
|
||||
}
|
||||
|
||||
if (moduleElements.isEmpty()) {
|
||||
modulesToProcess.addAll(Arrays.asList(moduleManager.getModules()));
|
||||
ContainerUtil.addAll(modulesToProcess, moduleManager.getModules());
|
||||
}
|
||||
if (newElement != null) {
|
||||
Set<String> toRemove = new THashSet<String>();
|
||||
|
||||
+2
-2
@@ -34,12 +34,12 @@ import com.intellij.openapi.ui.DialogWrapper;
|
||||
import com.intellij.openapi.vfs.VfsUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -115,7 +115,7 @@ public class FacetLibrariesValidatorImpl extends FacetLibrariesValidator {
|
||||
rootModel.orderEntries().using(myContext.getModulesProvider()).recursively().librariesOnly().forEachLibrary(new Processor<Library>() {
|
||||
@Override
|
||||
public boolean process(Library library) {
|
||||
roots.addAll(Arrays.asList(myContext.getLibrariesContainer().getLibraryFiles(library, OrderRootType.CLASSES)));
|
||||
ContainerUtil.addAll(roots, myContext.getLibrariesContainer().getLibraryFiles(library, OrderRootType.CLASSES));
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
+7
-4
@@ -34,16 +34,19 @@ import com.intellij.openapi.vfs.LocalFileSystem;
|
||||
import com.intellij.openapi.vfs.VfsUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.ui.IdeBorderFactory;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @author nik
|
||||
@@ -176,7 +179,7 @@ public class LibraryCompositionOptionsPanel {
|
||||
descriptor.setTitle(IdeBundle.message("file.chooser.select.paths.title"));
|
||||
descriptor.setDescription(IdeBundle.message("file.chooser.multiselect.description"));
|
||||
final VirtualFile[] files = FileChooser.chooseFiles(myAddJarsButton, descriptor, getBaseDirectory());
|
||||
myAddedJars.addAll(Arrays.asList(files));
|
||||
ContainerUtil.addAll(myAddedJars, files);
|
||||
updateAll();
|
||||
}
|
||||
|
||||
@@ -196,7 +199,7 @@ public class LibraryCompositionOptionsPanel {
|
||||
List<VirtualFile> roots = new ArrayList<VirtualFile>();
|
||||
roots.addAll(myAddedJars);
|
||||
for (Library library : myUsedLibraries) {
|
||||
roots.addAll(Arrays.asList(myLibrariesContainer.getLibraryFiles(library, OrderRootType.CLASSES)));
|
||||
ContainerUtil.addAll(roots, myLibrariesContainer.getLibraryFiles(library, OrderRootType.CLASSES));
|
||||
}
|
||||
RequiredLibrariesInfo.RequiredClassesNotFoundInfo info = new RequiredLibrariesInfo(myLibraryCompositionSettings.getLibraryInfos()).checkLibraries(
|
||||
VfsUtil.toVirtualFileArray(roots), false);
|
||||
|
||||
+3
-2
@@ -24,6 +24,7 @@ import com.intellij.openapi.roots.ui.configuration.projectRoot.LibrariesContaine
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.LibrariesContainerFactory;
|
||||
import com.intellij.openapi.vfs.VfsUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -121,7 +122,7 @@ public class LibraryCompositionSettings {
|
||||
List<VirtualFile> roots = new ArrayList<VirtualFile>();
|
||||
roots.addAll(myAddedJars);
|
||||
for (Library library : myUsedLibraries) {
|
||||
roots.addAll(Arrays.asList(librariesContainer.getLibraryFiles(library, OrderRootType.CLASSES)));
|
||||
ContainerUtil.addAll(roots, librariesContainer.getLibraryFiles(library, OrderRootType.CLASSES));
|
||||
}
|
||||
VirtualFile[] jars = VfsUtil.toVirtualFileArray(roots);
|
||||
RequiredLibrariesInfo.RequiredClassesNotFoundInfo info = requiredLibraries.checkLibraries(jars, all);
|
||||
@@ -135,7 +136,7 @@ public class LibraryCompositionSettings {
|
||||
if (files.length != downloadingInfos.length) {
|
||||
return false;
|
||||
}
|
||||
myAddedJars.addAll(Arrays.asList(files));
|
||||
ContainerUtil.addAll(myAddedJars, files);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ import com.intellij.openapi.roots.ui.configuration.projectRoot.LibrariesContaine
|
||||
import com.intellij.openapi.ui.DialogWrapper;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.openapi.util.Computable;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -40,6 +41,7 @@ public class AddFrameworkSupportDialog extends DialogWrapper {
|
||||
return contentRootPath;
|
||||
}
|
||||
});
|
||||
Disposer.register(myDisposable, myAddSupportPanel);
|
||||
init();
|
||||
}
|
||||
|
||||
|
||||
+13
-3
@@ -26,8 +26,10 @@ import com.intellij.facet.ui.libraries.RemoteRepositoryInfo;
|
||||
import com.intellij.ide.util.frameworkSupport.FrameworkSupportConfigurable;
|
||||
import com.intellij.ide.util.frameworkSupport.FrameworkSupportConfigurableListener;
|
||||
import com.intellij.ide.util.frameworkSupport.FrameworkSupportProvider;
|
||||
import com.intellij.ide.util.newProjectWizard.impl.FrameworkSupportCommunicator;
|
||||
import com.intellij.ide.util.newProjectWizard.impl.FrameworkSupportModelImpl;
|
||||
import com.intellij.ide.util.projectWizard.ModuleBuilder;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.roots.ModifiableRootModel;
|
||||
@@ -60,7 +62,7 @@ import java.util.List;
|
||||
/**
|
||||
* @author nik
|
||||
*/
|
||||
public class AddSupportForFrameworksPanel {
|
||||
public class AddSupportForFrameworksPanel implements Disposable {
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.ide.util.newProjectWizard.AddSupportForFrameworksStep");
|
||||
@NonNls private static final String UNCHECKED_CARD = "unchecked";
|
||||
@NonNls private static final String EMPTY_CARD = "empty";
|
||||
@@ -135,6 +137,10 @@ public class AddSupportForFrameworksPanel {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
}
|
||||
|
||||
private void applyLibraryOptionsForSelected() {
|
||||
if (myLastSelectedNode != null) {
|
||||
final LibraryCompositionOptionsPanel optionsPanel = myLastSelectedNode.getLibraryCompositionOptionsPanel(myLibrariesContainer, myMirrorsMap);
|
||||
@@ -286,7 +292,7 @@ public class AddSupportForFrameworksPanel {
|
||||
}
|
||||
parentNode = createNode(parentProvider, nodes, groups);
|
||||
}
|
||||
node = new FrameworkSupportNode(provider, parentNode, myModel, myBaseDirForLibrariesGetter);
|
||||
node = new FrameworkSupportNode(provider, parentNode, myModel, myBaseDirForLibrariesGetter, this);
|
||||
nodes.put(provider.getId(), node);
|
||||
groups.put(provider.getGroupId(), node);
|
||||
}
|
||||
@@ -336,9 +342,10 @@ public class AddSupportForFrameworksPanel {
|
||||
List<Library> addedLibraries = new ArrayList<Library>();
|
||||
List<FrameworkSupportNode> selectedFrameworks = getFrameworkNodes(true);
|
||||
sortFrameworks(selectedFrameworks);
|
||||
|
||||
List<FrameworkSupportConfigurable> selectedConfigurables = new ArrayList<FrameworkSupportConfigurable>();
|
||||
for (FrameworkSupportNode node : selectedFrameworks) {
|
||||
FrameworkSupportConfigurable configurable = node.getConfigurable();
|
||||
selectedConfigurables.add(configurable);
|
||||
final LibraryCompositionSettings settings = node.getLibraryCompositionSettings();
|
||||
Library library = settings != null ? settings.addLibraries(rootModel, addedLibraries) : null;
|
||||
configurable.addSupport(module, rootModel, library);
|
||||
@@ -349,6 +356,9 @@ public class AddSupportForFrameworksPanel {
|
||||
((FacetBasedFrameworkSupportProvider)provider).processAddedLibraries(module, addedLibraries);
|
||||
}
|
||||
}
|
||||
for (FrameworkSupportCommunicator communicator : FrameworkSupportCommunicator.EP_NAME.getExtensions()) {
|
||||
communicator.onFrameworkSupportAdded(module, rootModel, selectedConfigurables, myModel);
|
||||
}
|
||||
}
|
||||
|
||||
private void sortFrameworks(final List<FrameworkSupportNode> nodes) {
|
||||
|
||||
@@ -15,18 +15,19 @@
|
||||
*/
|
||||
package com.intellij.ide.util.newProjectWizard;
|
||||
|
||||
import com.intellij.facet.impl.ui.libraries.LibraryCompositionSettings;
|
||||
import com.intellij.facet.impl.ui.libraries.LibraryCompositionOptionsPanel;
|
||||
import com.intellij.facet.impl.ui.libraries.LibraryCompositionSettings;
|
||||
import com.intellij.facet.impl.ui.libraries.LibraryDownloadingMirrorsMap;
|
||||
import com.intellij.facet.ui.libraries.LibraryInfo;
|
||||
import com.intellij.ide.util.frameworkSupport.FrameworkSupportConfigurable;
|
||||
import com.intellij.ide.util.frameworkSupport.FrameworkSupportProvider;
|
||||
import com.intellij.ide.util.frameworkSupport.FrameworkVersion;
|
||||
import com.intellij.facet.ui.libraries.LibraryInfo;
|
||||
import com.intellij.ide.util.newProjectWizard.impl.FrameworkSupportModelImpl;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.LibrariesContainer;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.openapi.util.Computable;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.LibrariesContainer;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.ui.CheckedTreeNode;
|
||||
import com.intellij.ui.GuiUtils;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
@@ -52,7 +53,7 @@ public class FrameworkSupportNode extends CheckedTreeNode {
|
||||
private LibraryCompositionOptionsPanel myLibraryCompositionOptionsPanel;
|
||||
|
||||
FrameworkSupportNode(final FrameworkSupportProvider provider, final FrameworkSupportNode parentNode, final FrameworkSupportModelImpl model,
|
||||
Computable<String> baseDirForLibrariesGetter) {
|
||||
Computable<String> baseDirForLibrariesGetter, Disposable parentDisposable) {
|
||||
super(provider);
|
||||
myBaseDirForLibrariesGetter = baseDirForLibrariesGetter;
|
||||
setChecked(false);
|
||||
@@ -60,6 +61,7 @@ public class FrameworkSupportNode extends CheckedTreeNode {
|
||||
myParentNode = parentNode;
|
||||
model.registerComponent(provider, this);
|
||||
myConfigurable = provider.createConfigurable(model);
|
||||
Disposer.register(parentDisposable, myConfigurable);
|
||||
if (parentNode != null) {
|
||||
parentNode.add(this);
|
||||
parentNode.myChildren.add(this);
|
||||
|
||||
+8
-1
@@ -5,11 +5,11 @@
|
||||
package com.intellij.ide.util.newProjectWizard;
|
||||
|
||||
import com.intellij.CommonBundle;
|
||||
import com.intellij.ide.util.frameworkSupport.FrameworkSupportProvider;
|
||||
import com.intellij.ide.util.frameworkSupport.FrameworkSupportUtil;
|
||||
import com.intellij.ide.util.projectWizard.JavaModuleBuilder;
|
||||
import com.intellij.ide.util.projectWizard.ModuleBuilder;
|
||||
import com.intellij.ide.util.projectWizard.ModuleWizardStep;
|
||||
import com.intellij.ide.util.frameworkSupport.FrameworkSupportProvider;
|
||||
import com.intellij.ide.wizard.CommitStepException;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.project.ProjectBundle;
|
||||
@@ -17,6 +17,7 @@ import com.intellij.openapi.roots.ModifiableRootModel;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.LibrariesContainer;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.openapi.util.Computable;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -60,6 +61,12 @@ public class SupportForFrameworksStep extends ModuleWizardStep {
|
||||
return ICON;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disposeUIResources() {
|
||||
Disposer.dispose(mySupportForFrameworksPanel);
|
||||
super.disposeUIResources();
|
||||
}
|
||||
|
||||
@NonNls
|
||||
public String getHelpId() {
|
||||
return "reference.dialogs.new.project.technologies";
|
||||
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright 2000-2010 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.intellij.ide.util.newProjectWizard.impl;
|
||||
|
||||
import com.intellij.ide.util.frameworkSupport.FrameworkSupportConfigurable;
|
||||
import com.intellij.ide.util.frameworkSupport.FrameworkSupportModel;
|
||||
import com.intellij.openapi.extensions.ExtensionPointName;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.roots.ModifiableRootModel;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author nik
|
||||
*/
|
||||
public abstract class FrameworkSupportCommunicator {
|
||||
public static final ExtensionPointName<FrameworkSupportCommunicator> EP_NAME = ExtensionPointName.create("com.intellij.frameworkSupportCommunicator");
|
||||
|
||||
public abstract void onFrameworkSupportAdded(Module module, ModifiableRootModel rootModel,
|
||||
List<FrameworkSupportConfigurable> selectedFrameworks,
|
||||
FrameworkSupportModel model);
|
||||
}
|
||||
@@ -26,7 +26,7 @@ import com.intellij.openapi.projectRoots.SdkType;
|
||||
import com.intellij.openapi.projectRoots.ui.ProjectJdksEditor;
|
||||
import com.intellij.openapi.roots.ProjectRootManager;
|
||||
import com.intellij.openapi.roots.ui.configuration.ProjectStructureConfigurable;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectJdksModel;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectSdksModel;
|
||||
import com.intellij.openapi.ui.DialogWrapper;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.openapi.wm.ex.WindowManagerEx;
|
||||
@@ -152,11 +152,11 @@ public class JdkChooserPanel extends JPanel {
|
||||
jdks = getCompatibleJdks(type, Arrays.asList(allJdks));
|
||||
}
|
||||
else {
|
||||
final ProjectJdksModel projectJdksModel = ProjectStructureConfigurable.getInstance(myProject).getProjectJdksModel();
|
||||
final ProjectSdksModel projectJdksModel = ProjectStructureConfigurable.getInstance(myProject).getProjectJdksModel();
|
||||
if (!projectJdksModel.isInitialized()){ //should be initialized
|
||||
projectJdksModel.reset(myProject);
|
||||
}
|
||||
final Collection<Sdk> collection = projectJdksModel.getProjectJdks().values();
|
||||
final Collection<Sdk> collection = projectJdksModel.getProjectSdks().values();
|
||||
jdks = getCompatibleJdks(type, collection);
|
||||
}
|
||||
Arrays.sort(jdks, new Comparator<Sdk>() {
|
||||
|
||||
@@ -25,7 +25,7 @@ import com.intellij.openapi.projectRoots.SdkType;
|
||||
import com.intellij.openapi.roots.ex.ProjectRootManagerEx;
|
||||
import com.intellij.openapi.roots.ui.configuration.ProjectStructureConfigurable;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.JdkListConfigurable;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectJdksModel;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectSdksModel;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.openapi.ui.MultiLineLabelUI;
|
||||
import com.intellij.openapi.util.IconLoader;
|
||||
@@ -80,7 +80,7 @@ public class ProjectJdkForModuleStep extends ModuleWizardStep {
|
||||
final Project project = getProject(context, type);
|
||||
final ProjectStructureConfigurable projectConfig = ProjectStructureConfigurable.getInstance(project);
|
||||
final JdkListConfigurable jdkConfig = JdkListConfigurable.getInstance(project);
|
||||
final ProjectJdksModel projectJdksModel = projectConfig.getProjectJdksModel();
|
||||
final ProjectSdksModel projectJdksModel = projectConfig.getProjectJdksModel();
|
||||
final boolean[] successfullyAdded = new boolean[1];
|
||||
projectJdksModel.doAdd(type, myPanel, new Consumer<Sdk>() {
|
||||
public void consume(final Sdk jdk) {
|
||||
|
||||
@@ -18,13 +18,12 @@ package com.intellij.openapi.projectRoots.ui;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.fileChooser.FileChooser;
|
||||
import com.intellij.openapi.fileChooser.FileChooserDescriptor;
|
||||
import com.intellij.openapi.options.Configurable;
|
||||
import com.intellij.openapi.options.ConfigurationException;
|
||||
import com.intellij.openapi.project.ProjectBundle;
|
||||
import com.intellij.openapi.projectRoots.*;
|
||||
import com.intellij.openapi.projectRoots.impl.ProjectJdkImpl;
|
||||
import com.intellij.openapi.projectRoots.impl.SdkConfigurationUtil;
|
||||
import com.intellij.openapi.roots.OrderRootType;
|
||||
import com.intellij.openapi.roots.ui.configuration.OrderRootTypeUIFactory;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
@@ -32,9 +31,7 @@ import com.intellij.openapi.ui.TextFieldWithBrowseButton;
|
||||
import com.intellij.openapi.util.ActionCallback;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.openapi.util.SystemInfo;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.vfs.LocalFileSystem;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.ui.TabbedPaneWrapper;
|
||||
import com.intellij.ui.navigation.History;
|
||||
@@ -75,7 +72,7 @@ public class SdkEditor implements Configurable, Place.Navigator {
|
||||
// GUI components
|
||||
private JPanel myMainPanel;
|
||||
private TabbedPaneWrapper myTabbedPane;
|
||||
private final NotifiableSdkModel mySdkModel;
|
||||
private final SdkModel mySdkModel;
|
||||
private JLabel myHomeFieldLabel;
|
||||
private String myVersionString;
|
||||
|
||||
@@ -85,7 +82,7 @@ public class SdkEditor implements Configurable, Place.Navigator {
|
||||
|
||||
private final Disposable myDisposable = Disposer.newDisposable();
|
||||
|
||||
public SdkEditor(NotifiableSdkModel sdkModel, History history, final ProjectJdkImpl sdk) {
|
||||
public SdkEditor(SdkModel sdkModel, History history, final ProjectJdkImpl sdk) {
|
||||
mySdkModel = sdkModel;
|
||||
myHistory = history;
|
||||
mySdk = sdk;
|
||||
@@ -218,7 +215,7 @@ public class SdkEditor implements Configurable, Place.Navigator {
|
||||
else{
|
||||
final SdkModificator sdkModificator = mySdk.getSdkModificator();
|
||||
for (OrderRootType type : myPathEditors.keySet()) {
|
||||
myPathEditors.get(type).reset(sdkModificator.getRoots(type));
|
||||
myPathEditors.get(type).reset(sdkModificator);
|
||||
}
|
||||
sdkModificator.commitChanges();
|
||||
setHomePathValue(mySdk.getHomePath().replace('/', File.separatorChar));
|
||||
@@ -275,28 +272,9 @@ public class SdkEditor implements Configurable, Place.Navigator {
|
||||
myHomeComponent.getTextField().setForeground(fg);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static String selectSdkHome(final Component parentComponent, final SdkType sdkType){
|
||||
final FileChooserDescriptor descriptor = sdkType.getHomeChooserDescriptor();
|
||||
VirtualFile[] files = FileChooser.chooseFiles(parentComponent, descriptor, getSuggestedSdkRoot(sdkType));
|
||||
if (files.length != 0){
|
||||
final String path = files[0].getPath();
|
||||
if (sdkType.isValidSdkHome(path)) return path;
|
||||
return SystemInfo.isMac && sdkType.isValidSdkHome(path + SdkType.MAC_HOME_PATH) ? path + SdkType.MAC_HOME_PATH : null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static VirtualFile getSuggestedSdkRoot(SdkType sdkType) {
|
||||
final String homepath = sdkType.suggestHomePath();
|
||||
if (homepath == null) return null;
|
||||
return LocalFileSystem.getInstance().findFileByPath(homepath);
|
||||
}
|
||||
|
||||
private void doSelectHomePath(){
|
||||
final SdkType sdkType = mySdk.getSdkType();
|
||||
final String homePath = selectSdkHome(myHomeComponent, sdkType);
|
||||
final String homePath = SdkConfigurationUtil.selectSdkHome(myHomeComponent, sdkType);
|
||||
doSetHomePath(homePath, sdkType);
|
||||
}
|
||||
|
||||
|
||||
@@ -55,6 +55,7 @@ import com.intellij.ui.*;
|
||||
import com.intellij.ui.awt.RelativePoint;
|
||||
import com.intellij.util.EventDispatcher;
|
||||
import com.intellij.util.Icons;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.ui.ItemRemovable;
|
||||
import com.intellij.util.ui.Table;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -1091,7 +1092,7 @@ public class ClasspathPanel extends JPanel {
|
||||
final Set<VirtualFile> alreadyAdded = new HashSet<VirtualFile>();
|
||||
final Library[] libraries = myLibraryTable.getLibraries();
|
||||
for (Library library : libraries) {
|
||||
alreadyAdded.addAll(Arrays.asList(library.getFiles(OrderRootType.CLASSES)));
|
||||
ContainerUtil.addAll(alreadyAdded, library.getFiles(OrderRootType.CLASSES));
|
||||
}
|
||||
chosenFilesSet.removeAll(alreadyAdded);
|
||||
return VfsUtil.toVirtualFileArray(chosenFilesSet);
|
||||
|
||||
@@ -23,12 +23,12 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.project.ProjectBundle;
|
||||
import com.intellij.openapi.projectRoots.Sdk;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.JdkListConfigurable;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectJdksModel;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectSdksModel;
|
||||
import com.intellij.openapi.ui.popup.JBPopupFactory;
|
||||
import com.intellij.openapi.util.Computable;
|
||||
import com.intellij.openapi.util.Condition;
|
||||
import com.intellij.ui.SimpleTextAttributes;
|
||||
import com.intellij.ui.ScreenUtil;
|
||||
import com.intellij.ui.SimpleTextAttributes;
|
||||
import com.intellij.util.Consumer;
|
||||
|
||||
import javax.swing.*;
|
||||
@@ -47,7 +47,7 @@ import java.util.Comparator;
|
||||
class JdkComboBox extends JComboBox{
|
||||
private final JButton myEditButton = new JButton(ApplicationBundle.message("button.edit"));
|
||||
|
||||
public JdkComboBox(final ProjectJdksModel jdksModel) {
|
||||
public JdkComboBox(final ProjectSdksModel jdksModel) {
|
||||
super(new JdkComboBoxModel(jdksModel));
|
||||
setRenderer(new ProjectJdkListRenderer() {
|
||||
protected void customizeCellRenderer(JList list, Object value, int index, boolean selected, boolean hasFocus) {
|
||||
@@ -59,7 +59,7 @@ class JdkComboBox extends JComboBox{
|
||||
else if (value instanceof ProjectJdkComboBoxItem){
|
||||
final ProjectJdkComboBoxItem item = (ProjectJdkComboBoxItem)value;
|
||||
final String str = item.toString();
|
||||
final Sdk jdk = jdksModel.getProjectJdk();
|
||||
final Sdk jdk = jdksModel.getProjectSdk();
|
||||
if (jdk != null){
|
||||
setIcon(jdk.getSdkType().getIcon());
|
||||
append(ProjectBundle.message("project.roots.project.jdk.inherited"), SimpleTextAttributes.REGULAR_ATTRIBUTES);
|
||||
@@ -97,13 +97,13 @@ class JdkComboBox extends JComboBox{
|
||||
return minSize;
|
||||
}
|
||||
|
||||
public JButton createSetupButton(final Project project, final ProjectJdksModel jdksModel, final JdkComboBoxItem firstItem) {
|
||||
public JButton createSetupButton(final Project project, final ProjectSdksModel jdksModel, final JdkComboBoxItem firstItem) {
|
||||
return createSetupButton(project, jdksModel, firstItem, null, false);
|
||||
}
|
||||
|
||||
|
||||
public JButton createSetupButton(final Project project,
|
||||
final ProjectJdksModel jdksModel,
|
||||
final ProjectSdksModel jdksModel,
|
||||
final JdkComboBoxItem firstItem,
|
||||
final Condition<Sdk> additionalSetup,
|
||||
final boolean moduleJdkSetup) {
|
||||
@@ -144,7 +144,7 @@ class JdkComboBox extends JComboBox{
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
final JdkComboBoxItem selectedItem = getSelectedItem();
|
||||
if (selectedItem instanceof ProjectJdkComboBoxItem) {
|
||||
myEditButton.setEnabled(ProjectStructureConfigurable.getInstance(project).getProjectJdksModel().getProjectJdk() != null);
|
||||
myEditButton.setEnabled(ProjectStructureConfigurable.getInstance(project).getProjectJdksModel().getProjectSdk() != null);
|
||||
} else {
|
||||
myEditButton.setEnabled(!(selectedItem instanceof InvalidJdkComboBoxItem) && selectedItem != null && selectedItem.getJdk() != null);
|
||||
}
|
||||
@@ -212,7 +212,8 @@ class JdkComboBox extends JComboBox{
|
||||
final DefaultComboBoxModel model = ((DefaultComboBoxModel)getModel());
|
||||
model.removeAllElements();
|
||||
model.addElement(firstItem);
|
||||
final ArrayList<Sdk> projectJdks = new ArrayList<Sdk>(ProjectJdksModel.getInstance(project).getProjectJdks().values());
|
||||
final ProjectSdksModel projectJdksModel = ProjectStructureConfigurable.getInstance(project).getProjectJdksModel();
|
||||
final ArrayList<Sdk> projectJdks = new ArrayList<Sdk>(projectJdksModel.getProjectSdks().values());
|
||||
Collections.sort(projectJdks, new Comparator<Sdk>() {
|
||||
public int compare(final Sdk o1, final Sdk o2) {
|
||||
return o1.getName().compareToIgnoreCase(o2.getName());
|
||||
@@ -224,7 +225,7 @@ class JdkComboBox extends JComboBox{
|
||||
}
|
||||
|
||||
private static class JdkComboBoxModel extends DefaultComboBoxModel {
|
||||
public JdkComboBoxModel(final ProjectJdksModel jdksModel) {
|
||||
public JdkComboBoxModel(final ProjectSdksModel jdksModel) {
|
||||
super();
|
||||
final Sdk[] jdks = jdksModel.getSdks();
|
||||
Arrays.sort(jdks, new Comparator<Sdk>() {
|
||||
|
||||
@@ -37,6 +37,7 @@ import com.intellij.ui.TabbedPaneWrapper;
|
||||
import com.intellij.ui.navigation.History;
|
||||
import com.intellij.ui.navigation.Place;
|
||||
import com.intellij.util.EventDispatcher;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -187,8 +188,8 @@ public abstract class ModuleEditor implements Place.Navigator, Disposable {
|
||||
|
||||
private static ModuleConfigurationEditorProvider[] collectProviders(final Module module) {
|
||||
List<ModuleConfigurationEditorProvider> result = new ArrayList<ModuleConfigurationEditorProvider>();
|
||||
result.addAll(Arrays.asList(module.getComponents(ModuleConfigurationEditorProvider.class)));
|
||||
result.addAll(Arrays.asList(Extensions.getExtensions(ModuleConfigurationEditorProvider.EP_NAME, module)));
|
||||
ContainerUtil.addAll(result, module.getComponents(ModuleConfigurationEditorProvider.class));
|
||||
ContainerUtil.addAll(result, Extensions.getExtensions(ModuleConfigurationEditorProvider.EP_NAME, module));
|
||||
return result.toArray(new ModuleConfigurationEditorProvider[result.size()]);
|
||||
}
|
||||
|
||||
@@ -208,7 +209,7 @@ public abstract class ModuleEditor implements Place.Navigator, Disposable {
|
||||
|
||||
private void processEditorsProvider(final ModuleConfigurationEditorProvider provider, final ModuleConfigurationState state) {
|
||||
final ModuleConfigurationEditor[] editors = provider.createEditors(state);
|
||||
myEditors.addAll(Arrays.asList(editors));
|
||||
ContainerUtil.addAll(myEditors, editors);
|
||||
}
|
||||
|
||||
private JPanel createPanel() {
|
||||
|
||||
+5
-5
@@ -24,7 +24,7 @@ import com.intellij.openapi.projectRoots.Sdk;
|
||||
import com.intellij.openapi.projectRoots.SdkModel;
|
||||
import com.intellij.openapi.roots.ModifiableRootModel;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.ModuleStructureConfigurable;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectJdksModel;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectSdksModel;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.StructureConfigurableContext;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.daemon.ModuleProjectStructureElement;
|
||||
import com.intellij.openapi.ui.DialogWrapper;
|
||||
@@ -47,7 +47,7 @@ public abstract class ModuleJdkConfigurable implements Disposable {
|
||||
private Sdk mySelectedModuleJdk = null;
|
||||
private JPanel myJdkPanel;
|
||||
private ClasspathEditor myModuleEditor;
|
||||
private final ProjectJdksModel myJdksModel;
|
||||
private final ProjectSdksModel myJdksModel;
|
||||
private boolean myFreeze = false;
|
||||
private final SdkModel.Listener myListener = new SdkModel.Listener() {
|
||||
public void sdkAdded(Sdk sdk) {
|
||||
@@ -67,7 +67,7 @@ public abstract class ModuleJdkConfigurable implements Disposable {
|
||||
}
|
||||
};
|
||||
|
||||
public ModuleJdkConfigurable(ClasspathEditor moduleEditor, ProjectJdksModel jdksModel) {
|
||||
public ModuleJdkConfigurable(ClasspathEditor moduleEditor, ProjectSdksModel jdksModel) {
|
||||
myModuleEditor = moduleEditor;
|
||||
myJdksModel = jdksModel;
|
||||
myJdksModel.addListener(myListener);
|
||||
@@ -122,7 +122,7 @@ public abstract class ModuleJdkConfigurable implements Disposable {
|
||||
final JButton setUpButton = myCbModuleJdk
|
||||
.createSetupButton(project, myJdksModel, new JdkComboBox.ProjectJdkComboBoxItem(), new Condition<Sdk>(){
|
||||
public boolean value(Sdk jdk) {
|
||||
final Sdk projectJdk = myJdksModel.getProjectJdk();
|
||||
final Sdk projectJdk = myJdksModel.getProjectSdk();
|
||||
if (projectJdk == null){
|
||||
final int res =
|
||||
Messages.showYesNoDialog(myJdkPanel,
|
||||
@@ -130,7 +130,7 @@ public abstract class ModuleJdkConfigurable implements Disposable {
|
||||
ProjectBundle.message("project.roots.no.jdk.on.projecct.title"),
|
||||
Messages.getInformationIcon());
|
||||
if (res == DialogWrapper.OK_EXIT_CODE){
|
||||
myJdksModel.setProjectJdk(jdk);
|
||||
myJdksModel.setProjectSdk(jdk);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -41,7 +41,7 @@ import com.intellij.openapi.roots.ModuleRootModel;
|
||||
import com.intellij.openapi.roots.impl.ProjectRootManagerImpl;
|
||||
import com.intellij.openapi.roots.ui.configuration.actions.ModuleDeleteProvider;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.ModuleStructureConfigurable;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectJdksModel;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectSdksModel;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.StructureConfigurableContext;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.daemon.ModuleProjectStructureElement;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
@@ -91,7 +91,7 @@ public class ModulesConfigurator implements ModulesProvider, ModuleEditor.Change
|
||||
private StructureConfigurableContext myContext;
|
||||
private final List<ModuleEditor.ChangeListener> myAllModulesChangeListeners = new ArrayList<ModuleEditor.ChangeListener>();
|
||||
|
||||
public ModulesConfigurator(Project project, ProjectJdksModel projectJdksModel) {
|
||||
public ModulesConfigurator(Project project, ProjectSdksModel projectJdksModel) {
|
||||
myProject = project;
|
||||
myModuleModel = ModuleManager.getInstance(myProject).getModifiableModel();
|
||||
myProjectConfigurable = new ProjectConfigurable(project, this, projectJdksModel);
|
||||
|
||||
-55
@@ -20,15 +20,12 @@
|
||||
*/
|
||||
package com.intellij.openapi.roots.ui.configuration;
|
||||
|
||||
import com.intellij.openapi.fileChooser.FileChooserDescriptor;
|
||||
import com.intellij.openapi.module.LanguageLevelUtil;
|
||||
import com.intellij.openapi.projectRoots.Sdk;
|
||||
import com.intellij.openapi.projectRoots.ui.PathEditor;
|
||||
import com.intellij.openapi.roots.OrderRootType;
|
||||
import com.intellij.openapi.roots.ui.configuration.libraryEditor.LibraryElement;
|
||||
import com.intellij.openapi.roots.ui.configuration.libraryEditor.LibraryTableTreeContentElement;
|
||||
import com.intellij.openapi.util.KeyedExtensionFactory;
|
||||
import com.intellij.pom.java.LanguageLevel;
|
||||
|
||||
public interface OrderRootTypeUIFactory {
|
||||
KeyedExtensionFactory<OrderRootTypeUIFactory, OrderRootType> FACTORY = new KeyedExtensionFactory<OrderRootTypeUIFactory, OrderRootType>(OrderRootTypeUIFactory.class, "com.intellij.OrderRootTypeUI") {
|
||||
@@ -39,56 +36,4 @@ public interface OrderRootTypeUIFactory {
|
||||
|
||||
LibraryTableTreeContentElement createElement(final LibraryElement parentElement);
|
||||
PathEditor createPathEditor(Sdk sdk);
|
||||
|
||||
class MyPathsEditor extends PathEditor {
|
||||
private final boolean myShowUrl;
|
||||
private final OrderRootType myOrderRootType;
|
||||
private final FileChooserDescriptor myDescriptor;
|
||||
private final String myDisplayName;
|
||||
private final Sdk mySdk;
|
||||
|
||||
public MyPathsEditor(final String displayName,
|
||||
final OrderRootType orderRootType,
|
||||
final FileChooserDescriptor descriptor,
|
||||
final boolean showUrl,
|
||||
Sdk sdk) {
|
||||
myShowUrl = showUrl;
|
||||
myOrderRootType = orderRootType;
|
||||
myDescriptor = descriptor;
|
||||
myDisplayName = displayName;
|
||||
mySdk = sdk;
|
||||
}
|
||||
|
||||
protected boolean isShowUrlButton() {
|
||||
return myShowUrl;
|
||||
}
|
||||
|
||||
protected OrderRootType getRootType() {
|
||||
return myOrderRootType;
|
||||
}
|
||||
|
||||
protected FileChooserDescriptor createFileChooserDescriptor() {
|
||||
return myDescriptor;
|
||||
}
|
||||
|
||||
public String getDisplayName() {
|
||||
return myDisplayName;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getInitialValue() {
|
||||
if (mySdk != null) {
|
||||
final String versionString = mySdk.getVersionString();
|
||||
if (versionString != null) {
|
||||
final LanguageLevel level = LanguageLevelUtil.getDefaultLanguageLevel(versionString);
|
||||
if (level == LanguageLevel.JDK_1_5) {
|
||||
return "http://java.sun.com/j2se/1.5.0/docs/api/";
|
||||
} else if (level == LanguageLevel.JDK_1_6) {
|
||||
return "http://java.sun.com/j2se/6/docs/api/";
|
||||
}
|
||||
}
|
||||
}
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -27,7 +27,7 @@ import com.intellij.openapi.project.ProjectBundle;
|
||||
import com.intellij.openapi.roots.CompilerProjectExtension;
|
||||
import com.intellij.openapi.roots.LanguageLevelProjectExtension;
|
||||
import com.intellij.openapi.roots.ModifiableRootModel;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectJdksModel;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectSdksModel;
|
||||
import com.intellij.openapi.ui.DetailsComponent;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.openapi.ui.NamedConfigurable;
|
||||
@@ -82,7 +82,7 @@ public class ProjectConfigurable extends NamedConfigurable<Project> implements D
|
||||
private boolean myFreeze = false;
|
||||
private DetailsComponent myDetailsComponent;
|
||||
|
||||
public ProjectConfigurable(Project project, ModulesConfigurator configurator, ProjectJdksModel model) {
|
||||
public ProjectConfigurable(Project project, ModulesConfigurator configurator, ProjectSdksModel model) {
|
||||
myProject = project;
|
||||
myModulesConfigurator = configurator;
|
||||
init(model);
|
||||
@@ -103,7 +103,7 @@ public class ProjectConfigurable extends NamedConfigurable<Project> implements D
|
||||
return myDetailsComponent.getComponent();
|
||||
}
|
||||
|
||||
private void init(final ProjectJdksModel model) {
|
||||
private void init(final ProjectSdksModel model) {
|
||||
myPanel = new MyJPanel();
|
||||
myPanel.setPreferredSize(new Dimension(700, 500));
|
||||
|
||||
|
||||
+7
-7
@@ -25,7 +25,7 @@ import com.intellij.openapi.projectRoots.Sdk;
|
||||
import com.intellij.openapi.projectRoots.SdkModel;
|
||||
import com.intellij.openapi.roots.ProjectRootManager;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.ModuleStructureConfigurable;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectJdksModel;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectSdksModel;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.StructureConfigurableContext;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.daemon.ModuleProjectStructureElement;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
@@ -45,7 +45,7 @@ public class ProjectJdkConfigurable implements UnnamedConfigurable {
|
||||
private JdkComboBox myCbProjectJdk;
|
||||
private JPanel myJdkPanel;
|
||||
private final Project myProject;
|
||||
private final ProjectJdksModel myJdksModel;
|
||||
private final ProjectSdksModel myJdksModel;
|
||||
private final SdkModel.Listener myListener = new SdkModel.Listener() {
|
||||
public void sdkAdded(Sdk sdk) {
|
||||
reloadModel();
|
||||
@@ -66,7 +66,7 @@ public class ProjectJdkConfigurable implements UnnamedConfigurable {
|
||||
|
||||
private boolean myFreeze = false;
|
||||
|
||||
public ProjectJdkConfigurable(Project project, final ProjectJdksModel jdksModel) {
|
||||
public ProjectJdkConfigurable(Project project, final ProjectSdksModel jdksModel) {
|
||||
myProject = project;
|
||||
myJdksModel = jdksModel;
|
||||
myJdksModel.addListener(myListener);
|
||||
@@ -84,7 +84,7 @@ public class ProjectJdkConfigurable implements UnnamedConfigurable {
|
||||
|
||||
private void reloadModel() {
|
||||
myFreeze = true;
|
||||
final Sdk projectJdk = myJdksModel.getProjectJdk();
|
||||
final Sdk projectJdk = myJdksModel.getProjectSdk();
|
||||
myCbProjectJdk.reloadModel(new JdkComboBox.NoneJdkComboBoxItem(), myProject);
|
||||
final String sdkName = projectJdk == null ? ProjectRootManager.getInstance(myProject).getProjectJdkName() : projectJdk.getName();
|
||||
if (sdkName != null) {
|
||||
@@ -108,8 +108,8 @@ public class ProjectJdkConfigurable implements UnnamedConfigurable {
|
||||
myCbProjectJdk.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
if (myFreeze) return;
|
||||
final Sdk oldJdk = myJdksModel.getProjectJdk();
|
||||
myJdksModel.setProjectJdk(myCbProjectJdk.getSelectedJdk());
|
||||
final Sdk oldJdk = myJdksModel.getProjectSdk();
|
||||
myJdksModel.setProjectSdk(myCbProjectJdk.getSelectedJdk());
|
||||
clearCaches();
|
||||
}
|
||||
});
|
||||
@@ -120,7 +120,7 @@ public class ProjectJdkConfigurable implements UnnamedConfigurable {
|
||||
myCbProjectJdk.appendEditButton(myProject, myJdkPanel, new GridBagConstraints(GridBagConstraints.RELATIVE, 1, 1, 1, 1.0, 0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(0, 4, 0, 0), 0, 0), new Computable<Sdk>() {
|
||||
@Nullable
|
||||
public Sdk compute() {
|
||||
return myJdksModel.getProjectJdk();
|
||||
return myJdksModel.getProjectSdk();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
+9
-9
@@ -32,7 +32,7 @@ import com.intellij.openapi.project.ProjectBundle;
|
||||
import com.intellij.openapi.projectRoots.Sdk;
|
||||
import com.intellij.openapi.projectRoots.impl.ProjectJdkImpl;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.JdkConfigurable;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectJdksModel;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectSdksModel;
|
||||
import com.intellij.openapi.ui.MasterDetailsComponent;
|
||||
import com.intellij.openapi.ui.MasterDetailsStateService;
|
||||
import com.intellij.openapi.ui.NamedConfigurable;
|
||||
@@ -56,7 +56,7 @@ import java.util.Set;
|
||||
|
||||
public class ProjectJdksConfigurable extends MasterDetailsComponent implements Configurable.Assistant {
|
||||
|
||||
private final ProjectJdksModel myProjectJdksModel;
|
||||
private final ProjectSdksModel myProjectJdksModel;
|
||||
private final Project myProject;
|
||||
@NonNls
|
||||
private static final String SPLITTER_PROPORTION = "project.jdk.splitter";
|
||||
@@ -64,7 +64,7 @@ public class ProjectJdksConfigurable extends MasterDetailsComponent implements C
|
||||
public ProjectJdksConfigurable(Project project) {
|
||||
super();
|
||||
myProject = project;
|
||||
myProjectJdksModel = ProjectJdksModel.getInstance(project);
|
||||
myProjectJdksModel = ProjectStructureConfigurable.getInstance(project).getProjectJdksModel();
|
||||
MasterDetailsStateService.getInstance(project).register("ProjectJDKs.UI", this);
|
||||
initTree();
|
||||
}
|
||||
@@ -86,12 +86,12 @@ public class ProjectJdksConfigurable extends MasterDetailsComponent implements C
|
||||
myProjectJdksModel.reset(myProject);
|
||||
|
||||
myRoot.removeAllChildren();
|
||||
final HashMap<Sdk, Sdk> sdks = myProjectJdksModel.getProjectJdks();
|
||||
final HashMap<Sdk, Sdk> sdks = myProjectJdksModel.getProjectSdks();
|
||||
for (Sdk sdk : sdks.keySet()) {
|
||||
final JdkConfigurable configurable = new JdkConfigurable((ProjectJdkImpl)sdks.get(sdk), myProjectJdksModel, TREE_UPDATER, myHistory, myProject);
|
||||
addNode(new MyNode(configurable), myRoot);
|
||||
}
|
||||
selectJdk(myProjectJdksModel.getProjectJdk()); //restore selection
|
||||
selectJdk(myProjectJdksModel.getProjectSdk()); //restore selection
|
||||
final String value = PropertiesComponent.getInstance().getValue(SPLITTER_PROPORTION);
|
||||
if (value != null) {
|
||||
try {
|
||||
@@ -127,7 +127,7 @@ public class ProjectJdksConfigurable extends MasterDetailsComponent implements C
|
||||
}
|
||||
|
||||
if (myProjectJdksModel.isModified() || modifiedJdks) myProjectJdksModel.apply(this);
|
||||
myProjectJdksModel.setProjectJdk(getSelectedJdk());
|
||||
myProjectJdksModel.setProjectSdk(getSelectedJdk());
|
||||
}
|
||||
|
||||
|
||||
@@ -168,17 +168,17 @@ public class ProjectJdksConfigurable extends MasterDetailsComponent implements C
|
||||
final NamedConfigurable namedConfigurable = (NamedConfigurable)node.getUserObject();
|
||||
jdks.add(((JdkConfigurable)namedConfigurable).getEditableObject());
|
||||
}
|
||||
final HashMap<Sdk, Sdk> sdks = new HashMap<Sdk, Sdk>(myProjectJdksModel.getProjectJdks());
|
||||
final HashMap<Sdk, Sdk> sdks = new HashMap<Sdk, Sdk>(myProjectJdksModel.getProjectSdks());
|
||||
for (Sdk sdk : sdks.values()) {
|
||||
if (!jdks.contains(sdk)) {
|
||||
myProjectJdksModel.removeJdk(sdk);
|
||||
myProjectJdksModel.removeSdk(sdk);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected boolean wasObjectStored(Object editableObject) {
|
||||
//noinspection RedundantCast
|
||||
return myProjectJdksModel.getProjectJdks().containsKey((Sdk)editableObject);
|
||||
return myProjectJdksModel.getProjectSdks().containsKey((Sdk)editableObject);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
||||
+2
-2
@@ -84,7 +84,7 @@ public class ProjectStructureConfigurable extends BaseConfigurable implements Se
|
||||
|
||||
private Configurable mySelectedConfigurable;
|
||||
|
||||
private final ProjectJdksModel myProjectJdksModel = new ProjectJdksModel();
|
||||
private final ProjectSdksModel myProjectJdksModel = new ProjectSdksModel();
|
||||
|
||||
private ProjectConfigurable myProjectConfig;
|
||||
private final ProjectLibrariesConfigurable myProjectLibrariesConfig;
|
||||
@@ -473,7 +473,7 @@ public class ProjectStructureConfigurable extends BaseConfigurable implements Se
|
||||
return ShowSettingsUtil.getInstance().findProjectConfigurable(project, ProjectStructureConfigurable.class);
|
||||
}
|
||||
|
||||
public ProjectJdksModel getProjectJdksModel() {
|
||||
public ProjectSdksModel getProjectJdksModel() {
|
||||
return myProjectJdksModel;
|
||||
}
|
||||
|
||||
|
||||
+6
-4
@@ -22,7 +22,7 @@ import com.intellij.openapi.roots.ProjectRootManager;
|
||||
import com.intellij.openapi.roots.impl.RootConfigurationAccessor;
|
||||
import com.intellij.openapi.roots.libraries.Library;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.ModuleStructureConfigurable;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectJdksModel;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectSdksModel;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.StructureConfigurableContext;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -51,7 +51,7 @@ public class UIRootConfigurationAccessor extends RootConfigurationAccessor {
|
||||
|
||||
@Nullable
|
||||
public Sdk getSdk(final Sdk sdk, final String sdkName) {
|
||||
final ProjectJdksModel model = ProjectStructureConfigurable.getInstance(myProject).getJdkConfig().getJdksTreeModel();
|
||||
final ProjectSdksModel model = ProjectStructureConfigurable.getInstance(myProject).getJdkConfig().getJdksTreeModel();
|
||||
return sdkName != null ? model.findSdk(sdkName) : sdk;
|
||||
}
|
||||
|
||||
@@ -63,9 +63,10 @@ public class UIRootConfigurationAccessor extends RootConfigurationAccessor {
|
||||
}
|
||||
|
||||
public Sdk getProjectSdk(final Project project) {
|
||||
return ProjectJdksModel.getInstance(project).getProjectJdk();
|
||||
return ProjectStructureConfigurable.getInstance(project).getProjectJdksModel().getProjectSdk();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public String getProjectSdkName(final Project project) {
|
||||
final String projectJdkName = ProjectRootManager.getInstance(project).getProjectJdkName();
|
||||
final Sdk projectJdk = getProjectSdk(project);
|
||||
@@ -73,7 +74,8 @@ public class UIRootConfigurationAccessor extends RootConfigurationAccessor {
|
||||
return projectJdk.getName();
|
||||
}
|
||||
else {
|
||||
return ProjectJdksModel.getInstance(project).findSdk(projectJdkName) == null ? projectJdkName : null;
|
||||
final ProjectSdksModel projectJdksModel = ProjectStructureConfigurable.getInstance(project).getProjectJdksModel();
|
||||
return projectJdksModel.findSdk(projectJdkName) == null ? projectJdkName : null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-1
@@ -19,6 +19,7 @@ import com.intellij.openapi.roots.ui.configuration.artifacts.nodes.ComplexPackag
|
||||
import com.intellij.packaging.elements.ComplexPackagingElement;
|
||||
import com.intellij.packaging.elements.ComplexPackagingElementType;
|
||||
import com.intellij.packaging.elements.PackagingElementFactory;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.*;
|
||||
@@ -31,7 +32,7 @@ public class ComplexElementSubstitutionParameters {
|
||||
private final Set<ComplexPackagingElement<?>> mySubstituted = new HashSet<ComplexPackagingElement<?>>();
|
||||
|
||||
public void setSubstituteAll() {
|
||||
myTypesToSubstitute.addAll(Arrays.asList(PackagingElementFactory.getInstance().getComplexElementTypes()));
|
||||
ContainerUtil.addAll(myTypesToSubstitute, PackagingElementFactory.getInstance().getComplexElementTypes());
|
||||
mySubstituted.clear();
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -33,7 +33,7 @@ public class AnnotationsOrderRootTypeUIFactory implements OrderRootTypeUIFactory
|
||||
}
|
||||
|
||||
public PathEditor createPathEditor(Sdk sdk) {
|
||||
return new MyPathsEditor(ProjectBundle.message("sdk.configure.annotations.tab"), AnnotationOrderRootType.getInstance(),
|
||||
FileChooserDescriptorFactory.createSingleFolderDescriptor(), false, sdk);
|
||||
return new PathEditor(ProjectBundle.message("sdk.configure.annotations.tab"), AnnotationOrderRootType.getInstance(),
|
||||
FileChooserDescriptorFactory.createSingleFolderDescriptor());
|
||||
}
|
||||
}
|
||||
+1
-2
@@ -33,7 +33,6 @@ public class ClassesOrderRootTypeUIFactory implements OrderRootTypeUIFactory {
|
||||
}
|
||||
|
||||
public PathEditor createPathEditor(Sdk sdk) {
|
||||
return new MyPathsEditor(ProjectBundle.message("sdk.configure.classpath.tab"), OrderRootType.CLASSES, new FileChooserDescriptor(true, true, true, false, true, true), false,
|
||||
sdk);
|
||||
return new PathEditor(ProjectBundle.message("sdk.configure.classpath.tab"), OrderRootType.CLASSES, new FileChooserDescriptor(true, true, true, false, true, true));
|
||||
}
|
||||
}
|
||||
+48
-2
@@ -21,11 +21,15 @@
|
||||
package com.intellij.openapi.roots.ui.configuration.libraryEditor;
|
||||
|
||||
import com.intellij.openapi.fileChooser.FileChooserDescriptor;
|
||||
import com.intellij.openapi.module.LanguageLevelUtil;
|
||||
import com.intellij.openapi.project.ProjectBundle;
|
||||
import com.intellij.openapi.projectRoots.Sdk;
|
||||
import com.intellij.openapi.projectRoots.ui.PathEditor;
|
||||
import com.intellij.openapi.projectRoots.ui.Util;
|
||||
import com.intellij.openapi.roots.JavadocOrderRootType;
|
||||
import com.intellij.openapi.roots.ui.configuration.OrderRootTypeUIFactory;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.pom.java.LanguageLevel;
|
||||
|
||||
public class JavadocOrderRootTypeUIFactory implements OrderRootTypeUIFactory {
|
||||
public LibraryTableTreeContentElement createElement(final LibraryElement parentElement) {
|
||||
@@ -33,7 +37,49 @@ public class JavadocOrderRootTypeUIFactory implements OrderRootTypeUIFactory {
|
||||
}
|
||||
|
||||
public PathEditor createPathEditor(Sdk sdk) {
|
||||
return new MyPathsEditor(ProjectBundle.message("sdk.configure.javadoc.tab"), JavadocOrderRootType.getInstance(), new FileChooserDescriptor(false, true, true, false, true, true), true,
|
||||
sdk);
|
||||
return new JavadocPathsEditor(sdk);
|
||||
}
|
||||
|
||||
static class JavadocPathsEditor extends PathEditor {
|
||||
private final Sdk mySdk;
|
||||
|
||||
public JavadocPathsEditor(Sdk sdk) {
|
||||
super(ProjectBundle.message("sdk.configure.javadoc.tab"),
|
||||
JavadocOrderRootType.getInstance(),
|
||||
new FileChooserDescriptor(false, true, true, false, true, true));
|
||||
mySdk = sdk;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isShowUrlButton() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onSpecifyUrlButtonClicked() {
|
||||
VirtualFile virtualFile = Util.showSpecifyJavadocUrlDialog(myPanel, getInitialValue());
|
||||
if(virtualFile != null){
|
||||
addElement(virtualFile);
|
||||
setModified(true);
|
||||
updateButtons();
|
||||
requestDefaultFocus();
|
||||
setSelectedRoots(new Object[]{virtualFile});
|
||||
}
|
||||
}
|
||||
|
||||
private String getInitialValue() {
|
||||
if (mySdk != null) {
|
||||
final String versionString = mySdk.getVersionString();
|
||||
if (versionString != null) {
|
||||
final LanguageLevel level = LanguageLevelUtil.getDefaultLanguageLevel(versionString);
|
||||
if (level == LanguageLevel.JDK_1_5) {
|
||||
return "http://java.sun.com/j2se/1.5.0/docs/api/";
|
||||
} else if (level == LanguageLevel.JDK_1_6) {
|
||||
return "http://java.sun.com/j2se/6/docs/api/";
|
||||
}
|
||||
}
|
||||
}
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
+6
-6
@@ -30,9 +30,7 @@ import com.intellij.openapi.project.ProjectBundle;
|
||||
import com.intellij.openapi.projectRoots.ui.Util;
|
||||
import com.intellij.openapi.roots.AnnotationOrderRootType;
|
||||
import com.intellij.openapi.roots.JavadocOrderRootType;
|
||||
import com.intellij.openapi.roots.ModuleRootManager;
|
||||
import com.intellij.openapi.roots.OrderRootType;
|
||||
import com.intellij.openapi.roots.impl.libraries.LibraryEx;
|
||||
import com.intellij.openapi.roots.impl.libraries.LibraryImpl;
|
||||
import com.intellij.openapi.roots.impl.libraries.LibraryTableImplUtil;
|
||||
import com.intellij.openapi.roots.libraries.Library;
|
||||
@@ -62,6 +60,7 @@ import com.intellij.ui.TreeSpeedSearch;
|
||||
import com.intellij.ui.treeStructure.Tree;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.Icons;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -471,10 +470,11 @@ public class LibraryTableEditor implements Disposable, LibraryEditorListener {
|
||||
|
||||
private void appendLibraryToModules(final ModuleStructureConfigurable rootConfigurable, final Library libraryToSelect) {
|
||||
final List<Module> modules = new ArrayList<Module>();
|
||||
modules.addAll(Arrays.asList(rootConfigurable.getModules()));
|
||||
ContainerUtil.addAll(modules, rootConfigurable.getModules());
|
||||
final ChooseModulesDialog dlg = new ChooseModulesDialog(myProject,
|
||||
modules, ProjectBundle.message("choose.modules.dialog.title"),
|
||||
ProjectBundle.message("choose.modules.dialog.description", libraryToSelect.getName()));
|
||||
ProjectBundle
|
||||
.message("choose.modules.dialog.description", libraryToSelect.getName()));
|
||||
dlg.show();
|
||||
if (dlg.isOK()) {
|
||||
final List<Module> choosenModules = dlg.getChosenElements();
|
||||
@@ -596,12 +596,12 @@ public class LibraryTableEditor implements Disposable, LibraryEditorListener {
|
||||
final Library[] libraries = myTableModifiableModel.getLibraries();
|
||||
for (Library library : libraries) {
|
||||
final VirtualFile[] libraryFiles = getLibraryEditor(library).getFiles(rootType);
|
||||
alreadyAdded.addAll(Arrays.asList(libraryFiles));
|
||||
ContainerUtil.addAll(alreadyAdded, libraryFiles);
|
||||
}
|
||||
}
|
||||
else {
|
||||
final VirtualFile[] libraryFiles = getLibraryEditor(lib).getFiles(rootType);
|
||||
alreadyAdded.addAll(Arrays.asList(libraryFiles));
|
||||
ContainerUtil.addAll(alreadyAdded, libraryFiles);
|
||||
}
|
||||
chosenFilesSet.removeAll(alreadyAdded);
|
||||
return VfsUtil.toVirtualFileArray(chosenFilesSet);
|
||||
|
||||
+1
-2
@@ -37,8 +37,7 @@ public class SourcesOrderRootTypeUIFactory implements OrderRootTypeUIFactory {
|
||||
}
|
||||
|
||||
public PathEditor createPathEditor(Sdk sdk) {
|
||||
return new MyPathsEditor(ProjectBundle.message("sdk.configure.sourcepath.tab"), OrderRootType.SOURCES, new FileChooserDescriptor(true, true, true, false, true, true), false,
|
||||
sdk) {
|
||||
return new PathEditor(ProjectBundle.message("sdk.configure.sourcepath.tab"), OrderRootType.SOURCES, new FileChooserDescriptor(true, true, true, false, true, true)) {
|
||||
@Override
|
||||
protected VirtualFile[] adjustAddedFileSet(final Component component, final VirtualFile[] files) {
|
||||
return PathUIUtils.scanAndSelectDetectedJavaSourceRoots(component, files);
|
||||
|
||||
+1
-1
@@ -43,7 +43,7 @@ public class JdkConfigurable extends ProjectStructureElementConfigurable<Sdk> im
|
||||
private final SdkProjectStructureElement myProjectStructureElement;
|
||||
|
||||
public JdkConfigurable(final ProjectJdkImpl projectJdk,
|
||||
final ProjectJdksModel configurable,
|
||||
final ProjectSdksModel configurable,
|
||||
final Runnable updateTree, @NotNull History history, Project project) {
|
||||
super(true, updateTree);
|
||||
myProjectJdk = projectJdk;
|
||||
|
||||
+6
-6
@@ -56,7 +56,7 @@ import java.util.List;
|
||||
)
|
||||
public class JdkListConfigurable extends BaseStructureConfigurable {
|
||||
|
||||
private final ProjectJdksModel myJdksTreeModel;
|
||||
private final ProjectSdksModel myJdksTreeModel;
|
||||
|
||||
|
||||
SdkModel.Listener myListener = new SdkModel.Listener() {
|
||||
@@ -124,7 +124,7 @@ public class JdkListConfigurable extends BaseStructureConfigurable {
|
||||
}
|
||||
|
||||
protected void loadTree() {
|
||||
final HashMap<Sdk,Sdk> sdks = myJdksTreeModel.getProjectJdks();
|
||||
final HashMap<Sdk,Sdk> sdks = myJdksTreeModel.getProjectSdks();
|
||||
for (Sdk sdk : sdks.keySet()) {
|
||||
final JdkConfigurable configurable = new JdkConfigurable((ProjectJdkImpl)sdks.get(sdk), myJdksTreeModel, TREE_UPDATER, myHistory,
|
||||
myProject);
|
||||
@@ -136,7 +136,7 @@ public class JdkListConfigurable extends BaseStructureConfigurable {
|
||||
@Override
|
||||
protected Collection<? extends ProjectStructureElement> getProjectStructureElements() {
|
||||
final List<ProjectStructureElement> result = new ArrayList<ProjectStructureElement>();
|
||||
for (Sdk sdk : myJdksTreeModel.getProjectJdks().values()) {
|
||||
for (Sdk sdk : myJdksTreeModel.getProjectSdks().values()) {
|
||||
result.add(new SdkProjectStructureElement(myContext, sdk));
|
||||
}
|
||||
return result;
|
||||
@@ -159,7 +159,7 @@ public class JdkListConfigurable extends BaseStructureConfigurable {
|
||||
myJdksTreeModel.disposeUIResources();
|
||||
}
|
||||
|
||||
public ProjectJdksModel getJdksTreeModel() {
|
||||
public ProjectSdksModel getJdksTreeModel() {
|
||||
return myJdksTreeModel;
|
||||
}
|
||||
|
||||
@@ -179,7 +179,7 @@ public class JdkListConfigurable extends BaseStructureConfigurable {
|
||||
}
|
||||
|
||||
if (myJdksTreeModel.isModified() || modifiedJdks) myJdksTreeModel.apply(this);
|
||||
myJdksTreeModel.setProjectJdk(ProjectRootManager.getInstance(myProject).getProjectJdk());
|
||||
myJdksTreeModel.setProjectSdk(ProjectRootManager.getInstance(myProject).getProjectJdk());
|
||||
}
|
||||
|
||||
public boolean isModified() {
|
||||
@@ -205,7 +205,7 @@ public class JdkListConfigurable extends BaseStructureConfigurable {
|
||||
}
|
||||
|
||||
protected void removeJdk(final Sdk jdk) {
|
||||
myJdksTreeModel.removeJdk(jdk);
|
||||
myJdksTreeModel.removeSdk(jdk);
|
||||
myContext.getDaemonAnalyzer().removeElement(new SdkProjectStructureElement(myContext, jdk));
|
||||
}
|
||||
|
||||
|
||||
-87
@@ -1,87 +0,0 @@
|
||||
/*
|
||||
* Copyright 2000-2009 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.intellij.openapi.roots.ui.configuration.projectRoot;
|
||||
|
||||
import com.intellij.openapi.options.ConfigurationException;
|
||||
import com.intellij.openapi.project.ProjectBundle;
|
||||
import com.intellij.openapi.ui.NamedConfigurable;
|
||||
import com.intellij.openapi.ui.PanelWithText;
|
||||
import com.intellij.openapi.util.IconLoader;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
/**
|
||||
* User: anna
|
||||
* Date: 05-Jun-2006
|
||||
*/
|
||||
public class JdksConfigurable extends NamedConfigurable<ProjectJdksModel> {
|
||||
private final ProjectJdksModel myJdkTableConfigurable;
|
||||
public static final String JDKS = ProjectBundle.message("jdks.node.display.name");
|
||||
public static final Icon ICON = IconLoader.getIcon("/modules/jdks.png");
|
||||
|
||||
|
||||
public JdksConfigurable(final ProjectJdksModel jdksTreeModel) {
|
||||
myJdkTableConfigurable = jdksTreeModel;
|
||||
}
|
||||
|
||||
public void setDisplayName(final String name) {
|
||||
//do nothing
|
||||
}
|
||||
|
||||
public ProjectJdksModel getEditableObject() {
|
||||
return myJdkTableConfigurable;
|
||||
}
|
||||
|
||||
public String getBannerSlogan() {
|
||||
return JDKS;
|
||||
}
|
||||
|
||||
public String getDisplayName() {
|
||||
return JDKS;
|
||||
}
|
||||
|
||||
public Icon getIcon() {
|
||||
return ICON;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@NonNls
|
||||
public String getHelpTopic() { //todo help
|
||||
return "preferences.jdks";
|
||||
}
|
||||
|
||||
|
||||
public JComponent createOptionsPanel() {
|
||||
return new PanelWithText(ProjectBundle.message("project.roots.jdks.node.text"));
|
||||
}
|
||||
|
||||
public boolean isModified() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public void apply() throws ConfigurationException {
|
||||
}
|
||||
|
||||
public void reset() {
|
||||
}
|
||||
|
||||
public void disposeUIResources() {
|
||||
|
||||
}
|
||||
}
|
||||
+2
-1
@@ -63,6 +63,7 @@ import com.intellij.openapi.wm.WindowManager;
|
||||
import com.intellij.ui.navigation.Place;
|
||||
import com.intellij.util.Consumer;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.ui.tree.TreeUtil;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -649,7 +650,7 @@ public class ModuleStructureConfigurable extends BaseStructureConfigurable imple
|
||||
result.add(new Separator(ProjectBundle.message("add.group.facet.separator")));
|
||||
}
|
||||
|
||||
result.addAll(Arrays.asList(facets));
|
||||
ContainerUtil.addAll(result, facets);
|
||||
|
||||
return result.toArray(new AnAction[result.size()]);
|
||||
}
|
||||
|
||||
@@ -34,9 +34,7 @@ import com.intellij.openapi.projectRoots.JavaSdk;
|
||||
import com.intellij.openapi.projectRoots.ProjectJdkTable;
|
||||
import com.intellij.openapi.projectRoots.Sdk;
|
||||
import com.intellij.openapi.roots.CompilerProjectExtension;
|
||||
import com.intellij.openapi.roots.LanguageLevelProjectExtension;
|
||||
import com.intellij.openapi.roots.ProjectRootManager;
|
||||
import com.intellij.openapi.roots.ex.ProjectRootManagerEx;
|
||||
import com.intellij.openapi.roots.ui.configuration.ModulesProvider;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.openapi.util.InvalidDataException;
|
||||
@@ -73,11 +71,22 @@ public abstract class ProjectOpenProcessorBase extends ProjectOpenProcessor {
|
||||
public boolean canOpenProject(final VirtualFile file) {
|
||||
final String[] supported = getSupportedExtensions();
|
||||
if (supported != null) {
|
||||
final String fileName = file.getName();
|
||||
for (String name : supported) {
|
||||
if (fileName.equals(name)) {
|
||||
return true;
|
||||
if (file.isDirectory()) {
|
||||
for (VirtualFile child : file.getChildren()) {
|
||||
if (canOpenFile(child, supported)) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
if (canOpenFile(file, supported)) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
protected static boolean canOpenFile(VirtualFile file, String[] supported) {
|
||||
final String fileName = file.getName();
|
||||
for (String name : supported) {
|
||||
if (fileName.equals(name)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
@@ -98,6 +107,15 @@ public abstract class ProjectOpenProcessorBase extends ProjectOpenProcessor {
|
||||
public Project doOpenProject(@NotNull VirtualFile virtualFile, Project projectToClose, boolean forceOpenInNewFrame) {
|
||||
try {
|
||||
final WizardContext wizardContext = new WizardContext(null);
|
||||
if (virtualFile.isDirectory()) {
|
||||
final String[] supported = getSupportedExtensions();
|
||||
for (VirtualFile file : virtualFile.getChildren()) {
|
||||
if (canOpenFile(file, supported)) {
|
||||
virtualFile = file;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!doQuickImport(virtualFile, wizardContext)) return null;
|
||||
|
||||
if (wizardContext.getProjectName() == null) {
|
||||
|
||||
@@ -28,11 +28,11 @@ import com.intellij.openapi.roots.ProjectRootManager;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.search.SearchScope;
|
||||
import com.intellij.psi.search.PackageScope;
|
||||
import com.intellij.psi.search.SearchScope;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
@@ -111,7 +111,7 @@ public class JavaAnalysisScope extends AnalysisScope {
|
||||
final Set<PsiDirectory> dirs = new HashSet<PsiDirectory>();
|
||||
ApplicationManager.getApplication().runReadAction(new Runnable() {
|
||||
public void run() {
|
||||
dirs.addAll(Arrays.asList(pack.getDirectories(GlobalSearchScope.projectScope(myElement.getProject()))));
|
||||
ContainerUtil.addAll(dirs, pack.getDirectories(GlobalSearchScope.projectScope(myElement.getProject())));
|
||||
}
|
||||
});
|
||||
for (PsiDirectory dir : dirs) {
|
||||
@@ -130,4 +130,4 @@ public class JavaAnalysisScope extends AnalysisScope {
|
||||
}
|
||||
return super.toSearchScope();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ package com.intellij.codeInsight;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.*;
|
||||
@@ -151,7 +152,7 @@ public class ExpectedTypeUtil {
|
||||
List<PsiMethod> methods = new ArrayList<PsiMethod>();
|
||||
for (PsiClass aClass : myOccurrenceClasses) {
|
||||
final PsiMethod[] occMethod = aClass.findMethodsByName(name, true);
|
||||
methods.addAll(Arrays.asList(occMethod));
|
||||
ContainerUtil.addAll(methods, occMethod);
|
||||
}
|
||||
return methods.toArray(new PsiMethod[methods.size()]);
|
||||
}
|
||||
|
||||
@@ -29,6 +29,7 @@ import com.intellij.openapi.util.Condition;
|
||||
import com.intellij.patterns.PsiJavaPatterns;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.filters.ElementFilter;
|
||||
import com.intellij.psi.impl.source.PostprocessReformattingAspect;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.search.searches.AllClassesSearch;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
@@ -73,6 +74,7 @@ public class AllClassesGetter {
|
||||
if (handler != null) {
|
||||
checkReference = handler.handleInsert(context, item);
|
||||
}
|
||||
PostprocessReformattingAspect.getInstance(context.getProject()).doPostponedFormatting();
|
||||
|
||||
final int newOffset = context.getOffsetMap().getOffset(key);
|
||||
if (newOffset >= 0) {
|
||||
|
||||
+2
-2
@@ -20,10 +20,10 @@ import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiLiteralExpression;
|
||||
import com.intellij.util.ProcessingContext;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import gnu.trove.THashSet;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
@@ -42,7 +42,7 @@ public abstract class ExpectedTypeBasedCompletionProvider extends CompletionProv
|
||||
final THashSet<ExpectedTypeInfo> infos = new THashSet<ExpectedTypeInfo>();
|
||||
ApplicationManager.getApplication().runReadAction(new Runnable() {
|
||||
public void run() {
|
||||
infos.addAll(Arrays.asList(JavaSmartCompletionContributor.getExpectedTypes(params)));
|
||||
ContainerUtil.addAll(infos, JavaSmartCompletionContributor.getExpectedTypes(params));
|
||||
}
|
||||
});
|
||||
addCompletions(params, result, infos);
|
||||
|
||||
@@ -56,6 +56,7 @@ import com.intellij.psi.xml.XmlTokenType;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.NullableFunction;
|
||||
import com.intellij.util.PairFunction;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.HashMap;
|
||||
import gnu.trove.THashSet;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
@@ -267,7 +268,7 @@ public class JavaCompletionUtil {
|
||||
}
|
||||
}
|
||||
|
||||
result.addAll(Arrays.asList(getOverlappedNameVersions(prefix, suggestedNames, requiredSuffix)));
|
||||
ContainerUtil.addAll(result, getOverlappedNameVersions(prefix, suggestedNames, requiredSuffix));
|
||||
|
||||
|
||||
}
|
||||
|
||||
+1
-1
@@ -369,7 +369,7 @@ public class JavaSmartCompletionContributor extends CompletionContributor {
|
||||
|
||||
ApplicationManager.getApplication().runReadAction(new Runnable() {
|
||||
public void run() {
|
||||
infos.addAll(Arrays.asList(getExpectedTypes(parameters)));
|
||||
ContainerUtil.addAll(infos, getExpectedTypes(parameters));
|
||||
for (PsiType type : ExpectedTypesGetter.getExpectedTypes(identifierCopy, true)) {
|
||||
if (type instanceof PsiClassType) {
|
||||
final PsiClassType classType = (PsiClassType)type;
|
||||
|
||||
@@ -22,6 +22,7 @@ import com.intellij.psi.impl.source.jsp.jspJava.JspClassLevelDeclarationStatemen
|
||||
import com.intellij.psi.javadoc.PsiDocComment;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.HashMap;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -105,7 +106,7 @@ scopes:
|
||||
}
|
||||
}
|
||||
if (!containModifierFlag) {
|
||||
ret.addAll(Arrays.asList(keywords));
|
||||
ContainerUtil.addAll(ret, keywords);
|
||||
}
|
||||
}
|
||||
break scopes;
|
||||
|
||||
+22
-4
@@ -565,7 +565,13 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh
|
||||
if (!myHolder.hasErrorResults()) myHolder.add(GenericsHighlightUtil.checkEnumSuperConstructorCall(expression));
|
||||
if (!myHolder.hasErrorResults()) myHolder.add(HighlightClassUtil.checkSuperQualifierType(expression));
|
||||
// in case of JSP syntethic method call, do not check
|
||||
if (expression.getMethodExpression().isPhysical() && !myHolder.hasErrorResults()) myHolder.add(HighlightMethodUtil.checkMethodCall(expression, myResolveHelper));
|
||||
if (expression.getMethodExpression().isPhysical() && !myHolder.hasErrorResults()) {
|
||||
try {
|
||||
myHolder.add(HighlightMethodUtil.checkMethodCall(expression, myResolveHelper));
|
||||
}
|
||||
catch (IndexNotReadyException ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!myHolder.hasErrorResults()) visitExpression(expression);
|
||||
}
|
||||
@@ -630,7 +636,11 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh
|
||||
if (!myHolder.hasErrorResults()) myHolder.add(HighlightClassUtil.checkQualifiedNewOfStaticClass(expression));
|
||||
if (!myHolder.hasErrorResults()) myHolder.add(HighlightClassUtil.checkCreateInnerClassFromStaticContext(expression));
|
||||
if (!myHolder.hasErrorResults()) myHolder.add(GenericsHighlightUtil.checkTypeParameterInstantiation(expression));
|
||||
if (!myHolder.hasErrorResults()) HighlightMethodUtil.checkNewExpression(expression, myHolder);
|
||||
try {
|
||||
if (!myHolder.hasErrorResults()) HighlightMethodUtil.checkNewExpression(expression, myHolder);
|
||||
}
|
||||
catch (IndexNotReadyException ignored) {
|
||||
}
|
||||
if (!myHolder.hasErrorResults()) myHolder.add(GenericsHighlightUtil.checkEnumInstantiation(expression));
|
||||
if (!myHolder.hasErrorResults()) myHolder.add(GenericsHighlightUtil.checkGenericArrayCreation(expression, expression.getType()));
|
||||
if (!myHolder.hasErrorResults()) registerConstructorCall(expression);
|
||||
@@ -758,7 +768,11 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh
|
||||
PsiElement resolved = result.getElement();
|
||||
if (resolved instanceof PsiVariable && resolved.getContainingFile() == expression.getContainingFile()) {
|
||||
if (!myHolder.hasErrorResults()) {
|
||||
myHolder.add(HighlightControlFlowUtil.checkVariableInitializedBeforeUsage(expression, (PsiVariable)resolved, myUninitializedVarProblems));
|
||||
try {
|
||||
myHolder.add(HighlightControlFlowUtil.checkVariableInitializedBeforeUsage(expression, (PsiVariable)resolved, myUninitializedVarProblems));
|
||||
}
|
||||
catch (IndexNotReadyException ignored) {
|
||||
}
|
||||
}
|
||||
PsiVariable variable = (PsiVariable)resolved;
|
||||
boolean isFinal = variable.hasModifierProperty(PsiModifier.FINAL);
|
||||
@@ -772,7 +786,11 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh
|
||||
|
||||
if (!myHolder.hasErrorResults()) myHolder.add(HighlightUtil.checkExpressionRequired(expression));
|
||||
if (!myHolder.hasErrorResults() && resolved instanceof PsiField) {
|
||||
myHolder.add(HighlightUtil.checkIllegalForwardReferenceToField(expression, (PsiField)resolved));
|
||||
try {
|
||||
myHolder.add(HighlightUtil.checkIllegalForwardReferenceToField(expression, (PsiField)resolved));
|
||||
}
|
||||
catch (IndexNotReadyException ignored) {
|
||||
}
|
||||
}
|
||||
if (!myHolder.hasErrorResults()) myHolder.add(HighlightMethodUtil.checkConstructorCallMustBeFirstStatement(expression));
|
||||
if (!myHolder.hasErrorResults()) myHolder.add(GenericsHighlightUtil.checkAccessStaticFieldFromEnumConstructor(expression, result));
|
||||
|
||||
@@ -28,11 +28,11 @@ import com.intellij.psi.codeStyle.JavaCodeStyleManager;
|
||||
import com.intellij.psi.util.MethodSignatureUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public class AddMethodFix extends IntentionAndQuickFixAction {
|
||||
@@ -51,7 +51,7 @@ public class AddMethodFix extends IntentionAndQuickFixAction {
|
||||
|
||||
public AddMethodFix(@NonNls @NotNull String methodText, @NotNull PsiClass implClass, @NotNull String... exceptions) {
|
||||
this(createMethod(methodText, implClass), implClass);
|
||||
myExceptions.addAll(Arrays.asList(exceptions));
|
||||
ContainerUtil.addAll(myExceptions, exceptions);
|
||||
}
|
||||
|
||||
private static PsiMethod createMethod(final String methodText, final PsiClass implClass) {
|
||||
|
||||
@@ -26,13 +26,12 @@ import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.PsiTypesUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class AddReturnFix implements IntentionAction {
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.codeInsight.daemon.impl.quickfix.AddReturnFix");
|
||||
private final PsiMethod myMethod;
|
||||
@@ -106,8 +105,8 @@ public class AddReturnFix implements IntentionAction {
|
||||
}
|
||||
}
|
||||
PsiParameter[] parameters = method.getParameterList().getParameters();
|
||||
variables.addAll(Arrays.asList(parameters));
|
||||
return (PsiVariable[]) variables.toArray(new PsiVariable[variables.size()]);
|
||||
ContainerUtil.addAll(variables, parameters);
|
||||
return (PsiVariable[])variables.toArray(new PsiVariable[variables.size()]);
|
||||
}
|
||||
|
||||
public boolean startInWriteAction() {
|
||||
|
||||
+20
-2
@@ -28,9 +28,13 @@ import com.intellij.openapi.util.Computable;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.source.jsp.jspJava.JspClass;
|
||||
import com.intellij.psi.util.PsiTypesUtil;
|
||||
import com.intellij.refactoring.util.RefactoringUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
|
||||
public class CreateConstructorParameterFromFieldFix implements IntentionAction {
|
||||
private final SmartPsiElementPointer<PsiField> myField;
|
||||
|
||||
@@ -76,8 +80,22 @@ public class CreateConstructorParameterFromFieldFix implements IntentionAction {
|
||||
aClass = getField().getContainingClass();
|
||||
constructors = aClass.getConstructors();
|
||||
}
|
||||
for (int i = 0; i < constructors.length; i++){
|
||||
if (!addParameterToConstructor(project, file, editor, getField().getContainingClass().getConstructors()[i])) break;
|
||||
Arrays.sort(constructors, new Comparator<PsiMethod>() {
|
||||
@Override
|
||||
public int compare(PsiMethod c1, PsiMethod c2) {
|
||||
final PsiMethod cc1 = RefactoringUtil.getChainedConstructor(c1);
|
||||
final PsiMethod cc2 = RefactoringUtil.getChainedConstructor(c2);
|
||||
if (cc1 == c2) return 1;
|
||||
if (cc2 == c1) return -1;
|
||||
if (cc1 == null) {
|
||||
return cc2 == null ? 0 : compare(c1, cc2);
|
||||
} else {
|
||||
return cc2 == null ? compare(cc1, c2) : compare(cc1, cc2);
|
||||
}
|
||||
}
|
||||
});
|
||||
for (PsiMethod constructor : constructors) {
|
||||
if (!addParameterToConstructor(project, file, editor, constructor)) break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+4
-3
@@ -18,7 +18,6 @@ package com.intellij.codeInsight.daemon.impl.quickfix;
|
||||
import com.intellij.codeInsight.*;
|
||||
import com.intellij.codeInsight.completion.proc.VariablesProcessor;
|
||||
import com.intellij.codeInsight.daemon.QuickFixBundle;
|
||||
import static com.intellij.codeInsight.daemon.impl.quickfix.CreateClassKind.*;
|
||||
import com.intellij.codeInsight.intention.impl.CreateClassDialog;
|
||||
import com.intellij.codeInsight.lookup.LookupElement;
|
||||
import com.intellij.codeInsight.lookup.LookupItemUtil;
|
||||
@@ -66,6 +65,8 @@ import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import static com.intellij.codeInsight.daemon.impl.quickfix.CreateClassKind.*;
|
||||
|
||||
/**
|
||||
* @author mike
|
||||
*/
|
||||
@@ -583,7 +584,7 @@ public class CreateFromUsageUtils {
|
||||
if (expectedTypes.length == 0 && !typesList.isEmpty()) {
|
||||
List<ExpectedTypeInfo> union = new ArrayList<ExpectedTypeInfo>();
|
||||
for (ExpectedTypeInfo[] aTypesList : typesList) {
|
||||
union.addAll(Arrays.asList((ExpectedTypeInfo[])aTypesList));
|
||||
ContainerUtil.addAll(union, (ExpectedTypeInfo[])aTypesList);
|
||||
}
|
||||
expectedTypes = union.toArray(new ExpectedTypeInfo[union.size()]);
|
||||
}
|
||||
@@ -633,7 +634,7 @@ public class CreateFromUsageUtils {
|
||||
if (expectedTypes.length == 0 && !typesList.isEmpty()) {
|
||||
List<ExpectedTypeInfo> union = new ArrayList<ExpectedTypeInfo>();
|
||||
for (ExpectedTypeInfo[] aTypesList : typesList) {
|
||||
union.addAll(Arrays.asList((ExpectedTypeInfo[])aTypesList));
|
||||
ContainerUtil.addAll(union, (ExpectedTypeInfo[])aTypesList);
|
||||
}
|
||||
expectedTypes = union.toArray(new ExpectedTypeInfo[union.size()]);
|
||||
}
|
||||
|
||||
+2
-2
@@ -26,10 +26,10 @@ import com.intellij.psi.*;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -86,7 +86,7 @@ public class GuessTypeParameters {
|
||||
|
||||
List<PsiType> types = matchingTypeParameters(vals, params, info);
|
||||
if (!types.isEmpty()) {
|
||||
types.addAll(Arrays.asList(ExpectedTypesProvider.processExpectedTypes(infos, new MyTypeVisitor(manager, scope), project)));
|
||||
ContainerUtil.addAll(types, ExpectedTypesProvider.processExpectedTypes(infos, new MyTypeVisitor(manager, scope), project));
|
||||
builder.replaceElement(typeElement, new TypeExpression(project, types.toArray(new PsiType[types.size()])));
|
||||
return;
|
||||
}
|
||||
|
||||
+5
-6
@@ -21,16 +21,16 @@ import com.intellij.codeInsight.CodeInsightBundle;
|
||||
import com.intellij.codeInsight.daemon.ImplicitUsageProvider;
|
||||
import com.intellij.ide.util.MemberChooser;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.extensions.Extensions;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.openapi.extensions.Extensions;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.CodeStyleManager;
|
||||
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
|
||||
import com.intellij.psi.codeStyle.VariableKind;
|
||||
import com.intellij.psi.javadoc.PsiDocComment;
|
||||
import com.intellij.psi.util.TypeConversionUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.psi.util.TypeConversionUtil;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
@@ -39,7 +39,6 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
@@ -126,12 +125,12 @@ public class GenerateConstructorHandler extends GenerateMembersHandlerBase {
|
||||
members = chooseMembers(allMembers, true, false, project);
|
||||
if (members == null) return null;
|
||||
}
|
||||
if (baseConstructors != null){
|
||||
if (baseConstructors != null) {
|
||||
ArrayList<ClassMember> array = new ArrayList<ClassMember>();
|
||||
for (PsiMethod baseConstructor : baseConstructors) {
|
||||
array.add(new PsiMethodMember(baseConstructor));
|
||||
}
|
||||
array.addAll(Arrays.asList(members));
|
||||
ContainerUtil.addAll(array, members);
|
||||
members = array.toArray(new ClassMember[array.size()]);
|
||||
}
|
||||
|
||||
@@ -276,4 +275,4 @@ public class GenerateConstructorHandler extends GenerateMembersHandlerBase {
|
||||
LOG.assertTrue(false);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@ import com.intellij.psi.util.MethodSignature;
|
||||
import com.intellij.psi.util.MethodSignatureUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.HashMap;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
|
||||
@@ -73,7 +74,7 @@ public class GenerateEqualsHelper implements Runnable {
|
||||
myCheckParameterWithInstanceof = useInstanceofToCheckParameterType;
|
||||
|
||||
myNonNullSet = new HashSet<PsiField>();
|
||||
myNonNullSet.addAll(Arrays.asList(nonNullFields));
|
||||
ContainerUtil.addAll(myNonNullSet, nonNullFields);
|
||||
final PsiManager manager = PsiManager.getInstance(project);
|
||||
|
||||
myFactory = JavaPsiFacade.getInstance(manager.getProject()).getElementFactory();
|
||||
@@ -179,7 +180,7 @@ public class GenerateEqualsHelper implements Runnable {
|
||||
addClassInstance(buffer);
|
||||
|
||||
ArrayList<PsiField> equalsFields = new ArrayList<PsiField>();
|
||||
equalsFields.addAll(Arrays.asList(myEqualsFields));
|
||||
ContainerUtil.addAll(equalsFields, myEqualsFields);
|
||||
Collections.sort(equalsFields, EqualsFieldsComparator.INSTANCE);
|
||||
|
||||
for (PsiField field : equalsFields) {
|
||||
|
||||
+3
-3
@@ -24,10 +24,10 @@ import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.application.Result;
|
||||
import com.intellij.openapi.command.WriteCommandAction;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.editor.LogicalPosition;
|
||||
import com.intellij.openapi.editor.ScrollType;
|
||||
import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.openapi.editor.actions.EnterAction;
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
@@ -38,11 +38,11 @@ import com.intellij.psi.PsiDocumentManager;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -185,7 +185,7 @@ public abstract class GenerateMembersHandlerBase implements CodeInsightActionHan
|
||||
for (ClassMember member : members) {
|
||||
GenerationInfo[] prototypes = generateMemberPrototypes(aClass, member);
|
||||
if (prototypes != null) {
|
||||
array.addAll(Arrays.asList(prototypes));
|
||||
ContainerUtil.addAll(array, prototypes);
|
||||
}
|
||||
}
|
||||
return array;
|
||||
|
||||
@@ -228,6 +228,9 @@ public class OverrideImplementUtil {
|
||||
}
|
||||
|
||||
public static boolean isInsertOverride(PsiMethod superMethod, PsiClass targetClass) {
|
||||
if (superMethod.isConstructor()) {
|
||||
return false;
|
||||
}
|
||||
if (!CodeStyleSettingsManager.getSettings(targetClass.getProject()).INSERT_OVERRIDE_ANNOTATION
|
||||
|| !PsiUtil.isLanguageLevel5OrHigher(targetClass)) {
|
||||
return false;
|
||||
@@ -248,7 +251,7 @@ public class OverrideImplementUtil {
|
||||
|
||||
List<PsiMethod> results = new ArrayList<PsiMethod>();
|
||||
for (final MethodImplementor implementor : getImplementors()) {
|
||||
results.addAll(Arrays.asList(implementor.createImplementationPrototypes(aClass, method)));
|
||||
ContainerUtil.addAll(results, implementor.createImplementationPrototypes(aClass, method));
|
||||
}
|
||||
if (results.isEmpty()) {
|
||||
PsiMethod method1 = GenerateMembersUtil.substituteGenericMethod(method, substitutor);
|
||||
@@ -318,7 +321,7 @@ public class OverrideImplementUtil {
|
||||
}
|
||||
|
||||
public static void annotateOnOverrideImplement(PsiMethod method, PsiClass targetClass, PsiMethod overridden, boolean insertOverride) {
|
||||
if (insertOverride && !overridden.isConstructor() && isInsertOverride(overridden, targetClass)) {
|
||||
if (insertOverride && isInsertOverride(overridden, targetClass)) {
|
||||
annotate(method, Override.class.getName());
|
||||
}
|
||||
for (OverrideImplementsAnnotationsHandler each : Extensions.getExtensions(OverrideImplementsAnnotationsHandler.EP_NAME)) {
|
||||
@@ -479,7 +482,27 @@ public class OverrideImplementUtil {
|
||||
Collection<CandidateInfo> candidates = getMethodsToOverrideImplement(aClass, toImplement);
|
||||
Collection<CandidateInfo> secondary = toImplement ? Collections.<CandidateInfo>emptyList() : getMethodsToOverrideImplement(aClass, true);
|
||||
|
||||
if (candidates.isEmpty() && secondary.isEmpty()) return;
|
||||
final MemberChooser<PsiMethodMember> chooser = showOverrideImplementChooser(editor, aClass, toImplement, candidates, secondary);
|
||||
if (chooser == null) return;
|
||||
|
||||
final List<PsiMethodMember> selectedElements = chooser.getSelectedElements();
|
||||
if (selectedElements == null || selectedElements.isEmpty()) return;
|
||||
|
||||
new WriteCommandAction(project, aClass.getContainingFile()) {
|
||||
protected void run(final Result result) throws Throwable {
|
||||
overrideOrImplementMethodsInRightPlace(editor, aClass, selectedElements, chooser.isCopyJavadoc(), chooser.isInsertOverrideAnnotation());
|
||||
}
|
||||
}.execute();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static MemberChooser<PsiMethodMember> showOverrideImplementChooser(Editor editor,
|
||||
final PsiClass aClass,
|
||||
final boolean toImplement,
|
||||
Collection<CandidateInfo> candidates,
|
||||
Collection<CandidateInfo> secondary) {
|
||||
Project project = aClass.getProject();
|
||||
if (candidates.isEmpty() && secondary.isEmpty()) return null;
|
||||
|
||||
final PsiMethodMember[] onlyPrimary = convertToMethodMembers(candidates);
|
||||
final PsiMethodMember[] all = ArrayUtil.mergeArrays(onlyPrimary, convertToMethodMembers(secondary), PsiMethodMember.class);
|
||||
@@ -521,20 +544,12 @@ public class OverrideImplementUtil {
|
||||
if (toImplement) {
|
||||
chooser.selectElements(isAll ? all : onlyPrimary);
|
||||
}
|
||||
|
||||
|
||||
chooser.show();
|
||||
if (chooser.getExitCode() != DialogWrapper.OK_EXIT_CODE) return;
|
||||
if (chooser.getExitCode() != DialogWrapper.OK_EXIT_CODE) return null;
|
||||
|
||||
PropertiesComponent.getInstance(project).setValue(PROP_COMBINED_OVERRIDE_IMPLEMENT, merge.get().toString());
|
||||
|
||||
final List<PsiMethodMember> selectedElements = chooser.getSelectedElements();
|
||||
if (selectedElements == null || selectedElements.isEmpty()) return;
|
||||
|
||||
new WriteCommandAction(project, aClass.getContainingFile()) {
|
||||
protected void run(final Result result) throws Throwable {
|
||||
overrideOrImplementMethodsInRightPlace(editor, aClass, selectedElements, chooser.isCopyJavadoc(), chooser.isInsertOverrideAnnotation());
|
||||
}
|
||||
}.execute();
|
||||
return chooser;
|
||||
}
|
||||
|
||||
private static String getChooserTitle(boolean toImplement, Ref<Boolean> merge) {
|
||||
|
||||
+2
-1
@@ -17,6 +17,7 @@ package com.intellij.codeInsight.hint.api.impls;
|
||||
|
||||
import com.intellij.codeInsight.lookup.LookupElement;
|
||||
import com.intellij.lang.parameterInfo.*;
|
||||
import com.intellij.openapi.project.DumbAware;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.util.text.CharArrayUtil;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
@@ -26,7 +27,7 @@ import org.jetbrains.annotations.Nullable;
|
||||
/**
|
||||
* @author Maxim.Mossienko
|
||||
*/
|
||||
public class AnnotationParameterInfoHandler implements ParameterInfoHandler<PsiAnnotationParameterList,PsiAnnotationMethod> {
|
||||
public class AnnotationParameterInfoHandler implements ParameterInfoHandler<PsiAnnotationParameterList,PsiAnnotationMethod>, DumbAware {
|
||||
public @Nullable Object[] getParametersForLookup(LookupElement item, ParameterInfoContext context) {
|
||||
return null;
|
||||
}
|
||||
|
||||
+3
-1
@@ -21,6 +21,7 @@ import com.intellij.codeInsight.completion.JavaCompletionUtil;
|
||||
import com.intellij.codeInsight.daemon.DaemonCodeAnalyzer;
|
||||
import com.intellij.codeInsight.lookup.LookupElement;
|
||||
import com.intellij.lang.parameterInfo.*;
|
||||
import com.intellij.openapi.project.DumbAware;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.infos.CandidateInfo;
|
||||
import com.intellij.psi.infos.MethodCandidateInfo;
|
||||
@@ -39,7 +40,8 @@ import java.util.Set;
|
||||
/**
|
||||
* @author Maxim.Mossienko
|
||||
*/
|
||||
public class MethodParameterInfoHandler implements ParameterInfoHandlerWithTabActionSupport<PsiExpressionList,Object,PsiExpression> {
|
||||
public class MethodParameterInfoHandler implements ParameterInfoHandlerWithTabActionSupport<PsiExpressionList,Object,PsiExpression>,
|
||||
DumbAware {
|
||||
private static final Set<Class> ourArgumentListAllowedParentClassesSet = new HashSet<Class>(
|
||||
Arrays.asList(PsiMethodCallExpression.class,PsiNewExpression.class, PsiAnonymousClass.class,PsiEnumConstant.class));
|
||||
|
||||
|
||||
+2
-2
@@ -32,7 +32,6 @@ import com.intellij.psi.codeStyle.CodeStyleManager;
|
||||
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
|
||||
import com.intellij.psi.codeStyle.SuggestedNameInfo;
|
||||
import com.intellij.psi.codeStyle.VariableKind;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.search.LocalSearchScope;
|
||||
import com.intellij.psi.search.searches.ReferencesSearch;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
@@ -41,6 +40,7 @@ import com.intellij.psi.util.TypeConversionUtil;
|
||||
import com.intellij.refactoring.util.RefactoringUtil;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -167,7 +167,7 @@ public class CreateFieldFromParameterAction implements IntentionAction {
|
||||
|
||||
if (isInteractive) {
|
||||
List<String> namesList = new ArrayList<String>();
|
||||
namesList.addAll(Arrays.asList(names));
|
||||
ContainerUtil.addAll(namesList, names);
|
||||
String defaultName = styleManager.propertyNameToVariableName(propertyName, kind);
|
||||
if (namesList.contains(defaultName)) {
|
||||
Collections.swap(namesList, 0, namesList.indexOf(defaultName));
|
||||
|
||||
@@ -25,6 +25,7 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.CodeStyleManager;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.refactoring.util.RefactoringUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -104,8 +105,8 @@ public class SplitIfAction extends PsiElementBaseIntentionAction {
|
||||
PsiManager psiManager = ifStatement.getManager();
|
||||
PsiIfStatement subIf = (PsiIfStatement)ifStatement.copy();
|
||||
|
||||
subIf.getCondition().replace(rOperand);
|
||||
ifStatement.getCondition().replace(lOperand);
|
||||
subIf.getCondition().replace(RefactoringUtil.unparenthesizeExpression(rOperand));
|
||||
ifStatement.getCondition().replace(RefactoringUtil.unparenthesizeExpression(lOperand));
|
||||
|
||||
if (ifStatement.getThenBranch() instanceof PsiBlockStatement) {
|
||||
PsiBlockStatement blockStmt = (PsiBlockStatement)JavaPsiFacade.getInstance(psiManager.getProject()).getElementFactory().createStatementFromText("{}", null);
|
||||
@@ -141,8 +142,8 @@ public class SplitIfAction extends PsiElementBaseIntentionAction {
|
||||
PsiStatement elseBranch = ifStatement.getElseBranch();
|
||||
if (elseBranch != null) { elseBranch = (PsiStatement)elseBranch.copy(); }
|
||||
|
||||
ifStatement.getCondition().replace(lOperand);
|
||||
secondIf.getCondition().replace(rOperand);
|
||||
ifStatement.getCondition().replace(RefactoringUtil.unparenthesizeExpression(lOperand));
|
||||
secondIf.getCondition().replace(RefactoringUtil.unparenthesizeExpression(rOperand));
|
||||
|
||||
ifStatement.setElseBranch(secondIf);
|
||||
if (elseBranch != null) { secondIf.setElseBranch(elseBranch); }
|
||||
|
||||
@@ -339,7 +339,10 @@ public class JavaDocInfoGenerator {
|
||||
generateTypeParametersSection(buffer, result);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static Pair<PsiDocTag, InheritDocProvider<PsiDocTag>> findInHierarchy(PsiClass psiClass, final DocTagLocator<PsiDocTag> locator) {
|
||||
final Pair<PsiDocTag, InheritDocProvider<PsiDocTag>> inClassComment = findInClassComment(psiClass, locator);
|
||||
if (inClassComment != null) return inClassComment;
|
||||
for (final PsiClass superClass : psiClass.getSupers()) {
|
||||
final Pair<PsiDocTag, InheritDocProvider<PsiDocTag>> pair = findInClassComment(superClass, locator);
|
||||
if (pair != null) return pair;
|
||||
@@ -348,7 +351,7 @@ public class JavaDocInfoGenerator {
|
||||
final Pair<PsiDocTag, InheritDocProvider<PsiDocTag>> pair = findInClassComment(superInterface, locator);
|
||||
if (pair != null) return pair;
|
||||
}
|
||||
return findInClassComment(psiClass, locator);
|
||||
return null;
|
||||
}
|
||||
|
||||
private static Pair<PsiDocTag, InheritDocProvider<PsiDocTag>> findInClassComment(final PsiClass psiClass, final DocTagLocator<PsiDocTag> locator) {
|
||||
|
||||
@@ -23,11 +23,11 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.Set;
|
||||
|
||||
@@ -103,7 +103,7 @@ public class VariableOfTypeMacro implements Macro {
|
||||
}
|
||||
|
||||
PsiExpression[] expressions = MacroUtil.getStandardExpressionsOfType(place, type);
|
||||
array.addAll(Arrays.asList(expressions));
|
||||
ContainerUtil.addAll(array, expressions);
|
||||
return array.toArray(new PsiElement[array.size()]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,8 +23,8 @@ package com.intellij.codeInspection;
|
||||
import com.intellij.codeInsight.AnnotationUtil;
|
||||
import com.intellij.codeInsight.daemon.DaemonCodeAnalyzerSettings;
|
||||
import com.intellij.codeInsight.daemon.HighlightDisplayKey;
|
||||
import com.intellij.codeInsight.daemon.impl.actions.SuppressByJavaCommentFix;
|
||||
import com.intellij.codeInsight.daemon.impl.actions.SuppressAllForClassFix;
|
||||
import com.intellij.codeInsight.daemon.impl.actions.SuppressByJavaCommentFix;
|
||||
import com.intellij.codeInsight.daemon.impl.actions.SuppressFix;
|
||||
import com.intellij.codeInsight.daemon.impl.actions.SuppressForClassFix;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
@@ -44,6 +44,7 @@ import com.intellij.psi.util.PsiUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.annotation.Generated;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
@@ -86,6 +87,8 @@ public class SuppressManagerImpl extends SuppressManager {
|
||||
|
||||
@Nullable
|
||||
public PsiElement getAnnotationMemberSuppressedIn(@NotNull final PsiModifierListOwner owner, final String inspectionToolID) {
|
||||
final PsiAnnotation generatedAnnotation = AnnotationUtil.findAnnotation(owner, Generated.class.getName());
|
||||
if (generatedAnnotation != null) return generatedAnnotation;
|
||||
PsiModifierList modifierList = owner.getModifierList();
|
||||
Collection<String> suppressedIds = getInspectionIdsSuppressedInAnnotation(modifierList);
|
||||
for (String ids : suppressedIds) {
|
||||
|
||||
@@ -19,8 +19,12 @@ import com.intellij.codeInsight.daemon.impl.analysis.HighlightControlFlowUtil;
|
||||
import com.intellij.codeInspection.reference.*;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.controlFlow.*;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* User: anna
|
||||
@@ -115,7 +119,7 @@ class CanBeFinalAnnotator extends RefGraphAnnotatorEx {
|
||||
PsiField[] psiFields = psiClass.getFields();
|
||||
|
||||
HashSet<PsiVariable> allFields = new HashSet<PsiVariable>();
|
||||
allFields.addAll(Arrays.asList(psiFields));
|
||||
ContainerUtil.addAll(allFields, psiFields);
|
||||
ArrayList<PsiVariable> instanceInitializerInitializedFields = new ArrayList<PsiVariable>();
|
||||
boolean hasInitializers = false;
|
||||
for (PsiClassInitializer initializer : psiClass.getInitializers()) {
|
||||
@@ -123,7 +127,8 @@ class CanBeFinalAnnotator extends RefGraphAnnotatorEx {
|
||||
hasInitializers = true;
|
||||
ControlFlow flow;
|
||||
try {
|
||||
flow = ControlFlowFactory.getInstance(body.getProject()).getControlFlow(body, LocalsOrMyInstanceFieldsControlFlowPolicy.getInstance(), false);
|
||||
flow = ControlFlowFactory.getInstance(body.getProject())
|
||||
.getControlFlow(body, LocalsOrMyInstanceFieldsControlFlowPolicy.getInstance(), false);
|
||||
}
|
||||
catch (AnalysisCanceledException e) {
|
||||
flow = ControlFlow.EMPTY;
|
||||
@@ -154,7 +159,8 @@ class CanBeFinalAnnotator extends RefGraphAnnotatorEx {
|
||||
hasInitializers = true;
|
||||
ControlFlow flow;
|
||||
try {
|
||||
flow = ControlFlowFactory.getInstance(body.getProject()).getControlFlow(body, LocalsOrMyInstanceFieldsControlFlowPolicy.getInstance(), false);
|
||||
flow = ControlFlowFactory.getInstance(body.getProject())
|
||||
.getControlFlow(body, LocalsOrMyInstanceFieldsControlFlowPolicy.getInstance(), false);
|
||||
}
|
||||
catch (AnalysisCanceledException e) {
|
||||
flow = ControlFlow.EMPTY;
|
||||
|
||||
+3
-2
@@ -26,7 +26,6 @@
|
||||
package com.intellij.codeInspection.deadCode;
|
||||
|
||||
import com.intellij.ExtensionPoints;
|
||||
import com.intellij.ui.SeparatorFactory;
|
||||
import com.intellij.analysis.AnalysisScope;
|
||||
import com.intellij.codeInsight.AnnotationUtil;
|
||||
import com.intellij.codeInsight.daemon.GroupNames;
|
||||
@@ -57,7 +56,9 @@ import com.intellij.psi.search.PsiSearchHelper;
|
||||
import com.intellij.psi.util.PsiMethodUtil;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.refactoring.safeDelete.SafeDeleteHandler;
|
||||
import com.intellij.ui.SeparatorFactory;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.HashMap;
|
||||
import com.intellij.util.text.CharArrayUtil;
|
||||
import org.jdom.Element;
|
||||
@@ -105,7 +106,7 @@ public class UnusedDeclarationInspection extends FilteringInspectionTool {
|
||||
public final UnusedCodeExtension[] myExtensions;
|
||||
|
||||
public UnusedDeclarationInspection() {
|
||||
ADDITIONAL_ANNOTATIONS.addAll(Arrays.asList(ADDITIONAL_ANNOS));
|
||||
ContainerUtil.addAll(ADDITIONAL_ANNOTATIONS, ADDITIONAL_ANNOS);
|
||||
myQuickFixActions = new QuickFixAction[]{new PermanentDeleteAction(), new CommentOutBin(), new MoveToEntries()};
|
||||
ExtensionPoint<UnusedCodeExtension> point = Extensions.getRootArea().getExtensionPoint(ExtensionPoints.DEAD_CODE_TOOL);
|
||||
final UnusedCodeExtension[] deadCodeAddins = point.getExtensions();
|
||||
|
||||
+2
-2
@@ -19,10 +19,10 @@ import com.intellij.codeInspection.InspectionManager;
|
||||
import com.intellij.codeInspection.ProblemDescriptor;
|
||||
import com.intellij.codeInspection.ex.BaseLocalInspectionTool;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -36,7 +36,7 @@ public abstract class GenericsInspectionToolBase extends BaseLocalInspectionTool
|
||||
for (PsiClassInitializer initializer : initializers) {
|
||||
final ProblemDescriptor[] localDescriptions = getDescriptions(initializer, manager, isOnTheFly);
|
||||
if (localDescriptions != null) {
|
||||
descriptors.addAll(Arrays.asList(localDescriptions));
|
||||
ContainerUtil.addAll(descriptors, localDescriptions);
|
||||
}
|
||||
}
|
||||
if (descriptors.isEmpty()) return null;
|
||||
|
||||
+10
-39
@@ -16,7 +16,6 @@
|
||||
|
||||
package com.intellij.codeInspection.suspiciousNameCombination;
|
||||
|
||||
import com.intellij.CommonBundle;
|
||||
import com.intellij.codeInsight.daemon.GroupNames;
|
||||
import com.intellij.codeInsight.daemon.JavaErrorMessages;
|
||||
import com.intellij.codeInspection.InspectionsBundle;
|
||||
@@ -29,7 +28,7 @@ import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.NameUtil;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.ui.AddDeleteListPanel;
|
||||
import com.intellij.ui.AddEditDeleteListPanel;
|
||||
import org.jdom.Element;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -38,10 +37,6 @@ import org.jetbrains.annotations.Nullable;
|
||||
import javax.swing.*;
|
||||
import javax.swing.event.ListDataEvent;
|
||||
import javax.swing.event.ListDataListener;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
@@ -209,23 +204,10 @@ public class SuspiciousNameCombinationInspection extends BaseLocalInspectionTool
|
||||
}
|
||||
}
|
||||
|
||||
private class MyOptionsPanel extends AddDeleteListPanel {
|
||||
private JButton myEditButton;
|
||||
private class MyOptionsPanel extends AddEditDeleteListPanel<String> {
|
||||
|
||||
public MyOptionsPanel() {
|
||||
super(InspectionsBundle.message("suspicious.name.combination.options.title"), myNameGroups);
|
||||
myEditButton.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
editSelectedItem();
|
||||
}
|
||||
});
|
||||
myList.addMouseListener(new MouseAdapter() {
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
if (e.getClickCount() == 2 && e.getButton() == MouseEvent.BUTTON1) {
|
||||
editSelectedItem();
|
||||
}
|
||||
}
|
||||
});
|
||||
myListModel.addListDataListener(new ListDataListener() {
|
||||
public void intervalAdded(ListDataEvent e) {
|
||||
saveChanges();
|
||||
@@ -241,31 +223,20 @@ public class SuspiciousNameCombinationInspection extends BaseLocalInspectionTool
|
||||
});
|
||||
}
|
||||
|
||||
@Override protected JButton[] createButtons() {
|
||||
myEditButton = new JButton(CommonBundle.message("button.edit"));
|
||||
return new JButton[] { myAddButton, myEditButton, myDeleteButton };
|
||||
}
|
||||
|
||||
protected Object findItemToAdd() {
|
||||
protected String findItemToAdd() {
|
||||
return Messages.showInputDialog(this,
|
||||
InspectionsBundle.message("suspicious.name.combination.options.prompt"),
|
||||
InspectionsBundle.message("suspicious.name.combination.add.titile"),
|
||||
Messages.getQuestionIcon(), "", null);
|
||||
}
|
||||
|
||||
private void editSelectedItem() {
|
||||
int index = myList.getSelectedIndex();
|
||||
if (index >= 0) {
|
||||
String inputValue = (String) myListModel.get(index);
|
||||
String newValue = Messages.showInputDialog(this,
|
||||
InspectionsBundle.message("suspicious.name.combination.options.prompt"),
|
||||
InspectionsBundle.message("suspicious.name.combination.edit.title"),
|
||||
Messages.getQuestionIcon(),
|
||||
inputValue, null);
|
||||
if (newValue != null) {
|
||||
myListModel.set(index, newValue);
|
||||
}
|
||||
}
|
||||
@Override
|
||||
protected String editSelectedItem(String inputValue) {
|
||||
return Messages.showInputDialog(this,
|
||||
InspectionsBundle.message("suspicious.name.combination.options.prompt"),
|
||||
InspectionsBundle.message("suspicious.name.combination.edit.title"),
|
||||
Messages.getQuestionIcon(),
|
||||
inputValue, null);
|
||||
}
|
||||
|
||||
private void saveChanges() {
|
||||
|
||||
+8
-5
@@ -55,6 +55,7 @@ import com.intellij.psi.search.scope.packageSet.NamedScope;
|
||||
import com.intellij.psi.search.scope.packageSet.PackageSetFactory;
|
||||
import com.intellij.psi.search.scope.packageSet.ParsingException;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.Nls;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -69,11 +70,12 @@ public class UnusedLibrariesInspection extends DescriptorProviderInspection {
|
||||
final Project project = getContext().getProject();
|
||||
final ArrayList<VirtualFile> libraryRoots = new ArrayList<VirtualFile>();
|
||||
if (scope.getScopeType() == AnalysisScope.PROJECT) {
|
||||
libraryRoots.addAll(Arrays.asList(LibraryUtil.getLibraryRoots(project, false, false)));
|
||||
ContainerUtil.addAll(libraryRoots, LibraryUtil.getLibraryRoots(project, false, false));
|
||||
} else {
|
||||
final Set<Module> modules = new HashSet<Module>();
|
||||
scope.accept(new PsiRecursiveElementVisitor() {
|
||||
@Override public void visitFile(PsiFile file) {
|
||||
@Override
|
||||
public void visitFile(PsiFile file) {
|
||||
if (!(file instanceof PsiCompiledElement)) {
|
||||
final VirtualFile virtualFile = file.getVirtualFile();
|
||||
if (virtualFile != null) {
|
||||
@@ -85,7 +87,7 @@ public class UnusedLibrariesInspection extends DescriptorProviderInspection {
|
||||
}
|
||||
}
|
||||
});
|
||||
libraryRoots.addAll(Arrays.asList(LibraryUtil.getLibraryRoots(modules.toArray(new Module[modules.size()]), false, false)));
|
||||
ContainerUtil.addAll(libraryRoots, LibraryUtil.getLibraryRoots(modules.toArray(new Module[modules.size()]), false, false));
|
||||
}
|
||||
GlobalSearchScope searchScope;
|
||||
try {
|
||||
@@ -148,7 +150,8 @@ public class UnusedLibrariesInspection extends DescriptorProviderInspection {
|
||||
if (orderEntry instanceof LibraryOrderEntry) {
|
||||
final RefModule refModule = refManager.getRefModule(orderEntry.getOwnerModule());
|
||||
final Set<VirtualFile> files = unusedLibs.get(orderEntry);
|
||||
if (files.size() < orderEntry.getFiles(OrderRootType.CLASSES).length) {
|
||||
final VirtualFile[] roots = ((LibraryOrderEntry)orderEntry).getRootFiles(OrderRootType.CLASSES);
|
||||
if (files.size() < roots.length) {
|
||||
final String unusedLibraryRoots = StringUtil.join(files, new Function<VirtualFile, String>() {
|
||||
public String fun(final VirtualFile file) {
|
||||
return file.getPresentableName();
|
||||
@@ -244,4 +247,4 @@ public class UnusedLibrariesInspection extends DescriptorProviderInspection {
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-1
@@ -31,6 +31,7 @@ import com.intellij.openapi.util.JDOMExternalizableStringList;
|
||||
import com.intellij.psi.PsiMethod;
|
||||
import com.intellij.psi.PsiModifierListOwner;
|
||||
import com.intellij.psi.util.PropertyUtil;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.intellij.lang.annotations.Pattern;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -171,7 +172,7 @@ public class UnusedSymbolLocalInspection extends BaseJavaLocalInspectionTool imp
|
||||
for (Object extension : Extensions.getExtensions(ExtensionPoints.DEAD_CODE_TOOL)) {
|
||||
final String[] ignoredAnnotations = ((UnusedCodeExtension)extension).getIgnoreAnnotations();
|
||||
if (ignoredAnnotations != null) {
|
||||
annotations.addAll(Arrays.asList(ignoredAnnotations));
|
||||
ContainerUtil.addAll(annotations, ignoredAnnotations);
|
||||
}
|
||||
}
|
||||
ANNOTATIONS = annotations;
|
||||
|
||||
+13
-10
@@ -27,6 +27,7 @@ import com.intellij.openapi.ui.DialogWrapper;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.ui.IdeBorderFactory;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
@@ -62,10 +63,13 @@ public class CyclicDependenciesAction extends AnAction{
|
||||
}
|
||||
AnalysisScope scope = getInspectionScope(dataContext);
|
||||
if (scope == null || scope.getScopeType() != AnalysisScope.MODULES){
|
||||
ProjectModuleOrPackageDialog dlg = new ProjectModuleOrPackageDialog(module != null ? ModuleUtil.getModuleNameInReadAction(module) : null);
|
||||
dlg.show();
|
||||
if (!dlg.isOK()) return;
|
||||
if (dlg.isProjectScopeSelected()) {
|
||||
ProjectModuleOrPackageDialog dlg = null;
|
||||
if (module != null) {
|
||||
dlg = new ProjectModuleOrPackageDialog(ModuleUtil.getModuleNameInReadAction(module));
|
||||
dlg.show();
|
||||
if (!dlg.isOK()) return;
|
||||
}
|
||||
if (dlg == null || dlg.isProjectScopeSelected()) {
|
||||
scope = getProjectScope(dataContext);
|
||||
}
|
||||
else {
|
||||
@@ -82,6 +86,7 @@ public class CyclicDependenciesAction extends AnAction{
|
||||
}
|
||||
|
||||
|
||||
@Nullable
|
||||
private static AnalysisScope getInspectionScope(final DataContext dataContext) {
|
||||
final Project project = PlatformDataKeys.PROJECT.getData(dataContext);
|
||||
if (project == null) return null;
|
||||
@@ -91,6 +96,7 @@ public class CyclicDependenciesAction extends AnAction{
|
||||
return scope != null && scope.getScopeType() != AnalysisScope.INVALID ? scope : null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static AnalysisScope getInspectionScopeImpl(DataContext dataContext) {
|
||||
//Possible scopes: package, project, module.
|
||||
Project projectContext = PlatformDataKeys.PROJECT_CONTEXT.getData(dataContext);
|
||||
@@ -127,6 +133,7 @@ public class CyclicDependenciesAction extends AnAction{
|
||||
return getProjectScope(dataContext);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static AnalysisScope getProjectScope(DataContext dataContext) {
|
||||
final Project data = PlatformDataKeys.PROJECT.getData(dataContext);
|
||||
if (data == null) {
|
||||
@@ -135,6 +142,7 @@ public class CyclicDependenciesAction extends AnAction{
|
||||
return new AnalysisScope(data);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static AnalysisScope getModuleScope(DataContext dataContext) {
|
||||
final Module data = LangDataKeys.MODULE.getData(dataContext);
|
||||
if (data == null) {
|
||||
@@ -158,12 +166,7 @@ public class CyclicDependenciesAction extends AnAction{
|
||||
init();
|
||||
setTitle(AnalysisScopeBundle.message("cyclic.dependencies.scope.dialog.title", myTitle));
|
||||
setHorizontalStretch(1.75f);
|
||||
if (moduleName == null){
|
||||
myModuleButton.setVisible(false);
|
||||
myProjectButton.setSelected(true);
|
||||
} else {
|
||||
myModuleButton.setSelected(true);
|
||||
}
|
||||
myModuleButton.setSelected(true);
|
||||
}
|
||||
|
||||
protected JComponent createCenterPanel() {
|
||||
|
||||
@@ -49,7 +49,10 @@ import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author peter
|
||||
@@ -186,10 +189,10 @@ public class JavaFindUsagesHandler extends FindUsagesHandler{
|
||||
if (doSearch) {
|
||||
final List<PsiElement> elements = new ArrayList<PsiElement>();
|
||||
if (getter != null) {
|
||||
elements.addAll(Arrays.asList(SuperMethodWarningUtil.checkSuperMethods(getter, ACTION_STRING)));
|
||||
ContainerUtil.addAll(elements, SuperMethodWarningUtil.checkSuperMethods(getter, ACTION_STRING));
|
||||
}
|
||||
if (setter != null) {
|
||||
elements.addAll(Arrays.asList(SuperMethodWarningUtil.checkSuperMethods(setter, ACTION_STRING)));
|
||||
ContainerUtil.addAll(elements, SuperMethodWarningUtil.checkSuperMethods(setter, ACTION_STRING));
|
||||
}
|
||||
return elements.toArray(new PsiElement[elements.size()]);
|
||||
}
|
||||
@@ -415,7 +418,7 @@ public class JavaFindUsagesHandler extends FindUsagesHandler{
|
||||
ApplicationManager.getApplication().runReadAction(new Runnable() {
|
||||
public void run() {
|
||||
PsiClass[] classes = JavaDirectoryService.getInstance().getClasses(dir);
|
||||
array.addAll(Arrays.asList(classes));
|
||||
ContainerUtil.addAll(array, classes);
|
||||
if (includeSubdirs) {
|
||||
PsiDirectory[] dirs = dir.getSubdirectories();
|
||||
for (PsiDirectory directory : dirs) {
|
||||
|
||||
@@ -17,7 +17,9 @@
|
||||
package com.intellij.ide.actions;
|
||||
|
||||
import com.intellij.ide.IdeView;
|
||||
import com.intellij.openapi.actionSystem.*;
|
||||
import com.intellij.openapi.actionSystem.DataContext;
|
||||
import com.intellij.openapi.actionSystem.LangDataKeys;
|
||||
import com.intellij.openapi.actionSystem.PlatformDataKeys;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.roots.ProjectFileIndex;
|
||||
import com.intellij.openapi.roots.ProjectRootManager;
|
||||
@@ -33,7 +35,7 @@ import javax.swing.*;
|
||||
/**
|
||||
* @author peter
|
||||
*/
|
||||
public abstract class CreateTemplateInPackageAction<T extends PsiElement> extends AnAction {
|
||||
public abstract class CreateTemplateInPackageAction<T extends PsiElement> extends CreateFromTemplateAction<T> {
|
||||
private final boolean myinSourceOnly;
|
||||
|
||||
protected CreateTemplateInPackageAction(String text, String description, Icon icon, boolean inSourceOnly) {
|
||||
@@ -41,54 +43,21 @@ public abstract class CreateTemplateInPackageAction<T extends PsiElement> extend
|
||||
myinSourceOnly = inSourceOnly;
|
||||
}
|
||||
|
||||
public final void actionPerformed(final AnActionEvent e) {
|
||||
final DataContext dataContext = e.getDataContext();
|
||||
@Override
|
||||
@Nullable
|
||||
protected T createFile(String name, String templateName, PsiDirectory dir) {
|
||||
return checkOrCreate(name, dir, templateName, false);
|
||||
}
|
||||
|
||||
final IdeView view = LangDataKeys.IDE_VIEW.getData(dataContext);
|
||||
if (view == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
final Project project = PlatformDataKeys.PROJECT.getData(dataContext);
|
||||
|
||||
final PsiDirectory dir = view.getOrChooseDirectory();
|
||||
if (dir == null) return;
|
||||
|
||||
final T createdElement = buildDialog(project, dir).show(getErrorTitle(), new CreateFileFromTemplateDialog.FileCreator<T>() {
|
||||
public void checkBeforeCreate(@NotNull String name, @NotNull String templateName) {
|
||||
CreateTemplateInPackageAction.this.checkOrCreate(name, dir, templateName, true);
|
||||
}
|
||||
|
||||
public T createFile(@NotNull String name, @NotNull String templateName) {
|
||||
return CreateTemplateInPackageAction.this.checkOrCreate(name, dir, templateName, false);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public String getActionName(@NotNull String name, @NotNull String templateName) {
|
||||
return CreateTemplateInPackageAction.this.getActionName(dir, name, templateName);
|
||||
}
|
||||
});
|
||||
if (createdElement != null) {
|
||||
view.selectElement(createdElement);
|
||||
}
|
||||
@Override
|
||||
protected void checkBeforeCreate(String name, String templateName, PsiDirectory dir) {
|
||||
checkOrCreate(name, dir, templateName, true);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
protected abstract PsiElement getNavigationElement(@NotNull T createdElement);
|
||||
|
||||
@NotNull
|
||||
protected abstract CreateFileFromTemplateDialog.Builder buildDialog(Project project, PsiDirectory directory);
|
||||
|
||||
public void update(final AnActionEvent e) {
|
||||
final DataContext dataContext = e.getDataContext();
|
||||
final Presentation presentation = e.getPresentation();
|
||||
|
||||
final boolean enabled = isAvailable(dataContext);
|
||||
|
||||
presentation.setVisible(enabled);
|
||||
presentation.setEnabled(enabled);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isAvailable(final DataContext dataContext) {
|
||||
final Project project = PlatformDataKeys.PROJECT.getData(dataContext);
|
||||
final IdeView view = LangDataKeys.IDE_VIEW.getData(dataContext);
|
||||
@@ -150,7 +119,4 @@ public abstract class CreateTemplateInPackageAction<T extends PsiElement> extend
|
||||
|
||||
protected abstract T doCreate(final PsiDirectory dir, final String className, String templateName) throws IncorrectOperationException;
|
||||
|
||||
protected abstract String getActionName(PsiDirectory directory, String newName, String templateName);
|
||||
|
||||
protected abstract String getErrorTitle();
|
||||
}
|
||||
|
||||
@@ -25,9 +25,9 @@ import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.psi.util.TypeConversionUtil;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.HashMap;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
@@ -57,9 +57,9 @@ public final class CallerMethodsTreeStructure extends HierarchyTreeStructure {
|
||||
final PsiClassType originalType = JavaPsiFacade.getElementFactory(myProject).createType(originalClass);
|
||||
final Set<PsiMethod> methodsToFind = new HashSet<PsiMethod>();
|
||||
methodsToFind.add(method);
|
||||
methodsToFind.addAll(Arrays.asList(method.findDeepestSuperMethods()));
|
||||
ContainerUtil.addAll(methodsToFind, method.findDeepestSuperMethods());
|
||||
|
||||
final Map<PsiMember,CallHierarchyNodeDescriptor> methodToDescriptorMap = new HashMap<PsiMember, CallHierarchyNodeDescriptor>();
|
||||
final Map<PsiMember, CallHierarchyNodeDescriptor> methodToDescriptorMap = new HashMap<PsiMember, CallHierarchyNodeDescriptor>();
|
||||
for (final PsiMethod methodToFind : methodsToFind) {
|
||||
MethodReferencesSearch.search(methodToFind, searchScope, true).forEach(new Processor<PsiReference>() {
|
||||
public boolean process(final PsiReference reference) {
|
||||
@@ -73,7 +73,9 @@ public final class CallerMethodsTreeStructure extends HierarchyTreeStructure {
|
||||
}
|
||||
if (qualifier != null && !methodToFind.hasModifierProperty(PsiModifier.STATIC)) {
|
||||
final PsiType qualifierType = qualifier.getType();
|
||||
if (qualifierType instanceof PsiClassType && !TypeConversionUtil.isAssignable(qualifierType, originalType) && methodToFind != method) {
|
||||
if (qualifierType instanceof PsiClassType &&
|
||||
!TypeConversionUtil.isAssignable(qualifierType, originalType) &&
|
||||
methodToFind != method) {
|
||||
final PsiClass psiClass = ((PsiClassType)qualifierType).resolve();
|
||||
if (psiClass != null) {
|
||||
final PsiMethod callee = psiClass.findMethodBySignature(methodToFind, true);
|
||||
|
||||
@@ -17,8 +17,8 @@ package com.intellij.ide.projectView;
|
||||
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public interface PsiClassChildrenSource {
|
||||
@@ -30,19 +30,19 @@ public interface PsiClassChildrenSource {
|
||||
|
||||
PsiClassChildrenSource METHODS = new PsiClassChildrenSource() {
|
||||
public void addChildren(PsiClass psiClass, List<PsiElement> children) {
|
||||
children.addAll(Arrays.asList(psiClass.getMethods()));
|
||||
ContainerUtil.addAll(children, psiClass.getMethods());
|
||||
}
|
||||
};
|
||||
|
||||
PsiClassChildrenSource FIELDS = new PsiClassChildrenSource() {
|
||||
public void addChildren(PsiClass psiClass, List<PsiElement> children) {
|
||||
children.addAll(Arrays.asList(psiClass.getFields()));
|
||||
ContainerUtil.addAll(children, psiClass.getFields());
|
||||
}
|
||||
};
|
||||
|
||||
PsiClassChildrenSource CLASSES = new PsiClassChildrenSource() {
|
||||
public void addChildren(PsiClass psiClass, List<PsiElement> children) {
|
||||
children.addAll(Arrays.asList(psiClass.getInnerClasses()));
|
||||
ContainerUtil.addAll(children, psiClass.getInnerClasses());
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
+8
-12
@@ -23,7 +23,9 @@ import com.intellij.ide.util.treeView.AbstractTreeNode;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.module.ModuleManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.roots.*;
|
||||
import com.intellij.openapi.roots.ModuleRootManager;
|
||||
import com.intellij.openapi.roots.ProjectFileIndex;
|
||||
import com.intellij.openapi.roots.ProjectRootManager;
|
||||
import com.intellij.openapi.vfs.JarFileSystem;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.util.Icons;
|
||||
@@ -67,19 +69,13 @@ public class PackageViewLibrariesNode extends ProjectViewNode<LibrariesElement>{
|
||||
}
|
||||
|
||||
private static void addModuleLibraryRoots(ModuleRootManager moduleRootManager, List<VirtualFile> roots) {
|
||||
final OrderEntry[] orderEntries = moduleRootManager.getOrderEntries();
|
||||
for (final OrderEntry orderEntry : orderEntries) {
|
||||
if (!(orderEntry instanceof LibraryOrderEntry || orderEntry instanceof JdkOrderEntry)) {
|
||||
final VirtualFile[] files = moduleRootManager.orderEntries().withoutModuleSourceEntries().withoutDepModules().classes().getRoots();
|
||||
for (final VirtualFile file : files) {
|
||||
if (file.getFileSystem() instanceof JarFileSystem && file.getParent() != null) {
|
||||
// skip entries inside jars
|
||||
continue;
|
||||
}
|
||||
final VirtualFile[] files = orderEntry.getFiles(OrderRootType.CLASSES);
|
||||
for (final VirtualFile file : files) {
|
||||
if (file.getFileSystem() instanceof JarFileSystem && file.getParent() != null) {
|
||||
// skip entries inside jars
|
||||
continue;
|
||||
}
|
||||
roots.add(file);
|
||||
}
|
||||
roots.add(file);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+2
-1
@@ -28,6 +28,7 @@ import com.intellij.psi.JavaDirectoryService;
|
||||
import com.intellij.psi.PsiDirectory;
|
||||
import com.intellij.psi.PsiManager;
|
||||
import com.intellij.psi.PsiPackage;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
@@ -55,7 +56,7 @@ public class PackageViewProjectNode extends AbstractProjectNode {
|
||||
else {
|
||||
final List<VirtualFile> sourceRoots = new ArrayList<VirtualFile>();
|
||||
final ProjectRootManager projectRootManager = ProjectRootManager.getInstance(myProject);
|
||||
sourceRoots.addAll(Arrays.asList(projectRootManager.getContentSourceRoots()));
|
||||
ContainerUtil.addAll(sourceRoots, projectRootManager.getContentSourceRoots());
|
||||
|
||||
final PsiManager psiManager = PsiManager.getInstance(myProject);
|
||||
final List<AbstractTreeNode> children = new ArrayList<AbstractTreeNode>();
|
||||
|
||||
+5
-4
@@ -18,6 +18,7 @@ package com.intellij.ide.structureView.impl.java;
|
||||
import com.intellij.ide.structureView.StructureViewTreeElement;
|
||||
import com.intellij.ide.structureView.impl.AddAllMembersProcessor;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import gnu.trove.THashSet;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -41,10 +42,10 @@ public class JavaClassTreeElement extends JavaClassTreeElementBase<PsiClass> {
|
||||
|
||||
List<PsiElement> children = Arrays.asList(aClass.getChildren());
|
||||
Collection<PsiElement> ownChildren = new THashSet<PsiElement>();
|
||||
ownChildren.addAll(Arrays.asList(aClass.getFields()));
|
||||
ownChildren.addAll(Arrays.asList(aClass.getMethods()));
|
||||
ownChildren.addAll(Arrays.asList(aClass.getInnerClasses()));
|
||||
ownChildren.addAll(Arrays.asList(aClass.getInitializers()));
|
||||
ContainerUtil.addAll(ownChildren, aClass.getFields());
|
||||
ContainerUtil.addAll(ownChildren, aClass.getMethods());
|
||||
ContainerUtil.addAll(ownChildren, aClass.getInnerClasses());
|
||||
ContainerUtil.addAll(ownChildren, aClass.getInitializers());
|
||||
Collection<PsiElement> inherited = new LinkedHashSet<PsiElement>(children);
|
||||
|
||||
aClass.processDeclarations(new AddAllMembersProcessor(inherited, aClass), ResolveState.initial(), null, aClass);
|
||||
|
||||
@@ -31,6 +31,7 @@ import com.intellij.openapi.roots.ProjectRootManager;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.*;
|
||||
@@ -59,12 +60,12 @@ public class TodoJavaTreeHelper extends TodoTreeHelper {
|
||||
public void addPackagesToChildren(final ArrayList<AbstractTreeNode> children, final Module module, final TodoTreeBuilder builder) {
|
||||
final PsiManager psiManager = PsiManager.getInstance(getProject());
|
||||
final List<VirtualFile> sourceRoots = new ArrayList<VirtualFile>();
|
||||
if (module == null){
|
||||
if (module == null) {
|
||||
final ProjectRootManager projectRootManager = ProjectRootManager.getInstance(getProject());
|
||||
sourceRoots.addAll(Arrays.asList(projectRootManager.getContentSourceRoots()));
|
||||
ContainerUtil.addAll(sourceRoots, projectRootManager.getContentSourceRoots());
|
||||
} else {
|
||||
ModuleRootManager moduleRootManager = ModuleRootManager.getInstance(module);
|
||||
sourceRoots.addAll(Arrays.asList(moduleRootManager.getSourceRoots()));
|
||||
ContainerUtil.addAll(sourceRoots, moduleRootManager.getSourceRoots());
|
||||
}
|
||||
final Set<PsiPackage> topLevelPackages = new HashSet<PsiPackage>();
|
||||
for (final VirtualFile root : sourceRoots) {
|
||||
@@ -187,4 +188,4 @@ public class TodoJavaTreeHelper extends TodoTreeHelper {
|
||||
}
|
||||
return isEmpty;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+4
-3
@@ -26,6 +26,7 @@ import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.search.PsiShortNamesCache;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.HashSet;
|
||||
|
||||
import java.util.*;
|
||||
@@ -52,9 +53,9 @@ public class DefaultSymbolNavigationContributor implements ChooseByNameContribut
|
||||
PsiClass[] classes = cache.getClassesByName(name, scope);
|
||||
|
||||
List<PsiMember> result = new ArrayList<PsiMember>();
|
||||
result.addAll(Arrays.asList(methods));
|
||||
result.addAll(Arrays.asList(fields));
|
||||
result.addAll(Arrays.asList(classes));
|
||||
ContainerUtil.addAll(result, methods);
|
||||
ContainerUtil.addAll(result, fields);
|
||||
ContainerUtil.addAll(result, classes);
|
||||
filterOutNonOpenable(result);
|
||||
PsiMember[] array = result.toArray(new PsiMember[result.size()]);
|
||||
Arrays.sort(array, MyComparator.INSTANCE);
|
||||
|
||||
@@ -701,8 +701,7 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext
|
||||
}
|
||||
if (module != null) {
|
||||
String[] javadocPaths = ModuleRootManager.getInstance(module).getRootUrls(JavadocOrderRootType.getInstance());
|
||||
List<String> httpRoot = getHttpRoots(javadocPaths, relPath);
|
||||
if (httpRoot != null) return httpRoot;
|
||||
return getHttpRoots(javadocPaths, relPath);
|
||||
}
|
||||
|
||||
final List<OrderEntry> orderEntries = fileIndex.getOrderEntriesForFile(virtualFile);
|
||||
|
||||
+12
-5
@@ -28,11 +28,15 @@ import com.intellij.openapi.options.colors.AttributesDescriptor;
|
||||
import com.intellij.openapi.options.colors.ColorDescriptor;
|
||||
import com.intellij.openapi.options.colors.ColorSettingsPage;
|
||||
import com.intellij.pom.java.LanguageLevel;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class JavaColorSettingsPage implements ColorSettingsPage, InspectionColorSettingsPage {
|
||||
private static final AttributesDescriptor[] ourDescriptors = {
|
||||
@@ -124,10 +128,13 @@ public class JavaColorSettingsPage implements ColorSettingsPage, InspectionColor
|
||||
@NotNull
|
||||
public AttributesDescriptor[] getAttributeDescriptors() {
|
||||
List<AttributesDescriptor> descriptors = new ArrayList<AttributesDescriptor>();
|
||||
descriptors.addAll(Arrays.asList(ourDescriptors));
|
||||
descriptors.add(new AttributesDescriptor(OptionsBundle.message("options.java.color.descriptor.full.coverage"), CodeInsightColors.LINE_FULL_COVERAGE));
|
||||
descriptors.add(new AttributesDescriptor(OptionsBundle.message("options.java.color.descriptor.partial.coverage"), CodeInsightColors.LINE_PARTIAL_COVERAGE));
|
||||
descriptors.add(new AttributesDescriptor(OptionsBundle.message("options.java.color.descriptor.none.coverage"), CodeInsightColors.LINE_NONE_COVERAGE));
|
||||
ContainerUtil.addAll(descriptors, ourDescriptors);
|
||||
descriptors.add(
|
||||
new AttributesDescriptor(OptionsBundle.message("options.java.color.descriptor.full.coverage"), CodeInsightColors.LINE_FULL_COVERAGE));
|
||||
descriptors.add(new AttributesDescriptor(OptionsBundle.message("options.java.color.descriptor.partial.coverage"),
|
||||
CodeInsightColors.LINE_PARTIAL_COVERAGE));
|
||||
descriptors.add(
|
||||
new AttributesDescriptor(OptionsBundle.message("options.java.color.descriptor.none.coverage"), CodeInsightColors.LINE_NONE_COVERAGE));
|
||||
return descriptors.toArray(new AttributesDescriptor[descriptors.size()]);
|
||||
}
|
||||
|
||||
|
||||
@@ -121,6 +121,16 @@ public class JavaSdkImpl extends JavaSdk {
|
||||
return null;
|
||||
}
|
||||
|
||||
@NonNls public static final String MAC_HOME_PATH = "/Home";
|
||||
|
||||
@Override
|
||||
public String adjustSelectedSdkHome(String homePath) {
|
||||
if (SystemInfo.isMac) {
|
||||
return homePath + MAC_HOME_PATH;
|
||||
}
|
||||
return homePath;
|
||||
}
|
||||
|
||||
public boolean isValidSdkHome(String path) {
|
||||
return checkForJdk(new File(path));
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user