Revert to Tool Window API
[idea/community.git] / platform / lang-api / src / com / intellij / execution / Executor.java
1 /*
2  * Copyright 2000-2009 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package com.intellij.execution;
18
19 import com.intellij.openapi.extensions.ExtensionPointName;
20 import com.intellij.openapi.util.text.StringUtil;
21 import org.jetbrains.annotations.NonNls;
22 import org.jetbrains.annotations.NotNull;
23
24 import javax.swing.*;
25
26 /**
27  * Describes a specific way of executing any possible run configuration. The three default executors provided by the IntelliJ Platform
28  * by default are Run, Debug and Run with Coverage. Each executor gets its
29  * own toolbar button, which starts the selected run configuration using this executor, and its own context menu item for starting
30  * a configuration using this executor.
31  *
32  * @author spleaner
33  */
34 public abstract class Executor {
35   public static final ExtensionPointName<Executor> EXECUTOR_EXTENSION_NAME = ExtensionPointName.create("com.intellij.executor");
36
37   /**
38    * Returns the ID of the toolwindow in which the run tabs created by this executor will be displayed.
39    *
40    * @return the ID of the toolwindow (usually {@link com.intellij.openapi.wm.ToolWindowId#RUN} or
41    * {@link com.intellij.openapi.wm.ToolWindowId#DEBUG}).
42    */
43   public abstract String getToolWindowId();
44
45   public abstract Icon getToolWindowIcon();
46
47   /**
48    * Returns the 16x16 icon for the toolbar button corresponding to the executor.
49    *
50    * @return the icon.
51    */
52   @NotNull
53   public abstract Icon getIcon();
54
55   /**
56    * Returns the 16x16 icon for the disabled toolbar button corresponding to the executor.
57    *
58    * @return the icon for the disabled button.
59    */
60   public abstract Icon getDisabledIcon();
61
62   /**
63    * Returns the action description (text displayed in the status bar) for the toolbar button corresponding to the executor.
64    *
65    * @return the executor action description.
66    */
67   public abstract String getDescription();
68
69   @NotNull
70   public abstract String getActionName();
71
72   /**
73    * Returns the unique ID of the executor.
74    *
75    * @return the ID of the executor.
76    */
77   @NotNull
78   @NonNls
79   public abstract String getId();
80
81   @NotNull
82   public abstract String getStartActionText();
83
84   @NonNls
85   public abstract String getContextActionId();
86
87   @NonNls
88   public abstract String getHelpId();
89
90   public String getStartActionText(String configurationName) {
91     return getStartActionText() + (StringUtil.isEmpty(configurationName) ? "" : " '" + StringUtil.first(configurationName, 30, true) + "'");
92   }
93 }