33
44package software.aws.toolkits.jetbrains.services.cloudformation
55
6+ import com.intellij.icons.AllIcons
7+ import com.intellij.ide.projectView.PresentationData
68import com.intellij.openapi.project.Project
9+ import com.intellij.ui.SimpleTextAttributes
10+ import com.intellij.ui.treeStructure.Tree
11+ import com.intellij.util.ui.UIUtil
12+ import com.intellij.util.ui.tree.TreeUtil
713import icons.AwsIcons
814import software.amazon.awssdk.services.cloudformation.CloudFormationClient
915import software.amazon.awssdk.services.cloudformation.model.StackStatus
1016import software.amazon.awssdk.services.cloudformation.model.StackSummary
17+ <<<<<<< Updated upstream
1118import software.aws.toolkit.jetbrains.utils.toHumanReadable
19+ ====== =
20+ import software.aws.toolkits.jetbrains.core.explorer.AwsToolkitExplorerToolWindow
21+ import software.aws.toolkits.jetbrains.core.explorer.PinnedFirstNode
22+ import software.aws.toolkits.jetbrains.core.explorer.ToolkitToolWindowTab
23+ >>>>>>> Stashed changes
1224import software.aws.toolkits.jetbrains.core.explorer.nodes.AwsExplorerNode
1325import software.aws.toolkits.jetbrains.core.explorer.nodes.AwsExplorerResourceNode
1426import software.aws.toolkits.jetbrains.core.explorer.nodes.AwsExplorerServiceNode
1527import software.aws.toolkits.jetbrains.core.explorer.nodes.CacheBackedAwsExplorerServiceRootNode
1628import software.aws.toolkits.jetbrains.services.cloudformation.resources.CloudFormationResources
1729import software.aws.toolkits.jetbrains.services.cloudformation.stack.StackWindowManager
30+ <<<<<<< Updated upstream
1831import software.aws.toolkits.resources.message
32+ ====== =
33+ import software.aws.toolkits.jetbrains.utils.toHumanReadable
34+ import software.aws.toolkits.resources.AwsToolkitBundle.message
35+ import javax.swing.JComponent
36+ >>>>>>> Stashed changes
1937
2038class CloudFormationServiceNode (project : Project , service : AwsExplorerServiceNode ) : CacheBackedAwsExplorerServiceRootNode<StackSummary>(
2139 project,
@@ -24,6 +42,17 @@ class CloudFormationServiceNode(project: Project, service: AwsExplorerServiceNod
2442) {
2543 override fun displayName (): String = message(" explorer.node.cloudformation" )
2644 override fun toNode (child : StackSummary ): AwsExplorerNode <* > = CloudFormationStackNode (nodeProject, child.stackName(), child.stackStatus(), child.stackId())
45+
46+ override fun getChildren (): List <AwsExplorerNode <* >> {
47+ val hasCfnPanel = ToolkitToolWindowTab .EP_NAME .extensionList.any {
48+ it.tabId == message(" cloudformation.explorer.tab.title" ) && it.enabled()
49+ }
50+ return if (hasCfnPanel) {
51+ listOf (TryCloudFormationPanelNode (nodeProject)) + super .getChildren()
52+ } else {
53+ super .getChildren()
54+ }
55+ }
2756}
2857
2958class CloudFormationStackNode (
@@ -49,3 +78,32 @@ class CloudFormationStackNode(
4978 StackWindowManager .getInstance(nodeProject).openStack(stackName, stackId)
5079 }
5180}
81+
82+ class TryCloudFormationPanelNode (project : Project ) :
83+ AwsExplorerNode <String >(project, " try-cfn-panel" , AllIcons .Nodes .Favorite ), PinnedFirstNode {
84+
85+ override fun getChildren (): List <AwsExplorerNode <* >> = emptyList()
86+
87+ override fun isAlwaysLeaf (): Boolean = true
88+
89+ override fun displayName (): String = message(" cloudformation.explorer.try_new_panel" )
90+
91+ override fun update (presentation : PresentationData ) {
92+ presentation.setIcon(AllIcons .Nodes .Favorite )
93+ presentation.addText(displayName(), SimpleTextAttributes .REGULAR_BOLD_ATTRIBUTES )
94+ presentation.tooltip = message(" cloudformation.explorer.try_new_panel.tooltip" )
95+ }
96+
97+ override fun onDoubleClick () {
98+ val toolWindow = AwsToolkitExplorerToolWindow .toolWindow(nodeProject)
99+ toolWindow.activate {
100+ val explorerWindow = AwsToolkitExplorerToolWindow .getInstance(nodeProject)
101+ val tabComponent = explorerWindow.selectTab(message(" cloudformation.explorer.tab.title" ))
102+ (tabComponent as ? JComponent )?.let { component ->
103+ UIUtil .findComponentOfType(component, Tree ::class .java)?.let { tree ->
104+ TreeUtil .expand(tree, 1 )
105+ }
106+ }
107+ }
108+ }
109+ }
0 commit comments