From d086363559596331ac96f5ed76eecad4302b9456 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Mon, 19 Mar 2018 12:18:43 +0100 Subject: [PATCH] Fix nullability issues in SimpleStructureViewElement (IJSDK-333) --- .../SimpleStructureViewElement.java | 41 +++++++++++-------- 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/simple_language_plugin/src/com/simpleplugin/SimpleStructureViewElement.java b/simple_language_plugin/src/com/simpleplugin/SimpleStructureViewElement.java index a014b24a1..7cd36b05f 100644 --- a/simple_language_plugin/src/com/simpleplugin/SimpleStructureViewElement.java +++ b/simple_language_plugin/src/com/simpleplugin/SimpleStructureViewElement.java @@ -1,18 +1,24 @@ package com.simpleplugin; +import com.intellij.ide.projectView.PresentationData; import com.intellij.ide.structureView.StructureViewTreeElement; -import com.intellij.ide.util.treeView.smartTree.*; -import com.intellij.navigation.*; -import com.intellij.psi.*; +import com.intellij.ide.util.treeView.smartTree.SortableTreeElement; +import com.intellij.ide.util.treeView.smartTree.TreeElement; +import com.intellij.navigation.ItemPresentation; +import com.intellij.psi.NavigatablePsiElement; import com.intellij.psi.util.PsiTreeUtil; -import com.simpleplugin.psi.*; +import com.simpleplugin.psi.SimpleFile; +import com.simpleplugin.psi.SimpleProperty; +import com.simpleplugin.psi.impl.SimplePropertyImpl; +import org.jetbrains.annotations.NotNull; -import java.util.*; +import java.util.ArrayList; +import java.util.List; public class SimpleStructureViewElement implements StructureViewTreeElement, SortableTreeElement { - private PsiElement element; + private NavigatablePsiElement element; - public SimpleStructureViewElement(PsiElement element) { + public SimpleStructureViewElement(NavigatablePsiElement element) { this.element = element; } @@ -23,32 +29,31 @@ public class SimpleStructureViewElement implements StructureViewTreeElement, Sor @Override public void navigate(boolean requestFocus) { - if (element instanceof NavigationItem) { - ((NavigationItem) element).navigate(requestFocus); - } + element.navigate(requestFocus); } @Override public boolean canNavigate() { - return element instanceof NavigationItem && - ((NavigationItem) element).canNavigate(); + return element.canNavigate(); } @Override public boolean canNavigateToSource() { - return element instanceof NavigationItem && - ((NavigationItem) element).canNavigateToSource(); + return element.canNavigateToSource(); } + @NotNull @Override public String getAlphaSortKey() { - return element instanceof PsiNamedElement ? ((PsiNamedElement) element).getName() : null; + String name = element.getName(); + return name != null ? name : ""; } + @NotNull @Override public ItemPresentation getPresentation() { - return element instanceof NavigationItem ? - ((NavigationItem) element).getPresentation() : null; + ItemPresentation presentation = element.getPresentation(); + return presentation != null ? presentation : new PresentationData(); } @Override @@ -57,7 +62,7 @@ public class SimpleStructureViewElement implements StructureViewTreeElement, Sor SimpleProperty[] properties = PsiTreeUtil.getChildrenOfType(element, SimpleProperty.class); List treeElements = new ArrayList(properties.length); for (SimpleProperty property : properties) { - treeElements.add(new SimpleStructureViewElement(property)); + treeElements.add(new SimpleStructureViewElement((SimplePropertyImpl) property)); } return treeElements.toArray(new TreeElement[treeElements.size()]); } else {