<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sk">
	<id>http://www.kiwiki.info/index.php?action=history&amp;feed=atom&amp;title=D%C3%A1tov%C3%A1_%C4%8Das%C5%A5_simula%C4%8Dn%C3%BDch_komponentov</id>
	<title>Dátová časť simulačných komponentov - História úprav</title>
	<link rel="self" type="application/atom+xml" href="http://www.kiwiki.info/index.php?action=history&amp;feed=atom&amp;title=D%C3%A1tov%C3%A1_%C4%8Das%C5%A5_simula%C4%8Dn%C3%BDch_komponentov"/>
	<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=D%C3%A1tov%C3%A1_%C4%8Das%C5%A5_simula%C4%8Dn%C3%BDch_komponentov&amp;action=history"/>
	<updated>2026-05-06T09:20:53Z</updated>
	<subtitle>História úprav pre túto stránku na wiki</subtitle>
	<generator>MediaWiki 1.34.0</generator>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=D%C3%A1tov%C3%A1_%C4%8Das%C5%A5_simula%C4%8Dn%C3%BDch_komponentov&amp;diff=6360&amp;oldid=prev</id>
		<title>Juraj na 16:56, 29. júl 2010</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=D%C3%A1tov%C3%A1_%C4%8Das%C5%A5_simula%C4%8Dn%C3%BDch_komponentov&amp;diff=6360&amp;oldid=prev"/>
		<updated>2010-07-29T16:56:35Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sk&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Staršia verzia&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Verzia zo dňa a času 16:56, 29. júl 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l2&quot; &gt;Riadok 2:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Riadok 2:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Kategória:Diplomové práce]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Kategória:Diplomové práce]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Kategória:Informatika]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Kategória:Informatika]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{Hlavička_FM|{{PAGENAME}}|Bc. Michal Janíček|&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Ing. Juraj Ďuďák|&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;2009/2010&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Diplomový projekt&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|Mechatronika&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Praca_uvod|3|Interaktívny simulátor DynaSim|Platforma NetBeans|Vizuálna časť programu DynaSim|Dátová časť simulačných komponentov|Okná a toolbary programu DynaSim|Funkčná časť programu DynaSim}}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Praca_uvod|3|Interaktívny simulátor DynaSim|Platforma NetBeans|Vizuálna časť programu DynaSim|Dátová časť simulačných komponentov|Okná a toolbary programu DynaSim|Funkčná časť programu DynaSim}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;__TOC__&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;__TOC__&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Juraj</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=D%C3%A1tov%C3%A1_%C4%8Das%C5%A5_simula%C4%8Dn%C3%BDch_komponentov&amp;diff=4386&amp;oldid=prev</id>
		<title>MichalJanicek na 21:26, 18. máj 2010</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=D%C3%A1tov%C3%A1_%C4%8Das%C5%A5_simula%C4%8Dn%C3%BDch_komponentov&amp;diff=4386&amp;oldid=prev"/>
		<updated>2010-05-18T21:26:34Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sk&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Staršia verzia&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Verzia zo dňa a času 21:26, 18. máj 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l16&quot; &gt;Riadok 16:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Riadok 16:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==MyNode==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==MyNode==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Táto trieda predstavuje v DynaSimScene uzol samotný a SVG_Widget je len jeho grafickou reprezentáciou. Trieda samotná je na vrchole hierarchie, dedí len z triedy Object. Konštruktor je nasledovný:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Táto trieda predstavuje v DynaSimScene uzol samotný a SVG_Widget je len jeho grafickou reprezentáciou. Trieda samotná je na vrchole hierarchie, dedí len z triedy Object. Konštruktor je nasledovný:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  public &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;'''&lt;/del&gt;MyNode&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;'''&lt;/del&gt;(String title, String category, String name, Point location)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  public MyNode(String title, String category, String name, Point location)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/source&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Parameter title je názov komponentu, ten sa získava z XML dokumentu, category je meno kategórie do ktorej komponent patrí. XML dokument sa parsuje v konštruktore MyNode, ale aby sme získali jeho meno, potrebujeme XML parsovať ešte predtým. To sa vykonáva v triede BrowseFolders pri tvorbe palety. Meno kategórie je vlastne meno adresára v ktorom je uložený SVG a XML súbor daného komponentu. Name je názov SVG/XML súboru bez prípony a location je miesto, na ktoré sa widget prilepí na scénu.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Parameter title je názov komponentu, ten sa získava z XML dokumentu, category je meno kategórie do ktorej komponent patrí. XML dokument sa parsuje v konštruktore MyNode, ale aby sme získali jeho meno, potrebujeme XML parsovať ešte predtým. To sa vykonáva v triede BrowseFolders pri tvorbe palety. Meno kategórie je vlastne meno adresára v ktorom je uložený SVG a XML súbor daného komponentu. Name je názov SVG/XML súboru bez prípony a location je miesto, na ktoré sa widget prilepí na scénu.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;V konštruktore sa inicializujú niektoré premenné z parametrov a zavolá sa metóda readXML(), pomocou ktorej sa rozparsuje XML súbor, ktorého cesta sa poskladá z mena kategórie a mena súboru, ktoré sme získali z parametrov.  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;V konštruktore sa inicializujú niektoré premenné z parametrov a zavolá sa metóda readXML(), pomocou ktorej sa rozparsuje XML súbor, ktorého cesta sa poskladá z mena kategórie a mena súboru, ktoré sme získali z parametrov.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l31&quot; &gt;Riadok 31:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Riadok 33:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===MyEdge a MyPin===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===MyEdge a MyPin===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;MyEdge a MyPin predstavujú dátovú &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;vrstu &lt;/del&gt;pre spojovaciu čiaru a pin. Každému pinu sa pridelí po jeho vytvorení cez generátor unikátne číslo a to sa zapíše do členskej premennej MyPin s názvom id ako String. Každý MyPin má getter a setter pre premennú typu Point. Hodnota tohto bodu sa získava z XML súboru a používa sa na prilepenie pinu na zvolené miesto v rámci komponentu. MyPin &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;ešte &lt;/del&gt;obsahuje premennú typu boolean s názvom isInput. Tá určuje či je pin vstup alebo výstup. Táto informácia &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;as &lt;/del&gt;taktiež získa z XML súboru a ak je element typu input, isInput má hodnotu true, ak je element typu output, isInput má hodnotu false.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;MyEdge a MyPin predstavujú dátovú &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;vrstvu &lt;/ins&gt;pre spojovaciu čiaru a pin. Každému pinu sa pridelí po jeho vytvorení cez generátor unikátne číslo a to sa zapíše do členskej premennej MyPin s názvom id ako String. Každý MyPin má getter a setter pre premennú typu Point. Hodnota tohto bodu sa získava z XML súboru a používa sa na prilepenie pinu na zvolené miesto v rámci komponentu. MyPin obsahuje premennú typu boolean s názvom isInput. Tá určuje či je pin vstup alebo výstup. Táto informácia &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;sa &lt;/ins&gt;taktiež získa z XML súboru a ak je element typu input, isInput má hodnotu true, ak je element typu output, isInput má hodnotu false&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;. V premennej connectedPin drží inštanciu pinu s ktorým je tento pin prepojený spojovacou čiarou. Nakoniec má ešte premennú terminalValue typu Value, čo je univerzálny dátový typ, ktorý je nutné používať keďže sa dopredu nedá určiť, s akým dátovým typom bude tento terminál narábať. O aký konkrétny dátový typ sa jedná sa určí v konštruktore na základe mena a typu hodnoty priradenej tomuto pinu. Tie sú opäť získané z XML dokumentu. V ňom sa jedná o atribúty type a name ktoré patria elementu input resp. output, podľa typu terminálu. MyPin obsahuje aj metódu disconnected(). Tá sa zavolá keď sa pin odpojí od spojovacej čiary a tým sa jeho hodnota vynuluje&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;MyEdge je &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;tiež tvorené &lt;/del&gt;len gettermi a settermi. Má 2 premenné typu String s menom &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;''&lt;/del&gt;source&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;'' &lt;/del&gt;a &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;''&lt;/del&gt;target&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;''&lt;/del&gt;. Tie predstavujú id pinov, ktoré sú spojené touto čiarou.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;MyEdge je &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;tvorená &lt;/ins&gt;len gettermi a settermi. Má 2 premenné typu String s menom source a target. Tie predstavujú id pinov, ktoré sú spojené touto čiarou.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Tvorba Properties okna pomocou MyPropertyNode==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Tvorba Properties okna pomocou MyPropertyNode==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l39&quot; &gt;Riadok 39:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Riadok 41:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Súbor:Dynasim10.jpg|center|framed|Obr.10 Príklad Properies okna]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Súbor:Dynasim10.jpg|center|framed|Obr.10 Príklad Properies okna]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Aby sa takéto okno po označení nejakého komponentu vygenerovalo, musí byť splnených niekoľko nutných podmienok. V prvom rade sa musí vyriešiť medzimodulová komunikácia. Kým sa modul DynaSim stará o editačnú plochu, ktorá je v okne ''editor'', nachádzajúca sa v centrálnej časti programového interface, okno Properties sa nachádza v okne properties, ktoré sa štandardne nachádza v pravej dolnej časti programu a je riadené modulom Nodes API. Ten treba pridať ako závislosť na modul DynaSim. Tým sa však ešte komunikácia medzi modulmi nevyriešila, lebo okno properties stále nebude vedieť, či je vôbec niečo v okne editora označené. Na to existuje trieda Lookup. Za normálnych okolností môže mať jeden TopComponent len jeden Lookup, avšak DynaSimTopComponent potrebuje dva, jeden pre Property okno a druhý nesôkôr pre paletu. To sa dá obísť cez vytvorenie InstanceContent:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Aby sa takéto okno po označení nejakého komponentu vygenerovalo, musí byť splnených niekoľko nutných podmienok. V prvom rade sa musí vyriešiť medzimodulová komunikácia. Kým sa modul DynaSim stará o editačnú plochu, ktorá je v okne ''editor'', nachádzajúca sa v centrálnej časti programového interface, okno Properties sa nachádza v okne properties, ktoré sa štandardne nachádza v pravej dolnej časti programu a je riadené modulom Nodes API. Ten treba pridať ako závislosť na modul DynaSim. Tým sa však ešte komunikácia medzi modulmi nevyriešila, lebo okno properties stále nebude vedieť, či je vôbec niečo v okne editora označené. Na to existuje trieda Lookup. Za normálnych okolností môže mať jeden TopComponent len jeden Lookup, avšak DynaSimTopComponent potrebuje dva, jeden pre Property okno a druhý nesôkôr pre paletu. To sa dá obísť cez vytvorenie InstanceContent:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  private InstanceContent content = new InstanceContent();&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  private InstanceContent content = new InstanceContent();&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/source&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;V konštruktore DynaSimTopComponentu potom vytvoríme abstraktný lookup a pridáme ho Topcomponentu nasledovne:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;V konštruktore DynaSimTopComponentu potom vytvoríme abstraktný lookup a pridáme ho Topcomponentu nasledovne:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  associateLookup(new AbstractLookup(content));&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  associateLookup(new AbstractLookup(content));&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/source&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;InstanceContent content sa potom prenáša medzi triedami ako premenná v ich konštruktore, z DynaSimTopComponent-u do DynaSimScene, z tej ďalej do Component_Widget – po pridaní simulačného komponentu na plochu editora.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;InstanceContent content sa potom prenáša medzi triedami ako premenná v ich konštruktore, z DynaSimTopComponent-u do DynaSimScene, z tej ďalej do Component_Widget – po pridaní simulačného komponentu na plochu editora.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Component_Widget má zdedenú metódu z triedy Widget s názvom notifyStateChanged, ktorá sleduje zmenu stavu widgetu. Nasledovná časť kódu je z tejto metódy a rieši, čo sa stane po kliknutí na komponent na editačnej ploche.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Component_Widget má zdedenú metódu z triedy Widget s názvom notifyStateChanged, ktorá sleduje zmenu stavu widgetu. Nasledovná časť kódu je z tejto metódy a rieši, čo sa stane po kliknutí na komponent na editačnej ploche.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  if(newState.isSelected()){&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  if(newState.isSelected()){&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;              propNode = new MyPropertyNode(this.getNode());&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;              propNode = new MyPropertyNode(this.getNode());&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l55&quot; &gt;Riadok 55:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Riadok 62:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;                  Exceptions.printStackTrace(ex);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;                  Exceptions.printStackTrace(ex);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;              }&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;              }&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/source&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Ak je komponent označený vytvorí sa nová inštancia MyPropertyNode, kde sa za parameter dosadí MyNode inštancia zviazaná s týmto komponentom. V ďalšom riadku sa novovytvorená inštancia uloží do content. A tým sme vlastne dosiahli, že sa nám po kliknutí na simulačný komponent vytvorí propertySheet. Problém je, že sa nám potom stratí paleta, preto treba znova pridať cez content.add kontrolér palety. Slučka else rieši, čo sa stane, keď sa objekt odznačí, napr. Kliknutím na editačnú plochu. Metóda propNode.destroy() zruší túto MyPropertyNode a tým sa Properties okno vynuluje.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Ak je komponent označený vytvorí sa nová inštancia MyPropertyNode, kde sa za parameter dosadí MyNode inštancia zviazaná s týmto komponentom. V ďalšom riadku sa novovytvorená inštancia uloží do content. A tým sme vlastne dosiahli, že sa nám po kliknutí na simulačný komponent vytvorí propertySheet. Problém je, že sa nám potom stratí paleta, preto treba znova pridať cez content.add kontrolér palety. Slučka else rieši, čo sa stane, keď sa objekt odznačí, napr. Kliknutím na editačnú plochu. Metóda propNode.destroy() zruší túto MyPropertyNode a tým sa Properties okno vynuluje.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Aby toto všetko mohlo fungovať aj trieda MyPropertyNode musí spĺňať jednu podmienku a to, že musí byť rozšírením AbstractNode triedy. Jej deklarácia je nasledovná:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Aby toto všetko mohlo fungovať aj trieda MyPropertyNode musí spĺňať jednu podmienku a to, že musí byť rozšírením AbstractNode triedy. Jej deklarácia je nasledovná:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  public class MyPropertyNode extends AbstractNode implements PropertyChangeListener&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  public class MyPropertyNode extends AbstractNode implements PropertyChangeListener&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/source&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Konštruktor:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Konštruktor:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  public MyPropertyNode(MyNode node) {&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  public MyPropertyNode(MyNode node) {&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;          super(Children.LEAF);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;          super(Children.LEAF);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;          this.node = node;     &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;          this.node = node;     &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  }&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  }&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/source&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;AbstractNode má v konštruktore parameter pre inštanciu triedy Children, pretože sa obvykle používa pri stromových štruktúrach uzlov. V našom prípade však máme len samostatné uzly typu MyNode a nemajú ďalšie detské uzly, preto sa použije LEAF ako koncový uzol. MyPropertyNode má metódu createSheet(), ktorú zdedila z AbstractNode. Táto metóda slúži na vytvorenie Property okna typu Sheet a jeho naplnenie položkami a ich príslušnými hodnotami. Na začiatku sa vytvorí nová inštancia triedy Sheet. Vytvorením inštancie Sheet.Set sa vytvorí nový blok v Properties okne a cez set príkazy mu je možné prideliť meno a popis. Jednotlivé hodnoty položiek, ktoré sa majú v takomto bloku zobrazovať sa nachádzajú v inštancii triedy MyNode. Ako tieto hodnoty zobraziť v Properties okne sa dá jednoducho ukázať na nasledovnom príklade:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;AbstractNode má v konštruktore parameter pre inštanciu triedy Children, pretože sa obvykle používa pri stromových štruktúrach uzlov. V našom prípade však máme len samostatné uzly typu MyNode a nemajú ďalšie detské uzly, preto sa použije LEAF ako koncový uzol. MyPropertyNode má metódu createSheet(), ktorú zdedila z AbstractNode. Táto metóda slúži na vytvorenie Property okna typu Sheet a jeho naplnenie položkami a ich príslušnými hodnotami. Na začiatku sa vytvorí nová inštancia triedy Sheet. Vytvorením inštancie Sheet.Set sa vytvorí nový blok v Properties okne a cez set príkazy mu je možné prideliť meno a popis. Jednotlivé hodnoty položiek, ktoré sa majú v takomto bloku zobrazovať sa nachádzajú v inštancii triedy MyNode. Ako tieto hodnoty zobraziť v Properties okne sa dá jednoducho ukázať na nasledovnom príklade:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  Property categoryProp = new PropertySupport.Reflection (node, String.class, &amp;quot;getCategory&amp;quot;, null);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  Property categoryProp = new PropertySupport.Reflection (node, String.class, &amp;quot;getCategory&amp;quot;, null);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/source&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Konštruktor triedy Reflection je nasledovný:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Konštruktor triedy Reflection je nasledovný:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  Reflection (Object o, Class type, String method1, String method2);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  Reflection (Object o, Class type, String method1, String method2);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/source&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Object o predstavuje triedu z ktorej chceme danú hodnotu získať resp. nastaviť cez Properties okno. Class type je typ premennej s ktorou chceme pracovať, to môže byť int.class, String.class a pod. String method1 predstavuje názov getteru pre túto premennú a method2 názov setteru v s Stringu. Ak má method2 hodnotu null nie je možné meniť jeho hodnotu pomocou Properties okna. Z toho vyplýva, že v predošlom príklade chceme z inštancie node typu MyNode získať premennú dátového typu String. Názov getteru je getCathegory() a nie je možné meniť túto hodnotu cez setter v Properties okne.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Object o predstavuje triedu z ktorej chceme danú hodnotu získať resp. nastaviť cez Properties okno. Class type je typ premennej s ktorou chceme pracovať, to môže byť int.class, String.class a pod. String method1 predstavuje názov getteru pre túto premennú a method2 názov setteru v s Stringu. Ak má method2 hodnotu null nie je možné meniť jeho hodnotu pomocou Properties okna. Z toho vyplýva, že v predošlom príklade chceme z inštancie node typu MyNode získať premennú dátového typu String. Názov getteru je getCathegory() a nie je možné meniť túto hodnotu cez setter v Properties okne.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>MichalJanicek</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=D%C3%A1tov%C3%A1_%C4%8Das%C5%A5_simula%C4%8Dn%C3%BDch_komponentov&amp;diff=3778&amp;oldid=prev</id>
		<title>MichalJanicek: Vytvorená stránka „Kategória:Študentské práce Kategória:Diplomové práce Kategória:Informatika {{Hlavička_FM|{{PAGENAME}}|Bc. Michal Janíček| Ing. Juraj Ďuďák| 2009/2…“</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=D%C3%A1tov%C3%A1_%C4%8Das%C5%A5_simula%C4%8Dn%C3%BDch_komponentov&amp;diff=3778&amp;oldid=prev"/>
		<updated>2010-04-18T22:02:09Z</updated>

		<summary type="html">&lt;p&gt;Vytvorená stránka „&lt;a href=&quot;/index.php/Kateg%C3%B3ria:%C5%A0tudentsk%C3%A9_pr%C3%A1ce&quot; title=&quot;Kategória:Študentské práce&quot;&gt;Kategória:Študentské práce&lt;/a&gt; &lt;a href=&quot;/index.php/Kateg%C3%B3ria:Diplomov%C3%A9_pr%C3%A1ce&quot; title=&quot;Kategória:Diplomové práce&quot;&gt;Kategória:Diplomové práce&lt;/a&gt; &lt;a href=&quot;/index.php/Kateg%C3%B3ria:Informatika&quot; title=&quot;Kategória:Informatika&quot;&gt;Kategória:Informatika&lt;/a&gt; {{Hlavička_FM|{{PAGENAME}}|Bc. Michal Janíček| Ing. Juraj Ďuďák| 2009/2…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nová stránka&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Kategória:Študentské práce]]&lt;br /&gt;
[[Kategória:Diplomové práce]]&lt;br /&gt;
[[Kategória:Informatika]]&lt;br /&gt;
{{Hlavička_FM|{{PAGENAME}}|Bc. Michal Janíček|&lt;br /&gt;
Ing. Juraj Ďuďák|&lt;br /&gt;
2009/2010&lt;br /&gt;
|Diplomový projekt&lt;br /&gt;
|Mechatronika&lt;br /&gt;
}}&lt;br /&gt;
{{Praca_uvod|3|Interaktívny simulátor DynaSim|Platforma NetBeans|Vizuálna časť programu DynaSim|Dátová časť simulačných komponentov|Okná a toolbary programu DynaSim|Funkčná časť programu DynaSim}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Dátová časť simulačných komponentov=&lt;br /&gt;
Widgety v sebe uchovávajú len grafickú časť komponentu. Druhý problém je, že na scéne môže byť len jeden widget z každého druhu, čiže by na scéne mohol byť len jeden Integer, len jeden Slider atď. Aby sme tento problém odstránili, je potrebné každý widget zviazať s inštanciou triedy, ktorá v sebe uchováva dáta. Dáta jednotlivých komponentov môžu predstavovať napríklad meno, kategóriu, cestu k SVG a XML súboru, vnútorné stavy a ďalšie potrebné údaje.&lt;br /&gt;
&lt;br /&gt;
==MyNode==&lt;br /&gt;
Táto trieda predstavuje v DynaSimScene uzol samotný a SVG_Widget je len jeho grafickou reprezentáciou. Trieda samotná je na vrchole hierarchie, dedí len z triedy Object. Konštruktor je nasledovný:&lt;br /&gt;
 public '''MyNode'''(String title, String category, String name, Point location)&lt;br /&gt;
Parameter title je názov komponentu, ten sa získava z XML dokumentu, category je meno kategórie do ktorej komponent patrí. XML dokument sa parsuje v konštruktore MyNode, ale aby sme získali jeho meno, potrebujeme XML parsovať ešte predtým. To sa vykonáva v triede BrowseFolders pri tvorbe palety. Meno kategórie je vlastne meno adresára v ktorom je uložený SVG a XML súbor daného komponentu. Name je názov SVG/XML súboru bez prípony a location je miesto, na ktoré sa widget prilepí na scénu.&lt;br /&gt;
V konštruktore sa inicializujú niektoré premenné z parametrov a zavolá sa metóda readXML(), pomocou ktorej sa rozparsuje XML súbor, ktorého cesta sa poskladá z mena kategórie a mena súboru, ktoré sme získali z parametrov. &lt;br /&gt;
Miesto kde sa nachádza knižnica samotná sa získa z metódy getLibraryFolder() inštancie triedy FolderSearcher. FolderSearcher je trieda, ktorá slúži na hľadanie cesty ku knižnici s XML súbormi pre DynaSim. Táto knižnica má názov ''“library“'' a nachádza sa v projekte DynaSimu. FolderSearcher teda začne hľadať v projekte a postupuje hlbšie v adresároch kým nenájde adresár s názvom ''“library“''. Absolútnu cestu k tomuto adresáru si uloží medzi členské premenné a dostať sa k tejto ceste je možné cez metódu getLibraryFolder(). Tvar v akom cestu k adresáru vráti je závislý od operačného systému.&lt;br /&gt;
&lt;br /&gt;
===Štruktúra XML súboru simulačného komponentu===&lt;br /&gt;
Zápis XML súboru komponentu môže vypadať nasledovne:&lt;br /&gt;
 [[Súbor:DynasimXML.jpg]]&lt;br /&gt;
Dáta získané z parsovania takéhoto XML súboru v triede MyNode nám po označení komponentu na scéne vygenerujú PropertySheet, ako môžeme vidieť na obr.10. Ako vidno z časti kódu, root element má názov component a má len jeden atribút s názvom name. Podľa tohto atribútu sa vygeneruje meno pre daný komponent s priradeným poradovým číslom. XML súbor nie je kontrolovaný podľa DTD súboru. Priame detské elementy root elementu sú input, output, properties, desctiptionm, jython. XML môže mať ľubovoľný počet elementov s menom input a output. Input predstavuje vstupný pin, output výstupný. Ich atribúty x a y určujú polohu pinu v rámci komponentu. Je vhodné zvoliť ich tak, aby neboli mimo hraníc komponentu, ktoré sú určené v root elemente SVG súboru. Element name je meno terminálu, môže byť ľubovoľné a type určuje, aký dátový typ daný terminál v sebe drží.&lt;br /&gt;
&lt;br /&gt;
Element properties by mal byť v XML súbore len jeden, ten však môže obsahovať ľubovoľný počet elementov s menom property. Property predstavuje jednu vnútornú premennú, tá je definovaná piatimi elementmi ako vidieť v ukážkovom kóde. Detský element type určuje akého dátového typu je daná premenná. V súčasnosti sú implementované tieto typy: BOOL – ktorý predstavuje boolean hodnotu, INT – hodnotu typu int, FLOAT – float, STRING – String.&lt;br /&gt;
&lt;br /&gt;
Element Description má 3 detské elementy, slúži na opis komponentu. Na obr.10 môžeme vidieť, ako sa textové hodnoty týchto elementov prejavia na Property Sheete. &lt;br /&gt;
&lt;br /&gt;
===MyEdge a MyPin===&lt;br /&gt;
MyEdge a MyPin predstavujú dátovú vrstu pre spojovaciu čiaru a pin. Každému pinu sa pridelí po jeho vytvorení cez generátor unikátne číslo a to sa zapíše do členskej premennej MyPin s názvom id ako String. Každý MyPin má getter a setter pre premennú typu Point. Hodnota tohto bodu sa získava z XML súboru a používa sa na prilepenie pinu na zvolené miesto v rámci komponentu. MyPin ešte obsahuje premennú typu boolean s názvom isInput. Tá určuje či je pin vstup alebo výstup. Táto informácia as taktiež získa z XML súboru a ak je element typu input, isInput má hodnotu true, ak je element typu output, isInput má hodnotu false.&lt;br /&gt;
&lt;br /&gt;
MyEdge je tiež tvorené len gettermi a settermi. Má 2 premenné typu String s menom ''source'' a ''target''. Tie predstavujú id pinov, ktoré sú spojené touto čiarou.&lt;br /&gt;
&lt;br /&gt;
==Tvorba Properties okna pomocou MyPropertyNode==&lt;br /&gt;
Na editačnú plochu simulátora si užívateľ pridáva simulačné komponenty z palety. Po kliknutí myšou na niektorý z takto pridaných komponentov vyžadujeme, aby sa vygenerovalo okno s hodnotami komponentu, ktoré môže užívateľ upravovať. MyPropertyNode má na starosti vytvorenie Properties okna z údajov obsiahnutých inštanciou MyNode. Príklad takéhoto okna je možno vidieť na nasledovnom obrázku:&lt;br /&gt;
[[Súbor:Dynasim10.jpg|center|framed|Obr.10 Príklad Properies okna]]&lt;br /&gt;
Aby sa takéto okno po označení nejakého komponentu vygenerovalo, musí byť splnených niekoľko nutných podmienok. V prvom rade sa musí vyriešiť medzimodulová komunikácia. Kým sa modul DynaSim stará o editačnú plochu, ktorá je v okne ''editor'', nachádzajúca sa v centrálnej časti programového interface, okno Properties sa nachádza v okne properties, ktoré sa štandardne nachádza v pravej dolnej časti programu a je riadené modulom Nodes API. Ten treba pridať ako závislosť na modul DynaSim. Tým sa však ešte komunikácia medzi modulmi nevyriešila, lebo okno properties stále nebude vedieť, či je vôbec niečo v okne editora označené. Na to existuje trieda Lookup. Za normálnych okolností môže mať jeden TopComponent len jeden Lookup, avšak DynaSimTopComponent potrebuje dva, jeden pre Property okno a druhý nesôkôr pre paletu. To sa dá obísť cez vytvorenie InstanceContent:&lt;br /&gt;
 private InstanceContent content = new InstanceContent();&lt;br /&gt;
V konštruktore DynaSimTopComponentu potom vytvoríme abstraktný lookup a pridáme ho Topcomponentu nasledovne:&lt;br /&gt;
 associateLookup(new AbstractLookup(content));&lt;br /&gt;
InstanceContent content sa potom prenáša medzi triedami ako premenná v ich konštruktore, z DynaSimTopComponent-u do DynaSimScene, z tej ďalej do Component_Widget – po pridaní simulačného komponentu na plochu editora.&lt;br /&gt;
Component_Widget má zdedenú metódu z triedy Widget s názvom notifyStateChanged, ktorá sleduje zmenu stavu widgetu. Nasledovná časť kódu je z tejto metódy a rieši, čo sa stane po kliknutí na komponent na editačnej ploche.&lt;br /&gt;
 if(newState.isSelected()){&lt;br /&gt;
             propNode = new MyPropertyNode(this.getNode());&lt;br /&gt;
             content.set(Collections.singleton(propNode), null);&lt;br /&gt;
             content.add(controller);&lt;br /&gt;
 } else {&lt;br /&gt;
             if(propNode!=null)&lt;br /&gt;
                 try {&lt;br /&gt;
                 propNode.destroy();&lt;br /&gt;
             } catch (IOException ex) {&lt;br /&gt;
                 Exceptions.printStackTrace(ex);&lt;br /&gt;
             }&lt;br /&gt;
Ak je komponent označený vytvorí sa nová inštancia MyPropertyNode, kde sa za parameter dosadí MyNode inštancia zviazaná s týmto komponentom. V ďalšom riadku sa novovytvorená inštancia uloží do content. A tým sme vlastne dosiahli, že sa nám po kliknutí na simulačný komponent vytvorí propertySheet. Problém je, že sa nám potom stratí paleta, preto treba znova pridať cez content.add kontrolér palety. Slučka else rieši, čo sa stane, keď sa objekt odznačí, napr. Kliknutím na editačnú plochu. Metóda propNode.destroy() zruší túto MyPropertyNode a tým sa Properties okno vynuluje.&lt;br /&gt;
Aby toto všetko mohlo fungovať aj trieda MyPropertyNode musí spĺňať jednu podmienku a to, že musí byť rozšírením AbstractNode triedy. Jej deklarácia je nasledovná:&lt;br /&gt;
 public class MyPropertyNode extends AbstractNode implements PropertyChangeListener&lt;br /&gt;
Konštruktor:&lt;br /&gt;
 public MyPropertyNode(MyNode node) {&lt;br /&gt;
         super(Children.LEAF);&lt;br /&gt;
         this.node = node;    &lt;br /&gt;
 }&lt;br /&gt;
AbstractNode má v konštruktore parameter pre inštanciu triedy Children, pretože sa obvykle používa pri stromových štruktúrach uzlov. V našom prípade však máme len samostatné uzly typu MyNode a nemajú ďalšie detské uzly, preto sa použije LEAF ako koncový uzol. MyPropertyNode má metódu createSheet(), ktorú zdedila z AbstractNode. Táto metóda slúži na vytvorenie Property okna typu Sheet a jeho naplnenie položkami a ich príslušnými hodnotami. Na začiatku sa vytvorí nová inštancia triedy Sheet. Vytvorením inštancie Sheet.Set sa vytvorí nový blok v Properties okne a cez set príkazy mu je možné prideliť meno a popis. Jednotlivé hodnoty položiek, ktoré sa majú v takomto bloku zobrazovať sa nachádzajú v inštancii triedy MyNode. Ako tieto hodnoty zobraziť v Properties okne sa dá jednoducho ukázať na nasledovnom príklade:&lt;br /&gt;
 Property categoryProp = new PropertySupport.Reflection (node, String.class, &amp;quot;getCategory&amp;quot;, null);&lt;br /&gt;
Konštruktor triedy Reflection je nasledovný:&lt;br /&gt;
 Reflection (Object o, Class type, String method1, String method2);&lt;br /&gt;
Object o predstavuje triedu z ktorej chceme danú hodnotu získať resp. nastaviť cez Properties okno. Class type je typ premennej s ktorou chceme pracovať, to môže byť int.class, String.class a pod. String method1 predstavuje názov getteru pre túto premennú a method2 názov setteru v s Stringu. Ak má method2 hodnotu null nie je možné meniť jeho hodnotu pomocou Properties okna. Z toho vyplýva, že v predošlom príklade chceme z inštancie node typu MyNode získať premennú dátového typu String. Názov getteru je getCathegory() a nie je možné meniť túto hodnotu cez setter v Properties okne.&lt;br /&gt;
&lt;br /&gt;
Gettery a settery sa logicky musia nachádzať v triede MyNode. Každá premenná ktorú chceme zobraziť v Properties okne musí mať minimálne svoj getter a v prípade, že ju chceme v okne aj editovať musí mať aj setter. Štandardne má každý komponent 5 základných hodnôt, ktoré ho opisujú a to je Name, Category, Type, Function, Description (obr.10). Name je jediná meniteľná položka, ostatné sú nemenné Category je meno adresára v ktorom je uložený XML súbor a ostatné položky sa získajú parsovaním tohto XML dokumentu. &lt;br /&gt;
&lt;br /&gt;
Mimo týchto základných položiek môže mať komponent aj ďalšie. Tie opisujú hodnoty jeho vnútorných stavov. Každý komponent by mal mať ľubovoľné množstvo vnútorných hodnôt, ľubovoľného dátového typu. Tu však nastáva vážny problém! Každá z týchto  hodnôt musí mať svoj vlastný getter a setter, a keďže Java nedokáže za chodu programu do triedy dopisovať metódy musia sa do triedy napísať pred kompilácoiu. Inými slovami, ak očakávame, že žiadny komponent nebude mať viac ako 6 vnútorných hodnôt musíme vytvoriť 6 getterov a 6 setterov pre int, 6 getterov a 6 setterov pre float atď. Takže treba vytvoriť v triede MyNode gettery a settery pre všetky dátové typy s ktorými chceme v programe DynaSim pracovať. Počet týchto getterov a setterov obmedzuje možný počet hodnôt, ktoré možno zobraziť a upraviť v Properties okne. Ak budeme mať 3 gettery a settery pre každý dátový typ, Properties okno nebude schopné zobraziť viac ako 3 prvé položky. Ak teda uvažujeme, že chceme mať komponenty so 100 vnútornými hodnotami, potrebujeme vytvoriť 100 getterov a 100 setterov pre každý dátový typ!!! Z toho dôvodu je súčasná verzia programu obmedzená na 6 vnútorných hodnôt pre dátové typy int, float, boolean a String.&lt;/div&gt;</summary>
		<author><name>MichalJanicek</name></author>
		
	</entry>
</feed>