From 08e4caf1175250f52de49e668ffdd57ce303f4c7 Mon Sep 17 00:00:00 2001 From: Sergey Vasiliev Date: Mon, 16 Apr 2007 15:07:04 +0400 Subject: [PATCH] spring structure view changed --- .../impl/xml/XmlStructureViewElementProvider.java | 16 +++++++++--- .../impl/xml/XmlStructureViewTreeModel.java | 29 +++++++++++++++++++--- 2 files changed, 38 insertions(+), 7 deletions(-) diff --git a/source/com/intellij/ide/structureView/impl/xml/XmlStructureViewElementProvider.java b/source/com/intellij/ide/structureView/impl/xml/XmlStructureViewElementProvider.java index ec713d4793..1b96300b3a 100644 --- a/source/com/intellij/ide/structureView/impl/xml/XmlStructureViewElementProvider.java +++ b/source/com/intellij/ide/structureView/impl/xml/XmlStructureViewElementProvider.java @@ -3,11 +3,15 @@ */ package com.intellij.ide.structureView.impl.xml; -import org.jetbrains.annotations.Nullable; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.NonNls; import com.intellij.ide.structureView.StructureViewTreeElement; +import com.intellij.ide.util.treeView.smartTree.Filter; +import com.intellij.ide.util.treeView.smartTree.Grouper; +import com.intellij.ide.util.treeView.smartTree.Sorter; +import com.intellij.psi.xml.XmlFile; import com.intellij.psi.xml.XmlTag; +import org.jetbrains.annotations.NonNls; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; /** * @author peter @@ -17,4 +21,10 @@ public interface XmlStructureViewElementProvider { @Nullable StructureViewTreeElement createCustomXmlTagTreeElement(@NotNull XmlTag tag); + + Sorter[] getSorters(@NotNull final XmlFile file); + + Grouper[] getGroupers(@NotNull final XmlFile file); + + Filter[] getFilters(@NotNull final XmlFile file); } diff --git a/source/com/intellij/ide/structureView/impl/xml/XmlStructureViewTreeModel.java b/source/com/intellij/ide/structureView/impl/xml/XmlStructureViewTreeModel.java index d205024d81..e7f16210c6 100644 --- a/source/com/intellij/ide/structureView/impl/xml/XmlStructureViewTreeModel.java +++ b/source/com/intellij/ide/structureView/impl/xml/XmlStructureViewTreeModel.java @@ -36,11 +36,16 @@ import com.intellij.ide.structureView.TextEditorBasedStructureViewModel; import com.intellij.ide.util.treeView.smartTree.Filter; import com.intellij.ide.util.treeView.smartTree.Grouper; import com.intellij.ide.util.treeView.smartTree.Sorter; +import com.intellij.lang.StdLanguages; +import com.intellij.openapi.extensions.Extensions; import com.intellij.psi.PsiFile; import com.intellij.psi.xml.*; -import com.intellij.lang.StdLanguages; import org.jetbrains.annotations.NotNull; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + public class XmlStructureViewTreeModel extends TextEditorBasedStructureViewModel{ private final XmlFile myFile; private static final Class[] myClasses = new Class[]{XmlTag.class, XmlFile.class, XmlEntityDecl.class, XmlElementDecl.class, XmlAttlistDecl.class, XmlConditionalSection.class}; @@ -58,17 +63,33 @@ public class XmlStructureViewTreeModel extends TextEditorBasedStructureViewModel @NotNull public Grouper[] getGroupers() { - return Grouper.EMPTY_ARRAY; + List groupers = new ArrayList(); + for (XmlStructureViewElementProvider provider : getProviders()) { + groupers.addAll(Arrays.asList(provider.getGroupers(myFile))); + } + return groupers.toArray(new Grouper[groupers.size()]); + } + + private static XmlStructureViewElementProvider[] getProviders() { + return (XmlStructureViewElementProvider[])Extensions.getExtensions(XmlStructureViewElementProvider.EXTENSION_POINT_NAME); } @NotNull public Sorter[] getSorters() { - return Sorter.EMPTY_ARRAY; + List sorters = new ArrayList(); + for (XmlStructureViewElementProvider provider : getProviders()) { + sorters.addAll(Arrays.asList(provider.getSorters(myFile))); + } + return sorters.toArray(new Sorter[sorters.size()]); } @NotNull public Filter[] getFilters() { - return Filter.EMPTY_ARRAY; + List filters = new ArrayList(); + for (XmlStructureViewElementProvider provider : getProviders()) { + filters.addAll(Arrays.asList(provider.getFilters(myFile))); + } + return filters.toArray(new Filter[filters.size()]); } protected PsiFile getPsiFile() { -- 2.11.4.GIT