intellij-sdk-code-samples/topics/tutorials/tree_structure_view.md
Jakub Chrzanowski 4e802980f2
Webhelp migration (#347)
* [webhelp] Fixes for TXP00152, TXP00002, test build 27 Jul 22:26

* [webhelp] Fixes for Part #4 TXP00010, EXCEPT decimal numbers in section titles

* [webhelp] Fixes for Part #5 TXP00017

* [webhelp] Fixes for Part #4 TXP00010 - removed numbers from page section titles in "Custom Language Support Tutorial" and "Testing a Custom Language Plugin".

* [webhelp] Removed numbers from page section titles in rest of project *.md files.

* [new webhelp] Build #44 changes

* [new webhelp] Maintenance merge from master

* [new webhelp] Add placeholder file for webhelp import.

* [webhelp] Correct redirects for file name changes

* [webhelp] TOC not needed in webhelp

* [format] {:toc} not needed for webhelp

* add {:disable-links} to ensure demo links are not interpreted as real links.

* Put all badges on the same line to simplify composition.

* formatter.md: fix upsource link

* fix some links

* api_changes_list.md: remove note

* migrate to webhelp - initial

* fix GH edit URL

* remove sdkdocs-template setup in VCS config

* remove recently_updated.md

* restore COC/CONTRIBUTING.md

* api_changes_list.md: remove note

* useful_links.md: IPE

Co-authored-by: JohnHake <john.hake@jetbrains.com>
Co-authored-by: Yann Cébron <yann.cebron@jetbrains.com>
2021-01-14 16:07:39 +01:00

2.7 KiB

This tutorial is meant to illustrate how the project tree structure view appearance can be modified programmatically. If you need to know more about basic concepts of a project view in IntelliJ-based IDEs, please refer to Exploring The Project Structure of IntelliJ IDEA Web Help.

Series of step below show how to filter out and keep visible only text files and directories in the Project View Panel.

Pre-Requirements

Create an empty plugin project. See Creating a Plugin Project.

Register Custom TreeStructure Provider

Add new treeStructureProvider extension to the plugin.xml

<extensions defaultExtensionNs="com.intellij">
  <treeStructureProvider implementation="org.intellij.sdk.treeStructureProvider.TextOnlyTreeStructureProvider"/>
</extensions>

Implement Custom TreeStructureProvider

To provide custom Structure View behaviour you need to implement TreeStructureProvider interface.

public class TextOnlyTreeStructureProvider implements TreeStructureProvider {
    @NotNull
    @Override
    public Collection<AbstractTreeNode> modify(@NotNull AbstractTreeNode parent, @NotNull Collection<AbstractTreeNode> children, ViewSettings settings) {
        return null;
    }

    @Nullable
    @Override
    public Object getData(Collection<AbstractTreeNode> collection, String s) {
        return null;
    }
}

Override modify() Method

To implement Tree Structure nodes filtering logic, override modify() method. The example below shows how to filter out all the Project View nodes except those which correspond to text files and directories.

{src="tree_structure_provider/src/main/java/org/intellij/sdk/treeStructureProvider/TextOnlyTreeStructureProvider.java"}

Compile and Run the Plugin

Compile and run the code sample from this tutorial. Refer to Running and Debugging a Plugin.

After going through the steps described above you can see only text files and directories belonging to a project in the Project View.

Text Files

Check out plugin source code and build the project to see how TreeStructureView provider works in practice.