@@ -9,11 +9,12 @@ import com.intellij.openapi.actionSystem.ActionManager
99import com.intellij.openapi.actionSystem.AnAction
1010import com.intellij.openapi.actionSystem.AnActionEvent
1111import com.intellij.openapi.actionSystem.DefaultActionGroup
12+ import com.intellij.openapi.fileChooser.FileChooser
13+ import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory
1214import com.intellij.openapi.fileEditor.FileEditorManager
1315import com.intellij.openapi.project.Project
1416import com.intellij.openapi.ui.SimpleToolWindowPanel
15- import com.intellij.ui.JBColor
16- import com.intellij.util.IconUtil
17+ import com.jetbrains.php.lang.PhpFileType
1718import kotlinx.coroutines.runBlocking
1819import java.awt.BorderLayout
1920import java.awt.GridLayout
@@ -41,37 +42,56 @@ class OpcodesTerminalPanel(
4142 }
4243
4344 private fun createToolBar () {
44- val actionGroup = DefaultActionGroup ()
45- actionGroup.add(RunDumpTokensCommandAction (service))
46- actionGroup.addSeparator()
47- actionGroup.add(DefaultActionGroup (" Debug Level" , true ).apply {
48- add(object : AnAction (" Before Optimization" ) {
49- override fun actionPerformed (e : AnActionEvent ) {
50- state.setDebugLevel(1 )
51- refresh(project)
52- }
53- override fun update (e : AnActionEvent ) {
54- e.presentation.icon = when (state.getDebugLevel()) {
55- 1 -> IconUtil .colorize(AllIcons .General .GreenCheckmark , JBColor .GRAY )
56- else -> null
45+ val actionGroup = DefaultActionGroup ().apply {
46+ add(RunDumpTokensCommandAction (service))
47+ addSeparator()
48+ add(DefaultActionGroup (" Debug Level" , true ).apply {
49+ add(object : AnAction (" Before Optimization" ) {
50+ override fun actionPerformed (e : AnActionEvent ) {
51+ state.debugLevel = 1
52+ refresh(project)
5753 }
58- }
54+
55+ override fun update (e : AnActionEvent ) {
56+ e.presentation.icon = when (state.debugLevel) {
57+ 1 -> AllIcons .Actions .Checked
58+ else -> null
59+ }
60+ }
61+ })
62+ add(object : AnAction (" After Optimization" ) {
63+ override fun actionPerformed (e : AnActionEvent ) {
64+ state.debugLevel = 2
65+ refresh(project)
66+ }
67+
68+ override fun update (e : AnActionEvent ) {
69+ e.presentation.icon = when (state.debugLevel) {
70+ 2 -> AllIcons .Actions .Checked
71+ else -> null
72+ }
73+ }
74+ })
75+ templatePresentation.icon = AllIcons .Actions .ToggleVisibility
5976 })
60- add(object : AnAction (" After Optimization" ) {
77+
78+ add(object : AnAction (" Select Preload File" , " Choose a file" , AllIcons .Actions .MenuOpen ) {
6179 override fun actionPerformed (e : AnActionEvent ) {
62- state.setDebugLevel(2 )
63- refresh(project)
64- }
6580
66- override fun update (e : AnActionEvent ) {
67- e.presentation.icon = when (state.getDebugLevel()) {
68- 2 -> IconUtil .colorize(AllIcons .General .GreenCheckmark , JBColor .GRAY )
69- else -> null
70- }
81+ val fileChooserDescriptor =
82+ FileChooserDescriptorFactory .createSingleFileDescriptor(PhpFileType .INSTANCE )
83+ .withTitle(" Select Preload File" )
84+ .withDescription(" Choose a preload.php file" )
85+
86+ FileChooser
87+ .chooseFile(fileChooserDescriptor, project, null )
88+ .let { file ->
89+ state.preloadFile = file?.path
90+ }
91+ refresh(project)
7192 }
7293 })
73- templatePresentation.icon = AllIcons .Actions .ToggleVisibility
74- })
94+ }
7595
7696 val actionToolbar = ActionManager .getInstance().createActionToolbar(" Opcodes Toolbar" , actionGroup, false )
7797 actionToolbar.targetComponent = this
0 commit comments