default implementation for run configuration type
[idea/community.git] / platform / lang-api / src / com / intellij / execution / configurations / ConfigurationType.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 package com.intellij.execution.configurations;
17
18 import com.intellij.openapi.extensions.ExtensionPointName;
19 import com.intellij.openapi.project.DumbAware;
20 import com.intellij.openapi.project.PossiblyDumbAware;
21 import org.jetbrains.annotations.NonNls;
22 import org.jetbrains.annotations.NotNull;
23
24 import javax.swing.*;
25
26 /**
27  * The type of a run configuration.
28  *
29  * @see ConfigurationTypeBase
30  */
31 public interface ConfigurationType extends PossiblyDumbAware {
32
33   ExtensionPointName<ConfigurationType> CONFIGURATION_TYPE_EP = ExtensionPointName.create("com.intellij.configurationType");
34
35   /**
36    * Returns the display name of the configuration type. This is used, for example, to represent the configuration type in the run
37    * configurations tree, and also as the name of the action used to create the configuration.
38    *
39    * @return the display name of the configuration type.
40    */
41   String getDisplayName();
42
43   /**
44    * Returns the description of the configuration type. You may return the same text as the display name of the configuration type.
45    *
46    * @return the description of the configuration type.
47    */
48   String getConfigurationTypeDescription();
49
50   /**
51    * Returns the 16x16 icon used to represent the configuration type.
52    *
53    * @return the icon
54    */
55   Icon getIcon();
56
57   /**
58    * Returns the ID of the configuration type. The ID is used to store run configuration settings in a project or workspace file and
59    * must not change between plugin versions.
60    *
61    * @return the configuration type ID.
62    */
63   @NonNls @NotNull
64   String getId();
65
66   /**
67    * Returns the configuration factories used by this configuration type. Normally each configuration type provides just a single factory.
68    * You can return multiple factories if your configurations can be created in multiple variants (for example, local and remote for an
69    * application server).
70    *
71    * @return the run configuration factories.
72    */
73   ConfigurationFactory[] getConfigurationFactories();
74
75   @Override
76   default boolean isDumbAware() {
77     return this instanceof DumbAware;
78   }
79 }