Merge branch 'master' of git.labs.intellij.net:idea/community

This commit is contained in:
irengrig
2010-07-14 14:06:17 +04:00
1311 changed files with 145161 additions and 7663 deletions
+1 -5
View File
@@ -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.
+9 -8
View File
@@ -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")
}
}
}
}
}
+1 -3
View File
@@ -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()]);
}
@@ -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);
}
}
}
}
@@ -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;
}
@@ -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) {
@@ -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;
@@ -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;
}
}
@@ -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 {
@@ -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>();
@@ -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;
}
});
@@ -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);
@@ -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();
}
@@ -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);
@@ -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";
@@ -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() {
@@ -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;
}
}
@@ -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);
@@ -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 "";
}
}
}
@@ -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));
@@ -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();
}
});
}
@@ -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
@@ -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;
}
@@ -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;
}
}
}
@@ -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();
}
@@ -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());
}
}
@@ -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));
}
}
@@ -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 "";
}
}
}
@@ -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);
@@ -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);
@@ -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;
@@ -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));
}
@@ -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() {
}
}
@@ -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) {
@@ -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));
}
@@ -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;
@@ -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() {
@@ -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;
}
}
@@ -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()]);
}
@@ -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;
}
@@ -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) {
@@ -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) {
@@ -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;
}
@@ -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));
@@ -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;
@@ -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();
@@ -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;
@@ -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() {
@@ -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 {
});
}
}
}
}
@@ -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;
@@ -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());
}
};
@@ -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);
}
}
@@ -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>();
@@ -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;
}
}
}
@@ -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);
@@ -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