Files
openide/docs/plugin-model.puml
Vladimir Krivosheev 6b4fff9550 update plantuml
GitOrigin-RevId: 1a59bc88b6b91c1f4c9115467af9d1f459da6a0b
2023-05-18 20:16:30 +00:00

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