diff --git a/idea/src/org/jetbrains/kotlin/idea/projectView/KotlinProjectViewUtil.kt b/idea/src/org/jetbrains/kotlin/idea/projectView/KotlinProjectViewUtil.kt index 8a870295b7a..9e08b977baf 100644 --- a/idea/src/org/jetbrains/kotlin/idea/projectView/KotlinProjectViewUtil.kt +++ b/idea/src/org/jetbrains/kotlin/idea/projectView/KotlinProjectViewUtil.kt @@ -14,71 +14,59 @@ * limitations under the License. */ -package org.jetbrains.kotlin.idea.projectView; +package org.jetbrains.kotlin.idea.projectView -import com.intellij.ide.projectView.ViewSettings; -import com.intellij.ide.util.treeView.AbstractTreeNode; -import com.intellij.openapi.project.Project; -import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiFile; -import org.jetbrains.kotlin.psi.KtClassOrObject; -import org.jetbrains.kotlin.psi.KtDeclaration; +import com.intellij.ide.projectView.ViewSettings +import com.intellij.ide.util.treeView.AbstractTreeNode +import com.intellij.openapi.project.Project +import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.psi.KtClassOrObject +import java.util.* -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.List; - -public final class KotlinProjectViewUtil { - - private KotlinProjectViewUtil() { - } - - public static Collection getClassOrObjectChildren( - KtClassOrObject classOrObject, Project project, - ViewSettings settings) { - if (classOrObject != null && settings.isShowMembers()) { - Collection result = new ArrayList(); - List declarations = classOrObject.getDeclarations(); - for (KtDeclaration declaration : declarations) { - if (declaration instanceof KtClassOrObject) { - result.add(new KtClassOrObjectTreeNode(project, (KtClassOrObject) declaration, settings)); - } - else { - result.add(new KtDeclarationTreeNode(project, declaration, settings)); - } +fun getClassOrObjectChildren( + classOrObject: KtClassOrObject?, project: Project?, + settings: ViewSettings): Collection> { + if (classOrObject != null && settings.isShowMembers) { + val result = ArrayList>() + val declarations = classOrObject.declarations + for (declaration in declarations) { + if (declaration is KtClassOrObject) { + result.add(KtClassOrObjectTreeNode(project, declaration, settings)) } - - return result; - } - else { - return Collections.emptyList(); - } - } - - public static boolean canRepresentPsiElement(PsiElement value, Object element, ViewSettings settings) { - if (value == null || !value.isValid()) { - return false; - } - - PsiFile file = value.getContainingFile(); - if (file != null && (file == element || file.getVirtualFile() == element)) { - return true; - } - - if (value == element) { - return true; - } - - if (!settings.isShowMembers()) { - if (element instanceof PsiElement && ((PsiElement) element).getContainingFile() != null) { - PsiFile elementFile = ((PsiElement) element).getContainingFile(); - if (elementFile != null && file != null) { - return elementFile.equals(file); - } + else { + result.add(KtDeclarationTreeNode(project, declaration, settings)) } } - return false; + return result + } + else { + return emptyList() } } + +fun canRepresentPsiElement(value: PsiElement?, element: Any?, settings: ViewSettings): Boolean { + if (value == null || !value.isValid) { + return false + } + + val file = value.containingFile + if (file != null && (file === element || file.virtualFile === element)) { + return true + } + + if (value === element) { + return true + } + + if (!settings.isShowMembers) { + if (element is PsiElement && element.containingFile != null) { + val elementFile = element.containingFile + if (elementFile != null && file != null) { + return elementFile == file + } + } + } + + return false +} diff --git a/idea/src/org/jetbrains/kotlin/idea/projectView/KtClassOrObjectTreeNode.kt b/idea/src/org/jetbrains/kotlin/idea/projectView/KtClassOrObjectTreeNode.kt index 48e2f92121a..3f2bbe1587e 100644 --- a/idea/src/org/jetbrains/kotlin/idea/projectView/KtClassOrObjectTreeNode.kt +++ b/idea/src/org/jetbrains/kotlin/idea/projectView/KtClassOrObjectTreeNode.kt @@ -14,82 +14,69 @@ * limitations under the License. */ -package org.jetbrains.kotlin.idea.projectView; +package org.jetbrains.kotlin.idea.projectView -import com.intellij.ide.projectView.PresentationData; -import com.intellij.ide.projectView.ProjectView; -import com.intellij.ide.projectView.ViewSettings; -import com.intellij.ide.projectView.impl.nodes.AbstractPsiBasedNode; -import com.intellij.ide.util.treeView.AbstractTreeNode; -import com.intellij.openapi.project.Project; -import com.intellij.psi.PsiElement; -import org.jetbrains.kotlin.idea.KotlinIconProvider; -import org.jetbrains.kotlin.psi.KtClassOrObject; -import org.jetbrains.kotlin.psi.KtPsiUtil; +import com.intellij.ide.projectView.PresentationData +import com.intellij.ide.projectView.ProjectView +import com.intellij.ide.projectView.ViewSettings +import com.intellij.ide.projectView.impl.nodes.AbstractPsiBasedNode +import com.intellij.ide.util.treeView.AbstractTreeNode +import com.intellij.openapi.project.Project +import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.idea.KotlinIconProvider +import org.jetbrains.kotlin.psi.KtClassOrObject +import org.jetbrains.kotlin.psi.KtPsiUtil -import java.util.Collection; +class KtClassOrObjectTreeNode(project: Project?, ktClassOrObject: KtClassOrObject, viewSettings: ViewSettings) + : AbstractPsiBasedNode(project, ktClassOrObject, viewSettings) { -import static org.jetbrains.kotlin.idea.projectView.KotlinProjectViewUtil.canRepresentPsiElement; -import static org.jetbrains.kotlin.idea.projectView.KotlinProjectViewUtil.getClassOrObjectChildren; - -public class KtClassOrObjectTreeNode extends AbstractPsiBasedNode { - protected KtClassOrObjectTreeNode(Project project, KtClassOrObject ktClassOrObject, ViewSettings viewSettings) { - super(project, ktClassOrObject, viewSettings); + override fun extractPsiFromValue(): PsiElement? { + return value } - @Override - protected PsiElement extractPsiFromValue() { - return getValue(); + override fun getChildrenImpl(): Collection>? { + return getClassOrObjectChildren(value, project, settings) } - @Override - protected Collection getChildrenImpl() { - return getClassOrObjectChildren(getValue(), getProject(), getSettings()); - } - - private void update(AbstractTreeNode node) { - Project project = getProject(); + private fun update(node: AbstractTreeNode<*>) { + val project = project if (project != null) { - ProjectView.getInstance(project).getCurrentProjectViewPane().getTreeBuilder().addSubtreeToUpdateByElement(node); + ProjectView.getInstance(project).currentProjectViewPane.treeBuilder.addSubtreeToUpdateByElement(node) } } - @Override - protected void updateImpl(PresentationData data) { - KtClassOrObject classOrObject = getValue(); + override fun updateImpl(data: PresentationData) { + val classOrObject = value if (classOrObject != null) { - data.setPresentableText(classOrObject.getName()); + data.setPresentableText(classOrObject.name) - AbstractTreeNode parent = getParent(); - if (KotlinIconProvider.Companion.getMainClass(classOrObject.getContainingKtFile()) != null) { - if (parent instanceof KtFileTreeNode) { - update(parent.getParent()); + val parent = parent + if (KotlinIconProvider.getMainClass(classOrObject.getContainingKtFile()) != null) { + if (parent is KtFileTreeNode) { + update(parent.getParent()) } } else { - if (!(parent instanceof KtClassOrObjectTreeNode) && !(parent instanceof KtFileTreeNode)) { - update(parent); + if (parent !is KtClassOrObjectTreeNode && parent !is KtFileTreeNode) { + update(parent) } } } } - @Override - protected boolean isDeprecated() { - return KtPsiUtil.isDeprecated(getValue()); + override fun isDeprecated(): Boolean { + return KtPsiUtil.isDeprecated(value) } - @Override - public boolean canRepresent(Object element) { - if (!isValid()) { - return false; + override fun canRepresent(element: Any?): Boolean { + if (!isValid) { + return false } - return super.canRepresent(element) || canRepresentPsiElement(getValue(), element, getSettings()); + return super.canRepresent(element) || canRepresentPsiElement(value, element, settings) } - @Override - public int getWeight() { - return 20; + override fun getWeight(): Int { + return 20 } }