From 755b16d8914af28e9ff0403822c72c64814259c4 Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Mon, 24 Jun 2013 12:26:41 +0200 Subject: [PATCH] ability to provide custom structure view wrapper (editor action "Select in -> File Structure") structure view model must use Editor from passed FileEditor, but not current focused Editor if document virtual file is not in local file system --- .../rest/structureView/RestStructureViewFactory.java | 8 ++++++-- .../rest/structureView/RestStructureViewModel.java | 6 ++++-- .../python/structureView/PyStructureViewFactory.java | 9 ++++++--- .../python/structureView/PyStructureViewModel.java | 10 ++++++---- 4 files changed, 22 insertions(+), 11 deletions(-) diff --git a/python/rest/src/com/jetbrains/rest/structureView/RestStructureViewFactory.java b/python/rest/src/com/jetbrains/rest/structureView/RestStructureViewFactory.java index 3052ad231aed..f25019689a3e 100644 --- a/python/rest/src/com/jetbrains/rest/structureView/RestStructureViewFactory.java +++ b/python/rest/src/com/jetbrains/rest/structureView/RestStructureViewFactory.java @@ -4,19 +4,23 @@ import com.intellij.ide.structureView.StructureViewBuilder; import com.intellij.ide.structureView.StructureViewModel; import com.intellij.ide.structureView.TreeBasedStructureViewBuilder; import com.intellij.lang.PsiStructureViewFactory; +import com.intellij.openapi.editor.Editor; import com.intellij.psi.PsiFile; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; /** * User : catherine */ public class RestStructureViewFactory implements PsiStructureViewFactory { + @Override public StructureViewBuilder getStructureViewBuilder(final PsiFile psiFile) { return new TreeBasedStructureViewBuilder() { + @Override @NotNull - public StructureViewModel createStructureViewModel() { - return new RestStructureViewModel(psiFile); + public StructureViewModel createStructureViewModel(@Nullable Editor editor) { + return new RestStructureViewModel(psiFile, editor); } }; } diff --git a/python/rest/src/com/jetbrains/rest/structureView/RestStructureViewModel.java b/python/rest/src/com/jetbrains/rest/structureView/RestStructureViewModel.java index 70f3588a648c..1d102acc5132 100644 --- a/python/rest/src/com/jetbrains/rest/structureView/RestStructureViewModel.java +++ b/python/rest/src/com/jetbrains/rest/structureView/RestStructureViewModel.java @@ -4,17 +4,19 @@ import com.intellij.ide.structureView.StructureViewModel; import com.intellij.ide.structureView.StructureViewModelBase; import com.intellij.ide.structureView.StructureViewTreeElement; import com.intellij.ide.util.treeView.smartTree.Sorter; +import com.intellij.openapi.editor.Editor; import com.intellij.psi.PsiFile; import com.jetbrains.rest.RestFile; import com.jetbrains.rest.psi.RestTitle; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; /** * User : catherine */ public class RestStructureViewModel extends StructureViewModelBase implements StructureViewModel.ElementInfoProvider, StructureViewModel.ExpandInfoProvider { - public RestStructureViewModel(@NotNull PsiFile psiFile) { - super(psiFile, new RestStructureViewElement(psiFile)); + public RestStructureViewModel(@NotNull PsiFile psiFile, @Nullable Editor editor) { + super(psiFile, editor, new RestStructureViewElement(psiFile)); withSorters(Sorter.ALPHA_SORTER); withSuitableClasses(RestTitle.class); } diff --git a/python/src/com/jetbrains/python/structureView/PyStructureViewFactory.java b/python/src/com/jetbrains/python/structureView/PyStructureViewFactory.java index b4cc8ab0cf2e..93517dba8b18 100644 --- a/python/src/com/jetbrains/python/structureView/PyStructureViewFactory.java +++ b/python/src/com/jetbrains/python/structureView/PyStructureViewFactory.java @@ -4,20 +4,23 @@ import com.intellij.ide.structureView.StructureViewBuilder; import com.intellij.ide.structureView.StructureViewModel; import com.intellij.ide.structureView.TreeBasedStructureViewBuilder; import com.intellij.lang.PsiStructureViewFactory; +import com.intellij.openapi.editor.Editor; import com.intellij.psi.PsiFile; -import com.jetbrains.python.psi.PyElement; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; /** * @author yole */ public class PyStructureViewFactory implements PsiStructureViewFactory { + @Override public StructureViewBuilder getStructureViewBuilder(final PsiFile psiFile) { return new TreeBasedStructureViewBuilder() { + @Override @NotNull - public StructureViewModel createStructureViewModel() { - return new PyStructureViewModel(psiFile); + public StructureViewModel createStructureViewModel(@Nullable Editor editor) { + return new PyStructureViewModel(psiFile, editor); } }; } diff --git a/python/src/com/jetbrains/python/structureView/PyStructureViewModel.java b/python/src/com/jetbrains/python/structureView/PyStructureViewModel.java index 8b405cb8c14f..b4a58261fb1b 100644 --- a/python/src/com/jetbrains/python/structureView/PyStructureViewModel.java +++ b/python/src/com/jetbrains/python/structureView/PyStructureViewModel.java @@ -5,22 +5,24 @@ import com.intellij.ide.structureView.StructureViewModelBase; import com.intellij.ide.structureView.StructureViewTreeElement; import com.intellij.ide.util.treeView.smartTree.Filter; import com.intellij.ide.util.treeView.smartTree.Sorter; +import com.intellij.openapi.editor.Editor; import com.intellij.psi.PsiFile; import com.jetbrains.python.psi.*; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; /** * @author yole */ public class PyStructureViewModel extends StructureViewModelBase implements StructureViewModel.ElementInfoProvider, StructureViewModel.ExpandInfoProvider { - public PyStructureViewModel(@NotNull PsiFile psiFile) { - this(psiFile, new PyStructureViewElement((PyElement) psiFile)); + public PyStructureViewModel(@NotNull PsiFile psiFile, @Nullable Editor editor) { + this(psiFile, editor, new PyStructureViewElement((PyElement) psiFile)); withSorters(Sorter.ALPHA_SORTER); withSuitableClasses(PyFunction.class, PyClass.class); } - public PyStructureViewModel(@NotNull PsiFile file, @NotNull StructureViewTreeElement element) { - super(file, element); + public PyStructureViewModel(@NotNull PsiFile file, @Nullable Editor editor, @NotNull StructureViewTreeElement element) { + super(file, editor, element); } @Override