summaryrefslogtreecommitdiff
path: root/java/java-psi-impl/src/com/intellij/codeInsight
diff options
context:
space:
mode:
Diffstat (limited to 'java/java-psi-impl/src/com/intellij/codeInsight')
-rw-r--r--java/java-psi-impl/src/com/intellij/codeInsight/CustomExceptionHandler.java13
-rw-r--r--java/java-psi-impl/src/com/intellij/codeInsight/ExceptionUtil.java5
-rw-r--r--java/java-psi-impl/src/com/intellij/codeInsight/folding/impl/JavaFoldingBuilderBase.java8
-rw-r--r--java/java-psi-impl/src/com/intellij/codeInsight/folding/impl/ParameterNameFoldingManager.java6
-rw-r--r--java/java-psi-impl/src/com/intellij/codeInsight/javadoc/ColorUtil.java14
5 files changed, 35 insertions, 11 deletions
diff --git a/java/java-psi-impl/src/com/intellij/codeInsight/CustomExceptionHandler.java b/java/java-psi-impl/src/com/intellij/codeInsight/CustomExceptionHandler.java
new file mode 100644
index 000000000000..7678390d0356
--- /dev/null
+++ b/java/java-psi-impl/src/com/intellij/codeInsight/CustomExceptionHandler.java
@@ -0,0 +1,13 @@
+package com.intellij.codeInsight;
+
+import com.intellij.openapi.extensions.ExtensionPointName;
+import com.intellij.psi.PsiClassType;
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public abstract class CustomExceptionHandler {
+ public static final ExtensionPointName<CustomExceptionHandler> KEY = ExtensionPointName.create("com.intellij.custom.exception.handler");
+
+ public abstract boolean isHandled(@Nullable PsiElement element, @NotNull PsiClassType exceptionType, PsiElement topElement);
+}
diff --git a/java/java-psi-impl/src/com/intellij/codeInsight/ExceptionUtil.java b/java/java-psi-impl/src/com/intellij/codeInsight/ExceptionUtil.java
index 552c7e2d9ff5..bb4e322a2eec 100644
--- a/java/java-psi-impl/src/com/intellij/codeInsight/ExceptionUtil.java
+++ b/java/java-psi-impl/src/com/intellij/codeInsight/ExceptionUtil.java
@@ -15,6 +15,7 @@
*/
package com.intellij.codeInsight;
+import com.intellij.openapi.extensions.Extensions;
import com.intellij.openapi.util.Pair;
import com.intellij.psi.*;
import com.intellij.psi.controlFlow.*;
@@ -675,6 +676,10 @@ public class ExceptionUtil {
// exceptions thrown in field initializers should be thrown in all class constructors
return areAllConstructorsThrow(aClass, exceptionType);
}
+ } else {
+ for (CustomExceptionHandler exceptionHandler : Extensions.getExtensions(CustomExceptionHandler.KEY)) {
+ if (exceptionHandler.isHandled(element, exceptionType, topElement)) return true;
+ }
}
return isHandled(parent, exceptionType, topElement);
}
diff --git a/java/java-psi-impl/src/com/intellij/codeInsight/folding/impl/JavaFoldingBuilderBase.java b/java/java-psi-impl/src/com/intellij/codeInsight/folding/impl/JavaFoldingBuilderBase.java
index 5e008afb4797..e2de5a55e0b3 100644
--- a/java/java-psi-impl/src/com/intellij/codeInsight/folding/impl/JavaFoldingBuilderBase.java
+++ b/java/java-psi-impl/src/com/intellij/codeInsight/folding/impl/JavaFoldingBuilderBase.java
@@ -598,9 +598,15 @@ public abstract class JavaFoldingBuilderBase extends CustomFoldingBuilder implem
Document document = method.getContainingFile().getViewProvider().getDocument();
PsiCodeBlock body = method.getBody();
- if (body == null || document == null) {
+ PsiIdentifier nameIdentifier = method.getNameIdentifier();
+ if (body == null || document == null || nameIdentifier == null) {
return false;
}
+ if (document.getLineNumber(nameIdentifier.getTextRange().getStartOffset()) !=
+ document.getLineNumber(method.getParameterList().getTextRange().getEndOffset())) {
+ return false;
+ }
+
PsiJavaToken lBrace = body.getLBrace();
PsiJavaToken rBrace = body.getRBrace();
PsiStatement[] statements = body.getStatements();
diff --git a/java/java-psi-impl/src/com/intellij/codeInsight/folding/impl/ParameterNameFoldingManager.java b/java/java-psi-impl/src/com/intellij/codeInsight/folding/impl/ParameterNameFoldingManager.java
index aca4357f7e49..a8b2b40111ba 100644
--- a/java/java-psi-impl/src/com/intellij/codeInsight/folding/impl/ParameterNameFoldingManager.java
+++ b/java/java-psi-impl/src/com/intellij/codeInsight/folding/impl/ParameterNameFoldingManager.java
@@ -39,7 +39,8 @@ public class ParameterNameFoldingManager {
Couple.of("first", "last"),
Couple.of("first", "second"),
Couple.of("from", "to"),
- Couple.of("key", "value")
+ Couple.of("key", "value"),
+ Couple.of("min", "max")
);
private final PsiCallExpression myCallExpression;
@@ -58,7 +59,8 @@ public class ParameterNameFoldingManager {
if (callArgument instanceof PsiPrefixExpression) {
PsiPrefixExpression expr = (PsiPrefixExpression)callArgument;
IElementType tokenType = expr.getOperationTokenType();
- return JavaTokenType.MINUS.equals(tokenType) && expr.getOperand() instanceof PsiLiteralExpression;
+ return (JavaTokenType.MINUS.equals(tokenType)
+ || JavaTokenType.PLUS.equals(tokenType)) && expr.getOperand() instanceof PsiLiteralExpression;
}
return false;
diff --git a/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/ColorUtil.java b/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/ColorUtil.java
index f7094421b980..ac2fe33d0e43 100644
--- a/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/ColorUtil.java
+++ b/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/ColorUtil.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2009 JetBrains s.r.o.
+ * Copyright 2000-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,10 +17,10 @@ package com.intellij.codeInsight.javadoc;
import com.intellij.psi.*;
import com.intellij.util.ArrayUtil;
+import com.intellij.util.ReflectionUtil;
import org.jetbrains.annotations.NotNull;
import java.awt.*;
-import java.lang.reflect.Field;
/**
* @author spleaner
@@ -98,14 +98,12 @@ public class ColorUtil {
if (reference != null) {
final PsiElement psiElement = reference.resolve();
if (psiElement instanceof PsiField) {
- final PsiClass psiClass = ((PsiField) psiElement).getContainingClass();
+ PsiField psiField = (PsiField)psiElement;
+ final PsiClass psiClass = psiField.getContainingClass();
if (psiClass != null && "java.awt.Color".equals(psiClass.getQualifiedName())) {
- try {
- Field field = Class.forName("java.awt.Color").getField(((PsiField)psiElement).getName());
- final Color c = (Color) field.get(null);
+ Color c = ReflectionUtil.getField(Color.class, null, Color.class, psiField.getName());
+ if (c != null) {
buffer.append(generatePreviewHtml(c));
- } catch (Exception e) {
- // nothing
}
}
}