mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-354490 Added the switcher
GitOrigin-RevId: bf34c8ca3aabb56ef02bcc80d935ff055682329d
This commit is contained in:
committed by
intellij-monorepo-bot
parent
f8acffcc57
commit
f208071b61
@@ -782,10 +782,10 @@
|
||||
<codeInsight.linkHandler prefix="#javaClass/" handlerClass="com.intellij.codeInsight.daemon.impl.JavaClassTooltipLinkHandler"/>
|
||||
|
||||
<lang.psiStructureViewFactory language="JAVA" implementationClass="com.intellij.lang.java.JavaStructureViewBuilderFactory"/>
|
||||
<lang.logicalStructureElementsProvider implementation="com.intellij.ide.structureView.logical.ClassOwnerLogicalStructureElementsProvider"/>
|
||||
<lang.logicalStructureElementsProvider implementation="com.intellij.lang.java.logical.ClassOwnerLogicalStructureElementsProvider"/>
|
||||
<lang.logicalStructureTreeElementProvider
|
||||
id="javaPsiClassLogicalStructureTreeElementProvider"
|
||||
implementation="com.intellij.ide.structureView.logical.JavaPsiClassLogicalStructureTreeElementProvider"/>
|
||||
implementation="com.intellij.lang.java.logical.JavaPsiClassLogicalStructureTreeElementProvider"/>
|
||||
|
||||
<lang.smartEnterProcessor language="JSPX" implementationClass="com.intellij.codeInsight.completion.XmlSmartEnterProcessor"/>
|
||||
|
||||
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.ide.structureView.logical
|
||||
package com.intellij.lang.java.logical
|
||||
|
||||
import com.intellij.ide.logical.LogicalStructureElementsProvider
|
||||
import com.intellij.ide.structureView.logical.LogicalStructureElementsProvider
|
||||
import com.intellij.psi.PsiClass
|
||||
import com.intellij.psi.PsiClassOwner
|
||||
|
||||
+2
-2
@@ -1,9 +1,9 @@
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.ide.structureView.logical
|
||||
package com.intellij.lang.java.logical
|
||||
|
||||
import com.intellij.ide.logical.LogicalStructureTreeElementProvider
|
||||
import com.intellij.ide.structureView.StructureViewTreeElement
|
||||
import com.intellij.ide.structureView.impl.java.JavaClassTreeElement
|
||||
import com.intellij.ide.structureView.logical.LogicalStructureTreeElementProvider
|
||||
import com.intellij.psi.PsiClass
|
||||
|
||||
class JavaPsiClassLogicalStructureTreeElementProvider: LogicalStructureTreeElementProvider<PsiClass> {
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.ide.structureView.logical
|
||||
package com.intellij.lang.java.logical
|
||||
|
||||
import com.intellij.ide.logical.ConvertElementsProvider
|
||||
import com.intellij.ide.structureView.logical.ConvertElementsProvider
|
||||
import com.intellij.psi.PsiClass
|
||||
|
||||
abstract class PsiClassLogicalElementProvider<T> : ConvertElementsProvider<PsiClass, T>() {
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.ide.structureView.newStructureView
|
||||
|
||||
import com.intellij.ide.impl.StructureViewWrapperImpl
|
||||
import com.intellij.ide.structureView.StructureViewBundle
|
||||
import com.intellij.ide.structureView.StructureViewState
|
||||
import com.intellij.openapi.actionSystem.ActionUpdateThread
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent
|
||||
import com.intellij.openapi.actionSystem.ToggleAction
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
|
||||
internal class ShowLogicalStructureAction : ToggleAction(StructureViewBundle.message("structureview.action.show.logical")) {
|
||||
|
||||
override fun getActionUpdateThread(): ActionUpdateThread {
|
||||
return ActionUpdateThread.EDT
|
||||
}
|
||||
|
||||
override fun isSelected(e: AnActionEvent): Boolean {
|
||||
val project = e.project ?: return false
|
||||
return StructureViewState.getInstance(project).showLogicalStructure
|
||||
}
|
||||
|
||||
override fun setSelected(e: AnActionEvent, state: Boolean) {
|
||||
val project = e.project ?: return
|
||||
StructureViewState.getInstance(project).showLogicalStructure = state
|
||||
ApplicationManager.getApplication().messageBus.syncPublisher(StructureViewWrapperImpl.STRUCTURE_CHANGED).run()
|
||||
}
|
||||
}
|
||||
+2
@@ -324,6 +324,7 @@ public class StructureViewComponent extends SimpleToolWindowPanel implements Tre
|
||||
|
||||
protected @NotNull ActionGroup createActionGroup() {
|
||||
DefaultActionGroup result = new DefaultActionGroup();
|
||||
result.add(new ShowLogicalStructureAction());
|
||||
List<AnAction> sorters = getSortActions();
|
||||
if (!sorters.isEmpty()) {
|
||||
result.addAll(sorters);
|
||||
@@ -357,6 +358,7 @@ public class StructureViewComponent extends SimpleToolWindowPanel implements Tre
|
||||
public final DefaultActionGroup getViewActions() {
|
||||
DefaultActionGroup result = new DefaultActionGroup(IdeBundle.message("group.view.options"), null, AllIcons.Actions.GroupBy);
|
||||
result.setPopup(true);
|
||||
result.add(new ShowLogicalStructureAction());
|
||||
result.addSeparator(StructureViewBundle.message("structureview.subgroup.sort"));
|
||||
result.addAll(sortActionsByName(getSortActions()));
|
||||
result.addSeparator(StructureViewBundle.message("structureview.subgroup.filter"));
|
||||
|
||||
@@ -120,8 +120,8 @@
|
||||
|
||||
<extensionPoint name="lang.structureViewExtension" interface="com.intellij.ide.structureView.StructureViewExtension" dynamic="true"/>
|
||||
|
||||
<extensionPoint name="lang.logicalStructureElementsProvider" interface="com.intellij.ide.logical.LogicalStructureElementsProvider" dynamic="true"/>
|
||||
<extensionPoint name="lang.logicalStructureTreeElementProvider" interface="com.intellij.ide.logical.LogicalStructureTreeElementProvider" dynamic="true"/>
|
||||
<extensionPoint name="lang.logicalStructureElementsProvider" interface="com.intellij.ide.structureView.logical.LogicalStructureElementsProvider" dynamic="true"/>
|
||||
<extensionPoint name="lang.logicalStructureTreeElementProvider" interface="com.intellij.ide.structureView.logical.LogicalStructureTreeElementProvider" dynamic="true"/>
|
||||
|
||||
<extensionPoint name="lang.surroundDescriptor" beanClass="com.intellij.lang.LanguageExtensionPoint" dynamic="true">
|
||||
<with attribute="implementationClass" implements="com.intellij.lang.surroundWith.SurroundDescriptor"/>
|
||||
|
||||
@@ -1034,6 +1034,8 @@
|
||||
<add-to-group group-id="Other.KeymapGroup"/>
|
||||
</group>
|
||||
|
||||
<group id="StructureViewToolbar"/>
|
||||
|
||||
<group id="StructureViewPopupMenu">
|
||||
<reference ref="EditSource"/>
|
||||
<separator/>
|
||||
|
||||
@@ -15,6 +15,17 @@ a:com.intellij.ide.structureView.StructureViewFactoryEx
|
||||
- a:isActionActive(java.lang.String):Z
|
||||
- a:runWhenInitialized(java.lang.Runnable):V
|
||||
- a:setActiveAction(java.lang.String,Z):V
|
||||
f:com.intellij.ide.structureView.StructureViewState
|
||||
- com.intellij.openapi.components.PersistentStateComponent
|
||||
- sf:Companion:com.intellij.ide.structureView.StructureViewState$Companion
|
||||
- <init>():V
|
||||
- sf:getInstance(com.intellij.openapi.project.Project):com.intellij.ide.structureView.StructureViewState
|
||||
- f:getShowLogicalStructure():Z
|
||||
- getState():com.intellij.ide.structureView.StructureViewState
|
||||
- loadState(com.intellij.ide.structureView.StructureViewState):V
|
||||
- f:setShowLogicalStructure(Z):V
|
||||
f:com.intellij.ide.structureView.StructureViewState$Companion
|
||||
- f:getInstance(com.intellij.openapi.project.Project):com.intellij.ide.structureView.StructureViewState
|
||||
com.intellij.ide.structureView.StructureViewWrapper
|
||||
- a:selectCurrentElement(com.intellij.openapi.fileEditor.FileEditor,com.intellij.openapi.vfs.VirtualFile,Z):Z
|
||||
c:com.intellij.ide.structureView.customRegions.CustomRegionTreeElement
|
||||
@@ -45,6 +56,59 @@ a:com.intellij.ide.structureView.impl.common.PsiTreeElementBase
|
||||
- isSearchInLocationString():Z
|
||||
- isValid():Z
|
||||
- navigate(Z):V
|
||||
com.intellij.ide.structureView.logical.ContainerElementsProvider
|
||||
- com.intellij.ide.structureView.logical.LogicalStructureElementsProvider
|
||||
- a:getContainerName():java.lang.String
|
||||
a:com.intellij.ide.structureView.logical.ConvertElementsProvider
|
||||
- com.intellij.ide.structureView.logical.LogicalStructureElementsProvider
|
||||
- sf:Companion:com.intellij.ide.structureView.logical.ConvertElementsProvider$Companion
|
||||
- <init>():V
|
||||
- a:convert(java.lang.Object):java.lang.Object
|
||||
- getElements(java.lang.Object):java.util.List
|
||||
f:com.intellij.ide.structureView.logical.ConvertElementsProvider$Companion
|
||||
- f:convert(java.lang.Object):kotlin.sequences.Sequence
|
||||
com.intellij.ide.structureView.logical.LogicalStructureElementsProvider
|
||||
- sf:Companion:com.intellij.ide.structureView.logical.LogicalStructureElementsProvider$Companion
|
||||
- a:forLogicalModelClass():java.lang.Class
|
||||
- a:getElements(java.lang.Object):java.util.List
|
||||
f:com.intellij.ide.structureView.logical.LogicalStructureElementsProvider$Companion
|
||||
- f:getEP_NAME():com.intellij.openapi.extensions.ExtensionPointName
|
||||
- f:getProviders(java.lang.Object):kotlin.sequences.Sequence
|
||||
com.intellij.ide.structureView.logical.LogicalStructureTreeElementProvider
|
||||
- sf:Companion:com.intellij.ide.structureView.logical.LogicalStructureTreeElementProvider$Companion
|
||||
- a:getModelClass():java.lang.Class
|
||||
- a:getTreeElement(java.lang.Object):com.intellij.ide.structureView.StructureViewTreeElement
|
||||
f:com.intellij.ide.structureView.logical.LogicalStructureTreeElementProvider$Companion
|
||||
- f:getEP_NAME():com.intellij.openapi.extensions.ExtensionPointName
|
||||
- f:getTreeElement(java.lang.Object):com.intellij.ide.structureView.StructureViewTreeElement
|
||||
f:com.intellij.ide.structureView.logical.impl.LogicalGrouper
|
||||
- com.intellij.ide.util.treeView.smartTree.Grouper
|
||||
- <init>():V
|
||||
- getName():java.lang.String
|
||||
- getPresentation():com.intellij.ide.util.treeView.smartTree.ActionPresentation
|
||||
- group(com.intellij.ide.util.treeView.AbstractTreeNode,java.util.Collection):java.util.Collection
|
||||
f:com.intellij.ide.structureView.logical.impl.LogicalStructureViewService
|
||||
- sf:Companion:com.intellij.ide.structureView.logical.impl.LogicalStructureViewService$Companion
|
||||
- <init>(com.intellij.openapi.project.Project):V
|
||||
- f:getLogicalStructureBuilder(com.intellij.psi.PsiFile):com.intellij.ide.structureView.StructureViewBuilder
|
||||
f:com.intellij.ide.structureView.logical.impl.LogicalStructureViewService$Companion
|
||||
- f:getInstance(com.intellij.openapi.project.Project):com.intellij.ide.structureView.logical.impl.LogicalStructureViewService
|
||||
com.intellij.ide.structureView.logical.impl.LogicalStructureViewTreeElement
|
||||
- com.intellij.ide.structureView.StructureViewTreeElement
|
||||
- a:getLogicalAssembledModel():com.intellij.ide.structureView.logical.model.LogicalStructureAssembledModel
|
||||
f:com.intellij.ide.structureView.logical.impl.LogicalStructureViewTreeElementsKt
|
||||
- sf:createViewTreeElement(com.intellij.ide.structureView.logical.model.LogicalStructureAssembledModel):com.intellij.ide.structureView.StructureViewTreeElement
|
||||
f:com.intellij.ide.structureView.logical.model.LogicalStructureAssembledModel
|
||||
- <init>(com.intellij.openapi.project.Project,java.lang.Object):V
|
||||
- f:getChildren():java.util.List
|
||||
- f:getChildrenGrouped():java.util.List
|
||||
- f:getModel():java.lang.Object
|
||||
- f:getProject():com.intellij.openapi.project.Project
|
||||
com.intellij.ide.structureView.logical.model.LogicalStructureModel
|
||||
- a:getName():java.lang.String
|
||||
com.intellij.ide.structureView.logical.model.PsiRepresentingLogicalStructureModel
|
||||
- com.intellij.ide.structureView.logical.model.LogicalStructureModel
|
||||
- a:getPsiElement():com.intellij.psi.PsiElement
|
||||
a:com.intellij.ide.util.InheritedMembersNodeProvider
|
||||
- com.intellij.ide.util.ActionShortcutProvider
|
||||
- com.intellij.ide.util.FileStructureNodeProvider
|
||||
|
||||
@@ -8,3 +8,4 @@ node.structureview.invalid=<invalid>
|
||||
structureview.subgroup.sort=Sort
|
||||
structureview.subgroup.filter=Show
|
||||
structureview.subgroup.group=Group
|
||||
structureview.action.show.logical=Logical Structure
|
||||
|
||||
+4
-4
@@ -19,9 +19,10 @@
|
||||
*/
|
||||
package com.intellij.ide.highlighter;
|
||||
|
||||
import com.intellij.ide.logical.impl.LogicalStructureViewService;
|
||||
import com.intellij.ide.structureView.logical.impl.LogicalStructureViewService;
|
||||
import com.intellij.ide.structureView.StructureViewBuilder;
|
||||
import com.intellij.ide.structureView.StructureViewBuilderProvider;
|
||||
import com.intellij.ide.structureView.StructureViewState;
|
||||
import com.intellij.lang.LanguageStructureViewBuilder;
|
||||
import com.intellij.lang.PsiStructureViewFactory;
|
||||
import com.intellij.openapi.fileTypes.FileType;
|
||||
@@ -44,11 +45,10 @@ public class LanguageFileTypeStructureViewBuilderProvider implements StructureVi
|
||||
final PsiFile psiFile = PsiManager.getInstance(project).findFile(file);
|
||||
if (psiFile == null) return null;
|
||||
|
||||
//boolean isLogicalViewAvailable = true; // TODO StructureTW: add logic
|
||||
//if (isLogicalViewAvailable) {
|
||||
if (StructureViewState.getInstance(project).getState().getShowLogicalStructure()) {
|
||||
StructureViewBuilder logicalViewBuilder = LogicalStructureViewService.Companion.getInstance(project).getLogicalStructureBuilder(psiFile);
|
||||
if (logicalViewBuilder != null) return logicalViewBuilder;
|
||||
//}
|
||||
}
|
||||
|
||||
final PsiStructureViewFactory factory = LanguageStructureViewBuilder.getInstance().forLanguage(psiFile.getLanguage());
|
||||
return factory == null ? null : factory.getStructureViewBuilder(psiFile);
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.ide.structureView
|
||||
|
||||
import com.intellij.openapi.components.*
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.project.ProjectManager
|
||||
import com.intellij.util.xmlb.XmlSerializerUtil
|
||||
|
||||
@Service(Service.Level.PROJECT)
|
||||
@State(name = "StructureViewState", storages = [(Storage(value = StoragePathMacros.WORKSPACE_FILE))])
|
||||
class StructureViewState : PersistentStateComponent<StructureViewState> {
|
||||
companion object {
|
||||
@JvmStatic
|
||||
fun getInstance(project: Project): StructureViewState = project.service()
|
||||
}
|
||||
|
||||
var showLogicalStructure: Boolean = false
|
||||
|
||||
override fun loadState(state: StructureViewState) {
|
||||
XmlSerializerUtil.copyBean(state, this)
|
||||
}
|
||||
|
||||
override fun getState(): StructureViewState {
|
||||
return this
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.ide.logical
|
||||
package com.intellij.ide.structureView.logical
|
||||
|
||||
abstract class ConvertElementsProvider<P, C> : LogicalStructureElementsProvider<P, C> {
|
||||
abstract fun convert(p: P): C?
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.ide.logical
|
||||
package com.intellij.ide.structureView.logical
|
||||
|
||||
import com.intellij.openapi.extensions.ExtensionPointName
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.ide.logical
|
||||
package com.intellij.ide.structureView.logical
|
||||
|
||||
import com.intellij.ide.structureView.StructureViewTreeElement
|
||||
import com.intellij.openapi.extensions.ExtensionPointName
|
||||
+3
-3
@@ -1,5 +1,5 @@
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.ide.logical.impl
|
||||
package com.intellij.ide.structureView.logical.impl
|
||||
|
||||
import com.intellij.ide.TypePresentationService
|
||||
import com.intellij.ide.projectView.PresentationData
|
||||
@@ -17,7 +17,7 @@ class LogicalGrouper: Grouper {
|
||||
|
||||
override fun getPresentation(): ActionPresentation {
|
||||
return object : ActionPresentation {
|
||||
override fun getText(): String = "Logical"
|
||||
override fun getText(): String = name
|
||||
|
||||
override fun getDescription(): String = ""
|
||||
|
||||
@@ -25,7 +25,7 @@ class LogicalGrouper: Grouper {
|
||||
}
|
||||
}
|
||||
|
||||
override fun getName(): String = "Logical"
|
||||
override fun getName(): String = "Logical Type"
|
||||
|
||||
override fun group(parent: AbstractTreeNode<*>, children: MutableCollection<TreeElement>): Collection<Group> {
|
||||
val structureElement = parent.value as? LogicalStructureViewTreeElement<*> ?: return emptyList()
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.ide.logical.impl
|
||||
package com.intellij.ide.structureView.logical.impl
|
||||
|
||||
import com.intellij.ide.logical.model.LogicalStructureAssembledModel
|
||||
import com.intellij.ide.structureView.logical.model.LogicalStructureAssembledModel
|
||||
import com.intellij.ide.structureView.*
|
||||
import com.intellij.ide.util.treeView.smartTree.Grouper
|
||||
import com.intellij.openapi.components.Service
|
||||
+3
-6
@@ -1,12 +1,9 @@
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.ide.logical.impl
|
||||
package com.intellij.ide.structureView.logical.impl
|
||||
|
||||
import com.intellij.ide.TypePresentationService
|
||||
import com.intellij.ide.logical.LogicalStructureTreeElementProvider
|
||||
import com.intellij.ide.logical.model.LogicalStructureAssembledModel
|
||||
import com.intellij.ide.logical.model.LogicalStructureModel
|
||||
import com.intellij.ide.logical.model.PsiRepresentingLogicalStructureModel
|
||||
import com.intellij.ide.projectView.PresentationData
|
||||
import com.intellij.ide.structureView.logical.LogicalStructureTreeElementProvider
|
||||
import com.intellij.ide.structureView.logical.model.LogicalStructureAssembledModel
|
||||
import com.intellij.ide.structureView.StructureViewTreeElement
|
||||
import com.intellij.ide.structureView.impl.common.PsiTreeElementBase
|
||||
import com.intellij.ide.util.treeView.smartTree.TreeElement
|
||||
+4
-4
@@ -1,9 +1,9 @@
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.ide.logical.model
|
||||
package com.intellij.ide.structureView.logical.model
|
||||
|
||||
import com.intellij.ide.logical.ContainerElementsProvider
|
||||
import com.intellij.ide.logical.ConvertElementsProvider
|
||||
import com.intellij.ide.logical.LogicalStructureElementsProvider
|
||||
import com.intellij.ide.structureView.logical.ContainerElementsProvider
|
||||
import com.intellij.ide.structureView.logical.ConvertElementsProvider
|
||||
import com.intellij.ide.structureView.logical.LogicalStructureElementsProvider
|
||||
import com.intellij.openapi.project.Project
|
||||
|
||||
class LogicalStructureAssembledModel<T>(
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.ide.logical.model
|
||||
package com.intellij.ide.structureView.logical.model
|
||||
|
||||
interface LogicalStructureModel {
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.ide.logical.model
|
||||
package com.intellij.ide.structureView.logical.model
|
||||
|
||||
import com.intellij.psi.PsiElement
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.kotlin.idea.structureView
|
||||
|
||||
import com.intellij.ide.logical.LogicalStructureTreeElementProvider
|
||||
import com.intellij.ide.structureView.logical.LogicalStructureTreeElementProvider
|
||||
import com.intellij.ide.structureView.StructureViewTreeElement
|
||||
import org.jetbrains.kotlin.asJava.classes.KtLightClass
|
||||
|
||||
|
||||
Reference in New Issue
Block a user