IDEA-140560 In Debug Variables & Watches views, indicate whether a variable is final
authorEgor.Ushakov <egor.ushakov@jetbrains.com>
Thu, 21 May 2015 17:31:52 +0000 (20:31 +0300)
committerEgor.Ushakov <egor.ushakov@jetbrains.com>
Thu, 21 May 2015 17:34:17 +0000 (20:34 +0300)
java/debugger/impl/src/com/intellij/debugger/ui/impl/DebuggerTreeRenderer.java
java/debugger/impl/src/com/intellij/debugger/ui/impl/watch/ValueDescriptorImpl.java

index d72c967f67be792e1363d362be0cbabe86e87652..5ec8f8b57192e1a81d7c4e6518e0765f353eaeed 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2013 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
@@ -91,8 +91,18 @@ public class DebuggerTreeRenderer extends ColoredTreeCellRenderer {
 
   public static Icon getValueIcon(ValueDescriptorImpl valueDescriptor) {
     Icon nodeIcon;
-    if (valueDescriptor instanceof FieldDescriptorImpl && ((FieldDescriptorImpl)valueDescriptor).isStatic()) {
+    if (valueDescriptor instanceof FieldDescriptorImpl) {
+      FieldDescriptorImpl fieldDescriptor = (FieldDescriptorImpl)valueDescriptor;
       nodeIcon = PlatformIcons.FIELD_ICON;
+      if (fieldDescriptor.getField().isFinal()) {
+        nodeIcon = new LayeredIcon(nodeIcon, AllIcons.Nodes.FinalMark);
+      }
+      if (fieldDescriptor.isStatic()) {
+        nodeIcon = new LayeredIcon(nodeIcon, AllIcons.Nodes.StaticMark);
+      }
+    }
+    else if (valueDescriptor.isEnumConstant()) {
+      nodeIcon = PlatformIcons.ENUM_ICON;
     }
     else if (valueDescriptor.isArray()) {
       nodeIcon = AllIcons.Debugger.Db_array;
index 69cba9845312caa3fed3d07f80eec1e7b212ad72..651ed9859b7711dd9a3dfcc0a038b94664084552 100644 (file)
@@ -94,6 +94,8 @@ public abstract class ValueDescriptorImpl extends NodeDescriptorImpl implements
     assertValueReady();
     return myValue instanceof ArrayReference; 
   }
+
+
   
   public boolean isDirty() {
     assertValueReady();
@@ -123,6 +125,11 @@ public abstract class ValueDescriptorImpl extends NodeDescriptorImpl implements
     assertValueReady();
     return myValue instanceof PrimitiveValue; 
   }
+
+  public boolean isEnumConstant() {
+    assertValueReady();
+    return myValue instanceof ObjectReference && isEnumConstant(((ObjectReference)myValue));
+  }
   
   public boolean isValueValid() {
     return myValueException == null;