summaryrefslogtreecommitdiff
path: root/platform/execution-impl/src/com/intellij/execution/runToolbar/RunToolbarEditConfigurationAction.kt
blob: 1b7c0a8854f213a4e5ecf948a1d2d3d1838e6c6b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
// Copyright 2000-2021 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.execution.runToolbar

import com.intellij.openapi.actionSystem.AnActionEvent
import com.intellij.openapi.project.DumbAwareAction
import com.intellij.openapi.wm.ToolWindowManager

class RunToolbarEditConfigurationAction : DumbAwareAction() {
  companion object {
    const val ACTION_ID = "RunToolbarEditConfigurationAction"
  }

  override fun actionPerformed(e: AnActionEvent) {
    e.dataContext.editConfiguration()
  }
}

class RunToolbarShowToolWindowTab : DumbAwareAction() {
  companion object {
    const val ACTION_ID = "RunToolbarShowToolWindowTab"
  }

  override fun update(e: AnActionEvent) {
    e.presentation.isEnabledAndVisible =
      e.project?.let { project ->

        val manager = RunToolbarSlotManager.getInstance(project)
        if (e.runToolbarData() != manager.mainSlotData || e.mainState() == RunToolbarMainSlotState.PROCESS) {
          e.environment()?.let {
            ToolWindowManager.getInstance(project).getToolWindow(it.contentToReuse?.contentToolWindowId ?: it.executor.id)?.let {
              val contentManager = it.contentManager
              contentManager.contents.firstOrNull { it.executionId == it.executionId }?.let {
                true
              } ?: false
            } ?: false

          } ?: false
        }
        else false
      } ?: false
  }

  override fun actionPerformed(e: AnActionEvent) {
    e.environment()?.showToolWindowTab()
  }
}


class RunToolbarRemoveSlotAction : DumbAwareAction() {
  override fun actionPerformed(e: AnActionEvent) {
    e.project?.let { project ->
      e.id()?.let {
        RunToolbarSlotManager.getInstance(project).removeSlot(it)
      }
    }
  }

  override fun update(e: AnActionEvent) {
    e.presentation.isEnabledAndVisible = e.project?.let { project ->
      val slotManager = RunToolbarSlotManager.getInstance(project)
      e.runToolbarData() != slotManager.mainSlotData || (slotManager.slotsCount() != 0 && e.mainState() != RunToolbarMainSlotState.INFO)
    } ?: false
  }
}

class RunToolbarMoveToTopAction : DumbAwareAction() {
  override fun actionPerformed(e: AnActionEvent) {
    e.project?.let { project ->
      val manager = RunToolbarSlotManager.getInstance(project)
      if (manager.getState().isSinglePlain() && manager.mainSlotData == e.runToolbarData()) {
        manager.activeProcesses.activeSlots.firstOrNull()?.let {
          manager.moveToTop(it.id)
        }
      }
      else {
        e.id()?.let {
          manager.moveToTop(it)
        }
      }
    }
  }

  override fun update(e: AnActionEvent) {
    e.presentation.isEnabledAndVisible = e.project?.let { project ->
      val manager = RunToolbarSlotManager.getInstance(project)
      e.runToolbarData() != manager.mainSlotData
      || manager.getState().isSinglePlain()
    } ?: false
  }
}