From 7fdfa60628ca512113d56a69d6738dcb3fdef883 Mon Sep 17 00:00:00 2001 From: Sergey Malenkov Date: Wed, 10 Oct 2018 17:59:42 +0300 Subject: [PATCH] generify StructureTreeModel --- .../intellij/ui/tree/StructureTreeModel.java | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/ui/tree/StructureTreeModel.java b/platform/platform-impl/src/com/intellij/ui/tree/StructureTreeModel.java index aab227555f3c..0e82f5bbb518 100644 --- a/platform/platform-impl/src/com/intellij/ui/tree/StructureTreeModel.java +++ b/platform/platform-impl/src/com/intellij/ui/tree/StructureTreeModel.java @@ -33,13 +33,15 @@ import static org.jetbrains.concurrency.Promises.rejectedPromise; /** * @author Sergey.Malenkov */ -public class StructureTreeModel extends AbstractTreeModel implements Disposable, InvokerSupplier, ChildrenProvider { +public class StructureTreeModel + extends AbstractTreeModel implements Disposable, InvokerSupplier, ChildrenProvider { + private static final TreePath ROOT_INVALIDATED = new TreePath(new DefaultMutableTreeNode()); private static final Logger LOG = Logger.getInstance(StructureTreeModel.class); private final Reference root = new Reference<>(); private final String description; private final Invoker invoker; - private volatile AbstractTreeStructure structure; + private volatile Structure structure; private volatile Comparator comparator; private StructureTreeModel(@NotNull String prefix, boolean background) { @@ -49,12 +51,12 @@ public class StructureTreeModel extends AbstractTreeModel implements Disposable, : new Invoker.EDT(this); } - public StructureTreeModel(@NotNull AbstractTreeStructure structure) { + public StructureTreeModel(@NotNull Structure structure) { this(structure.toString(), true); this.structure = structure; } - public StructureTreeModel(@NotNull AbstractTreeStructure structure, @NotNull Comparator comparator) { + public StructureTreeModel(@NotNull Structure structure, @NotNull Comparator comparator) { this(structure); this.comparator = wrapToNodeComparator(comparator); } @@ -107,10 +109,10 @@ public class StructureTreeModel extends AbstractTreeModel implements Disposable, * @return a promise that will be succeed if the specified function returns non-null value */ @NotNull - private Promise onValidThread(@NotNull Function function) { + private Promise onValidThread(@NotNull Function function) { AsyncPromise promise = new AsyncPromise<>(); invoker.runOrInvokeLater(() -> { - AbstractTreeStructure structure = this.structure; + Structure structure = this.structure; if (!disposed && structure != null) { Result result = function.apply(structure); if (result != null) promise.setResult(result); @@ -343,7 +345,7 @@ public class StructureTreeModel extends AbstractTreeModel implements Disposable, } private boolean isValid(@NotNull Node node) { - AbstractTreeStructure structure = this.structure; + Structure structure = this.structure; return structure != null && isValid(structure, node.getElement()); } @@ -362,7 +364,7 @@ public class StructureTreeModel extends AbstractTreeModel implements Disposable, @Nullable private Node getValidRoot() { - AbstractTreeStructure structure = this.structure; + Structure structure = this.structure; if (structure == null) return null; Object element = structure.getRootElement(); @@ -378,7 +380,7 @@ public class StructureTreeModel extends AbstractTreeModel implements Disposable, @Nullable private List getValidChildren(@NotNull Node node) { - AbstractTreeStructure structure = this.structure; + Structure structure = this.structure; if (structure == null) return null; NodeDescriptor descriptor = node.getDescriptor();