f9b7a320a3d345ae8dcae78207dd6abc4beda75b
[idea/community.git] / platform / extensions / src / com / intellij / openapi / extensions / PluginDescriptor.java
1 // Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
2 package com.intellij.openapi.extensions;
3
4 import com.intellij.openapi.Disposable;
5 import org.jdom.Element;
6 import org.jetbrains.annotations.ApiStatus;
7 import org.jetbrains.annotations.NotNull;
8 import org.jetbrains.annotations.Nullable;
9
10 import java.io.File;
11 import java.nio.file.Path;
12 import java.util.Date;
13 import java.util.List;
14
15 public interface PluginDescriptor {
16
17   /**
18    * @return plugin id or null if the descriptor is the nested (optional dependency) descriptor
19    */
20   PluginId getPluginId();
21
22   ClassLoader getPluginClassLoader();
23
24   default boolean isBundled() {
25     return false;
26   }
27
28   File getPath();
29
30   Path getPluginPath();
31
32   @Nullable
33   String getDescription();
34
35   String getChangeNotes();
36
37   String getName();
38
39   @Nullable
40   String getProductCode();
41
42   @Nullable
43   Date getReleaseDate();
44
45   int getReleaseVersion();
46
47   boolean isLicenseOptional();
48
49   @NotNull
50   List<PluginId> getIncompatibleModuleIds();
51
52   PluginId @NotNull [] getDependentPluginIds();
53
54   PluginId @NotNull [] getOptionalDependentPluginIds();
55
56   String getVendor();
57
58   String getVersion();
59
60   String getResourceBundleBaseName();
61
62   String getCategory();
63
64   @Nullable
65   List<Element> getActionDescriptionElements();
66
67   String getVendorEmail();
68
69   String getVendorUrl();
70
71   String getUrl();
72
73   /**
74    * @deprecated doesn't make sense for installed plugins; use PluginNode#getDownloads
75    */
76   @Deprecated
77   @ApiStatus.ScheduledForRemoval(inVersion = "2021.1")
78   default String getDownloads() {
79     return null;
80   }
81
82   String getSinceBuild();
83
84   String getUntilBuild();
85
86   default boolean allowBundledUpdate() {
87     return false;
88   }
89
90   /**
91    * If true, this plugin is hidden from the list of installed plugins in Settings | Plugins.
92    */
93   default boolean isImplementationDetail() {
94     return false;
95   }
96
97   boolean isEnabled();
98
99   void setEnabled(boolean enabled);
100
101   @ApiStatus.Internal
102   Disposable getPluginDisposable();
103 }