package org.jetbrains.tutorials.tree.structure;

import com.intellij.ide.projectView.*;
import com.intellij.ide.projectView.impl.nodes.PsiFileNode;
import com.intellij.ide.util.treeView.AbstractTreeNode;
import com.intellij.openapi.fileTypes.PlainTextFileType;
import com.intellij.openapi.vfs.VirtualFile;
import org.jetbrains.annotations.*;

import java.util.*;

/**
 * @author Anna Bulenkova
 */
public class TextOnlyTreeStructureProvider implements TreeStructureProvider {
  @NotNull
  @Override
  public Collection<AbstractTreeNode> modify(@NotNull AbstractTreeNode parent,
                                             @NotNull Collection<AbstractTreeNode> children,
                                             ViewSettings settings) {
    ArrayList<AbstractTreeNode> nodes = new ArrayList<AbstractTreeNode>();
    for (AbstractTreeNode child : children) {
      if (child instanceof PsiFileNode) {
        VirtualFile file = ((PsiFileNode) child).getVirtualFile();
        if (file != null && !file.isDirectory() && !(file.getFileType() instanceof PlainTextFileType)) {
          continue;
        }
      }
      nodes.add(child);
    }
    return nodes;
  }

  @Nullable
  @Override
  public Object getData(Collection<AbstractTreeNode> collection, String s) {
    return null;
  }
}
@@ -1208,16 +1208,25 @@
 getData(
+@NotNull 
 Collecti
@@ -1250,27 +1250,34 @@
 de%3E 
-col
+se
 lect
-ion,
+ed, @NotNull
  String 
 s) %7B
@@ -1272,17 +1272,22 @@
  String 
-s
+dataId
 ) %7B%0A    

Fix parameter names and annotations in tree structure provider sample