Merge commit '42b2e5ca519766e37ce6941ba4faecc9691cc403' into upstream
[debian/openrocket] / core / src / net / sf / openrocket / plugin / example / stuff.txt
diff --git a/core/src/net/sf/openrocket/plugin/example/stuff.txt b/core/src/net/sf/openrocket/plugin/example/stuff.txt
new file mode 100644 (file)
index 0000000..e4a4fc3
--- /dev/null
@@ -0,0 +1,135 @@
+
+
+
+Plugin:
+
+foo()
+bar()
+getValue()
+setValue()
+
+
+
+Service:
+
+getPlugins(args...)
+capabilities()  ->  "pluginid:service"
+
+
+
+SwingConfigurator:
+
+getConfigurationComponent(plugin)
+capabilities()  ->  "pluginid:config"
+
+
+
+
+OpenRocketSimulationListener extends SimulationListener implements Service, SwingConfigurator:
+
+
+constructor:
+  pluginid = class name
+  
+
+getPlugins():
+  return new this
+
+capabilities: pluginid:service, pluginid:config
+
+getConfigurationComponent(plugin)
+  plugin.getConfigurationComponent()
+
+abstract getConfigurationComponent()
+
+
+
+
+
+Types of plugins:
+
+
+AtmosphericModel
+ - Name -> dropdown
+ - Config component -> dialog window (or button)
+ - stateful, non-dynamic
+ - stored
+
+SimulationListener
+ - Name + menu position -> Add extension menu
+ - Config component -> dialog after edit button
+ - stateful, (dynamic?)
+ - stored
+
+OptimizationModifier
+ - contains its own name, description, related object
+ - config N/A
+ - stateful, dynamic
+ - not stored
+OptimizationParameter
+ - name
+ - config N/A
+ - stateful, (dynamic?)
+ - not stored
+
+PluginDialogWindow
+ - name + menu position -> Menu
+ - stateful, non-dynamic
+ - not stored
+
+Motor
+ - Name -> Config tab
+ - Config component -> tab contents ????
+ - or a separate configuration interface?
+ - stored
+
+
+
+Name is common  -  out, instead have name separately in plugin interfaces?
+Menu position used twice  -  out
+
+Leave common configuration out
+ -> :config supported by those that make sense
+ -> may have separate interface from SwingConfigurator (e.g. SwingMotorConfigurator)
+
+Motor
+ -> :loader separately?  for injecting placeholders
+    or store data and call loaders later
+
+
+
+
+<extension pluginid="com.example.MyFancyExtension">
+  <param type="double" key="altitude">100.0</param>
+  <param type="material" key="mat">
+    <name>Gold</name>
+    <type>bulk</type>
+    <density>16000</density>
+  </param>
+</extension>
+
+
+<extension pluginid="com.example.MyFancyExtension">
+  <param type="double" key="altitude">100.0</param>
+  <param type="material" key="mat">
+    <name>Gold</name>
+    <type>bulk</type>
+    <density>16000</density>
+  </param>
+</extension>
+
+
+<extension pluginid="com.example.MyFancyExtension">
+</extension>
+
+
+<extension pluginid="com.example.MyFancyExtension">
+</extension>
+
+