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
This commit is contained in:
Vladimir Krivosheev
2013-06-24 12:27:20 +02:00
parent 4ac79a3b64
commit 755b16d891
4 changed files with 22 additions and 11 deletions
@@ -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);
}
};
}
@@ -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);
}