mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
WI-19949 Parent class methods aren't shown after second Command-F12
This commit is contained in:
@@ -347,7 +347,10 @@ public class FileStructurePopup implements Disposable {
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
selectPsiElement(myInitialPsiElement);
|
||||
if (selectPsiElement(myInitialPsiElement) == null) {
|
||||
TreeUtil.ensureSelection(myAbstractTreeBuilder.getTree());
|
||||
myAbstractTreeBuilder.revalidateTree();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -432,7 +435,7 @@ public class FileStructurePopup implements Disposable {
|
||||
Set<PsiElement> parents = getAllParents(element);
|
||||
|
||||
FilteringTreeStructure.FilteringNode node = (FilteringTreeStructure.FilteringNode)myAbstractTreeBuilder.getRootElement();
|
||||
if (node != null && myStructureView instanceof StructureViewComposite) {
|
||||
if (element != null && node != null && myStructureView instanceof StructureViewComposite) {
|
||||
parents.remove(element.getContainingFile());
|
||||
final List<FilteringTreeStructure.FilteringNode> fileNodes = node.children();
|
||||
|
||||
@@ -445,11 +448,11 @@ public class FileStructurePopup implements Disposable {
|
||||
} else {
|
||||
final FilteringTreeStructure.FilteringNode found = findNode(parents, node);
|
||||
if (found == null) {
|
||||
TreeUtil.selectFirstNode(myTree);
|
||||
TreeUtil.ensureSelection(myTree);
|
||||
}
|
||||
return found;
|
||||
}
|
||||
TreeUtil.selectFirstNode(myTree);
|
||||
TreeUtil.ensureSelection(myTree);
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -15,23 +15,31 @@
|
||||
*/
|
||||
package com.intellij.ide.util;
|
||||
|
||||
import com.intellij.ide.structureView.StructureViewModel;
|
||||
import com.intellij.ide.structureView.StructureViewModelBase;
|
||||
import com.intellij.ide.structureView.StructureViewTreeElement;
|
||||
import com.intellij.ide.structureView.impl.StructureViewComposite;
|
||||
import com.intellij.ide.util.treeView.smartTree.Filter;
|
||||
import com.intellij.ide.util.treeView.smartTree.NodeProvider;
|
||||
import com.intellij.ide.util.treeView.smartTree.ProvidingTreeModel;
|
||||
import com.intellij.ide.util.treeView.smartTree.TreeElement;
|
||||
import com.intellij.navigation.ItemPresentation;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @author Konstantin Bulenkov
|
||||
*/
|
||||
public class StructureViewCompositeModel extends StructureViewModelBase {
|
||||
private final StructureViewComposite.StructureViewDescriptor[] myViews;
|
||||
|
||||
public StructureViewCompositeModel(PsiFile file, StructureViewComposite.StructureViewDescriptor[] views) {
|
||||
super(file, createRootNode(file, views));
|
||||
myViews = views;
|
||||
}
|
||||
|
||||
private static StructureViewTreeElement createRootNode(final PsiFile file, final StructureViewComposite.StructureViewDescriptor[] views) {
|
||||
@@ -72,6 +80,30 @@ public class StructureViewCompositeModel extends StructureViewModelBase {
|
||||
};
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Collection<NodeProvider> getNodeProviders() {
|
||||
final Set<NodeProvider> providers = new HashSet<NodeProvider>();
|
||||
for (StructureViewComposite.StructureViewDescriptor view : myViews) {
|
||||
final StructureViewModel model = view.structureView.getTreeModel();
|
||||
if (model instanceof ProvidingTreeModel) {
|
||||
providers.addAll(((ProvidingTreeModel)model).getNodeProviders());
|
||||
}
|
||||
}
|
||||
return providers;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Filter[] getFilters() {
|
||||
final HashSet<Filter> filters = new HashSet<Filter>();
|
||||
for (StructureViewComposite.StructureViewDescriptor view : myViews) {
|
||||
final StructureViewModel model = view.structureView.getTreeModel();
|
||||
filters.addAll(Arrays.asList(model.getFilters()));
|
||||
}
|
||||
return filters.toArray(new Filter[filters.size()]);
|
||||
}
|
||||
|
||||
private static TreeElement createTreeElementFromView(final PsiFile file, final StructureViewComposite.StructureViewDescriptor view) {
|
||||
return new StructureViewTreeElement() {
|
||||
@Override
|
||||
@@ -122,5 +154,7 @@ public class StructureViewCompositeModel extends StructureViewModelBase {
|
||||
return view.structureView.getTreeModel().getRoot().getChildren();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user