mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Merge remote branch 'origin/master'
This commit is contained in:
@@ -412,6 +412,7 @@ public class CompileServerManager implements ApplicationComponent{
|
||||
// debugging
|
||||
cmdLine.addParameter("-XX:+HeapDumpOnOutOfMemoryError");
|
||||
//cmdLine.addParameter("-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5008");
|
||||
|
||||
if (Registry.is("compiler.server.use.memory.temp.cache")) {
|
||||
cmdLine.addParameter("-D"+Server.USE_MEMORY_TEMP_CACHE_OPTION + "=true");
|
||||
}
|
||||
|
||||
+7
-1
@@ -1270,7 +1270,13 @@ public class TranslatingCompilerFilesMonitor implements ApplicationComponent {
|
||||
private class MyVfsListener extends VirtualFileAdapter {
|
||||
public void propertyChanged(final VirtualFilePropertyEvent event) {
|
||||
if (VirtualFile.PROP_NAME.equals(event.getPropertyName())) {
|
||||
markDirtyIfSource(event.getFile(), false);
|
||||
final VirtualFile file = event.getFile();
|
||||
final VirtualFile parent = event.getParent();
|
||||
if (parent != null) {
|
||||
final String oldName = (String)event.getOldValue();
|
||||
CompileServerManager.getInstance().notifyFilesDeleted(Collections.singleton(parent.getPath() + "/" + oldName));
|
||||
}
|
||||
markDirtyIfSource(file, false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+6
-4
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.intellij.ide.structureView.impl.java;
|
||||
|
||||
import com.intellij.ide.structureView.impl.common.PsiTreeElementBase;
|
||||
import com.intellij.ide.util.FileStructureNodeProvider;
|
||||
import com.intellij.ide.util.treeView.smartTree.ActionPresentation;
|
||||
import com.intellij.ide.util.treeView.smartTree.ActionPresentationData;
|
||||
@@ -29,6 +30,7 @@ import com.intellij.psi.PsiAnonymousClass;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.util.PlatformIcons;
|
||||
import com.intellij.util.containers.hash.HashSet;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -44,14 +46,14 @@ public class JavaAnonymousClassesNodeProvider implements FileStructureNodeProvid
|
||||
|
||||
@Override
|
||||
public Collection<JavaAnonymousClassTreeElement> provideNodes(TreeElement node) {
|
||||
if (node instanceof JavaClassTreeElement) {
|
||||
final PsiClass cls = ((JavaClassTreeElement)node).getElement();
|
||||
if (node instanceof PsiMethodTreeElement || node instanceof PsiFieldTreeElement || node instanceof ClassInitializerTreeElement) {
|
||||
final PsiElement el = ((PsiTreeElementBase)node).getElement();
|
||||
for (AnonymousElementProvider provider : Extensions.getExtensions(AnonymousElementProvider.EP_NAME)) {
|
||||
final PsiElement[] elements = provider.getAnonymousElements(cls);
|
||||
final PsiElement[] elements = provider.getAnonymousElements(el);
|
||||
if (elements != null && elements.length > 0) {
|
||||
List<JavaAnonymousClassTreeElement> result = new ArrayList<JavaAnonymousClassTreeElement>(elements.length);
|
||||
for (PsiElement element : elements) {
|
||||
result.add(new JavaAnonymousClassTreeElement((PsiAnonymousClass)element, ((JavaClassTreeElement)node).getParents()));
|
||||
result.add(new JavaAnonymousClassTreeElement((PsiAnonymousClass)element, new HashSet<PsiClass>()));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -95,7 +95,8 @@ public class JavaFileTreeModel extends TextEditorBasedStructureViewModel impleme
|
||||
if (element instanceof PsiMethod) {
|
||||
PsiMethod method = (PsiMethod)element;
|
||||
PsiClass parent = method.getContainingClass();
|
||||
return parent != null && parent.getQualifiedName() != null;
|
||||
return parent != null
|
||||
&& (parent.getQualifiedName() != null || parent instanceof PsiAnonymousClass);
|
||||
}
|
||||
|
||||
if (element instanceof PsiField) {
|
||||
|
||||
@@ -27,18 +27,26 @@ import java.util.List;
|
||||
public class JavaAnonymousClassesProvider implements AnonymousElementProvider {
|
||||
@Override
|
||||
public PsiElement[] getAnonymousElements(PsiElement parent) {
|
||||
if (parent instanceof PsiClass) {
|
||||
if (suite(parent)) {
|
||||
if (parent instanceof PsiCompiledElement) {
|
||||
parent = parent.getNavigationElement();
|
||||
}
|
||||
if (parent instanceof PsiClass && !(parent instanceof PsiCompiledElement)) {
|
||||
if (suite(parent) && !(parent instanceof PsiCompiledElement)) {
|
||||
final List<PsiElement> elements = new ArrayList<PsiElement>();
|
||||
new JavaRecursiveElementWalkingVisitor() {
|
||||
final PsiElement element = parent;
|
||||
element.accept(new JavaRecursiveElementWalkingVisitor() {
|
||||
@Override
|
||||
public void visitAnonymousClass(PsiAnonymousClass aClass) {
|
||||
elements.add(aClass);
|
||||
}
|
||||
}.visitElement(parent);
|
||||
|
||||
@Override
|
||||
public void visitClass(PsiClass aClass) {
|
||||
if (aClass == element) {
|
||||
super.visitClass(aClass);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if (! elements.isEmpty()) {
|
||||
return elements.toArray(new PsiElement[elements.size()]);
|
||||
@@ -47,4 +55,11 @@ public class JavaAnonymousClassesProvider implements AnonymousElementProvider {
|
||||
}
|
||||
return PsiElement.EMPTY_ARRAY;
|
||||
}
|
||||
|
||||
private static boolean suite(PsiElement element) {
|
||||
return element instanceof PsiClass
|
||||
|| element instanceof PsiMethod
|
||||
|| element instanceof PsiField
|
||||
|| element instanceof PsiClassInitializer;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,6 +55,7 @@ message Message {
|
||||
ERROR = 1;
|
||||
WARNING = 2;
|
||||
INFO = 3;
|
||||
STD_OUT = 4;
|
||||
}
|
||||
required Kind kind = 1;
|
||||
optional string text = 2;
|
||||
@@ -79,13 +80,14 @@ message Message {
|
||||
optional string output_root = 3;
|
||||
optional string relative_path = 4;
|
||||
optional string class_name = 5;
|
||||
optional string source_uri = 6;
|
||||
optional string source_path = 6;
|
||||
optional bytes content = 7;
|
||||
}
|
||||
|
||||
required Type response_type = 1;
|
||||
optional CompileMessage compile_message = 2;
|
||||
optional OutputObject output_object = 3;
|
||||
optional bool completion_status = 4;
|
||||
}
|
||||
|
||||
required UUID session_id = 1;
|
||||
|
||||
+2
-2
@@ -1,9 +1,9 @@
|
||||
package org.jetbrains.jps.server;
|
||||
package org.jetbrains.jps.api;
|
||||
|
||||
/**
|
||||
* @author Eugene Zhuravlev
|
||||
* Date: 1/13/12
|
||||
*/
|
||||
public interface BuildCanceledStatus {
|
||||
public interface CanceledStatus {
|
||||
boolean isCanceled();
|
||||
}
|
||||
@@ -6,13 +6,13 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.ether.dependencyView.Mappings;
|
||||
import org.jetbrains.jps.*;
|
||||
import org.jetbrains.jps.api.CanceledStatus;
|
||||
import org.jetbrains.jps.incremental.messages.BuildMessage;
|
||||
import org.jetbrains.jps.incremental.messages.ProgressMessage;
|
||||
import org.jetbrains.jps.incremental.messages.UptoDateFilesSavedEvent;
|
||||
import org.jetbrains.jps.incremental.storage.BuildDataManager;
|
||||
import org.jetbrains.jps.incremental.storage.SourceToOutputMapping;
|
||||
import org.jetbrains.jps.incremental.storage.TimestampStorage;
|
||||
import org.jetbrains.jps.server.BuildCanceledStatus;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.*;
|
||||
@@ -39,7 +39,7 @@ public class CompileContext extends UserDataHolderBase implements MessageHandler
|
||||
private volatile boolean myErrorsFound = false;
|
||||
private final long myCompilationStartStamp;
|
||||
private final TimestampStorage myTsStorage;
|
||||
private final BuildCanceledStatus myCancelStatus;
|
||||
private final CanceledStatus myCancelStatus;
|
||||
private float myDone = -1.0f;
|
||||
|
||||
public CompileContext(CompileScope scope,
|
||||
@@ -47,7 +47,7 @@ public class CompileContext extends UserDataHolderBase implements MessageHandler
|
||||
boolean isProjectRebuild,
|
||||
ProjectChunks productionChunks,
|
||||
ProjectChunks testChunks,
|
||||
FSState fsState, final BuildDataManager dataManager, TimestampStorage tsStorage, MessageHandler delegateMessageHandler, final ModuleRootsIndex rootsIndex, BuildCanceledStatus cancelStatus) throws ProjectBuildException {
|
||||
FSState fsState, final BuildDataManager dataManager, TimestampStorage tsStorage, MessageHandler delegateMessageHandler, final ModuleRootsIndex rootsIndex, CanceledStatus cancelStatus) throws ProjectBuildException {
|
||||
myTsStorage = tsStorage;
|
||||
myCancelStatus = cancelStatus;
|
||||
myCompilationStartStamp = System.currentTimeMillis();
|
||||
@@ -146,6 +146,10 @@ public class CompileContext extends UserDataHolderBase implements MessageHandler
|
||||
return myCompilingTests;
|
||||
}
|
||||
|
||||
public CanceledStatus getCancelStatus() {
|
||||
return myCancelStatus;
|
||||
}
|
||||
|
||||
void setCompilingTests(boolean compilingTests) {
|
||||
myCompilingTests = compilingTests;
|
||||
}
|
||||
@@ -269,7 +273,7 @@ public class CompileContext extends UserDataHolderBase implements MessageHandler
|
||||
|
||||
public void setDone(float done) {
|
||||
myDone = done;
|
||||
processMessage(new ProgressMessage("", done));
|
||||
//processMessage(new ProgressMessage("", done));
|
||||
}
|
||||
|
||||
public static enum DirtyMarkScope{
|
||||
|
||||
@@ -3,6 +3,7 @@ package org.jetbrains.jps.incremental;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.util.io.PersistentEnumerator;
|
||||
import org.jetbrains.jps.*;
|
||||
import org.jetbrains.jps.api.CanceledStatus;
|
||||
import org.jetbrains.jps.incremental.messages.BuildMessage;
|
||||
import org.jetbrains.jps.incremental.messages.CompilerMessage;
|
||||
import org.jetbrains.jps.incremental.messages.ProgressMessage;
|
||||
@@ -10,7 +11,6 @@ import org.jetbrains.jps.incremental.storage.BuildDataManager;
|
||||
import org.jetbrains.jps.incremental.storage.SourceToFormMapping;
|
||||
import org.jetbrains.jps.incremental.storage.SourceToOutputMapping;
|
||||
import org.jetbrains.jps.incremental.storage.TimestampStorage;
|
||||
import org.jetbrains.jps.server.BuildCanceledStatus;
|
||||
import org.jetbrains.jps.server.ProjectDescriptor;
|
||||
|
||||
import java.io.File;
|
||||
@@ -28,7 +28,7 @@ public class IncProjectBuilder {
|
||||
|
||||
private final ProjectDescriptor myProjectDescriptor;
|
||||
private final BuilderRegistry myBuilderRegistry;
|
||||
private final BuildCanceledStatus myCancelStatus;
|
||||
private final CanceledStatus myCancelStatus;
|
||||
private ProjectChunks myProductionChunks;
|
||||
private ProjectChunks myTestChunks;
|
||||
private final List<MessageHandler> myMessageHandlers = new ArrayList<MessageHandler>();
|
||||
@@ -44,7 +44,7 @@ public class IncProjectBuilder {
|
||||
private final float myTotalModulesWork;
|
||||
private final int myTotalBuilderCount;
|
||||
|
||||
public IncProjectBuilder(ProjectDescriptor pd, BuilderRegistry builderRegistry, BuildCanceledStatus cs) {
|
||||
public IncProjectBuilder(ProjectDescriptor pd, BuilderRegistry builderRegistry, CanceledStatus cs) {
|
||||
myProjectDescriptor = pd;
|
||||
myBuilderRegistry = builderRegistry;
|
||||
myCancelStatus = cs;
|
||||
|
||||
@@ -300,7 +300,7 @@ public class JavaBuilder extends Builder{
|
||||
}
|
||||
|
||||
private JavacProxy createJavacProxy(CompileContext context) {
|
||||
return new EmbeddedJavacProxy();
|
||||
return new EmbeddedJavacProxy(context.getCancelStatus());
|
||||
}
|
||||
|
||||
private static ClassLoader createInstrumentationClassLoader(Collection<File> classpath, Collection<File> platformCp, Map<File, String> chunkSourcePath, OutputFilesSink outputSink)
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package org.jetbrains.jps.javac;
|
||||
|
||||
import org.jetbrains.jps.api.CanceledStatus;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
@@ -12,7 +14,13 @@ import java.util.Set;
|
||||
*/
|
||||
public class EmbeddedJavacProxy extends JavacProxy{
|
||||
|
||||
private final CanceledStatus myCanceledStatus;
|
||||
|
||||
public EmbeddedJavacProxy(CanceledStatus canceledStatus) {
|
||||
myCanceledStatus = canceledStatus;
|
||||
}
|
||||
|
||||
public boolean compile(List<String> options, Collection<File> files, Collection<File> classpath, Collection<File> platformCp, Collection<File> sourcePath, Map<File, Set<File>> outs, DiagnosticOutputConsumer diagnosticSink, OutputFileConsumer outputSink) {
|
||||
return JavacMain.compile(options, files, classpath, platformCp, sourcePath, outs, diagnosticSink, outputSink);
|
||||
return JavacMain.compile(options, files, classpath, platformCp, sourcePath, outs, diagnosticSink, outputSink, myCanceledStatus);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package org.jetbrains.jps.javac;
|
||||
|
||||
import org.jetbrains.jps.api.CanceledStatus;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
@@ -12,11 +14,17 @@ import java.util.Set;
|
||||
*/
|
||||
public class ExternalProcessJavacProxy extends JavacProxy{
|
||||
|
||||
private final CanceledStatus myCanceledStatus;
|
||||
|
||||
public ExternalProcessJavacProxy(CanceledStatus canceledStatus) {
|
||||
myCanceledStatus = canceledStatus;
|
||||
}
|
||||
|
||||
public boolean connect() {
|
||||
return false; // todo
|
||||
}
|
||||
|
||||
public boolean compile(List<String> options, Collection<File> files, Collection<File> classpath, Collection<File> platformCp, Collection<File> sourcePath, Map<File, Set<File>> outs, DiagnosticOutputConsumer diagnosticSink, OutputFileConsumer outputSink) {
|
||||
return JavacMain.compile(options, files, classpath, platformCp, sourcePath, outs, diagnosticSink, outputSink);
|
||||
return false; // todo
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,6 +23,8 @@ class JavacFileManager extends ForwardingJavaFileManager<StandardJavaFileManager
|
||||
private Map<File, Set<File>> myOutputsMap = Collections.emptyMap();
|
||||
|
||||
interface Context {
|
||||
boolean isCanceled();
|
||||
|
||||
StandardJavaFileManager getStandardFileManager();
|
||||
|
||||
void consumeOutputFile(@NotNull OutputFileObject obj);
|
||||
|
||||
@@ -2,6 +2,8 @@ package org.jetbrains.jps.javac;
|
||||
|
||||
import com.intellij.openapi.util.SystemInfo;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jps.api.CanceledStatus;
|
||||
import org.jetbrains.jps.server.ClasspathBootstrap;
|
||||
|
||||
import javax.tools.*;
|
||||
@@ -24,7 +26,7 @@ public class JavacMain {
|
||||
Collection<File> sourcePath,
|
||||
Map<File, Set<File>> outputDirToRoots,
|
||||
final DiagnosticOutputConsumer outConsumer,
|
||||
final OutputFileConsumer outputSink) {
|
||||
final OutputFileConsumer outputSink, @Nullable CanceledStatus canceledStatus) {
|
||||
final JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
|
||||
|
||||
for (File outputDir : outputDirToRoots.keySet()) {
|
||||
@@ -117,6 +119,10 @@ public class JavacMain {
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isCanceled() {
|
||||
return false; // todo
|
||||
}
|
||||
|
||||
public StandardJavaFileManager getStandardFileManager() {
|
||||
return myStdManager;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,131 @@
|
||||
package org.jetbrains.jps.javac;
|
||||
|
||||
import com.google.protobuf.ByteString;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
|
||||
import javax.tools.Diagnostic;
|
||||
import javax.tools.JavaFileObject;
|
||||
import java.io.File;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author Eugene Zhuravlev
|
||||
* Date: 1/23/12
|
||||
*/
|
||||
public class JavacProtoUtil {
|
||||
|
||||
public static JavacRemoteProto.Message.Response createOutputObjectResponse(OutputFileObject fileObject) {
|
||||
final JavacRemoteProto.Message.Response.OutputObject.Builder msgBuilder = JavacRemoteProto.Message.Response.OutputObject.newBuilder();
|
||||
|
||||
msgBuilder.setKind(convertKind(fileObject.getKind()));
|
||||
msgBuilder.setFilePath(FileUtil.toSystemIndependentName(fileObject.getFile().getPath()));
|
||||
final OutputFileObject.Content content = fileObject.getContent();
|
||||
if (content != null) {
|
||||
msgBuilder.setContent(ByteString.copyFrom(content.getBuffer(), content.getOffset(), content.getLength()));
|
||||
}
|
||||
final String className = fileObject.getClassName();
|
||||
if (className != null) {
|
||||
msgBuilder.setClassName(className);
|
||||
}
|
||||
final File outputRoot = fileObject.getOutputRoot();
|
||||
if (outputRoot != null) {
|
||||
msgBuilder.setOutputRoot(FileUtil.toSystemIndependentName(outputRoot.getPath()));
|
||||
}
|
||||
final String relativePath = fileObject.getRelativePath();
|
||||
if (relativePath != null) {
|
||||
msgBuilder.setRelativePath(relativePath);
|
||||
}
|
||||
final File sourceFile = fileObject.getSourceFile();
|
||||
if (sourceFile != null) {
|
||||
msgBuilder.setSourcePath(FileUtil.toSystemIndependentName(sourceFile.getPath()));
|
||||
}
|
||||
|
||||
final JavacRemoteProto.Message.Response.Builder builder = JavacRemoteProto.Message.Response.newBuilder();
|
||||
builder.setResponseType(JavacRemoteProto.Message.Response.Type.OUTPUT_OBJECT).setOutputObject(msgBuilder.build());
|
||||
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
public static JavacRemoteProto.Message.Response createStdOutputResponse(String text) {
|
||||
final JavacRemoteProto.Message.Response.CompileMessage.Builder msgBuilder = JavacRemoteProto.Message.Response.CompileMessage.newBuilder();
|
||||
msgBuilder.setKind(JavacRemoteProto.Message.Response.CompileMessage.Kind.STD_OUT);
|
||||
msgBuilder.setText(text);
|
||||
final JavacRemoteProto.Message.Response.Builder builder = JavacRemoteProto.Message.Response.newBuilder();
|
||||
builder.setResponseType(JavacRemoteProto.Message.Response.Type.BUILD_MESSAGE).setCompileMessage(msgBuilder.build());
|
||||
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
public static JavacRemoteProto.Message.Response createBuildMessageResponse(Diagnostic.Kind kind, String text, final String srcPath, final long line, final long column, final long beginOffset, final long endOffset) {
|
||||
final JavacRemoteProto.Message.Response.CompileMessage.Builder msgBuilder = JavacRemoteProto.Message.Response.CompileMessage.newBuilder();
|
||||
msgBuilder.setKind(convertKind(kind));
|
||||
msgBuilder.setText(text);
|
||||
msgBuilder.setSourceFilePath(srcPath);
|
||||
msgBuilder.setLine(line);
|
||||
msgBuilder.setColumn(column);
|
||||
msgBuilder.setProblemBeginOffset(beginOffset);
|
||||
msgBuilder.setProblemEndOffset(endOffset);
|
||||
|
||||
final JavacRemoteProto.Message.Response.Builder builder = JavacRemoteProto.Message.Response.newBuilder();
|
||||
builder.setResponseType(JavacRemoteProto.Message.Response.Type.BUILD_MESSAGE).setCompileMessage(msgBuilder.build());
|
||||
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
public static JavacRemoteProto.Message.Response createBuildCompletedResponse(boolean code) {
|
||||
final JavacRemoteProto.Message.Response.Builder builder = JavacRemoteProto.Message.Response.newBuilder();
|
||||
builder.setResponseType(JavacRemoteProto.Message.Response.Type.BUILD_COMPLETED).setCompletionStatus(code);
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
public static JavacRemoteProto.Message.Failure createFailure(String description) {
|
||||
final JavacRemoteProto.Message.Failure.Builder builder = JavacRemoteProto.Message.Failure.newBuilder();
|
||||
builder.setDescription(description);
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
public static JavacRemoteProto.Message toMessage(UUID requestId, JavacRemoteProto.Message.Request request) {
|
||||
return JavacRemoteProto.Message.newBuilder().setMessageType(JavacRemoteProto.Message.Type.REQUEST).setSessionId(toProtoUUID(requestId)).setRequest(request).build();
|
||||
}
|
||||
|
||||
public static JavacRemoteProto.Message toMessage(UUID requestId, JavacRemoteProto.Message.Response response) {
|
||||
return JavacRemoteProto.Message.newBuilder().setMessageType(JavacRemoteProto.Message.Type.RESPONSE).setSessionId(toProtoUUID(requestId)).setResponse(response).build();
|
||||
}
|
||||
|
||||
public static JavacRemoteProto.Message toMessage(UUID requestId, JavacRemoteProto.Message.Failure failure) {
|
||||
return JavacRemoteProto.Message.newBuilder().setMessageType(JavacRemoteProto.Message.Type.FAILURE).setSessionId(toProtoUUID(requestId)).setFailure(failure).build();
|
||||
}
|
||||
|
||||
public static JavacRemoteProto.Message.UUID toProtoUUID(UUID requestId) {
|
||||
return JavacRemoteProto.Message.UUID.newBuilder().setMostSigBits(requestId.getMostSignificantBits()).setLeastSigBits(requestId.getLeastSignificantBits()).build();
|
||||
}
|
||||
public static UUID fromProtoUUID(JavacRemoteProto.Message.UUID requestId) {
|
||||
return new UUID(requestId.getMostSigBits(), requestId.getLeastSigBits());
|
||||
}
|
||||
|
||||
private static JavacRemoteProto.Message.Response.OutputObject.Kind convertKind(JavaFileObject.Kind kind) {
|
||||
switch (kind) {
|
||||
case CLASS:
|
||||
return JavacRemoteProto.Message.Response.OutputObject.Kind.CLASS;
|
||||
case SOURCE:
|
||||
return JavacRemoteProto.Message.Response.OutputObject.Kind.SOURCE;
|
||||
case HTML:
|
||||
return JavacRemoteProto.Message.Response.OutputObject.Kind.HTML;
|
||||
default:
|
||||
return JavacRemoteProto.Message.Response.OutputObject.Kind.OTHER;
|
||||
}
|
||||
}
|
||||
private static JavacRemoteProto.Message.Response.CompileMessage.Kind convertKind(Diagnostic.Kind kind) {
|
||||
switch (kind) {
|
||||
case ERROR:
|
||||
return JavacRemoteProto.Message.Response.CompileMessage.Kind.ERROR;
|
||||
case MANDATORY_WARNING:
|
||||
case WARNING:
|
||||
case NOTE:
|
||||
return JavacRemoteProto.Message.Response.CompileMessage.Kind.WARNING;
|
||||
default:
|
||||
return JavacRemoteProto.Message.Response.CompileMessage.Kind.INFO;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1890,6 +1890,7 @@ public final class JavacRemoteProto {
|
||||
ERROR(0, 1),
|
||||
WARNING(1, 2),
|
||||
INFO(2, 3),
|
||||
STD_OUT(3, 4),
|
||||
;
|
||||
|
||||
|
||||
@@ -1900,6 +1901,7 @@ public final class JavacRemoteProto {
|
||||
case 1: return ERROR;
|
||||
case 2: return WARNING;
|
||||
case 3: return INFO;
|
||||
case 4: return STD_OUT;
|
||||
default: return null;
|
||||
}
|
||||
}
|
||||
@@ -2544,12 +2546,12 @@ public final class JavacRemoteProto {
|
||||
public boolean hasClassName() { return hasClassName; }
|
||||
public java.lang.String getClassName() { return className_; }
|
||||
|
||||
// optional string source_uri = 6;
|
||||
public static final int SOURCE_URI_FIELD_NUMBER = 6;
|
||||
private boolean hasSourceUri;
|
||||
private java.lang.String sourceUri_ = "";
|
||||
public boolean hasSourceUri() { return hasSourceUri; }
|
||||
public java.lang.String getSourceUri() { return sourceUri_; }
|
||||
// optional string source_path = 6;
|
||||
public static final int SOURCE_PATH_FIELD_NUMBER = 6;
|
||||
private boolean hasSourcePath;
|
||||
private java.lang.String sourcePath_ = "";
|
||||
public boolean hasSourcePath() { return hasSourcePath; }
|
||||
public java.lang.String getSourcePath() { return sourcePath_; }
|
||||
|
||||
// optional bytes content = 7;
|
||||
public static final int CONTENT_FIELD_NUMBER = 7;
|
||||
@@ -2585,8 +2587,8 @@ public final class JavacRemoteProto {
|
||||
if (hasClassName()) {
|
||||
output.writeString(5, getClassName());
|
||||
}
|
||||
if (hasSourceUri()) {
|
||||
output.writeString(6, getSourceUri());
|
||||
if (hasSourcePath()) {
|
||||
output.writeString(6, getSourcePath());
|
||||
}
|
||||
if (hasContent()) {
|
||||
output.writeBytes(7, getContent());
|
||||
@@ -2619,9 +2621,9 @@ public final class JavacRemoteProto {
|
||||
size += com.google.protobuf.CodedOutputStream
|
||||
.computeStringSize(5, getClassName());
|
||||
}
|
||||
if (hasSourceUri()) {
|
||||
if (hasSourcePath()) {
|
||||
size += com.google.protobuf.CodedOutputStream
|
||||
.computeStringSize(6, getSourceUri());
|
||||
.computeStringSize(6, getSourcePath());
|
||||
}
|
||||
if (hasContent()) {
|
||||
size += com.google.protobuf.CodedOutputStream
|
||||
@@ -2786,8 +2788,8 @@ public final class JavacRemoteProto {
|
||||
if (other.hasClassName()) {
|
||||
setClassName(other.getClassName());
|
||||
}
|
||||
if (other.hasSourceUri()) {
|
||||
setSourceUri(other.getSourceUri());
|
||||
if (other.hasSourcePath()) {
|
||||
setSourcePath(other.getSourcePath());
|
||||
}
|
||||
if (other.hasContent()) {
|
||||
setContent(other.getContent());
|
||||
@@ -2835,7 +2837,7 @@ public final class JavacRemoteProto {
|
||||
break;
|
||||
}
|
||||
case 50: {
|
||||
setSourceUri(input.readString());
|
||||
setSourcePath(input.readString());
|
||||
break;
|
||||
}
|
||||
case 58: {
|
||||
@@ -2952,24 +2954,24 @@ public final class JavacRemoteProto {
|
||||
return this;
|
||||
}
|
||||
|
||||
// optional string source_uri = 6;
|
||||
public boolean hasSourceUri() {
|
||||
return result.hasSourceUri();
|
||||
// optional string source_path = 6;
|
||||
public boolean hasSourcePath() {
|
||||
return result.hasSourcePath();
|
||||
}
|
||||
public java.lang.String getSourceUri() {
|
||||
return result.getSourceUri();
|
||||
public java.lang.String getSourcePath() {
|
||||
return result.getSourcePath();
|
||||
}
|
||||
public Builder setSourceUri(java.lang.String value) {
|
||||
public Builder setSourcePath(java.lang.String value) {
|
||||
if (value == null) {
|
||||
throw new NullPointerException();
|
||||
}
|
||||
result.hasSourceUri = true;
|
||||
result.sourceUri_ = value;
|
||||
result.hasSourcePath = true;
|
||||
result.sourcePath_ = value;
|
||||
return this;
|
||||
}
|
||||
public Builder clearSourceUri() {
|
||||
result.hasSourceUri = false;
|
||||
result.sourceUri_ = getDefaultInstance().getSourceUri();
|
||||
public Builder clearSourcePath() {
|
||||
result.hasSourcePath = false;
|
||||
result.sourcePath_ = getDefaultInstance().getSourcePath();
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -3027,6 +3029,13 @@ public final class JavacRemoteProto {
|
||||
public boolean hasOutputObject() { return hasOutputObject; }
|
||||
public org.jetbrains.jps.javac.JavacRemoteProto.Message.Response.OutputObject getOutputObject() { return outputObject_; }
|
||||
|
||||
// optional bool completion_status = 4;
|
||||
public static final int COMPLETION_STATUS_FIELD_NUMBER = 4;
|
||||
private boolean hasCompletionStatus;
|
||||
private boolean completionStatus_ = false;
|
||||
public boolean hasCompletionStatus() { return hasCompletionStatus; }
|
||||
public boolean getCompletionStatus() { return completionStatus_; }
|
||||
|
||||
private void initFields() {
|
||||
responseType_ = org.jetbrains.jps.javac.JavacRemoteProto.Message.Response.Type.BUILD_MESSAGE;
|
||||
compileMessage_ = org.jetbrains.jps.javac.JavacRemoteProto.Message.Response.CompileMessage.getDefaultInstance();
|
||||
@@ -3055,6 +3064,9 @@ public final class JavacRemoteProto {
|
||||
if (hasOutputObject()) {
|
||||
output.writeMessage(3, getOutputObject());
|
||||
}
|
||||
if (hasCompletionStatus()) {
|
||||
output.writeBool(4, getCompletionStatus());
|
||||
}
|
||||
}
|
||||
|
||||
private int memoizedSerializedSize = -1;
|
||||
@@ -3075,6 +3087,10 @@ public final class JavacRemoteProto {
|
||||
size += com.google.protobuf.CodedOutputStream
|
||||
.computeMessageSize(3, getOutputObject());
|
||||
}
|
||||
if (hasCompletionStatus()) {
|
||||
size += com.google.protobuf.CodedOutputStream
|
||||
.computeBoolSize(4, getCompletionStatus());
|
||||
}
|
||||
memoizedSerializedSize = size;
|
||||
return size;
|
||||
}
|
||||
@@ -3228,6 +3244,9 @@ public final class JavacRemoteProto {
|
||||
if (other.hasOutputObject()) {
|
||||
mergeOutputObject(other.getOutputObject());
|
||||
}
|
||||
if (other.hasCompletionStatus()) {
|
||||
setCompletionStatus(other.getCompletionStatus());
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -3272,6 +3291,10 @@ public final class JavacRemoteProto {
|
||||
setOutputObject(subBuilder.buildPartial());
|
||||
break;
|
||||
}
|
||||
case 32: {
|
||||
setCompletionStatus(input.readBool());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3372,6 +3395,24 @@ public final class JavacRemoteProto {
|
||||
return this;
|
||||
}
|
||||
|
||||
// optional bool completion_status = 4;
|
||||
public boolean hasCompletionStatus() {
|
||||
return result.hasCompletionStatus();
|
||||
}
|
||||
public boolean getCompletionStatus() {
|
||||
return result.getCompletionStatus();
|
||||
}
|
||||
public Builder setCompletionStatus(boolean value) {
|
||||
result.hasCompletionStatus = true;
|
||||
result.completionStatus_ = value;
|
||||
return this;
|
||||
}
|
||||
public Builder clearCompletionStatus() {
|
||||
result.hasCompletionStatus = false;
|
||||
result.completionStatus_ = false;
|
||||
return this;
|
||||
}
|
||||
|
||||
// @@protoc_insertion_point(builder_scope:org.jetbrains.javac.Message.Response)
|
||||
}
|
||||
|
||||
|
||||
@@ -10,8 +10,13 @@ import org.jboss.netty.handler.codec.protobuf.ProtobufDecoder;
|
||||
import org.jboss.netty.handler.codec.protobuf.ProtobufEncoder;
|
||||
import org.jboss.netty.handler.codec.protobuf.ProtobufVarint32FrameDecoder;
|
||||
import org.jboss.netty.handler.codec.protobuf.ProtobufVarint32LengthFieldPrepender;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.tools.Diagnostic;
|
||||
import javax.tools.JavaFileObject;
|
||||
import java.io.File;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
@@ -97,10 +102,99 @@ public class JavacServer {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static JavacRemoteProto.Message compile(final ChannelHandlerContext ctx, final UUID sessionId, List<String> options, Collection<File> files, Collection<File> classpath, Collection<File> platformCp, Collection<File> sourcePath, Map<File, Set<File>> outs) {
|
||||
final DiagnosticOutputConsumer diagnostic = new DiagnosticOutputConsumer() {
|
||||
public void outputLineAvailable(String line) {
|
||||
Channels.write(ctx.getChannel(), JavacProtoUtil.toMessage(sessionId, JavacProtoUtil.createStdOutputResponse(line)));
|
||||
}
|
||||
|
||||
public void report(Diagnostic<? extends JavaFileObject> diagnostic) {
|
||||
final Diagnostic.Kind kind = diagnostic.getKind();
|
||||
final JavaFileObject source = diagnostic.getSource();
|
||||
final String srcPath = source != null? source.toUri().getPath() : null;
|
||||
final JavacRemoteProto.Message.Response response = JavacProtoUtil.createBuildMessageResponse(
|
||||
kind, diagnostic.getMessage(Locale.US), srcPath, diagnostic.getLineNumber(), diagnostic.getColumnNumber(), diagnostic.getStartPosition(), diagnostic.getEndPosition()
|
||||
);
|
||||
Channels.write(ctx.getChannel(), JavacProtoUtil.toMessage(sessionId, response));
|
||||
}
|
||||
};
|
||||
|
||||
final OutputFileConsumer outputSink = new OutputFileConsumer() {
|
||||
public void save(@NotNull OutputFileObject fileObject) {
|
||||
Channels.write(ctx.getChannel(), JavacProtoUtil.toMessage(sessionId, JavacProtoUtil.createOutputObjectResponse(fileObject)));
|
||||
}
|
||||
};
|
||||
|
||||
final boolean rc = JavacMain.compile(options, files, classpath, platformCp, sourcePath, outs, diagnostic, outputSink, null/*todo*/);
|
||||
|
||||
return JavacProtoUtil.toMessage(sessionId, JavacProtoUtil.createBuildCompletedResponse(rc));
|
||||
}
|
||||
|
||||
|
||||
public static void cancelBuild() {
|
||||
// todo
|
||||
}
|
||||
|
||||
private static List<File> toFiles(List<String> paths) {
|
||||
final List<File> files = new ArrayList<File>(paths.size());
|
||||
for (String path : paths) {
|
||||
files.add(new File(path));
|
||||
}
|
||||
return files;
|
||||
}
|
||||
|
||||
private static class CompilationRequestsHandler extends SimpleChannelHandler {
|
||||
|
||||
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception {
|
||||
// todo
|
||||
final JavacRemoteProto.Message msg = (JavacRemoteProto.Message)e.getMessage();
|
||||
final UUID sessionId = JavacProtoUtil.fromProtoUUID(msg.getSessionId());
|
||||
final JavacRemoteProto.Message.Type messageType = msg.getMessageType();
|
||||
|
||||
JavacRemoteProto.Message reply = null;
|
||||
|
||||
try {
|
||||
if (messageType == JavacRemoteProto.Message.Type.REQUEST) {
|
||||
final JavacRemoteProto.Message.Request request = msg.getRequest();
|
||||
final JavacRemoteProto.Message.Request.Type requestType = request.getRequestType();
|
||||
if (requestType == JavacRemoteProto.Message.Request.Type.COMPILE) {
|
||||
final List<String> options = request.getOptionList();
|
||||
final List<File> files = toFiles(request.getFileList());
|
||||
final List<File> cp = toFiles(request.getClasspathList());
|
||||
final List<File> platformCp = toFiles(request.getPlatformClasspathList());
|
||||
final List<File> srcPath = toFiles(request.getSourcepathList());
|
||||
|
||||
final Map<File, Set<File>> outs = new HashMap<File, Set<File>>();
|
||||
for (JavacRemoteProto.Message.Request.OutputGroup outputGroup : request.getOutputList()) {
|
||||
final Set<File> srcRoots = new HashSet<File>();
|
||||
for (String root : outputGroup.getSourceRootsList()) {
|
||||
srcRoots.add(new File(root));
|
||||
}
|
||||
outs.put(new File(outputGroup.getOutputRoot()), srcRoots);
|
||||
}
|
||||
|
||||
reply = compile(ctx, sessionId, options, files, cp, platformCp, srcPath, outs);
|
||||
}
|
||||
else if (requestType == JavacRemoteProto.Message.Request.Type.CANCEL){
|
||||
cancelBuild();
|
||||
}
|
||||
else if (requestType == JavacRemoteProto.Message.Request.Type.SHUTDOWN){
|
||||
cancelBuild();
|
||||
System.exit(0);
|
||||
}
|
||||
else {
|
||||
reply = JavacProtoUtil.toMessage(sessionId, JavacProtoUtil.createFailure("Unsupported request type: " + requestType.name()));
|
||||
}
|
||||
}
|
||||
else {
|
||||
reply = JavacProtoUtil.toMessage(sessionId, JavacProtoUtil.createFailure("Unsupported message: " + messageType.name()));
|
||||
}
|
||||
}
|
||||
finally {
|
||||
if (reply != null) {
|
||||
Channels.write(ctx.getChannel(), reply);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) throws Exception {
|
||||
@@ -114,4 +208,4 @@ public class JavacServer {
|
||||
super.channelOpen(ctx, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -50,16 +50,8 @@ public class JavacServerClient extends SimpleProtobufClient<JavacServerResponseH
|
||||
final JavacRemoteProto.Message.Request.Builder requestBuilder = JavacRemoteProto.Message.Request.newBuilder();
|
||||
requestBuilder.setRequestType(type);
|
||||
final JavacRemoteProto.Message.Request request = requestBuilder.build();
|
||||
final JavacRemoteProto.Message msg = toMessage(requestId, request);
|
||||
final JavacRemoteProto.Message msg = JavacProtoUtil.toMessage(requestId, request);
|
||||
return sendMessage(requestId, msg, responseHandler, cancelAction);
|
||||
}
|
||||
|
||||
private static JavacRemoteProto.Message toMessage(UUID requestId, JavacRemoteProto.Message.Request request) {
|
||||
return JavacRemoteProto.Message.newBuilder().setMessageType(JavacRemoteProto.Message.Type.REQUEST).setSessionId(toProtoUUID(requestId)).setRequest(request).build();
|
||||
}
|
||||
|
||||
private static JavacRemoteProto.Message.UUID toProtoUUID(UUID requestId) {
|
||||
return JavacRemoteProto.Message.UUID.newBuilder().setMostSigBits(requestId.getMostSignificantBits()).setLeastSigBits(requestId.getLeastSignificantBits()).build();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -176,7 +176,7 @@ class ServerMessageHandler extends SimpleChannelHandler {
|
||||
ctx.sendUpstream(e);
|
||||
}
|
||||
|
||||
private class CompilationTask implements Runnable, BuildCanceledStatus {
|
||||
private class CompilationTask implements Runnable, CanceledStatus {
|
||||
|
||||
private final UUID mySessionId;
|
||||
private final ChannelHandlerContext myChannelContext;
|
||||
|
||||
@@ -8,10 +8,7 @@ import org.jetbrains.jps.Library;
|
||||
import org.jetbrains.jps.Module;
|
||||
import org.jetbrains.jps.Project;
|
||||
import org.jetbrains.jps.Sdk;
|
||||
import org.jetbrains.jps.api.BuildParameters;
|
||||
import org.jetbrains.jps.api.BuildType;
|
||||
import org.jetbrains.jps.api.GlobalLibrary;
|
||||
import org.jetbrains.jps.api.SdkLibrary;
|
||||
import org.jetbrains.jps.api.*;
|
||||
import org.jetbrains.jps.idea.IdeaProjectLoader;
|
||||
import org.jetbrains.jps.incremental.*;
|
||||
import org.jetbrains.jps.incremental.messages.BuildMessage;
|
||||
@@ -116,7 +113,7 @@ class ServerState {
|
||||
}
|
||||
}
|
||||
|
||||
public void startBuild(String projectPath, Set<String> modules, Collection<String> paths, final BuildParameters params, final MessageHandler msgHandler, BuildCanceledStatus cs) throws Throwable{
|
||||
public void startBuild(String projectPath, Set<String> modules, Collection<String> paths, final BuildParameters params, final MessageHandler msgHandler, CanceledStatus cs) throws Throwable{
|
||||
final String projectName = getProjectName(projectPath);
|
||||
BuildType buildType = params.buildType;
|
||||
|
||||
|
||||
@@ -758,7 +758,7 @@ public class Mappings {
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean differentiate(final Mappings delta,
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="CompilerConfiguration">
|
||||
<option name="DEFAULT_COMPILER" value="Javac" />
|
||||
<resourceExtensions />
|
||||
<wildcardResourcePatterns>
|
||||
<entry name="?*.properties" />
|
||||
<entry name="?*.xml" />
|
||||
<entry name="?*.gif" />
|
||||
<entry name="?*.png" />
|
||||
<entry name="?*.jpeg" />
|
||||
<entry name="?*.jpg" />
|
||||
<entry name="?*.html" />
|
||||
<entry name="?*.dtd" />
|
||||
<entry name="?*.tld" />
|
||||
<entry name="?*.ftl" />
|
||||
</wildcardResourcePatterns>
|
||||
<annotationProcessing enabled="false" useClasspath="true" />
|
||||
</component>
|
||||
</project>
|
||||
|
||||
Generated
+5
@@ -0,0 +1,5 @@
|
||||
<component name="CopyrightManager">
|
||||
<settings default="">
|
||||
<module2copyright />
|
||||
</settings>
|
||||
</component>
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" />
|
||||
</project>
|
||||
|
||||
@@ -0,0 +1,87 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="JavadocGenerationManager">
|
||||
<option name="OUTPUT_DIRECTORY" />
|
||||
<option name="OPTION_SCOPE" value="protected" />
|
||||
<option name="OPTION_HIERARCHY" value="true" />
|
||||
<option name="OPTION_NAVIGATOR" value="true" />
|
||||
<option name="OPTION_INDEX" value="true" />
|
||||
<option name="OPTION_SEPARATE_INDEX" value="true" />
|
||||
<option name="OPTION_DOCUMENT_TAG_USE" value="false" />
|
||||
<option name="OPTION_DOCUMENT_TAG_AUTHOR" value="false" />
|
||||
<option name="OPTION_DOCUMENT_TAG_VERSION" value="false" />
|
||||
<option name="OPTION_DOCUMENT_TAG_DEPRECATED" value="true" />
|
||||
<option name="OPTION_DEPRECATED_LIST" value="true" />
|
||||
<option name="OTHER_OPTIONS" value="" />
|
||||
<option name="HEAP_SIZE" />
|
||||
<option name="LOCALE" />
|
||||
<option name="OPEN_IN_BROWSER" value="true" />
|
||||
</component>
|
||||
<component name="ModuleEditorState">
|
||||
<option name="LAST_EDITED_MODULE_NAME" />
|
||||
<option name="LAST_EDITED_TAB_NAME" />
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_5" assert-keyword="true" jdk-15="true" project-jdk-name="IDEA jdk" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/out" />
|
||||
</component>
|
||||
<component name="SvnConfiguration" maxAnnotateRevisions="500">
|
||||
<option name="USER" value="" />
|
||||
<option name="PASSWORD" value="" />
|
||||
<option name="mySSHConnectionTimeout" value="30000" />
|
||||
<option name="mySSHReadTimeout" value="30000" />
|
||||
<option name="LAST_MERGED_REVISION" />
|
||||
<option name="MERGE_DRY_RUN" value="false" />
|
||||
<option name="MERGE_DIFF_USE_ANCESTRY" value="true" />
|
||||
<option name="UPDATE_LOCK_ON_DEMAND" value="false" />
|
||||
<option name="IGNORE_SPACES_IN_MERGE" value="false" />
|
||||
<option name="DETECT_NESTED_COPIES" value="true" />
|
||||
<option name="CHECK_NESTED_FOR_QUICK_MERGE" value="false" />
|
||||
<option name="IGNORE_SPACES_IN_ANNOTATE" value="true" />
|
||||
<option name="SHOW_MERGE_SOURCES_IN_ANNOTATE" value="true" />
|
||||
<option name="FORCE_UPDATE" value="false" />
|
||||
<myIsUseDefaultProxy>false</myIsUseDefaultProxy>
|
||||
</component>
|
||||
<component name="masterDetails">
|
||||
<states>
|
||||
<state key="ArtifactsStructureConfigurable.UI">
|
||||
<settings>
|
||||
<artifact-editor />
|
||||
<splitter-proportions />
|
||||
</settings>
|
||||
</state>
|
||||
<state key="FacetStructureConfigurable.UI">
|
||||
<settings>
|
||||
<splitter-proportions />
|
||||
</settings>
|
||||
</state>
|
||||
<state key="GlobalLibrariesConfigurable.UI">
|
||||
<settings>
|
||||
<splitter-proportions />
|
||||
</settings>
|
||||
</state>
|
||||
<state key="ModuleStructureConfigurable.UI">
|
||||
<settings>
|
||||
<splitter-proportions />
|
||||
</settings>
|
||||
</state>
|
||||
<state key="ProjectJDKs.UI">
|
||||
<settings>
|
||||
<last-edited>IDEA jdk</last-edited>
|
||||
<splitter-proportions>
|
||||
<option name="proportions">
|
||||
<list>
|
||||
<option value="0.20000002" />
|
||||
</list>
|
||||
</option>
|
||||
</splitter-proportions>
|
||||
</settings>
|
||||
</state>
|
||||
<state key="ProjectLibrariesConfigurable.UI">
|
||||
<settings>
|
||||
<splitter-proportions />
|
||||
</settings>
|
||||
</state>
|
||||
</states>
|
||||
</component>
|
||||
</project>
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/NonIncremental2.iml" filepath="$PROJECT_DIR$/NonIncremental2.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
<component name="DependencyValidationManager">
|
||||
<state>
|
||||
<option name="SKIP_IMPORT_STATEMENTS" value="false" />
|
||||
</state>
|
||||
</component>
|
||||
+125
@@ -0,0 +1,125 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Palette2">
|
||||
<group name="Swing">
|
||||
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
|
||||
</item>
|
||||
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
|
||||
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
|
||||
<initial-values>
|
||||
<property name="text" value="Button" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="RadioButton" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="CheckBox" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="Label" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
||||
<preferred-size width="200" height="200" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
||||
<preferred-size width="200" height="200" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
|
||||
<preferred-size width="-1" height="20" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
|
||||
</item>
|
||||
</group>
|
||||
</component>
|
||||
</project>
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="" vcs="" />
|
||||
</component>
|
||||
</project>
|
||||
|
||||
+285
@@ -0,0 +1,285 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="05996828-fff6-46c5-943e-6d57c3378e16" name="Default" comment="" />
|
||||
<ignored path="nonIncremental2.iws" />
|
||||
<ignored path=".idea/workspace.xml" />
|
||||
<option name="TRACKING_ENABLED" value="true" />
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||
</component>
|
||||
<component name="ChangesViewManager" flattened_view="true" show_ignored="false" />
|
||||
<component name="CreatePatchCommitExecutor">
|
||||
<option name="PATCH_PATH" value="" />
|
||||
</component>
|
||||
<component name="DaemonCodeAnalyzer">
|
||||
<disable_hints />
|
||||
</component>
|
||||
<component name="DebuggerManager">
|
||||
<breakpoint_any>
|
||||
<breakpoint>
|
||||
<option name="NOTIFY_CAUGHT" value="true" />
|
||||
<option name="NOTIFY_UNCAUGHT" value="true" />
|
||||
<option name="ENABLED" value="false" />
|
||||
<option name="LOG_ENABLED" value="false" />
|
||||
<option name="LOG_EXPRESSION_ENABLED" value="false" />
|
||||
<option name="SUSPEND_POLICY" value="SuspendAll" />
|
||||
<option name="COUNT_FILTER_ENABLED" value="false" />
|
||||
<option name="COUNT_FILTER" value="0" />
|
||||
<option name="CONDITION_ENABLED" value="false" />
|
||||
<option name="CLASS_FILTERS_ENABLED" value="false" />
|
||||
<option name="INSTANCE_FILTERS_ENABLED" value="false" />
|
||||
<option name="CONDITION" value="" />
|
||||
<option name="LOG_MESSAGE" value="" />
|
||||
</breakpoint>
|
||||
<breakpoint>
|
||||
<option name="NOTIFY_CAUGHT" value="true" />
|
||||
<option name="NOTIFY_UNCAUGHT" value="true" />
|
||||
<option name="ENABLED" value="false" />
|
||||
<option name="LOG_ENABLED" value="false" />
|
||||
<option name="LOG_EXPRESSION_ENABLED" value="false" />
|
||||
<option name="SUSPEND_POLICY" value="SuspendAll" />
|
||||
<option name="COUNT_FILTER_ENABLED" value="false" />
|
||||
<option name="COUNT_FILTER" value="0" />
|
||||
<option name="CONDITION_ENABLED" value="false" />
|
||||
<option name="CLASS_FILTERS_ENABLED" value="false" />
|
||||
<option name="INSTANCE_FILTERS_ENABLED" value="false" />
|
||||
<option name="CONDITION" value="" />
|
||||
<option name="LOG_MESSAGE" value="" />
|
||||
</breakpoint>
|
||||
</breakpoint_any>
|
||||
<breakpoint_rules />
|
||||
<ui_properties />
|
||||
</component>
|
||||
<component name="FavoritesManager">
|
||||
<favorites_list name="nonIncremental2" />
|
||||
</component>
|
||||
<component name="Git.Settings">
|
||||
<option name="CHECKOUT_INCLUDE_TAGS" value="false" />
|
||||
<option name="UPDATE_CHANGES_POLICY" value="STASH" />
|
||||
<option name="LINE_SEPARATORS_CONVERSION" value="ASK" />
|
||||
</component>
|
||||
<component name="MavenRunner">
|
||||
<option name="jreName" value="#JAVA_INTERNAL" />
|
||||
</component>
|
||||
<component name="ProjectFrameBounds">
|
||||
<option name="y" value="25" />
|
||||
<option name="width" value="1282" />
|
||||
<option name="height" value="755" />
|
||||
</component>
|
||||
<component name="ProjectLevelVcsManager" settingsEditedManually="false">
|
||||
<OptionsSetting value="true" id="Add" />
|
||||
<OptionsSetting value="true" id="Remove" />
|
||||
<OptionsSetting value="true" id="Checkout" />
|
||||
<OptionsSetting value="true" id="Update" />
|
||||
<OptionsSetting value="true" id="Status" />
|
||||
<OptionsSetting value="true" id="Edit" />
|
||||
<ConfirmationsSetting value="0" id="Add" />
|
||||
<ConfirmationsSetting value="0" id="Remove" />
|
||||
</component>
|
||||
<component name="ProjectReloadState">
|
||||
<option name="STATE" value="0" />
|
||||
</component>
|
||||
<component name="ProjectView">
|
||||
<navigator currentView="ProjectPane" proportions="" version="1" splitterProportion="0.5">
|
||||
<flattenPackages />
|
||||
<showMembers />
|
||||
<showModules />
|
||||
<showLibraryContents />
|
||||
<hideEmptyPackages />
|
||||
<abbreviatePackageNames />
|
||||
<autoscrollToSource />
|
||||
<autoscrollFromSource />
|
||||
<sortByType />
|
||||
</navigator>
|
||||
<panes>
|
||||
<pane id="Scope" />
|
||||
<pane id="PackagesPane" />
|
||||
<pane id="ProjectPane">
|
||||
<subPane>
|
||||
<PATH>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="nonIncremental2" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
||||
</PATH_ELEMENT>
|
||||
</PATH>
|
||||
</subPane>
|
||||
</pane>
|
||||
</panes>
|
||||
</component>
|
||||
<component name="PropertiesComponent">
|
||||
<property name="GoToFile.includeJavaFiles" value="false" />
|
||||
<property name="GoToClass.toSaveIncludeLibraries" value="false" />
|
||||
<property name="MemberChooser.sorted" value="false" />
|
||||
<property name="MemberChooser.showClasses" value="true" />
|
||||
<property name="GoToClass.includeLibraries" value="false" />
|
||||
<property name="MemberChooser.copyJavadoc" value="false" />
|
||||
</component>
|
||||
<component name="RunManager">
|
||||
<configuration default="true" type="Remote" factoryName="Remote">
|
||||
<option name="USE_SOCKET_TRANSPORT" value="true" />
|
||||
<option name="SERVER_MODE" value="false" />
|
||||
<option name="SHMEM_ADDRESS" value="javadebug" />
|
||||
<option name="HOST" value="localhost" />
|
||||
<option name="PORT" value="5005" />
|
||||
<method>
|
||||
<option name="AntTarget" enabled="false" />
|
||||
<option name="BuildArtifacts" enabled="false" />
|
||||
<option name="Maven.BeforeRunTask" enabled="false" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration default="true" type="Applet" factoryName="Applet">
|
||||
<module name="" />
|
||||
<option name="MAIN_CLASS_NAME" />
|
||||
<option name="HTML_FILE_NAME" />
|
||||
<option name="HTML_USED" value="false" />
|
||||
<option name="WIDTH" value="400" />
|
||||
<option name="HEIGHT" value="300" />
|
||||
<option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
|
||||
<option name="VM_PARAMETERS" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" />
|
||||
<method>
|
||||
<option name="AntTarget" enabled="false" />
|
||||
<option name="BuildArtifacts" enabled="false" />
|
||||
<option name="Make" enabled="true" />
|
||||
<option name="Maven.BeforeRunTask" enabled="false" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration default="true" type="Application" factoryName="Application">
|
||||
<option name="MAIN_CLASS_NAME" />
|
||||
<option name="VM_PARAMETERS" />
|
||||
<option name="PROGRAM_PARAMETERS" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" />
|
||||
<option name="ENABLE_SWING_INSPECTOR" value="false" />
|
||||
<option name="ENV_VARIABLES" />
|
||||
<option name="PASS_PARENT_ENVS" value="true" />
|
||||
<module name="" />
|
||||
<envs />
|
||||
<method>
|
||||
<option name="AntTarget" enabled="false" />
|
||||
<option name="BuildArtifacts" enabled="false" />
|
||||
<option name="Make" enabled="true" />
|
||||
<option name="Maven.BeforeRunTask" enabled="false" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration default="true" type="JUnit" factoryName="JUnit">
|
||||
<module name="" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" />
|
||||
<option name="PACKAGE_NAME" />
|
||||
<option name="MAIN_CLASS_NAME" />
|
||||
<option name="METHOD_NAME" />
|
||||
<option name="TEST_OBJECT" value="class" />
|
||||
<option name="VM_PARAMETERS" />
|
||||
<option name="PARAMETERS" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||
<option name="ENV_VARIABLES" />
|
||||
<option name="PASS_PARENT_ENVS" value="true" />
|
||||
<option name="TEST_SEARCH_SCOPE">
|
||||
<value defaultName="moduleWithDependencies" />
|
||||
</option>
|
||||
<envs />
|
||||
<patterns />
|
||||
<method>
|
||||
<option name="AntTarget" enabled="false" />
|
||||
<option name="BuildArtifacts" enabled="false" />
|
||||
<option name="Make" enabled="true" />
|
||||
<option name="Maven.BeforeRunTask" enabled="false" />
|
||||
</method>
|
||||
</configuration>
|
||||
<list size="0" />
|
||||
<configuration name="<template>" type="WebApp" default="true" selected="false">
|
||||
<Host>localhost</Host>
|
||||
<Port>5050</Port>
|
||||
</configuration>
|
||||
</component>
|
||||
<component name="ShelveChangesManager" show_recycled="false" />
|
||||
<component name="TaskManager">
|
||||
<task active="true" id="Default" summary="Default task">
|
||||
<created>1327316965641</created>
|
||||
<updated>1327316965641</updated>
|
||||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
<component name="ToolWindowManager">
|
||||
<frame x="0" y="25" width="1282" height="755" extended-state="0" />
|
||||
<editor active="false" />
|
||||
<layout>
|
||||
<window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
|
||||
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
|
||||
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="true" content_ui="tabs" />
|
||||
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.24959481" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
|
||||
</layout>
|
||||
</component>
|
||||
<component name="VcsContentAnnotationSettings">
|
||||
<option name="myLimit" value="2678400000" />
|
||||
</component>
|
||||
<component name="VcsManagerConfiguration">
|
||||
<option name="OFFER_MOVE_TO_ANOTHER_CHANGELIST_ON_PARTIAL_COMMIT" value="true" />
|
||||
<option name="CHECK_CODE_SMELLS_BEFORE_PROJECT_COMMIT" value="true" />
|
||||
<option name="CHECK_NEW_TODO" value="true" />
|
||||
<option name="myTodoPanelSettings">
|
||||
<value>
|
||||
<are-packages-shown value="false" />
|
||||
<are-modules-shown value="false" />
|
||||
<flatten-packages value="false" />
|
||||
<is-autoscroll-to-source value="false" />
|
||||
</value>
|
||||
</option>
|
||||
<option name="PERFORM_UPDATE_IN_BACKGROUND" value="true" />
|
||||
<option name="PERFORM_COMMIT_IN_BACKGROUND" value="true" />
|
||||
<option name="PERFORM_EDIT_IN_BACKGROUND" value="true" />
|
||||
<option name="PERFORM_CHECKOUT_IN_BACKGROUND" value="true" />
|
||||
<option name="PERFORM_ADD_REMOVE_IN_BACKGROUND" value="true" />
|
||||
<option name="PERFORM_ROLLBACK_IN_BACKGROUND" value="false" />
|
||||
<option name="CHECK_LOCALLY_CHANGED_CONFLICTS_IN_BACKGROUND" value="false" />
|
||||
<option name="ENABLE_BACKGROUND_PROCESSES" value="false" />
|
||||
<option name="CHANGED_ON_SERVER_INTERVAL" value="60" />
|
||||
<option name="SHOW_ONLY_CHANGED_IN_SELECTION_DIFF" value="true" />
|
||||
<option name="CHECK_COMMIT_MESSAGE_SPELLING" value="true" />
|
||||
<option name="DEFAULT_PATCH_EXTENSION" value="patch" />
|
||||
<option name="SHORT_DIFF_HORISONTALLY" value="true" />
|
||||
<option name="SHORT_DIFF_EXTRA_LINES" value="2" />
|
||||
<option name="SOFT_WRAPS_IN_SHORT_DIFF" value="true" />
|
||||
<option name="INCLUDE_TEXT_INTO_PATCH" value="false" />
|
||||
<option name="INCLUDE_TEXT_INTO_SHELF" value="false" />
|
||||
<option name="CREATE_PATCH_EXPAND_DETAILS_DEFAULT" value="true" />
|
||||
<option name="FORCE_NON_EMPTY_COMMENT" value="false" />
|
||||
<option name="LAST_COMMIT_MESSAGE" />
|
||||
<option name="MAKE_NEW_CHANGELIST_ACTIVE" value="true" />
|
||||
<option name="OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT" value="false" />
|
||||
<option name="CHECK_FILES_UP_TO_DATE_BEFORE_COMMIT" value="false" />
|
||||
<option name="REFORMAT_BEFORE_PROJECT_COMMIT" value="false" />
|
||||
<option name="REFORMAT_BEFORE_FILE_COMMIT" value="false" />
|
||||
<option name="FILE_HISTORY_DIALOG_COMMENTS_SPLITTER_PROPORTION" value="0.8" />
|
||||
<option name="FILE_HISTORY_DIALOG_SPLITTER_PROPORTION" value="0.5" />
|
||||
<option name="ACTIVE_VCS_NAME" />
|
||||
<option name="UPDATE_GROUP_BY_PACKAGES" value="false" />
|
||||
<option name="UPDATE_GROUP_BY_CHANGELIST" value="false" />
|
||||
<option name="SHOW_FILE_HISTORY_AS_TREE" value="false" />
|
||||
<option name="FILE_HISTORY_SPLITTER_PROPORTION" value="0.6" />
|
||||
</component>
|
||||
<component name="XDebuggerManager">
|
||||
<breakpoint-manager />
|
||||
</component>
|
||||
</project>
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
package B;
|
||||
|
||||
import A.C;
|
||||
|
||||
/**
|
||||
* Created by IntelliJ IDEA.
|
||||
* User: db
|
||||
* Date: 23.01.12
|
||||
* Time: 13:52
|
||||
* To change this template use File | Settings | File Templates.
|
||||
*/
|
||||
public class N {
|
||||
int y = new C().get();
|
||||
}
|
||||
@@ -75,4 +75,12 @@ public class TestFieldProperties extends IncrementalTestCase {
|
||||
public void testTypeChange2() throws Exception {
|
||||
doTest();
|
||||
}
|
||||
|
||||
public void testNonIncremental1() throws Exception {
|
||||
doTest();
|
||||
}
|
||||
|
||||
public void testNonIncremental2() throws Exception {
|
||||
doTest();
|
||||
}
|
||||
}
|
||||
|
||||
+5
-5
@@ -31,10 +31,10 @@ import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.ReflectionCache;
|
||||
import com.intellij.util.containers.ConcurrentHashMap;
|
||||
import com.intellij.util.containers.HashMap;
|
||||
import com.intellij.util.messages.MessageBus;
|
||||
import com.intellij.util.messages.MessageBusFactory;
|
||||
import com.intellij.util.pico.IdeaPicoContainer;
|
||||
import gnu.trove.THashMap;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -415,13 +415,13 @@ public abstract class ComponentManagerImpl extends UserDataHolderBase implements
|
||||
}
|
||||
|
||||
protected class ComponentsRegistry {
|
||||
private final Map<Class, Object> myInterfaceToLockMap = new HashMap<Class, Object>();
|
||||
private final Map<Class, Class> myInterfaceToClassMap = new HashMap<Class, Class>();
|
||||
private final Map<Class, Object> myInterfaceToLockMap = new THashMap<Class, Object>();
|
||||
private final Map<Class, Class> myInterfaceToClassMap = new THashMap<Class, Class>();
|
||||
private final ArrayList<Class> myComponentInterfaces = new ArrayList<Class>(); // keeps order of component's registration
|
||||
private final Map<String, BaseComponent> myNameToComponent = new HashMap<String, BaseComponent>();
|
||||
private final Map<String, BaseComponent> myNameToComponent = new THashMap<String, BaseComponent>();
|
||||
private final List<ComponentConfig> myComponentConfigs = new ArrayList<ComponentConfig>();
|
||||
private final List<Object> myImplementations = new ArrayList<Object>();
|
||||
private final Map<Class, ComponentConfig> myComponentClassToConfig = new java.util.HashMap<Class, ComponentConfig>();
|
||||
private final Map<Class, ComponentConfig> myComponentClassToConfig = new THashMap<Class, ComponentConfig>();
|
||||
private boolean myClassesLoaded = false;
|
||||
|
||||
private void loadClasses() {
|
||||
|
||||
@@ -19,13 +19,13 @@ import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.extensions.impl.ExtensionsAreaImpl;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.util.containers.MultiMap;
|
||||
import gnu.trove.THashMap;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.annotations.TestOnly;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class Extensions {
|
||||
@@ -33,11 +33,11 @@ public class Extensions {
|
||||
|
||||
public static final ExtensionPointName<AreaListener> AREA_LISTENER_EXTENSION_POINT = new ExtensionPointName<AreaListener>("com.intellij.arealistener");
|
||||
|
||||
private static final Map<AreaInstance,ExtensionsAreaImpl> ourAreaInstance2area = new HashMap<AreaInstance, ExtensionsAreaImpl>();
|
||||
private static final Map<AreaInstance,ExtensionsAreaImpl> ourAreaInstance2area = new THashMap<AreaInstance, ExtensionsAreaImpl>();
|
||||
private static ExtensionsAreaImpl ourRootArea = createRootArea();
|
||||
private static final MultiMap<String, AreaInstance> ourAreaClass2instances = new MultiMap<String, AreaInstance>();
|
||||
private static final Map<AreaInstance,String> ourAreaInstance2class = new HashMap<AreaInstance, String>();
|
||||
private static final Map<String,AreaClassConfiguration> ourAreaClass2Configuration = new HashMap<String, AreaClassConfiguration>();
|
||||
private static final Map<AreaInstance,String> ourAreaInstance2class = new THashMap<AreaInstance, String>();
|
||||
private static final Map<String,AreaClassConfiguration> ourAreaClass2Configuration = new THashMap<String, AreaClassConfiguration>();
|
||||
|
||||
private static ExtensionsAreaImpl createRootArea() {
|
||||
ExtensionsAreaImpl rootArea = new ExtensionsAreaImpl(null, null, null, ourLogger);
|
||||
|
||||
@@ -17,7 +17,7 @@ package com.intellij.codeInsight.daemon;
|
||||
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.util.containers.HashMap;
|
||||
import gnu.trove.THashMap;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -27,10 +27,10 @@ import java.util.Map;
|
||||
public class HighlightDisplayKey {
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.codeInsight.daemon.HighlightDisplayKey");
|
||||
|
||||
private static final HashMap<String,HighlightDisplayKey> ourNameToKeyMap = new HashMap<String, HighlightDisplayKey>();
|
||||
private static final HashMap<String,HighlightDisplayKey> ourIdToKeyMap = new HashMap<String, HighlightDisplayKey>();
|
||||
private static final Map<HighlightDisplayKey, String> ourKeyToDisplayNameMap = new HashMap<HighlightDisplayKey, String>();
|
||||
private static final Map<HighlightDisplayKey, String> ourKeyToAlternativeIDMap = new HashMap<HighlightDisplayKey, String>();
|
||||
private static final Map<String,HighlightDisplayKey> ourNameToKeyMap = new THashMap<String, HighlightDisplayKey>();
|
||||
private static final Map<String,HighlightDisplayKey> ourIdToKeyMap = new THashMap<String, HighlightDisplayKey>();
|
||||
private static final Map<HighlightDisplayKey, String> ourKeyToDisplayNameMap = new THashMap<HighlightDisplayKey, String>();
|
||||
private static final Map<HighlightDisplayKey, String> ourKeyToAlternativeIDMap = new THashMap<HighlightDisplayKey, String>();
|
||||
|
||||
private final String myName;
|
||||
private final String myID;
|
||||
|
||||
@@ -33,6 +33,7 @@ import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.openapi.vfs.encoding.EncodingManager;
|
||||
import com.intellij.util.PathUtil;
|
||||
import com.intellij.util.lang.UrlClassLoader;
|
||||
import gnu.trove.THashMap;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -189,6 +190,7 @@ public class JdkUtil {
|
||||
final Class<UrlClassLoader> ourUrlClassLoader = UrlClassLoader.class;
|
||||
if (ourUrlClassLoader.getName().equals(parametersList.getPropertyValue("java.system.class.loader"))) {
|
||||
classpath += File.pathSeparator + PathUtil.getJarPathForClass(ourUrlClassLoader);
|
||||
classpath += File.pathSeparator + PathUtil.getJarPathForClass(THashMap.class);
|
||||
}
|
||||
|
||||
commandLine.addParameter("-classpath");
|
||||
|
||||
@@ -42,6 +42,7 @@ import com.intellij.profile.codeInspection.InspectionProfileManager;
|
||||
import com.intellij.profile.codeInspection.SeverityProvider;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.search.scope.packageSet.NamedScope;
|
||||
import gnu.trove.THashMap;
|
||||
import org.jdom.Document;
|
||||
import org.jdom.Element;
|
||||
import org.jdom.JDOMException;
|
||||
@@ -59,7 +60,7 @@ public class InspectionProfileImpl extends ProfileEx implements ModifiableModel,
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.codeInspection.ex.InspectionProfileImpl");
|
||||
@NonNls private static final String VALID_VERSION = "1.0";
|
||||
|
||||
private Map<String, ToolsImpl> myTools = new HashMap<String, ToolsImpl>();
|
||||
private Map<String, ToolsImpl> myTools = new THashMap<String, ToolsImpl>();
|
||||
|
||||
private Map<String, Boolean> myDisplayLevelMap;
|
||||
private Map<String, Element> myDeinstalledInspectionsSettings = new TreeMap<String, Element>();
|
||||
|
||||
@@ -23,6 +23,7 @@ import com.intellij.util.containers.HashMap;
|
||||
import com.intellij.util.ui.JBInsets;
|
||||
import com.intellij.util.ui.SameColor;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import gnu.trove.THashMap;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -37,7 +38,7 @@ import java.util.Map;
|
||||
*/
|
||||
public abstract class AbstractNavBarUI implements NavBarUI {
|
||||
|
||||
private Map<NavBarItem, Map<ImageType, BufferedImage>> myCache = new HashMap<NavBarItem, Map<ImageType, BufferedImage>>();
|
||||
private Map<NavBarItem, Map<ImageType, BufferedImage>> myCache = new THashMap<NavBarItem, Map<ImageType, BufferedImage>>();
|
||||
|
||||
private enum ImageType {
|
||||
INACTIVE, NEXT_ACTIVE, ACTIVE, INACTIVE_FLOATING, NEXT_ACTIVE_FLOATING, ACTIVE_FLOATING,
|
||||
|
||||
+22
-11
@@ -19,18 +19,22 @@ package com.intellij.refactoring.copy;
|
||||
import com.intellij.ide.util.DirectoryUtil;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.command.CommandProcessor;
|
||||
import com.intellij.openapi.fileChooser.FileChooserDescriptor;
|
||||
import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory;
|
||||
import com.intellij.openapi.help.HelpManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.DialogWrapper;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.openapi.ui.TextComponentAccessor;
|
||||
import com.intellij.openapi.ui.impl.DialogWrapperPeerImpl;
|
||||
import com.intellij.psi.PsiDirectory;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiManager;
|
||||
import com.intellij.refactoring.RefactoringBundle;
|
||||
import com.intellij.ui.*;
|
||||
import com.intellij.ui.DocumentAdapter;
|
||||
import com.intellij.ui.RecentsManager;
|
||||
import com.intellij.ui.TextFieldWithHistoryWithBrowseButton;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
|
||||
@@ -39,10 +43,11 @@ import javax.swing.event.DocumentEvent;
|
||||
import javax.swing.event.DocumentListener;
|
||||
import java.awt.*;
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
|
||||
class CopyFilesOrDirectoriesDialog extends DialogWrapper{
|
||||
private JLabel myInformationLabel;
|
||||
private EditorComboWithBrowseButton myTargetDirectoryField;
|
||||
private TextFieldWithHistoryWithBrowseButton myTargetDirectoryField;
|
||||
private JTextField myNewNameField;
|
||||
private final Project myProject;
|
||||
private final boolean myShowDirectoryField;
|
||||
@@ -95,7 +100,7 @@ class CopyFilesOrDirectoriesDialog extends DialogWrapper{
|
||||
}
|
||||
|
||||
if (myShowDirectoryField) {
|
||||
myTargetDirectoryField.prependItem(defaultTargetDirectory == null ? "" : defaultTargetDirectory.getVirtualFile().getPresentableUrl());
|
||||
myTargetDirectoryField.getChildComponent().setText(defaultTargetDirectory == null ? "" : defaultTargetDirectory.getVirtualFile().getPresentableUrl());
|
||||
}
|
||||
validateOKButton();
|
||||
}
|
||||
@@ -163,18 +168,24 @@ class CopyFilesOrDirectoriesDialog extends DialogWrapper{
|
||||
if (myShowDirectoryField) {
|
||||
panel.add(new JLabel(RefactoringBundle.message("copy.files.to.directory.label")), new GridBagConstraints(0,2,1,1,0,0,GridBagConstraints.WEST,GridBagConstraints.HORIZONTAL,new Insets(4,8,4,8),0,0));
|
||||
|
||||
myTargetDirectoryField = new EditorComboWithBrowseButton(null, "", myProject,
|
||||
RECENT_KEYS);
|
||||
myTargetDirectoryField = new TextFieldWithHistoryWithBrowseButton();
|
||||
final List<String> recentEntries = RecentsManager.getInstance(myProject).getRecentEntries(RECENT_KEYS);
|
||||
|
||||
if (recentEntries != null) {
|
||||
myTargetDirectoryField.getChildComponent().setHistory(recentEntries);
|
||||
}
|
||||
final FileChooserDescriptor descriptor = FileChooserDescriptorFactory.createSingleFolderDescriptor();
|
||||
myTargetDirectoryField.addBrowseFolderListener(RefactoringBundle.message("select.target.directory"),
|
||||
RefactoringBundle.message("the.file.will.be.copied.to.this.directory"),
|
||||
myProject, FileChooserDescriptorFactory.createSingleFolderDescriptor(),
|
||||
EditorComboBox.COMPONENT_ACCESSOR);
|
||||
myProject, descriptor,
|
||||
TextComponentAccessor.TEXT_FIELD_WITH_HISTORY_WHOLE_TEXT);
|
||||
|
||||
myTargetDirectoryField.setTextFieldPreferredWidth(60);
|
||||
panel.add(myTargetDirectoryField, new GridBagConstraints(1,2,1,1,1,0,GridBagConstraints.WEST,GridBagConstraints.HORIZONTAL,new Insets(4,0,4,8),0,0));
|
||||
|
||||
myTargetDirectoryField.getChildComponent().getDocument().addDocumentListener(new com.intellij.openapi.editor.event.DocumentAdapter() {
|
||||
myTargetDirectoryField.getChildComponent().addDocumentListener(new DocumentAdapter() {
|
||||
@Override
|
||||
public void documentChanged(com.intellij.openapi.editor.event.DocumentEvent e) {
|
||||
protected void textChanged(DocumentEvent e) {
|
||||
validateOKButton();
|
||||
}
|
||||
});
|
||||
@@ -202,7 +213,7 @@ class CopyFilesOrDirectoriesDialog extends DialogWrapper{
|
||||
}
|
||||
|
||||
if (myShowDirectoryField) {
|
||||
final String targetDirectoryName = myTargetDirectoryField.getText();
|
||||
final String targetDirectoryName = myTargetDirectoryField.getChildComponent().getText();
|
||||
|
||||
if (targetDirectoryName.length() == 0) {
|
||||
Messages.showMessageDialog(myProject, RefactoringBundle.message("no.target.directory.specified"), RefactoringBundle.message("error.title"), Messages.getErrorIcon());
|
||||
@@ -236,7 +247,7 @@ class CopyFilesOrDirectoriesDialog extends DialogWrapper{
|
||||
|
||||
private void validateOKButton() {
|
||||
if (myShowDirectoryField) {
|
||||
if (myTargetDirectoryField.getText().length() == 0) {
|
||||
if (myTargetDirectoryField.getChildComponent().getText().length() == 0) {
|
||||
setOKActionEnabled(false);
|
||||
return;
|
||||
}
|
||||
|
||||
+12
-5
@@ -27,7 +27,6 @@ import com.intellij.openapi.fileChooser.FileChooserFactory;
|
||||
import com.intellij.openapi.help.HelpManager;
|
||||
import com.intellij.openapi.keymap.KeymapUtil;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.ComponentWithBrowseButton;
|
||||
import com.intellij.openapi.ui.DialogWrapper;
|
||||
import com.intellij.openapi.ui.TextComponentAccessor;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
@@ -40,6 +39,8 @@ import com.intellij.refactoring.RefactoringSettings;
|
||||
import com.intellij.refactoring.util.CommonRefactoringUtil;
|
||||
import com.intellij.ui.DocumentAdapter;
|
||||
import com.intellij.ui.NonFocusableCheckBox;
|
||||
import com.intellij.ui.RecentsManager;
|
||||
import com.intellij.ui.TextFieldWithHistoryWithBrowseButton;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
@@ -48,6 +49,7 @@ import javax.swing.*;
|
||||
import javax.swing.event.DocumentEvent;
|
||||
import java.awt.*;
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
|
||||
public class MoveFilesOrDirectoriesDialog extends DialogWrapper{
|
||||
@NonNls private static final String RECENT_KEYS = "MoveFile.RECENT_KEYS";
|
||||
@@ -57,7 +59,7 @@ public class MoveFilesOrDirectoriesDialog extends DialogWrapper{
|
||||
}
|
||||
|
||||
private JLabel myNameLabel;
|
||||
private ComponentWithBrowseButton<JTextField> myTargetDirectoryField;
|
||||
private TextFieldWithHistoryWithBrowseButton myTargetDirectoryField;
|
||||
private String myHelpID;
|
||||
private final Project myProject;
|
||||
private final Callback myCallback;
|
||||
@@ -99,14 +101,18 @@ public class MoveFilesOrDirectoriesDialog extends DialogWrapper{
|
||||
panel.add(new JLabel(RefactoringBundle.message("move.files.to.directory.label")), c);
|
||||
c.insets.top = 0;
|
||||
|
||||
myTargetDirectoryField = new ComponentWithBrowseButton<JTextField>(new JTextField(), null);
|
||||
myTargetDirectoryField = new TextFieldWithHistoryWithBrowseButton();
|
||||
final List<String> recentEntries = RecentsManager.getInstance(myProject).getRecentEntries(RECENT_KEYS);
|
||||
if (recentEntries != null) {
|
||||
myTargetDirectoryField.getChildComponent().setHistory(recentEntries);
|
||||
}
|
||||
final FileChooserDescriptor descriptor = FileChooserDescriptorFactory.createSingleFolderDescriptor();
|
||||
myTargetDirectoryField.addBrowseFolderListener(RefactoringBundle.message("select.target.directory"),
|
||||
RefactoringBundle.message("the.file.will.be.moved.to.this.directory"),
|
||||
myProject,
|
||||
descriptor,
|
||||
TextComponentAccessor.TEXT_FIELD_WHOLE_TEXT);
|
||||
final JTextField textField = myTargetDirectoryField.getChildComponent();
|
||||
TextComponentAccessor.TEXT_FIELD_WITH_HISTORY_WHOLE_TEXT);
|
||||
final JTextField textField = myTargetDirectoryField.getChildComponent().getTextEditor();
|
||||
FileChooserFactory.getInstance().installFileCompletion(textField, descriptor, true, getDisposable());
|
||||
myTargetDirectoryField.setTextFieldPreferredWidth(60);
|
||||
c.insets.left = 0;
|
||||
@@ -180,6 +186,7 @@ public class MoveFilesOrDirectoriesDialog extends DialogWrapper{
|
||||
|
||||
protected void doOKAction() {
|
||||
//myTargetDirectoryField.getChildComponent().addCurrentTextToHistory();
|
||||
RecentsManager.getInstance(myProject).registerRecentEntry(RECENT_KEYS, myTargetDirectoryField.getChildComponent().getText());
|
||||
RefactoringSettings.getInstance().MOVE_SEARCH_FOR_REFERENCES_FOR_FILE = myCbSearchForReferences.isSelected();
|
||||
CommandProcessor.getInstance().executeCommand(myProject, new Runnable() {
|
||||
public void run() {
|
||||
|
||||
@@ -68,10 +68,7 @@ import com.intellij.util.io.*;
|
||||
import com.intellij.util.io.storage.HeavyProcessLatch;
|
||||
import com.intellij.util.messages.MessageBus;
|
||||
import com.intellij.util.messages.MessageBusConnection;
|
||||
import gnu.trove.TIntHashSet;
|
||||
import gnu.trove.TIntIterator;
|
||||
import gnu.trove.TIntProcedure;
|
||||
import gnu.trove.TObjectIntHashMap;
|
||||
import gnu.trove.*;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -93,29 +90,29 @@ public class FileBasedIndex implements ApplicationComponent {
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.util.indexing.FileBasedIndex");
|
||||
@NonNls
|
||||
private static final String CORRUPTION_MARKER_NAME = "corruption.marker";
|
||||
private final Map<ID<?, ?>, Pair<UpdatableIndex<?, ?, FileContent>, InputFilter>> myIndices = new HashMap<ID<?, ?>, Pair<UpdatableIndex<?, ?, FileContent>, InputFilter>>();
|
||||
private final Map<ID<?, ?>, Semaphore> myUnsavedDataIndexingSemaphores = new HashMap<ID<?,?>, Semaphore>();
|
||||
private final Map<ID<?, ?>, Pair<UpdatableIndex<?, ?, FileContent>, InputFilter>> myIndices = new THashMap<ID<?, ?>, Pair<UpdatableIndex<?, ?, FileContent>, InputFilter>>();
|
||||
private final Map<ID<?, ?>, Semaphore> myUnsavedDataIndexingSemaphores = new THashMap<ID<?,?>, Semaphore>();
|
||||
private final TObjectIntHashMap<ID<?, ?>> myIndexIdToVersionMap = new TObjectIntHashMap<ID<?, ?>>();
|
||||
private final Set<ID<?, ?>> myNotRequiringContentIndices = new HashSet<ID<?, ?>>();
|
||||
private final Set<ID<?, ?>> myRequiringContentIndices = new HashSet<ID<?, ?>>();
|
||||
private final Set<FileType> myNoLimitCheckTypes = new HashSet<FileType>();
|
||||
private final Set<ID<?, ?>> myNotRequiringContentIndices = new THashSet<ID<?, ?>>();
|
||||
private final Set<ID<?, ?>> myRequiringContentIndices = new THashSet<ID<?, ?>>();
|
||||
private final Set<FileType> myNoLimitCheckTypes = new THashSet<FileType>();
|
||||
|
||||
private final PerIndexDocumentVersionMap myLastIndexedDocStamps = new PerIndexDocumentVersionMap();
|
||||
private final ChangedFilesCollector myChangedFilesCollector;
|
||||
|
||||
private final List<IndexableFileSet> myIndexableSets = ContainerUtil.createEmptyCOWList();
|
||||
private final Map<IndexableFileSet, Project> myIndexableSetToProjectMap = new HashMap<IndexableFileSet, Project>();
|
||||
private final Map<IndexableFileSet, Project> myIndexableSetToProjectMap = new THashMap<IndexableFileSet, Project>();
|
||||
|
||||
private static final int OK = 1;
|
||||
private static final int REQUIRES_REBUILD = 2;
|
||||
private static final int REBUILD_IN_PROGRESS = 3;
|
||||
private static final Map<ID<?, ?>, AtomicInteger> ourRebuildStatus = new HashMap<ID<?,?>, AtomicInteger>();
|
||||
private static final Map<ID<?, ?>, AtomicInteger> ourRebuildStatus = new THashMap<ID<?,?>, AtomicInteger>();
|
||||
|
||||
private final VirtualFileManagerEx myVfManager;
|
||||
private final FileDocumentManager myFileDocumentManager;
|
||||
private final FileTypeManager myFileTypeManager;
|
||||
private final ConcurrentHashSet<ID<?, ?>> myUpToDateIndices = new ConcurrentHashSet<ID<?, ?>>();
|
||||
private final Map<Document, PsiFile> myTransactionMap = new HashMap<Document, PsiFile>();
|
||||
private final Map<Document, PsiFile> myTransactionMap = new THashMap<Document, PsiFile>();
|
||||
|
||||
private static final int ALREADY_PROCESSED = 0x02;
|
||||
@Nullable private final String myConfigPath;
|
||||
|
||||
@@ -15,8 +15,8 @@
|
||||
*/
|
||||
package com.intellij.openapi.ui;
|
||||
|
||||
import com.intellij.openapi.util.SystemInfo;
|
||||
import com.intellij.openapi.util.IconLoader;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.swing.*;
|
||||
@@ -43,25 +43,27 @@ public class FixedSizeButton extends JButton {
|
||||
else {
|
||||
setText(".");
|
||||
}
|
||||
mySize=size;
|
||||
myComponent=component;
|
||||
mySize = size;
|
||||
myComponent = component;
|
||||
setMargin(new Insets(0, 0, 0, 0));
|
||||
setDefaultCapable(false);
|
||||
setFocusable(false);
|
||||
if (SystemInfo.isMac) {
|
||||
if (UIUtil.isUnderAquaLookAndFeel() && size == -1) {
|
||||
putClientProperty("JButton.buttonType", "square");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates the <code>FixedSizeButton</code> with specified size.
|
||||
* @throws java.lang.IllegalArgumentException if <code>size</code> isn't
|
||||
* positive integer number.
|
||||
*
|
||||
* @throws java.lang.IllegalArgumentException
|
||||
* if <code>size</code> isn't
|
||||
* positive integer number.
|
||||
*/
|
||||
public FixedSizeButton(int size){
|
||||
this(size,null);
|
||||
if(size<=0){
|
||||
throw new IllegalArgumentException("wrong size: "+size);
|
||||
public FixedSizeButton(int size) {
|
||||
this(size, null);
|
||||
if (size <= 0) {
|
||||
throw new IllegalArgumentException("wrong size: " + size);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -74,21 +76,23 @@ public class FixedSizeButton extends JButton {
|
||||
this(-1, component);
|
||||
}
|
||||
|
||||
public Dimension getMinimumSize(){
|
||||
public Dimension getMinimumSize() {
|
||||
return getPreferredSize();
|
||||
}
|
||||
|
||||
public Dimension getMaximumSize(){
|
||||
public Dimension getMaximumSize() {
|
||||
return getPreferredSize();
|
||||
}
|
||||
|
||||
public Dimension getPreferredSize(){
|
||||
if(myComponent!=null){
|
||||
int size=myComponent.getPreferredSize().height;
|
||||
return new Dimension(size,size);
|
||||
}else if(mySize!=-1){
|
||||
return new Dimension(mySize,mySize);
|
||||
}else{
|
||||
public Dimension getPreferredSize() {
|
||||
if (myComponent != null) {
|
||||
int size = myComponent.getPreferredSize().height;
|
||||
return new Dimension(size, size);
|
||||
}
|
||||
else if (mySize != -1) {
|
||||
return new Dimension(mySize, mySize);
|
||||
}
|
||||
else {
|
||||
return super.getPreferredSize();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,4 +44,13 @@ public class ScrollPaneFactory {
|
||||
public static JScrollPane createScrollPane(Component view, int vsbPolicy, int hsbPolicy) {
|
||||
return new JBScrollPane(view, vsbPolicy, hsbPolicy);
|
||||
}
|
||||
|
||||
public static JScrollPane createScrollPane(Component view, boolean withoutBorder) {
|
||||
JBScrollPane scrollPane = new JBScrollPane(view);
|
||||
if (withoutBorder) {
|
||||
scrollPane.setBorder(null);
|
||||
}
|
||||
return scrollPane;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
* Copyright 2000-2012 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.ui;
|
||||
|
||||
import com.intellij.openapi.fileChooser.FileChooserDescriptor;
|
||||
import com.intellij.openapi.fileChooser.FileChooserFactory;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.ComponentWithBrowseButton;
|
||||
import com.intellij.openapi.ui.TextComponentAccessor;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
/**
|
||||
* User: anna
|
||||
*/
|
||||
public class TextFieldWithHistoryWithBrowseButton extends ComponentWithBrowseButton<TextFieldWithHistory> {
|
||||
public TextFieldWithHistoryWithBrowseButton() {
|
||||
super(new TextFieldWithHistory(), null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addBrowseFolderListener(@Nullable String title,
|
||||
@Nullable String description,
|
||||
@Nullable Project project,
|
||||
FileChooserDescriptor fileChooserDescriptor,
|
||||
TextComponentAccessor<TextFieldWithHistory> accessor) {
|
||||
super.addBrowseFolderListener(title, description, project, fileChooserDescriptor, accessor);
|
||||
FileChooserFactory.getInstance().installFileCompletion(getChildComponent().getTextEditor(), fileChooserDescriptor, false, project);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addBrowseFolderListener(@Nullable String title,
|
||||
@Nullable String description,
|
||||
@Nullable Project project,
|
||||
FileChooserDescriptor fileChooserDescriptor,
|
||||
TextComponentAccessor<TextFieldWithHistory> accessor,
|
||||
boolean autoRemoveOnHide) {
|
||||
super.addBrowseFolderListener(title, description, project, fileChooserDescriptor, accessor, autoRemoveOnHide);
|
||||
FileChooserFactory.getInstance().installFileCompletion(getChildComponent().getTextEditor(), fileChooserDescriptor, false, project);
|
||||
}
|
||||
}
|
||||
@@ -224,12 +224,16 @@ public class VirtualFileDiffElement extends DiffElement<VirtualFile> {
|
||||
|
||||
@Override
|
||||
public void refresh(boolean userInitiated) {
|
||||
refreshFile(userInitiated, myFile);
|
||||
}
|
||||
|
||||
public static void refreshFile(boolean userInitiated, VirtualFile virtualFile) {
|
||||
if (userInitiated) {
|
||||
final List<Document> docsToSave = new ArrayList<Document>();
|
||||
final FileDocumentManager manager = FileDocumentManager.getInstance();
|
||||
for (Document document : manager.getUnsavedDocuments()) {
|
||||
VirtualFile file = manager.getFile(document);
|
||||
if (file!=null && VfsUtilCore.isAncestor(myFile, file, false)) {
|
||||
if (file!=null && VfsUtilCore.isAncestor(virtualFile, file, false)) {
|
||||
docsToSave.add(document);
|
||||
}
|
||||
}
|
||||
@@ -251,9 +255,9 @@ public class VirtualFileDiffElement extends DiffElement<VirtualFile> {
|
||||
}, ModalityState.defaultModalityState());
|
||||
}
|
||||
}
|
||||
if (!FileWatcher.getInstance().isWatched(myFile)) {
|
||||
((NewVirtualFile)myFile).markDirtyRecursively();
|
||||
if (!FileWatcher.getInstance().isWatched(virtualFile)) {
|
||||
((NewVirtualFile)virtualFile).markDirtyRecursively();
|
||||
}
|
||||
myFile.refresh(false, true);
|
||||
virtualFile.refresh(false, true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -292,6 +292,11 @@ public class OptionsEditor extends JPanel implements DataProvider, Place.Navigat
|
||||
return myTree.select(configurable);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public List<Configurable> getPathToRoot(@NotNull Configurable configurable) {
|
||||
return myTree.getPathToRoot(configurable);
|
||||
}
|
||||
|
||||
private float readProportion(final float defaultValue, final String propertyName) {
|
||||
float proportion = defaultValue;
|
||||
try {
|
||||
|
||||
+4
-2
@@ -42,7 +42,9 @@ import com.intellij.util.containers.StripedLockIntObjectConcurrentHashMap;
|
||||
import com.intellij.util.io.DupOutputStream;
|
||||
import com.intellij.util.io.ReplicatorInputStream;
|
||||
import com.intellij.util.messages.MessageBus;
|
||||
import gnu.trove.THashMap;
|
||||
import gnu.trove.TIntHashSet;
|
||||
import gnu.trove.TIntObjectHashMap;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -69,8 +71,8 @@ public class PersistentFS extends ManagingFS implements ApplicationComponent {
|
||||
|
||||
private final MessageBus myEventsBus;
|
||||
|
||||
private final Map<String, VirtualFileSystemEntry> myRoots = new HashMap<String, VirtualFileSystemEntry>();
|
||||
private final Map<Integer, VirtualFileSystemEntry> myRootsById = new HashMap<Integer, VirtualFileSystemEntry>();
|
||||
private final Map<String, VirtualFileSystemEntry> myRoots = new THashMap<String, VirtualFileSystemEntry>();
|
||||
private final TIntObjectHashMap<VirtualFileSystemEntry> myRootsById = new TIntObjectHashMap<VirtualFileSystemEntry>();
|
||||
private VirtualFileSystemEntry myFakeRoot;
|
||||
private final Object INPUT_LOCK = new Object();
|
||||
|
||||
|
||||
@@ -384,8 +384,8 @@ checkbox.highlight.current.scope=Highlight current scope
|
||||
combobox.paste.insert.imports=&Insert imports on paste:
|
||||
combobox.paste.reformat=Reformat on paste:
|
||||
group.advanced.mouse.usages=Mouse
|
||||
checkbox.enable.ctrl.mousewheel.changes.font.size=Change font size (Zoom) with Ctrl+MouseWheel
|
||||
checkbox.enable.ctrl.mousewheel.changes.font.size.macos=<html>Enable Command+MouseWheel changes font size</html>
|
||||
checkbox.enable.ctrl.mousewheel.changes.font.size=<html>Change font size (Zoom) with Ctrl+MouseWheel</html>
|
||||
checkbox.enable.ctrl.mousewheel.changes.font.size.macos=<html>Change font size (Zoom) with Command+MouseWheel</html>
|
||||
checkbox.enable.drag.n.drop.functionality.in.editor=<html>Enable Drag'n'Drop functionality in editor</html>
|
||||
checkbox.honor.camelhumps.words.settings.on.double.click=<html>Honor "CamelHumps" words settings when selecting on<br/>double click</html>
|
||||
group.smart.keys=Smart Keys
|
||||
|
||||
@@ -364,7 +364,7 @@
|
||||
|
||||
<patternDialectProvider implementation="com.intellij.packageDependencies.ui.ProjectPatternProvider" id="file"/>
|
||||
<customScopesProvider implementation="com.intellij.packageDependencies.DefaultScopesProvider"/>
|
||||
<customScopesProvider implementation="com.intellij.packageDependencies.ChangeListsScopesProvider"/>
|
||||
<customScopesProvider implementation="com.intellij.packageDependencies.ChangeListsScopesProvider" order="last"/>
|
||||
<refactoring.elementListenerProvider implementation="com.intellij.packageDependencies.ui.RefactoringScopeElementListenerProvider"/>
|
||||
|
||||
<highlightVisitor implementation="com.intellij.codeInsight.daemon.impl.DefaultHighlightVisitor"/>
|
||||
|
||||
@@ -118,18 +118,8 @@ class ClassPath {
|
||||
try {
|
||||
int i;
|
||||
if (myCanUseCache) {
|
||||
List<Loader> loaders = myCache.getLoaders(s);
|
||||
for (int j = 0, size = loaders.size(); j < size; ++j ) {
|
||||
final Loader loader = loaders.get(j);
|
||||
if (!myCache.loaderHasName(s, loader)) continue;
|
||||
final Resource resource = loader.getResource(s, flag);
|
||||
if (resource != null) {
|
||||
if (ourDumpOrder) {
|
||||
printOrder(loader, s, resource);
|
||||
}
|
||||
return resource;
|
||||
}
|
||||
}
|
||||
Resource prevResource = myCache.iterateLoaders(s, flag ? checkedIterator:uncheckedIterator, s, this);
|
||||
if (prevResource != null) return prevResource;
|
||||
|
||||
synchronized (myUrls) {
|
||||
if (myUrls.isEmpty()) return null;
|
||||
@@ -165,6 +155,7 @@ class ClassPath {
|
||||
@Nullable
|
||||
private synchronized Loader getLoader(int i) {
|
||||
while (myLoaders.size() < i + 1) {
|
||||
boolean lastOne;
|
||||
URL url;
|
||||
synchronized (myUrls) {
|
||||
if (myUrls.empty()) {
|
||||
@@ -172,6 +163,7 @@ class ClassPath {
|
||||
return null;
|
||||
}
|
||||
url = myUrls.pop();
|
||||
lastOne = myUrls.isEmpty();
|
||||
}
|
||||
|
||||
if (myLoadersMap.containsKey(url)) continue;
|
||||
@@ -187,6 +179,9 @@ class ClassPath {
|
||||
|
||||
myLoaders.add(loader);
|
||||
myLoadersMap.put(url, loader);
|
||||
if (lastOne && myCanUseCache) {
|
||||
myCache.nameSymbolsLoaded();
|
||||
}
|
||||
}
|
||||
|
||||
return myLoaders.get(i);
|
||||
@@ -231,6 +226,7 @@ class ClassPath {
|
||||
}
|
||||
|
||||
private void push(URL[] urls) {
|
||||
if (urls.length == 0) return;
|
||||
synchronized (myUrls) {
|
||||
for (int i = urls.length - 1; i >= 0; i--) myUrls.push(urls[i]);
|
||||
|
||||
@@ -252,10 +248,10 @@ class ClassPath {
|
||||
if (myCanUseCache) {
|
||||
synchronized (myUrls) {
|
||||
if (myUrls.isEmpty()) {
|
||||
loaders = myCache.getLoaders(name);
|
||||
loaders = new SmartList<Loader>();
|
||||
myCache.iterateLoaders(name, myLoaderCollector, loaders, this);
|
||||
if (!name.endsWith("/")) {
|
||||
loaders = new SmartList<Loader>(loaders);
|
||||
loaders.addAll(myCache.getLoaders(name + "/"));
|
||||
myCache.iterateLoaders(name.concat("/"), myLoaderCollector, loaders, this);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -319,6 +315,40 @@ class ClassPath {
|
||||
if (doneFor > NS_THRESHOLD) {
|
||||
System.out.println((doneFor/1000000) + " ms for " +msg);
|
||||
}
|
||||
if (requests % 1000 == 0) System.out.println(toString() + "," + requests + "," + (total / 1000000));
|
||||
if (requests % 1000 == 0) {
|
||||
System.out.println(toString() + ", requests:" + requests + ", time:" + (total / 1000000) + "ms");
|
||||
}
|
||||
}
|
||||
|
||||
private static class ResourceStringLoaderIterator extends ClasspathCache.LoaderIterator<Resource, String, ClassPath> {
|
||||
private final boolean myFlag;
|
||||
|
||||
private ResourceStringLoaderIterator(boolean flag) {
|
||||
myFlag = flag;
|
||||
}
|
||||
|
||||
@Override
|
||||
Resource process(Loader loader, String s, ClassPath classPath) {
|
||||
if (!classPath.myCache.loaderHasName(s, loader)) return null;
|
||||
final Resource resource = loader.getResource(s, myFlag);
|
||||
if (resource != null) {
|
||||
if (ourDumpOrder) {
|
||||
printOrder(loader, s, resource);
|
||||
}
|
||||
return resource;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
private static final ResourceStringLoaderIterator checkedIterator = new ResourceStringLoaderIterator(true);
|
||||
private static final ResourceStringLoaderIterator uncheckedIterator = new ResourceStringLoaderIterator(false);
|
||||
private final static LoaderCollector myLoaderCollector = new LoaderCollector();
|
||||
|
||||
private static class LoaderCollector extends ClasspathCache.LoaderIterator<Object, List<Loader>, Object> {
|
||||
@Override
|
||||
Object process(Loader loader, List<Loader> parameter, Object parameter2) {
|
||||
parameter.add(loader);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,66 +19,171 @@
|
||||
*/
|
||||
package com.intellij.util.lang;
|
||||
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.SmartList;
|
||||
import com.intellij.util.containers.HashMap;
|
||||
import gnu.trove.THashMap;
|
||||
import gnu.trove.THashSet;
|
||||
import gnu.trove.TIntHashSet;
|
||||
import gnu.trove.TIntObjectHashMap;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import sun.misc.Resource;
|
||||
|
||||
import java.util.BitSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
public class ClasspathCache {
|
||||
private final TIntObjectHashMap<List<Loader>> myClassPackagesCache = new TIntObjectHashMap<List<Loader>>();
|
||||
private final TIntObjectHashMap<List<Loader>> myResourcePackagesCache = new TIntObjectHashMap<List<Loader>>();
|
||||
private final TIntHashSet myResourceIndex = new TIntHashSet();
|
||||
private static final boolean doDebug = false;
|
||||
private final DebugInfo myDebugInfo;
|
||||
|
||||
private final TIntObjectHashMap<Object> myResourcePackagesCache = new TIntObjectHashMap<Object>();
|
||||
private final TIntObjectHashMap<Object> myClassPackagesCache = new TIntObjectHashMap<Object>();
|
||||
|
||||
private THashMap<String, Set<Loader>> myResources2LoadersTempMap = new THashMap<String, Set<Loader>>();
|
||||
private static final double PROBABILITY = 0.005d;
|
||||
private BloomFilter myNameFilter;
|
||||
private boolean myTempMapMode = true;
|
||||
|
||||
public ClasspathCache() {
|
||||
if(doDebug) {
|
||||
myDebugInfo = new DebugInfo();
|
||||
} else {
|
||||
myDebugInfo = null;
|
||||
}
|
||||
}
|
||||
|
||||
public void addResourceEntry(String resourcePath, Loader loader) {
|
||||
final List<Loader> loaders = getLoaders(resourcePath);
|
||||
if (!loaders.contains(loader)) { // TODO Make linked hash set instead?
|
||||
loaders.add(loader);
|
||||
}
|
||||
}
|
||||
if (doDebug) myDebugInfo.addResourceEntry(resourcePath, loader);
|
||||
|
||||
public List<Loader> getLoaders(String resourcePath) {
|
||||
boolean isClassFile = resourcePath.endsWith(UrlClassLoader.CLASS_EXTENSION);
|
||||
final int idx = resourcePath.lastIndexOf('/');
|
||||
String packageName = idx > 0 ? resourcePath.substring(0, idx) : "";
|
||||
|
||||
TIntObjectHashMap<List<Loader>> map = isClassFile ? myClassPackagesCache : myResourcePackagesCache;
|
||||
String packageName = getPackageName(resourcePath);
|
||||
TIntObjectHashMap<Object> map = resourcePath.endsWith(UrlClassLoader.CLASS_EXTENSION) ?
|
||||
myClassPackagesCache : myResourcePackagesCache;
|
||||
int hash = packageName.hashCode();
|
||||
List<Loader> list = map.get(hash);
|
||||
if (list == null) {
|
||||
list = new SmartList<Loader>();
|
||||
map.put(hash, list);
|
||||
Object o = map.get(hash);
|
||||
if (o == null) map.put(hash, loader);
|
||||
else if (o instanceof Loader) {
|
||||
if (o != loader) map.put(hash, new Loader [] {(Loader)o, loader});
|
||||
} else {
|
||||
Loader[] loadersArray = (Loader[])o;
|
||||
for(Loader l:loadersArray) {
|
||||
if (l == loader) return;
|
||||
}
|
||||
map.put(hash, ArrayUtil.append(loadersArray, loader));
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
static abstract class LoaderIterator <ResultType, ParameterType, ParameterType2> {
|
||||
abstract @Nullable ResultType process(Loader loader, ParameterType parameter, ParameterType2 parameter2);
|
||||
}
|
||||
|
||||
@Nullable <ResultType, ParameterType, ParameterType2> ResultType iterateLoaders(
|
||||
String resourcePath,
|
||||
LoaderIterator<ResultType, ParameterType, ParameterType2> iterator,
|
||||
ParameterType parameter,
|
||||
ParameterType2 parameter2) {
|
||||
TIntObjectHashMap<Object> map = resourcePath.endsWith(UrlClassLoader.CLASS_EXTENSION) ?
|
||||
myClassPackagesCache : myResourcePackagesCache;
|
||||
String packageName = getPackageName(resourcePath);
|
||||
|
||||
int hash = packageName.hashCode();
|
||||
Object o = map.get(hash);
|
||||
if (doDebug) myDebugInfo.checkLoadersCount(resourcePath, o);
|
||||
|
||||
if (o == null) return null;
|
||||
if (o instanceof Loader) return iterator.process((Loader)o, parameter, parameter2);
|
||||
Loader[] loaders = (Loader[])o;
|
||||
for(Loader l:loaders) {
|
||||
ResultType result = iterator.process(l, parameter, parameter2);
|
||||
if (result != null) return result;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private static String getPackageName(String resourcePath) {
|
||||
final int idx = resourcePath.lastIndexOf('/');
|
||||
return idx > 0 ? resourcePath.substring(0, idx) : "";
|
||||
}
|
||||
|
||||
private int registeredBeforeClose, registeredAfterClose;
|
||||
|
||||
public void addNameEntry(String name, Loader loader) {
|
||||
int hash = hashFromNameAndLoader(transformName(name), loader);
|
||||
myResourceIndex.add(hash);
|
||||
name = transformName(name);
|
||||
if (doDebug) myDebugInfo.addNameEntry(name, loader);
|
||||
if (myTempMapMode) {
|
||||
Set<Loader> loaders = myResources2LoadersTempMap.get(name);
|
||||
if (loaders == null) myResources2LoadersTempMap.put(name, loaders = new THashSet<Loader>());
|
||||
boolean added = loaders.add(loader);
|
||||
if (UrlClassLoader.doDebug && added) ++registeredBeforeClose;
|
||||
} else {
|
||||
if (UrlClassLoader.doDebug) {
|
||||
if (!myNameFilter.maybeContains(name, loader)) ++registeredAfterClose;
|
||||
}
|
||||
|
||||
myNameFilter.add(name, loader);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean loaderHasName(String name, Loader loader) {
|
||||
int hash = hashFromNameAndLoader(transformName(name), loader);
|
||||
String origName = name;
|
||||
boolean result;
|
||||
name = transformName(name);
|
||||
|
||||
if (myTempMapMode) {
|
||||
++requests;
|
||||
Set<Loader> loaders = myResources2LoadersTempMap.get(name);
|
||||
result = loaders != null && loaders.contains(loader);
|
||||
|
||||
boolean result = myResourceIndex.contains(hash);
|
||||
++requests;
|
||||
if (!result) ++hits;
|
||||
|
||||
if (!result) ++hits;
|
||||
if (doDebug) {
|
||||
boolean result2 = myDebugInfo.loaderHashName(name, loader);
|
||||
if (result2 != result) {
|
||||
++diffs3;
|
||||
}
|
||||
Resource resource = loader.getResource(origName, true);
|
||||
if ((resource != null && !result) || (resource == null && result)) {
|
||||
++falseHits;
|
||||
}
|
||||
}
|
||||
|
||||
if (UrlClassLoader.doDebug && false) { // extra costly checks
|
||||
Resource resource = loader.getResource(name, true);
|
||||
if ((resource != null && !result) || (resource == null && result)) {
|
||||
++falseHits;
|
||||
if (requests % 1000 == 0 && UrlClassLoader.doDebug) {
|
||||
UrlClassLoader.debug("Avoided disk hits: "+hits + " from " + requests + (doDebug ? ", false hits:" + falseHits + ", bitmap diffs:"+diffs3:""));
|
||||
}
|
||||
} else {
|
||||
++requests2;
|
||||
result = myNameFilter.maybeContains(name, loader);
|
||||
if (!result) ++hits2;
|
||||
|
||||
if (doDebug) {
|
||||
boolean result2 = myDebugInfo.loaderHashName(name, loader);
|
||||
if (result2 != result) {
|
||||
++diffs2;
|
||||
}
|
||||
|
||||
Set<Loader> loaders = myResources2LoadersTempMap.get(name);
|
||||
if (result != (loaders != null && loaders.contains(loader))) {
|
||||
++diffs;
|
||||
}
|
||||
|
||||
Resource resource = loader.getResource(origName, true);
|
||||
if (resource == null && result) {
|
||||
++falseHits2;
|
||||
}
|
||||
if (resource != null && !result) {
|
||||
++falseHits2;
|
||||
}
|
||||
}
|
||||
|
||||
if (requests2 % 1000 == 0 && UrlClassLoader.doDebug) {
|
||||
UrlClassLoader.debug("Avoided disk hits2: "+hits2 + " from " + requests2 + (doDebug ? "," + diffs + ", false hits:" + falseHits2 + ", bitmap diffs:"+diffs2:""));
|
||||
}
|
||||
}
|
||||
if (requests % 1000 == 0 && UrlClassLoader.doDebug) {
|
||||
UrlClassLoader.debug("Avoided disk hits: "+hits + " from " + requests + "," + falseHits);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
private String transformName(String name) {
|
||||
if (name.endsWith("/")) {
|
||||
name = name.substring(0, name.length() - 1);
|
||||
@@ -98,19 +203,198 @@ public class ClasspathCache {
|
||||
return name;
|
||||
}
|
||||
|
||||
private static int hits, requests, falseHits;
|
||||
|
||||
private int hashFromNameAndLoader(String name, Loader loader) {
|
||||
int hash = name.hashCode();
|
||||
int i = loader.getIndex();
|
||||
while(i > 0) {
|
||||
hash = hash * 31 + ((i % 10) + '0');
|
||||
i /= 10;
|
||||
}
|
||||
return hash;
|
||||
}
|
||||
private static int hits, requests, falseHits, requests2, hits2, falseHits2, diffs, diffs2, diffs3;
|
||||
|
||||
void nameSymbolsLoaded() {
|
||||
//System.out.println("Loaded");
|
||||
if (!myTempMapMode) {
|
||||
if (UrlClassLoader.doDebug && registeredAfterClose > 0) {
|
||||
UrlClassLoader.debug("Registered number of classes after close "+registeredAfterClose + " "+toString());
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (UrlClassLoader.doDebug) {
|
||||
UrlClassLoader.debug("Registered number of classes before classes "+registeredBeforeClose + " "+toString());
|
||||
}
|
||||
|
||||
myTempMapMode = false;
|
||||
|
||||
int nBits = 0, uniques = 0;
|
||||
for(Map.Entry<String, Set<Loader>> e:myResources2LoadersTempMap.entrySet()) {
|
||||
int size = e.getValue().size();
|
||||
if (size == 1) {
|
||||
++uniques;
|
||||
}
|
||||
nBits += size;
|
||||
}
|
||||
if (nBits > 20000) {
|
||||
nBits += (int)(nBits * 0.03d); // allow some growth for Idea main loader
|
||||
}
|
||||
|
||||
myNameFilter = new BloomFilter(nBits, PROBABILITY);
|
||||
|
||||
for(Map.Entry<String, Set<Loader>> e:myResources2LoadersTempMap.entrySet()) {
|
||||
final String name = e.getKey();
|
||||
for(Loader loader: e.getValue()) {
|
||||
myNameFilter.add(name, loader);
|
||||
}
|
||||
}
|
||||
|
||||
if (!doDebug) {
|
||||
myResources2LoadersTempMap = null;
|
||||
}
|
||||
}
|
||||
|
||||
static class BloomFilter {
|
||||
private final int myHashFunctionCount;
|
||||
private final int NBITS;
|
||||
private final BitSet myResourceMap;
|
||||
private static final int SEED = 31;
|
||||
|
||||
BloomFilter(int nBits, double probability) {
|
||||
int bitsPerNameFactor = (int)Math.ceil(-Math.log(probability) / (Math.log(2) * Math.log(2)));
|
||||
myHashFunctionCount = (int)Math.ceil(bitsPerNameFactor * Math.log(2));
|
||||
|
||||
nBits = nBits * bitsPerNameFactor;
|
||||
|
||||
if ((nBits & 1) == 0) ++nBits;
|
||||
while(!isPrime(nBits)) nBits += 2;
|
||||
NBITS = nBits;
|
||||
myResourceMap = new BitSet(NBITS);
|
||||
}
|
||||
|
||||
private static boolean isPrime(int bits) {
|
||||
if ((bits & 1) == 0) return false;
|
||||
int sqrt = (int)Math.sqrt(bits);
|
||||
for(int i = 3; i <= sqrt; i+=2) {
|
||||
if (bits % i == 0) return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean maybeContains(String name, Loader loader) {
|
||||
int hash = hashFromNameAndLoader(name, loader, murmur(name, SEED));
|
||||
int hash2 = hashFromNameAndLoader(name, loader, hash);
|
||||
|
||||
for (int i = 0; i < myHashFunctionCount; ++i) {
|
||||
if (!myResourceMap.get(Math.abs((hash + i * hash2) % NBITS))) return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public void add(String name, Loader loader) {
|
||||
int hash1 = hashFromNameAndLoader(name, loader, murmur(name, SEED));
|
||||
int hash2 = hashFromNameAndLoader(name, loader, hash1);
|
||||
|
||||
for (int i = 0; i < myHashFunctionCount; ++i) {
|
||||
myResourceMap.set(Math.abs((hash1 + i * hash2) % NBITS));
|
||||
}
|
||||
}
|
||||
|
||||
private int hashFromNameAndLoader(String name, Loader loader, int n) {
|
||||
int hash = murmur(name, n);
|
||||
int i = loader.getIndex();
|
||||
while (i > 0) {
|
||||
hash = hash * n + ((i % 10) + '0');
|
||||
i /= 10;
|
||||
}
|
||||
return hash;
|
||||
}
|
||||
|
||||
private static int murmur(String data, int seed) {
|
||||
final int length = data.length();
|
||||
// 'm' and 'r' are mixing constants generated offline.
|
||||
// They're not really 'magic', they just happen to work well.
|
||||
final int m = 0x5bd1e995;
|
||||
final int r = 24;
|
||||
// Initialize the hash to a random value
|
||||
int h = seed ^ length;
|
||||
int length4 = length >> 2;
|
||||
|
||||
for (int i = 0; i < length4; i++) {
|
||||
final int i4 = i << 2;
|
||||
int k = data.charAt(i4) + (data.charAt(i4 + 1) << 8) +
|
||||
(data.charAt(i4 + 2) << 16) + (data.charAt(i4 + 3) << 24);
|
||||
k *= m;
|
||||
k ^= k >>> r;
|
||||
k *= m;
|
||||
h *= m;
|
||||
h ^= k;
|
||||
}
|
||||
|
||||
// Handle the last few bytes of the input array
|
||||
switch (length % 4) {
|
||||
case 3:
|
||||
h ^= data.charAt((length & ~3) + 2) << 16;
|
||||
case 2:
|
||||
h ^= data.charAt((length & ~3) + 1) << 8;
|
||||
case 1:
|
||||
h ^= data.charAt(length & ~3);
|
||||
h *= m;
|
||||
}
|
||||
|
||||
h ^= h >>> 13;
|
||||
h *= m;
|
||||
h ^= h >>> 15;
|
||||
|
||||
return h;
|
||||
}
|
||||
}
|
||||
|
||||
static class DebugInfo {
|
||||
private final HashMap<String, List<Loader>> myClassPackagesCache = new HashMap<String, List<Loader>>();
|
||||
private final HashMap<String, List<Loader>> myResourcePackagesCache = new HashMap<String, List<Loader>>();
|
||||
private final TIntHashSet myResourceIndex = new TIntHashSet();
|
||||
|
||||
private List<Loader> getLoaders(String resourcePath) {
|
||||
boolean isClassFile = resourcePath.endsWith(UrlClassLoader.CLASS_EXTENSION);
|
||||
final int idx = resourcePath.lastIndexOf('/');
|
||||
String packageName = idx > 0 ? resourcePath.substring(0, idx) : "";
|
||||
|
||||
Map<String, List<Loader>> map = isClassFile ? myClassPackagesCache : myResourcePackagesCache;
|
||||
List<Loader> list = map.get(packageName);
|
||||
if (list == null) {
|
||||
list = new SmartList<Loader>();
|
||||
map.put(packageName, list);
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
private void addResourceEntry(String resourcePath, Loader loader) {
|
||||
final List<Loader> loaders = getLoaders(resourcePath);
|
||||
if (!loaders.contains(loader)) { // TODO Make linked hash set instead?
|
||||
loaders.add(loader);
|
||||
}
|
||||
}
|
||||
|
||||
private void addNameEntry(String name, Loader loader) {
|
||||
int hash = hashFromNameAndLoader(name, loader);
|
||||
myResourceIndex.add(hash);
|
||||
}
|
||||
|
||||
private int hashFromNameAndLoader(String name, Loader loader) {
|
||||
int hash = name.hashCode();
|
||||
int i = loader.getIndex();
|
||||
while(i > 0) {
|
||||
hash = hash * 31 + ((i % 10) + '0');
|
||||
i /= 10;
|
||||
}
|
||||
return hash;
|
||||
}
|
||||
|
||||
public void checkLoadersCount(String resourcePath, Object o) {
|
||||
List<Loader> loaders1 = getLoaders(resourcePath);
|
||||
if (o == null && loaders1.size() != 0 ||
|
||||
o instanceof Loader && loaders1.size() != 1 ||
|
||||
o instanceof Loader[] && loaders1.size() != ((Loader[])o).length
|
||||
) {
|
||||
assert false;
|
||||
}
|
||||
}
|
||||
|
||||
private boolean loaderHashName(String name, Loader loader) {
|
||||
return myResourceIndex.contains(hashFromNameAndLoader(name, loader));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -89,7 +89,7 @@ class FileLoader extends Loader {
|
||||
if (check) {
|
||||
++misses;
|
||||
if (misses % 1000 == 0 && UrlClassLoader.doDebug) {
|
||||
UrlClassLoader.debug("Missed resource " + name + " from " + myRootDir);
|
||||
UrlClassLoader.debug("[Sample of] missed resource " + name + " from " + myRootDir);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,14 +1,13 @@
|
||||
package com.intellij.util.lang;
|
||||
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.util.io.zip.ZipShort;
|
||||
import gnu.trove.THashMap;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import sun.misc.Resource;
|
||||
|
||||
import java.io.*;
|
||||
import java.net.URL;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipInputStream;
|
||||
@@ -20,9 +19,9 @@ import java.util.zip.ZipInputStream;
|
||||
public class JarMemoryLoader {
|
||||
|
||||
public static final String SIZE_ENTRY = "META-INF/jb/$$size$$";
|
||||
private static final Logger LOG = Logger.getInstance(JarMemoryLoader.class);
|
||||
//private static final Logger LOG = Logger.getInstance(JarMemoryLoader.class);
|
||||
|
||||
private final Map<String, Resource> myResources = new HashMap<String, Resource>();
|
||||
private final Map<String, Resource> myResources = new THashMap<String, Resource>();
|
||||
|
||||
public Resource getResource(String entryName) {
|
||||
return myResources.remove(entryName);
|
||||
@@ -34,9 +33,9 @@ public class JarMemoryLoader {
|
||||
try {
|
||||
// long start = System.currentTimeMillis();
|
||||
JarMemoryLoader loader = load(inputStream, baseUrl);
|
||||
if (loader != null) {
|
||||
// if (loader != null) {
|
||||
// LOG.info(loader.myResources.size() + " classes from " + file.getName() + " preloaded in " + (System.currentTimeMillis() - start) + " ms");
|
||||
}
|
||||
// }
|
||||
return loader;
|
||||
}
|
||||
finally {
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
package com.siyeh.ipp.forloop.indexed;
|
||||
|
||||
class LabeledForLoop {
|
||||
|
||||
int[] getArr() {
|
||||
Label:
|
||||
<caret>for (int x: getArr()) {}
|
||||
return new int[]{1};
|
||||
}
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
package com.siyeh.ipp.forloop.indexed;
|
||||
|
||||
class LabeledForLoop {
|
||||
|
||||
int[] getArr() {
|
||||
int[] arr = getArr();
|
||||
Label:
|
||||
for (int i = 0, arrLength = arr.length; i < arrLength; i++) {
|
||||
int x = arr[i];
|
||||
}
|
||||
return new int[]{1};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
package com.siyeh.ipp.forloop.indexed;
|
||||
|
||||
class NewArray {
|
||||
void foo() {
|
||||
<caret>for (int k : new int[3]) {
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package com.siyeh.ipp.forloop.indexed;
|
||||
|
||||
class NewArray {
|
||||
void foo() {
|
||||
int[] ints = new int[3];
|
||||
for (int i = 0, intsLength = ints.length; i < intsLength; i++) {
|
||||
int k = ints[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.siyeh.ipp.forloop.indexed;
|
||||
|
||||
class NormalForEachLoop {
|
||||
void foo(int[] is) {
|
||||
<caret>for (int i : is) {
|
||||
System.out.println(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
package com.siyeh.ipp.forloop.indexed;
|
||||
|
||||
class NormalForEachLoop {
|
||||
void foo(int[] is) {
|
||||
for (int i1 = 0, isLength = is.length; i1 < isLength; i1++) {
|
||||
int i = is[i1];
|
||||
System.out.println(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright 2000-2012 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.siyeh.ipp.forloop;
|
||||
|
||||
import com.siyeh.IntentionPowerPackBundle;
|
||||
import com.siyeh.ipp.IPPTestCase;
|
||||
|
||||
public class ReplaceForEachLoopWithIndexedForLoopIntentionTest extends IPPTestCase {
|
||||
public void testLabeledForLoop() { doTest(); }
|
||||
public void testNormalForeachLoop() { doTest(); }
|
||||
public void testNewArray() { doTest(); }
|
||||
|
||||
@Override
|
||||
protected String getIntentionName() {
|
||||
return IntentionPowerPackBundle.message("replace.for.each.loop.with.indexed.for.loop.intention.name");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getRelativePath() {
|
||||
return "forloop/indexed";
|
||||
}
|
||||
}
|
||||
@@ -22,7 +22,6 @@ import com.intellij.openapi.vcs.changes.BinaryContentRevision;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.vcsUtil.VcsFileUtil;
|
||||
import git4idea.util.GitFileUtils;
|
||||
import git4idea.util.GitUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
|
||||
@@ -24,7 +24,6 @@ import git4idea.commands.GitCommand;
|
||||
import git4idea.commands.GitSimpleHandler;
|
||||
import git4idea.config.GitConfigUtil;
|
||||
import git4idea.history.GitHistoryUtils;
|
||||
import git4idea.util.GitUtil;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -32,7 +32,6 @@ import com.intellij.vcsUtil.VcsUtil;
|
||||
import git4idea.util.GitFileUtils;
|
||||
import git4idea.history.wholeTree.GitBinaryMultipleContentsRevision;
|
||||
import git4idea.history.wholeTree.GitMultipleContentsRevision;
|
||||
import git4idea.util.GitUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
|
||||
@@ -28,7 +28,6 @@ import com.intellij.openapi.vcs.impl.ContentRevisionCache;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.vcsUtil.VcsFileUtil;
|
||||
import git4idea.util.GitFileUtils;
|
||||
import git4idea.util.GitUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
|
||||
@@ -22,7 +22,6 @@ import com.intellij.openapi.vcs.history.VcsRevisionNumber;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import git4idea.commands.GitCommand;
|
||||
import git4idea.commands.GitSimpleHandler;
|
||||
import git4idea.util.GitUtil;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
|
||||
@@ -19,7 +19,6 @@ package git4idea;
|
||||
import com.intellij.openapi.vcs.AbstractVcs;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.util.containers.HashSet;
|
||||
import git4idea.util.GitUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
+3
-5
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package git4idea.util;
|
||||
package git4idea;
|
||||
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.project.Project;
|
||||
@@ -29,19 +29,17 @@ import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.util.Consumer;
|
||||
import com.intellij.vcsUtil.VcsFileUtil;
|
||||
import com.intellij.vcsUtil.VcsUtil;
|
||||
import git4idea.GitBranch;
|
||||
import git4idea.GitVcs;
|
||||
import git4idea.changes.GitChangeUtils;
|
||||
import git4idea.changes.GitCommittedChangeList;
|
||||
import git4idea.commands.GitCommand;
|
||||
import git4idea.commands.GitHandler;
|
||||
import git4idea.commands.GitSimpleHandler;
|
||||
import git4idea.util.StringScanner;
|
||||
import git4idea.config.GitConfigUtil;
|
||||
import git4idea.i18n.GitBundle;
|
||||
import git4idea.repo.GitRemote;
|
||||
import git4idea.repo.GitRepository;
|
||||
import git4idea.repo.GitRepositoryManager;
|
||||
import git4idea.util.StringScanner;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -57,7 +55,7 @@ public class GitUtil {
|
||||
/**
|
||||
* The logger instance
|
||||
*/
|
||||
private final static Logger LOG = Logger.getInstance("#git4idea.util.GitUtil");
|
||||
private final static Logger LOG = Logger.getInstance("#git4idea.GitUtil");
|
||||
/**
|
||||
* Comparator for virtual files by name
|
||||
*/
|
||||
@@ -73,7 +73,6 @@ import git4idea.rollback.GitRollbackEnvironment;
|
||||
import git4idea.status.GitChangeProvider;
|
||||
import git4idea.ui.branch.GitBranchWidget;
|
||||
import git4idea.update.GitUpdateEnvironment;
|
||||
import git4idea.util.GitUtil;
|
||||
import git4idea.vfs.GitRootTracker;
|
||||
import git4idea.vfs.GitRootsListener;
|
||||
import git4idea.vfs.GitVFSListener;
|
||||
|
||||
@@ -23,7 +23,7 @@ import com.intellij.openapi.vcs.ProjectLevelVcsManager;
|
||||
import com.intellij.openapi.vcs.VcsException;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.util.Consumer;
|
||||
import git4idea.util.GitUtil;
|
||||
import git4idea.GitUtil;
|
||||
import git4idea.GitVcs;
|
||||
import git4idea.util.GitFileUtils;
|
||||
import git4idea.i18n.GitBundle;
|
||||
|
||||
@@ -32,8 +32,8 @@ import com.intellij.openapi.vcs.VcsDirectoryMapping;
|
||||
import com.intellij.openapi.vcs.VcsException;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.vcsUtil.VcsFileUtil;
|
||||
import git4idea.GitUtil;
|
||||
import git4idea.commands.Git;
|
||||
import git4idea.util.GitUtil;
|
||||
import git4idea.GitVcs;
|
||||
import git4idea.i18n.GitBundle;
|
||||
import git4idea.util.GitUIUtil;
|
||||
|
||||
@@ -24,7 +24,7 @@ import com.intellij.openapi.vcs.VcsException;
|
||||
import com.intellij.openapi.vcs.update.ActionInfo;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import git4idea.GitRevisionNumber;
|
||||
import git4idea.util.GitUtil;
|
||||
import git4idea.GitUtil;
|
||||
import git4idea.commands.GitLineHandler;
|
||||
import git4idea.commands.GitStandardProgressAnalyzer;
|
||||
import git4idea.commands.GitTask;
|
||||
|
||||
@@ -27,7 +27,7 @@ import com.intellij.openapi.vcs.TransactionRunnable;
|
||||
import com.intellij.openapi.vcs.VcsException;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.vcsUtil.VcsFileUtil;
|
||||
import git4idea.util.GitUtil;
|
||||
import git4idea.GitUtil;
|
||||
import git4idea.GitVcs;
|
||||
import git4idea.i18n.GitBundle;
|
||||
import git4idea.repo.GitRepository;
|
||||
|
||||
@@ -31,7 +31,7 @@ import com.intellij.openapi.vcs.versionBrowser.CommittedChangeList;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import git4idea.GitFileRevision;
|
||||
import git4idea.util.GitUtil;
|
||||
import git4idea.GitUtil;
|
||||
import git4idea.changes.GitChangeUtils;
|
||||
import git4idea.i18n.GitBundle;
|
||||
import git4idea.util.GitUIUtil;
|
||||
|
||||
@@ -32,7 +32,7 @@ import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.vcsUtil.VcsUtil;
|
||||
import git4idea.GitFileRevision;
|
||||
import git4idea.GitRevisionNumber;
|
||||
import git4idea.util.GitUtil;
|
||||
import git4idea.GitUtil;
|
||||
import git4idea.commands.GitCommand;
|
||||
import git4idea.commands.GitSimpleHandler;
|
||||
import git4idea.util.StringScanner;
|
||||
|
||||
@@ -27,7 +27,7 @@ import com.intellij.util.ui.UIUtil;
|
||||
import git4idea.GitVcs;
|
||||
import git4idea.merge.GitConflictResolver;
|
||||
import git4idea.repo.GitRepository;
|
||||
import git4idea.util.GitUtil;
|
||||
import git4idea.GitUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.swing.event.HyperlinkEvent;
|
||||
@@ -192,7 +192,8 @@ abstract class GitBranchOperation {
|
||||
String description = "You have to resolve all merge conflicts before checkout.<br/>" + getRollbackProposal();
|
||||
// suppressing: this message looks ugly if capitalized by words
|
||||
//noinspection DialogTitleCapitalization
|
||||
ok.set(Messages.OK == Messages.showYesNoDialog(myProject, description, UNMERGED_FILES_ERROR_TITLE, "Rollback", "Don't rollback", Messages.getErrorIcon()));
|
||||
ok.set(Messages.OK == Messages.showYesNoDialog(myProject, description, UNMERGED_FILES_ERROR_TITLE, "Rollback", "Don't rollback",
|
||||
Messages.getErrorIcon()));
|
||||
}
|
||||
});
|
||||
if (ok.get()) {
|
||||
|
||||
@@ -38,6 +38,7 @@ import com.intellij.util.continuation.ContinuationContext;
|
||||
import com.intellij.util.text.DateFormatUtil;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import com.intellij.vcsUtil.VcsUtil;
|
||||
import git4idea.GitUtil;
|
||||
import git4idea.GitVcs;
|
||||
import git4idea.commands.*;
|
||||
import git4idea.merge.GitConflictResolver;
|
||||
@@ -45,7 +46,6 @@ import git4idea.repo.GitRepository;
|
||||
import git4idea.stash.GitChangesSaver;
|
||||
import git4idea.update.GitComplexProcess;
|
||||
import git4idea.util.GitUIUtil;
|
||||
import git4idea.util.GitUtil;
|
||||
import git4idea.util.UntrackedFilesNotifier;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -27,7 +27,7 @@ import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import git4idea.GitContentRevision;
|
||||
import git4idea.GitRevisionNumber;
|
||||
import git4idea.util.GitUtil;
|
||||
import git4idea.GitUtil;
|
||||
import git4idea.commands.GitCommand;
|
||||
import git4idea.commands.GitHandler;
|
||||
import git4idea.commands.GitSimpleHandler;
|
||||
|
||||
@@ -37,7 +37,7 @@ import com.intellij.util.Consumer;
|
||||
import git4idea.GitBranch;
|
||||
import git4idea.GitFileRevision;
|
||||
import git4idea.GitDeprecatedRemote;
|
||||
import git4idea.util.GitUtil;
|
||||
import git4idea.GitUtil;
|
||||
import git4idea.commands.GitSimpleHandler;
|
||||
import git4idea.history.GitHistoryUtils;
|
||||
import git4idea.history.browser.GitCommit;
|
||||
|
||||
@@ -27,7 +27,7 @@ import com.intellij.util.Consumer;
|
||||
import com.intellij.util.containers.Convertor;
|
||||
import git4idea.GitBranchesSearcher;
|
||||
import git4idea.GitRevisionNumber;
|
||||
import git4idea.util.GitUtil;
|
||||
import git4idea.GitUtil;
|
||||
import git4idea.commands.GitSimpleHandler;
|
||||
import git4idea.history.GitHistoryUtils;
|
||||
import git4idea.history.browser.SHAHash;
|
||||
|
||||
@@ -39,7 +39,7 @@ import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import com.intellij.vcsUtil.VcsFileUtil;
|
||||
import com.intellij.vcsUtil.VcsUtil;
|
||||
import git4idea.util.GitUtil;
|
||||
import git4idea.GitUtil;
|
||||
import git4idea.commands.GitCommand;
|
||||
import git4idea.util.GitFileUtils;
|
||||
import git4idea.commands.GitSimpleHandler;
|
||||
|
||||
@@ -21,7 +21,7 @@ import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.vcs.VcsException;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import git4idea.util.GitUtil;
|
||||
import git4idea.GitUtil;
|
||||
import git4idea.GitVcs;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.vcs.VcsException;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import git4idea.util.GitUtil;
|
||||
import git4idea.GitUtil;
|
||||
import git4idea.commands.GitCommand;
|
||||
import git4idea.commands.GitSimpleHandler;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
|
||||
@@ -30,7 +30,7 @@ import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.vcsUtil.VcsUtil;
|
||||
import git4idea.GitContentRevision;
|
||||
import git4idea.GitFileRevision;
|
||||
import git4idea.util.GitUtil;
|
||||
import git4idea.GitUtil;
|
||||
import git4idea.GitVcs;
|
||||
import git4idea.history.GitHistoryUtils;
|
||||
import git4idea.i18n.GitBundle;
|
||||
|
||||
@@ -29,7 +29,7 @@ import com.intellij.util.Processor;
|
||||
import com.intellij.util.ui.ColumnInfo;
|
||||
import git4idea.GitFileRevision;
|
||||
import git4idea.GitRevisionNumber;
|
||||
import git4idea.util.GitUtil;
|
||||
import git4idea.GitUtil;
|
||||
import git4idea.GitVcs;
|
||||
import git4idea.actions.GitShowAllSubmittedFilesAction;
|
||||
import git4idea.changes.GitChangeUtils;
|
||||
|
||||
@@ -39,7 +39,7 @@ import com.intellij.util.concurrency.Semaphore;
|
||||
import git4idea.GitBranch;
|
||||
import git4idea.GitFileRevision;
|
||||
import git4idea.GitRevisionNumber;
|
||||
import git4idea.util.GitUtil;
|
||||
import git4idea.GitUtil;
|
||||
import git4idea.commands.*;
|
||||
import git4idea.config.GitConfigUtil;
|
||||
import git4idea.history.browser.GitCommit;
|
||||
|
||||
@@ -27,7 +27,7 @@ import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.vcsUtil.VcsUtil;
|
||||
import git4idea.GitContentRevision;
|
||||
import git4idea.GitRevisionNumber;
|
||||
import git4idea.util.GitUtil;
|
||||
import git4idea.GitUtil;
|
||||
import git4idea.commands.GitHandler;
|
||||
import git4idea.history.wholeTree.AbstractHash;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -21,7 +21,7 @@ import com.intellij.openapi.vcs.FilePath;
|
||||
import com.intellij.openapi.vcs.changes.FilePathsHelper;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.util.PairProcessor;
|
||||
import git4idea.util.GitUtil;
|
||||
import git4idea.GitUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
|
||||
+1
-1
@@ -45,7 +45,7 @@ import com.intellij.ui.content.ContentManager;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.SmartList;
|
||||
import com.intellij.util.ui.AdjustComponentWhenShown;
|
||||
import git4idea.util.GitUtil;
|
||||
import git4idea.GitUtil;
|
||||
import git4idea.GitVcs;
|
||||
import git4idea.config.GitVersion;
|
||||
import git4idea.history.browser.GitProjectLogManager;
|
||||
|
||||
@@ -30,7 +30,7 @@ import com.intellij.vcsUtil.VcsRunnable;
|
||||
import com.intellij.vcsUtil.VcsUtil;
|
||||
import git4idea.GitFileRevision;
|
||||
import git4idea.GitRevisionNumber;
|
||||
import git4idea.util.GitUtil;
|
||||
import git4idea.GitUtil;
|
||||
import git4idea.commands.GitCommand;
|
||||
import git4idea.util.GitFileUtils;
|
||||
import git4idea.commands.GitSimpleHandler;
|
||||
|
||||
@@ -23,7 +23,7 @@ import com.intellij.openapi.vcs.update.FileGroup;
|
||||
import com.intellij.openapi.vcs.update.UpdatedFiles;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import git4idea.GitRevisionNumber;
|
||||
import git4idea.util.GitUtil;
|
||||
import git4idea.GitUtil;
|
||||
import git4idea.GitVcs;
|
||||
import git4idea.commands.GitCommand;
|
||||
import git4idea.commands.GitSimpleHandler;
|
||||
|
||||
@@ -26,7 +26,7 @@ import com.intellij.ui.components.JBLoadingPanel;
|
||||
import com.intellij.util.Consumer;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import git4idea.GitBranch;
|
||||
import git4idea.util.GitUtil;
|
||||
import git4idea.GitUtil;
|
||||
import git4idea.repo.GitRemote;
|
||||
import git4idea.repo.GitRepository;
|
||||
import git4idea.repo.GitRepositoryManager;
|
||||
|
||||
@@ -31,7 +31,7 @@ import com.intellij.util.text.DateFormatUtil;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import com.intellij.util.ui.tree.TreeUtil;
|
||||
import git4idea.GitBranch;
|
||||
import git4idea.util.GitUtil;
|
||||
import git4idea.GitUtil;
|
||||
import git4idea.history.browser.GitCommit;
|
||||
import git4idea.repo.GitRepository;
|
||||
import git4idea.util.GitUIUtil;
|
||||
|
||||
@@ -31,7 +31,7 @@ import com.intellij.openapi.vcs.update.UpdateInfoTree;
|
||||
import com.intellij.openapi.vcs.update.UpdatedFiles;
|
||||
import git4idea.GitBranch;
|
||||
import git4idea.GitRevisionNumber;
|
||||
import git4idea.util.GitUtil;
|
||||
import git4idea.GitUtil;
|
||||
import git4idea.GitVcs;
|
||||
import git4idea.merge.MergeChangeCollector;
|
||||
import git4idea.repo.GitRepository;
|
||||
|
||||
@@ -19,7 +19,7 @@ import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.vcs.VcsException;
|
||||
import git4idea.GitBranch;
|
||||
import git4idea.util.GitUtil;
|
||||
import git4idea.GitUtil;
|
||||
import git4idea.branch.GitBranchPair;
|
||||
import git4idea.repo.GitRemote;
|
||||
import git4idea.repo.GitRepository;
|
||||
|
||||
@@ -25,9 +25,9 @@ import com.intellij.openapi.vcs.VcsException;
|
||||
import com.intellij.openapi.vcs.update.UpdatedFiles;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import git4idea.GitUtil;
|
||||
import git4idea.commands.Git;
|
||||
import git4idea.GitBranch;
|
||||
import git4idea.util.GitUtil;
|
||||
import git4idea.GitVcs;
|
||||
import git4idea.branch.GitBranchPair;
|
||||
import git4idea.commands.GitCommandResult;
|
||||
|
||||
@@ -20,7 +20,7 @@ import com.intellij.openapi.ui.DialogWrapper;
|
||||
import com.intellij.ui.components.JBLabel;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import git4idea.GitBranch;
|
||||
import git4idea.util.GitUtil;
|
||||
import git4idea.GitUtil;
|
||||
import git4idea.config.UpdateMethod;
|
||||
import git4idea.repo.GitRepository;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -20,7 +20,7 @@ import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.vfs.VfsUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import git4idea.GitRevisionNumber;
|
||||
import git4idea.util.GitUtil;
|
||||
import git4idea.GitUtil;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
|
||||
@@ -22,7 +22,7 @@ import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.vcs.ProjectLevelVcsManager;
|
||||
import com.intellij.openapi.vcs.VcsException;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import git4idea.util.GitUtil;
|
||||
import git4idea.GitUtil;
|
||||
import git4idea.GitVcs;
|
||||
import git4idea.commands.*;
|
||||
import git4idea.merge.GitConflictResolver;
|
||||
|
||||
@@ -27,7 +27,7 @@ import com.intellij.openapi.vfs.LocalFileSystem;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.vcsUtil.VcsFileUtil;
|
||||
import com.intellij.vcsUtil.VcsUtil;
|
||||
import git4idea.util.GitUtil;
|
||||
import git4idea.GitUtil;
|
||||
import git4idea.commands.GitCommand;
|
||||
import git4idea.util.GitFileUtils;
|
||||
import git4idea.commands.GitHandlerUtil;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user