diff --git a/RegExpSupport/src/org/intellij/lang/regexp/intention/CheckRegExpForm.form b/RegExpSupport/src/org/intellij/lang/regexp/intention/CheckRegExpForm.form
index 9029a33969fc..e0196cb1b26c 100644
--- a/RegExpSupport/src/org/intellij/lang/regexp/intention/CheckRegExpForm.form
+++ b/RegExpSupport/src/org/intellij/lang/regexp/intention/CheckRegExpForm.form
@@ -1,92 +1,57 @@
diff --git a/RegExpSupport/src/org/intellij/lang/regexp/intention/CheckRegExpForm.java b/RegExpSupport/src/org/intellij/lang/regexp/intention/CheckRegExpForm.java
index 925d37ba3d59..51fc45789200 100644
--- a/RegExpSupport/src/org/intellij/lang/regexp/intention/CheckRegExpForm.java
+++ b/RegExpSupport/src/org/intellij/lang/regexp/intention/CheckRegExpForm.java
@@ -21,14 +21,17 @@ import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.CustomShortcutSet;
import com.intellij.openapi.application.ApplicationManager;
+import com.intellij.openapi.application.ModalityState;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.event.DocumentAdapter;
import com.intellij.openapi.editor.event.DocumentEvent;
+import com.intellij.openapi.editor.ex.EditorEx;
import com.intellij.openapi.fileTypes.PlainTextFileType;
import com.intellij.openapi.progress.ProcessCanceledException;
import com.intellij.openapi.project.Project;
+import com.intellij.openapi.ui.popup.Balloon;
+import com.intellij.openapi.ui.popup.JBPopupFactory;
import com.intellij.openapi.util.Computable;
-import com.intellij.openapi.util.Condition;
import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.wm.IdeFocusManager;
@@ -37,7 +40,6 @@ import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiLanguageInjectionHost;
import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil;
import com.intellij.ui.EditorTextField;
-import com.intellij.ui.Gray;
import com.intellij.ui.JBColor;
import com.intellij.ui.components.JBLabel;
import com.intellij.util.Alarm;
@@ -49,8 +51,6 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.TestOnly;
import javax.swing.*;
-import javax.swing.border.CompoundBorder;
-import javax.swing.border.LineBorder;
import java.awt.*;
import java.util.regex.Pattern;
@@ -82,12 +82,17 @@ public class CheckRegExpForm {
Document document = PsiDocumentManager.getInstance(myProject).getDocument(myRegexpFile);
myRegExp = new EditorTextField(document, myProject, RegExpLanguage.INSTANCE.getAssociatedFileType());
- myRegExp.setPreferredWidth(Math.max(JBUI.scale(300), myRegExp.getPreferredSize().width));
final String sampleText = PropertiesComponent.getInstance(myProject).getValue(LAST_EDITED_REGEXP, "Sample Text");
- mySampleText = new EditorTextField(sampleText, myProject, PlainTextFileType.INSTANCE);
- mySampleText.setBorder(
- new CompoundBorder(JBUI.Borders.empty(2, 2, 2, 4), new LineBorder(UIUtil.isUnderDarcula() ? Gray._100 : JBColor.border())));
+ mySampleText = new EditorTextField(sampleText, myProject, PlainTextFileType.INSTANCE) {
+ @Override
+ protected void updateBorder(@NotNull EditorEx editor) {
+ setupBorder(editor);
+ }
+ };
mySampleText.setOneLineMode(false);
+ int preferredWidth = Math.max(JBUI.scale(250), myRegExp.getPreferredSize().width);
+ myRegExp.setPreferredWidth(preferredWidth);
+ mySampleText.setPreferredWidth(preferredWidth);
myRootPanel = new JPanel(new BorderLayout()) {
Disposable disposable;
@@ -112,7 +117,7 @@ public class CheckRegExpForm {
public void documentChanged(DocumentEvent e) {
updater.cancelAllRequests();
if (!updater.isDisposed()) {
- updater.addRequest(() -> updateBalloon(), 200);
+ updater.addRequest(CheckRegExpForm.this::updateBalloon, 200);
}
}
};
@@ -130,6 +135,7 @@ public class CheckRegExpForm {
PropertiesComponent.getInstance(myProject).setValue(LAST_EDITED_REGEXP, mySampleText.getText());
}
};
+ myRootPanel.setBorder(JBUI.Borders.empty(UIUtil.DEFAULT_VGAP, UIUtil.DEFAULT_HGAP));
}
@NotNull
@@ -149,7 +155,9 @@ public class CheckRegExpForm {
mySampleText.setBackground(correct != null && correct ? BACKGROUND_COLOR_MATCH : BACKGROUND_COLOR_NOMATCH);
myMessage.setText(correct == null ? "Pattern is too complex" : correct ? "Matches!" : "No match");
myRootPanel.revalidate();
- }, o -> false);
+ Balloon balloon = JBPopupFactory.getInstance().getParentBalloonFor(myRootPanel);
+ if (balloon != null) balloon.revalidate();
+ }, ModalityState.current());
}
@TestOnly
diff --git a/RegExpSupport/src/org/intellij/lang/regexp/intention/CheckRegExpIntentionAction.java b/RegExpSupport/src/org/intellij/lang/regexp/intention/CheckRegExpIntentionAction.java
index 6da84caa56ec..aee165a4db8c 100644
--- a/RegExpSupport/src/org/intellij/lang/regexp/intention/CheckRegExpIntentionAction.java
+++ b/RegExpSupport/src/org/intellij/lang/regexp/intention/CheckRegExpIntentionAction.java
@@ -16,7 +16,9 @@
package org.intellij.lang.regexp.intention;
import com.intellij.codeInsight.intention.impl.QuickEditAction;
+import com.intellij.codeInsight.intention.impl.QuickEditHandler;
import com.intellij.lang.Language;
+import com.intellij.lang.injection.InjectedLanguageManager;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.project.Project;
@@ -26,6 +28,7 @@ import com.intellij.openapi.util.TextRange;
import com.intellij.psi.PsiDocumentManager;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
+import com.intellij.util.IncorrectOperationException;
import org.intellij.lang.regexp.RegExpLanguage;
import org.jetbrains.annotations.NotNull;
@@ -44,7 +47,19 @@ public class CheckRegExpIntentionAction extends QuickEditAction implements Icona
Language language = pair.first.getLanguage();
return language.isKindOf(RegExpLanguage.INSTANCE);
}
- return false;
+ PsiFile baseFile = InjectedLanguageManager.getInstance(project).getTopLevelFile(file);
+ return baseFile != null && baseFile.getLanguage().isKindOf(RegExpLanguage.INSTANCE);
+ }
+
+ @Override
+ public void invoke(@NotNull Project project, Editor editor, PsiFile file) throws IncorrectOperationException {
+ PsiFile baseFile = InjectedLanguageManager.getInstance(project).getTopLevelFile(file);
+ if (baseFile == null || !baseFile.getLanguage().isKindOf(RegExpLanguage.INSTANCE)) {
+ super.invoke(project, editor, file);
+ return;
+ }
+ JComponent component = createBalloonComponent(file);
+ if (component != null) QuickEditHandler.showBalloon(editor, file, component);
}
@Override
diff --git a/build/scripts/libLicenses.gant b/build/scripts/libLicenses.gant
index e7d1bd41f2a3..a295e970a802 100644
--- a/build/scripts/libLicenses.gant
+++ b/build/scripts/libLicenses.gant
@@ -162,7 +162,7 @@ libraryLicense(name: "ANTLR 4 Runtime", libraryName: "antlr-runtime-4.1.jar", ve
libraryLicense(name: "Antlr", libraryName: "antlr.jar", version: "3.4", license: "BSD", url: "http://www.antlr.org", licenseUrl: "http://www.antlr.org/license.html")
libraryLicense(name: "Apache Commons BeanUtils", libraryName: "commons-beanutils.jar", version: "1.6", license: "Apache 2.0", url: "http://commons.apache.org/beanutils/")
libraryLicense(name: "Apache Commons Codec", libraryName: "commons-codec", version: "1.8", license: "Apache 2.0", url: "http://commons.apache.org/codec/", licenseUrl: "http://www.apache.org/licenses/")
-libraryLicense(name: "Apache Commons Compress", libraryName: "commons-compress-android", version: "1.0", license: "Apache 2.0", url: "http://commons.apache.org/proper/commons-compress/", licenseUrl: "http://www.apache.org/licenses/LICENSE-2.0")
+libraryLicense(name: "Apache Commons Compress", libraryName: "commons-compress", version: "1.10", license: "Apache 2.0", url: "http://commons.apache.org/proper/commons-compress/", licenseUrl: "http://www.apache.org/licenses/LICENSE-2.0")
libraryLicense(name: "Apache Commons Discovery", libraryName: "commons-discovery-0.4.jar", version: "0.4", license: "Apache 2.0", url: "http://jakarta.apache.org/commons/discovery/", licenseUrl: "http://www.apache.org/licenses/")
libraryLicense(name: "Apache Commons HTTPClient", libraryName: "http-client-3.1", version: "3.1 (with patch by JetBrains)", license: "Apache 2.0", url: "http://hc.apache.org/httpclient-3.x")
libraryLicense(name: "Apache Commons IO", libraryName: "commons-io-1.4.jar", version: "1.4", license: "Apache 2.0", url: "http://commons.apache.org/io/", licenseUrl: "http://www.apache.org/licenses/LICENSE-2.0.txt")
diff --git a/java/execution/impl/src/com/intellij/execution/JavaTestFrameworkRunnableState.java b/java/execution/impl/src/com/intellij/execution/JavaTestFrameworkRunnableState.java
index d5f1ab56961d..ad173f205ebb 100644
--- a/java/execution/impl/src/com/intellij/execution/JavaTestFrameworkRunnableState.java
+++ b/java/execution/impl/src/com/intellij/execution/JavaTestFrameworkRunnableState.java
@@ -44,7 +44,6 @@ import com.intellij.openapi.roots.ModuleRootManager;
import com.intellij.openapi.roots.ProjectRootManager;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.Disposer;
-import com.intellij.openapi.util.Getter;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.registry.Registry;
import com.intellij.openapi.util.text.StringUtil;
@@ -136,7 +135,6 @@ public abstract class JavaTestFrameworkRunnableState oldToNewElementsMapping = new HashMap();
for (int idx = 0; idx < myElementsToMove.length; idx++) {
PsiElement element = myElementsToMove[idx];
@@ -528,7 +535,6 @@ public class MoveClassesOrPackagesProcessor extends BaseRefactoringProcessor {
}
else if (element instanceof PsiClass) {
final PsiClass psiClass = (PsiClass)element;
- MoveClassesOrPackagesUtil.prepareMoveClass(psiClass);
final PsiClass newElement = MoveClassesOrPackagesUtil.doMoveClass(psiClass, myMoveDestination.getTargetDirectory(element.getContainingFile()), allClasses.get(psiClass));
oldToNewElementsMapping.put(element, newElement);
element = newElement;
diff --git a/java/java-runtime/src/com/intellij/rt/execution/testFrameworks/ForkedSplitter.java b/java/java-runtime/src/com/intellij/rt/execution/testFrameworks/ForkedSplitter.java
index 3e124dd2d4d8..64bc43cad745 100644
--- a/java/java-runtime/src/com/intellij/rt/execution/testFrameworks/ForkedSplitter.java
+++ b/java/java-runtime/src/com/intellij/rt/execution/testFrameworks/ForkedSplitter.java
@@ -42,7 +42,7 @@ public abstract class ForkedSplitter extends ForkedByModuleSplitter {
sendTree(myRootDescription);
if (myWorkingDirsPath == null || new File(myWorkingDirsPath).length() == 0) {
final String classpath = System.getProperty("java.class.path");
- if (RepeatCount.getCount(repeatCount) != 0 && myForkMode.equals("repeat")) {
+ if (repeatCount != null && RepeatCount.getCount(repeatCount) != 0 && myForkMode.equals("repeat")) {
return startChildFork(createChildArgs(myRootDescription), null, classpath, repeatCount);
}
final List children = getChildren(myRootDescription);
diff --git a/java/java-tests/testData/refactoring/moveClass/conflictingNames/after/p1/empty.txt b/java/java-tests/testData/refactoring/moveClass/conflictingNames/after/p1/empty.txt
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/java/java-tests/testData/refactoring/moveClass/conflictingNames/after/p2/First.java b/java/java-tests/testData/refactoring/moveClass/conflictingNames/after/p2/First.java
new file mode 100644
index 000000000000..3caf28f29574
--- /dev/null
+++ b/java/java-tests/testData/refactoring/moveClass/conflictingNames/after/p2/First.java
@@ -0,0 +1,2 @@
+package p2;
+public class First {}
\ No newline at end of file
diff --git a/java/java-tests/testData/refactoring/moveClass/conflictingNames/after/p2/Test.java b/java/java-tests/testData/refactoring/moveClass/conflictingNames/after/p2/Test.java
new file mode 100644
index 000000000000..378e819e4ad0
--- /dev/null
+++ b/java/java-tests/testData/refactoring/moveClass/conflictingNames/after/p2/Test.java
@@ -0,0 +1,4 @@
+package p2;
+public class Test {
+ public static void f() {}
+}
\ No newline at end of file
diff --git a/java/java-tests/testData/refactoring/moveClass/conflictingNames/after/p3/First.java b/java/java-tests/testData/refactoring/moveClass/conflictingNames/after/p3/First.java
new file mode 100644
index 000000000000..db291b05477c
--- /dev/null
+++ b/java/java-tests/testData/refactoring/moveClass/conflictingNames/after/p3/First.java
@@ -0,0 +1,2 @@
+package p3;
+public class First extends p2.First {}
\ No newline at end of file
diff --git a/java/java-tests/testData/refactoring/moveClass/conflictingNames/after/p3/Second.java b/java/java-tests/testData/refactoring/moveClass/conflictingNames/after/p3/Second.java
new file mode 100644
index 000000000000..aca27357a6e7
--- /dev/null
+++ b/java/java-tests/testData/refactoring/moveClass/conflictingNames/after/p3/Second.java
@@ -0,0 +1,10 @@
+package p3;
+
+import p2.*;
+
+class Second {
+ {
+ new First();
+ Test.f();
+ }
+}
\ No newline at end of file
diff --git a/java/java-tests/testData/refactoring/moveClass/conflictingNames/after/p3/empty.txt b/java/java-tests/testData/refactoring/moveClass/conflictingNames/after/p3/empty.txt
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/java/java-tests/testData/refactoring/moveClass/conflictingNames/before/p1/First.java b/java/java-tests/testData/refactoring/moveClass/conflictingNames/before/p1/First.java
new file mode 100644
index 000000000000..f718a8d53d35
--- /dev/null
+++ b/java/java-tests/testData/refactoring/moveClass/conflictingNames/before/p1/First.java
@@ -0,0 +1,2 @@
+package p1;
+public class First extends p2.First {}
\ No newline at end of file
diff --git a/java/java-tests/testData/refactoring/moveClass/conflictingNames/before/p1/Second.java b/java/java-tests/testData/refactoring/moveClass/conflictingNames/before/p1/Second.java
new file mode 100644
index 000000000000..d299fb47a5b1
--- /dev/null
+++ b/java/java-tests/testData/refactoring/moveClass/conflictingNames/before/p1/Second.java
@@ -0,0 +1,10 @@
+package p1;
+
+import p2.*;
+
+class Second {
+ {
+ new First();
+ Test.f();
+ }
+}
\ No newline at end of file
diff --git a/java/java-tests/testData/refactoring/moveClass/conflictingNames/before/p1/empty.txt b/java/java-tests/testData/refactoring/moveClass/conflictingNames/before/p1/empty.txt
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/java/java-tests/testData/refactoring/moveClass/conflictingNames/before/p2/First.java b/java/java-tests/testData/refactoring/moveClass/conflictingNames/before/p2/First.java
new file mode 100644
index 000000000000..3caf28f29574
--- /dev/null
+++ b/java/java-tests/testData/refactoring/moveClass/conflictingNames/before/p2/First.java
@@ -0,0 +1,2 @@
+package p2;
+public class First {}
\ No newline at end of file
diff --git a/java/java-tests/testData/refactoring/moveClass/conflictingNames/before/p2/Test.java b/java/java-tests/testData/refactoring/moveClass/conflictingNames/before/p2/Test.java
new file mode 100644
index 000000000000..378e819e4ad0
--- /dev/null
+++ b/java/java-tests/testData/refactoring/moveClass/conflictingNames/before/p2/Test.java
@@ -0,0 +1,4 @@
+package p2;
+public class Test {
+ public static void f() {}
+}
\ No newline at end of file
diff --git a/java/java-tests/testData/refactoring/moveClass/conflictingNames/before/p3/empty.txt b/java/java-tests/testData/refactoring/moveClass/conflictingNames/before/p3/empty.txt
new file mode 100644
index 000000000000..e69de29bb2d1
diff --git a/java/java-tests/testSrc/com/intellij/refactoring/MoveClassTest.java b/java/java-tests/testSrc/com/intellij/refactoring/MoveClassTest.java
index 98c749655c2d..c3baf432496b 100644
--- a/java/java-tests/testSrc/com/intellij/refactoring/MoveClassTest.java
+++ b/java/java-tests/testSrc/com/intellij/refactoring/MoveClassTest.java
@@ -94,6 +94,10 @@ public class MoveClassTest extends RefactoringTestCase {
doTest("qualifiedRef", new String[]{"p1.Test"}, "p2");
}
+ public void testConflictingClassNames() throws Exception {
+ doTest("conflictingNames", new String[] {"p1.First", "p1.Second"}, "p3");
+ }
+
private void doTest(@NonNls String testName, @NonNls String[] classNames, @NonNls String newPackageName) throws Exception{
String root = JavaTestUtil.getJavaTestDataPath() + "/refactoring/moveClass/" + testName;
diff --git a/platform/analysis-impl/src/com/intellij/codeInsight/daemon/impl/ThreadLocalAnnotatorMap.java b/platform/analysis-impl/src/com/intellij/codeInsight/daemon/impl/ThreadLocalAnnotatorMap.java
index 5a62359bf566..fc90a199fb97 100644
--- a/platform/analysis-impl/src/com/intellij/codeInsight/daemon/impl/ThreadLocalAnnotatorMap.java
+++ b/platform/analysis-impl/src/com/intellij/codeInsight/daemon/impl/ThreadLocalAnnotatorMap.java
@@ -16,7 +16,7 @@
package com.intellij.codeInsight.daemon.impl;
import com.intellij.openapi.application.ApplicationManager;
-import com.intellij.util.pico.ConstructorInjectionComponentAdapter;
+import com.intellij.util.pico.CachingConstructorInjectionComponentAdapter;
import gnu.trove.THashMap;
import org.jetbrains.annotations.NotNull;
import org.picocontainer.PicoContainer;
@@ -55,7 +55,7 @@ abstract class ThreadLocalAnnotatorMap {
PicoContainer container = ApplicationManager.getApplication().getPicoContainer();
for (V template : templates) {
Class extends V> aClass = (Class extends V>)template.getClass();
- V clone = (V)new ConstructorInjectionComponentAdapter(aClass.getName(), aClass).getComponentInstance(container);
+ V clone = (V)new CachingConstructorInjectionComponentAdapter(aClass.getName(), aClass).getComponentInstance(container);
result.add(clone);
}
return result;
diff --git a/platform/core-impl/src/com/intellij/openapi/components/impl/ComponentManagerImpl.java b/platform/core-impl/src/com/intellij/openapi/components/impl/ComponentManagerImpl.java
index b7e7e7e46ee6..e7b6c7c414d4 100644
--- a/platform/core-impl/src/com/intellij/openapi/components/impl/ComponentManagerImpl.java
+++ b/platform/core-impl/src/com/intellij/openapi/components/impl/ComponentManagerImpl.java
@@ -37,7 +37,7 @@ import com.intellij.util.ReflectionUtil;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.messages.MessageBus;
import com.intellij.util.messages.MessageBusFactory;
-import com.intellij.util.pico.ConstructorInjectionComponentAdapter;
+import com.intellij.util.pico.CachingConstructorInjectionComponentAdapter;
import com.intellij.util.pico.DefaultPicoContainer;
import gnu.trove.THashMap;
import org.jetbrains.annotations.NotNull;
@@ -461,7 +461,7 @@ public abstract class ComponentManagerImpl extends UserDataHolderBase implements
return myNameToComponent.get(name);
}
- private final class ComponentConfigComponentAdapter extends ConstructorInjectionComponentAdapter {
+ private final class ComponentConfigComponentAdapter extends CachingConstructorInjectionComponentAdapter {
private final PluginId myPluginId;
private volatile Object myInitializedComponentInstance;
private boolean myInitializing;
diff --git a/platform/core-impl/src/com/intellij/psi/impl/source/PsiFileImpl.java b/platform/core-impl/src/com/intellij/psi/impl/source/PsiFileImpl.java
index 437e5a41b9ad..8cfb8bb0f2ce 100644
--- a/platform/core-impl/src/com/intellij/psi/impl/source/PsiFileImpl.java
+++ b/platform/core-impl/src/com/intellij/psi/impl/source/PsiFileImpl.java
@@ -259,8 +259,8 @@ public abstract class PsiFileImpl extends ElementBase implements PsiFileEx, PsiF
}
private void switchFromStubToAst(List> bindings) {
- if (!bindings.isEmpty()) {
- LOG.assertTrue(!myUseStrongRefs, this + " of " + getClass() + "; " + bindings);
+ if (!bindings.isEmpty() && myUseStrongRefs) {
+ LOG.error(this + " of " + getClass() + "; " + bindings);
}
for (Pair pair : bindings) {
diff --git a/platform/diff-impl/src/com/intellij/diff/tools/util/FoldingModelSupport.java b/platform/diff-impl/src/com/intellij/diff/tools/util/FoldingModelSupport.java
index 47f3f9f4ef08..f81d6f159692 100644
--- a/platform/diff-impl/src/com/intellij/diff/tools/util/FoldingModelSupport.java
+++ b/platform/diff-impl/src/com/intellij/diff/tools/util/FoldingModelSupport.java
@@ -15,6 +15,7 @@
*/
package com.intellij.diff.tools.util;
+import com.intellij.diff.tools.util.base.TextDiffViewerUtil;
import com.intellij.diff.util.DiffDividerDrawUtil;
import com.intellij.diff.util.DiffDrawUtil;
import com.intellij.diff.util.DiffUtil;
@@ -22,6 +23,7 @@ import com.intellij.diff.util.LineRange;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.ReadAction;
+import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.editor.FoldRegion;
import com.intellij.openapi.editor.event.DocumentAdapter;
@@ -75,12 +77,14 @@ public class FoldingModelSupport {
myShouldUpdateLineNumbers = new boolean[myCount];
MyDocumentListener documentListener = new MyDocumentListener();
+ List documents = ContainerUtil.map(myEditors, EditorEx::getDocument);
+ TextDiffViewerUtil.installDocumentListeners(documentListener, documents, disposable);
+
for (int i = 0; i < myCount; i++) {
if (myCount > 1) {
myEditors[i].getFoldingModel().addListener(new MyFoldingListener(i), disposable);
}
myEditors[i].getGutterComponentEx().setLineNumberConvertor(getLineConvertor(i));
- myEditors[i].getDocument().addDocumentListener(documentListener, disposable);
}
}
diff --git a/platform/diff-impl/src/com/intellij/diff/tools/util/base/ListenerDiffViewerBase.java b/platform/diff-impl/src/com/intellij/diff/tools/util/base/ListenerDiffViewerBase.java
index 1c74e4f84a3e..e9d74176f44e 100644
--- a/platform/diff-impl/src/com/intellij/diff/tools/util/base/ListenerDiffViewerBase.java
+++ b/platform/diff-impl/src/com/intellij/diff/tools/util/base/ListenerDiffViewerBase.java
@@ -25,43 +25,31 @@ import com.intellij.openapi.editor.event.DocumentAdapter;
import com.intellij.openapi.editor.event.DocumentEvent;
import com.intellij.openapi.editor.event.DocumentListener;
import com.intellij.openapi.vfs.*;
-import com.intellij.util.containers.HashSet;
+import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.CalledInAwt;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.List;
-import java.util.Set;
public abstract class ListenerDiffViewerBase extends DiffViewerBase {
- @NotNull private final DocumentListener myDocumentListener;
- @Nullable private final VirtualFileListener myFileListener;
-
public ListenerDiffViewerBase(@NotNull DiffContext context, @NotNull ContentDiffRequest request) {
super(context, request);
- myDocumentListener = createDocumentListener();
- myFileListener = createFileListener(request);
}
@Override
protected void onInit() {
super.onInit();
- if (myFileListener != null) VirtualFileManager.getInstance().addVirtualFileListener(myFileListener);
- for (Document document : getDocuments()) {
- document.addDocumentListener(myDocumentListener);
- }
- }
+ VirtualFileListener fileListener = createFileListener(myRequest);
+ if (fileListener != null) VirtualFileManager.getInstance().addVirtualFileListener(fileListener, this);
- @Override
- protected void onDispose() {
- if (myFileListener != null) VirtualFileManager.getInstance().removeVirtualFileListener(myFileListener);
-
- for (Document document : getDocuments()) {
- document.removeDocumentListener(myDocumentListener);
- }
- super.onDispose();
+ DocumentListener documentListener = createDocumentListener();
+ List documents = ContainerUtil.mapNotNull(myRequest.getContents(), (content) -> {
+ return content instanceof DocumentContent ? ((DocumentContent)content).getDocument() : null;
+ });
+ TextDiffViewerUtil.installDocumentListeners(documentListener, documents, this);
}
@NotNull
@@ -124,19 +112,4 @@ public abstract class ListenerDiffViewerBase extends DiffViewerBase {
protected void onFileChange(@NotNull VirtualFileEvent event) {
scheduleRediff();
}
-
- //
- // Helpers
- //
-
- @NotNull
- private Set getDocuments() {
- Set documents = new HashSet<>();
- for (DiffContent content : myRequest.getContents()) {
- if (content instanceof DocumentContent) {
- documents.add(((DocumentContent)content).getDocument());
- }
- }
- return documents;
- }
}
diff --git a/platform/diff-impl/src/com/intellij/diff/tools/util/base/TextDiffViewerUtil.java b/platform/diff-impl/src/com/intellij/diff/tools/util/base/TextDiffViewerUtil.java
index 9e44fde874ae..05674c09ab28 100644
--- a/platform/diff-impl/src/com/intellij/diff/tools/util/base/TextDiffViewerUtil.java
+++ b/platform/diff-impl/src/com/intellij/diff/tools/util/base/TextDiffViewerUtil.java
@@ -31,7 +31,9 @@ import com.intellij.openapi.Disposable;
import com.intellij.openapi.actionSystem.*;
import com.intellij.openapi.actionSystem.ex.ComboBoxAction;
import com.intellij.openapi.diagnostic.Logger;
+import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.actions.EditorActionUtil;
+import com.intellij.openapi.editor.event.DocumentListener;
import com.intellij.openapi.editor.event.EditorMouseEvent;
import com.intellij.openapi.editor.ex.EditorEx;
import com.intellij.openapi.project.DumbAware;
@@ -100,6 +102,14 @@ public class TextDiffViewerUtil {
return result;
}
+ public static void installDocumentListeners(@NotNull DocumentListener listener,
+ @NotNull List documents,
+ @NotNull Disposable disposable) {
+ for (Document document : ContainerUtil.newHashSet(documents)) {
+ document.addDocumentListener(listener, disposable);
+ }
+ }
+
public static void checkDifferentDocuments(@NotNull ContentDiffRequest request) {
// Actually, this should be a valid case. But it has little practical sense and will require explicit checks everywhere.
// Some listeners will be processed once instead of 2 times, some listeners will cause illegal document modifications.
diff --git a/platform/extensions/src/com/intellij/openapi/extensions/AbstractExtensionPointBean.java b/platform/extensions/src/com/intellij/openapi/extensions/AbstractExtensionPointBean.java
index 6433a1e0ca03..9eb4e2dfefe9 100644
--- a/platform/extensions/src/com/intellij/openapi/extensions/AbstractExtensionPointBean.java
+++ b/platform/extensions/src/com/intellij/openapi/extensions/AbstractExtensionPointBean.java
@@ -16,7 +16,7 @@
package com.intellij.openapi.extensions;
import com.intellij.openapi.diagnostic.Logger;
-import com.intellij.util.pico.ConstructorInjectionComponentAdapter;
+import com.intellij.util.pico.CachingConstructorInjectionComponentAdapter;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.picocontainer.PicoContainer;
@@ -72,7 +72,7 @@ public abstract class AbstractExtensionPointBean implements PluginAware {
public static T instantiate(@NotNull final Class aClass,
@NotNull final PicoContainer container,
final boolean allowNonPublicClasses) {
- return (T)new ConstructorInjectionComponentAdapter(aClass.getName(), aClass, null, allowNonPublicClasses).getComponentInstance(container);
+ return (T)new CachingConstructorInjectionComponentAdapter(aClass.getName(), aClass, null, allowNonPublicClasses).getComponentInstance(container);
}
}
diff --git a/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionComponentAdapter.java b/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionComponentAdapter.java
index 8618870dc72a..48cd8f8790d3 100644
--- a/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionComponentAdapter.java
+++ b/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionComponentAdapter.java
@@ -21,7 +21,7 @@ import com.intellij.openapi.extensions.PluginDescriptor;
import com.intellij.openapi.extensions.PluginId;
import com.intellij.openapi.progress.ProcessCanceledException;
import com.intellij.util.pico.AssignableToComponentAdapter;
-import com.intellij.util.pico.ConstructorInjectionComponentAdapter;
+import com.intellij.util.pico.CachingConstructorInjectionComponentAdapter;
import com.intellij.util.xmlb.XmlSerializer;
import org.jdom.Element;
import org.jetbrains.annotations.NotNull;
@@ -166,7 +166,7 @@ public class ExtensionComponentAdapter implements LoadingOrder.Orderable, Assign
private synchronized ComponentAdapter getDelegate() {
if (myDelegate == null) {
Class impl = loadImplementationClass();
- myDelegate = new ConstructorInjectionComponentAdapter(getComponentKey(), impl, null, true);
+ myDelegate = new CachingConstructorInjectionComponentAdapter(getComponentKey(), impl, null, true);
}
return myDelegate;
diff --git a/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionsAreaImpl.java b/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionsAreaImpl.java
index 5105462d2c13..7e7a8e7b019d 100644
--- a/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionsAreaImpl.java
+++ b/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionsAreaImpl.java
@@ -18,7 +18,7 @@ package com.intellij.openapi.extensions.impl;
import com.intellij.openapi.extensions.*;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.containers.MultiMap;
-import com.intellij.util.pico.ConstructorInjectionComponentAdapter;
+import com.intellij.util.pico.CachingConstructorInjectionComponentAdapter;
import com.intellij.util.pico.DefaultPicoContainer;
import gnu.trove.THashMap;
import org.jdom.Attribute;
@@ -234,8 +234,8 @@ public class ExtensionsAreaImpl implements ExtensionsArea {
}
private Object instantiate(Class clazz) {
- ConstructorInjectionComponentAdapter adapter =
- new ConstructorInjectionComponentAdapter(Integer.toString(System.identityHashCode(new Object())), clazz);
+ CachingConstructorInjectionComponentAdapter adapter =
+ new CachingConstructorInjectionComponentAdapter(Integer.toString(System.identityHashCode(new Object())), clazz);
return adapter.getComponentInstance(getPicoContainer());
}
diff --git a/platform/extensions/src/com/intellij/util/pico/ConstructorInjectionComponentAdapter.java b/platform/extensions/src/com/intellij/util/pico/CachingConstructorInjectionComponentAdapter.java
similarity index 84%
rename from platform/extensions/src/com/intellij/util/pico/ConstructorInjectionComponentAdapter.java
rename to platform/extensions/src/com/intellij/util/pico/CachingConstructorInjectionComponentAdapter.java
index c271a992a83f..def8413d59a0 100644
--- a/platform/extensions/src/com/intellij/util/pico/ConstructorInjectionComponentAdapter.java
+++ b/platform/extensions/src/com/intellij/util/pico/CachingConstructorInjectionComponentAdapter.java
@@ -27,27 +27,26 @@ import java.security.PrivilegedAction;
import java.util.*;
/**
- * A drop-in replacement of {@link org.picocontainer.defaults.ConstructorInjectionComponentAdapter}
+ * A drop-in replacement of {@link ConstructorInjectionComponentAdapter}
* The same code (generified and cleaned up) but without constructor caching (hence taking up less memory).
* This class also inlines instance caching (e.g. it doesn't need to be wrapped in a CachingComponentAdapter).
*/
-@SuppressWarnings("ClassNameSameAsAncestorName")
-public class ConstructorInjectionComponentAdapter extends org.picocontainer.defaults.ConstructorInjectionComponentAdapter {
+public class CachingConstructorInjectionComponentAdapter extends ConstructorInjectionComponentAdapter {
private Object myInstance;
- public ConstructorInjectionComponentAdapter(@NotNull Object componentKey, @NotNull Class componentImplementation, Parameter[] parameters, boolean allowNonPublicClasses, ComponentMonitor monitor, LifecycleStrategy lifecycleStrategy) throws AssignabilityRegistrationException, NotConcreteRegistrationException {
+ public CachingConstructorInjectionComponentAdapter(@NotNull Object componentKey, @NotNull Class componentImplementation, Parameter[] parameters, boolean allowNonPublicClasses, ComponentMonitor monitor, LifecycleStrategy lifecycleStrategy) throws AssignabilityRegistrationException, NotConcreteRegistrationException {
super(componentKey, componentImplementation, parameters, allowNonPublicClasses, monitor, lifecycleStrategy);
}
- public ConstructorInjectionComponentAdapter(@NotNull Object componentKey, @NotNull Class componentImplementation, Parameter[] parameters, boolean allowNonPublicClasses) throws AssignabilityRegistrationException, NotConcreteRegistrationException {
+ public CachingConstructorInjectionComponentAdapter(@NotNull Object componentKey, @NotNull Class componentImplementation, Parameter[] parameters, boolean allowNonPublicClasses) throws AssignabilityRegistrationException, NotConcreteRegistrationException {
super(componentKey, componentImplementation, parameters, allowNonPublicClasses);
}
- public ConstructorInjectionComponentAdapter(@NotNull Object componentKey, @NotNull Class componentImplementation, Parameter[] parameters) {
+ public CachingConstructorInjectionComponentAdapter(@NotNull Object componentKey, @NotNull Class componentImplementation, Parameter[] parameters) {
this(componentKey, componentImplementation, parameters, false);
}
- public ConstructorInjectionComponentAdapter(@NotNull Object componentKey, @NotNull Class componentImplementation) throws AssignabilityRegistrationException, NotConcreteRegistrationException {
+ public CachingConstructorInjectionComponentAdapter(@NotNull Object componentKey, @NotNull Class componentImplementation) throws AssignabilityRegistrationException, NotConcreteRegistrationException {
this(componentKey, componentImplementation, null);
}
diff --git a/platform/extensions/src/com/intellij/util/pico/DefaultPicoContainer.java b/platform/extensions/src/com/intellij/util/pico/DefaultPicoContainer.java
index 3d8008bea4e9..59f1a6b8b633 100644
--- a/platform/extensions/src/com/intellij/util/pico/DefaultPicoContainer.java
+++ b/platform/extensions/src/com/intellij/util/pico/DefaultPicoContainer.java
@@ -353,7 +353,7 @@ public class DefaultPicoContainer implements AreaPicoContainer, Serializable {
@Override
public ComponentAdapter registerComponentImplementation(@NotNull Object componentKey, @NotNull Class componentImplementation, Parameter[] parameters) {
- ComponentAdapter componentAdapter = new ConstructorInjectionComponentAdapter(componentKey, componentImplementation, parameters, true);
+ ComponentAdapter componentAdapter = new CachingConstructorInjectionComponentAdapter(componentKey, componentImplementation, parameters, true);
return registerComponent(componentAdapter);
}
diff --git a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/execution/ExternalSystemRunConfiguration.java b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/execution/ExternalSystemRunConfiguration.java
index b3685bf87d0a..f523bb33b24f 100644
--- a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/execution/ExternalSystemRunConfiguration.java
+++ b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/execution/ExternalSystemRunConfiguration.java
@@ -9,6 +9,7 @@ import com.intellij.execution.configurations.LocatableConfigurationBase;
import com.intellij.execution.configurations.RunConfiguration;
import com.intellij.execution.configurations.RunProfileState;
import com.intellij.execution.executors.DefaultDebugExecutor;
+import com.intellij.execution.process.AnsiEscapeDecoder;
import com.intellij.execution.process.ProcessHandler;
import com.intellij.execution.process.ProcessOutputTypes;
import com.intellij.execution.runners.ExecutionEnvironment;
@@ -30,6 +31,7 @@ import com.intellij.openapi.options.SettingsEditor;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.InvalidDataException;
+import com.intellij.openapi.util.Key;
import com.intellij.openapi.util.WriteExternalException;
import com.intellij.util.ExceptionUtil;
import com.intellij.util.containers.ContainerUtilRt;
@@ -236,13 +238,19 @@ public class ExternalSystemRunConfiguration extends LocatableConfigurationBase {
}
}
- private static class MyProcessHandler extends ProcessHandler {
+ private static class MyProcessHandler extends ProcessHandler implements AnsiEscapeDecoder.ColoredTextAcceptor {
private final ExternalSystemExecuteTaskTask myTask;
+ private final AnsiEscapeDecoder myAnsiEscapeDecoder = new AnsiEscapeDecoder();
public MyProcessHandler(ExternalSystemExecuteTaskTask task) {
myTask = task;
}
+ @Override
+ public void notifyTextAvailable(final String text, final Key outputType) {
+ myAnsiEscapeDecoder.escapeText(text, outputType, this);
+ }
+
@Override
protected void destroyProcessImpl() {
}
@@ -268,6 +276,11 @@ public class ExternalSystemRunConfiguration extends LocatableConfigurationBase {
public void notifyProcessTerminated(int exitCode) {
super.notifyProcessTerminated(exitCode);
}
+
+ @Override
+ public void coloredTextAvailable(String text, Key attributes) {
+ super.notifyTextAvailable(text, attributes);
+ }
}
@NotNull
diff --git a/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/QuickEditHandler.java b/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/QuickEditHandler.java
index 094374c22495..669ff357ff6a 100644
--- a/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/QuickEditHandler.java
+++ b/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/QuickEditHandler.java
@@ -194,30 +194,7 @@ public class QuickEditHandler extends DocumentAdapter implements Disposable {
public void navigate(int injectedOffset) {
if (myAction.isShowInBalloon()) {
final JComponent component = myAction.createBalloonComponent(myNewFile);
- if (component != null) {
- final Balloon balloon = JBPopupFactory.getInstance().createBalloonBuilder(component)
- .setShadow(true)
- .setAnimationCycle(0)
- .setHideOnClickOutside(true)
- .setHideOnKeyOutside(true)
- .setHideOnAction(false)
- .setFillColor(UIUtil.getControlColor())
- .createBalloon();
- new AnAction() {
- @Override
- public void actionPerformed(AnActionEvent e) {
- balloon.hide();
- }
- }.registerCustomShortcutSet(CommonShortcuts.ESCAPE, component);
- Disposer.register(myNewFile.getProject(), balloon);
- final Balloon.Position position = QuickEditAction.getBalloonPosition(myEditor);
- RelativePoint point = JBPopupFactory.getInstance().guessBestPopupLocation(myEditor);
- if (position == Balloon.Position.above) {
- final Point p = point.getPoint();
- point = new RelativePoint(point.getComponent(), new Point(p.x, p.y - myEditor.getLineHeight()));
- }
- balloon.show(point, position);
- }
+ if (component != null) showBalloon(myEditor, myNewFile, component);
}
else {
final FileEditorManagerEx fileEditorManager = FileEditorManagerEx.getInstanceEx(myProject);
@@ -245,6 +222,31 @@ public class QuickEditHandler extends DocumentAdapter implements Disposable {
}
}
+ public static void showBalloon(Editor editor, PsiFile newFile, JComponent component) {
+ final Balloon balloon = JBPopupFactory.getInstance().createBalloonBuilder(component)
+ .setShadow(true)
+ .setAnimationCycle(0)
+ .setHideOnClickOutside(true)
+ .setHideOnKeyOutside(true)
+ .setHideOnAction(false)
+ .setFillColor(UIUtil.getControlColor())
+ .createBalloon();
+ new AnAction() {
+ @Override
+ public void actionPerformed(AnActionEvent e) {
+ balloon.hide();
+ }
+ }.registerCustomShortcutSet(CommonShortcuts.ESCAPE, component);
+ Disposer.register(newFile.getProject(), balloon);
+ final Balloon.Position position = QuickEditAction.getBalloonPosition(editor);
+ RelativePoint point = JBPopupFactory.getInstance().guessBestPopupLocation(editor);
+ if (position == Balloon.Position.above) {
+ final Point p = point.getPoint();
+ point = new RelativePoint(point.getComponent(), new Point(p.x, p.y - editor.getLineHeight()));
+ }
+ balloon.show(point, position);
+ }
+
@Override
public void documentChanged(DocumentEvent e) {
UndoManager undoManager = UndoManager.getInstance(myProject);
diff --git a/platform/lang-impl/src/com/intellij/execution/TestStateStorage.java b/platform/lang-impl/src/com/intellij/execution/TestStateStorage.java
index 24a472f07c7a..b291594aede0 100644
--- a/platform/lang-impl/src/com/intellij/execution/TestStateStorage.java
+++ b/platform/lang-impl/src/com/intellij/execution/TestStateStorage.java
@@ -20,7 +20,6 @@ import com.intellij.openapi.application.PathManager;
import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.Project;
-import com.intellij.openapi.util.Key;
import com.intellij.openapi.util.ThrowableComputable;
import com.intellij.openapi.util.io.FileUtilRt;
import com.intellij.openapi.vfs.newvfs.persistent.FlushingDaemon;
@@ -44,8 +43,6 @@ import java.util.concurrent.ScheduledFuture;
* @author Dmitry Avdeev
*/
public class TestStateStorage implements Disposable {
-
- public static Key RUN_CONFIGURATION_NAME_KEY = Key.create("run.configuration.name");
private static final File TEST_HISTORY_PATH = new File(PathManager.getSystemPath(), "testHistory");
diff --git a/platform/lang-impl/src/com/intellij/find/findUsages/FindUsagesManager.java b/platform/lang-impl/src/com/intellij/find/findUsages/FindUsagesManager.java
index 08d30f63c5d6..43b4b8d3ce36 100644
--- a/platform/lang-impl/src/com/intellij/find/findUsages/FindUsagesManager.java
+++ b/platform/lang-impl/src/com/intellij/find/findUsages/FindUsagesManager.java
@@ -68,7 +68,7 @@ import com.intellij.usages.*;
import com.intellij.util.CommonProcessors;
import com.intellij.util.Processor;
import com.intellij.util.containers.ContainerUtil;
-import com.intellij.util.pico.ConstructorInjectionComponentAdapter;
+import com.intellij.util.pico.CachingConstructorInjectionComponentAdapter;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -189,7 +189,7 @@ public class FindUsagesManager {
for (FindUsagesHandlerFactory factory : Extensions.getExtensions(FindUsagesHandlerFactory.EP_NAME, myProject)) {
if (factory.canFindUsages(element)) {
Class extends FindUsagesHandlerFactory> aClass = factory.getClass();
- FindUsagesHandlerFactory copy = (FindUsagesHandlerFactory)new ConstructorInjectionComponentAdapter(aClass.getName(), aClass)
+ FindUsagesHandlerFactory copy = (FindUsagesHandlerFactory)new CachingConstructorInjectionComponentAdapter(aClass.getName(), aClass)
.getComponentInstance(myProject.getPicoContainer());
final FindUsagesHandler handler = copy.createFindUsagesHandler(element, forHighlightUsages);
if (handler == FindUsagesHandler.NULL_HANDLER) return null;
diff --git a/platform/lang-impl/src/com/intellij/platform/templates/TemplateModuleBuilder.java b/platform/lang-impl/src/com/intellij/platform/templates/TemplateModuleBuilder.java
index fd1da18ca73d..00fdd3508707 100644
--- a/platform/lang-impl/src/com/intellij/platform/templates/TemplateModuleBuilder.java
+++ b/platform/lang-impl/src/com/intellij/platform/templates/TemplateModuleBuilder.java
@@ -22,14 +22,19 @@ import com.intellij.execution.configurations.RunConfiguration;
import com.intellij.ide.fileTemplates.FileTemplateManager;
import com.intellij.ide.fileTemplates.FileTemplateUtil;
import com.intellij.ide.util.projectWizard.*;
+import com.intellij.openapi.application.AccessToken;
import com.intellij.openapi.application.ApplicationManager;
+import com.intellij.openapi.application.ModalityState;
import com.intellij.openapi.diagnostic.Attachment;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.fileTypes.FileType;
import com.intellij.openapi.fileTypes.FileTypeManager;
import com.intellij.openapi.module.*;
import com.intellij.openapi.options.ConfigurationException;
+import com.intellij.openapi.progress.ProcessCanceledException;
+import com.intellij.openapi.progress.ProgressIndicator;
import com.intellij.openapi.progress.ProgressManager;
+import com.intellij.openapi.progress.Task;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.project.ex.ProjectManagerEx;
import com.intellij.openapi.roots.ModifiableRootModel;
@@ -38,6 +43,7 @@ import com.intellij.openapi.roots.ui.configuration.ModulesProvider;
import com.intellij.openapi.startup.StartupManager;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.util.*;
+import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.io.FileUtilRt;
import com.intellij.openapi.util.text.StringUtilRt;
import com.intellij.openapi.vfs.CharsetToolkit;
@@ -54,6 +60,7 @@ import org.apache.velocity.exception.VelocityException;
import org.jdom.JDOMException;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import org.jetbrains.jps.model.serialization.PathMacroUtil;
import javax.swing.*;
import java.io.File;
@@ -157,7 +164,7 @@ public class TemplateModuleBuilder extends ModuleBuilder {
throws InvalidDataException, IOException, ModuleWithNameAlreadyExists, JDOMException, ConfigurationException {
final String path = getContentEntryPath();
final ExistingModuleLoader loader = ExistingModuleLoader.setUpLoader(getModuleFilePath());
- unzip(loader.getName(), path, true);
+ unzip(loader.getName(), path, true, null, true);
Module module = loader.createModule(moduleModel);
if (myProjectMode) {
moduleModel.renameModule(module, module.getProject().getName());
@@ -190,7 +197,11 @@ public class TemplateModuleBuilder extends ModuleBuilder {
return null;
}
- private void unzip(final @Nullable String projectName, String path, final boolean moduleMode) {
+ private void unzip(final @Nullable String projectName,
+ String path,
+ final boolean moduleMode,
+ @Nullable ProgressIndicator pI,
+ boolean reportFailuresWithDialog) {
final WizardInputField basePackage = getBasePackageField();
try {
final NullableFunction pathConvertor = path1 -> {
@@ -224,20 +235,21 @@ public class TemplateModuleBuilder extends ModuleBuilder {
return;
}
- String dialogMessage;
- if (myFailures.size() == 1) {
- dialogMessage = "Failed to decode file \'" + myFailures.get(0).getFirst() + "\'";
- }
- else {
- StringBuilder dialogMessageBuilder = new StringBuilder();
- dialogMessageBuilder.append("Failed to decode files: \n");
- for (Trinity failure : myFailures) {
- dialogMessageBuilder.append(failure.getFirst()).append("\n");
+ if(reportFailuresWithDialog) {
+ String dialogMessage;
+ if (myFailures.size() == 1) {
+ dialogMessage = "Failed to decode file \'" + myFailures.get(0).getFirst() + "\'";
}
- dialogMessage = dialogMessageBuilder.toString();
+ else {
+ StringBuilder dialogMessageBuilder = new StringBuilder();
+ dialogMessageBuilder.append("Failed to decode files: \n");
+ for (Trinity failure : myFailures) {
+ dialogMessageBuilder.append(failure.getFirst()).append("\n");
+ }
+ dialogMessage = dialogMessageBuilder.toString();
+ }
+ Messages.showErrorDialog(dialogMessage, "Decoding Template");
}
- Messages.showErrorDialog(dialogMessage, "Decoding Template");
-
StringBuilder reportBuilder = new StringBuilder();
for (Trinity failure : myFailures) {
@@ -259,6 +271,9 @@ public class TemplateModuleBuilder extends ModuleBuilder {
ZipUtil.unzip(ProgressManager.getInstance().getProgressIndicator(), dir, stream, pathConvertor, new ZipUtil.ContentProcessor() {
@Override
public byte[] processContent(byte[] content, File file) throws IOException {
+ if(pI != null){
+ pI.checkCanceled();
+ }
FileType fileType = FileTypeManager.getInstance().getFileTypeByExtension(FileUtilRt.getExtension(file.getName()));
String text = new String(content, CharsetToolkit.UTF8_CHARSET);
consumer.setCurrentFile(file.getName(), text);
@@ -269,6 +284,10 @@ public class TemplateModuleBuilder extends ModuleBuilder {
}
});
+ if(pI != null) {
+ pI.setText("Refreshing...");
+ }
+
String iml = ContainerUtil.find(dir.list(), s -> s.endsWith(".iml"));
if (moduleMode) {
File from = new File(path, iml);
@@ -318,21 +337,82 @@ public class TemplateModuleBuilder extends ModuleBuilder {
@Nullable
@Override
public Project createProject(String name, final String path) {
- myProjectMode = true;
- unzip(name, path, false);
- return ApplicationManager.getApplication().runWriteAction(new NullableComputable() {
- @Nullable
- @Override
- public Project compute() {
- try {
- return ProjectManagerEx.getInstanceEx().convertAndLoadProject(path);
- }
- catch (IOException e) {
- LOG.error(e);
- return null;
- }
+ final File location = new File(FileUtil.toSystemDependentName(path));
+ LOG.assertTrue(location.exists());
+
+ final VirtualFile baseDir = ApplicationManager.getApplication().runWriteAction(new Computable() {
+ public VirtualFile compute() {
+ return LocalFileSystem.getInstance().refreshAndFindFileByIoFile(location);
}
});
+ if (baseDir == null) {
+ LOG.error("Couldn't find path '" + path + "' in VFS");
+ return null;
+ }
+
+ VirtualFile[] children = baseDir.getChildren();
+ boolean isSomehowOverwriting = children.length > 1 ||
+ (children.length == 1 && !PathMacroUtil.DIRECTORY_STORE_NAME.equals(children[0].getName()));
+
+ Ref canceledRef = new Ref<>();
+ Ref projectRef = new Ref<>();
+ Task.Modal task = new Task.Modal(null, "Applying Template", true) {
+ @Override
+ public void run(@NotNull ProgressIndicator indicator) {
+ try {
+ projectRef.set(createProject(name, path, indicator));
+ }
+ finally {
+ cleanup();
+ if(indicator.isCanceled()){
+ canceledRef.set(true);
+ if (!isSomehowOverwriting) {
+ ApplicationManager.getApplication().invokeLater(() -> {
+ AccessToken token = ApplicationManager.getApplication().acquireWriteActionLock(TemplateProjectDirectoryGenerator.class);
+ try {
+ baseDir.delete(TemplateProjectDirectoryGenerator.class);
+ }
+ catch (IOException e) {
+ LOG.error(e);
+ }
+ finally {
+ token.close();
+ }
+ });
+ }
+ }
+ }
+ }
+ };
+ ProgressManager.getInstance().run(task);
+ if(canceledRef.get() == Boolean.TRUE){
+ throw new ProcessCanceledException();
+ }
+ return projectRef.get();
+ }
+
+ @Nullable
+ private Project createProject(String name, final String path, @Nullable ProgressIndicator progressIndicator) {
+ myProjectMode = true;
+ unzip(name, path, false, progressIndicator, false);
+ Ref projectRef = new Ref<>();
+ ApplicationManager.getApplication().invokeAndWait(()->{
+ projectRef.set(
+ ApplicationManager.getApplication().runWriteAction(new NullableComputable() {
+ @Nullable
+ @Override
+ public Project compute() {
+ try {
+ return ProjectManagerEx.getInstanceEx().convertAndLoadProject(path);
+ }
+ catch (IOException e) {
+ LOG.error(e);
+ return null;
+ }
+ }
+ }));
+ }, ModalityState.any());
+ return projectRef.get();
}
private final static Logger LOG = Logger.getInstance(TemplateModuleBuilder.class);
diff --git a/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionManagerImpl.java
index 7f356e9dea0c..cdbcdb9c0e19 100644
--- a/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionManagerImpl.java
+++ b/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionManagerImpl.java
@@ -53,7 +53,7 @@ import com.intellij.util.ReflectionUtil;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.containers.MultiMap;
import com.intellij.util.messages.MessageBusConnection;
-import com.intellij.util.pico.ConstructorInjectionComponentAdapter;
+import com.intellij.util.pico.CachingConstructorInjectionComponentAdapter;
import com.intellij.util.ui.UIUtil;
import gnu.trove.THashMap;
import gnu.trove.THashSet;
@@ -666,7 +666,7 @@ public final class ActionManagerImpl extends ActionManagerEx implements Disposab
group = new DefaultCompactActionGroup();
} else {
Class aClass = Class.forName(className, true, loader);
- Object obj = new ConstructorInjectionComponentAdapter(className, aClass).getComponentInstance(ApplicationManager.getApplication().getPicoContainer());
+ Object obj = new CachingConstructorInjectionComponentAdapter(className, aClass).getComponentInstance(ApplicationManager.getApplication().getPicoContainer());
if (!(obj instanceof ActionGroup)) {
reportActionError(pluginId, "class with name \"" + className + "\" should be instance of " + ActionGroup.class.getName());
diff --git a/platform/platform-impl/src/com/intellij/openapi/components/impl/ServiceManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/components/impl/ServiceManagerImpl.java
index 7f4a76a8558a..d810f1fe583a 100644
--- a/platform/platform-impl/src/com/intellij/openapi/components/impl/ServiceManagerImpl.java
+++ b/platform/platform-impl/src/com/intellij/openapi/components/impl/ServiceManagerImpl.java
@@ -36,7 +36,7 @@ import com.intellij.util.PairProcessor;
import com.intellij.util.PlatformUtils;
import com.intellij.util.io.storage.HeavyProcessLatch;
import com.intellij.util.pico.AssignableToComponentAdapter;
-import com.intellij.util.pico.ConstructorInjectionComponentAdapter;
+import com.intellij.util.pico.CachingConstructorInjectionComponentAdapter;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.picocontainer.*;
@@ -263,7 +263,7 @@ public class ServiceManagerImpl implements BaseComponent {
throw new RuntimeException(e);
}
- myDelegate = new ConstructorInjectionComponentAdapter(getComponentKey(), implClass, null, true);
+ myDelegate = new CachingConstructorInjectionComponentAdapter(getComponentKey(), implClass, null, true);
}
return myDelegate;
}
diff --git a/platform/platform-impl/src/com/intellij/openapi/project/impl/ProjectImpl.java b/platform/platform-impl/src/com/intellij/openapi/project/impl/ProjectImpl.java
index 424505bc3d83..c31f54e76d78 100644
--- a/platform/platform-impl/src/com/intellij/openapi/project/impl/ProjectImpl.java
+++ b/platform/platform-impl/src/com/intellij/openapi/project/impl/ProjectImpl.java
@@ -54,7 +54,7 @@ import com.intellij.openapi.wm.impl.FrameTitleBuilder;
import com.intellij.psi.impl.DebugUtil;
import com.intellij.util.TimedReference;
import com.intellij.util.io.storage.HeavyProcessLatch;
-import com.intellij.util.pico.ConstructorInjectionComponentAdapter;
+import com.intellij.util.pico.CachingConstructorInjectionComponentAdapter;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -161,7 +161,7 @@ public class ProjectImpl extends PlatformComponentManagerImpl implements Project
private ComponentAdapter getDelegate() {
if (myDelegate == null) {
Class storeClass = projectStoreClassProvider.getProjectStoreClass(isDefault());
- myDelegate = new ConstructorInjectionComponentAdapter(storeClass, storeClass, null, true);
+ myDelegate = new CachingConstructorInjectionComponentAdapter(storeClass, storeClass, null, true);
}
return myDelegate;
}
diff --git a/platform/platform-impl/src/com/intellij/ui/EditorTextField.java b/platform/platform-impl/src/com/intellij/ui/EditorTextField.java
index 1be13e6b0093..8ca103ce0a7b 100644
--- a/platform/platform-impl/src/com/intellij/ui/EditorTextField.java
+++ b/platform/platform-impl/src/com/intellij/ui/EditorTextField.java
@@ -531,26 +531,30 @@ public class EditorTextField extends NonOpaquePanel implements DocumentListener,
final Container parent = getParent();
if (parent instanceof JTable || parent instanceof CellRendererPane) return;
- if (UIUtil.isUnderAquaLookAndFeel() || UIUtil.isUnderDarcula() || UIUtil.isUnderIntelliJLaF()) {
- editor.setBorder(UIUtil.isUnderDarcula() || UIUtil.isUnderIntelliJLaF() ? new DarculaEditorTextFieldBorder() : new MacUIUtil.EditorTextFieldBorder(this));
- editor.addFocusListener(new FocusChangeListener() {
- @Override
- public void focusGained(Editor editor) {
- repaint();
- }
+ setupBorder(editor);
+ }
+ }
- @Override
- public void focusLost(Editor editor) {
- repaint();
- }
- });
- }
- else if (UIUtil.isUnderAlloyLookAndFeel() || UIUtil.isUnderJGoodiesLookAndFeel()) {
- editor.setBorder(BorderFactory.createCompoundBorder(UIUtil.getTextFieldBorder(), BorderFactory.createEmptyBorder(1, 1, 1, 1)));
- }
- else {
- editor.setBorder(BorderFactory.createCompoundBorder(UIUtil.getTextFieldBorder(), BorderFactory.createEmptyBorder(2, 2, 2, 2)));
- }
+ protected void setupBorder(@NotNull EditorEx editor) {
+ if (UIUtil.isUnderAquaLookAndFeel() || UIUtil.isUnderDarcula() || UIUtil.isUnderIntelliJLaF()) {
+ editor.setBorder(UIUtil.isUnderDarcula() || UIUtil.isUnderIntelliJLaF() ? new DarculaEditorTextFieldBorder() : new MacUIUtil.EditorTextFieldBorder(this));
+ editor.addFocusListener(new FocusChangeListener() {
+ @Override
+ public void focusGained(Editor editor) {
+ repaint();
+ }
+
+ @Override
+ public void focusLost(Editor editor) {
+ repaint();
+ }
+ });
+ }
+ else if (UIUtil.isUnderAlloyLookAndFeel() || UIUtil.isUnderJGoodiesLookAndFeel()) {
+ editor.setBorder(BorderFactory.createCompoundBorder(UIUtil.getTextFieldBorder(), BorderFactory.createEmptyBorder(1, 1, 1, 1)));
+ }
+ else {
+ editor.setBorder(BorderFactory.createCompoundBorder(UIUtil.getTextFieldBorder(), BorderFactory.createEmptyBorder(2, 2, 2, 2)));
}
}
diff --git a/platform/platform-impl/src/com/intellij/ui/popup/PopupFactoryImpl.java b/platform/platform-impl/src/com/intellij/ui/popup/PopupFactoryImpl.java
index fd64eaab11a6..fd7ad80c3081 100644
--- a/platform/platform-impl/src/com/intellij/ui/popup/PopupFactoryImpl.java
+++ b/platform/platform-impl/src/com/intellij/ui/popup/PopupFactoryImpl.java
@@ -675,7 +675,13 @@ public class PopupFactoryImpl extends JBPopupFactory {
Point p = editor.visualPositionToXY(new VisualPosition(visualPosition.line + 1, visualPosition.column));
final Rectangle visibleArea = editor.getScrollingModel().getVisibleArea();
- return visibleArea.contains(p) ? p : null;
+ if (!visibleArea.contains(p)) {
+ int h = editor.getLineHeight();
+ p.y -= h;
+ if (!visibleArea.contains(p)) return null;
+ p.y += h;
+ }
+ return p;
}
@Override
diff --git a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/ui/SMTestRunnerResultsForm.java b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/ui/SMTestRunnerResultsForm.java
index b5779548acf3..b1dab502cdb4 100644
--- a/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/ui/SMTestRunnerResultsForm.java
+++ b/platform/smRunner/src/com/intellij/execution/testframework/sm/runner/ui/SMTestRunnerResultsForm.java
@@ -19,7 +19,6 @@ import com.intellij.codeInsight.daemon.DaemonCodeAnalyzer;
import com.intellij.execution.TestStateStorage;
import com.intellij.execution.configurations.RunConfiguration;
import com.intellij.execution.configurations.RunProfile;
-import com.intellij.execution.process.ProcessHandler;
import com.intellij.execution.testframework.*;
import com.intellij.execution.testframework.actions.ScrollToTestSourceAction;
import com.intellij.execution.testframework.export.TestResultsXmlFormatter;
@@ -46,7 +45,6 @@ import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.Pass;
import com.intellij.openapi.util.io.FileUtilRt;
-import com.intellij.openapi.util.registry.Registry;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.wm.IdeFocusManager;
import com.intellij.pom.Navigatable;
@@ -70,8 +68,6 @@ import javax.xml.transform.sax.SAXTransformerFactory;
import javax.xml.transform.sax.TransformerHandler;
import javax.xml.transform.stream.StreamResult;
import java.awt.*;
-import java.awt.event.InputEvent;
-import java.awt.event.KeyEvent;
import java.io.File;
import java.io.FileWriter;
import java.text.SimpleDateFormat;
@@ -801,11 +797,7 @@ public class SMTestRunnerResultsForm extends TestResultsPanel
for (SMTestProxy proxy : tests) {
String url = proxy instanceof SMTestProxy.SMRootTestProxy ? ((SMTestProxy.SMRootTestProxy)proxy).getRootLocation() : proxy.getLocationUrl();
if (url != null) {
- ProcessHandler handler = myRoot.getHandler();
- String configurationName = null;
- if (handler != null) {
- configurationName = handler.getUserData(TestStateStorage.RUN_CONFIGURATION_NAME_KEY);
- }
+ String configurationName = myConfiguration != null ? myConfiguration.getName() : null;
storage.writeState(url, new TestStateStorage.Record(proxy.getMagnitude(), new Date(),
configurationName == null ? 0 : configurationName.hashCode()));
}
diff --git a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/HeavyTestFixtureBuilderImpl.java b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/HeavyTestFixtureBuilderImpl.java
index 2a7f4dd6aeb2..6277af4e5f78 100644
--- a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/HeavyTestFixtureBuilderImpl.java
+++ b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/HeavyTestFixtureBuilderImpl.java
@@ -20,7 +20,7 @@ import com.intellij.testFramework.builders.ModuleFixtureBuilder;
import com.intellij.testFramework.fixtures.HeavyIdeaTestFixture;
import com.intellij.testFramework.fixtures.IdeaProjectTestFixture;
import com.intellij.testFramework.fixtures.TestFixtureBuilder;
-import com.intellij.util.pico.ConstructorInjectionComponentAdapter;
+import com.intellij.util.pico.CachingConstructorInjectionComponentAdapter;
import com.intellij.util.pico.DefaultPicoContainer;
import org.jetbrains.annotations.NotNull;
import org.junit.Assert;
@@ -48,7 +48,8 @@ class HeavyTestFixtureBuilderImpl implements TestFixtureBuilder M createModuleBuilder(Class key) {
Class extends ModuleFixtureBuilder> implClass = myProviders.get(key);
Assert.assertNotNull(key.toString(), implClass);
- final ConstructorInjectionComponentAdapter adapter = new ConstructorInjectionComponentAdapter(implClass, implClass, null, true);
+ final CachingConstructorInjectionComponentAdapter
+ adapter = new CachingConstructorInjectionComponentAdapter(implClass, implClass, null, true);
return (M)adapter.getComponentInstance(myContainer);
}
diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/ChangesViewContentEP.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/ChangesViewContentEP.java
index 135e5b2c0648..bae581c67680 100644
--- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/ChangesViewContentEP.java
+++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/ChangesViewContentEP.java
@@ -21,7 +21,7 @@ import com.intellij.openapi.extensions.PluginAware;
import com.intellij.openapi.extensions.PluginDescriptor;
import com.intellij.openapi.project.Project;
import com.intellij.util.NotNullFunction;
-import com.intellij.util.pico.ConstructorInjectionComponentAdapter;
+import com.intellij.util.pico.CachingConstructorInjectionComponentAdapter;
import com.intellij.util.xmlb.annotations.Attribute;
import org.jetbrains.annotations.Nullable;
@@ -90,7 +90,7 @@ public class ChangesViewContentEP implements PluginAware {
try {
final Class> aClass = Class.forName(className, true,
myPluginDescriptor == null ? getClass().getClassLoader() : myPluginDescriptor.getPluginClassLoader());
- return new ConstructorInjectionComponentAdapter(className, aClass).getComponentInstance(project.getPicoContainer());
+ return new CachingConstructorInjectionComponentAdapter(className, aClass).getComponentInstance(project.getPicoContainer());
}
catch(Exception e) {
LOG.error(e);
diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/CommitChangeListDialog.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/CommitChangeListDialog.java
index 9c6d0ac667a8..a7fc3b63508e 100644
--- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/CommitChangeListDialog.java
+++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/CommitChangeListDialog.java
@@ -101,6 +101,7 @@ public class CommitChangeListDialog extends DialogWrapper implements CheckinProj
@Nullable private final AbstractVcs myVcs;
private final boolean myIsAlien;
private boolean myDisposed = false;
+ private boolean myUpdateDisabled = false;
@NotNull private final JLabel myWarningLabel;
@NotNull private final Map myCheckinChangeListSpecificComponents;
@@ -855,12 +856,12 @@ public class CommitChangeListDialog extends DialogWrapper implements CheckinProj
}
private void stopUpdate() {
- myDisposed = true;
+ myUpdateDisabled = true;
myUpdateButtonsRunnable.cancel();
}
private void restartUpdate() {
- myDisposed = false;
+ myUpdateDisabled = false;
myUpdateButtonsRunnable.restart(this);
}
@@ -1213,7 +1214,7 @@ public class CommitChangeListDialog extends DialogWrapper implements CheckinProj
}
private void updateButtons() {
- if (myDisposed) return;
+ if (myDisposed || myUpdateDisabled) return;
final boolean enabled = hasDiffs();
setOKActionEnabled(enabled);
if (myCommitAction != null) {
@@ -1229,7 +1230,7 @@ public class CommitChangeListDialog extends DialogWrapper implements CheckinProj
}
private void updateLegend() {
- if (myDisposed) return;
+ if (myDisposed || myUpdateDisabled) return;
myChangesInfoCalculator.update(myBrowser.getCurrentDisplayedChanges(), getIncludedChanges(), myBrowser.getUnversionedFilesCount(),
myBrowser.getIncludedUnversionedFiles().size());
myLegend.update();
diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/execution/test/runner/GradleSMTestProxy.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/execution/test/runner/GradleSMTestProxy.java
index 978610068c01..3f472fc39341 100644
--- a/plugins/gradle/src/org/jetbrains/plugins/gradle/execution/test/runner/GradleSMTestProxy.java
+++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/execution/test/runner/GradleSMTestProxy.java
@@ -17,9 +17,13 @@ package org.jetbrains.plugins.gradle.execution.test.runner;
import com.intellij.execution.Location;
import com.intellij.execution.stacktrace.StackTraceLine;
+import com.intellij.execution.testframework.Printable;
+import com.intellij.execution.testframework.Printer;
import com.intellij.execution.testframework.sm.runner.SMTestProxy;
+import com.intellij.execution.ui.ConsoleViewContentType;
import com.intellij.openapi.diff.LineTokenizer;
import com.intellij.openapi.project.Project;
+import com.intellij.openapi.util.Key;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.search.GlobalSearchScope;
import org.jetbrains.annotations.NotNull;
@@ -40,6 +44,15 @@ public class GradleSMTestProxy extends SMTestProxy {
myClassName = className;
}
+ @Override
+ public void addStdOutput(String output, Key outputType) {
+ addLast(new Printable() {
+ public void printOn(final Printer printer) {
+ printer.printWithAnsiColoring(output, ConsoleViewContentType.getConsoleViewType(outputType));
+ }
+ });
+ }
+
@Override
public void setTestFailed(@NotNull String localizedMessage, @Nullable String stackTrace, boolean testError) {
setStacktraceIfNotSet(stackTrace);
diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/AddRepositoryLocationDialog.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/AddRepositoryLocationDialog.java
index 746c9d054666..92b1aae316a7 100644
--- a/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/AddRepositoryLocationDialog.java
+++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/dialogs/AddRepositoryLocationDialog.java
@@ -19,6 +19,7 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.DialogWrapper;
import com.intellij.openapi.ui.MultiLineLabelUI;
import com.intellij.util.ArrayUtil;
+import com.intellij.util.ui.JBDimension;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.idea.svn.SvnBundle;
import org.tmatesoft.svn.core.SVNException;
@@ -75,7 +76,7 @@ public class AddRepositoryLocationDialog extends DialogWrapper {
myCombo = new JComboBox(ArrayUtil.toObjectArray(myPreviousLocations));
myCombo.setEditable(true);
- myCombo.setMinimumSize(new Dimension(250, 20));
+ myCombo.setMinimumSize(new JBDimension(250, 20));
gb.fill = GridBagConstraints.HORIZONTAL;
mainPanel.add(myCombo, gb);
gb.fill = GridBagConstraints.NONE;
diff --git a/python/src/com/jetbrains/python/facet/LibraryContributingFacet.java b/python/src/com/jetbrains/python/facet/LibraryContributingFacet.java
index 918439ebb4b9..57e3673ee312 100644
--- a/python/src/com/jetbrains/python/facet/LibraryContributingFacet.java
+++ b/python/src/com/jetbrains/python/facet/LibraryContributingFacet.java
@@ -36,14 +36,14 @@ public abstract class LibraryContributingFacet ext
connection.subscribe(FacetManager.FACETS_TOPIC, new FacetManagerAdapter() {
@Override
public void beforeFacetRemoved(@NotNull Facet facet) {
- if (facet instanceof LibraryContributingFacet) {
+ if (facet == LibraryContributingFacet.this) {
((LibraryContributingFacet) facet).removeLibrary();
}
}
@Override
public void facetConfigurationChanged(@NotNull Facet facet) {
- if (facet instanceof LibraryContributingFacet) {
+ if (facet == LibraryContributingFacet.this) {
((LibraryContributingFacet) facet).updateLibrary();
}
}