> listener, @NotNull Disposable parentDisposable);
+
+ void updateBreakpointPresentation(@NotNull XLineBreakpoint> breakpoint, @Nullable Icon icon, @Nullable String errorMessage);
}
diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XBreakpointManagerImpl.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XBreakpointManagerImpl.java
index c1c257f9307d..ccae800efd12 100644
--- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XBreakpointManagerImpl.java
+++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XBreakpointManagerImpl.java
@@ -34,6 +34,7 @@ import com.intellij.xdebugger.impl.XDebuggerManagerImpl;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import javax.swing.*;
import java.util.*;
/**
@@ -230,6 +231,14 @@ public class XBreakpointManagerImpl implements XBreakpointManager, PersistentSta
myAllBreakpointsDispatcher.addListener(listener, parentDisposable);
}
+ public void updateBreakpointPresentation(@NotNull XLineBreakpoint> breakpoint, @Nullable Icon icon, @Nullable String errorMessage) {
+ final CustomizedBreakpointPresentation presentation = new CustomizedBreakpointPresentation();
+ presentation.setErrorMessage(errorMessage);
+ presentation.setIcon(icon);
+ ((XLineBreakpointImpl)breakpoint).setCustomizedPresentation(presentation);
+ myLineBreakpointManager.queueBreakpointUpdate(breakpoint);
+ }
+
public BreakpointManagerState getState() {
myDependentBreakpointManager.saveState();
BreakpointManagerState state = new BreakpointManagerState();
diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XLineBreakpointImpl.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XLineBreakpointImpl.java
index c22575755bfc..72460c7fff04 100644
--- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XLineBreakpointImpl.java
+++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XLineBreakpointImpl.java
@@ -58,6 +58,7 @@ public class XLineBreakpointImpl extends XBreak
private XSourcePosition mySourcePosition;
@NonNls private static final String BR_NBSP = "
";
private boolean myDisposed;
+ private CustomizedBreakpointPresentation myCustomizedPresentation;
public XLineBreakpointImpl(final XLineBreakpointType
type, XBreakpointManagerImpl breakpointManager, String url, int line, final @Nullable P properties) {
super(type, breakpointManager, properties, new LineBreakpointState
(true, type.getId(), url, line));
@@ -141,15 +142,15 @@ public class XLineBreakpointImpl
extends XBreak
}
}
}
+ if (myCustomizedPresentation != null) {
+ final Icon icon = myCustomizedPresentation.getIcon();
+ if (icon != null) {
+ return icon;
+ }
+ }
return myType.getEnabledIcon();
}
- @Nullable
- private CustomizedBreakpointPresentation getCustomizedPresentation() {
- final XDebugSessionImpl currentSession = getBreakpointManager().getDebuggerManager().getCurrentSession();
- return currentSession != null ? currentSession.getBreakpointPresentation(this) : null;
- }
-
public int getLine() {
return myState.getLine();
}
@@ -270,8 +271,15 @@ public class XLineBreakpointImpl
extends XBreak
@Nullable
private String getErrorMessage() {
- CustomizedBreakpointPresentation presentation = getCustomizedPresentation();
- return presentation != null ? presentation.getErrorMessage() : null;
+ final XDebugSessionImpl currentSession = getBreakpointManager().getDebuggerManager().getCurrentSession();
+ if (currentSession != null) {
+ CustomizedBreakpointPresentation presentation = currentSession.getBreakpointPresentation(this);
+ if (presentation != null) {
+ final String message = presentation.getErrorMessage();
+ if (message != null) return message;
+ }
+ }
+ return myCustomizedPresentation != null ? myCustomizedPresentation.getErrorMessage() : null;
}
public void updatePosition() {
@@ -289,6 +297,10 @@ public class XLineBreakpointImpl
extends XBreak
}
}
+ public void setCustomizedPresentation(CustomizedBreakpointPresentation presentation) {
+ myCustomizedPresentation = presentation;
+ }
+
@Tag("line-breakpoint")
public static class LineBreakpointState
extends XBreakpointBase.BreakpointState, P, XLineBreakpointType> {
private String myFileUrl;
diff --git a/plugins/devkit/src/dom/KeyboardShortcut.java b/plugins/devkit/src/dom/KeyboardShortcut.java
index 4034a113ce07..71829d0b011a 100644
--- a/plugins/devkit/src/dom/KeyboardShortcut.java
+++ b/plugins/devkit/src/dom/KeyboardShortcut.java
@@ -67,4 +67,13 @@ public interface KeyboardShortcut extends DomElement {
GenericAttributeValue getSecondKeystroke();
+ /**
+ * Returns the value of the remove child.
+ * Attribute remove option
+ * @return the value of the remove child.
+ */
+ @NotNull
+ GenericAttributeValue getRemove();
+
+
}
diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/GroovyAnnotator.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/GroovyAnnotator.java
index fd9960457e28..8a211acfc8ee 100644
--- a/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/GroovyAnnotator.java
+++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/GroovyAnnotator.java
@@ -68,6 +68,7 @@ import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.*;
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.literals.GrLiteral;
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.path.GrMethodCallExpression;
import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.*;
+import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrAccessorMethod;
import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrMember;
import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrMethod;
import org.jetbrains.plugins.groovy.lang.psi.api.toplevel.imports.GrImportStatement;
@@ -1124,7 +1125,7 @@ public class GroovyAnnotator extends GroovyElementVisitor implements Annotator {
boolean isStatic = member.hasModifierProperty(GrModifier.STATIC);
Annotation annotation = holder.createInfoAnnotation(refExpr.getReferenceNameElement(), null);
- if (member instanceof PsiField ) {
+ if (member instanceof PsiField || member instanceof GrAccessorMethod) {
annotation.setTextAttributes(isStatic ? DefaultHighlighter.STATIC_FIELD : DefaultHighlighter.INSTANCE_FIELD);
return;
}