Index: doc/menu classes.uxf
===================================================================
--- doc/menu classes.uxf	(revision 8166250ffff8b35d39b69b5f4f1dbd9d2d9f4aec)
+++ doc/menu classes.uxf	(revision 3c5606481cdb4d2a55354f27895b7974cc9aca2b)
@@ -21,5 +21,5 @@
 
 
-// This text will be stored with each diagram;  use it for notes.</help_text><zoom_level>7</zoom_level><element><type>com.umlet.element.base.Class</type><coordinates><x>266</x><y>21</y><w>147</w><h>98</h></coordinates><panel_attributes>Menu
+// This text will be stored with each diagram;  use it for notes.</help_text><zoom_level>7</zoom_level><element><type>com.umlet.element.base.Class</type><coordinates><x>1057</x><y>42</y><w>147</w><h>98</h></coordinates><panel_attributes>Menu
 --
 --
@@ -30,5 +30,5 @@
 #display()
 --
--- Base class for all Menus</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>266</x><y>168</y><w>147</w><h>175</h></coordinates><panel_attributes>TextMenu
+-- Base class for all Menus</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1057</x><y>189</y><w>147</w><h>175</h></coordinates><panel_attributes>TextMenu
 --
 outputter: ostream
@@ -46,5 +46,5 @@
 hasQuit(): bool
 showEntry(MenuItem*)
-</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>784</x><y>0</y><w>259</w><h>266</h></coordinates><panel_attributes>MenuItem
+</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1575</x><y>21</y><w>259</w><h>266</h></coordinates><panel_attributes>MenuItem
 --
 char trigger: char
@@ -70,7 +70,7 @@
 Constraints
 -- A MenuItem always belongs to a single
--- Destruction is done by the owning menu</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>392</x><y>42</y><w>405</w><h>34</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-
+-- Destruction is done by the owning menu</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1183</x><y>63</y><w>405</w><h>34</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-
 m1=1
-m2=1...N</panel_attributes><additional_attributes>21;21;392;21</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>315</x><y>98</y><w>34</w><h>83</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>21;21;21;70</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>791</x><y>630</y><w>252</w><h>84</h></coordinates><panel_attributes>ActionMenuItem
+m2=1...N</panel_attributes><additional_attributes>21;21;392;21</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1106</x><y>119</y><w>34</w><h>83</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>21;21;21;70</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1582</x><y>651</y><w>252</w><h>84</h></coordinates><panel_attributes>ActionMenuItem
 --
 
@@ -82,5 +82,5 @@
 Responsibilities
 -- Call action.call() when the trigger is recieved
-</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>882</x><y>245</y><w>34</w><h>398</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>21;21;21;385</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1246</x><y>371</y><w>238</w><h>182</h></coordinates><panel_attributes>DisplayMenuItem
+</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1673</x><y>266</y><w>34</w><h>398</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>21;21;21;385</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>2037</x><y>392</y><w>238</w><h>182</h></coordinates><panel_attributes>DisplayMenuItem
 --
 string title;
@@ -98,5 +98,5 @@
 Responsibilities
 -- Display any kind of stringView within a Menu
--- All trigger are ignored</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1589</x><y>406</y><w>287</w><h>84</h></coordinates><panel_attributes>StringView
+-- All trigger are ignored</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>2380</x><y>427</y><w>287</w><h>84</h></coordinates><panel_attributes>StringView
 --
 --
@@ -106,7 +106,7 @@
 --
 Responsibilities
--- Base class for anything that can be displayed as a String</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1463</x><y>420</y><w>139</w><h>34</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-
+-- Base class for anything that can be displayed as a String</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>2254</x><y>441</y><w>139</w><h>34</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-
 m1=1...N
-m2=1</panel_attributes><additional_attributes>21;21;126;21</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>882</x><y>245</y><w>447</w><h>139</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>21;21;21;105;434;105;434;126</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>938</x><y>385</y><w>217</w><h>154</h></coordinates><panel_attributes>SeperatorItem
+m2=1</panel_attributes><additional_attributes>21;21;126;21</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1673</x><y>266</y><w>447</w><h>139</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>21;21;21;105;434;105;434;126</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1729</x><y>406</y><w>217</w><h>154</h></coordinates><panel_attributes>SeperatorItem
 --
 spacer: char
@@ -122,5 +122,5 @@
 --
 Responsibilities
--- Display a seperating line of spacers </panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>882</x><y>245</y><w>174</w><h>153</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>21;21;21;105;161;105;161;140</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>511</x><y>322</y><w>252</w><h>98</h></coordinates><panel_attributes>&lt;&lt;composite&gt;&gt;
+-- Display a seperating line of spacers </panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1673</x><y>266</y><w>174</w><h>153</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>21;21;21;105;161;105;161;140</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1302</x><y>343</y><w>252</w><h>98</h></coordinates><panel_attributes>&lt;&lt;composite&gt;&gt;
 SubMenuItem
 --
@@ -131,20 +131,22 @@
 --
 Responsibilities
--- Produce a submenu when this item is triggered</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>392</x><y>77</y><w>132</w><h>321</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-
+-- Produce a submenu when this item is triggered</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1183</x><y>98</y><w>132</w><h>321</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-
 m1=1
-m2=1</panel_attributes><additional_attributes>119;308;77;308;77;21;21;21</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>609</x><y>245</y><w>307</w><h>90</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>294;21;294;56;21;56;21;77</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>532</x><y>623</y><w>154</w><h>119</h></coordinates><panel_attributes>&lt;&lt;Command&gt;&gt;
+m2=1</panel_attributes><additional_attributes>119;308;77;308;77;21;21;21</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1400</x><y>266</y><w>307</w><h>90</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>294;21;294;56;21;56;21;77</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1288</x><y>644</y><w>231</w><h>133</h></coordinates><panel_attributes>&lt;&lt;Command&gt;&gt;
 Action
 --
---
-#Action()
+name : string
+--
+#Action(std::string _name,bool _doRegister=true)
 /+~Action()/
 /+call()/
 /+undo()/
 /+canUndo(): bool/
---
-Responsibilities
--- Perfom an Operation on call</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>665</x><y>637</y><w>139</w><h>34</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-
+/+getName(): const string/
+--
+Responsibilities
+-- Perfom an Operation on call</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1498</x><y>658</y><w>97</w><h>34</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-
 m1=0...N
-m2=1</panel_attributes><additional_attributes>126;21;21;21</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>658</x><y>826</y><w>238</w><h>133</h></coordinates><panel_attributes>&lt;&lt;Wrapper&gt;&gt;
+m2=1</panel_attributes><additional_attributes>84;21;21;21</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1484</x><y>847</y><w>238</w><h>133</h></coordinates><panel_attributes>&lt;&lt;Wrapper&gt;&gt;
 MethodAction
 --
@@ -158,5 +160,5 @@
 --
 Responsibilities
--- Transform an ordinary method into an Action</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>581</x><y>721</y><w>202</w><h>118</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>21;21;21;70;189;70;189;105</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1645</x><y>238</y><w>182</w><h>56</h></coordinates><panel_attributes>&lt;&lt;View&gt;&gt;
+-- Transform an ordinary method into an Action</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1386</x><y>756</y><w>223</w><h>104</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>21;21;21;56;210;56;210;91</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>2436</x><y>259</y><w>182</w><h>56</h></coordinates><panel_attributes>&lt;&lt;View&gt;&gt;
 View
 --
@@ -165,5 +167,5 @@
 Responsibilities
 -- Anything that needs to be shown
-</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1715</x><y>273</y><w>34</w><h>146</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>21;21;21;133</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1428</x><y>623</y><w>287</w><h>105</h></coordinates><panel_attributes>&lt;&lt;Wrapper&gt;&gt;
+</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>2506</x><y>294</y><w>34</w><h>146</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>21;21;21;133</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>2219</x><y>644</y><w>287</w><h>105</h></coordinates><panel_attributes>&lt;&lt;Wrapper&gt;&gt;
 MethodStringView
 --
@@ -175,5 +177,5 @@
 --
 Responsibilities
--- Turn any method that returns a string into a StringView</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1771</x><y>623</y><w>329</w><h>105</h></coordinates><panel_attributes>&lt;&lt;Wrapper&gt;&gt;
+-- Turn any method that returns a string into a StringView</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>2562</x><y>644</y><w>329</w><h>105</h></coordinates><panel_attributes>&lt;&lt;Wrapper&gt;&gt;
 StreamStringView
 --
@@ -185,5 +187,5 @@
 --
 Responsibilities
--- Turn any method that uses a stream for output into a StringView</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1547</x><y>469</y><w>195</w><h>167</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>182;21;182;84;21;84;21;154</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1708</x><y>469</y><w>244</w><h>167</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>21;21;21;84;231;84;231;154</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>413</x><y>826</y><w>196</w><h>119</h></coordinates><panel_attributes>&lt;&lt;composite&gt;&gt;
+-- Turn any method that uses a stream for output into a StringView</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>2338</x><y>490</y><w>195</w><h>167</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>182;21;182;84;21;84;21;154</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>2499</x><y>490</y><w>244</w><h>167</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>21;21;21;84;231;84;231;154</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1022</x><y>847</y><w>196</w><h>119</h></coordinates><panel_attributes>&lt;&lt;composite&gt;&gt;
 MakroAction
 --
@@ -196,5 +198,5 @@
 --
 Responsibilities
--- Group several small actions together</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>140</x><y>623</y><w>231</w><h>133</h></coordinates><panel_attributes>ActionSequence
+-- Group several small actions together</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>700</x><y>644</y><w>231</w><h>133</h></coordinates><panel_attributes>ActionSequence
 --
 --
@@ -208,7 +210,61 @@
 --
 Responsibilities
--- Group several actions together for later use</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>350</x><y>665</y><w>195</w><h>34</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-
+-- Group several actions together for later use</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>910</x><y>686</y><w>391</w><h>34</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-
 m1=0...N
-m2=1...N</panel_attributes><additional_attributes>21;21;182;21</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>350</x><y>693</y><w>76</w><h>202</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-
+m2=1...N</panel_attributes><additional_attributes>21;21;378;21</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>910</x><y>714</y><w>125</w><h>202</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-
 m1=1
-m2=1</panel_attributes><additional_attributes>63;189;42;189;42;21;21;21</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>490</x><y>721</y><w>125</w><h>118</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>112;21;112;70;21;70;21;105</additional_attributes></element></umlet_diagram>
+m2=1</panel_attributes><additional_attributes>112;189;77;189;77;21;21;21</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1099</x><y>756</y><w>321</w><h>104</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>308;21;308;56;21;56;21;91</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1890</x><y>868</y><w>217</w><h>91</h></coordinates><panel_attributes>&lt;&lt;singleton&gt;&gt;
+ActionRegistry
+--
+--
+getActionByName(const std::string) : Action*;
+registerAction(Action*);
+--
+Responsibilities
+-- Stores all actions by name for later retrieval
+-- handle destruction of all registered actions</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1498</x><y>728</y><w>398</w><h>181</h></coordinates><panel_attributes>lt=&lt;&lt;&lt;&lt;-</panel_attributes><additional_attributes>385;168;294;168;294;21;21;21</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1498</x><y>742</y><w>405</w><h>195</h></coordinates><panel_attributes>lt=&lt;.
+registers itself upon creation
+</panel_attributes><additional_attributes>392;182;273;182;273;84;133;84;133;21;21;21</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>1295</x><y>756</y><w>125</w><h>111</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>112;21;112;56;21;56;21;98</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>1246</x><y>854</y><w>182</w><h>77</h></coordinates><panel_attributes>ErrorAction
+--
+--
+/+call()/
+/+undo()/
+/+canUndo()/
+--
+Responsibilities
+-- Display some kind of error Message</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>399</x><y>21</y><w>469</w><h>91</h></coordinates><panel_attributes>&lt;&lt;Abstract Factory&gt;&gt;
+&lt;&lt;Singleton&gt;&gt;
+UIFactory
+--
+--
+/+makeMainWindow(menuPopulaters,MoleculeListClass *, config *, periodentafel *, char *): MainWindow*/
+/+makeDialog() : Dialog*/
+--
+Responsibilities
+-- Handles creation of all UIElements</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>399</x><y>238</y><w>462</w><h>133</h></coordinates><panel_attributes>&lt;&lt;Concrete Factory&gt;&gt;
+TextUIFactory
+--
+--
+/+makeMainWindow(menuPopulaters,MoleculeListClass *, config *, periodentafel *, char *): MainWindow*/
+/+makeDialog() : Dialog*/
+--
+Responsibilities
+-- Production of all kinds of TextWidgets</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>714</x><y>91</y><w>120</w><h>160</h></coordinates><panel_attributes>lt=&lt;.
+creates and stores</panel_attributes><additional_attributes>63;147;63;21</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>847</x><y>56</y><w>223</w><h>49</h></coordinates><panel_attributes>lt=&lt;.
+creates abstract</panel_attributes><additional_attributes>210;35;21;35</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>840</x><y>259</y><w>230</w><h>49</h></coordinates><panel_attributes>lt=&lt;.
+creates concrete</panel_attributes><additional_attributes>217;35;21;35</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>0</x><y>28</y><w>238</w><h>63</h></coordinates><panel_attributes>MainWindow
+--
+--
+/+display()/
+--
+Responsibilities
+-- Abstract base class for all kinds of MainWindows</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>217</x><y>35</y><w>195</w><h>49</h></coordinates><panel_attributes>lt=&lt;.
+creates abstract</panel_attributes><additional_attributes>21;35;182;35</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>21</x><y>259</y><w>196</w><h>56</h></coordinates><panel_attributes>TextWindow
+--
+--
+/+display()/
+--
+Responsibilities
+-- Special class for MainWindow in TextUIs</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>91</x><y>70</y><w>34</w><h>202</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>21;21;21;189</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>196</x><y>259</y><w>216</w><h>49</h></coordinates><panel_attributes>lt=&lt;.
+creates concrete
+</panel_attributes><additional_attributes>21;35;203;35</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>560</x><y>91</y><w>34</w><h>160</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>21;21;21;147</additional_attributes></element></umlet_diagram>
