diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/tree/render/ToStringRenderer.java b/java/debugger/impl/src/com/intellij/debugger/ui/tree/render/ToStringRenderer.java
index 363e7ef64adb..75830bc64d23 100644
--- a/java/debugger/impl/src/com/intellij/debugger/ui/tree/render/ToStringRenderer.java
+++ b/java/debugger/impl/src/com/intellij/debugger/ui/tree/render/ToStringRenderer.java
@@ -15,9 +15,8 @@
*/
package com.intellij.debugger.ui.tree.render;
-import com.intellij.ui.classFilter.ClassFilter;
-import com.intellij.debugger.DebuggerContext;
import com.intellij.debugger.DebuggerBundle;
+import com.intellij.debugger.DebuggerContext;
import com.intellij.debugger.engine.DebugProcessImpl;
import com.intellij.debugger.engine.evaluation.EvaluateException;
import com.intellij.debugger.engine.evaluation.EvaluationContext;
@@ -29,6 +28,7 @@ import com.intellij.openapi.util.InvalidDataException;
import com.intellij.openapi.util.JDOMExternalizerUtil;
import com.intellij.openapi.util.WriteExternalException;
import com.intellij.psi.PsiExpression;
+import com.intellij.ui.classFilter.ClassFilter;
import com.intellij.xdebugger.impl.ui.XDebuggerUIConstants;
import com.sun.jdi.*;
import org.jdom.Element;
@@ -73,7 +73,7 @@ public class ToStringRenderer extends NodeRendererImpl {
final Value value = valueDescriptor.getValue();
BatchEvaluator.getBatchEvaluator(evaluationContext.getDebugProcess()).invoke(new ToStringCommand(evaluationContext, value) {
public void evaluationResult(String message) {
- valueDescriptor.setValueLabel(message != null ? "\"" + message + "\"" : "");
+ valueDescriptor.setValueLabel(message != null ? "\"" + DebuggerUtilsEx.truncateString(message) + "\"" : "");
labelListener.labelChanged();
}
diff --git a/java/idea-ui/src/com/intellij/ide/palette/impl/PaletteManager.java b/java/idea-ui/src/com/intellij/ide/palette/impl/PaletteManager.java
index afdc835518e1..b6f2063a7043 100644
--- a/java/idea-ui/src/com/intellij/ide/palette/impl/PaletteManager.java
+++ b/java/idea-ui/src/com/intellij/ide/palette/impl/PaletteManager.java
@@ -19,6 +19,7 @@ package com.intellij.ide.palette.impl;
import com.intellij.ide.IdeBundle;
import com.intellij.ide.palette.PaletteDragEventListener;
import com.intellij.ide.palette.PaletteItem;
+import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.components.ProjectComponent;
import com.intellij.openapi.fileEditor.FileEditorManager;
import com.intellij.openapi.fileEditor.FileEditorManagerEvent;
@@ -60,20 +61,22 @@ public class PaletteManager implements ProjectComponent {
}
public void projectOpened() {
- StartupManager.getInstance(myProject).registerPostStartupActivity(new Runnable() {
- public void run() {
- myPaletteWindow = new PaletteWindow(myProject);
- myPaletteToolWindow = ToolWindowManager.getInstance(myProject).registerToolWindow(IdeBundle.message("toolwindow.palette"),
- myPaletteWindow,
- ToolWindowAnchor.RIGHT,
- myProject,
- true);
- myPaletteToolWindow.setIcon(IconLoader.getIcon("/general/toolWindowPalette.png"));
- myPaletteToolWindow.setAvailable(false, null);
- final MyFileEditorManagerListener myListener = new MyFileEditorManagerListener();
- myFileEditorManager.addFileEditorManagerListener(myListener, myProject);
- }
- });
+ if (!ApplicationManager.getApplication().isHeadlessEnvironment()) {
+ StartupManager.getInstance(myProject).registerPostStartupActivity(new Runnable() {
+ public void run() {
+ myPaletteWindow = new PaletteWindow(myProject);
+ myPaletteToolWindow = ToolWindowManager.getInstance(myProject).registerToolWindow(IdeBundle.message("toolwindow.palette"),
+ myPaletteWindow,
+ ToolWindowAnchor.RIGHT,
+ myProject,
+ true);
+ myPaletteToolWindow.setIcon(IconLoader.getIcon("/general/toolWindowPalette.png"));
+ myPaletteToolWindow.setAvailable(false, null);
+ final MyFileEditorManagerListener myListener = new MyFileEditorManagerListener();
+ myFileEditorManager.addFileEditorManagerListener(myListener, myProject);
+ }
+ });
+ }
}
public void projectClosed() {
diff --git a/java/java-impl/java-impl.iml b/java/java-impl/java-impl.iml
index c52f97bf075d..f5bd5cce2b5f 100644
--- a/java/java-impl/java-impl.iml
+++ b/java/java-impl/java-impl.iml
@@ -4,6 +4,7 @@
+
diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateMethodQuickFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateMethodQuickFix.java
index b232cb7dce86..2826cec4c910 100644
--- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateMethodQuickFix.java
+++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateMethodQuickFix.java
@@ -24,7 +24,6 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Pair;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
-import com.intellij.psi.impl.JavaPsiFacadeEx;
import com.intellij.psi.util.PsiFormatUtil;
import com.intellij.util.Function;
import com.intellij.util.IncorrectOperationException;
@@ -61,23 +60,18 @@ public class CreateMethodQuickFix implements LocalQuickFix {
}
public void applyFix(@NotNull final Project project, @NotNull final ProblemDescriptor descriptor) {
- try {
- if (!CodeInsightUtilBase.preparePsiElementForWrite(myTargetClass.getContainingFile())) return;
+ if (!CodeInsightUtilBase.preparePsiElementForWrite(myTargetClass.getContainingFile())) return;
- PsiMethod method = createMethod(project);
- List> arguments =
- ContainerUtil.map2List(method.getParameterList().getParameters(), new Function>() {
- public Pair fun(PsiParameter psiParameter) {
- return Pair.create(null, psiParameter.getType());
- }
- });
+ PsiMethod method = createMethod(project);
+ List> arguments =
+ ContainerUtil.map2List(method.getParameterList().getParameters(), new Function>() {
+ public Pair fun(PsiParameter psiParameter) {
+ return Pair.create(null, psiParameter.getType());
+ }
+ });
- method = (PsiMethod)JavaCodeStyleManager.getInstance(project).shortenClassReferences((PsiMethod)myTargetClass.add(method));
- CreateMethodFromUsageFix.doCreate(myTargetClass, method, arguments, PsiSubstitutor.EMPTY, ExpectedTypeInfo.EMPTY_ARRAY, method);
- }
- catch (IncorrectOperationException e) {
- throw new RuntimeException(e);
- }
+ method = (PsiMethod)JavaCodeStyleManager.getInstance(project).shortenClassReferences((PsiMethod)myTargetClass.add(method));
+ CreateMethodFromUsageFix.doCreate(myTargetClass, method, arguments, PsiSubstitutor.EMPTY, ExpectedTypeInfo.EMPTY_ARRAY, method);
}
private PsiMethod createMethod(Project project) {
diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/OrderEntryFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/OrderEntryFix.java
index 0c1b429466db..9c9e93c96193 100644
--- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/OrderEntryFix.java
+++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/OrderEntryFix.java
@@ -22,6 +22,7 @@ import com.intellij.codeInsight.daemon.impl.actions.AddImportAction;
import com.intellij.codeInsight.intention.IntentionAction;
import com.intellij.codeInspection.LocalQuickFix;
import com.intellij.codeInspection.ProblemDescriptor;
+import com.intellij.compiler.ModuleCompilerUtil;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.PathManager;
import com.intellij.openapi.application.Result;
@@ -42,8 +43,6 @@ import com.intellij.psi.*;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.PsiUtil;
-import com.intellij.util.IncorrectOperationException;
-import com.intellij.compiler.ModuleCompilerUtil;
import gnu.trove.THashSet;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
@@ -72,12 +71,7 @@ public abstract class OrderEntryFix implements IntentionAction, LocalQuickFix {
}
public void applyFix(@NotNull final Project project, @NotNull final ProblemDescriptor descriptor) {
- try {
- invoke(project, null, descriptor.getPsiElement().getContainingFile());
- }
- catch (IncorrectOperationException e) {
- throw new RuntimeException(e);
- }
+ invoke(project, null, descriptor.getPsiElement().getContainingFile());
}
@Nullable
diff --git a/java/java-impl/src/com/intellij/codeInsight/editorActions/JavadocTypedHandler.java b/java/java-impl/src/com/intellij/codeInsight/editorActions/JavadocTypedHandler.java
index f8de3b44ae76..8e792448c65f 100644
--- a/java/java-impl/src/com/intellij/codeInsight/editorActions/JavadocTypedHandler.java
+++ b/java/java-impl/src/com/intellij/codeInsight/editorActions/JavadocTypedHandler.java
@@ -117,6 +117,11 @@ public class JavadocTypedHandler extends TypedHandlerDelegate {
return null;
}
return text.subSequence(i + 1, endOffset).toString();
+
+ // There is a possible case that opening tag has attributes, e.g. [offset]. We want to extract
+ // only tag name then.
+ case ' ':
+ case '\t': endOffset = i;
}
}
return null;
diff --git a/java/java-impl/src/com/intellij/ide/structureView/impl/StructureNodeRenderer.java b/java/java-impl/src/com/intellij/ide/structureView/impl/StructureNodeRenderer.java
index 74af60cec239..35cc77e12166 100644
--- a/java/java-impl/src/com/intellij/ide/structureView/impl/StructureNodeRenderer.java
+++ b/java/java-impl/src/com/intellij/ide/structureView/impl/StructureNodeRenderer.java
@@ -23,6 +23,7 @@ import com.intellij.openapi.roots.ui.util.ModifiableCellAppearance;
import com.intellij.openapi.util.Iconable;
import com.intellij.psi.*;
import com.intellij.psi.util.PsiFormatUtil;
+import com.intellij.psi.util.PsiFormatUtilBase;
import com.intellij.ui.ColoredTreeCellRenderer;
import com.intellij.ui.SimpleTextAttributes;
@@ -51,7 +52,8 @@ public class StructureNodeRenderer extends ColoredTreeCellRenderer {
ModifiableCellAppearance result;
if (psiElement instanceof PsiElement && !((PsiElement)psiElement).isValid()) {
result = CompositeAppearance.single(name);
- } else {
+ }
+ else {
PsiClass psiClass = getContainingClass(psiElement);
if (isInheritedMember(node, psiClass) && psiClass != null) {
CompositeAppearance.DequeEnd ending = new CompositeAppearance().getEnding();
@@ -84,13 +86,13 @@ public class StructureNodeRenderer extends ColoredTreeCellRenderer {
}
}
- public static String getNameOf(PsiElement psiElement) {
+ private static String getNameOf(PsiElement psiElement) {
if (psiElement instanceof PsiMethod)
return PsiFormatUtil.formatMethod((PsiMethod)psiElement,
PsiSubstitutor.EMPTY,
- PsiFormatUtil.SHOW_NAME | PsiFormatUtil.SHOW_TYPE | PsiFormatUtil.TYPE_AFTER |
- PsiFormatUtil.SHOW_PARAMETERS,
- PsiFormatUtil.SHOW_TYPE
+ PsiFormatUtilBase.SHOW_NAME | PsiFormatUtilBase.SHOW_TYPE | PsiFormatUtilBase.TYPE_AFTER |
+ PsiFormatUtilBase.SHOW_PARAMETERS,
+ PsiFormatUtilBase.SHOW_TYPE
);
return psiElement.toString();
}
@@ -109,23 +111,17 @@ public class StructureNodeRenderer extends ColoredTreeCellRenderer {
return new SimpleTextAttributes(nameAttributes.getStyle() | SimpleTextAttributes.STYLE_STRIKEOUT, nameAttributes.getFgColor());
}
- public static boolean isDeprecated(Object psiElement) {
- if (psiElement instanceof PsiDocCommentOwner)
- return ((PsiDocCommentOwner) psiElement).isDeprecated();
- return false;
+ private static boolean isDeprecated(Object psiElement) {
+ return psiElement instanceof PsiDocCommentOwner && ((PsiDocCommentOwner)psiElement).isDeprecated();
}
- public static PsiClass getContainingClass(Object element) {
+ private static PsiClass getContainingClass(Object element) {
if (element instanceof PsiMember)
return ((PsiMember) element).getContainingClass();
- if (element instanceof PsiClass) {
- PsiElement parent = ((PsiClass) element).getParent();
- return (PsiClass) (parent instanceof PsiClass ? parent : null);
- }
return null;
}
- public static PsiClass getTreeParentClass(Object value) {
+ private static PsiClass getTreeParentClass(Object value) {
if (!(value instanceof TreeNode))
return null;
for (TreeNode treeNode = ((TreeNode) value).getParent(); treeNode != null; treeNode = treeNode.getParent()) {
diff --git a/java/java-impl/src/com/intellij/ide/structureView/impl/java/JavaClassTreeElement.java b/java/java-impl/src/com/intellij/ide/structureView/impl/java/JavaClassTreeElement.java
index b97433a98ca3..80951de253bd 100644
--- a/java/java-impl/src/com/intellij/ide/structureView/impl/java/JavaClassTreeElement.java
+++ b/java/java-impl/src/com/intellij/ide/structureView/impl/java/JavaClassTreeElement.java
@@ -35,10 +35,8 @@ public class JavaClassTreeElement extends JavaClassTreeElementBase {
}
private Collection getClassChildren() {
- ArrayList array = new ArrayList();
-
final PsiClass aClass = getElement();
- if (aClass == null) return array;
+ if (aClass == null) return Collections.emptyList();
List children = Arrays.asList(aClass.getChildren());
Collection ownChildren = new THashSet();
@@ -47,6 +45,7 @@ public class JavaClassTreeElement extends JavaClassTreeElementBase {
ContainerUtil.addAll(ownChildren, aClass.getInnerClasses());
ContainerUtil.addAll(ownChildren, aClass.getInitializers());
Collection inherited = new LinkedHashSet(children);
+ List array = new ArrayList(inherited.size());
aClass.processDeclarations(new AddAllMembersProcessor(inherited, aClass), ResolveState.initial(), null, aClass);
diff --git a/java/java-impl/src/com/intellij/ide/structureView/impl/java/JavaFileTreeElement.java b/java/java-impl/src/com/intellij/ide/structureView/impl/java/JavaFileTreeElement.java
index 1a5bb59cf538..98a587a369c2 100644
--- a/java/java-impl/src/com/intellij/ide/structureView/impl/java/JavaFileTreeElement.java
+++ b/java/java-impl/src/com/intellij/ide/structureView/impl/java/JavaFileTreeElement.java
@@ -26,7 +26,6 @@ import java.util.ArrayList;
import java.util.Collection;
public class JavaFileTreeElement extends PsiTreeElementBase implements ItemPresentation {
-
public JavaFileTreeElement(PsiJavaFile file) {
super(file);
}
diff --git a/java/java-impl/src/com/intellij/pom/java/impl/PomJavaAspectImpl.java b/java/java-impl/src/com/intellij/pom/java/impl/PomJavaAspectImpl.java
index 9d128cb0c178..e3d0276469e1 100644
--- a/java/java-impl/src/com/intellij/pom/java/impl/PomJavaAspectImpl.java
+++ b/java/java-impl/src/com/intellij/pom/java/impl/PomJavaAspectImpl.java
@@ -68,7 +68,7 @@ public class PomJavaAspectImpl extends PomJavaAspect implements ProjectComponent
if(changeSet == null) return;
final PsiFile containingFile = changeSet.getRootElement().getPsi().getContainingFile();
if(!(containingFile.getLanguage() instanceof JavaLanguage)) return;
- final PomJavaAspectChangeSet set = new PomJavaAspectChangeSet(myPomModel, containingFile);
+ final PomJavaAspectChangeSet set = new PomJavaAspectChangeSet(myPomModel);
set.addChange(new JavaTreeChanged(containingFile));
event.registerChangeSet(this, set);
}
diff --git a/java/java-impl/testSrc/com/intellij/codeInsight/editorActions/JavadocTypedHandlerTest.java b/java/java-impl/testSrc/com/intellij/codeInsight/editorActions/JavadocTypedHandlerTest.java
index 891157c1bdaa..b5935250a698 100644
--- a/java/java-impl/testSrc/com/intellij/codeInsight/editorActions/JavadocTypedHandlerTest.java
+++ b/java/java-impl/testSrc/com/intellij/codeInsight/editorActions/JavadocTypedHandlerTest.java
@@ -37,6 +37,12 @@ public class JavadocTypedHandlerTest {
doTest("", null);
}
+ @Test
+ public void tagWithAttribute() {
+ doTest("", "a");
+ //TODO den implement
+ }
+
private static void doTest(String text, String expected) {
StringBuilder normalized = new StringBuilder();
int offset = text.indexOf(CARET_MARKER);
diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/DiamondMisc.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/DiamondMisc.java
index 30b750e35c9f..d802f473b299 100644
--- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/DiamondMisc.java
+++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/DiamondMisc.java
@@ -42,4 +42,28 @@ class Test1 {
}
class FF extends F{}
-class F {}
\ No newline at end of file
+class F {}
+
+class MyTest {
+ static class Foo {
+ Foo(X x) {}
+ }
+
+ static interface Base {}
+ static class A extends Exception implements Base {}
+ static class B extends Exception implements Base {}
+
+ void m() throws B {
+ try {
+ if (true) {
+ throw new A();
+ }
+ else {
+ throw new B();
+ }
+ } catch (A ex) {
+ Foo extends Base> foo1 = new Foo<>(ex); // ok
+ Foo> foo2 = new Foo<>(ex); // should be error
+ }
+ }
+}
diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/JavaAutoPopupTest.groovy b/java/java-tests/testSrc/com/intellij/codeInsight/completion/JavaAutoPopupTest.groovy
index 1439b3b55f83..64ed0eedb9e9 100644
--- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/JavaAutoPopupTest.groovy
+++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/JavaAutoPopupTest.groovy
@@ -429,9 +429,9 @@ class JavaAutoPopupTest extends CompletionAutoPopupTestCase {
public void testVerticalArrows() {
testArrows false, false, 0, -1
- testArrows false, true, -1, 1
- testArrows true, false, 0, -1
- testArrows true, true, -1, 1
+ testArrows false, true, 0, -1
+ testArrows true, false, 0, 1
+ testArrows true, true, 0, 1
}
public void testHideOnOnePrefixVariant() {
diff --git a/java/java-tests/testSrc/com/intellij/openapi/vfs/LocalFileSystemTest.java b/java/java-tests/testSrc/com/intellij/openapi/vfs/LocalFileSystemTest.java
index 820ddfd6d8d6..017070824b74 100644
--- a/java/java-tests/testSrc/com/intellij/openapi/vfs/LocalFileSystemTest.java
+++ b/java/java-tests/testSrc/com/intellij/openapi/vfs/LocalFileSystemTest.java
@@ -1,14 +1,19 @@
package com.intellij.openapi.vfs;
import com.intellij.openapi.application.ApplicationManager;
+import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.registry.Registry;
import com.intellij.openapi.vfs.impl.win32.Win32LocalFileSystem;
import com.intellij.openapi.vfs.newvfs.ManagingFS;
import com.intellij.testFramework.IdeaTestCase;
import com.intellij.testFramework.IdeaTestUtil;
+import org.jetbrains.annotations.NonNls;
import java.io.File;
+import java.io.FileOutputStream;
import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.nio.charset.Charset;
import java.util.Arrays;
public class LocalFileSystemTest extends IdeaTestCase{
@@ -219,4 +224,20 @@ public class LocalFileSystemTest extends IdeaTestCase{
);
}
+
+ public static void setContentOnDisk(File file, byte[] bom, String content, Charset charset) throws IOException {
+ FileOutputStream stream = new FileOutputStream(file);
+ stream.write(bom);
+ OutputStreamWriter writer = new OutputStreamWriter(stream, charset);
+ writer.write(content);
+ writer.close();
+ }
+
+ public static VirtualFile createTempFile(@NonNls String ext, byte[] bom, @NonNls String content, Charset charset) throws IOException {
+ File temp = FileUtil.createTempFile("copy", "." + ext);
+ setContentOnDisk(temp, bom, content, charset);
+
+ myFilesToDelete.add(temp);
+ return LocalFileSystem.getInstance().refreshAndFindFileByIoFile(temp);
+ }
}
diff --git a/java/java-tests/testSrc/com/intellij/projectView/StructureViewUpdatingTest.java b/java/java-tests/testSrc/com/intellij/projectView/StructureViewUpdatingTest.java
index d7ee434b124c..81a61b14b0ad 100644
--- a/java/java-tests/testSrc/com/intellij/projectView/StructureViewUpdatingTest.java
+++ b/java/java-tests/testSrc/com/intellij/projectView/StructureViewUpdatingTest.java
@@ -34,11 +34,9 @@ package com.intellij.projectView;
import com.intellij.JavaTestUtil;
import com.intellij.ide.structureView.impl.java.InheritedMembersFilter;
import com.intellij.ide.structureView.newStructureView.StructureViewComponent;
-import com.intellij.openapi.projectRoots.Sdk;
-import com.intellij.openapi.projectRoots.impl.JavaSdkImpl;
-import com.intellij.testFramework.IdeaTestUtil;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.command.CommandProcessor;
+import com.intellij.openapi.command.WriteCommandAction;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.fileEditor.FileEditor;
import com.intellij.openapi.fileEditor.FileEditorManager;
@@ -48,6 +46,7 @@ import com.intellij.psi.JavaDirectoryService;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiDocumentManager;
import com.intellij.psi.PsiField;
+import com.intellij.testFramework.PlatformTestUtil;
import com.intellij.testFramework.TestSourceBasedTestCase;
import com.intellij.util.IncorrectOperationException;
@@ -69,55 +68,55 @@ public class StructureViewUpdatingTest extends TestSourceBasedTestCase {
final StructureViewComponent structureViewComponent =
(StructureViewComponent)fileEditor.getStructureViewBuilder().createStructureView(fileEditor, myProject);
final Document document = PsiDocumentManager.getInstance(myProject).getDocument(psiClass.getContainingFile());
- IdeaTestUtil.assertTreeEqual(structureViewComponent.getTree(),
- "-Class1.java\n" +
- " -Class1\n" +
- " getValue():int\n" +
- " getClass():Class extends Object>\n" +
- " hashCode():int\n" +
- " equals(Object):boolean\n" +
- " clone():Object\n" +
- " toString():String\n" +
- " notify():void\n" +
- " notifyAll():void\n" +
- " wait(long):void\n" +
- " wait(long, int):void\n" +
- " wait():void\n" +
- " finalize():void\n" +
- " myField1:boolean\n" +
- " myField2:boolean\n");
+ PlatformTestUtil.assertTreeEqual(structureViewComponent.getTree(),
+ "-Class1.java\n" +
+ " -Class1\n" +
+ " getValue():int\n" +
+ " getClass():Class extends Object>\n" +
+ " hashCode():int\n" +
+ " equals(Object):boolean\n" +
+ " clone():Object\n" +
+ " toString():String\n" +
+ " notify():void\n" +
+ " notifyAll():void\n" +
+ " wait(long):void\n" +
+ " wait(long, int):void\n" +
+ " wait():void\n" +
+ " finalize():void\n" +
+ " myField1:boolean\n" +
+ " myField2:boolean\n");
- CommandProcessor.getInstance().executeCommand(myProject, new Runnable() {
+ new WriteCommandAction.Simple(getProject()) {
@Override
- public void run() {
-
+ protected void run() throws Throwable {
final int offset = document.getLineStartOffset(5);
document.insertString(offset, " boolean myNewField = false;\n");
}
- }, null, null);
+ }.execute().throwException();
+
PsiDocumentManager.getInstance(myProject).commitDocument(document);
- IdeaTestUtil.waitForAlarm(600);
+ PlatformTestUtil.waitForAlarm(600);
//TreeUtil.expand(structureViewComponent.getTree(), 3);
- IdeaTestUtil.assertTreeEqual(structureViewComponent.getTree(), "-Class1.java\n" +
- " -Class1\n" + " getValue():int\n" +
- " getClass():Class extends Object>\n" +
- " hashCode():int\n" +
- " equals(Object):boolean\n" +
- " clone():Object\n" +
- " toString():String\n" +
- " notify():void\n" +
- " notifyAll():void\n" +
- " wait(long):void\n" +
- " wait(long, int):void\n" +
- " wait():void\n" +
- " finalize():void\n" +
- " myField1:boolean\n" +
- " myField2:boolean\n" +
- " myNewField:boolean = false\n");
+ PlatformTestUtil.assertTreeEqual(structureViewComponent.getTree(), "-Class1.java\n" +
+ " -Class1\n" + " getValue():int\n" +
+ " getClass():Class extends Object>\n" +
+ " hashCode():int\n" +
+ " equals(Object):boolean\n" +
+ " clone():Object\n" +
+ " toString():String\n" +
+ " notify():void\n" +
+ " notifyAll():void\n" +
+ " wait(long):void\n" +
+ " wait(long, int):void\n" +
+ " wait():void\n" +
+ " finalize():void\n" +
+ " myField1:boolean\n" +
+ " myField2:boolean\n" +
+ " myNewField:boolean = false\n");
Disposer.dispose(structureViewComponent);
@@ -138,31 +137,31 @@ public class StructureViewUpdatingTest extends TestSourceBasedTestCase {
try {
structureViewComponent.setActionActive(InheritedMembersFilter.ID, true);
- IdeaTestUtil.assertTreeEqual(structureViewComponent.getTree(), "-Class2.java\n" +
- " -Class2\n" +
- " +InnerClass1\n" +
- " +InnerClass2\n" +
- " getValue():int\n" +
- " myField1:boolean\n" +
- " myField2:boolean\n" +
- " myField3:boolean\n" +
- " myField4:boolean\n");
+ PlatformTestUtil.assertTreeEqual(structureViewComponent.getTree(), "-Class2.java\n" +
+ " -Class2\n" +
+ " +InnerClass1\n" +
+ " +InnerClass2\n" +
+ " getValue():int\n" +
+ " myField1:boolean\n" +
+ " myField2:boolean\n" +
+ " myField3:boolean\n" +
+ " myField4:boolean\n");
final PsiField innerClassField = psiClass.getInnerClasses()[0].getFields()[0];
structureViewComponent.select(innerClassField, true);
- IdeaTestUtil.assertTreeEqual(structureViewComponent.getTree(), "-Class2.java\n" +
- " -Class2\n" +
- " -InnerClass1\n" +
- " +InnerClass12\n" +
- " myInnerClassField:int\n" +
- " +InnerClass2\n" +
- " getValue():int\n" +
- " myField1:boolean\n" +
- " myField2:boolean\n" +
- " myField3:boolean\n" +
- " myField4:boolean\n");
+ PlatformTestUtil.assertTreeEqual(structureViewComponent.getTree(), "-Class2.java\n" +
+ " -Class2\n" +
+ " -InnerClass1\n" +
+ " +InnerClass12\n" +
+ " myInnerClassField:int\n" +
+ " +InnerClass2\n" +
+ " getValue():int\n" +
+ " myField1:boolean\n" +
+ " myField2:boolean\n" +
+ " myField3:boolean\n" +
+ " myField4:boolean\n");
CommandProcessor.getInstance().executeCommand(myProject, new Runnable() {
@Override
@@ -175,25 +174,25 @@ public class StructureViewUpdatingTest extends TestSourceBasedTestCase {
innerClassField.delete();
}
catch (IncorrectOperationException e) {
- assertTrue(e.getLocalizedMessage(), false);
+ fail(e.getLocalizedMessage());
}
}
});
}
}, null, null);
- IdeaTestUtil.waitForAlarm(600);
+ PlatformTestUtil.waitForAlarm(600);
- IdeaTestUtil.assertTreeEqual(structureViewComponent.getTree(), "-Class2.java\n" +
- " -Class2\n" +
- " -InnerClass1\n" +
- " +InnerClass12\n" +
- " +InnerClass2\n" +
- " getValue():int\n" +
- " myField1:boolean\n" +
- " myField2:boolean\n" +
- " myField3:boolean\n" +
- " myField4:boolean\n");
+ PlatformTestUtil.assertTreeEqual(structureViewComponent.getTree(), "-Class2.java\n" +
+ " -Class2\n" +
+ " -InnerClass1\n" +
+ " +InnerClass12\n" +
+ " +InnerClass2\n" +
+ " getValue():int\n" +
+ " myField1:boolean\n" +
+ " myField2:boolean\n" +
+ " myField3:boolean\n" +
+ " myField4:boolean\n");
}
finally {
@@ -213,26 +212,26 @@ public class StructureViewUpdatingTest extends TestSourceBasedTestCase {
(StructureViewComponent)fileEditor.getStructureViewBuilder().createStructureView(fileEditor, myProject);
final JTree tree = structureViewComponent.getTree();
- IdeaTestUtil.assertTreeEqual(tree, "-test.xml\n" +
- " -test\n" +
- " +level1\n" +
- " +level1\n" +
- " +level1\n" +
- " +level1\n");
+ PlatformTestUtil.assertTreeEqual(tree, "-test.xml\n" +
+ " -test\n" +
+ " +level1\n" +
+ " +level1\n" +
+ " +level1\n" +
+ " +level1\n");
tree.expandPath(tree.getPathForRow(3));
- IdeaTestUtil.waitForAlarm(600);
+ PlatformTestUtil.waitForAlarm(600);
- IdeaTestUtil.assertTreeEqual(tree,
- "-test.xml\n" +
- " -test\n" +
- " +level1\n" +
- " -level1\n" +
- " +level2\n" +
- " +level1\n" +
- " +level1\n");
+ PlatformTestUtil.assertTreeEqual(tree,
+ "-test.xml\n" +
+ " -test\n" +
+ " +level1\n" +
+ " -level1\n" +
+ " +level2\n" +
+ " +level1\n" +
+ " +level1\n");
Disposer.dispose(structureViewComponent);
}
@@ -246,4 +245,9 @@ public class StructureViewUpdatingTest extends TestSourceBasedTestCase {
protected String getTestDataPath() {
return JavaTestUtil.getJavaTestDataPath();
}
+
+ @Override
+ protected boolean isRunInWriteAction() {
+ return false;
+ }
}
diff --git a/java/openapi/src/com/intellij/pom/java/events/PomJavaAspectChangeSet.java b/java/openapi/src/com/intellij/pom/java/events/PomJavaAspectChangeSet.java
index d1e2792219f9..2625a48a6144 100644
--- a/java/openapi/src/com/intellij/pom/java/events/PomJavaAspectChangeSet.java
+++ b/java/openapi/src/com/intellij/pom/java/events/PomJavaAspectChangeSet.java
@@ -20,7 +20,6 @@ import com.intellij.pom.PomModel;
import com.intellij.pom.PomModelAspect;
import com.intellij.pom.event.PomChangeSet;
import com.intellij.pom.java.PomJavaAspect;
-import com.intellij.psi.PsiFile;
import java.util.ArrayList;
import java.util.List;
@@ -28,22 +27,16 @@ import java.util.List;
public class PomJavaAspectChangeSet implements PomChangeSet{
private final PomModel myModel;
private final List myChanges = new ArrayList();
- private final PsiFile myChangedFile;
- public PomJavaAspectChangeSet(PomModel model, PsiFile fileChanged) {
+ public PomJavaAspectChangeSet(PomModel model) {
myModel = model;
- myChangedFile = fileChanged;
}
public void addChange(PomJavaChange change) {
myChanges.add(change);
}
- public List getChanges() {
- return myChanges;
- }
-
public PomModelAspect getAspect() {
return myModel.getModelAspect(PomJavaAspect.class);
}
@@ -53,8 +46,4 @@ public class PomJavaAspectChangeSet implements PomChangeSet{
final PomJavaAspectChangeSet blockedJavaChange = (PomJavaAspectChangeSet)blocked;
myChanges.addAll(blockedJavaChange.myChanges);
}
-
- public PsiFile getChangedFile() {
- return myChangedFile;
- }
}
diff --git a/java/testFramework/src/com/intellij/projectView/BaseProjectViewTestCase.java b/java/testFramework/src/com/intellij/projectView/BaseProjectViewTestCase.java
index cbe0eb8c9a30..c1c6510b24d3 100644
--- a/java/testFramework/src/com/intellij/projectView/BaseProjectViewTestCase.java
+++ b/java/testFramework/src/com/intellij/projectView/BaseProjectViewTestCase.java
@@ -25,8 +25,6 @@ import com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode;
import com.intellij.ide.util.treeView.*;
import com.intellij.openapi.application.ex.PathManagerEx;
import com.intellij.openapi.project.DumbAwareRunnable;
-import com.intellij.openapi.projectRoots.Sdk;
-import com.intellij.openapi.projectRoots.impl.JavaSdkImpl;
import com.intellij.openapi.startup.StartupManager;
import com.intellij.openapi.ui.Queryable;
import com.intellij.openapi.util.Disposer;
@@ -300,4 +298,9 @@ public abstract class BaseProjectViewTestCase extends TestSourceBasedTestCase {
protected String getTestDataPath() {
return PathManagerEx.getTestDataPath(getClass());
}
+
+ @Override
+ protected boolean isRunInWriteAction() {
+ return false;
+ }
}
diff --git a/platform/lang-api/src/com/intellij/analysis/AnalysisScope.java b/platform/lang-api/src/com/intellij/analysis/AnalysisScope.java
index 9460a5791b6b..b7fc38cdbc95 100644
--- a/platform/lang-api/src/com/intellij/analysis/AnalysisScope.java
+++ b/platform/lang-api/src/com/intellij/analysis/AnalysisScope.java
@@ -237,7 +237,9 @@ public class AnalysisScope {
protected void accept(final PsiElementVisitor visitor, final boolean needReadAction) {
if (myType == VIRTUAL_FILES) {
final PsiManager psiManager = PsiManager.getInstance(myProject);
+ final FileIndex index = ProjectRootManager.getInstance(myProject).getFileIndex();
for (final VirtualFile file : myFilesSet) {
+ if (!myIncludeTestSource && index.isInTestSourceContent(file)) continue;
if (!processFile(file, visitor, psiManager, needReadAction)) return;
}
} else if (myScope instanceof GlobalSearchScope) {
@@ -247,6 +249,7 @@ public class AnalysisScope {
public boolean processFile(final VirtualFile fileOrDir) {
final boolean isInScope = ApplicationManager.getApplication().runReadAction(new Computable() {
public Boolean compute() {
+ if (!myIncludeTestSource && projectFileIndex.isInTestSourceContent(fileOrDir)) return false;
return ((GlobalSearchScope)myScope).contains(fileOrDir);
}
}).booleanValue();
diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/CodeCompletionHandlerBase.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/CodeCompletionHandlerBase.java
index 106e016d7b86..c2f09f4c935c 100644
--- a/platform/lang-impl/src/com/intellij/codeInsight/completion/CodeCompletionHandlerBase.java
+++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/CodeCompletionHandlerBase.java
@@ -239,11 +239,10 @@ public class CodeCompletionHandlerBase implements CodeInsightActionHandler {
@NotNull
private LookupImpl obtainLookup(Editor editor) {
LookupImpl existing = (LookupImpl)LookupManager.getActiveLookup(editor);
- if (existing != null && existing.isCompletion()) {
+ if (existing != null && existing.isCompletion() && !existing.isHintMode()) {
existing.markReused();
if (!autopopup) {
existing.setFocused(true);
- existing.setHintMode(false);
}
return existing;
}
diff --git a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupActionHandler.java b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupActionHandler.java
index de8e1eb23ab0..b00d961853ef 100644
--- a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupActionHandler.java
+++ b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupActionHandler.java
@@ -17,6 +17,7 @@
package com.intellij.codeInsight.lookup.impl;
import com.intellij.codeInsight.lookup.LookupManager;
+import com.intellij.ide.ui.UISettings;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.editor.Editor;
@@ -73,11 +74,6 @@ public abstract class LookupActionHandler extends EditorActionHandler {
protected void executeInLookup(final LookupImpl lookup, DataContext context) {
if (!lookup.isFocused()) {
- if (lookup.isPositionedAboveCaret()) {
- myOriginalHandler.execute(lookup.getEditor(), context);
- return;
- }
-
lookup.setFocused(true);
lookup.getList().setSelectedIndex(0);
lookup.refreshUi();
@@ -94,16 +90,14 @@ public abstract class LookupActionHandler extends EditorActionHandler {
protected void executeInLookup(final LookupImpl lookup, DataContext context) {
if (!lookup.isFocused()) {
- if (!lookup.isPositionedAboveCaret()) {
+ if (!UISettings.getInstance().CYCLE_SCROLLING) {
myOriginalHandler.execute(lookup.getEditor(), context);
return;
}
lookup.setFocused(true);
- final int index = ApplicationManager.getApplication().isUnitTestMode() ? lookup.getItems().size() - 1 : lookup.getList().getLastVisibleIndex();
- lookup.getList().setSelectedIndex(index);
+ lookup.getList().setSelectedIndex(0);
lookup.refreshUi();
- return;
}
ListScrollingUtil.moveUp(lookup.getList(), 0);
}
diff --git a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/actions/ChooseItemReplaceAction.java b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/actions/ChooseItemReplaceAction.java
index 54c84064dc0a..53a3fe3acd77 100644
--- a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/actions/ChooseItemReplaceAction.java
+++ b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/actions/ChooseItemReplaceAction.java
@@ -22,6 +22,7 @@ import com.intellij.codeInsight.completion.CompletionService;
import com.intellij.codeInsight.lookup.Lookup;
import com.intellij.codeInsight.lookup.LookupManager;
import com.intellij.codeInsight.lookup.impl.LookupImpl;
+import com.intellij.codeInsight.template.impl.ListTemplatesHandler;
import com.intellij.codeInsight.template.impl.LiveTemplateCompletionContributor;
import com.intellij.codeInsight.template.impl.TemplateImpl;
import com.intellij.codeInsight.template.impl.TemplateSettings;
@@ -51,6 +52,8 @@ public class ChooseItemReplaceAction extends EditorAction {
public boolean isEnabled(Editor editor, DataContext dataContext) {
LookupImpl lookup = (LookupImpl)LookupManager.getActiveLookup(editor);
if (lookup != null) {
+ lookup.refreshUi(); // to bring the list model up to date
+
CompletionProcess completion = CompletionService.getCompletionService().getCurrentCompletion();
if (completion != null && completion.isAutopopupCompletion() && hasTemplatePrefix(lookup, TemplateSettings.TAB_CHAR)) {
return false;
@@ -60,7 +63,6 @@ public class ChooseItemReplaceAction extends EditorAction {
return true;
}
- lookup.refreshUi(); // to bring the list model up to date
return !lookup.getItems().isEmpty();
}
return false;
@@ -76,7 +78,7 @@ public class ChooseItemReplaceAction extends EditorAction {
final int end = editor.getCaretModel().getOffset();
final int start = lookup.getLookupStart();
- final String prefix = editor.getDocument().getText(TextRange.create(start, end));
+ final String prefix = !lookup.getItems().isEmpty() ? editor.getDocument().getText(TextRange.create(start, end)) : ListTemplatesHandler.getPrefix(editor.getDocument(), end);
final TemplateImpl template = LiveTemplateCompletionContributor.findApplicableTemplate(file, end, prefix);
return template != null && shortcutChar == TemplateSettings.getInstance().getShortcutChar(template);
}
diff --git a/platform/lang-impl/src/com/intellij/codeInsight/template/impl/ListTemplatesHandler.java b/platform/lang-impl/src/com/intellij/codeInsight/template/impl/ListTemplatesHandler.java
index 2d2e49487640..12a3b0760a57 100644
--- a/platform/lang-impl/src/com/intellij/codeInsight/template/impl/ListTemplatesHandler.java
+++ b/platform/lang-impl/src/com/intellij/codeInsight/template/impl/ListTemplatesHandler.java
@@ -107,7 +107,7 @@ public class ListTemplatesHandler implements CodeInsightActionHandler {
return true;
}
- private static String getPrefix(Document document, int offset) {
+ public static String getPrefix(Document document, int offset) {
CharSequence chars = document.getCharsSequence();
int start = offset;
while (true) {
diff --git a/platform/lang-impl/src/com/intellij/codeInspection/actions/RunInspectionAction.java b/platform/lang-impl/src/com/intellij/codeInspection/actions/RunInspectionAction.java
index b5dbefcb4d96..0e074c0538a9 100644
--- a/platform/lang-impl/src/com/intellij/codeInspection/actions/RunInspectionAction.java
+++ b/platform/lang-impl/src/com/intellij/codeInspection/actions/RunInspectionAction.java
@@ -27,20 +27,16 @@ import com.intellij.codeInspection.ex.InspectionProfileImpl;
import com.intellij.featureStatistics.FeatureUsageTracker;
import com.intellij.ide.IdeBundle;
import com.intellij.ide.actions.GotoActionBase;
+import com.intellij.ide.util.gotoByName.ChooseByNameFilter;
import com.intellij.ide.util.gotoByName.ChooseByNamePopup;
-import com.intellij.ide.util.gotoByName.ChooseByNamePopupComponent;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.LangDataKeys;
import com.intellij.openapi.actionSystem.PlatformDataKeys;
-import com.intellij.openapi.application.ModalityState;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleUtil;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
-import com.intellij.psi.PsiDirectory;
-import com.intellij.psi.PsiElement;
-import com.intellij.psi.PsiFile;
-import com.intellij.psi.PsiManager;
+import com.intellij.psi.*;
import org.jdom.Element;
import org.jetbrains.annotations.NotNull;
@@ -57,26 +53,30 @@ public class RunInspectionAction extends GotoActionBase {
@Override
protected void gotoActionPerformed(final AnActionEvent e) {
final Project project = e.getData(PlatformDataKeys.PROJECT);
+ if (project == null) return;
+
+ PsiDocumentManager.getInstance(project).commitAllDocuments();
+
final PsiElement psiElement = LangDataKeys.PSI_ELEMENT.getData(e.getDataContext());
final PsiFile psiFile = LangDataKeys.PSI_FILE.getData(e.getDataContext());
final VirtualFile virtualFile = LangDataKeys.VIRTUAL_FILE.getData(e.getDataContext());
- if (project == null || virtualFile == null) return;
+ if (virtualFile == null) return;
+
FeatureUsageTracker.getInstance().triggerFeatureUsed("navigation.goto.inspection");
- final ChooseByNamePopup popup = ChooseByNamePopup.createPopup(project, new GotoInspectionModel(project), getPsiContext(e));
- popup.setSearchInAnyPlace(true);
- popup.invoke(new ChooseByNamePopupComponent.Callback() {
- public void onClose() {
- if (RunInspectionAction.class.equals(myInAction)) {
- myInAction = null;
- }
+ final GotoInspectionModel model = new GotoInspectionModel(project);
+ showNavigationPopup(e, model, new GotoActionCallback