Simplify JSON breadcrumbs to take into account only property names
authorMikhail Golubev <mikhail.golubev@jetbrains.com>
Tue, 26 Aug 2014 12:26:21 +0000 (16:26 +0400)
committerMikhail Golubev <mikhail.golubev@jetbrains.com>
Tue, 26 Aug 2014 12:26:21 +0000 (16:26 +0400)
json/src/com/intellij/json/JsonUtil.java [new file with mode: 0644]
json/src/com/intellij/json/breadcrumbs/JsonBreadcrumbsProvider.java

diff --git a/json/src/com/intellij/json/JsonUtil.java b/json/src/com/intellij/json/JsonUtil.java
new file mode 100644 (file)
index 0000000..e0c93a0
--- /dev/null
@@ -0,0 +1,27 @@
+package com.intellij.json;
+
+import com.intellij.json.psi.JsonArray;
+import com.intellij.json.psi.JsonValue;
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+
+/**
+ * @author Mikhail Golubev
+ */
+@SuppressWarnings("UnusedDeclaration")
+public class JsonUtil {
+  private JsonUtil() {
+    // empty
+  }
+
+
+  /**
+   * Checks that PSI element represents item of JSON array.
+   *
+   * @param element PSI element to check
+   * @return whether this PSI element is array element
+   */
+  private static boolean isArrayElement(@NotNull PsiElement element) {
+    return element instanceof JsonValue && element.getParent() instanceof JsonArray;
+  }
+}
index 4f76b9a3bfba02d9de4331e7720815443aff7e43..2684bcbe1fb6ac97c5f7b6134ec5c4569be76339 100644 (file)
@@ -1,17 +1,13 @@
 package com.intellij.json.breadcrumbs;
 
 import com.intellij.json.JsonLanguage;
-import com.intellij.json.psi.JsonValue;
 import com.intellij.lang.Language;
 import com.intellij.psi.PsiElement;
 import com.intellij.xml.breadcrumbs.BreadcrumbsInfoProvider;
-import com.intellij.json.psi.JsonArray;
 import com.intellij.json.psi.JsonProperty;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
-import java.util.List;
-
 /**
  * @author Mikhail Golubev
  */
@@ -25,24 +21,24 @@ public class JsonBreadcrumbsProvider extends BreadcrumbsInfoProvider {
 
   @Override
   public boolean acceptElement(@NotNull PsiElement e) {
-    return isProperty(e) || isArrayElement(e);
+    return e instanceof JsonProperty;
   }
 
   @NotNull
   @Override
   public String getElementInfo(@NotNull PsiElement e) {
-    if (isProperty(e)) {
+    if (e instanceof JsonProperty) {
       return ((JsonProperty)e).getName();
     }
-    else if (isArrayElement(e)) {
-      List<JsonValue> elements = ((JsonArray)e.getParent()).getValueList();
-      for (int i = 0; i < elements.size(); i++) {
-        if (e == elements.get(i)) {
-          return String.valueOf(i);
-        }
-      }
-    }
-    throw new AssertionError("Breadcrumbs can be taken only for JsonProperty or JsonArray's element");
+    //else if (isArrayElement(e)) {
+    //  List<JsonValue> elements = ((JsonArray)e.getParent()).getValueList();
+    //  for (int i = 0; i < elements.size(); i++) {
+    //    if (e == elements.get(i)) {
+    //      return String.valueOf(i);
+    //    }
+    //  }
+    //}
+    throw new AssertionError("Breadcrumbs can be extracted only from JsonProperty elements");
   }
 
   @Nullable
@@ -50,12 +46,4 @@ public class JsonBreadcrumbsProvider extends BreadcrumbsInfoProvider {
   public String getElementTooltip(@NotNull PsiElement e) {
     return null;
   }
-
-  private static boolean isProperty(PsiElement element) {
-    return element instanceof JsonProperty;
-  }
-
-  private static boolean isArrayElement(PsiElement element) {
-    return element instanceof JsonValue && element.getParent() instanceof JsonArray;
-  }
 }