From fc585ef433df1f47b8410a999cddc1368631af0e Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Fri, 8 Apr 2016 10:41:35 +0200 Subject: [PATCH] add method to PsiTreeUtil --- .../moveLeftRight/JavaMoveLeftRightHandler.java | 9 ++------- .../src/com/intellij/psi/util/PsiTreeUtil.java | 17 ++++++++++++++++- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/editorActions/moveLeftRight/JavaMoveLeftRightHandler.java b/java/java-impl/src/com/intellij/codeInsight/editorActions/moveLeftRight/JavaMoveLeftRightHandler.java index 971dceda57a2..4c8f5f20cb4f 100644 --- a/java/java-impl/src/com/intellij/codeInsight/editorActions/moveLeftRight/JavaMoveLeftRightHandler.java +++ b/java/java-impl/src/com/intellij/codeInsight/editorActions/moveLeftRight/JavaMoveLeftRightHandler.java @@ -63,13 +63,8 @@ public class JavaMoveLeftRightHandler extends MoveElementLeftRightHandler { return ((PsiTypeParameterList)element).getTypeParameters(); } else if (element instanceof PsiModifierList) { - final List result = ContainerUtil.newSmartList(); - for (PsiElement child = element.getFirstChild(); child != null; child = child.getNextSibling()) { - if (child instanceof PsiKeyword || child instanceof PsiAnnotation) { - result.add(child); - } - } - return result.toArray(PsiElement.EMPTY_ARRAY); + final List elements = PsiTreeUtil.getChildrenOfAnyType(element, PsiKeyword.class, PsiAnnotation.class); + return elements.toArray(PsiElement.EMPTY_ARRAY); } return PsiElement.EMPTY_ARRAY; } diff --git a/platform/core-api/src/com/intellij/psi/util/PsiTreeUtil.java b/platform/core-api/src/com/intellij/psi/util/PsiTreeUtil.java index 5af86d7649f9..9a0da519b9a8 100644 --- a/platform/core-api/src/com/intellij/psi/util/PsiTreeUtil.java +++ b/platform/core-api/src/com/intellij/psi/util/PsiTreeUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2016 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. @@ -346,6 +346,21 @@ public class PsiTreeUtil { return result == null ? null : ArrayUtil.toObjectArray(result, aClass); } + @Nullable + public static List getChildrenOfAnyType(@Nullable PsiElement element, @NotNull Class... classes) { + if (element == null) return ContainerUtil.emptyList(); + + List result = null; + for (PsiElement child = element.getFirstChild(); child != null; child = child.getNextSibling()) { + if (instanceOf(child, classes)) { + if (result == null) result = ContainerUtil.newSmartList(); + //noinspection unchecked + result.add((T)child); + } + } + return result; + } + @NotNull public static List getChildrenOfTypeAsList(@Nullable PsiElement element, @NotNull Class aClass) { if (element == null) return Collections.emptyList();