mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-13 15:52:01 +07:00
58 lines
1.5 KiB
Plaintext
58 lines
1.5 KiB
Plaintext
@startuml
|
|
!include jb-plantuml-theme.puml
|
|
|
|
' https://www.augmentedmind.de/2021/01/17/plantuml-layout-tutorial-styles/
|
|
|
|
component "[[https://youtrack.jetbrains.com/articles/IJPL-A-31/Plugin-Model plugin]]" as P
|
|
|
|
folder content as PluginContent {
|
|
[module name="…" 0…N] as M
|
|
[module name="…" N] as M_N
|
|
|
|
|
|
M .. M_N : a sibling cannot access classes from each other\n unless specified as a dependency
|
|
|
|
note right of M : ""content"" is not allowed and is not supported for module.
|
|
|
|
folder dependencies as ModuleDependencies {
|
|
(module name="…" 0…N) as MDM
|
|
(plugin id="…" 0…N) as MDP
|
|
|
|
note right of MDM
|
|
The dependency is specified in a module descriptor itself in a new model,
|
|
not where the module is referenced.
|
|
end note
|
|
|
|
' force PlantUML to place `module` below of `plugin`
|
|
MDM -[hidden]d- MDP
|
|
}
|
|
|
|
note bottom of ModuleDependencies
|
|
Module dependency is always optional.
|
|
If the module depends on an unavailable plugin, it will not be loaded.
|
|
end note
|
|
|
|
M .> P : a module can access classes from a containing plugin
|
|
|
|
M -down- ModuleDependencies
|
|
}
|
|
|
|
note top of PluginContent
|
|
Every plugin is a module, but not every module is a plugin.
|
|
A plugin is a group of related modules and for now,
|
|
it is the only way to distribute modules.
|
|
end note
|
|
|
|
folder dependencies as PluginDependencies {
|
|
(module name="…" 0…N) as PDM
|
|
(plugin id="…" 0…N) as PDP
|
|
|
|
PDM -[hidden]d- PDP
|
|
}
|
|
|
|
note top of PluginDependencies : Same as for ""module""
|
|
|
|
P -down- PluginContent
|
|
P -down- PluginDependencies
|
|
|
|
@enduml |