From 190ce57ab60df708710caa7997a3ef3de49d798e Mon Sep 17 00:00:00 2001 From: Ben Gruver Date: Tue, 30 Dec 2014 19:08:51 -0800 Subject: [PATCH] Add findNext and findPrevSiblingByClass to SmaliCompositeElement --- .../psi/impl/SmaliCompositeElement.java | 28 ++++++++++ .../java/org/jf/smalidea/util/PsiUtils.java | 52 ------------------- 2 files changed, 28 insertions(+), 52 deletions(-) delete mode 100644 smalidea/src/main/java/org/jf/smalidea/util/PsiUtils.java diff --git a/smalidea/src/main/java/org/jf/smalidea/psi/impl/SmaliCompositeElement.java b/smalidea/src/main/java/org/jf/smalidea/psi/impl/SmaliCompositeElement.java index 912b1d10..29bd2669 100644 --- a/smalidea/src/main/java/org/jf/smalidea/psi/impl/SmaliCompositeElement.java +++ b/smalidea/src/main/java/org/jf/smalidea/psi/impl/SmaliCompositeElement.java @@ -96,4 +96,32 @@ public abstract class SmaliCompositeElement extends CompositePsiElement { } return null; } + + @Nullable + @SuppressWarnings("unchecked") + public T findNextSiblingByClass(@NotNull Class cls) { + PsiElement prev = getNextSibling(); + while (true) { + if (prev == null) { + return null; + } else if (cls.isInstance(prev)) { + return (T)prev; + } + prev = prev.getNextSibling(); + } + } + + @Nullable + @SuppressWarnings("unchecked") + public T findPrevSiblingByClass(@NotNull Class cls) { + PsiElement prev = getPrevSibling(); + while (true) { + if (prev == null) { + return null; + } else if (cls.isInstance(prev)) { + return (T)prev; + } + prev = prev.getPrevSibling(); + } + } } diff --git a/smalidea/src/main/java/org/jf/smalidea/util/PsiUtils.java b/smalidea/src/main/java/org/jf/smalidea/util/PsiUtils.java deleted file mode 100644 index 08254bb1..00000000 --- a/smalidea/src/main/java/org/jf/smalidea/util/PsiUtils.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright 2014, Google Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following disclaimer - * in the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package org.jf.smalidea.util; - -import com.intellij.psi.PsiElement; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; - -public class PsiUtils { - @Nullable - public static T findPrevSiblingByClass(@Nonnull PsiElement element, @Nonnull Class cls) { - PsiElement prev = element.getPrevSibling(); - while (true) { - if (prev == null) { - return null; - } else if (cls.isInstance(prev)) { - return (T)prev; - } - prev = prev.getPrevSibling(); - } - } -}