diff options
Diffstat (limited to 'plugins/coverage-common/src/com/intellij/coverage/view/CoverageViewTreeStructure.java')
-rw-r--r-- | plugins/coverage-common/src/com/intellij/coverage/view/CoverageViewTreeStructure.java | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/plugins/coverage-common/src/com/intellij/coverage/view/CoverageViewTreeStructure.java b/plugins/coverage-common/src/com/intellij/coverage/view/CoverageViewTreeStructure.java new file mode 100644 index 000000000000..a1c8423f586f --- /dev/null +++ b/plugins/coverage-common/src/com/intellij/coverage/view/CoverageViewTreeStructure.java @@ -0,0 +1,80 @@ +package com.intellij.coverage.view; + +import com.intellij.coverage.CoverageSuitesBundle; +import com.intellij.ide.util.treeView.AbstractTreeNode; +import com.intellij.ide.util.treeView.AbstractTreeStructure; +import com.intellij.ide.util.treeView.NodeDescriptor; +import com.intellij.openapi.project.Project; +import com.intellij.psi.PsiElement; +import org.jetbrains.annotations.NotNull; + +import java.util.Collection; +import java.util.List; + +/** + * User: anna + * Date: 1/2/12 + */ +public class CoverageViewTreeStructure extends AbstractTreeStructure { + private final Project myProject; + final CoverageSuitesBundle myData; + final CoverageViewManager.StateBean myStateBean; + private final CoverageListRootNode myRootNode; + private final CoverageViewExtension myCoverageViewExtension; + + public CoverageViewTreeStructure(Project project, CoverageSuitesBundle bundle, CoverageViewManager.StateBean stateBean) { + myProject = project; + myData = bundle; + myStateBean = stateBean; + myCoverageViewExtension = myData.getCoverageEngine().createCoverageViewExtension(project, bundle, stateBean); + myRootNode = (CoverageListRootNode)myCoverageViewExtension.createRootNode(); + } + + + public Object getRootElement() { + return myRootNode; + } + + public Object[] getChildElements(final Object element) { + return getChildren(element, myData, myStateBean); + } + + static Object[] getChildren(Object element, + final CoverageSuitesBundle bundle, + CoverageViewManager.StateBean stateBean) { + if (element instanceof CoverageListRootNode && stateBean.myFlattenPackages) { + final Collection<? extends AbstractTreeNode> children = ((CoverageListRootNode)element).getChildren(); + return children.toArray(new Object[children.size()]); + } + if (element instanceof CoverageListNode) { + List<AbstractTreeNode> children = bundle.getCoverageEngine().createCoverageViewExtension(((CoverageListNode)element).getProject(), + bundle, stateBean) + .getChildrenNodes((CoverageListNode)element); + return children.toArray(new CoverageListNode[children.size()]); + } + return null; + } + + + public Object getParentElement(final Object element) { + final PsiElement psiElement = (PsiElement)element; + return myCoverageViewExtension.getParentElement(psiElement); + } + + @NotNull + public CoverageViewDescriptor createDescriptor(final Object element, final NodeDescriptor parentDescriptor) { + return new CoverageViewDescriptor(myProject, parentDescriptor, element); + } + + public void commit() { + } + + public boolean hasSomethingToCommit() { + return false; + } + + public boolean supportFlattenPackages() { + return myCoverageViewExtension.supportFlattenPackages(); + } +} + |