IntelliJ IDEAプラグイン開発。 パート1

最近、IntelliJ IDEAのプラグインの開発に関する資料を十分に蓄積しました。これをhabrasocietyと共有します。

開発環境とインフラストラクチャ


プラグインのプログラミングを開始する前に、開発環境のデバイス、サポートされている機能とその実装、そしてもちろん、プラグインの開発に必要なIDEセットアップを検討する価値があります。

Intellij IDEAの最新バージョンは、プラグイン開発に適しています-必要なツールの完全なセットがすでに含まれています。
開発環境をセットアップするには、いくつかの手順を実行する必要があります。



その後、通常のJavaプロジェクトとしてプラグインの開発を開始できますが、内部APIのソースコードを表示し、デバッガーでその実行をトレースする追加機能があります。

アセンブリ番号


これらは、特定のプラグインが正常に機能するかどうかを判断するために統合環境で使用されるサポートされているバージョンの範囲に対する制限です。 開始および終了ビルド番号は、plugin.xmlファイルおよびその他のメタ情報に示されています。
IntelliJ IDEA 9以降、複合ビルド番号が使用されます(例:IU-90.94)。 この番号は、次の部分で構成されています。

IntelliJプラットフォームに基づく製品の1つの次のリリースブランチが作成されるたびに、ブランチ番号が1増加し、トランクの数が2増加するため、不安定なビルドは偶数、安定したビルドは奇数になります。

複合ビルド番号は、plugin.xmlファイルのsince-buildおよびuntil-buildタグで使用できます。 通常、製品IDはブランチとビルド番号のみを使用して省略されます: <idea-version since-build="94.539"/>

IntelliJプラットフォームプラグインの互換性


すべてのIntelliJプラットフォームベースの製品(IntelliJ IDEA、RubyMine、WebStorm、PhpStorm、PyCharm、およびAppCode)は、共通の基盤プラットフォームAPIを共有しています。 したがって、特定のJava機能を使用しないプラグインは、IDEA自体だけでなく、他の製品と互換性があるとマークできます。 これを行うには、plugin.xmlファイルでモジュールの依存関係を定義します。
依存関係はタグ内に配置されます。
 ,     com.intellij.modules . : 
<idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

plugin.xml, IDEA. plugin.xml , .
IntelliJ:
com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
:
com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
PhpStorm , PHP , : com.jetbrains.php .
. , Java , :
<depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
, , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

IntelliJ IDEA
– IDEA. . .


.
– jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
.IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
– :
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
Classes lib classpath.
– jar-, lib:
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


, IDEA . , IDEA .
-, , . , plugin.xml, depends . , . .


– . :
; ; .
IntelliJ IDEA.
Application getComponent(Class).

Project ( ). Project getComponent(Class).

, IDEA. Module.

, . , . , (, , ) .

, . getComponentName(). : < ><>< >.

, , ApplicationComponent. , , . , , IDEA , .

<application-components> plugin.xml.
IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
New Java Alt+Insert; New Application Component; New Application Component, OK.
IDEA , ApplicationComponent, plugin.xml, Module Tree View .

, ProjectComponent. Project, . , .

<project-components> . IDE, "New | Project Component".

ModuleComponent. . <module-components> "New | Module Component".


, : JDOMExternalizable (, ) PersistentStateComponent.
PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
JDOMExternalizable, :
(.ipr), plugin.xml «workspace» – .iws; .iml .

:
– ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
:
– writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
getComponent() - . , , initComponent().


Intellij IDEA , IDEA.
, , . , . .

.
, , , . plugin.xml:
<extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

"interface" , . "beanClass" , @Attribute . , plugin.xml.
MyBeanClass1:
public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
MyExtPoint, "key" "implementationClass" .

:
«xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
, .

, ;
, : "interface", "implementation", – , ; "beanClass", , @Attribute .


(Actions)
Intellij IDEA (actions).
– , AnAction, actionPerformed() , .

, . . .
.


– , , getService() ServiceManager. Intellij IDEA , , .

, plugin.xml. .

, .. , , applicationService, projectService moduleService .

:
( , , ) ;
:
"serviceInterface" – ; "serviceImplementaion" – .


.
plugin.xml:
<extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
: , , .

: 1 , 2 , 3 , 4 , 5 , 6 , 7 .
, com.intellij.modules . :
<idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

plugin.xml, IDEA. plugin.xml , .
IntelliJ:
com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
:
com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
PhpStorm , PHP , : com.jetbrains.php .
. , Java , :
<depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
, , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

IntelliJ IDEA
– IDEA. . .


.
– jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
.IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
– :
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
Classes lib classpath.
– jar-, lib:
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


, IDEA . , IDEA .
-, , . , plugin.xml, depends . , . .


– . :
; ; .
IntelliJ IDEA.
Application getComponent(Class).

Project ( ). Project getComponent(Class).

, IDEA. Module.

, . , . , (, , ) .

, . getComponentName(). : < ><>< >.

, , ApplicationComponent. , , . , , IDEA , .

<application-components> plugin.xml.
IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
New Java Alt+Insert; New Application Component; New Application Component, OK.
IDEA , ApplicationComponent, plugin.xml, Module Tree View .

, ProjectComponent. Project, . , .

<project-components> . IDE, "New | Project Component".

ModuleComponent. . <module-components> "New | Module Component".


, : JDOMExternalizable (, ) PersistentStateComponent.
PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
JDOMExternalizable, :
(.ipr), plugin.xml «workspace» – .iws; .iml .

:
– ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
:
– writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
getComponent() - . , , initComponent().


Intellij IDEA , IDEA.
, , . , . .

.
, , , . plugin.xml:
<extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

"interface" , . "beanClass" , @Attribute . , plugin.xml.
MyBeanClass1:
public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
MyExtPoint, "key" "implementationClass" .

:
«xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
, .

, ;
, : "interface", "implementation", – , ; "beanClass", , @Attribute .


(Actions)
Intellij IDEA (actions).
– , AnAction, actionPerformed() , .

, . . .
.


– , , getService() ServiceManager. Intellij IDEA , , .

, plugin.xml. .

, .. , , applicationService, projectService moduleService .

:
( , , ) ;
:
"serviceInterface" – ; "serviceImplementaion" – .


.
plugin.xml:
<extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
: , , .

: 1 , 2 , 3 , 4 , 5 , 6 , 7 .
, com.intellij.modules . :
<idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

plugin.xml, IDEA. plugin.xml , .
IntelliJ:
com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
:
com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
PhpStorm , PHP , : com.jetbrains.php .
. , Java , :
<depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
, , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

IntelliJ IDEA
– IDEA. . .


.
– jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
.IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
– :
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
Classes lib classpath.
– jar-, lib:
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


, IDEA . , IDEA .
-, , . , plugin.xml, depends . , . .


– . :
; ; .
IntelliJ IDEA.
Application getComponent(Class).

Project ( ). Project getComponent(Class).

, IDEA. Module.

, . , . , (, , ) .

, . getComponentName(). : < ><>< >.

, , ApplicationComponent. , , . , , IDEA , .

<application-components> plugin.xml.
IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
New Java Alt+Insert; New Application Component; New Application Component, OK.
IDEA , ApplicationComponent, plugin.xml, Module Tree View .

, ProjectComponent. Project, . , .

<project-components> . IDE, "New | Project Component".

ModuleComponent. . <module-components> "New | Module Component".


, : JDOMExternalizable (, ) PersistentStateComponent.
PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
JDOMExternalizable, :
(.ipr), plugin.xml «workspace» – .iws; .iml .

:
– ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
:
– writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
getComponent() - . , , initComponent().


Intellij IDEA , IDEA.
, , . , . .

.
, , , . plugin.xml:
<extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

"interface" , . "beanClass" , @Attribute . , plugin.xml.
MyBeanClass1:
public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
MyExtPoint, "key" "implementationClass" .

:
«xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
, .

, ;
, : "interface", "implementation", – , ; "beanClass", , @Attribute .


(Actions)
Intellij IDEA (actions).
– , AnAction, actionPerformed() , .

, . . .
.


– , , getService() ServiceManager. Intellij IDEA , , .

, plugin.xml. .

, .. , , applicationService, projectService moduleService .

:
( , , ) ;
:
"serviceInterface" – ; "serviceImplementaion" – .


.
plugin.xml:
<extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
: , , .

: 1 , 2 , 3 , 4 , 5 , 6 , 7 .
, com.intellij.modules . :
<idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

plugin.xml, IDEA. plugin.xml , .
IntelliJ:
com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
:
com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
PhpStorm , PHP , : com.jetbrains.php .
. , Java , :
<depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
, , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

IntelliJ IDEA
– IDEA. . .


.
– jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
.IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
– :
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
Classes lib classpath.
– jar-, lib:
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


, IDEA . , IDEA .
-, , . , plugin.xml, depends . , . .


– . :
; ; .
IntelliJ IDEA.
Application getComponent(Class).

Project ( ). Project getComponent(Class).

, IDEA. Module.

, . , . , (, , ) .

, . getComponentName(). : < ><>< >.

, , ApplicationComponent. , , . , , IDEA , .

<application-components> plugin.xml.
IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
New Java Alt+Insert; New Application Component; New Application Component, OK.
IDEA , ApplicationComponent, plugin.xml, Module Tree View .

, ProjectComponent. Project, . , .

<project-components> . IDE, "New | Project Component".

ModuleComponent. . <module-components> "New | Module Component".


, : JDOMExternalizable (, ) PersistentStateComponent.
PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
JDOMExternalizable, :
(.ipr), plugin.xml «workspace» – .iws; .iml .

:
– ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
:
– writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
getComponent() - . , , initComponent().


Intellij IDEA , IDEA.
, , . , . .

.
, , , . plugin.xml:
<extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

"interface" , . "beanClass" , @Attribute . , plugin.xml.
MyBeanClass1:
public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
MyExtPoint, "key" "implementationClass" .

:
«xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
, .

, ;
, : "interface", "implementation", – , ; "beanClass", , @Attribute .


(Actions)
Intellij IDEA (actions).
– , AnAction, actionPerformed() , .

, . . .
.


– , , getService() ServiceManager. Intellij IDEA , , .

, plugin.xml. .

, .. , , applicationService, projectService moduleService .

:
( , , ) ;
:
"serviceInterface" – ; "serviceImplementaion" – .


.
plugin.xml:
<extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
: , , .

: 1 , 2 , 3 , 4 , 5 , 6 , 7 .
 ,     com.intellij.modules . : 
<idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

plugin.xml, IDEA. plugin.xml , .
IntelliJ:
com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
:
com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
PhpStorm , PHP , : com.jetbrains.php .
. , Java , :
<depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
, , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

IntelliJ IDEA
– IDEA. . .


.
– jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
.IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
– :
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
Classes lib classpath.
– jar-, lib:
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


, IDEA . , IDEA .
-, , . , plugin.xml, depends . , . .


– . :
; ; .
IntelliJ IDEA.
Application getComponent(Class).

Project ( ). Project getComponent(Class).

, IDEA. Module.

, . , . , (, , ) .

, . getComponentName(). : < ><>< >.

, , ApplicationComponent. , , . , , IDEA , .

<application-components> plugin.xml.
IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
New Java Alt+Insert; New Application Component; New Application Component, OK.
IDEA , ApplicationComponent, plugin.xml, Module Tree View .

, ProjectComponent. Project, . , .

<project-components> . IDE, "New | Project Component".

ModuleComponent. . <module-components> "New | Module Component".


, : JDOMExternalizable (, ) PersistentStateComponent.
PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
JDOMExternalizable, :
(.ipr), plugin.xml «workspace» – .iws; .iml .

:
– ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
:
– writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
getComponent() - . , , initComponent().


Intellij IDEA , IDEA.
, , . , . .

.
, , , . plugin.xml:
<extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

"interface" , . "beanClass" , @Attribute . , plugin.xml.
MyBeanClass1:
public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
MyExtPoint, "key" "implementationClass" .

:
«xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
, .

, ;
, : "interface", "implementation", – , ; "beanClass", , @Attribute .


(Actions)
Intellij IDEA (actions).
– , AnAction, actionPerformed() , .

, . . .
.


– , , getService() ServiceManager. Intellij IDEA , , .

, plugin.xml. .

, .. , , applicationService, projectService moduleService .

:
( , , ) ;
:
"serviceInterface" – ; "serviceImplementaion" – .


.
plugin.xml:
<extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
: , , .

: 1 , 2 , 3 , 4 , 5 , 6 , 7 .
, com.intellij.modules . :
<idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

plugin.xml, IDEA. plugin.xml , .
IntelliJ:
com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
:
com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
PhpStorm , PHP , : com.jetbrains.php .
. , Java , :
<depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
, , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

IntelliJ IDEA
– IDEA. . .


.
– jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
.IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
– :
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
Classes lib classpath.
– jar-, lib:
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


, IDEA . , IDEA .
-, , . , plugin.xml, depends . , . .


– . :
; ; .
IntelliJ IDEA.
Application getComponent(Class).

Project ( ). Project getComponent(Class).

, IDEA. Module.

, . , . , (, , ) .

, . getComponentName(). : < ><>< >.

, , ApplicationComponent. , , . , , IDEA , .

<application-components> plugin.xml.
IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
New Java Alt+Insert; New Application Component; New Application Component, OK.
IDEA , ApplicationComponent, plugin.xml, Module Tree View .

, ProjectComponent. Project, . , .

<project-components> . IDE, "New | Project Component".

ModuleComponent. . <module-components> "New | Module Component".


, : JDOMExternalizable (, ) PersistentStateComponent.
PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
JDOMExternalizable, :
(.ipr), plugin.xml «workspace» – .iws; .iml .

:
– ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
:
– writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
getComponent() - . , , initComponent().


Intellij IDEA , IDEA.
, , . , . .

.
, , , . plugin.xml:
<extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

"interface" , . "beanClass" , @Attribute . , plugin.xml.
MyBeanClass1:
public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
MyExtPoint, "key" "implementationClass" .

:
«xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
, .

, ;
, : "interface", "implementation", – , ; "beanClass", , @Attribute .


(Actions)
Intellij IDEA (actions).
– , AnAction, actionPerformed() , .

, . . .
.


– , , getService() ServiceManager. Intellij IDEA , , .

, plugin.xml. .

, .. , , applicationService, projectService moduleService .

:
( , , ) ;
:
"serviceInterface" – ; "serviceImplementaion" – .


.
plugin.xml:
<extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
: , , .

: 1 , 2 , 3 , 4 , 5 , 6 , 7 .

, com.intellij.modules . :
<idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

plugin.xml, IDEA. plugin.xml , .
IntelliJ:
com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
:
com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
PhpStorm , PHP , : com.jetbrains.php .
. , Java , :
<depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
, , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

IntelliJ IDEA
– IDEA. . .


.
– jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
.IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
– :
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
Classes lib classpath.
– jar-, lib:
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


, IDEA . , IDEA .
-, , . , plugin.xml, depends . , . .


– . :
; ; .
IntelliJ IDEA.
Application getComponent(Class).

Project ( ). Project getComponent(Class).

, IDEA. Module.

, . , . , (, , ) .

, . getComponentName(). : < ><>< >.

, , ApplicationComponent. , , . , , IDEA , .

<application-components> plugin.xml.
IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
New Java Alt+Insert; New Application Component; New Application Component, OK.
IDEA , ApplicationComponent, plugin.xml, Module Tree View .

, ProjectComponent. Project, . , .

<project-components> . IDE, "New | Project Component".

ModuleComponent. . <module-components> "New | Module Component".


, : JDOMExternalizable (, ) PersistentStateComponent.
PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
JDOMExternalizable, :
(.ipr), plugin.xml «workspace» – .iws; .iml .

:
– ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
:
– writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
getComponent() - . , , initComponent().


Intellij IDEA , IDEA.
, , . , . .

.
, , , . plugin.xml:
<extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

"interface" , . "beanClass" , @Attribute . , plugin.xml.
MyBeanClass1:
public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
MyExtPoint, "key" "implementationClass" .

:
«xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
, .

, ;
, : "interface", "implementation", – , ; "beanClass", , @Attribute .


(Actions)
Intellij IDEA (actions).
– , AnAction, actionPerformed() , .

, . . .
.


– , , getService() ServiceManager. Intellij IDEA , , .

, plugin.xml. .

, .. , , applicationService, projectService moduleService .

:
( , , ) ;
:
"serviceInterface" – ; "serviceImplementaion" – .


.
plugin.xml:
<extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
: , , .

: 1 , 2 , 3 , 4 , 5 , 6 , 7 .

, com.intellij.modules . :
<idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

plugin.xml, IDEA. plugin.xml , .
IntelliJ:
com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
:
com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
PhpStorm , PHP , : com.jetbrains.php .
. , Java , :
<depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
, , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

IntelliJ IDEA
– IDEA. . .


.
– jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
.IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
– :
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
Classes lib classpath.
– jar-, lib:
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


, IDEA . , IDEA .
-, , . , plugin.xml, depends . , . .


– . :
; ; .
IntelliJ IDEA.
Application getComponent(Class).

Project ( ). Project getComponent(Class).

, IDEA. Module.

, . , . , (, , ) .

, . getComponentName(). : < ><>< >.

, , ApplicationComponent. , , . , , IDEA , .

<application-components> plugin.xml.
IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
New Java Alt+Insert; New Application Component; New Application Component, OK.
IDEA , ApplicationComponent, plugin.xml, Module Tree View .

, ProjectComponent. Project, . , .

<project-components> . IDE, "New | Project Component".

ModuleComponent. . <module-components> "New | Module Component".


, : JDOMExternalizable (, ) PersistentStateComponent.
PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
JDOMExternalizable, :
(.ipr), plugin.xml «workspace» – .iws; .iml .

:
– ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
:
– writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
getComponent() - . , , initComponent().


Intellij IDEA , IDEA.
, , . , . .

.
, , , . plugin.xml:
<extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

"interface" , . "beanClass" , @Attribute . , plugin.xml.
MyBeanClass1:
public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
MyExtPoint, "key" "implementationClass" .

:
«xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
, .

, ;
, : "interface", "implementation", – , ; "beanClass", , @Attribute .


(Actions)
Intellij IDEA (actions).
– , AnAction, actionPerformed() , .

, . . .
.


– , , getService() ServiceManager. Intellij IDEA , , .

, plugin.xml. .

, .. , , applicationService, projectService moduleService .

:
( , , ) ;
:
"serviceInterface" – ; "serviceImplementaion" – .


.
plugin.xml:
<extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
: , , .

: 1 , 2 , 3 , 4 , 5 , 6 , 7 .
, com.intellij.modules . :
<idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

plugin.xml, IDEA. plugin.xml , .
IntelliJ:
com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
:
com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
PhpStorm , PHP , : com.jetbrains.php .
. , Java , :
<depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
, , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

IntelliJ IDEA
– IDEA. . .


.
– jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
.IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
– :
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
Classes lib classpath.
– jar-, lib:
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


, IDEA . , IDEA .
-, , . , plugin.xml, depends . , . .


– . :
; ; .
IntelliJ IDEA.
Application getComponent(Class).

Project ( ). Project getComponent(Class).

, IDEA. Module.

, . , . , (, , ) .

, . getComponentName(). : < ><>< >.

, , ApplicationComponent. , , . , , IDEA , .

<application-components> plugin.xml.
IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
New Java Alt+Insert; New Application Component; New Application Component, OK.
IDEA , ApplicationComponent, plugin.xml, Module Tree View .

, ProjectComponent. Project, . , .

<project-components> . IDE, "New | Project Component".

ModuleComponent. . <module-components> "New | Module Component".


, : JDOMExternalizable (, ) PersistentStateComponent.
PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
JDOMExternalizable, :
(.ipr), plugin.xml «workspace» – .iws; .iml .

:
– ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
:
– writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
getComponent() - . , , initComponent().


Intellij IDEA , IDEA.
, , . , . .

.
, , , . plugin.xml:
<extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

"interface" , . "beanClass" , @Attribute . , plugin.xml.
MyBeanClass1:
public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
MyExtPoint, "key" "implementationClass" .

:
«xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
, .

, ;
, : "interface", "implementation", – , ; "beanClass", , @Attribute .


(Actions)
Intellij IDEA (actions).
– , AnAction, actionPerformed() , .

, . . .
.


– , , getService() ServiceManager. Intellij IDEA , , .

, plugin.xml. .

, .. , , applicationService, projectService moduleService .

:
( , , ) ;
:
"serviceInterface" – ; "serviceImplementaion" – .


.
plugin.xml:
<extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
: , , .

: 1 , 2 , 3 , 4 , 5 , 6 , 7 .
, com.intellij.modules . :
<idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

plugin.xml, IDEA. plugin.xml , .
IntelliJ:
com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
:
com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
PhpStorm , PHP , : com.jetbrains.php .
. , Java , :
<depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
, , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

IntelliJ IDEA
– IDEA. . .


.
– jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
.IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
– :
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
Classes lib classpath.
– jar-, lib:
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


, IDEA . , IDEA .
-, , . , plugin.xml, depends . , . .


– . :
; ; .
IntelliJ IDEA.
Application getComponent(Class).

Project ( ). Project getComponent(Class).

, IDEA. Module.

, . , . , (, , ) .

, . getComponentName(). : < ><>< >.

, , ApplicationComponent. , , . , , IDEA , .

<application-components> plugin.xml.
IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
New Java Alt+Insert; New Application Component; New Application Component, OK.
IDEA , ApplicationComponent, plugin.xml, Module Tree View .

, ProjectComponent. Project, . , .

<project-components> . IDE, "New | Project Component".

ModuleComponent. . <module-components> "New | Module Component".


, : JDOMExternalizable (, ) PersistentStateComponent.
PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
JDOMExternalizable, :
(.ipr), plugin.xml «workspace» – .iws; .iml .

:
– ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
:
– writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
getComponent() - . , , initComponent().


Intellij IDEA , IDEA.
, , . , . .

.
, , , . plugin.xml:
<extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

"interface" , . "beanClass" , @Attribute . , plugin.xml.
MyBeanClass1:
public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
MyExtPoint, "key" "implementationClass" .

:
«xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
, .

, ;
, : "interface", "implementation", – , ; "beanClass", , @Attribute .


(Actions)
Intellij IDEA (actions).
– , AnAction, actionPerformed() , .

, . . .
.


– , , getService() ServiceManager. Intellij IDEA , , .

, plugin.xml. .

, .. , , applicationService, projectService moduleService .

:
( , , ) ;
:
"serviceInterface" – ; "serviceImplementaion" – .


.
plugin.xml:
<extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
: , , .

: 1 , 2 , 3 , 4 , 5 , 6 , 7 .
 ,     com.intellij.modules . : 
<idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

plugin.xml, IDEA. plugin.xml , .
IntelliJ:
com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
:
com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
PhpStorm , PHP , : com.jetbrains.php .
. , Java , :
<depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
, , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

IntelliJ IDEA
– IDEA. . .


.
– jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
.IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
– :
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
Classes lib classpath.
– jar-, lib:
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


, IDEA . , IDEA .
-, , . , plugin.xml, depends . , . .


– . :
; ; .
IntelliJ IDEA.
Application getComponent(Class).

Project ( ). Project getComponent(Class).

, IDEA. Module.

, . , . , (, , ) .

, . getComponentName(). : < ><>< >.

, , ApplicationComponent. , , . , , IDEA , .

<application-components> plugin.xml.
IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
New Java Alt+Insert; New Application Component; New Application Component, OK.
IDEA , ApplicationComponent, plugin.xml, Module Tree View .

, ProjectComponent. Project, . , .

<project-components> . IDE, "New | Project Component".

ModuleComponent. . <module-components> "New | Module Component".


, : JDOMExternalizable (, ) PersistentStateComponent.
PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
JDOMExternalizable, :
(.ipr), plugin.xml «workspace» – .iws; .iml .

:
– ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
:
– writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
getComponent() - . , , initComponent().


Intellij IDEA , IDEA.
, , . , . .

.
, , , . plugin.xml:
<extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

"interface" , . "beanClass" , @Attribute . , plugin.xml.
MyBeanClass1:
public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
MyExtPoint, "key" "implementationClass" .

:
«xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
, .

, ;
, : "interface", "implementation", – , ; "beanClass", , @Attribute .


(Actions)
Intellij IDEA (actions).
– , AnAction, actionPerformed() , .

, . . .
.


– , , getService() ServiceManager. Intellij IDEA , , .

, plugin.xml. .

, .. , , applicationService, projectService moduleService .

:
( , , ) ;
:
"serviceInterface" – ; "serviceImplementaion" – .


.
plugin.xml:
<extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
: , , .

: 1 , 2 , 3 , 4 , 5 , 6 , 7 .
, com.intellij.modules . :
<idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

plugin.xml, IDEA. plugin.xml , .
IntelliJ:
com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
:
com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
PhpStorm , PHP , : com.jetbrains.php .
. , Java , :
<depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
, , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

IntelliJ IDEA
– IDEA. . .


.
– jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
.IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
– :
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
Classes lib classpath.
– jar-, lib:
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


, IDEA . , IDEA .
-, , . , plugin.xml, depends . , . .


– . :
; ; .
IntelliJ IDEA.
Application getComponent(Class).

Project ( ). Project getComponent(Class).

, IDEA. Module.

, . , . , (, , ) .

, . getComponentName(). : < ><>< >.

, , ApplicationComponent. , , . , , IDEA , .

<application-components> plugin.xml.
IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
New Java Alt+Insert; New Application Component; New Application Component, OK.
IDEA , ApplicationComponent, plugin.xml, Module Tree View .

, ProjectComponent. Project, . , .

<project-components> . IDE, "New | Project Component".

ModuleComponent. . <module-components> "New | Module Component".


, : JDOMExternalizable (, ) PersistentStateComponent.
PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
JDOMExternalizable, :
(.ipr), plugin.xml «workspace» – .iws; .iml .

:
– ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
:
– writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
getComponent() - . , , initComponent().


Intellij IDEA , IDEA.
, , . , . .

.
, , , . plugin.xml:
<extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

"interface" , . "beanClass" , @Attribute . , plugin.xml.
MyBeanClass1:
public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
MyExtPoint, "key" "implementationClass" .

:
«xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
, .

, ;
, : "interface", "implementation", – , ; "beanClass", , @Attribute .


(Actions)
Intellij IDEA (actions).
– , AnAction, actionPerformed() , .

, . . .
.


– , , getService() ServiceManager. Intellij IDEA , , .

, plugin.xml. .

, .. , , applicationService, projectService moduleService .

:
( , , ) ;
:
"serviceInterface" – ; "serviceImplementaion" – .


.
plugin.xml:
<extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
: , , .

: 1 , 2 , 3 , 4 , 5 , 6 , 7 .
 ,     com.intellij.modules . : 
<idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

plugin.xml, IDEA. plugin.xml , .
IntelliJ:
com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
:
com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
PhpStorm , PHP , : com.jetbrains.php .
. , Java , :
<depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
, , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

IntelliJ IDEA
– IDEA. . .


.
– jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
.IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
– :
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
Classes lib classpath.
– jar-, lib:
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


, IDEA . , IDEA .
-, , . , plugin.xml, depends . , . .


– . :
; ; .
IntelliJ IDEA.
Application getComponent(Class).

Project ( ). Project getComponent(Class).

, IDEA. Module.

, . , . , (, , ) .

, . getComponentName(). : < ><>< >.

, , ApplicationComponent. , , . , , IDEA , .

<application-components> plugin.xml.
IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
New Java Alt+Insert; New Application Component; New Application Component, OK.
IDEA , ApplicationComponent, plugin.xml, Module Tree View .

, ProjectComponent. Project, . , .

<project-components> . IDE, "New | Project Component".

ModuleComponent. . <module-components> "New | Module Component".


, : JDOMExternalizable (, ) PersistentStateComponent.
PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
JDOMExternalizable, :
(.ipr), plugin.xml «workspace» – .iws; .iml .

:
– ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
:
– writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
getComponent() - . , , initComponent().


Intellij IDEA , IDEA.
, , . , . .

.
, , , . plugin.xml:
<extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

"interface" , . "beanClass" , @Attribute . , plugin.xml.
MyBeanClass1:
public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
MyExtPoint, "key" "implementationClass" .

:
«xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
, .

, ;
, : "interface", "implementation", – , ; "beanClass", , @Attribute .


(Actions)
Intellij IDEA (actions).
– , AnAction, actionPerformed() , .

, . . .
.


– , , getService() ServiceManager. Intellij IDEA , , .

, plugin.xml. .

, .. , , applicationService, projectService moduleService .

:
( , , ) ;
:
"serviceInterface" – ; "serviceImplementaion" – .


.
plugin.xml:
<extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
: , , .

: 1 , 2 , 3 , 4 , 5 , 6 , 7 .
, com.intellij.modules . :
<idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

plugin.xml, IDEA. plugin.xml , .
IntelliJ:
com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
:
com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
PhpStorm , PHP , : com.jetbrains.php .
. , Java , :
<depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
, , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

IntelliJ IDEA
– IDEA. . .


.
– jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
.IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
– :
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
Classes lib classpath.
– jar-, lib:
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


, IDEA . , IDEA .
-, , . , plugin.xml, depends . , . .


– . :
; ; .
IntelliJ IDEA.
Application getComponent(Class).

Project ( ). Project getComponent(Class).

, IDEA. Module.

, . , . , (, , ) .

, . getComponentName(). : < ><>< >.

, , ApplicationComponent. , , . , , IDEA , .

<application-components> plugin.xml.
IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
New Java Alt+Insert; New Application Component; New Application Component, OK.
IDEA , ApplicationComponent, plugin.xml, Module Tree View .

, ProjectComponent. Project, . , .

<project-components> . IDE, "New | Project Component".

ModuleComponent. . <module-components> "New | Module Component".


, : JDOMExternalizable (, ) PersistentStateComponent.
PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
JDOMExternalizable, :
(.ipr), plugin.xml «workspace» – .iws; .iml .

:
– ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
:
– writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
getComponent() - . , , initComponent().


Intellij IDEA , IDEA.
, , . , . .

.
, , , . plugin.xml:
<extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

"interface" , . "beanClass" , @Attribute . , plugin.xml.
MyBeanClass1:
public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
MyExtPoint, "key" "implementationClass" .

:
«xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
, .

, ;
, : "interface", "implementation", – , ; "beanClass", , @Attribute .


(Actions)
Intellij IDEA (actions).
– , AnAction, actionPerformed() , .

, . . .
.


– , , getService() ServiceManager. Intellij IDEA , , .

, plugin.xml. .

, .. , , applicationService, projectService moduleService .

:
( , , ) ;
:
"serviceInterface" – ; "serviceImplementaion" – .


.
plugin.xml:
<extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
: , , .

: 1 , 2 , 3 , 4 , 5 , 6 , 7 .
 ,     com.intellij.modules . : 
<idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

plugin.xml, IDEA. plugin.xml , .
IntelliJ:
com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
:
com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
PhpStorm , PHP , : com.jetbrains.php .
. , Java , :
<depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
, , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

IntelliJ IDEA
– IDEA. . .


.
– jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
.IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
– :
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
Classes lib classpath.
– jar-, lib:
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


, IDEA . , IDEA .
-, , . , plugin.xml, depends . , . .


– . :
; ; .
IntelliJ IDEA.
Application getComponent(Class).

Project ( ). Project getComponent(Class).

, IDEA. Module.

, . , . , (, , ) .

, . getComponentName(). : < ><>< >.

, , ApplicationComponent. , , . , , IDEA , .

<application-components> plugin.xml.
IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
New Java Alt+Insert; New Application Component; New Application Component, OK.
IDEA , ApplicationComponent, plugin.xml, Module Tree View .

, ProjectComponent. Project, . , .

<project-components> . IDE, "New | Project Component".

ModuleComponent. . <module-components> "New | Module Component".


, : JDOMExternalizable (, ) PersistentStateComponent.
PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
JDOMExternalizable, :
(.ipr), plugin.xml «workspace» – .iws; .iml .

:
– ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
:
– writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
getComponent() - . , , initComponent().


Intellij IDEA , IDEA.
, , . , . .

.
, , , . plugin.xml:
<extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

"interface" , . "beanClass" , @Attribute . , plugin.xml.
MyBeanClass1:
public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
MyExtPoint, "key" "implementationClass" .

:
«xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
, .

, ;
, : "interface", "implementation", – , ; "beanClass", , @Attribute .


(Actions)
Intellij IDEA (actions).
– , AnAction, actionPerformed() , .

, . . .
.


– , , getService() ServiceManager. Intellij IDEA , , .

, plugin.xml. .

, .. , , applicationService, projectService moduleService .

:
( , , ) ;
:
"serviceInterface" – ; "serviceImplementaion" – .


.
plugin.xml:
<extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
: , , .

: 1 , 2 , 3 , 4 , 5 , 6 , 7 .
, com.intellij.modules . :
<idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

plugin.xml, IDEA. plugin.xml , .
IntelliJ:
com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
:
com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
PhpStorm , PHP , : com.jetbrains.php .
. , Java , :
<depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
, , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

IntelliJ IDEA
– IDEA. . .


.
– jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
.IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
– :
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
Classes lib classpath.
– jar-, lib:
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


, IDEA . , IDEA .
-, , . , plugin.xml, depends . , . .


– . :
; ; .
IntelliJ IDEA.
Application getComponent(Class).

Project ( ). Project getComponent(Class).

, IDEA. Module.

, . , . , (, , ) .

, . getComponentName(). : < ><>< >.

, , ApplicationComponent. , , . , , IDEA , .

<application-components> plugin.xml.
IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
New Java Alt+Insert; New Application Component; New Application Component, OK.
IDEA , ApplicationComponent, plugin.xml, Module Tree View .

, ProjectComponent. Project, . , .

<project-components> . IDE, "New | Project Component".

ModuleComponent. . <module-components> "New | Module Component".


, : JDOMExternalizable (, ) PersistentStateComponent.
PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
JDOMExternalizable, :
(.ipr), plugin.xml «workspace» – .iws; .iml .

:
– ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
:
– writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
getComponent() - . , , initComponent().


Intellij IDEA , IDEA.
, , . , . .

.
, , , . plugin.xml:
<extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

"interface" , . "beanClass" , @Attribute . , plugin.xml.
MyBeanClass1:
public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
MyExtPoint, "key" "implementationClass" .

:
«xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
, .

, ;
, : "interface", "implementation", – , ; "beanClass", , @Attribute .


(Actions)
Intellij IDEA (actions).
– , AnAction, actionPerformed() , .

, . . .
.


– , , getService() ServiceManager. Intellij IDEA , , .

, plugin.xml. .

, .. , , applicationService, projectService moduleService .

:
( , , ) ;
:
"serviceInterface" – ; "serviceImplementaion" – .


.
plugin.xml:
<extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
: , , .

: 1 , 2 , 3 , 4 , 5 , 6 , 7 .
, com.intellij.modules . :
<idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

plugin.xml, IDEA. plugin.xml , .
IntelliJ:
com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
:
com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
PhpStorm , PHP , : com.jetbrains.php .
. , Java , :
<depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
, , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

IntelliJ IDEA
– IDEA. . .


.
– jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
.IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
– :
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
Classes lib classpath.
– jar-, lib:
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


, IDEA . , IDEA .
-, , . , plugin.xml, depends . , . .


– . :
; ; .
IntelliJ IDEA.
Application getComponent(Class).

Project ( ). Project getComponent(Class).

, IDEA. Module.

, . , . , (, , ) .

, . getComponentName(). : < ><>< >.

, , ApplicationComponent. , , . , , IDEA , .

<application-components> plugin.xml.
IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
New Java Alt+Insert; New Application Component; New Application Component, OK.
IDEA , ApplicationComponent, plugin.xml, Module Tree View .

, ProjectComponent. Project, . , .

<project-components> . IDE, "New | Project Component".

ModuleComponent. . <module-components> "New | Module Component".


, : JDOMExternalizable (, ) PersistentStateComponent.
PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
JDOMExternalizable, :
(.ipr), plugin.xml «workspace» – .iws; .iml .

:
– ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
:
– writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
getComponent() - . , , initComponent().


Intellij IDEA , IDEA.
, , . , . .

.
, , , . plugin.xml:
<extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

"interface" , . "beanClass" , @Attribute . , plugin.xml.
MyBeanClass1:
public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
MyExtPoint, "key" "implementationClass" .

:
«xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
, .

, ;
, : "interface", "implementation", – , ; "beanClass", , @Attribute .


(Actions)
Intellij IDEA (actions).
– , AnAction, actionPerformed() , .

, . . .
.


– , , getService() ServiceManager. Intellij IDEA , , .

, plugin.xml. .

, .. , , applicationService, projectService moduleService .

:
( , , ) ;
:
"serviceInterface" – ; "serviceImplementaion" – .


.
plugin.xml:
<extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
: , , .

: 1 , 2 , 3 , 4 , 5 , 6 , 7 .
, com.intellij.modules . :
<idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

plugin.xml, IDEA. plugin.xml , .
IntelliJ:
com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
:
com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
PhpStorm , PHP , : com.jetbrains.php .
. , Java , :
<depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
, , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

IntelliJ IDEA
– IDEA. . .


.
– jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
.IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
– :
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
Classes lib classpath.
– jar-, lib:
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


, IDEA . , IDEA .
-, , . , plugin.xml, depends . , . .


– . :
; ; .
IntelliJ IDEA.
Application getComponent(Class).

Project ( ). Project getComponent(Class).

, IDEA. Module.

, . , . , (, , ) .

, . getComponentName(). : < ><>< >.

, , ApplicationComponent. , , . , , IDEA , .

<application-components> plugin.xml.
IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
New Java Alt+Insert; New Application Component; New Application Component, OK.
IDEA , ApplicationComponent, plugin.xml, Module Tree View .

, ProjectComponent. Project, . , .

<project-components> . IDE, "New | Project Component".

ModuleComponent. . <module-components> "New | Module Component".


, : JDOMExternalizable (, ) PersistentStateComponent.
PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
JDOMExternalizable, :
(.ipr), plugin.xml «workspace» – .iws; .iml .

:
– ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
:
– writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
getComponent() - . , , initComponent().


Intellij IDEA , IDEA.
, , . , . .

.
, , , . plugin.xml:
<extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

"interface" , . "beanClass" , @Attribute . , plugin.xml.
MyBeanClass1:
public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
MyExtPoint, "key" "implementationClass" .

:
«xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
, .

, ;
, : "interface", "implementation", – , ; "beanClass", , @Attribute .


(Actions)
Intellij IDEA (actions).
– , AnAction, actionPerformed() , .

, . . .
.


– , , getService() ServiceManager. Intellij IDEA , , .

, plugin.xml. .

, .. , , applicationService, projectService moduleService .

:
( , , ) ;
:
"serviceInterface" – ; "serviceImplementaion" – .


.
plugin.xml:
<extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
: , , .

: 1 , 2 , 3 , 4 , 5 , 6 , 7 .
, com.intellij.modules . :
<idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

plugin.xml, IDEA. plugin.xml , .
IntelliJ:
com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
:
com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
PhpStorm , PHP , : com.jetbrains.php .
. , Java , :
<depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
, , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

IntelliJ IDEA
– IDEA. . .


.
– jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
.IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
– :
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
Classes lib classpath.
– jar-, lib:
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


, IDEA . , IDEA .
-, , . , plugin.xml, depends . , . .


– . :
; ; .
IntelliJ IDEA.
Application getComponent(Class).

Project ( ). Project getComponent(Class).

, IDEA. Module.

, . , . , (, , ) .

, . getComponentName(). : < ><>< >.

, , ApplicationComponent. , , . , , IDEA , .

<application-components> plugin.xml.
IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
New Java Alt+Insert; New Application Component; New Application Component, OK.
IDEA , ApplicationComponent, plugin.xml, Module Tree View .

, ProjectComponent. Project, . , .

<project-components> . IDE, "New | Project Component".

ModuleComponent. . <module-components> "New | Module Component".


, : JDOMExternalizable (, ) PersistentStateComponent.
PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
JDOMExternalizable, :
(.ipr), plugin.xml «workspace» – .iws; .iml .

:
– ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
:
– writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
getComponent() - . , , initComponent().


Intellij IDEA , IDEA.
, , . , . .

.
, , , . plugin.xml:
<extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

"interface" , . "beanClass" , @Attribute . , plugin.xml.
MyBeanClass1:
public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
MyExtPoint, "key" "implementationClass" .

:
«xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
, .

, ;
, : "interface", "implementation", – , ; "beanClass", , @Attribute .


(Actions)
Intellij IDEA (actions).
– , AnAction, actionPerformed() , .

, . . .
.


– , , getService() ServiceManager. Intellij IDEA , , .

, plugin.xml. .

, .. , , applicationService, projectService moduleService .

:
( , , ) ;
:
"serviceInterface" – ; "serviceImplementaion" – .


.
plugin.xml:
<extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
: , , .

: 1 , 2 , 3 , 4 , 5 , 6 , 7 .
, com.intellij.modules . :
<idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

plugin.xml, IDEA. plugin.xml , .
IntelliJ:
com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
:
com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
PhpStorm , PHP , : com.jetbrains.php .
. , Java , :
<depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
, , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

IntelliJ IDEA
– IDEA. . .


.
– jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
.IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
– :
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
Classes lib classpath.
– jar-, lib:
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


, IDEA . , IDEA .
-, , . , plugin.xml, depends . , . .


– . :
; ; .
IntelliJ IDEA.
Application getComponent(Class).

Project ( ). Project getComponent(Class).

, IDEA. Module.

, . , . , (, , ) .

, . getComponentName(). : < ><>< >.

, , ApplicationComponent. , , . , , IDEA , .

<application-components> plugin.xml.
IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
New Java Alt+Insert; New Application Component; New Application Component, OK.
IDEA , ApplicationComponent, plugin.xml, Module Tree View .

, ProjectComponent. Project, . , .

<project-components> . IDE, "New | Project Component".

ModuleComponent. . <module-components> "New | Module Component".


, : JDOMExternalizable (, ) PersistentStateComponent.
PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
JDOMExternalizable, :
(.ipr), plugin.xml «workspace» – .iws; .iml .

:
– ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
:
– writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
getComponent() - . , , initComponent().


Intellij IDEA , IDEA.
, , . , . .

.
, , , . plugin.xml:
<extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

"interface" , . "beanClass" , @Attribute . , plugin.xml.
MyBeanClass1:
public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
MyExtPoint, "key" "implementationClass" .

:
«xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
, .

, ;
, : "interface", "implementation", – , ; "beanClass", , @Attribute .


(Actions)
Intellij IDEA (actions).
– , AnAction, actionPerformed() , .

, . . .
.


– , , getService() ServiceManager. Intellij IDEA , , .

, plugin.xml. .

, .. , , applicationService, projectService moduleService .

:
( , , ) ;
:
"serviceInterface" – ; "serviceImplementaion" – .


.
plugin.xml:
<extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
: , , .

: 1 , 2 , 3 , 4 , 5 , 6 , 7 .
  1. , com.intellij.modules . :
    <idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

    plugin.xml, IDEA. plugin.xml , .
    IntelliJ:
    com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
    :
    com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
    PhpStorm , PHP , : com.jetbrains.php .
    . , Java , :
    <depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
    , , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

    IntelliJ IDEA
    – IDEA. . .


    .
    – jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
    .IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
    – :
    .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
    Classes lib classpath.
    – jar-, lib:
    .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


    , IDEA . , IDEA .
    -, , . , plugin.xml, depends . , . .


    – . :
    ; ; .
    IntelliJ IDEA.
    Application getComponent(Class).

    Project ( ). Project getComponent(Class).

    , IDEA. Module.

    , . , . , (, , ) .

    , . getComponentName(). : < ><>< >.

    , , ApplicationComponent. , , . , , IDEA , .

    <application-components> plugin.xml.
    IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
    New Java Alt+Insert; New Application Component; New Application Component, OK.
    IDEA , ApplicationComponent, plugin.xml, Module Tree View .

    , ProjectComponent. Project, . , .

    <project-components> . IDE, "New | Project Component".

    ModuleComponent. . <module-components> "New | Module Component".


    , : JDOMExternalizable (, ) PersistentStateComponent.
    PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
    JDOMExternalizable, :
    (.ipr), plugin.xml «workspace» – .iws; .iml .

    :
    – ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
    :
    – writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
    getComponent() - . , , initComponent().


    Intellij IDEA , IDEA.
    , , . , . .

    .
    , , , . plugin.xml:
    <extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

    "interface" , . "beanClass" , @Attribute . , plugin.xml.
    MyBeanClass1:
    public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
    MyExtPoint, "key" "implementationClass" .

    :
    «xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
    , .

    , ;
    , : "interface", "implementation", – , ; "beanClass", , @Attribute .


    (Actions)
    Intellij IDEA (actions).
    – , AnAction, actionPerformed() , .

    , . . .
    .


    – , , getService() ServiceManager. Intellij IDEA , , .

    , plugin.xml. .

    , .. , , applicationService, projectService moduleService .

    :
    ( , , ) ;
    :
    "serviceInterface" – ; "serviceImplementaion" – .


    .
    plugin.xml:
    <extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
    : , , .

    : 1 , 2 , 3 , 4 , 5 , 6 , 7 .
  2. , com.intellij.modules . :
    <idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

    plugin.xml, IDEA. plugin.xml , .
    IntelliJ:
    com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
    :
    com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
    PhpStorm , PHP , : com.jetbrains.php .
    . , Java , :
    <depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
    , , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

    IntelliJ IDEA
    – IDEA. . .


    .
    – jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
    .IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
    – :
    .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
    Classes lib classpath.
    – jar-, lib:
    .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


    , IDEA . , IDEA .
    -, , . , plugin.xml, depends . , . .


    – . :
    ; ; .
    IntelliJ IDEA.
    Application getComponent(Class).

    Project ( ). Project getComponent(Class).

    , IDEA. Module.

    , . , . , (, , ) .

    , . getComponentName(). : < ><>< >.

    , , ApplicationComponent. , , . , , IDEA , .

    <application-components> plugin.xml.
    IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
    New Java Alt+Insert; New Application Component; New Application Component, OK.
    IDEA , ApplicationComponent, plugin.xml, Module Tree View .

    , ProjectComponent. Project, . , .

    <project-components> . IDE, "New | Project Component".

    ModuleComponent. . <module-components> "New | Module Component".


    , : JDOMExternalizable (, ) PersistentStateComponent.
    PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
    JDOMExternalizable, :
    (.ipr), plugin.xml «workspace» – .iws; .iml .

    :
    – ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
    :
    – writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
    getComponent() - . , , initComponent().


    Intellij IDEA , IDEA.
    , , . , . .

    .
    , , , . plugin.xml:
    <extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

    "interface" , . "beanClass" , @Attribute . , plugin.xml.
    MyBeanClass1:
    public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
    MyExtPoint, "key" "implementationClass" .

    :
    «xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
    , .

    , ;
    , : "interface", "implementation", – , ; "beanClass", , @Attribute .


    (Actions)
    Intellij IDEA (actions).
    – , AnAction, actionPerformed() , .

    , . . .
    .


    – , , getService() ServiceManager. Intellij IDEA , , .

    , plugin.xml. .

    , .. , , applicationService, projectService moduleService .

    :
    ( , , ) ;
    :
    "serviceInterface" – ; "serviceImplementaion" – .


    .
    plugin.xml:
    <extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
    : , , .

    : 1 , 2 , 3 , 4 , 5 , 6 , 7 .
  3. , com.intellij.modules . :
    <idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

    plugin.xml, IDEA. plugin.xml , .
    IntelliJ:
    com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
    :
    com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
    PhpStorm , PHP , : com.jetbrains.php .
    . , Java , :
    <depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
    , , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

    IntelliJ IDEA
    – IDEA. . .


    .
    – jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
    .IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
    – :
    .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
    Classes lib classpath.
    – jar-, lib:
    .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


    , IDEA . , IDEA .
    -, , . , plugin.xml, depends . , . .


    – . :
    ; ; .
    IntelliJ IDEA.
    Application getComponent(Class).

    Project ( ). Project getComponent(Class).

    , IDEA. Module.

    , . , . , (, , ) .

    , . getComponentName(). : < ><>< >.

    , , ApplicationComponent. , , . , , IDEA , .

    <application-components> plugin.xml.
    IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
    New Java Alt+Insert; New Application Component; New Application Component, OK.
    IDEA , ApplicationComponent, plugin.xml, Module Tree View .

    , ProjectComponent. Project, . , .

    <project-components> . IDE, "New | Project Component".

    ModuleComponent. . <module-components> "New | Module Component".


    , : JDOMExternalizable (, ) PersistentStateComponent.
    PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
    JDOMExternalizable, :
    (.ipr), plugin.xml «workspace» – .iws; .iml .

    :
    – ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
    :
    – writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
    getComponent() - . , , initComponent().


    Intellij IDEA , IDEA.
    , , . , . .

    .
    , , , . plugin.xml:
    <extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

    "interface" , . "beanClass" , @Attribute . , plugin.xml.
    MyBeanClass1:
    public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
    MyExtPoint, "key" "implementationClass" .

    :
    «xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
    , .

    , ;
    , : "interface", "implementation", – , ; "beanClass", , @Attribute .


    (Actions)
    Intellij IDEA (actions).
    – , AnAction, actionPerformed() , .

    , . . .
    .


    – , , getService() ServiceManager. Intellij IDEA , , .

    , plugin.xml. .

    , .. , , applicationService, projectService moduleService .

    :
    ( , , ) ;
    :
    "serviceInterface" – ; "serviceImplementaion" – .


    .
    plugin.xml:
    <extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
    : , , .

    : 1 , 2 , 3 , 4 , 5 , 6 , 7 .
, com.intellij.modules . :
<idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

plugin.xml, IDEA. plugin.xml , .
IntelliJ:
com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
:
com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
PhpStorm , PHP , : com.jetbrains.php .
. , Java , :
<depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
, , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

IntelliJ IDEA
– IDEA. . .


.
– jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
.IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
– :
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
Classes lib classpath.
– jar-, lib:
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


, IDEA . , IDEA .
-, , . , plugin.xml, depends . , . .


– . :
; ; .
IntelliJ IDEA.
Application getComponent(Class).

Project ( ). Project getComponent(Class).

, IDEA. Module.

, . , . , (, , ) .

, . getComponentName(). : < ><>< >.

, , ApplicationComponent. , , . , , IDEA , .

<application-components> plugin.xml.
IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
New Java Alt+Insert; New Application Component; New Application Component, OK.
IDEA , ApplicationComponent, plugin.xml, Module Tree View .

, ProjectComponent. Project, . , .

<project-components> . IDE, "New | Project Component".

ModuleComponent. . <module-components> "New | Module Component".


, : JDOMExternalizable (, ) PersistentStateComponent.
PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
JDOMExternalizable, :
(.ipr), plugin.xml «workspace» – .iws; .iml .

:
– ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
:
– writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
getComponent() - . , , initComponent().


Intellij IDEA , IDEA.
, , . , . .

.
, , , . plugin.xml:
<extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

"interface" , . "beanClass" , @Attribute . , plugin.xml.
MyBeanClass1:
public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
MyExtPoint, "key" "implementationClass" .

:
«xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
, .

, ;
, : "interface", "implementation", – , ; "beanClass", , @Attribute .


(Actions)
Intellij IDEA (actions).
– , AnAction, actionPerformed() , .

, . . .
.


– , , getService() ServiceManager. Intellij IDEA , , .

, plugin.xml. .

, .. , , applicationService, projectService moduleService .

:
( , , ) ;
:
"serviceInterface" – ; "serviceImplementaion" – .


.
plugin.xml:
<extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
: , , .

: 1 , 2 , 3 , 4 , 5 , 6 , 7 .
  1. , com.intellij.modules . :
    <idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

    plugin.xml, IDEA. plugin.xml , .
    IntelliJ:
    com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
    :
    com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
    PhpStorm , PHP , : com.jetbrains.php .
    . , Java , :
    <depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
    , , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

    IntelliJ IDEA
    – IDEA. . .


    .
    – jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
    .IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
    – :
    .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
    Classes lib classpath.
    – jar-, lib:
    .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


    , IDEA . , IDEA .
    -, , . , plugin.xml, depends . , . .


    – . :
    ; ; .
    IntelliJ IDEA.
    Application getComponent(Class).

    Project ( ). Project getComponent(Class).

    , IDEA. Module.

    , . , . , (, , ) .

    , . getComponentName(). : < ><>< >.

    , , ApplicationComponent. , , . , , IDEA , .

    <application-components> plugin.xml.
    IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
    New Java Alt+Insert; New Application Component; New Application Component, OK.
    IDEA , ApplicationComponent, plugin.xml, Module Tree View .

    , ProjectComponent. Project, . , .

    <project-components> . IDE, "New | Project Component".

    ModuleComponent. . <module-components> "New | Module Component".


    , : JDOMExternalizable (, ) PersistentStateComponent.
    PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
    JDOMExternalizable, :
    (.ipr), plugin.xml «workspace» – .iws; .iml .

    :
    – ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
    :
    – writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
    getComponent() - . , , initComponent().


    Intellij IDEA , IDEA.
    , , . , . .

    .
    , , , . plugin.xml:
    <extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

    "interface" , . "beanClass" , @Attribute . , plugin.xml.
    MyBeanClass1:
    public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
    MyExtPoint, "key" "implementationClass" .

    :
    «xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
    , .

    , ;
    , : "interface", "implementation", – , ; "beanClass", , @Attribute .


    (Actions)
    Intellij IDEA (actions).
    – , AnAction, actionPerformed() , .

    , . . .
    .


    – , , getService() ServiceManager. Intellij IDEA , , .

    , plugin.xml. .

    , .. , , applicationService, projectService moduleService .

    :
    ( , , ) ;
    :
    "serviceInterface" – ; "serviceImplementaion" – .


    .
    plugin.xml:
    <extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
    : , , .

    : 1 , 2 , 3 , 4 , 5 , 6 , 7 .
  2. , com.intellij.modules . :
    <idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

    plugin.xml, IDEA. plugin.xml , .
    IntelliJ:
    com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
    :
    com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
    PhpStorm , PHP , : com.jetbrains.php .
    . , Java , :
    <depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
    , , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

    IntelliJ IDEA
    – IDEA. . .


    .
    – jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
    .IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
    – :
    .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
    Classes lib classpath.
    – jar-, lib:
    .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


    , IDEA . , IDEA .
    -, , . , plugin.xml, depends . , . .


    – . :
    ; ; .
    IntelliJ IDEA.
    Application getComponent(Class).

    Project ( ). Project getComponent(Class).

    , IDEA. Module.

    , . , . , (, , ) .

    , . getComponentName(). : < ><>< >.

    , , ApplicationComponent. , , . , , IDEA , .

    <application-components> plugin.xml.
    IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
    New Java Alt+Insert; New Application Component; New Application Component, OK.
    IDEA , ApplicationComponent, plugin.xml, Module Tree View .

    , ProjectComponent. Project, . , .

    <project-components> . IDE, "New | Project Component".

    ModuleComponent. . <module-components> "New | Module Component".


    , : JDOMExternalizable (, ) PersistentStateComponent.
    PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
    JDOMExternalizable, :
    (.ipr), plugin.xml «workspace» – .iws; .iml .

    :
    – ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
    :
    – writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
    getComponent() - . , , initComponent().


    Intellij IDEA , IDEA.
    , , . , . .

    .
    , , , . plugin.xml:
    <extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

    "interface" , . "beanClass" , @Attribute . , plugin.xml.
    MyBeanClass1:
    public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
    MyExtPoint, "key" "implementationClass" .

    :
    «xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
    , .

    , ;
    , : "interface", "implementation", – , ; "beanClass", , @Attribute .


    (Actions)
    Intellij IDEA (actions).
    – , AnAction, actionPerformed() , .

    , . . .
    .


    – , , getService() ServiceManager. Intellij IDEA , , .

    , plugin.xml. .

    , .. , , applicationService, projectService moduleService .

    :
    ( , , ) ;
    :
    "serviceInterface" – ; "serviceImplementaion" – .


    .
    plugin.xml:
    <extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
    : , , .

    : 1 , 2 , 3 , 4 , 5 , 6 , 7 .
  3. , com.intellij.modules . :
    <idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

    plugin.xml, IDEA. plugin.xml , .
    IntelliJ:
    com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
    :
    com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
    PhpStorm , PHP , : com.jetbrains.php .
    . , Java , :
    <depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
    , , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

    IntelliJ IDEA
    – IDEA. . .


    .
    – jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
    .IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
    – :
    .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
    Classes lib classpath.
    – jar-, lib:
    .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


    , IDEA . , IDEA .
    -, , . , plugin.xml, depends . , . .


    – . :
    ; ; .
    IntelliJ IDEA.
    Application getComponent(Class).

    Project ( ). Project getComponent(Class).

    , IDEA. Module.

    , . , . , (, , ) .

    , . getComponentName(). : < ><>< >.

    , , ApplicationComponent. , , . , , IDEA , .

    <application-components> plugin.xml.
    IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
    New Java Alt+Insert; New Application Component; New Application Component, OK.
    IDEA , ApplicationComponent, plugin.xml, Module Tree View .

    , ProjectComponent. Project, . , .

    <project-components> . IDE, "New | Project Component".

    ModuleComponent. . <module-components> "New | Module Component".


    , : JDOMExternalizable (, ) PersistentStateComponent.
    PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
    JDOMExternalizable, :
    (.ipr), plugin.xml «workspace» – .iws; .iml .

    :
    – ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
    :
    – writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
    getComponent() - . , , initComponent().


    Intellij IDEA , IDEA.
    , , . , . .

    .
    , , , . plugin.xml:
    <extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

    "interface" , . "beanClass" , @Attribute . , plugin.xml.
    MyBeanClass1:
    public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
    MyExtPoint, "key" "implementationClass" .

    :
    «xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
    , .

    , ;
    , : "interface", "implementation", – , ; "beanClass", , @Attribute .


    (Actions)
    Intellij IDEA (actions).
    – , AnAction, actionPerformed() , .

    , . . .
    .


    – , , getService() ServiceManager. Intellij IDEA , , .

    , plugin.xml. .

    , .. , , applicationService, projectService moduleService .

    :
    ( , , ) ;
    :
    "serviceInterface" – ; "serviceImplementaion" – .


    .
    plugin.xml:
    <extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
    : , , .

    : 1 , 2 , 3 , 4 , 5 , 6 , 7 .
, com.intellij.modules . :
<idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

plugin.xml, IDEA. plugin.xml , .
IntelliJ:
com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
:
com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
PhpStorm , PHP , : com.jetbrains.php .
. , Java , :
<depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
, , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

IntelliJ IDEA
– IDEA. . .


.
– jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
.IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
– :
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
Classes lib classpath.
– jar-, lib:
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


, IDEA . , IDEA .
-, , . , plugin.xml, depends . , . .


– . :
; ; .
IntelliJ IDEA.
Application getComponent(Class).

Project ( ). Project getComponent(Class).

, IDEA. Module.

, . , . , (, , ) .

, . getComponentName(). : < ><>< >.

, , ApplicationComponent. , , . , , IDEA , .

<application-components> plugin.xml.
IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
New Java Alt+Insert; New Application Component; New Application Component, OK.
IDEA , ApplicationComponent, plugin.xml, Module Tree View .

, ProjectComponent. Project, . , .

<project-components> . IDE, "New | Project Component".

ModuleComponent. . <module-components> "New | Module Component".


, : JDOMExternalizable (, ) PersistentStateComponent.
PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
JDOMExternalizable, :
(.ipr), plugin.xml «workspace» – .iws; .iml .

:
– ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
:
– writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
getComponent() - . , , initComponent().


Intellij IDEA , IDEA.
, , . , . .

.
, , , . plugin.xml:
<extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

"interface" , . "beanClass" , @Attribute . , plugin.xml.
MyBeanClass1:
public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
MyExtPoint, "key" "implementationClass" .

:
«xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
, .

, ;
, : "interface", "implementation", – , ; "beanClass", , @Attribute .


(Actions)
Intellij IDEA (actions).
– , AnAction, actionPerformed() , .

, . . .
.


– , , getService() ServiceManager. Intellij IDEA , , .

, plugin.xml. .

, .. , , applicationService, projectService moduleService .

:
( , , ) ;
:
"serviceInterface" – ; "serviceImplementaion" – .


.
plugin.xml:
<extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
: , , .

: 1 , 2 , 3 , 4 , 5 , 6 , 7 .
, com.intellij.modules . :
<idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

plugin.xml, IDEA. plugin.xml , .
IntelliJ:
com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
:
com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
PhpStorm , PHP , : com.jetbrains.php .
. , Java , :
<depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
, , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

IntelliJ IDEA
– IDEA. . .


.
– jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
.IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
– :
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
Classes lib classpath.
– jar-, lib:
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


, IDEA . , IDEA .
-, , . , plugin.xml, depends . , . .


– . :
; ; .
IntelliJ IDEA.
Application getComponent(Class).

Project ( ). Project getComponent(Class).

, IDEA. Module.

, . , . , (, , ) .

, . getComponentName(). : < ><>< >.

, , ApplicationComponent. , , . , , IDEA , .

<application-components> plugin.xml.
IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
New Java Alt+Insert; New Application Component; New Application Component, OK.
IDEA , ApplicationComponent, plugin.xml, Module Tree View .

, ProjectComponent. Project, . , .

<project-components> . IDE, "New | Project Component".

ModuleComponent. . <module-components> "New | Module Component".


, : JDOMExternalizable (, ) PersistentStateComponent.
PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
JDOMExternalizable, :
(.ipr), plugin.xml «workspace» – .iws; .iml .

:
– ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
:
– writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
getComponent() - . , , initComponent().


Intellij IDEA , IDEA.
, , . , . .

.
, , , . plugin.xml:
<extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

"interface" , . "beanClass" , @Attribute . , plugin.xml.
MyBeanClass1:
public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
MyExtPoint, "key" "implementationClass" .

:
«xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
, .

, ;
, : "interface", "implementation", – , ; "beanClass", , @Attribute .


(Actions)
Intellij IDEA (actions).
– , AnAction, actionPerformed() , .

, . . .
.


– , , getService() ServiceManager. Intellij IDEA , , .

, plugin.xml. .

, .. , , applicationService, projectService moduleService .

:
( , , ) ;
:
"serviceInterface" – ; "serviceImplementaion" – .


.
plugin.xml:
<extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
: , , .

: 1 , 2 , 3 , 4 , 5 , 6 , 7 .
, com.intellij.modules . :
<idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

plugin.xml, IDEA. plugin.xml , .
IntelliJ:
com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
:
com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
PhpStorm , PHP , : com.jetbrains.php .
. , Java , :
<depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
, , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

IntelliJ IDEA
– IDEA. . .


.
– jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
.IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
– :
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
Classes lib classpath.
– jar-, lib:
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


, IDEA . , IDEA .
-, , . , plugin.xml, depends . , . .


– . :
; ; .
IntelliJ IDEA.
Application getComponent(Class).

Project ( ). Project getComponent(Class).

, IDEA. Module.

, . , . , (, , ) .

, . getComponentName(). : < ><>< >.

, , ApplicationComponent. , , . , , IDEA , .

<application-components> plugin.xml.
IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
New Java Alt+Insert; New Application Component; New Application Component, OK.
IDEA , ApplicationComponent, plugin.xml, Module Tree View .

, ProjectComponent. Project, . , .

<project-components> . IDE, "New | Project Component".

ModuleComponent. . <module-components> "New | Module Component".


, : JDOMExternalizable (, ) PersistentStateComponent.
PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
JDOMExternalizable, :
(.ipr), plugin.xml «workspace» – .iws; .iml .

:
– ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
:
– writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
getComponent() - . , , initComponent().


Intellij IDEA , IDEA.
, , . , . .

.
, , , . plugin.xml:
<extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

"interface" , . "beanClass" , @Attribute . , plugin.xml.
MyBeanClass1:
public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
MyExtPoint, "key" "implementationClass" .

:
«xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
, .

, ;
, : "interface", "implementation", – , ; "beanClass", , @Attribute .


(Actions)
Intellij IDEA (actions).
– , AnAction, actionPerformed() , .

, . . .
.


– , , getService() ServiceManager. Intellij IDEA , , .

, plugin.xml. .

, .. , , applicationService, projectService moduleService .

:
( , , ) ;
:
"serviceInterface" – ; "serviceImplementaion" – .


.
plugin.xml:
<extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
: , , .

: 1 , 2 , 3 , 4 , 5 , 6 , 7 .
, com.intellij.modules . :
<idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

plugin.xml, IDEA. plugin.xml , .
IntelliJ:
com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
:
com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
PhpStorm , PHP , : com.jetbrains.php .
. , Java , :
<depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
, , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

IntelliJ IDEA
– IDEA. . .


.
– jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
.IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
– :
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
Classes lib classpath.
– jar-, lib:
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


, IDEA . , IDEA .
-, , . , plugin.xml, depends . , . .


– . :
; ; .
IntelliJ IDEA.
Application getComponent(Class).

Project ( ). Project getComponent(Class).

, IDEA. Module.

, . , . , (, , ) .

, . getComponentName(). : < ><>< >.

, , ApplicationComponent. , , . , , IDEA , .

<application-components> plugin.xml.
IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
New Java Alt+Insert; New Application Component; New Application Component, OK.
IDEA , ApplicationComponent, plugin.xml, Module Tree View .

, ProjectComponent. Project, . , .

<project-components> . IDE, "New | Project Component".

ModuleComponent. . <module-components> "New | Module Component".


, : JDOMExternalizable (, ) PersistentStateComponent.
PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
JDOMExternalizable, :
(.ipr), plugin.xml «workspace» – .iws; .iml .

:
– ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
:
– writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
getComponent() - . , , initComponent().


Intellij IDEA , IDEA.
, , . , . .

.
, , , . plugin.xml:
<extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

"interface" , . "beanClass" , @Attribute . , plugin.xml.
MyBeanClass1:
public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
MyExtPoint, "key" "implementationClass" .

:
«xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
, .

, ;
, : "interface", "implementation", – , ; "beanClass", , @Attribute .


(Actions)
Intellij IDEA (actions).
– , AnAction, actionPerformed() , .

, . . .
.


– , , getService() ServiceManager. Intellij IDEA , , .

, plugin.xml. .

, .. , , applicationService, projectService moduleService .

:
( , , ) ;
:
"serviceInterface" – ; "serviceImplementaion" – .


.
plugin.xml:
<extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
: , , .

: 1 , 2 , 3 , 4 , 5 , 6 , 7 .
, com.intellij.modules . :
<idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

plugin.xml, IDEA. plugin.xml , .
IntelliJ:
com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
:
com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
PhpStorm , PHP , : com.jetbrains.php .
. , Java , :
<depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
, , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

IntelliJ IDEA
– IDEA. . .


.
– jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
.IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
– :
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
Classes lib classpath.
– jar-, lib:
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


, IDEA . , IDEA .
-, , . , plugin.xml, depends . , . .


– . :
; ; .
IntelliJ IDEA.
Application getComponent(Class).

Project ( ). Project getComponent(Class).

, IDEA. Module.

, . , . , (, , ) .

, . getComponentName(). : < ><>< >.

, , ApplicationComponent. , , . , , IDEA , .

<application-components> plugin.xml.
IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
New Java Alt+Insert; New Application Component; New Application Component, OK.
IDEA , ApplicationComponent, plugin.xml, Module Tree View .

, ProjectComponent. Project, . , .

<project-components> . IDE, "New | Project Component".

ModuleComponent. . <module-components> "New | Module Component".


, : JDOMExternalizable (, ) PersistentStateComponent.
PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
JDOMExternalizable, :
(.ipr), plugin.xml «workspace» – .iws; .iml .

:
– ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
:
– writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
getComponent() - . , , initComponent().


Intellij IDEA , IDEA.
, , . , . .

.
, , , . plugin.xml:
<extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

"interface" , . "beanClass" , @Attribute . , plugin.xml.
MyBeanClass1:
public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
MyExtPoint, "key" "implementationClass" .

:
«xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
, .

, ;
, : "interface", "implementation", – , ; "beanClass", , @Attribute .


(Actions)
Intellij IDEA (actions).
– , AnAction, actionPerformed() , .

, . . .
.


– , , getService() ServiceManager. Intellij IDEA , , .

, plugin.xml. .

, .. , , applicationService, projectService moduleService .

:
( , , ) ;
:
"serviceInterface" – ; "serviceImplementaion" – .


.
plugin.xml:
<extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
: , , .

: 1 , 2 , 3 , 4 , 5 , 6 , 7 .
, com.intellij.modules . :
<idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

plugin.xml, IDEA. plugin.xml , .
IntelliJ:
com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
:
com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
PhpStorm , PHP , : com.jetbrains.php .
. , Java , :
<depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
, , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

IntelliJ IDEA
– IDEA. . .


.
– jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
.IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
– :
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
Classes lib classpath.
– jar-, lib:
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


, IDEA . , IDEA .
-, , . , plugin.xml, depends . , . .


– . :
; ; .
IntelliJ IDEA.
Application getComponent(Class).

Project ( ). Project getComponent(Class).

, IDEA. Module.

, . , . , (, , ) .

, . getComponentName(). : < ><>< >.

, , ApplicationComponent. , , . , , IDEA , .

<application-components> plugin.xml.
IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
New Java Alt+Insert; New Application Component; New Application Component, OK.
IDEA , ApplicationComponent, plugin.xml, Module Tree View .

, ProjectComponent. Project, . , .

<project-components> . IDE, "New | Project Component".

ModuleComponent. . <module-components> "New | Module Component".


, : JDOMExternalizable (, ) PersistentStateComponent.
PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
JDOMExternalizable, :
(.ipr), plugin.xml «workspace» – .iws; .iml .

:
– ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
:
– writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
getComponent() - . , , initComponent().


Intellij IDEA , IDEA.
, , . , . .

.
, , , . plugin.xml:
<extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

"interface" , . "beanClass" , @Attribute . , plugin.xml.
MyBeanClass1:
public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
MyExtPoint, "key" "implementationClass" .

:
«xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
, .

, ;
, : "interface", "implementation", – , ; "beanClass", , @Attribute .


(Actions)
Intellij IDEA (actions).
– , AnAction, actionPerformed() , .

, . . .
.


– , , getService() ServiceManager. Intellij IDEA , , .

, plugin.xml. .

, .. , , applicationService, projectService moduleService .

:
( , , ) ;
:
"serviceInterface" – ; "serviceImplementaion" – .


.
plugin.xml:
<extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
: , , .

: 1 , 2 , 3 , 4 , 5 , 6 , 7 .
, com.intellij.modules . :
<idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

plugin.xml, IDEA. plugin.xml , .
IntelliJ:
com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
:
com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
PhpStorm , PHP , : com.jetbrains.php .
. , Java , :
<depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
, , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

IntelliJ IDEA
– IDEA. . .


.
– jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
.IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
– :
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
Classes lib classpath.
– jar-, lib:
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


, IDEA . , IDEA .
-, , . , plugin.xml, depends . , . .


– . :
; ; .
IntelliJ IDEA.
Application getComponent(Class).

Project ( ). Project getComponent(Class).

, IDEA. Module.

, . , . , (, , ) .

, . getComponentName(). : < ><>< >.

, , ApplicationComponent. , , . , , IDEA , .

<application-components> plugin.xml.
IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
New Java Alt+Insert; New Application Component; New Application Component, OK.
IDEA , ApplicationComponent, plugin.xml, Module Tree View .

, ProjectComponent. Project, . , .

<project-components> . IDE, "New | Project Component".

ModuleComponent. . <module-components> "New | Module Component".


, : JDOMExternalizable (, ) PersistentStateComponent.
PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
JDOMExternalizable, :
(.ipr), plugin.xml «workspace» – .iws; .iml .

:
– ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
:
– writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
getComponent() - . , , initComponent().


Intellij IDEA , IDEA.
, , . , . .

.
, , , . plugin.xml:
<extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

"interface" , . "beanClass" , @Attribute . , plugin.xml.
MyBeanClass1:
public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
MyExtPoint, "key" "implementationClass" .

:
«xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
, .

, ;
, : "interface", "implementation", – , ; "beanClass", , @Attribute .


(Actions)
Intellij IDEA (actions).
– , AnAction, actionPerformed() , .

, . . .
.


– , , getService() ServiceManager. Intellij IDEA , , .

, plugin.xml. .

, .. , , applicationService, projectService moduleService .

:
( , , ) ;
:
"serviceInterface" – ; "serviceImplementaion" – .


.
plugin.xml:
<extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
: , , .

: 1 , 2 , 3 , 4 , 5 , 6 , 7 .
, com.intellij.modules . :
<idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

plugin.xml, IDEA. plugin.xml , .
IntelliJ:
com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
:
com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
PhpStorm , PHP , : com.jetbrains.php .
. , Java , :
<depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
, , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

IntelliJ IDEA
– IDEA. . .


.
– jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
.IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
– :
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
Classes lib classpath.
– jar-, lib:
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


, IDEA . , IDEA .
-, , . , plugin.xml, depends . , . .


– . :
; ; .
IntelliJ IDEA.
Application getComponent(Class).

Project ( ). Project getComponent(Class).

, IDEA. Module.

, . , . , (, , ) .

, . getComponentName(). : < ><>< >.

, , ApplicationComponent. , , . , , IDEA , .

<application-components> plugin.xml.
IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
New Java Alt+Insert; New Application Component; New Application Component, OK.
IDEA , ApplicationComponent, plugin.xml, Module Tree View .

, ProjectComponent. Project, . , .

<project-components> . IDE, "New | Project Component".

ModuleComponent. . <module-components> "New | Module Component".


, : JDOMExternalizable (, ) PersistentStateComponent.
PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
JDOMExternalizable, :
(.ipr), plugin.xml «workspace» – .iws; .iml .

:
– ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
:
– writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
getComponent() - . , , initComponent().


Intellij IDEA , IDEA.
, , . , . .

.
, , , . plugin.xml:
<extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

"interface" , . "beanClass" , @Attribute . , plugin.xml.
MyBeanClass1:
public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
MyExtPoint, "key" "implementationClass" .

:
«xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
, .

, ;
, : "interface", "implementation", – , ; "beanClass", , @Attribute .


(Actions)
Intellij IDEA (actions).
– , AnAction, actionPerformed() , .

, . . .
.


– , , getService() ServiceManager. Intellij IDEA , , .

, plugin.xml. .

, .. , , applicationService, projectService moduleService .

:
( , , ) ;
:
"serviceInterface" – ; "serviceImplementaion" – .


.
plugin.xml:
<extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
: , , .

: 1 , 2 , 3 , 4 , 5 , 6 , 7 .

, com.intellij.modules . :
<idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

plugin.xml, IDEA. plugin.xml , .
IntelliJ:
com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
:
com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
PhpStorm , PHP , : com.jetbrains.php .
. , Java , :
<depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
, , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

IntelliJ IDEA
– IDEA. . .


.
– jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
.IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
– :
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
Classes lib classpath.
– jar-, lib:
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


, IDEA . , IDEA .
-, , . , plugin.xml, depends . , . .


– . :
; ; .
IntelliJ IDEA.
Application getComponent(Class).

Project ( ). Project getComponent(Class).

, IDEA. Module.

, . , . , (, , ) .

, . getComponentName(). : < ><>< >.

, , ApplicationComponent. , , . , , IDEA , .

<application-components> plugin.xml.
IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
New Java Alt+Insert; New Application Component; New Application Component, OK.
IDEA , ApplicationComponent, plugin.xml, Module Tree View .

, ProjectComponent. Project, . , .

<project-components> . IDE, "New | Project Component".

ModuleComponent. . <module-components> "New | Module Component".


, : JDOMExternalizable (, ) PersistentStateComponent.
PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
JDOMExternalizable, :
(.ipr), plugin.xml «workspace» – .iws; .iml .

:
– ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
:
– writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
getComponent() - . , , initComponent().


Intellij IDEA , IDEA.
, , . , . .

.
, , , . plugin.xml:
<extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

"interface" , . "beanClass" , @Attribute . , plugin.xml.
MyBeanClass1:
public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
MyExtPoint, "key" "implementationClass" .

:
«xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
, .

, ;
, : "interface", "implementation", – , ; "beanClass", , @Attribute .


(Actions)
Intellij IDEA (actions).
– , AnAction, actionPerformed() , .

, . . .
.


– , , getService() ServiceManager. Intellij IDEA , , .

, plugin.xml. .

, .. , , applicationService, projectService moduleService .

:
( , , ) ;
:
"serviceInterface" – ; "serviceImplementaion" – .


.
plugin.xml:
<extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
: , , .

: 1 , 2 , 3 , 4 , 5 , 6 , 7 .

, com.intellij.modules . :
<idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

plugin.xml, IDEA. plugin.xml , .
IntelliJ:
com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
:
com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
PhpStorm , PHP , : com.jetbrains.php .
. , Java , :
<depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
, , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

IntelliJ IDEA
– IDEA. . .


.
– jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
.IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
– :
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
Classes lib classpath.
– jar-, lib:
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


, IDEA . , IDEA .
-, , . , plugin.xml, depends . , . .


– . :
; ; .
IntelliJ IDEA.
Application getComponent(Class).

Project ( ). Project getComponent(Class).

, IDEA. Module.

, . , . , (, , ) .

, . getComponentName(). : < ><>< >.

, , ApplicationComponent. , , . , , IDEA , .

<application-components> plugin.xml.
IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
New Java Alt+Insert; New Application Component; New Application Component, OK.
IDEA , ApplicationComponent, plugin.xml, Module Tree View .

, ProjectComponent. Project, . , .

<project-components> . IDE, "New | Project Component".

ModuleComponent. . <module-components> "New | Module Component".


, : JDOMExternalizable (, ) PersistentStateComponent.
PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
JDOMExternalizable, :
(.ipr), plugin.xml «workspace» – .iws; .iml .

:
– ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
:
– writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
getComponent() - . , , initComponent().


Intellij IDEA , IDEA.
, , . , . .

.
, , , . plugin.xml:
<extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

"interface" , . "beanClass" , @Attribute . , plugin.xml.
MyBeanClass1:
public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
MyExtPoint, "key" "implementationClass" .

:
«xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
, .

, ;
, : "interface", "implementation", – , ; "beanClass", , @Attribute .


(Actions)
Intellij IDEA (actions).
– , AnAction, actionPerformed() , .

, . . .
.


– , , getService() ServiceManager. Intellij IDEA , , .

, plugin.xml. .

, .. , , applicationService, projectService moduleService .

:
( , , ) ;
:
"serviceInterface" – ; "serviceImplementaion" – .


.
plugin.xml:
<extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
: , , .

: 1 , 2 , 3 , 4 , 5 , 6 , 7 .
 ,     com.intellij.modules . : 
<idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

plugin.xml, IDEA. plugin.xml , .
IntelliJ:
com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
:
com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
PhpStorm , PHP , : com.jetbrains.php .
. , Java , :
<depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
, , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

IntelliJ IDEA
– IDEA. . .


.
– jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
.IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
– :
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
Classes lib classpath.
– jar-, lib:
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


, IDEA . , IDEA .
-, , . , plugin.xml, depends . , . .


– . :
; ; .
IntelliJ IDEA.
Application getComponent(Class).

Project ( ). Project getComponent(Class).

, IDEA. Module.

, . , . , (, , ) .

, . getComponentName(). : < ><>< >.

, , ApplicationComponent. , , . , , IDEA , .

<application-components> plugin.xml.
IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
New Java Alt+Insert; New Application Component; New Application Component, OK.
IDEA , ApplicationComponent, plugin.xml, Module Tree View .

, ProjectComponent. Project, . , .

<project-components> . IDE, "New | Project Component".

ModuleComponent. . <module-components> "New | Module Component".


, : JDOMExternalizable (, ) PersistentStateComponent.
PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
JDOMExternalizable, :
(.ipr), plugin.xml «workspace» – .iws; .iml .

:
– ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
:
– writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
getComponent() - . , , initComponent().


Intellij IDEA , IDEA.
, , . , . .

.
, , , . plugin.xml:
<extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

"interface" , . "beanClass" , @Attribute . , plugin.xml.
MyBeanClass1:
public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
MyExtPoint, "key" "implementationClass" .

:
«xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
, .

, ;
, : "interface", "implementation", – , ; "beanClass", , @Attribute .


(Actions)
Intellij IDEA (actions).
– , AnAction, actionPerformed() , .

, . . .
.


– , , getService() ServiceManager. Intellij IDEA , , .

, plugin.xml. .

, .. , , applicationService, projectService moduleService .

:
( , , ) ;
:
"serviceInterface" – ; "serviceImplementaion" – .


.
plugin.xml:
<extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
: , , .

: 1 , 2 , 3 , 4 , 5 , 6 , 7 .
, com.intellij.modules . :
<idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

plugin.xml, IDEA. plugin.xml , .
IntelliJ:
com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
:
com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
PhpStorm , PHP , : com.jetbrains.php .
. , Java , :
<depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
, , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

IntelliJ IDEA
– IDEA. . .


.
– jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
.IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
– :
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
Classes lib classpath.
– jar-, lib:
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


, IDEA . , IDEA .
-, , . , plugin.xml, depends . , . .


– . :
; ; .
IntelliJ IDEA.
Application getComponent(Class).

Project ( ). Project getComponent(Class).

, IDEA. Module.

, . , . , (, , ) .

, . getComponentName(). : < ><>< >.

, , ApplicationComponent. , , . , , IDEA , .

<application-components> plugin.xml.
IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
New Java Alt+Insert; New Application Component; New Application Component, OK.
IDEA , ApplicationComponent, plugin.xml, Module Tree View .

, ProjectComponent. Project, . , .

<project-components> . IDE, "New | Project Component".

ModuleComponent. . <module-components> "New | Module Component".


, : JDOMExternalizable (, ) PersistentStateComponent.
PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
JDOMExternalizable, :
(.ipr), plugin.xml «workspace» – .iws; .iml .

:
– ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
:
– writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
getComponent() - . , , initComponent().


Intellij IDEA , IDEA.
, , . , . .

.
, , , . plugin.xml:
<extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

"interface" , . "beanClass" , @Attribute . , plugin.xml.
MyBeanClass1:
public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
MyExtPoint, "key" "implementationClass" .

:
«xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
, .

, ;
, : "interface", "implementation", – , ; "beanClass", , @Attribute .


(Actions)
Intellij IDEA (actions).
– , AnAction, actionPerformed() , .

, . . .
.


– , , getService() ServiceManager. Intellij IDEA , , .

, plugin.xml. .

, .. , , applicationService, projectService moduleService .

:
( , , ) ;
:
"serviceInterface" – ; "serviceImplementaion" – .


.
plugin.xml:
<extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
: , , .

: 1 , 2 , 3 , 4 , 5 , 6 , 7 .
 ,     com.intellij.modules . : 
<idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

plugin.xml, IDEA. plugin.xml , .
IntelliJ:
com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
:
com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
PhpStorm , PHP , : com.jetbrains.php .
. , Java , :
<depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
, , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

IntelliJ IDEA
– IDEA. . .


.
– jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
.IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
– :
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
Classes lib classpath.
– jar-, lib:
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


, IDEA . , IDEA .
-, , . , plugin.xml, depends . , . .


– . :
; ; .
IntelliJ IDEA.
Application getComponent(Class).

Project ( ). Project getComponent(Class).

, IDEA. Module.

, . , . , (, , ) .

, . getComponentName(). : < ><>< >.

, , ApplicationComponent. , , . , , IDEA , .

<application-components> plugin.xml.
IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
New Java Alt+Insert; New Application Component; New Application Component, OK.
IDEA , ApplicationComponent, plugin.xml, Module Tree View .

, ProjectComponent. Project, . , .

<project-components> . IDE, "New | Project Component".

ModuleComponent. . <module-components> "New | Module Component".


, : JDOMExternalizable (, ) PersistentStateComponent.
PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
JDOMExternalizable, :
(.ipr), plugin.xml «workspace» – .iws; .iml .

:
– ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
:
– writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
getComponent() - . , , initComponent().


Intellij IDEA , IDEA.
, , . , . .

.
, , , . plugin.xml:
<extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

"interface" , . "beanClass" , @Attribute . , plugin.xml.
MyBeanClass1:
public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
MyExtPoint, "key" "implementationClass" .

:
«xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
, .

, ;
, : "interface", "implementation", – , ; "beanClass", , @Attribute .


(Actions)
Intellij IDEA (actions).
– , AnAction, actionPerformed() , .

, . . .
.


– , , getService() ServiceManager. Intellij IDEA , , .

, plugin.xml. .

, .. , , applicationService, projectService moduleService .

:
( , , ) ;
:
"serviceInterface" – ; "serviceImplementaion" – .


.
plugin.xml:
<extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
: , , .

: 1 , 2 , 3 , 4 , 5 , 6 , 7 .
, com.intellij.modules . :
<idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

plugin.xml, IDEA. plugin.xml , .
IntelliJ:
com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
:
com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
PhpStorm , PHP , : com.jetbrains.php .
. , Java , :
<depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
, , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

IntelliJ IDEA
– IDEA. . .


.
– jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
.IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
– :
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
Classes lib classpath.
– jar-, lib:
.IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


, IDEA . , IDEA .
-, , . , plugin.xml, depends . , . .


– . :
; ; .
IntelliJ IDEA.
Application getComponent(Class).

Project ( ). Project getComponent(Class).

, IDEA. Module.

, . , . , (, , ) .

, . getComponentName(). : < ><>< >.

, , ApplicationComponent. , , . , , IDEA , .

<application-components> plugin.xml.
IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
New Java Alt+Insert; New Application Component; New Application Component, OK.
IDEA , ApplicationComponent, plugin.xml, Module Tree View .

, ProjectComponent. Project, . , .

<project-components> . IDE, "New | Project Component".

ModuleComponent. . <module-components> "New | Module Component".


, : JDOMExternalizable (, ) PersistentStateComponent.
PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
JDOMExternalizable, :
(.ipr), plugin.xml «workspace» – .iws; .iml .

:
– ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
:
– writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
getComponent() - . , , initComponent().


Intellij IDEA , IDEA.
, , . , . .

.
, , , . plugin.xml:
<extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

"interface" , . "beanClass" , @Attribute . , plugin.xml.
MyBeanClass1:
public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
MyExtPoint, "key" "implementationClass" .

:
«xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
, .

, ;
, : "interface", "implementation", – , ; "beanClass", , @Attribute .


(Actions)
Intellij IDEA (actions).
– , AnAction, actionPerformed() , .

, . . .
.


– , , getService() ServiceManager. Intellij IDEA , , .

, plugin.xml. .

, .. , , applicationService, projectService moduleService .

:
( , , ) ;
:
"serviceInterface" – ; "serviceImplementaion" – .


.
plugin.xml:
<extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
: , , .

: 1 , 2 , 3 , 4 , 5 , 6 , 7 .
  1. , com.intellij.modules . :
    <idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

    plugin.xml, IDEA. plugin.xml , .
    IntelliJ:
    com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
    :
    com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
    PhpStorm , PHP , : com.jetbrains.php .
    . , Java , :
    <depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
    , , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

    IntelliJ IDEA
    – IDEA. . .


    .
    – jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
    .IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
    – :
    .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
    Classes lib classpath.
    – jar-, lib:
    .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


    , IDEA . , IDEA .
    -, , . , plugin.xml, depends . , . .


    – . :
    ; ; .
    IntelliJ IDEA.
    Application getComponent(Class).

    Project ( ). Project getComponent(Class).

    , IDEA. Module.

    , . , . , (, , ) .

    , . getComponentName(). : < ><>< >.

    , , ApplicationComponent. , , . , , IDEA , .

    <application-components> plugin.xml.
    IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
    New Java Alt+Insert; New Application Component; New Application Component, OK.
    IDEA , ApplicationComponent, plugin.xml, Module Tree View .

    , ProjectComponent. Project, . , .

    <project-components> . IDE, "New | Project Component".

    ModuleComponent. . <module-components> "New | Module Component".


    , : JDOMExternalizable (, ) PersistentStateComponent.
    PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
    JDOMExternalizable, :
    (.ipr), plugin.xml «workspace» – .iws; .iml .

    :
    – ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
    :
    – writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
    getComponent() - . , , initComponent().


    Intellij IDEA , IDEA.
    , , . , . .

    .
    , , , . plugin.xml:
    <extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

    "interface" , . "beanClass" , @Attribute . , plugin.xml.
    MyBeanClass1:
    public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
    MyExtPoint, "key" "implementationClass" .

    :
    «xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < > , .

    , ;
    , : "interface", "implementation", – , ; "beanClass", , @Attribute .


    (Actions)
    Intellij IDEA (actions).
    – , AnAction, actionPerformed() , .

    , . . .
    .


    – , , getService() ServiceManager. Intellij IDEA , , .

    , plugin.xml. .

    , .. , , applicationService, projectService moduleService .

    :
    ( , , ) ;
    :
    "serviceInterface" – ; "serviceImplementaion" – .


    .
    plugin.xml:
    <extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
    : , , .

    : 1 , 2 , 3 , 4 , 5 , 6 , 7 .
    • , com.intellij.modules . :
      <idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

      plugin.xml, IDEA. plugin.xml , .
      IntelliJ:
      com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
      :
      com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
      PhpStorm , PHP , : com.jetbrains.php .
      . , Java , :
      <depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
      , , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

      IntelliJ IDEA
      – IDEA. . .


      .
      – jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
      .IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
      – :
      .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
      Classes lib classpath.
      – jar-, lib:
      .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


      , IDEA . , IDEA .
      -, , . , plugin.xml, depends . , . .


      – . :
      ; ; .
      IntelliJ IDEA.
      Application getComponent(Class).

      Project ( ). Project getComponent(Class).

      , IDEA. Module.

      , . , . , (, , ) .

      , . getComponentName(). : < ><>< >.

      , , ApplicationComponent. , , . , , IDEA , .

      <application-components> plugin.xml.
      IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
      New Java Alt+Insert; New Application Component; New Application Component, OK.
      IDEA , ApplicationComponent, plugin.xml, Module Tree View .

      , ProjectComponent. Project, . , .

      <project-components> . IDE, "New | Project Component".

      ModuleComponent. . <module-components> "New | Module Component".


      , : JDOMExternalizable (, ) PersistentStateComponent.
      PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
      JDOMExternalizable, :
      (.ipr), plugin.xml «workspace» – .iws; .iml .

      :
      – ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
      :
      – writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
      getComponent() - . , , initComponent().


      Intellij IDEA , IDEA.
      , , . , . .

      .
      , , , . plugin.xml:
      <extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

      "interface" , . "beanClass" , @Attribute . , plugin.xml.
      MyBeanClass1:
      public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
      MyExtPoint, "key" "implementationClass" .

      :
      «xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < > , .

      , ;
      , : "interface", "implementation", – , ; "beanClass", , @Attribute .


      (Actions)
      Intellij IDEA (actions).
      – , AnAction, actionPerformed() , .

      , . . .
      .


      – , , getService() ServiceManager. Intellij IDEA , , .

      , plugin.xml. .

      , .. , , applicationService, projectService moduleService .

      :
      ( , , ) ;
      :
      "serviceInterface" – ; "serviceImplementaion" – .


      .
      plugin.xml:
      <extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
      : , , .

      : 1 , 2 , 3 , 4 , 5 , 6 , 7 .
    • , com.intellij.modules . :
      <idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

      plugin.xml, IDEA. plugin.xml , .
      IntelliJ:
      com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
      :
      com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
      PhpStorm , PHP , : com.jetbrains.php .
      . , Java , :
      <depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
      , , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

      IntelliJ IDEA
      – IDEA. . .


      .
      – jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
      .IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
      – :
      .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
      Classes lib classpath.
      – jar-, lib:
      .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


      , IDEA . , IDEA .
      -, , . , plugin.xml, depends . , . .


      – . :
      ; ; .
      IntelliJ IDEA.
      Application getComponent(Class).

      Project ( ). Project getComponent(Class).

      , IDEA. Module.

      , . , . , (, , ) .

      , . getComponentName(). : < ><>< >.

      , , ApplicationComponent. , , . , , IDEA , .

      <application-components> plugin.xml.
      IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
      New Java Alt+Insert; New Application Component; New Application Component, OK.
      IDEA , ApplicationComponent, plugin.xml, Module Tree View .

      , ProjectComponent. Project, . , .

      <project-components> . IDE, "New | Project Component".

      ModuleComponent. . <module-components> "New | Module Component".


      , : JDOMExternalizable (, ) PersistentStateComponent.
      PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
      JDOMExternalizable, :
      (.ipr), plugin.xml «workspace» – .iws; .iml .

      :
      – ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
      :
      – writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
      getComponent() - . , , initComponent().


      Intellij IDEA , IDEA.
      , , . , . .

      .
      , , , . plugin.xml:
      <extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

      "interface" , . "beanClass" , @Attribute . , plugin.xml.
      MyBeanClass1:
      public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
      MyExtPoint, "key" "implementationClass" .

      :
      «xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
      , .

      , ;
      , : "interface", "implementation", – , ; "beanClass", , @Attribute .


      (Actions)
      Intellij IDEA (actions).
      – , AnAction, actionPerformed() , .

      , . . .
      .


      – , , getService() ServiceManager. Intellij IDEA , , .

      , plugin.xml. .

      , .. , , applicationService, projectService moduleService .

      :
      ( , , ) ;
      :
      "serviceInterface" – ; "serviceImplementaion" – .


      .
      plugin.xml:
      <extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
      : , , .

      : 1 , 2 , 3 , 4 , 5 , 6 , 7 .
    , com.intellij.modules . :
    <idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

    plugin.xml, IDEA. plugin.xml , .
    IntelliJ:
    com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
    :
    com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
    PhpStorm , PHP , : com.jetbrains.php .
    . , Java , :
    <depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
    , , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

    IntelliJ IDEA
    – IDEA. . .


    .
    – jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
    .IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
    – :
    .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
    Classes lib classpath.
    – jar-, lib:
    .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


    , IDEA . , IDEA .
    -, , . , plugin.xml, depends . , . .


    – . :
    ; ; .
    IntelliJ IDEA.
    Application getComponent(Class).

    Project ( ). Project getComponent(Class).

    , IDEA. Module.

    , . , . , (, , ) .

    , . getComponentName(). : < ><>< >.

    , , ApplicationComponent. , , . , , IDEA , .

    <application-components> plugin.xml.
    IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
    New Java Alt+Insert; New Application Component; New Application Component, OK.
    IDEA , ApplicationComponent, plugin.xml, Module Tree View .

    , ProjectComponent. Project, . , .

    <project-components> . IDE, "New | Project Component".

    ModuleComponent. . <module-components> "New | Module Component".


    , : JDOMExternalizable (, ) PersistentStateComponent.
    PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
    JDOMExternalizable, :
    (.ipr), plugin.xml «workspace» – .iws; .iml .

    :
    – ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
    :
    – writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
    getComponent() - . , , initComponent().


    Intellij IDEA , IDEA.
    , , . , . .

    .
    , , , . plugin.xml:
    <extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

    "interface" , . "beanClass" , @Attribute . , plugin.xml.
    MyBeanClass1:
    public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
    MyExtPoint, "key" "implementationClass" .

    :
    «xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
    , .

    , ;
    , : "interface", "implementation", – , ; "beanClass", , @Attribute .


    (Actions)
    Intellij IDEA (actions).
    – , AnAction, actionPerformed() , .

    , . . .
    .


    – , , getService() ServiceManager. Intellij IDEA , , .

    , plugin.xml. .

    , .. , , applicationService, projectService moduleService .

    :
    ( , , ) ;
    :
    "serviceInterface" – ; "serviceImplementaion" – .


    .
    plugin.xml:
    <extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
    : , , .

    : 1 , 2 , 3 , 4 , 5 , 6 , 7 .
    • , com.intellij.modules . :
      <idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

      plugin.xml, IDEA. plugin.xml , .
      IntelliJ:
      com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
      :
      com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
      PhpStorm , PHP , : com.jetbrains.php .
      . , Java , :
      <depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
      , , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

      IntelliJ IDEA
      – IDEA. . .


      .
      – jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
      .IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
      – :
      .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
      Classes lib classpath.
      – jar-, lib:
      .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


      , IDEA . , IDEA .
      -, , . , plugin.xml, depends . , . .


      – . :
      ; ; .
      IntelliJ IDEA.
      Application getComponent(Class).

      Project ( ). Project getComponent(Class).

      , IDEA. Module.

      , . , . , (, , ) .

      , . getComponentName(). : < ><>< >.

      , , ApplicationComponent. , , . , , IDEA , .

      <application-components> plugin.xml.
      IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
      New Java Alt+Insert; New Application Component; New Application Component, OK.
      IDEA , ApplicationComponent, plugin.xml, Module Tree View .

      , ProjectComponent. Project, . , .

      <project-components> . IDE, "New | Project Component".

      ModuleComponent. . <module-components> "New | Module Component".


      , : JDOMExternalizable (, ) PersistentStateComponent.
      PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
      JDOMExternalizable, :
      (.ipr), plugin.xml «workspace» – .iws; .iml .

      :
      – ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
      :
      – writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
      getComponent() - . , , initComponent().


      Intellij IDEA , IDEA.
      , , . , . .

      .
      , , , . plugin.xml:
      <extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

      "interface" , . "beanClass" , @Attribute . , plugin.xml.
      MyBeanClass1:
      public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
      MyExtPoint, "key" "implementationClass" .

      :
      «xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
      , .

      , ;
      , : "interface", "implementation", – , ; "beanClass", , @Attribute .


      (Actions)
      Intellij IDEA (actions).
      – , AnAction, actionPerformed() , .

      , . . .
      .


      – , , getService() ServiceManager. Intellij IDEA , , .

      , plugin.xml. .

      , .. , , applicationService, projectService moduleService .

      :
      ( , , ) ;
      :
      "serviceInterface" – ; "serviceImplementaion" – .


      .
      plugin.xml:
      <extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
      : , , .

      : 1 , 2 , 3 , 4 , 5 , 6 , 7 .
    • , com.intellij.modules . :
      <idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

      plugin.xml, IDEA. plugin.xml , .
      IntelliJ:
      com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
      :
      com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
      PhpStorm , PHP , : com.jetbrains.php .
      . , Java , :
      <depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
      , , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

      IntelliJ IDEA
      – IDEA. . .


      .
      – jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
      .IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
      – :
      .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
      Classes lib classpath.
      – jar-, lib:
      .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


      , IDEA . , IDEA .
      -, , . , plugin.xml, depends . , . .


      – . :
      ; ; .
      IntelliJ IDEA.
      Application getComponent(Class).

      Project ( ). Project getComponent(Class).

      , IDEA. Module.

      , . , . , (, , ) .

      , . getComponentName(). : < ><>< >.

      , , ApplicationComponent. , , . , , IDEA , .

      <application-components> plugin.xml.
      IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
      New Java Alt+Insert; New Application Component; New Application Component, OK.
      IDEA , ApplicationComponent, plugin.xml, Module Tree View .

      , ProjectComponent. Project, . , .

      <project-components> . IDE, "New | Project Component".

      ModuleComponent. . <module-components> "New | Module Component".


      , : JDOMExternalizable (, ) PersistentStateComponent.
      PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
      JDOMExternalizable, :
      (.ipr), plugin.xml «workspace» – .iws; .iml .

      :
      – ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
      :
      – writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
      getComponent() - . , , initComponent().


      Intellij IDEA , IDEA.
      , , . , . .

      .
      , , , . plugin.xml:
      <extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

      "interface" , . "beanClass" , @Attribute . , plugin.xml.
      MyBeanClass1:
      public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
      MyExtPoint, "key" "implementationClass" .

      :
      «xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
      , .

      , ;
      , : "interface", "implementation", – , ; "beanClass", , @Attribute .


      (Actions)
      Intellij IDEA (actions).
      – , AnAction, actionPerformed() , .

      , . . .
      .


      – , , getService() ServiceManager. Intellij IDEA , , .

      , plugin.xml. .

      , .. , , applicationService, projectService moduleService .

      :
      ( , , ) ;
      :
      "serviceInterface" – ; "serviceImplementaion" – .


      .
      plugin.xml:
      <extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
      : , , .

      : 1 , 2 , 3 , 4 , 5 , 6 , 7 .
    , com.intellij.modules . :
    <idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

    plugin.xml, IDEA. plugin.xml , .
    IntelliJ:
    com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
    :
    com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
    PhpStorm , PHP , : com.jetbrains.php .
    . , Java , :
    <depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
    , , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

    IntelliJ IDEA
    – IDEA. . .


    .
    – jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
    .IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
    – :
    .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
    Classes lib classpath.
    – jar-, lib:
    .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


    , IDEA . , IDEA .
    -, , . , plugin.xml, depends . , . .


    – . :
    ; ; .
    IntelliJ IDEA.
    Application getComponent(Class).

    Project ( ). Project getComponent(Class).

    , IDEA. Module.

    , . , . , (, , ) .

    , . getComponentName(). : < ><>< >.

    , , ApplicationComponent. , , . , , IDEA , .

    <application-components> plugin.xml.
    IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
    New Java Alt+Insert; New Application Component; New Application Component, OK.
    IDEA , ApplicationComponent, plugin.xml, Module Tree View .

    , ProjectComponent. Project, . , .

    <project-components> . IDE, "New | Project Component".

    ModuleComponent. . <module-components> "New | Module Component".


    , : JDOMExternalizable (, ) PersistentStateComponent.
    PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
    JDOMExternalizable, :
    (.ipr), plugin.xml «workspace» – .iws; .iml .

    :
    – ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
    :
    – writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
    getComponent() - . , , initComponent().


    Intellij IDEA , IDEA.
    , , . , . .

    .
    , , , . plugin.xml:
    <extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

    "interface" , . "beanClass" , @Attribute . , plugin.xml.
    MyBeanClass1:
    public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
    MyExtPoint, "key" "implementationClass" .

    :
    «xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
    , .

    , ;
    , : "interface", "implementation", – , ; "beanClass", , @Attribute .


    (Actions)
    Intellij IDEA (actions).
    – , AnAction, actionPerformed() , .

    , . . .
    .


    – , , getService() ServiceManager. Intellij IDEA , , .

    , plugin.xml. .

    , .. , , applicationService, projectService moduleService .

    :
    ( , , ) ;
    :
    "serviceInterface" – ; "serviceImplementaion" – .


    .
    plugin.xml:
    <extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
    : , , .

    : 1 , 2 , 3 , 4 , 5 , 6 , 7 .

    , com.intellij.modules . :
    <idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

    plugin.xml, IDEA. plugin.xml , .
    IntelliJ:
    com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
    :
    com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
    PhpStorm , PHP , : com.jetbrains.php .
    . , Java , :
    <depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
    , , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

    IntelliJ IDEA
    – IDEA. . .


    .
    – jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
    .IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
    – :
    .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
    Classes lib classpath.
    – jar-, lib:
    .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


    , IDEA . , IDEA .
    -, , . , plugin.xml, depends . , . .


    – . :
    ; ; .
    IntelliJ IDEA.
    Application getComponent(Class).

    Project ( ). Project getComponent(Class).

    , IDEA. Module.

    , . , . , (, , ) .

    , . getComponentName(). : < ><>< >.

    , , ApplicationComponent. , , . , , IDEA , .

    <application-components> plugin.xml.
    IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
    New Java Alt+Insert; New Application Component; New Application Component, OK.
    IDEA , ApplicationComponent, plugin.xml, Module Tree View .

    , ProjectComponent. Project, . , .

    <project-components> . IDE, "New | Project Component".

    ModuleComponent. . <module-components> "New | Module Component".


    , : JDOMExternalizable (, ) PersistentStateComponent.
    PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
    JDOMExternalizable, :
    (.ipr), plugin.xml «workspace» – .iws; .iml .

    :
    – ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
    :
    – writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
    getComponent() - . , , initComponent().


    Intellij IDEA , IDEA.
    , , . , . .

    .
    , , , . plugin.xml:
    <extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

    "interface" , . "beanClass" , @Attribute . , plugin.xml.
    MyBeanClass1:
    public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
    MyExtPoint, "key" "implementationClass" .

    :
    «xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
    , .

    , ;
    , : "interface", "implementation", – , ; "beanClass", , @Attribute .


    (Actions)
    Intellij IDEA (actions).
    – , AnAction, actionPerformed() , .

    , . . .
    .


    – , , getService() ServiceManager. Intellij IDEA , , .

    , plugin.xml. .

    , .. , , applicationService, projectService moduleService .

    :
    ( , , ) ;
    :
    "serviceInterface" – ; "serviceImplementaion" – .


    .
    plugin.xml:
    <extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
    : , , .

    : 1 , 2 , 3 , 4 , 5 , 6 , 7 .

    , com.intellij.modules . :
    <idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

    plugin.xml, IDEA. plugin.xml , .
    IntelliJ:
    com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
    :
    com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
    PhpStorm , PHP , : com.jetbrains.php .
    . , Java , :
    <depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
    , , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

    IntelliJ IDEA
    – IDEA. . .


    .
    – jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
    .IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
    – :
    .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
    Classes lib classpath.
    – jar-, lib:
    .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


    , IDEA . , IDEA .
    -, , . , plugin.xml, depends . , . .


    – . :
    ; ; .
    IntelliJ IDEA.
    Application getComponent(Class).

    Project ( ). Project getComponent(Class).

    , IDEA. Module.

    , . , . , (, , ) .

    , . getComponentName(). : < ><>< >.

    , , ApplicationComponent. , , . , , IDEA , .

    <application-components> plugin.xml.
    IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
    New Java Alt+Insert; New Application Component; New Application Component, OK.
    IDEA , ApplicationComponent, plugin.xml, Module Tree View .

    , ProjectComponent. Project, . , .

    <project-components> . IDE, "New | Project Component".

    ModuleComponent. . <module-components> "New | Module Component".


    , : JDOMExternalizable (, ) PersistentStateComponent.
    PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
    JDOMExternalizable, :
    (.ipr), plugin.xml «workspace» – .iws; .iml .

    :
    – ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
    :
    – writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
    getComponent() - . , , initComponent().


    Intellij IDEA , IDEA.
    , , . , . .

    .
    , , , . plugin.xml:
    <extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

    "interface" , . "beanClass" , @Attribute . , plugin.xml.
    MyBeanClass1:
    public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
    MyExtPoint, "key" "implementationClass" .

    :
    «xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
    , .

    , ;
    , : "interface", "implementation", – , ; "beanClass", , @Attribute .


    (Actions)
    Intellij IDEA (actions).
    – , AnAction, actionPerformed() , .

    , . . .
    .


    – , , getService() ServiceManager. Intellij IDEA , , .

    , plugin.xml. .

    , .. , , applicationService, projectService moduleService .

    :
    ( , , ) ;
    :
    "serviceInterface" – ; "serviceImplementaion" – .


    .
    plugin.xml:
    <extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
    : , , .

    : 1 , 2 , 3 , 4 , 5 , 6 , 7 .

    , com.intellij.modules . :
    <idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

    plugin.xml, IDEA. plugin.xml , .
    IntelliJ:
    com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
    :
    com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
    PhpStorm , PHP , : com.jetbrains.php .
    . , Java , :
    <depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
    , , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

    IntelliJ IDEA
    – IDEA. . .


    .
    – jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
    .IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
    – :
    .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
    Classes lib classpath.
    – jar-, lib:
    .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


    , IDEA . , IDEA .
    -, , . , plugin.xml, depends . , . .


    – . :
    ; ; .
    IntelliJ IDEA.
    Application getComponent(Class).

    Project ( ). Project getComponent(Class).

    , IDEA. Module.

    , . , . , (, , ) .

    , . getComponentName(). : < ><>< >.

    , , ApplicationComponent. , , . , , IDEA , .

    <application-components> plugin.xml.
    IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
    New Java Alt+Insert; New Application Component; New Application Component, OK.
    IDEA , ApplicationComponent, plugin.xml, Module Tree View .

    , ProjectComponent. Project, . , .

    <project-components> . IDE, "New | Project Component".

    ModuleComponent. . <module-components> "New | Module Component".


    , : JDOMExternalizable (, ) PersistentStateComponent.
    PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
    JDOMExternalizable, :
    (.ipr), plugin.xml «workspace» – .iws; .iml .

    :
    – ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
    :
    – writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
    getComponent() - . , , initComponent().


    Intellij IDEA , IDEA.
    , , . , . .

    .
    , , , . plugin.xml:
    <extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

    "interface" , . "beanClass" , @Attribute . , plugin.xml.
    MyBeanClass1:
    public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
    MyExtPoint, "key" "implementationClass" .

    :
    «xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
    , .

    , ;
    , : "interface", "implementation", – , ; "beanClass", , @Attribute .


    (Actions)
    Intellij IDEA (actions).
    – , AnAction, actionPerformed() , .

    , . . .
    .


    – , , getService() ServiceManager. Intellij IDEA , , .

    , plugin.xml. .

    , .. , , applicationService, projectService moduleService .

    :
    ( , , ) ;
    :
    "serviceInterface" – ; "serviceImplementaion" – .


    .
    plugin.xml:
    <extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
    : , , .

    : 1 , 2 , 3 , 4 , 5 , 6 , 7 .

    , com.intellij.modules . :
    <idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

    plugin.xml, IDEA. plugin.xml , .
    IntelliJ:
    com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
    :
    com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
    PhpStorm , PHP , : com.jetbrains.php .
    . , Java , :
    <depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
    , , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

    IntelliJ IDEA
    – IDEA. . .


    .
    – jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
    .IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
    – :
    .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
    Classes lib classpath.
    – jar-, lib:
    .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


    , IDEA . , IDEA .
    -, , . , plugin.xml, depends . , . .


    – . :
    ; ; .
    IntelliJ IDEA.
    Application getComponent(Class).

    Project ( ). Project getComponent(Class).

    , IDEA. Module.

    , . , . , (, , ) .

    , . getComponentName(). : < ><>< >.

    , , ApplicationComponent. , , . , , IDEA , .

    <application-components> plugin.xml.
    IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
    New Java Alt+Insert; New Application Component; New Application Component, OK.
    IDEA , ApplicationComponent, plugin.xml, Module Tree View .

    , ProjectComponent. Project, . , .

    <project-components> . IDE, "New | Project Component".

    ModuleComponent. . <module-components> "New | Module Component".


    , : JDOMExternalizable (, ) PersistentStateComponent.
    PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
    JDOMExternalizable, :
    (.ipr), plugin.xml «workspace» – .iws; .iml .

    :
    – ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
    :
    – writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
    getComponent() - . , , initComponent().


    Intellij IDEA , IDEA.
    , , . , . .

    .
    , , , . plugin.xml:
    <extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

    "interface" , . "beanClass" , @Attribute . , plugin.xml.
    MyBeanClass1:
    public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
    MyExtPoint, "key" "implementationClass" .

    :
    «xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
    , .

    , ;
    , : "interface", "implementation", – , ; "beanClass", , @Attribute .


    (Actions)
    Intellij IDEA (actions).
    – , AnAction, actionPerformed() , .

    , . . .
    .


    – , , getService() ServiceManager. Intellij IDEA , , .

    , plugin.xml. .

    , .. , , applicationService, projectService moduleService .

    :
    ( , , ) ;
    :
    "serviceInterface" – ; "serviceImplementaion" – .


    .
    plugin.xml:
    <extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
    : , , .

    : 1 , 2 , 3 , 4 , 5 , 6 , 7 .
    • , com.intellij.modules . :
      <idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

      plugin.xml, IDEA. plugin.xml , .
      IntelliJ:
      com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
      :
      com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
      PhpStorm , PHP , : com.jetbrains.php .
      . , Java , :
      <depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
      , , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

      IntelliJ IDEA
      – IDEA. . .


      .
      – jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
      .IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
      – :
      .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
      Classes lib classpath.
      – jar-, lib:
      .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


      , IDEA . , IDEA .
      -, , . , plugin.xml, depends . , . .


      – . :
      ; ; .
      IntelliJ IDEA.
      Application getComponent(Class).

      Project ( ). Project getComponent(Class).

      , IDEA. Module.

      , . , . , (, , ) .

      , . getComponentName(). : < ><>< >.

      , , ApplicationComponent. , , . , , IDEA , .

      <application-components> plugin.xml.
      IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
      New Java Alt+Insert; New Application Component; New Application Component, OK.
      IDEA , ApplicationComponent, plugin.xml, Module Tree View .

      , ProjectComponent. Project, . , .

      <project-components> . IDE, "New | Project Component".

      ModuleComponent. . <module-components> "New | Module Component".


      , : JDOMExternalizable (, ) PersistentStateComponent.
      PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
      JDOMExternalizable, :
      (.ipr), plugin.xml «workspace» – .iws; .iml .

      :
      – ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
      :
      – writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
      getComponent() - . , , initComponent().


      Intellij IDEA , IDEA.
      , , . , . .

      .
      , , , . plugin.xml:
      <extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

      "interface" , . "beanClass" , @Attribute . , plugin.xml.
      MyBeanClass1:
      public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
      MyExtPoint, "key" "implementationClass" .

      :
      «xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
      , .

      , ;
      , : "interface", "implementation", – , ; "beanClass", , @Attribute .


      (Actions)
      Intellij IDEA (actions).
      – , AnAction, actionPerformed() , .

      , . . .
      .


      – , , getService() ServiceManager. Intellij IDEA , , .

      , plugin.xml. .

      , .. , , applicationService, projectService moduleService .

      :
      ( , , ) ;
      :
      "serviceInterface" – ; "serviceImplementaion" – .


      .
      plugin.xml:
      <extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
      : , , .

      : 1 , 2 , 3 , 4 , 5 , 6 , 7 .
      • , com.intellij.modules . :
        <idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

        plugin.xml, IDEA. plugin.xml , .
        IntelliJ:
        com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
        :
        com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
        PhpStorm , PHP , : com.jetbrains.php .
        . , Java , :
        <depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
        , , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

        IntelliJ IDEA
        – IDEA. . .


        .
        – jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
        .IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
        – :
        .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
        Classes lib classpath.
        – jar-, lib:
        .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


        , IDEA . , IDEA .
        -, , . , plugin.xml, depends . , . .


        – . :
        ; ; .
        IntelliJ IDEA.
        Application getComponent(Class).

        Project ( ). Project getComponent(Class).

        , IDEA. Module.

        , . , . , (, , ) .

        , . getComponentName(). : < ><>< >.

        , , ApplicationComponent. , , . , , IDEA , .

        <application-components> plugin.xml.
        IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
        New Java Alt+Insert; New Application Component; New Application Component, OK.
        IDEA , ApplicationComponent, plugin.xml, Module Tree View .

        , ProjectComponent. Project, . , .

        <project-components> . IDE, "New | Project Component".

        ModuleComponent. . <module-components> "New | Module Component".


        , : JDOMExternalizable (, ) PersistentStateComponent.
        PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
        JDOMExternalizable, :
        (.ipr), plugin.xml «workspace» – .iws; .iml .

        :
        – ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
        :
        – writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
        getComponent() - . , , initComponent().


        Intellij IDEA , IDEA.
        , , . , . .

        .
        , , , . plugin.xml:
        <extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

        "interface" , . "beanClass" , @Attribute . , plugin.xml.
        MyBeanClass1:
        public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
        MyExtPoint, "key" "implementationClass" .

        :
        «xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
        , .

        , ;
        , : "interface", "implementation", – , ; "beanClass", , @Attribute .


        (Actions)
        Intellij IDEA (actions).
        – , AnAction, actionPerformed() , .

        , . . .
        .


        – , , getService() ServiceManager. Intellij IDEA , , .

        , plugin.xml. .

        , .. , , applicationService, projectService moduleService .

        :
        ( , , ) ;
        :
        "serviceInterface" – ; "serviceImplementaion" – .


        .
        plugin.xml:
        <extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
        : , , .

        : 1 , 2 , 3 , 4 , 5 , 6 , 7 .
      • , com.intellij.modules . :
        <idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

        plugin.xml, IDEA. plugin.xml , .
        IntelliJ:
        com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
        :
        com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
        PhpStorm , PHP , : com.jetbrains.php .
        . , Java , :
        <depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
        , , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

        IntelliJ IDEA
        – IDEA. . .


        .
        – jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
        .IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
        – :
        .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
        Classes lib classpath.
        – jar-, lib:
        .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


        , IDEA . , IDEA .
        -, , . , plugin.xml, depends . , . .


        – . :
        ; ; .
        IntelliJ IDEA.
        Application getComponent(Class).

        Project ( ). Project getComponent(Class).

        , IDEA. Module.

        , . , . , (, , ) .

        , . getComponentName(). : < ><>< >.

        , , ApplicationComponent. , , . , , IDEA , .

        <application-components> plugin.xml.
        IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
        New Java Alt+Insert; New Application Component; New Application Component, OK.
        IDEA , ApplicationComponent, plugin.xml, Module Tree View .

        , ProjectComponent. Project, . , .

        <project-components> . IDE, "New | Project Component".

        ModuleComponent. . <module-components> "New | Module Component".


        , : JDOMExternalizable (, ) PersistentStateComponent.
        PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
        JDOMExternalizable, :
        (.ipr), plugin.xml «workspace» – .iws; .iml .

        :
        – ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
        :
        – writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
        getComponent() - . , , initComponent().


        Intellij IDEA , IDEA.
        , , . , . .

        .
        , , , . plugin.xml:
        <extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

        "interface" , . "beanClass" , @Attribute . , plugin.xml.
        MyBeanClass1:
        public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
        MyExtPoint, "key" "implementationClass" .

        :
        «xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
        , .

        , ;
        , : "interface", "implementation", – , ; "beanClass", , @Attribute .


        (Actions)
        Intellij IDEA (actions).
        – , AnAction, actionPerformed() , .

        , . . .
        .


        – , , getService() ServiceManager. Intellij IDEA , , .

        , plugin.xml. .

        , .. , , applicationService, projectService moduleService .

        :
        ( , , ) ;
        :
        "serviceInterface" – ; "serviceImplementaion" – .


        .
        plugin.xml:
        <extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
        : , , .

        : 1 , 2 , 3 , 4 , 5 , 6 , 7 .
      , com.intellij.modules . :
      <idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

      plugin.xml, IDEA. plugin.xml , .
      IntelliJ:
      com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
      :
      com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
      PhpStorm , PHP , : com.jetbrains.php .
      . , Java , :
      <depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
      , , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

      IntelliJ IDEA
      – IDEA. . .


      .
      – jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
      .IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
      – :
      .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
      Classes lib classpath.
      – jar-, lib:
      .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


      , IDEA . , IDEA .
      -, , . , plugin.xml, depends . , . .


      – . :
      ; ; .
      IntelliJ IDEA.
      Application getComponent(Class).

      Project ( ). Project getComponent(Class).

      , IDEA. Module.

      , . , . , (, , ) .

      , . getComponentName(). : < ><>< >.

      , , ApplicationComponent. , , . , , IDEA , .

      <application-components> plugin.xml.
      IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
      New Java Alt+Insert; New Application Component; New Application Component, OK.
      IDEA , ApplicationComponent, plugin.xml, Module Tree View .

      , ProjectComponent. Project, . , .

      <project-components> . IDE, "New | Project Component".

      ModuleComponent. . <module-components> "New | Module Component".


      , : JDOMExternalizable (, ) PersistentStateComponent.
      PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
      JDOMExternalizable, :
      (.ipr), plugin.xml «workspace» – .iws; .iml .

      :
      – ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
      :
      – writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
      getComponent() - . , , initComponent().


      Intellij IDEA , IDEA.
      , , . , . .

      .
      , , , . plugin.xml:
      <extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

      "interface" , . "beanClass" , @Attribute . , plugin.xml.
      MyBeanClass1:
      public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
      MyExtPoint, "key" "implementationClass" .

      :
      «xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
      , .

      , ;
      , : "interface", "implementation", – , ; "beanClass", , @Attribute .


      (Actions)
      Intellij IDEA (actions).
      – , AnAction, actionPerformed() , .

      , . . .
      .


      – , , getService() ServiceManager. Intellij IDEA , , .

      , plugin.xml. .

      , .. , , applicationService, projectService moduleService .

      :
      ( , , ) ;
      :
      "serviceInterface" – ; "serviceImplementaion" – .


      .
      plugin.xml:
      <extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
      : , , .

      : 1 , 2 , 3 , 4 , 5 , 6 , 7 .
       ,     com.intellij.modules . : 
      <idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

      plugin.xml, IDEA. plugin.xml , .
      IntelliJ:
      com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
      :
      com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
      PhpStorm , PHP , : com.jetbrains.php .
      . , Java , :
      <depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
      , , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

      IntelliJ IDEA
      – IDEA. . .


      .
      – jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
      .IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
      – :
      .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
      Classes lib classpath.
      – jar-, lib:
      .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


      , IDEA . , IDEA .
      -, , . , plugin.xml, depends . , . .


      – . :
      ; ; .
      IntelliJ IDEA.
      Application getComponent(Class).

      Project ( ). Project getComponent(Class).

      , IDEA. Module.

      , . , . , (, , ) .

      , . getComponentName(). : < ><>< >.

      , , ApplicationComponent. , , . , , IDEA , .

      <application-components> plugin.xml.
      IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
      New Java Alt+Insert; New Application Component; New Application Component, OK.
      IDEA , ApplicationComponent, plugin.xml, Module Tree View .

      , ProjectComponent. Project, . , .

      <project-components> . IDE, "New | Project Component".

      ModuleComponent. . <module-components> "New | Module Component".


      , : JDOMExternalizable (, ) PersistentStateComponent.
      PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
      JDOMExternalizable, :
      (.ipr), plugin.xml «workspace» – .iws; .iml .

      :
      – ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
      :
      – writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
      getComponent() - . , , initComponent().


      Intellij IDEA , IDEA.
      , , . , . .

      .
      , , , . plugin.xml:
      <extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

      "interface" , . "beanClass" , @Attribute . , plugin.xml.
      MyBeanClass1:
      public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
      MyExtPoint, "key" "implementationClass" .

      :
      «xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
      , .

      , ;
      , : "interface", "implementation", – , ; "beanClass", , @Attribute .


      (Actions)
      Intellij IDEA (actions).
      – , AnAction, actionPerformed() , .

      , . . .
      .


      – , , getService() ServiceManager. Intellij IDEA , , .

      , plugin.xml. .

      , .. , , applicationService, projectService moduleService .

      :
      ( , , ) ;
      :
      "serviceInterface" – ; "serviceImplementaion" – .


      .
      plugin.xml:
      <extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
      : , , .

      : 1 , 2 , 3 , 4 , 5 , 6 , 7 .
      , com.intellij.modules . :
      <idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

      plugin.xml, IDEA. plugin.xml , .
      IntelliJ:
      com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
      :
      com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
      PhpStorm , PHP , : com.jetbrains.php .
      . , Java , :
      <depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
      , , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

      IntelliJ IDEA
      – IDEA. . .


      .
      – jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
      .IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
      – :
      .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
      Classes lib classpath.
      – jar-, lib:
      .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


      , IDEA . , IDEA .
      -, , . , plugin.xml, depends . , . .


      – . :
      ; ; .
      IntelliJ IDEA.
      Application getComponent(Class).

      Project ( ). Project getComponent(Class).

      , IDEA. Module.

      , . , . , (, , ) .

      , . getComponentName(). : < ><>< >.

      , , ApplicationComponent. , , . , , IDEA , .

      <application-components> plugin.xml.
      IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
      New Java Alt+Insert; New Application Component; New Application Component, OK.
      IDEA , ApplicationComponent, plugin.xml, Module Tree View .

      , ProjectComponent. Project, . , .

      <project-components> . IDE, "New | Project Component".

      ModuleComponent. . <module-components> "New | Module Component".


      , : JDOMExternalizable (, ) PersistentStateComponent.
      PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
      JDOMExternalizable, :
      (.ipr), plugin.xml «workspace» – .iws; .iml .

      :
      – ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
      :
      – writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
      getComponent() - . , , initComponent().


      Intellij IDEA , IDEA.
      , , . , . .

      .
      , , , . plugin.xml:
      <extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

      "interface" , . "beanClass" , @Attribute . , plugin.xml.
      MyBeanClass1:
      public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
      MyExtPoint, "key" "implementationClass" .

      :
      «xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
      , .

      , ;
      , : "interface", "implementation", – , ; "beanClass", , @Attribute .


      (Actions)
      Intellij IDEA (actions).
      – , AnAction, actionPerformed() , .

      , . . .
      .


      – , , getService() ServiceManager. Intellij IDEA , , .

      , plugin.xml. .

      , .. , , applicationService, projectService moduleService .

      :
      ( , , ) ;
      :
      "serviceInterface" – ; "serviceImplementaion" – .


      .
      plugin.xml:
      <extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
      : , , .

      : 1 , 2 , 3 , 4 , 5 , 6 , 7 .
      , com.intellij.modules . :
      <idea-plugin version="2"> ... <depends>com.intellij.modules.lang</depends> ... </idea-plugin>

      plugin.xml, IDEA. plugin.xml , .
      IntelliJ:
      com.intellij.modules.platform; com.intellij.modules.lang; com.intellij.modules.vcs; com.intellij.modules.xml; com.intellij.modules.xdebugger.
      :
      com.intellij.modules.java – IntelliJ IDEA; com.intellij.modules.ruby – RubyMine; com.intellij.modules.python – PyCharm; com.intellij.modules.objc – AppCode.
      PhpStorm , PHP , : com.jetbrains.php .
      . , Java , :
      <depends optional="true" config-file="my-java-features.xml">com.intellij.modules.java</depends>
      , , API IntelliJ IDEA. , SDK RubyMine PyCharm, SDK .

      IntelliJ IDEA
      – IDEA. . .


      .
      – jar-, plugins. (META-INF/plugin.xml) , . , , , IDE, , , .
      .IntelliJIDEAx0 plugins sample.jar/ com/foo/..... ... ... META-INF plugin.xml
      – :
      .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar classes com/foo/..... ... ... META-INF plugin.xml
      Classes lib classpath.
      – jar-, lib:
      .IntelliJIDEAx0 plugins Sample lib libfoo.jar libbar.jar Sample.jar/ com/foo/..... ... ... META-INF plugin.xml


      , IDEA . , IDEA .
      -, , . , plugin.xml, depends . , . .


      – . :
      ; ; .
      IntelliJ IDEA.
      Application getComponent(Class).

      Project ( ). Project getComponent(Class).

      , IDEA. Module.

      , . , . , (, , ) .

      , . getComponentName(). : < ><>< >.

      , , ApplicationComponent. , , . , , IDEA , .

      <application-components> plugin.xml.
      IntelliJ IDEA , . IDEA <application-component> plugin.xml. :
      New Java Alt+Insert; New Application Component; New Application Component, OK.
      IDEA , ApplicationComponent, plugin.xml, Module Tree View .

      , ProjectComponent. Project, . , .

      <project-components> . IDE, "New | Project Component".

      ModuleComponent. . <module-components> "New | Module Component".


      , : JDOMExternalizable (, ) PersistentStateComponent.
      PersistentStateComponent, XML , @State @Storage (-, < >.xml ).
      JDOMExternalizable, :
      (.ipr), plugin.xml «workspace» – .iws; .iml .

      :
      – ; – initComponent ( ApplicationComponent); – readExternal ( JDOMExternalizable) loadState ( PersistentStateComponent -); – moduleAdded ( ModuleComponent); – projectOpened ( ProjectComponent).
      :
      – writeExternal ( JDOMExternalizable) getState ( PersistentStateComponent); – disposeComponent.
      getComponent() - . , , initComponent().


      Intellij IDEA , IDEA.
      , , . , . .

      .
      , , , . plugin.xml:
      <extensionPoints> <extensionPoint name="MyExtensionPoint1" beanClass="MyPlugin.MyBeanClass1"> <extensionPoint name="MyExtensionPoint2 interface="MyPlugin.MyInterface"> </extensionPoints>

      "interface" , . "beanClass" , @Attribute . , plugin.xml.
      MyBeanClass1:
      public class MyBeanClass1 extends AbstractExtensionPointBean { @Attribute("key") public String key; @Attribute("implementationClass") public String implementationClass; public String getKey() { return key; } public String getClass() { return implementationClass; } }
      MyExtPoint, "key" "implementationClass" .

      :
      «xmlns» () «defaultExtensionNs» : "com.intellij", IDEA; < >
      , .

      , ;
      , : "interface", "implementation", – , ; "beanClass", , @Attribute .


      (Actions)
      Intellij IDEA (actions).
      – , AnAction, actionPerformed() , .

      , . . .
      .


      – , , getService() ServiceManager. Intellij IDEA , , .

      , plugin.xml. .

      , .. , , applicationService, projectService moduleService .

      :
      ( , , ) ;
      :
      "serviceInterface" – ; "serviceImplementaion" – .


      .
      plugin.xml:
      <extensions defaultExtensionNs="com.intellij"> <!-- --> <applicationService serviceInterface="Mypackage.MyServiceInterfaceClass" serviceImplementation="Mypackage.MyServiceImplClass"> </applicationService> <!-- --> <projectService serviceInterface="Mypackage.MyProjectServiceImplClass" serviceImplementation="Mypackage.MyProjectServiceImplClass"> </projectService> </extensions>
      : , , .

      : 1 , 2 , 3 , 4 , 5 , 6 , 7 .

Source: https://habr.com/ru/post/J187106/


All Articles