diff --git a/java/java-impl/src/com/intellij/ide/highlighter/JavaClsStructureViewBuilderProvider.java b/java/java-impl/src/com/intellij/ide/highlighter/JavaClsStructureViewBuilderProvider.java
index 3d4f103cce09..7361877b7e69 100644
--- a/java/java-impl/src/com/intellij/ide/highlighter/JavaClsStructureViewBuilderProvider.java
+++ b/java/java-impl/src/com/intellij/ide/highlighter/JavaClsStructureViewBuilderProvider.java
@@ -27,6 +27,7 @@ import com.intellij.ide.structureView.impl.java.JavaFileTreeModel;
import com.intellij.lang.Language;
import com.intellij.lang.LanguageStructureViewBuilder;
import com.intellij.lang.PsiStructureViewFactory;
+import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.extensions.Extensions;
import com.intellij.openapi.fileTypes.ContentBasedFileSubstitutor;
import com.intellij.openapi.fileTypes.FileType;
@@ -39,6 +40,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class JavaClsStructureViewBuilderProvider implements StructureViewBuilderProvider {
+ @Override
@Nullable
public StructureViewBuilder getStructureViewBuilder(@NotNull final FileType fileType, @NotNull final VirtualFile file, @NotNull final Project project) {
@@ -58,9 +60,10 @@ public class JavaClsStructureViewBuilderProvider implements StructureViewBuilder
final PsiJavaFile javaFile = (PsiJavaFile)psiFile;
if (javaFile == null) return null;
return new TreeBasedStructureViewBuilder() {
+ @Override
@NotNull
- public StructureViewModel createStructureViewModel() {
- return new JavaFileTreeModel(javaFile);
+ public StructureViewModel createStructureViewModel(@Nullable Editor editor) {
+ return new JavaFileTreeModel(javaFile, editor);
}
};
}
diff --git a/java/java-impl/src/com/intellij/ide/structureView/impl/java/JavaFileTreeModel.java b/java/java-impl/src/com/intellij/ide/structureView/impl/java/JavaFileTreeModel.java
index d9c25eb53e28..962bf5f2c436 100644
--- a/java/java-impl/src/com/intellij/ide/structureView/impl/java/JavaFileTreeModel.java
+++ b/java/java-impl/src/com/intellij/ide/structureView/impl/java/JavaFileTreeModel.java
@@ -23,9 +23,11 @@ import com.intellij.ide.util.treeView.smartTree.Filter;
import com.intellij.ide.util.treeView.smartTree.Grouper;
import com.intellij.ide.util.treeView.smartTree.NodeProvider;
import com.intellij.ide.util.treeView.smartTree.Sorter;
+import com.intellij.openapi.editor.Editor;
import com.intellij.psi.*;
import com.intellij.ui.PlaceHolder;
import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
import java.util.Arrays;
import java.util.Collection;
@@ -36,11 +38,12 @@ public class JavaFileTreeModel extends TextEditorBasedStructureViewModel impleme
private final PsiClassOwner myFile;
private String myPlace;
- public JavaFileTreeModel(@NotNull PsiClassOwner file) {
- super(file);
+ public JavaFileTreeModel(@NotNull PsiClassOwner file, @Nullable Editor editor) {
+ super(editor, file);
myFile = file;
}
+ @Override
@NotNull
public Filter[] getFilters() {
return new Filter[]{new FieldsFilter(),
@@ -53,20 +56,24 @@ public class JavaFileTreeModel extends TextEditorBasedStructureViewModel impleme
return NODE_PROVIDERS;
}
+ @Override
@NotNull
public Grouper[] getGroupers() {
return new Grouper[]{new SuperTypesGrouper(), new PropertiesGrouper()};
}
+ @Override
@NotNull
public StructureViewTreeElement getRoot() {
return new JavaFileTreeElement(myFile);
}
+ @Override
public boolean shouldEnterElement(final Object element) {
return element instanceof PsiClass;
}
+ @Override
@NotNull
public Sorter[] getSorters() {
return new Sorter[] {
@@ -76,15 +83,18 @@ public class JavaFileTreeModel extends TextEditorBasedStructureViewModel impleme
Sorter.ALPHA_SORTER};
}
+ @Override
protected PsiFile getPsiFile() {
return myFile;
}
+ @Override
public boolean isAlwaysShowsPlus(StructureViewTreeElement element) {
Object value = element.getValue();
return value instanceof PsiClass || value instanceof PsiFile;
}
+ @Override
public boolean isAlwaysLeaf(StructureViewTreeElement element) {
Object value = element.getValue();
return value instanceof PsiMethod || value instanceof PsiField;
@@ -113,6 +123,7 @@ public class JavaFileTreeModel extends TextEditorBasedStructureViewModel impleme
return false;
}
+ @Override
@NotNull
protected Class[] getSuitableClasses() {
return new Class[]{PsiClass.class, PsiMethod.class, PsiField.class, PsiJavaFile.class};
diff --git a/java/java-impl/src/com/intellij/lang/java/JavaStructureViewBuilderFactory.java b/java/java-impl/src/com/intellij/lang/java/JavaStructureViewBuilderFactory.java
index a353cff157f5..e8d4eba8a8ed 100644
--- a/java/java-impl/src/com/intellij/lang/java/JavaStructureViewBuilderFactory.java
+++ b/java/java-impl/src/com/intellij/lang/java/JavaStructureViewBuilderFactory.java
@@ -24,6 +24,7 @@ import com.intellij.ide.structureView.StructureViewModel;
import com.intellij.ide.structureView.TreeBasedStructureViewBuilder;
import com.intellij.ide.structureView.impl.java.JavaFileTreeModel;
import com.intellij.lang.PsiStructureViewFactory;
+import com.intellij.openapi.editor.Editor;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiJavaFile;
import org.jetbrains.annotations.NotNull;
@@ -37,8 +38,8 @@ public class JavaStructureViewBuilderFactory implements PsiStructureViewFactory
return new TreeBasedStructureViewBuilder() {
@Override
@NotNull
- public StructureViewModel createStructureViewModel() {
- return new JavaFileTreeModel((PsiJavaFile)psiFile);
+ public StructureViewModel createStructureViewModel(@Nullable Editor editor) {
+ return new JavaFileTreeModel((PsiJavaFile)psiFile, editor);
}
@Override
diff --git a/platform/lang-api/src/com/intellij/ide/structureView/StructureViewModelBase.java b/platform/lang-api/src/com/intellij/ide/structureView/StructureViewModelBase.java
index 00d9f5134253..3d00bf2a0baf 100644
--- a/platform/lang-api/src/com/intellij/ide/structureView/StructureViewModelBase.java
+++ b/platform/lang-api/src/com/intellij/ide/structureView/StructureViewModelBase.java
@@ -17,8 +17,10 @@
package com.intellij.ide.structureView;
import com.intellij.ide.util.treeView.smartTree.Sorter;
+import com.intellij.openapi.editor.Editor;
import com.intellij.psi.PsiFile;
import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
/**
* @author yole
@@ -28,8 +30,8 @@ public class StructureViewModelBase extends TextEditorBasedStructureViewModel {
private Sorter[] mySorters = Sorter.EMPTY_ARRAY;
private Class[] mySuitableClasses = null;
- public StructureViewModelBase(@NotNull PsiFile psiFile, @NotNull StructureViewTreeElement root) {
- super(psiFile);
+ public StructureViewModelBase(@NotNull PsiFile psiFile, @Nullable Editor editor, @NotNull StructureViewTreeElement root) {
+ super(editor, psiFile);
myRoot = root;
}
diff --git a/platform/lang-api/src/com/intellij/ide/structureView/TextEditorBasedStructureViewModel.java b/platform/lang-api/src/com/intellij/ide/structureView/TextEditorBasedStructureViewModel.java
index 067f1be779aa..809ee2cd6172 100644
--- a/platform/lang-api/src/com/intellij/ide/structureView/TextEditorBasedStructureViewModel.java
+++ b/platform/lang-api/src/com/intellij/ide/structureView/TextEditorBasedStructureViewModel.java
@@ -66,7 +66,7 @@ public abstract class TextEditorBasedStructureViewModel implements StructureView
this(editor, null);
}
- private TextEditorBasedStructureViewModel(Editor editor, PsiFile file) {
+ protected TextEditorBasedStructureViewModel(Editor editor, PsiFile file) {
myEditor = editor;
myPsiFile = file;
diff --git a/platform/lang-api/src/com/intellij/ide/structureView/TreeBasedStructureViewBuilder.java b/platform/lang-api/src/com/intellij/ide/structureView/TreeBasedStructureViewBuilder.java
index 95796f053153..aec6a54d801b 100644
--- a/platform/lang-api/src/com/intellij/ide/structureView/TreeBasedStructureViewBuilder.java
+++ b/platform/lang-api/src/com/intellij/ide/structureView/TreeBasedStructureViewBuilder.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2009 JetBrains s.r.o.
+ * Copyright 2000-2013 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,11 +16,13 @@
package com.intellij.ide.structureView;
import com.intellij.openapi.Disposable;
+import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.fileEditor.FileEditor;
+import com.intellij.openapi.fileEditor.TextEditor;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Disposer;
import org.jetbrains.annotations.NotNull;
-
+import org.jetbrains.annotations.Nullable;
/**
* Default implementation of the {@link StructureViewBuilder} interface which uses the
@@ -32,20 +34,33 @@ import org.jetbrains.annotations.NotNull;
* @see com.intellij.lang.LanguageStructureViewBuilder#getStructureViewBuilder(com.intellij.psi.PsiFile)
*/
public abstract class TreeBasedStructureViewBuilder implements StructureViewBuilder {
+ /**
+ * @deprecated Use createStructureViewModel(Editor editor)
+ */
+ @NotNull
+ @Deprecated
+ public StructureViewModel createStructureViewModel() {
+ throw new AbstractMethodError();
+ }
+
/**
* Returns the structure view model defining the data displayed in the structure view
* for a specific file.
*
+ * todo This method must be abstract, but due to compatibility reasons we wait IDEA 13 release
+ *
* @return the structure view model instance.
* @see TextEditorBasedStructureViewModel
*/
@NotNull
- public abstract StructureViewModel createStructureViewModel();
+ public StructureViewModel createStructureViewModel(@Nullable Editor editor) {
+ return createStructureViewModel();
+ }
@Override
@NotNull
public StructureView createStructureView(FileEditor fileEditor, Project project) {
- final StructureViewModel model = createStructureViewModel();
+ final StructureViewModel model = createStructureViewModel(fileEditor instanceof TextEditor ? ((TextEditor)fileEditor).getEditor() : null);
StructureView view = StructureViewFactory.getInstance(project).createStructureView(fileEditor, model, project, isRootNodeShown());
Disposer.register(view, new Disposable() {
@Override
@@ -57,10 +72,10 @@ public abstract class TreeBasedStructureViewBuilder implements StructureViewBuil
}
/**
- * Override returning false if root node created by {@link #createStructureViewModel()} shall not be visible
+ * Override returning false if root node created by {@link #createStructureViewModel(Editor editor)} shall not be visible
* @return false if root node shall not be visible in structure tree.
*/
public boolean isRootNodeShown() {
return true;
}
-}
+}
\ No newline at end of file
diff --git a/platform/lang-impl/src/com/intellij/ide/actions/SelectInContextImpl.java b/platform/lang-impl/src/com/intellij/ide/actions/SelectInContextImpl.java
index 5b35576cd66c..9377369df6bc 100644
--- a/platform/lang-impl/src/com/intellij/ide/actions/SelectInContextImpl.java
+++ b/platform/lang-impl/src/com/intellij/ide/actions/SelectInContextImpl.java
@@ -112,16 +112,23 @@ public abstract class SelectInContextImpl implements SelectInContext {
private static SelectInContext createEditorContext(DataContext dataContext) {
final Project project = PlatformDataKeys.PROJECT.getData(dataContext);
final FileEditor editor = PlatformDataKeys.FILE_EDITOR.getData(dataContext);
- return createEditorContext(project, editor);
+ return doCreateEditorContext(project, editor, dataContext);
}
public static SelectInContext createEditorContext(Project project, FileEditor editor) {
+ return doCreateEditorContext(project, editor, null);
+ }
+
+ private static SelectInContext doCreateEditorContext(Project project, FileEditor editor, @Nullable DataContext dataContext) {
if (project == null || editor == null) {
return null;
}
VirtualFile file = FileEditorManagerEx.getInstanceEx(project).getFile(editor);
if (file == null) {
- return null;
+ file = dataContext == null ? null : PlatformDataKeys.VIRTUAL_FILE.getData(dataContext);
+ if (file == null) {
+ return null;
+ }
}
final PsiFile psiFile = PsiManager.getInstance(project).findFile(file);
if (psiFile == null) {
diff --git a/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/FavoritesAutoscrollFromSourceHandler.java b/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/FavoritesAutoscrollFromSourceHandler.java
index 9e053ad2efe1..30bbf034a031 100644
--- a/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/FavoritesAutoscrollFromSourceHandler.java
+++ b/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/FavoritesAutoscrollFromSourceHandler.java
@@ -16,7 +16,6 @@
package com.intellij.ide.favoritesTreeView;
import com.intellij.ide.SelectInContext;
-import com.intellij.ide.SelectInTarget;
import com.intellij.ide.actions.SelectInContextImpl;
import com.intellij.openapi.fileEditor.FileEditor;
import com.intellij.openapi.fileEditor.ex.FileEditorManagerEx;
@@ -53,15 +52,11 @@ public class FavoritesAutoscrollFromSourceHandler extends AutoScrollFromSourceHa
if (file != null) {
final PsiFile psiFile = PsiManager.getInstance(myProject).findFile(file);
if (psiFile != null) {
- final SelectInTarget target = mySelectInTarget;
- if (target != null) {
- final SelectInContext selectInContext = SelectInContextImpl.createEditorContext(myProject, editor);
-
- if (target.canSelect(selectInContext)) {
- target.selectIn(selectInContext, false);
- }
+ final SelectInContext selectInContext = SelectInContextImpl.createEditorContext(myProject, editor);
+ if (mySelectInTarget.canSelect(selectInContext)) {
+ mySelectInTarget.selectIn(selectInContext, false);
}
}
}
}
-}
+}
\ No newline at end of file
diff --git a/platform/lang-impl/src/com/intellij/ide/impl/StructureViewSelectInTarget.java b/platform/lang-impl/src/com/intellij/ide/impl/StructureViewSelectInTarget.java
index 2c3f8d46e198..5298efb949b4 100644
--- a/platform/lang-impl/src/com/intellij/ide/impl/StructureViewSelectInTarget.java
+++ b/platform/lang-impl/src/com/intellij/ide/impl/StructureViewSelectInTarget.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2009 JetBrains s.r.o.
+ * Copyright 2000-2013 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -24,17 +24,19 @@ import com.intellij.ide.structureView.StructureViewFactoryEx;
import com.intellij.ide.structureView.StructureViewWrapper;
import com.intellij.openapi.fileEditor.FileEditor;
import com.intellij.openapi.project.Project;
+import com.intellij.openapi.util.Key;
import com.intellij.openapi.wm.ToolWindowId;
import com.intellij.openapi.wm.ToolWindowManager;
public class StructureViewSelectInTarget implements SelectInTarget {
+ public static final Key CUSTOM_STRUCTURE_VIEW_KEY = Key.create("customStructureView");
+
private final Project myProject;
public StructureViewSelectInTarget(Project project) {
myProject = project;
}
-
public String toString() {
return IdeBundle.message("select.in.file.structure");
}
@@ -48,15 +50,20 @@ public class StructureViewSelectInTarget implements SelectInTarget {
public void selectIn(final SelectInContext context, final boolean requestFocus) {
final FileEditor fileEditor = context.getFileEditorProvider().openFileEditor();
- ToolWindowManager windowManager=ToolWindowManager.getInstance(context.getProject());
+ StructureViewWrapper customStructureView = CUSTOM_STRUCTURE_VIEW_KEY.get(context.getVirtualFile());
+ if (customStructureView != null) {
+ customStructureView.selectCurrentElement(fileEditor, context.getVirtualFile(), requestFocus);
+ return;
+ }
+
+ ToolWindowManager windowManager = ToolWindowManager.getInstance(context.getProject());
final Runnable runnable = new Runnable() {
@Override
public void run() {
StructureViewFactoryEx.getInstanceEx(myProject).runWhenInitialized(new Runnable() {
@Override
public void run() {
- final StructureViewWrapper structureView = getStructureViewWrapper();
- structureView.selectCurrentElement(fileEditor, context.getVirtualFile(), requestFocus);
+ getStructureViewWrapper().selectCurrentElement(fileEditor, context.getVirtualFile(), requestFocus);
}
});
}
@@ -67,7 +74,6 @@ public class StructureViewSelectInTarget implements SelectInTarget {
else {
runnable.run();
}
-
}
private StructureViewWrapper getStructureViewWrapper() {
@@ -88,5 +94,4 @@ public class StructureViewSelectInTarget implements SelectInTarget {
public float getWeight() {
return StandardTargetWeights.STRUCTURE_WEIGHT;
}
-
-}
+}
\ No newline at end of file
diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/structure/GroovyStructureViewFactory.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/structure/GroovyStructureViewFactory.java
index 08723b39b400..f1ccc7bb959c 100644
--- a/plugins/groovy/src/org/jetbrains/plugins/groovy/structure/GroovyStructureViewFactory.java
+++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/structure/GroovyStructureViewFactory.java
@@ -27,20 +27,24 @@ import com.intellij.ide.structureView.impl.java.JavaFileTreeModel;
import com.intellij.ide.structureView.impl.java.JavaInheritedMembersNodeProvider;
import com.intellij.ide.util.treeView.smartTree.NodeProvider;
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;
import org.jetbrains.plugins.groovy.lang.psi.GroovyFileBase;
import java.util.Arrays;
import java.util.Collection;
public class GroovyStructureViewFactory implements PsiStructureViewFactory {
+ @Override
public StructureViewBuilder getStructureViewBuilder(final PsiFile psiFile) {
return new TreeBasedStructureViewBuilder() {
+ @Override
@NotNull
- public StructureViewModel createStructureViewModel() {
- return new JavaFileTreeModel((GroovyFileBase)psiFile) {
+ public StructureViewModel createStructureViewModel(@Nullable Editor editor) {
+ return new JavaFileTreeModel((GroovyFileBase)psiFile, editor) {
@NotNull
@Override
public Collection getNodeProviders() {
diff --git a/xml/dom-impl/src/com/intellij/util/xml/structure/DomStructureViewBuilder.java b/xml/dom-impl/src/com/intellij/util/xml/structure/DomStructureViewBuilder.java
index 94ccf53e6414..a8fb409e7c2a 100644
--- a/xml/dom-impl/src/com/intellij/util/xml/structure/DomStructureViewBuilder.java
+++ b/xml/dom-impl/src/com/intellij/util/xml/structure/DomStructureViewBuilder.java
@@ -21,18 +21,21 @@ import com.intellij.ide.structureView.StructureViewModel;
import com.intellij.ide.structureView.TreeBasedStructureViewBuilder;
import com.intellij.ide.structureView.newStructureView.StructureViewComponent;
import com.intellij.ide.util.treeView.AbstractTreeNode;
+import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.fileEditor.FileEditor;
+import com.intellij.openapi.fileEditor.TextEditor;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.AsyncResult;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.xml.XmlElement;
-import com.intellij.psi.xml.XmlTag;
import com.intellij.psi.xml.XmlFile;
+import com.intellij.psi.xml.XmlTag;
import com.intellij.util.Function;
import com.intellij.util.xml.DomElement;
import com.intellij.util.xml.DomManager;
import com.intellij.util.xml.DomService;
import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
public class DomStructureViewBuilder extends TreeBasedStructureViewBuilder {
private final Function myDescriptor;
@@ -43,18 +46,22 @@ public class DomStructureViewBuilder extends TreeBasedStructureViewBuilder {
myDescriptor = descriptor;
}
+ @Override
@NotNull
- public StructureViewModel createStructureViewModel() {
- return new DomStructureViewTreeModel(myFile, myDescriptor);
+ public StructureViewModel createStructureViewModel(@Nullable Editor editor) {
+ return new DomStructureViewTreeModel(myFile, myDescriptor, editor);
}
+ @Override
public boolean isRootNodeShown() {
return true;
}
+ @Override
@NotNull
public StructureView createStructureView(final FileEditor fileEditor, final Project project) {
- return new StructureViewComponent(fileEditor, createStructureViewModel(), project) {
+ return new StructureViewComponent(fileEditor, createStructureViewModel(fileEditor instanceof TextEditor ? ((TextEditor)fileEditor).getEditor() : null), project) {
+ @Override
public AsyncResult expandPathToElement(final Object element) {
if (element instanceof XmlElement) {
final XmlElement xmlElement = (XmlElement)element;
diff --git a/xml/dom-impl/src/com/intellij/util/xml/structure/DomStructureViewTreeModel.java b/xml/dom-impl/src/com/intellij/util/xml/structure/DomStructureViewTreeModel.java
index 41139a282d0d..bb5b01b008f4 100644
--- a/xml/dom-impl/src/com/intellij/util/xml/structure/DomStructureViewTreeModel.java
+++ b/xml/dom-impl/src/com/intellij/util/xml/structure/DomStructureViewTreeModel.java
@@ -21,11 +21,13 @@ import com.intellij.ide.structureView.impl.xml.XmlFileTreeElement;
import com.intellij.ide.structureView.impl.xml.XmlStructureViewTreeModel;
import com.intellij.ide.util.treeView.smartTree.Sorter;
import com.intellij.openapi.Disposable;
+import com.intellij.openapi.editor.Editor;
import com.intellij.psi.PsiFile;
import com.intellij.psi.xml.XmlFile;
import com.intellij.util.Function;
import com.intellij.util.xml.*;
import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
/**
* @author Gregory.Shrago
@@ -35,17 +37,21 @@ public class DomStructureViewTreeModel extends XmlStructureViewTreeModel impleme
private final DomElementNavigationProvider myNavigationProvider;
private final Function myDescriptor;
- public DomStructureViewTreeModel(final XmlFile file, final Function descriptor) {
- this(file, DomElementsNavigationManager.getManager(file.getProject()).getDomElementsNavigateProvider(DomElementsNavigationManager.DEFAULT_PROVIDER_NAME), descriptor);
+ public DomStructureViewTreeModel(final XmlFile file, final Function descriptor, @Nullable Editor editor) {
+ this(file, DomElementsNavigationManager.getManager(file.getProject()).getDomElementsNavigateProvider(DomElementsNavigationManager.DEFAULT_PROVIDER_NAME), descriptor, editor);
}
- public DomStructureViewTreeModel(final XmlFile file, final DomElementNavigationProvider navigationProvider, final Function descriptor) {
- super(file);
+ public DomStructureViewTreeModel(final XmlFile file,
+ final DomElementNavigationProvider navigationProvider,
+ final Function descriptor,
+ @Nullable Editor editor) {
+ super(file, editor);
myFile = file;
myNavigationProvider = navigationProvider;
myDescriptor = descriptor;
}
+ @Override
@NotNull
public StructureViewTreeElement getRoot() {
final DomFileElement fileElement = DomManager.getDomManager(myFile.getProject()).getFileElement(myFile, DomElement.class);
@@ -58,11 +64,13 @@ public class DomStructureViewTreeModel extends XmlStructureViewTreeModel impleme
return myNavigationProvider;
}
+ @Override
@NotNull
public Sorter[] getSorters() {
return new Sorter[]{Sorter.ALPHA_SORTER};
}
+ @Override
protected PsiFile getPsiFile() {
return myFile;
}
diff --git a/xml/impl/src/com/intellij/ide/structureView/impl/xml/XmlStructureViewTreeModel.java b/xml/impl/src/com/intellij/ide/structureView/impl/xml/XmlStructureViewTreeModel.java
index 71212d1d4e37..9ea42d254006 100644
--- a/xml/impl/src/com/intellij/ide/structureView/impl/xml/XmlStructureViewTreeModel.java
+++ b/xml/impl/src/com/intellij/ide/structureView/impl/xml/XmlStructureViewTreeModel.java
@@ -21,10 +21,12 @@ import com.intellij.ide.structureView.StructureViewTreeElement;
import com.intellij.ide.structureView.TextEditorBasedStructureViewModel;
import com.intellij.ide.util.treeView.smartTree.Sorter;
import com.intellij.lang.dtd.DTDLanguage;
+import com.intellij.openapi.editor.Editor;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.xml.*;
import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
import java.util.Collection;
@@ -33,30 +35,35 @@ public class XmlStructureViewTreeModel extends TextEditorBasedStructureViewModel
private static final Class[] myClasses = new Class[]{XmlTag.class, XmlFile.class, XmlEntityDecl.class, XmlElementDecl.class, XmlAttlistDecl.class, XmlConditionalSection.class};
private static final Sorter[] mySorters = {Sorter.ALPHA_SORTER};
- public XmlStructureViewTreeModel(XmlFile file) {
- super(file);
+ public XmlStructureViewTreeModel(XmlFile file, @Nullable Editor editor) {
+ super(editor, file);
myFile = file;
}
+ @Override
@NotNull
public StructureViewTreeElement getRoot() {
if (myFile.getLanguage() == DTDLanguage.INSTANCE) return new DtdFileTreeElement(myFile);
return new XmlFileTreeElement(myFile);
}
+ @Override
public boolean shouldEnterElement(final Object element) {
return element instanceof XmlTag && ((XmlTag)element).getSubTags().length > 0;
}
+ @Override
protected PsiFile getPsiFile() {
return myFile;
}
+ @Override
@NotNull
protected Class[] getSuitableClasses() {
return myClasses;
}
+ @Override
public Object getCurrentEditorElement() {
final Object editorElement = super.getCurrentEditorElement();
if (editorElement instanceof XmlTag) {
@@ -70,8 +77,9 @@ public class XmlStructureViewTreeModel extends TextEditorBasedStructureViewModel
return editorElement;
}
+ @Override
@NotNull
public Sorter[] getSorters() {
return mySorters;
}
-}
+}
\ No newline at end of file
diff --git a/xml/impl/src/com/intellij/lang/dtd/DtdStructureViewBuilderFactory.java b/xml/impl/src/com/intellij/lang/dtd/DtdStructureViewBuilderFactory.java
index f88cafeb3ead..fcccefe44f88 100644
--- a/xml/impl/src/com/intellij/lang/dtd/DtdStructureViewBuilderFactory.java
+++ b/xml/impl/src/com/intellij/lang/dtd/DtdStructureViewBuilderFactory.java
@@ -24,17 +24,21 @@ import com.intellij.ide.structureView.StructureViewModel;
import com.intellij.ide.structureView.TreeBasedStructureViewBuilder;
import com.intellij.ide.structureView.impl.xml.XmlStructureViewTreeModel;
import com.intellij.lang.PsiStructureViewFactory;
+import com.intellij.openapi.editor.Editor;
import com.intellij.psi.PsiFile;
import com.intellij.psi.xml.XmlFile;
import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
public class DtdStructureViewBuilderFactory implements PsiStructureViewFactory {
+ @Override
@NotNull
public StructureViewBuilder getStructureViewBuilder(final PsiFile psiFile) {
return new TreeBasedStructureViewBuilder() {
+ @Override
@NotNull
- public StructureViewModel createStructureViewModel() {
- return new XmlStructureViewTreeModel((XmlFile)psiFile);
+ public StructureViewModel createStructureViewModel(@Nullable Editor editor) {
+ return new XmlStructureViewTreeModel((XmlFile)psiFile, editor);
}
};
}
diff --git a/xml/impl/src/com/intellij/lang/html/structureView/HtmlStructureViewBuilderProvider.java b/xml/impl/src/com/intellij/lang/html/structureView/HtmlStructureViewBuilderProvider.java
index 3243fe7db7de..9a8741d308a8 100644
--- a/xml/impl/src/com/intellij/lang/html/structureView/HtmlStructureViewBuilderProvider.java
+++ b/xml/impl/src/com/intellij/lang/html/structureView/HtmlStructureViewBuilderProvider.java
@@ -20,24 +20,28 @@ import com.intellij.ide.structureView.StructureViewBuilder;
import com.intellij.ide.structureView.StructureViewModel;
import com.intellij.ide.structureView.TreeBasedStructureViewBuilder;
import com.intellij.ide.structureView.xml.XmlStructureViewBuilderProvider;
+import com.intellij.openapi.editor.Editor;
import com.intellij.psi.xml.XmlFile;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class HtmlStructureViewBuilderProvider implements XmlStructureViewBuilderProvider {
+ @Override
@Nullable
public StructureViewBuilder createStructureViewBuilder(@NotNull final XmlFile file) {
if (file.getViewProvider().getVirtualFile().getFileType() != HtmlFileType.INSTANCE) return null;
return new TreeBasedStructureViewBuilder() {
+ @Override
public boolean isRootNodeShown() {
return false;
}
+ @Override
@NotNull
- public StructureViewModel createStructureViewModel() {
- return new HtmlStructureViewTreeModel(file);
+ public StructureViewModel createStructureViewModel(@Nullable Editor editor) {
+ return new HtmlStructureViewTreeModel(file, editor);
}
};
}
-}
+}
\ No newline at end of file
diff --git a/xml/impl/src/com/intellij/lang/html/structureView/HtmlStructureViewTreeModel.java b/xml/impl/src/com/intellij/lang/html/structureView/HtmlStructureViewTreeModel.java
index 230a89ae4c26..f2bc5c148b85 100644
--- a/xml/impl/src/com/intellij/lang/html/structureView/HtmlStructureViewTreeModel.java
+++ b/xml/impl/src/com/intellij/lang/html/structureView/HtmlStructureViewTreeModel.java
@@ -20,9 +20,11 @@ import com.intellij.ide.structureView.StructureViewTreeElement;
import com.intellij.ide.structureView.impl.xml.XmlStructureViewTreeModel;
import com.intellij.ide.util.treeView.smartTree.NodeProvider;
import com.intellij.ide.util.treeView.smartTree.Sorter;
+import com.intellij.openapi.editor.Editor;
import com.intellij.psi.xml.XmlFile;
import com.intellij.ui.PlaceHolder;
import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
import java.util.Arrays;
import java.util.Collection;
@@ -33,29 +35,35 @@ class HtmlStructureViewTreeModel extends XmlStructureViewTreeModel implements Pl
private String myStructureViewPlace;
- public HtmlStructureViewTreeModel(final XmlFile file) {
- super(file);
+ public HtmlStructureViewTreeModel(final XmlFile file, @Nullable Editor editor) {
+ super(file, editor);
+
myNodeProviders = Arrays.asList(new Html5SectionsNodeProvider());
}
+ @Override
public void setPlace(final String place) {
myStructureViewPlace = place;
}
+ @Override
public String getPlace() {
return myStructureViewPlace;
}
+ @Override
@NotNull
public Sorter[] getSorters() {
return Sorter.EMPTY_ARRAY;
}
+ @Override
@NotNull
public Collection getNodeProviders() {
return myNodeProviders;
}
+ @Override
@NotNull
public StructureViewTreeElement getRoot() {
return new HtmlFileTreeElement(ViewStructureAction.isInStructureViewPopup(this), (XmlFile)getPsiFile());
diff --git a/xml/impl/src/com/intellij/lang/xml/XmlStructureViewBuilderFactory.java b/xml/impl/src/com/intellij/lang/xml/XmlStructureViewBuilderFactory.java
index 2282b1787cdc..ba2721457763 100644
--- a/xml/impl/src/com/intellij/lang/xml/XmlStructureViewBuilderFactory.java
+++ b/xml/impl/src/com/intellij/lang/xml/XmlStructureViewBuilderFactory.java
@@ -27,6 +27,7 @@ import com.intellij.ide.structureView.xml.XmlStructureViewBuilderProvider;
import com.intellij.lang.Language;
import com.intellij.lang.LanguageStructureViewBuilder;
import com.intellij.lang.PsiStructureViewFactory;
+import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.extensions.Extensions;
import com.intellij.psi.PsiFile;
import com.intellij.psi.xml.XmlFile;
@@ -34,6 +35,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class XmlStructureViewBuilderFactory implements PsiStructureViewFactory {
+ @Override
@Nullable
public StructureViewBuilder getStructureViewBuilder(final PsiFile psiFile) {
if (!(psiFile instanceof XmlFile)) {
@@ -52,9 +54,10 @@ public class XmlStructureViewBuilderFactory implements PsiStructureViewFactory {
}
return new TreeBasedStructureViewBuilder() {
+ @Override
@NotNull
- public StructureViewModel createStructureViewModel() {
- return new XmlStructureViewTreeModel((XmlFile)psiFile);
+ public StructureViewModel createStructureViewModel(@Nullable Editor editor) {
+ return new XmlStructureViewTreeModel((XmlFile)psiFile, editor);
}
};
}