<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sk">
	<id>http://www.kiwiki.info/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pokoraczki1</id>
	<title>Kiwiki - Príspevky používateľa [sk]</title>
	<link rel="self" type="application/atom+xml" href="http://www.kiwiki.info/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pokoraczki1"/>
	<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php/%C5%A0peci%C3%A1lne:Pr%C3%ADspevky/Pokoraczki1"/>
	<updated>2026-05-05T11:50:02Z</updated>
	<subtitle>Príspevky používateľa</subtitle>
	<generator>MediaWiki 1.34.0</generator>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Z%C3%A1klady_informatiky_-_jazyk_Java&amp;diff=3877</id>
		<title>Základy informatiky - jazyk Java</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Z%C3%A1klady_informatiky_-_jazyk_Java&amp;diff=3877"/>
		<updated>2010-04-27T19:31:47Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Java]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;properties&amp;gt;&lt;br /&gt;
Názov=Základy informatiky - programovanie v jazyku Java&lt;br /&gt;
Forma=Podklady k prednáškam a cvičeniam&lt;br /&gt;
Abstrakt= Úvod do programovania, operačný systém, aplikácia, zdrojový kód, kompilovanie a spustenie programu. Syntax jazyka Java. Elementy programovacieho jazyka, identifikátory, klúčové slová, operátory. Dátové typy a ich rozdelenie. Výrazy a poradie vyhodnocovania výrazov. Deklarácie premenných a polí. Riadenie toku, bloky, podmienkové a logické výrazy. Triedy a objekty tried. Výnimky spracovanie výnimiek. Java API, aplikácie a applety. &lt;br /&gt;
Rozvrh=3/0/2&lt;br /&gt;
Hodnotenie=Skúška&lt;br /&gt;
Poznámky=Prvú verziu tohoto kurzu vyvoril [http://www.facebook.com/Peter.Pazak RNDr. Peter Pažák] ako podklady k cvičeniam z predmetu Základy programovania na FMFI UK . Pretože pôvodý text svojim rozsahom a kvalitou spracovania vysoko prevyšoval požiadavky na štandardné podklady ku cvičeniam, po konverzii do wiki je základným učebným textom k prednáške. Pokiaľ by ste chceli pôvodný text rozširovať, doplňovať o vlastné príklady a úlohy, stante sa redaktorom serveru kiwiki.&lt;br /&gt;
&amp;lt;/properties&amp;gt;&lt;br /&gt;
{{Draft}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Obsah prednášky ==&lt;br /&gt;
* [[Uvod do programovania v jazyku Java]]&lt;br /&gt;
** Základné pojmy&lt;br /&gt;
** Zdrojový kód&lt;br /&gt;
** Kompilácia a spustenie programu&lt;br /&gt;
* [[Syntax jazyka Java]]&lt;br /&gt;
** Elementy programovacieho jazyka Java&lt;br /&gt;
** Kľúčové slová jazyka Java&lt;br /&gt;
** Primitívne dátové typy a operátory&lt;br /&gt;
** Bloky, vetvenie toku programu a cykly&lt;br /&gt;
* [[Triedy a objekty]] &lt;br /&gt;
** Deklarácia triedy&lt;br /&gt;
** Vytváranie objektov&lt;br /&gt;
** Hodnoty a referencie&lt;br /&gt;
** Polia&lt;br /&gt;
* [[Vytváranie vlastných tried]]&lt;br /&gt;
** Trieda Ratio&lt;br /&gt;
* [[Dedičnosť a vzťahy medzi triedami]]&lt;br /&gt;
*[[Základy práce s NetBeans IDE a vývoj modulov]]&lt;br /&gt;
&lt;br /&gt;
== Doporučená literatúra a odkazy ==&lt;br /&gt;
&lt;br /&gt;
'''WWW'''&lt;br /&gt;
* [http://java.sun.com/ Java] - Domáca stránka, dokumentácia, tútoriály ... všetko na jednej kope&lt;br /&gt;
* [http://www.particle.kth.se/~lindsey/JavaCourse/Book/courseMap.html JavaTech] - Interaktívny kurz Javy&lt;br /&gt;
&lt;br /&gt;
'''Voľne dostupné učebnice a knihy'''&lt;br /&gt;
*[http://www.root.cz/knihy/thinking-in-java/ Thinking in Java] &lt;br /&gt;
* [http://www.freeprogrammingresources.com/javabook.html Zoznam voľne dostupnej literatúry] &lt;br /&gt;
&lt;br /&gt;
'''Pomôcky, programy'''&lt;br /&gt;
* [http://netbeans.org/ NetBeans IDE] - Domáca stránka komplexného vývojového prostredia&lt;br /&gt;
* [http://www.scintilla.org/SciTE.html SciTe] - Jednoduchý multiplatformový programátorský editor&lt;br /&gt;
* [http://www.geany.org/ Geany] - Jednoduché multiplatformové vývojové prostredie&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3876</id>
		<title>Základy práce s NetBeans IDE a vývoj modulov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3876"/>
		<updated>2010-04-27T19:29:32Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: /* Pridanie funkcinality pre IconNodeWidget */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== NetBeans IDE ==&lt;br /&gt;
NetBeans je krásne vývojové prostredie, ktorého hlavnou výhodou je jeho modulárna architektúra. Ďalším skvelým prvkom je, že sa spolieha na toolkit SWING UI, čo nám dokopy dáva obrovské výhody.&lt;br /&gt;
&lt;br /&gt;
V tomto článku sa posnažím ukázať, ako možno vytvoriť jednoduchý modul pre NetBeans, ktorý bude iba strohá ukážka toho, čo sa s NetBeans dá robit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Požiadavky na postup článkom ==&lt;br /&gt;
1. NetBeans IDE ( použitá verzia 6.8 )&amp;lt;br /&amp;gt;&lt;br /&gt;
2. Java_jdk ( použitá verzia 1.6.0.18 ) &amp;lt;br /&amp;gt;&lt;br /&gt;
3. Základné znalosti jazyka JAVA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie a spustenie projektu ==&lt;br /&gt;
1. Začneme  spustením  Netbeans  a  zvolíme  '''File--New Project--NetBeans Modules--Module'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb prvy.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Klikneme na tlačítko &amp;quot;NEXT&amp;quot;, pomenujeme si náš projekt napr. &amp;quot;ShapeSample&amp;quot;, nastavíme ho ako &amp;quot;'''main project'''&amp;quot; a vyberieme si umiestnenie, kde ho chceme uložiť a ponecháme '''Standalone Module'''&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb druhy.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Klikneme &amp;quot;NEXT&amp;quot;, zadáme do &amp;quot;Code Name Base&amp;quot; '''org.netbeans.shapesample''', a dôležité, klikneme na '''Generate XML Layer'''. Následne klikneme na tlačítko finish, a vytvorí sa nám projekt.&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb treti.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. V okne &amp;quot;Project&amp;quot; , '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--Properties--Libraries'''. Module Dependencies klikneme na tlačítko &amp;quot;ADD&amp;quot; a pridáme:&amp;lt;br /&amp;gt;&lt;br /&gt;
''a/ Visual Library API &amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Utilities API &amp;lt;br /&amp;gt;''&lt;br /&gt;
Klikneme na tlačítko OK, čo nám pridá odkazy.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Znova v &amp;quot;Project&amp;quot; window '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--New--Other--Module Development--Window Component''' , klikneme &amp;quot;NEXT&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6. Ako Windows Position dáme '''editor''' a zaškrtneme '''Open on application start''' a klikneme &amp;quot;NEXT&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7.Do políčka &amp;quot;Class Name Prefix&amp;quot; dopíšeme '''Shape''', klikneme na tlačítko &amp;quot;FINISH&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. Vygeneruje sa nám viacero súbor, jedným z nich je '''ShapeTopComponent''', 2krát naň klikneme a otvoríme ho v design view.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. V design view, pravým klikneme na okno akoby a dáme '''Set Layout--Border Layout'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb stvrty.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie scény ==&lt;br /&gt;
1. Využijeme okno &amp;quot;'''Palette'''&amp;quot; (ak nie je zobrazené dáme window---palette) a vložíme na náš layout '''ScrollPane'''. V okne &amp;quot;Inspector&amp;quot; klikneme pravým na jScrollPane1--Change Variable Name a nastavíme hodnotu na &amp;quot;shapePane&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
2.V &amp;quot;Project&amp;quot; window na zložku''' org--netbeans--shapesample''' klikneme pravým a dáme '''new--Java Class''', pomenujme ju &amp;quot;'''GraphSceneImpl'''&amp;quot;, a po vytvorení dopíšme do triedy '''extends GraphScene'''&lt;br /&gt;
&lt;br /&gt;
3. Žltá žiarovka s červeným výkričníkom sa nám objaví naľavo v editore, klikneme na ňu, a dáme &amp;quot;'''add Import...'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
Následne sa nám objaví ďalšia žltá žiarovka, klikneme na ňu a dáme &amp;quot;'''Implement all abstract methods'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb piaty.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Pre lepšiu orientáciu zmeníme názvy parametrov vygenerovaných NetBeans, a po úprave bude naša trieda vypadať takto:&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
    public GraphSceneImpl() {&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachNodeWidget(Object node) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachEdgeWidget(Object edge) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeSourceAnchor(Object edge, Object oldSourceNode, Object newSourceNode) {&lt;br /&gt;
    &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeTargetAnchor(Object edge, Object oldTargetNode, Object newTargetNode) {&lt;br /&gt;
            &lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
5.Vrátime sa k ShapeTopComponent, kde sa budeme starať o instanciu GraphSceneImpl , prepneme Design View na SourceView, a nájdeme jeho konštruktor. Do tela konštruktora doplníme nasledujúce riadky:&lt;br /&gt;
     GraphSceneImpl scene = new GraphSceneImpl();&lt;br /&gt;
     myView = scene.createView();     &lt;br /&gt;
     shapePane.setViewportView(myView);&lt;br /&gt;
     add(scene.createSatelliteView(), BorderLayout.WEST);  &lt;br /&gt;
&lt;br /&gt;
Týmto sme vytvorili 2 náhľady, jeden veľký, a jeden akoby informačný na ľavej strane, ktorý pomôže používateľovi rýchlejšie sa pohybovať po väčšom rozpätí.&lt;br /&gt;
&lt;br /&gt;
6. Na '''úrovni triedy ShapeTopComponent'''  deklarujeme (doplníme napr. hneď nad konštruktor)&lt;br /&gt;
    private JComponent myView;&lt;br /&gt;
&lt;br /&gt;
Ostanú nám ešte 2 žlté žiarovky, klikneme na každú z nich, a dáme &amp;quot;'''Add Import...'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
7. Teraz musíme ošetriť, že ak sa NetBeans IDE reštartuje, nemáme žiadny dôvod aby ShapeTopComponent pretrvával, čiže nájdeme metódu '''getPersistenceType()''' v tele triedy, a zmeníme ju nasledovne:&lt;br /&gt;
   public int getPersistenceType() {&lt;br /&gt;
       return TopComponent.PERSISTENCE_NEVER;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
8. Klikneme v &amp;quot;Project&amp;quot; window na náš projekt '''ShapeSample pravým--run'''&lt;br /&gt;
&lt;br /&gt;
9. Nezľaknite sa, spustí sa nová inštancia NetBeans IDE(ak nie je náš projekt už otvorený kliknite na '''window---Shape''') a zobrazí sa Vám niečo takéto:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb siesty.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vytváranie Palety pre našu scénu ==&lt;br /&gt;
&lt;br /&gt;
Teraz aby sme pokračovali niečím užitočným, vytvoríme si palettu, na čo využijeme Palette API, ktorá bude obsahovať komponenty, ktoré môžeme použiť a pridať na našu scénu pretiahnutím.&lt;br /&gt;
Pre ďalšie pokračovanie budeme potrebovať 3 obrázky našich komponentov, použime tieto(kliknite pravým---uložiť ako, nemente názvy):&lt;br /&gt;
[[Súbor:Image1.png]][[Súbor:Image2.png]][[Súbor:Image3.png]]&lt;br /&gt;
&lt;br /&gt;
'''Keďže náš návod sa zaoberá s Visual Library API, a nie s Palette API(info tu:[http://netbeans.org/kb/trails/platform.html] ), na funkcionalitu Paletty použijeme už hotové knižnice, ktoré stiahnete tu''':&lt;br /&gt;
[http://www.sendspace.com/file/dqtnbi]  (v prípade, že je link nefunkčný, na konci článku je hotový plugin pre tento modul, knižnice vytiahnite z neho)&lt;br /&gt;
&lt;br /&gt;
1. Klikneme na náš projekt pravým--new--Java Package a pomenujeme ho '''org.netbeans.shapesample.palette'''&lt;br /&gt;
2. Teraz otvorme zložku, kde sme nás projekt uložili, konkrétne   '''násProjekt/src/org/netbeans/shapesample/pallete'''. A do tejto''' zložky nakopírujeme stiahnuté obrázky a následne aj knižnice''', čiže tieto súbory:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Category&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ CategoryChildren &amp;lt;br /&amp;gt;&lt;br /&gt;
c/ CategoryNode &amp;lt;br /&amp;gt;&lt;br /&gt;
d/ PaletteSupport&amp;lt;br /&amp;gt;&lt;br /&gt;
e/ Shape&amp;lt;br /&amp;gt;&lt;br /&gt;
f/ ShapeChildren&amp;lt;br /&amp;gt;&lt;br /&gt;
g/ ShapeNode&amp;lt;br /&amp;gt;&lt;br /&gt;
h/ image1, image2, image3&amp;lt;br /&amp;gt;&lt;br /&gt;
po zobrazení NetBeans sa nám novo vytvorený package obnoví, a budeme tam mať načítané všetky vložené súbory, pričom niekde sa znovu objavia červené krúžky so žiarovkou, to si nevšímajme chvíľku&lt;br /&gt;
&lt;br /&gt;
3. Klikneme '''pravým na projekt--Properties--Libraries--Add''' a pridáme nasledujúce knižnice:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Actions APIs&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Nodes API&amp;lt;br /&amp;gt;&lt;br /&gt;
c/ Common Palette &amp;lt;br /&amp;gt;&lt;br /&gt;
Teraz by sme mali spozorovať, že všetky žlté žiarov nám zmiznú, a bude nám to vypadať nasledovne: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb siedmy.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Teraz pridáme našu Palettu do ShapeTopComponentovho náhľadu, a to tak, že do konštruktoru ShapeTopComponent kód&lt;br /&gt;
     associateLookup( Lookups.fixed( new Object[] { PaletteSupport.createPalette() } ) );&lt;br /&gt;
&lt;br /&gt;
5. Znova sa nám objaví žltá žiarovka, klikneme na ňu dáme &amp;quot;Add import...&amp;quot;, následne sa tam objaví znova, čiže znova klikneme a dáme &amp;quot;Add import...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
6. Spustite modul znova(pravým--run), teraz by to už malo vypadať takto, no zatiaľ bez funkcionality, pretože potrebujeme Layer Widget: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb osmy.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pridanie LayerWidget ==&lt;br /&gt;
&lt;br /&gt;
Pod pojmom LayerWidget si predstavte niečo priesvitné, na ktoré budeme môcť ukladať naše komponenty s paletty.&lt;br /&gt;
&lt;br /&gt;
1. Ná úrovni triedy GraphSceneImpl deklarujte náš LayerWidget&lt;br /&gt;
     private LayerWidget mainLayer;&lt;br /&gt;
&lt;br /&gt;
2. Do konštruktoru GraphSceneImpl pridajte LayerWidget ako dieťa našej scény:&lt;br /&gt;
     mainLayer = new LayerWidget (this);&lt;br /&gt;
     addChild (mainLayer);&lt;br /&gt;
&lt;br /&gt;
Teraz keď pridáme na scénu nejaký komponent s našej paletty , pridajú sa ako deti do našej mainLayer.&lt;br /&gt;
&lt;br /&gt;
== Pridanie IconNodeWidget (komponentu) cez funkcionalitu Drag and Drop (chyť a hoď) ==&lt;br /&gt;
&lt;br /&gt;
Doposiaľ, naša scéna existuje, ale nemá žiadnu funkcionalitu. Túto funkcionalitu pridáme pomocou '''&amp;quot;actions&amp;quot;'''. Action, ktorá nám umožňuje Drag &amp;amp; Drop funkcionalitu je '''AcceptAction''' . Táto action môže byť aplikovaná buď na náš komponent alebo na našu scénu. My ju budeme aplikovať na našu scénu. Využijeme '''createAcceptAction''' na to, aby sme definovali čo sa má stať po tom, ako je komponent pretiahnutý nad našu scénu.&lt;br /&gt;
&lt;br /&gt;
1. Najprv pridajte '''createAcceptAction''' spolu s jeho dvomi metódami do GraphSceneImpl konštruktoru:&lt;br /&gt;
   getActions().addAction(ActionFactory.createAcceptAction(new AcceptProvider() {&lt;br /&gt;
    public ConnectorState isAcceptable(Widget widget, Point point, Transferable transferable) {&lt;br /&gt;
        Image dragImage = getImageFromTransferable(transferable);&lt;br /&gt;
        JComponent view = getView();&lt;br /&gt;
        Graphics2D g2 = (Graphics2D) view.getGraphics();&lt;br /&gt;
        Rectangle visRect = view.getVisibleRect();&lt;br /&gt;
        view.paintImmediately(visRect.x, visRect.y, visRect.width, visRect.height);&lt;br /&gt;
        g2.drawImage(dragImage,&lt;br /&gt;
                AffineTransform.getTranslateInstance(point.getLocation().getX(),&lt;br /&gt;
                point.getLocation().getY()),&lt;br /&gt;
                null);&lt;br /&gt;
        return ConnectorState.ACCEPT;&lt;br /&gt;
    }&lt;br /&gt;
    public void accept(Widget widget, Point point, Transferable transferable) {&lt;br /&gt;
        Image image = getImageFromTransferable(transferable);&lt;br /&gt;
        Widget w = GraphSceneImpl.this.addNode(new MyNode(image));&lt;br /&gt;
        w.setPreferredLocation(widget.convertLocalToScene(point));&lt;br /&gt;
    }&lt;br /&gt;
    }));&lt;br /&gt;
&lt;br /&gt;
Objaví sa nám viacero chýb, a to z toho dôvodu, že sme použili aj metódy, ktoré zatiaľ nie sú definované, čiže si chvíľku nevšímajme tieto errory.&lt;br /&gt;
&lt;br /&gt;
2. Teraz do triedy '''GraphSceneImpl''' pridáme pomocnú metódu na získavanie obrázkov:&lt;br /&gt;
   private Image getImageFromTransferable(Transferable transferable) {&lt;br /&gt;
    Object o = null;&lt;br /&gt;
    try {&lt;br /&gt;
        o = transferable.getTransferData(DataFlavor.imageFlavor);&lt;br /&gt;
    } catch (IOException ex) {&lt;br /&gt;
        ex.printStackTrace();&lt;br /&gt;
    } catch (UnsupportedFlavorException ex) {&lt;br /&gt;
        ex.printStackTrace();&lt;br /&gt;
    }&lt;br /&gt;
    return o instanceof Image ? (Image) o : ImageUtilities.loadImage(&amp;quot;org/netbeans/shapesample/palette/shape1.png&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
Ako vidíme, je tu ošetrená chyba, čiže môžete do org.netbeans.shapesample.palette doplniť obrázok, ktorý sa má objaviť pri chybe, dajte mu meno shape1.png&lt;br /&gt;
&lt;br /&gt;
3. Z dôvodu toho, že máme len 3 obrázky, mohli by sme vytvoriť akoby len 3 prvky, preto si vytvoríme novú triedu s názvom '''MyNode'''. Klikneme na náš '''package shapesample pravým--new---java class''' a bude vypadať takto:&lt;br /&gt;
    public class MyNode {    &lt;br /&gt;
    private Image image;&lt;br /&gt;
    &lt;br /&gt;
    public MyNode(Image image) {&lt;br /&gt;
        this.image = image;&lt;br /&gt;
    }    &lt;br /&gt;
    public Image getImage() {&lt;br /&gt;
        return image;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
Klikneme na žltú žiarovku v tejto triede a dáme '''&amp;quot;Add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
4. Zmeníme teraz v triede '''GraphSceneImpl''' rodiča, od ktorého dedí, čiže jeden z prvý riadkov bude vypadať takto:&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&amp;lt;MyNode, String&amp;gt;{...telo triedy...}&lt;br /&gt;
čím sme zabezpečili, že naša Node je prijatá  cez Visual Library. Teraz sa nám objaví žltá žiarovka aj pri tomto riadku, lebo teraz musíme dediť iné abstraktné metódy, '''čiže klikneme na ňu --implement all abstract methods'''&lt;br /&gt;
5. Keďže používame generics, tak klikneme '''pravým na náš projekt--properties--sources''' a presvedčíme sa, že tam máme hodnotu  '''Source level = 1.5'''&lt;br /&gt;
&lt;br /&gt;
6. Následne definujeme náš nový Widget (komponent) v triede '''GraphSceneImpl''' a to tak, že tam nájdeme metódu '''protected Widget attachNodeWidget(MyNode node)''' a upravíme ju nasledovne:&lt;br /&gt;
     protected Widget attachNodeWidget(MyNode node) {&lt;br /&gt;
       IconNodeWidget widget = new IconNodeWidget(this);&lt;br /&gt;
       widget.setImage(node.getImage());&lt;br /&gt;
       widget.setLabel(Long.toString(node.hashCode()));&lt;br /&gt;
       widget.getActions().addAction(ActionFactory.createMoveAction());&lt;br /&gt;
       mainLayer.addChild(widget);&lt;br /&gt;
       return widget;&lt;br /&gt;
     }&lt;br /&gt;
Týmto nášmu Widgetu nastavíme obrázok, a priradíme mu veľké náhodné číslo, a ešte možnosť posúvať ho po našej scéne, a následne po zastavení ho pridať znova ako child.&lt;br /&gt;
&lt;br /&gt;
7. Ešte stále nám ostáva pár žltých žiaroviek, takže klikneme na každú z nich, ktorá tam bude a dáme '''&amp;quot;Add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
8. Spustíme náš projekt, a už uvidíme, že je možné presúvať komponenty (Widgety) z našej paletty na našu scénku:&lt;br /&gt;
&lt;br /&gt;
== Pridanie funkcionality pre našu scénu ==&lt;br /&gt;
1.Teraz pridáme najprv ZOOMaction na našu scénku a to tak, že na koniec '''GraphSceneImpl''' konštruktoru pridáme:&lt;br /&gt;
    getActions().addAction(ActionFactory.createZoomAction());&lt;br /&gt;
&lt;br /&gt;
Keď spustíme teraz náš projekt, tak pri pridržaní ctrl+ kolieško myši sa nám bude zoomovať naša plocha&lt;br /&gt;
&lt;br /&gt;
2. Pridaním riadku za predošlým :&lt;br /&gt;
    getActions().addAction(ActionFactory.createPanAction());&lt;br /&gt;
Pridáme funkcionalitu, že keď user potlačí kolečko myši, tak potom môže hýbať do hociktorého smeru.&lt;br /&gt;
&lt;br /&gt;
== Pridanie funkcionality pre IconNodeWidget ==&lt;br /&gt;
Pre IconNodeWidget sme už pridali funcionalitu pre hýbanie '''MoveAction'''. Tak isto sme schopný pridať aj funkcionalitu pre '''HoverAction, SelectAction, a InplaceEditorAction''', v poradí (nadídenie, vybranie, premenovanie)&lt;br /&gt;
1. Najprv na úrovni triedy definujte &lt;br /&gt;
   private WidgetAction editorAction = ActionFactory.createInplaceEditorAction(new LabelTextFieldEditor());&lt;br /&gt;
Následne sa objaví znova žltá žiarovka, najprv dajte '''&amp;quot;Add import...&amp;quot;''', následne dajte '''&amp;quot;Create class LabelTextFieldEditor...&amp;quot;''' , čo nám pridá do nášho package triedu.&lt;br /&gt;
2.Telo tejto triedy '''LabelTextFieldEditor''' zmeníme nasledovne:&lt;br /&gt;
    class LabelTextFieldEditor implements TextFieldInplaceEditor {&lt;br /&gt;
    public boolean isEnabled(Widget widget) {&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
    public String getText(Widget widget) {&lt;br /&gt;
        return ((LabelWidget) widget).getLabel();&lt;br /&gt;
    }&lt;br /&gt;
    public void setText(Widget widget, String text) {&lt;br /&gt;
        ((LabelWidget) widget).setLabel(text);&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
Znovu sa v tejto triede objaví zopár žltých žiaroviek, poklikajte na '''&amp;quot;add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
3. Následne priradíme editorAction nášmu IconNodeWidget, a to tak, že na koniec metódy '''protected Widget attachNodeWidget(MyNode node)''' triedy '''GraphSceneImpl''' vložíme tesne nad riadok ''' mainLayer.addChild(widget);''' nasledujúci kód:&lt;br /&gt;
    widget.getLabelWidget().getActions().addAction(editorAction);&lt;br /&gt;
&lt;br /&gt;
4. Následne Hower, Clicked action dolníme tak, že po vyššie doplnenom riadku dáme tieto dva:&lt;br /&gt;
    widget.getActions().addAction(createSelectAction());&lt;br /&gt;
    widget.getActions().addAction(createObjectHoverAction());&lt;br /&gt;
&lt;br /&gt;
5. Teraz musíme trochu premyslieť poradie, v ktorom sme akcie pridali, info tu [http://bits.netbeans.org/dev/javadoc/org-netbeans-api-visual/org/netbeans/api/visual/widget/doc-files/documentation.html#OrderOfActions]&lt;br /&gt;
A následne bude naša metóda '''protected Widget attachNodeWidget''' vypadať nasledovne&lt;br /&gt;
    protected Widget attachNodeWidget(MyNode node) {&lt;br /&gt;
        IconNodeWidget widget = new IconNodeWidget(this);&lt;br /&gt;
        widget.setImage(node.getImage());&lt;br /&gt;
        widget.setLabel(Long.toString(node.hashCode()));&lt;br /&gt;
        //double-click, event sa spustí len pri doubleclicku:&lt;br /&gt;
        widget.getLabelWidget().getActions().addAction(editorAction);&lt;br /&gt;
        //single-click, event sa spustí pri single clicku&lt;br /&gt;
        widget.getActions().addAction(createSelectAction());&lt;br /&gt;
        //mouse-dragged&lt;br /&gt;
        widget.getActions().addAction(ActionFactory.createMoveAction());&lt;br /&gt;
        //mouse-over,&lt;br /&gt;
        widget.getActions().addAction(createObjectHoverAction());&lt;br /&gt;
        mainLayer.addChild(widget);&lt;br /&gt;
        return widget;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
6. Po spustení to bude môcť vypadať takto napr.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb desat.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Záver a riešenie problémov ==&lt;br /&gt;
&lt;br /&gt;
Ukázali sme v skutku len veľmi strohú ukážku, čo by sa s NetBeans dalo spraviť, ale keďže je to problematika, ktorou by sa mali zaoberať knihy pre pokročilejších programátorov, tak tu skončíme.&lt;br /&gt;
&lt;br /&gt;
V prípade nejasností je vždy dobré sa obráti na stránku NetBeans tutorials [http://netbeans.org/kb/trails/platform.html]&lt;br /&gt;
&lt;br /&gt;
V prípade problémov, resp. riešenia chýb uvedeného návodu, '''odporúčam použiť VYTVORENY FUNKCNY MODUL'''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Download:''' [http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=14027]&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Inštalácia:''' Spustite '''NetBeans--Tools--Plugins--kliknite Downloaded--Add Plugins...--nájdite stiahnutý--install'''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Spustenie pluginu:''' '''Spustite NetBeans--File--New Project--Samples--NetBeansModule--Visual Library Demo'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
V prípade nejasností, je tam všetko štruktúrované ako v našom návode, čiže by ste tam mali nájsť svoju chybu dosť rýchlo a prehľadne.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zdroj:[http://platform.netbeans.org/tutorials/nbm-visual_library.html]&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3875</id>
		<title>Základy práce s NetBeans IDE a vývoj modulov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3875"/>
		<updated>2010-04-27T19:28:30Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: /* Pridanie IconNodeWidget (komponentu) cez funkcionalitu Drag and Drop (chyť a hoď) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== NetBeans IDE ==&lt;br /&gt;
NetBeans je krásne vývojové prostredie, ktorého hlavnou výhodou je jeho modulárna architektúra. Ďalším skvelým prvkom je, že sa spolieha na toolkit SWING UI, čo nám dokopy dáva obrovské výhody.&lt;br /&gt;
&lt;br /&gt;
V tomto článku sa posnažím ukázať, ako možno vytvoriť jednoduchý modul pre NetBeans, ktorý bude iba strohá ukážka toho, čo sa s NetBeans dá robit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Požiadavky na postup článkom ==&lt;br /&gt;
1. NetBeans IDE ( použitá verzia 6.8 )&amp;lt;br /&amp;gt;&lt;br /&gt;
2. Java_jdk ( použitá verzia 1.6.0.18 ) &amp;lt;br /&amp;gt;&lt;br /&gt;
3. Základné znalosti jazyka JAVA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie a spustenie projektu ==&lt;br /&gt;
1. Začneme  spustením  Netbeans  a  zvolíme  '''File--New Project--NetBeans Modules--Module'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb prvy.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Klikneme na tlačítko &amp;quot;NEXT&amp;quot;, pomenujeme si náš projekt napr. &amp;quot;ShapeSample&amp;quot;, nastavíme ho ako &amp;quot;'''main project'''&amp;quot; a vyberieme si umiestnenie, kde ho chceme uložiť a ponecháme '''Standalone Module'''&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb druhy.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Klikneme &amp;quot;NEXT&amp;quot;, zadáme do &amp;quot;Code Name Base&amp;quot; '''org.netbeans.shapesample''', a dôležité, klikneme na '''Generate XML Layer'''. Následne klikneme na tlačítko finish, a vytvorí sa nám projekt.&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb treti.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. V okne &amp;quot;Project&amp;quot; , '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--Properties--Libraries'''. Module Dependencies klikneme na tlačítko &amp;quot;ADD&amp;quot; a pridáme:&amp;lt;br /&amp;gt;&lt;br /&gt;
''a/ Visual Library API &amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Utilities API &amp;lt;br /&amp;gt;''&lt;br /&gt;
Klikneme na tlačítko OK, čo nám pridá odkazy.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Znova v &amp;quot;Project&amp;quot; window '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--New--Other--Module Development--Window Component''' , klikneme &amp;quot;NEXT&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6. Ako Windows Position dáme '''editor''' a zaškrtneme '''Open on application start''' a klikneme &amp;quot;NEXT&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7.Do políčka &amp;quot;Class Name Prefix&amp;quot; dopíšeme '''Shape''', klikneme na tlačítko &amp;quot;FINISH&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. Vygeneruje sa nám viacero súbor, jedným z nich je '''ShapeTopComponent''', 2krát naň klikneme a otvoríme ho v design view.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. V design view, pravým klikneme na okno akoby a dáme '''Set Layout--Border Layout'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb stvrty.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie scény ==&lt;br /&gt;
1. Využijeme okno &amp;quot;'''Palette'''&amp;quot; (ak nie je zobrazené dáme window---palette) a vložíme na náš layout '''ScrollPane'''. V okne &amp;quot;Inspector&amp;quot; klikneme pravým na jScrollPane1--Change Variable Name a nastavíme hodnotu na &amp;quot;shapePane&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
2.V &amp;quot;Project&amp;quot; window na zložku''' org--netbeans--shapesample''' klikneme pravým a dáme '''new--Java Class''', pomenujme ju &amp;quot;'''GraphSceneImpl'''&amp;quot;, a po vytvorení dopíšme do triedy '''extends GraphScene'''&lt;br /&gt;
&lt;br /&gt;
3. Žltá žiarovka s červeným výkričníkom sa nám objaví naľavo v editore, klikneme na ňu, a dáme &amp;quot;'''add Import...'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
Následne sa nám objaví ďalšia žltá žiarovka, klikneme na ňu a dáme &amp;quot;'''Implement all abstract methods'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb piaty.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Pre lepšiu orientáciu zmeníme názvy parametrov vygenerovaných NetBeans, a po úprave bude naša trieda vypadať takto:&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
    public GraphSceneImpl() {&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachNodeWidget(Object node) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachEdgeWidget(Object edge) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeSourceAnchor(Object edge, Object oldSourceNode, Object newSourceNode) {&lt;br /&gt;
    &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeTargetAnchor(Object edge, Object oldTargetNode, Object newTargetNode) {&lt;br /&gt;
            &lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
5.Vrátime sa k ShapeTopComponent, kde sa budeme starať o instanciu GraphSceneImpl , prepneme Design View na SourceView, a nájdeme jeho konštruktor. Do tela konštruktora doplníme nasledujúce riadky:&lt;br /&gt;
     GraphSceneImpl scene = new GraphSceneImpl();&lt;br /&gt;
     myView = scene.createView();     &lt;br /&gt;
     shapePane.setViewportView(myView);&lt;br /&gt;
     add(scene.createSatelliteView(), BorderLayout.WEST);  &lt;br /&gt;
&lt;br /&gt;
Týmto sme vytvorili 2 náhľady, jeden veľký, a jeden akoby informačný na ľavej strane, ktorý pomôže používateľovi rýchlejšie sa pohybovať po väčšom rozpätí.&lt;br /&gt;
&lt;br /&gt;
6. Na '''úrovni triedy ShapeTopComponent'''  deklarujeme (doplníme napr. hneď nad konštruktor)&lt;br /&gt;
    private JComponent myView;&lt;br /&gt;
&lt;br /&gt;
Ostanú nám ešte 2 žlté žiarovky, klikneme na každú z nich, a dáme &amp;quot;'''Add Import...'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
7. Teraz musíme ošetriť, že ak sa NetBeans IDE reštartuje, nemáme žiadny dôvod aby ShapeTopComponent pretrvával, čiže nájdeme metódu '''getPersistenceType()''' v tele triedy, a zmeníme ju nasledovne:&lt;br /&gt;
   public int getPersistenceType() {&lt;br /&gt;
       return TopComponent.PERSISTENCE_NEVER;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
8. Klikneme v &amp;quot;Project&amp;quot; window na náš projekt '''ShapeSample pravým--run'''&lt;br /&gt;
&lt;br /&gt;
9. Nezľaknite sa, spustí sa nová inštancia NetBeans IDE(ak nie je náš projekt už otvorený kliknite na '''window---Shape''') a zobrazí sa Vám niečo takéto:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb siesty.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vytváranie Palety pre našu scénu ==&lt;br /&gt;
&lt;br /&gt;
Teraz aby sme pokračovali niečím užitočným, vytvoríme si palettu, na čo využijeme Palette API, ktorá bude obsahovať komponenty, ktoré môžeme použiť a pridať na našu scénu pretiahnutím.&lt;br /&gt;
Pre ďalšie pokračovanie budeme potrebovať 3 obrázky našich komponentov, použime tieto(kliknite pravým---uložiť ako, nemente názvy):&lt;br /&gt;
[[Súbor:Image1.png]][[Súbor:Image2.png]][[Súbor:Image3.png]]&lt;br /&gt;
&lt;br /&gt;
'''Keďže náš návod sa zaoberá s Visual Library API, a nie s Palette API(info tu:[http://netbeans.org/kb/trails/platform.html] ), na funkcionalitu Paletty použijeme už hotové knižnice, ktoré stiahnete tu''':&lt;br /&gt;
[http://www.sendspace.com/file/dqtnbi]  (v prípade, že je link nefunkčný, na konci článku je hotový plugin pre tento modul, knižnice vytiahnite z neho)&lt;br /&gt;
&lt;br /&gt;
1. Klikneme na náš projekt pravým--new--Java Package a pomenujeme ho '''org.netbeans.shapesample.palette'''&lt;br /&gt;
2. Teraz otvorme zložku, kde sme nás projekt uložili, konkrétne   '''násProjekt/src/org/netbeans/shapesample/pallete'''. A do tejto''' zložky nakopírujeme stiahnuté obrázky a následne aj knižnice''', čiže tieto súbory:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Category&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ CategoryChildren &amp;lt;br /&amp;gt;&lt;br /&gt;
c/ CategoryNode &amp;lt;br /&amp;gt;&lt;br /&gt;
d/ PaletteSupport&amp;lt;br /&amp;gt;&lt;br /&gt;
e/ Shape&amp;lt;br /&amp;gt;&lt;br /&gt;
f/ ShapeChildren&amp;lt;br /&amp;gt;&lt;br /&gt;
g/ ShapeNode&amp;lt;br /&amp;gt;&lt;br /&gt;
h/ image1, image2, image3&amp;lt;br /&amp;gt;&lt;br /&gt;
po zobrazení NetBeans sa nám novo vytvorený package obnoví, a budeme tam mať načítané všetky vložené súbory, pričom niekde sa znovu objavia červené krúžky so žiarovkou, to si nevšímajme chvíľku&lt;br /&gt;
&lt;br /&gt;
3. Klikneme '''pravým na projekt--Properties--Libraries--Add''' a pridáme nasledujúce knižnice:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Actions APIs&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Nodes API&amp;lt;br /&amp;gt;&lt;br /&gt;
c/ Common Palette &amp;lt;br /&amp;gt;&lt;br /&gt;
Teraz by sme mali spozorovať, že všetky žlté žiarov nám zmiznú, a bude nám to vypadať nasledovne: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb siedmy.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Teraz pridáme našu Palettu do ShapeTopComponentovho náhľadu, a to tak, že do konštruktoru ShapeTopComponent kód&lt;br /&gt;
     associateLookup( Lookups.fixed( new Object[] { PaletteSupport.createPalette() } ) );&lt;br /&gt;
&lt;br /&gt;
5. Znova sa nám objaví žltá žiarovka, klikneme na ňu dáme &amp;quot;Add import...&amp;quot;, následne sa tam objaví znova, čiže znova klikneme a dáme &amp;quot;Add import...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
6. Spustite modul znova(pravým--run), teraz by to už malo vypadať takto, no zatiaľ bez funkcionality, pretože potrebujeme Layer Widget: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb osmy.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pridanie LayerWidget ==&lt;br /&gt;
&lt;br /&gt;
Pod pojmom LayerWidget si predstavte niečo priesvitné, na ktoré budeme môcť ukladať naše komponenty s paletty.&lt;br /&gt;
&lt;br /&gt;
1. Ná úrovni triedy GraphSceneImpl deklarujte náš LayerWidget&lt;br /&gt;
     private LayerWidget mainLayer;&lt;br /&gt;
&lt;br /&gt;
2. Do konštruktoru GraphSceneImpl pridajte LayerWidget ako dieťa našej scény:&lt;br /&gt;
     mainLayer = new LayerWidget (this);&lt;br /&gt;
     addChild (mainLayer);&lt;br /&gt;
&lt;br /&gt;
Teraz keď pridáme na scénu nejaký komponent s našej paletty , pridajú sa ako deti do našej mainLayer.&lt;br /&gt;
&lt;br /&gt;
== Pridanie IconNodeWidget (komponentu) cez funkcionalitu Drag and Drop (chyť a hoď) ==&lt;br /&gt;
&lt;br /&gt;
Doposiaľ, naša scéna existuje, ale nemá žiadnu funkcionalitu. Túto funkcionalitu pridáme pomocou '''&amp;quot;actions&amp;quot;'''. Action, ktorá nám umožňuje Drag &amp;amp; Drop funkcionalitu je '''AcceptAction''' . Táto action môže byť aplikovaná buď na náš komponent alebo na našu scénu. My ju budeme aplikovať na našu scénu. Využijeme '''createAcceptAction''' na to, aby sme definovali čo sa má stať po tom, ako je komponent pretiahnutý nad našu scénu.&lt;br /&gt;
&lt;br /&gt;
1. Najprv pridajte '''createAcceptAction''' spolu s jeho dvomi metódami do GraphSceneImpl konštruktoru:&lt;br /&gt;
   getActions().addAction(ActionFactory.createAcceptAction(new AcceptProvider() {&lt;br /&gt;
    public ConnectorState isAcceptable(Widget widget, Point point, Transferable transferable) {&lt;br /&gt;
        Image dragImage = getImageFromTransferable(transferable);&lt;br /&gt;
        JComponent view = getView();&lt;br /&gt;
        Graphics2D g2 = (Graphics2D) view.getGraphics();&lt;br /&gt;
        Rectangle visRect = view.getVisibleRect();&lt;br /&gt;
        view.paintImmediately(visRect.x, visRect.y, visRect.width, visRect.height);&lt;br /&gt;
        g2.drawImage(dragImage,&lt;br /&gt;
                AffineTransform.getTranslateInstance(point.getLocation().getX(),&lt;br /&gt;
                point.getLocation().getY()),&lt;br /&gt;
                null);&lt;br /&gt;
        return ConnectorState.ACCEPT;&lt;br /&gt;
    }&lt;br /&gt;
    public void accept(Widget widget, Point point, Transferable transferable) {&lt;br /&gt;
        Image image = getImageFromTransferable(transferable);&lt;br /&gt;
        Widget w = GraphSceneImpl.this.addNode(new MyNode(image));&lt;br /&gt;
        w.setPreferredLocation(widget.convertLocalToScene(point));&lt;br /&gt;
    }&lt;br /&gt;
    }));&lt;br /&gt;
&lt;br /&gt;
Objaví sa nám viacero chýb, a to z toho dôvodu, že sme použili aj metódy, ktoré zatiaľ nie sú definované, čiže si chvíľku nevšímajme tieto errory.&lt;br /&gt;
&lt;br /&gt;
2. Teraz do triedy '''GraphSceneImpl''' pridáme pomocnú metódu na získavanie obrázkov:&lt;br /&gt;
   private Image getImageFromTransferable(Transferable transferable) {&lt;br /&gt;
    Object o = null;&lt;br /&gt;
    try {&lt;br /&gt;
        o = transferable.getTransferData(DataFlavor.imageFlavor);&lt;br /&gt;
    } catch (IOException ex) {&lt;br /&gt;
        ex.printStackTrace();&lt;br /&gt;
    } catch (UnsupportedFlavorException ex) {&lt;br /&gt;
        ex.printStackTrace();&lt;br /&gt;
    }&lt;br /&gt;
    return o instanceof Image ? (Image) o : ImageUtilities.loadImage(&amp;quot;org/netbeans/shapesample/palette/shape1.png&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
Ako vidíme, je tu ošetrená chyba, čiže môžete do org.netbeans.shapesample.palette doplniť obrázok, ktorý sa má objaviť pri chybe, dajte mu meno shape1.png&lt;br /&gt;
&lt;br /&gt;
3. Z dôvodu toho, že máme len 3 obrázky, mohli by sme vytvoriť akoby len 3 prvky, preto si vytvoríme novú triedu s názvom '''MyNode'''. Klikneme na náš '''package shapesample pravým--new---java class''' a bude vypadať takto:&lt;br /&gt;
    public class MyNode {    &lt;br /&gt;
    private Image image;&lt;br /&gt;
    &lt;br /&gt;
    public MyNode(Image image) {&lt;br /&gt;
        this.image = image;&lt;br /&gt;
    }    &lt;br /&gt;
    public Image getImage() {&lt;br /&gt;
        return image;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
Klikneme na žltú žiarovku v tejto triede a dáme '''&amp;quot;Add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
4. Zmeníme teraz v triede '''GraphSceneImpl''' rodiča, od ktorého dedí, čiže jeden z prvý riadkov bude vypadať takto:&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&amp;lt;MyNode, String&amp;gt;{...telo triedy...}&lt;br /&gt;
čím sme zabezpečili, že naša Node je prijatá  cez Visual Library. Teraz sa nám objaví žltá žiarovka aj pri tomto riadku, lebo teraz musíme dediť iné abstraktné metódy, '''čiže klikneme na ňu --implement all abstract methods'''&lt;br /&gt;
5. Keďže používame generics, tak klikneme '''pravým na náš projekt--properties--sources''' a presvedčíme sa, že tam máme hodnotu  '''Source level = 1.5'''&lt;br /&gt;
&lt;br /&gt;
6. Následne definujeme náš nový Widget (komponent) v triede '''GraphSceneImpl''' a to tak, že tam nájdeme metódu '''protected Widget attachNodeWidget(MyNode node)''' a upravíme ju nasledovne:&lt;br /&gt;
     protected Widget attachNodeWidget(MyNode node) {&lt;br /&gt;
       IconNodeWidget widget = new IconNodeWidget(this);&lt;br /&gt;
       widget.setImage(node.getImage());&lt;br /&gt;
       widget.setLabel(Long.toString(node.hashCode()));&lt;br /&gt;
       widget.getActions().addAction(ActionFactory.createMoveAction());&lt;br /&gt;
       mainLayer.addChild(widget);&lt;br /&gt;
       return widget;&lt;br /&gt;
     }&lt;br /&gt;
Týmto nášmu Widgetu nastavíme obrázok, a priradíme mu veľké náhodné číslo, a ešte možnosť posúvať ho po našej scéne, a následne po zastavení ho pridať znova ako child.&lt;br /&gt;
&lt;br /&gt;
7. Ešte stále nám ostáva pár žltých žiaroviek, takže klikneme na každú z nich, ktorá tam bude a dáme '''&amp;quot;Add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
8. Spustíme náš projekt, a už uvidíme, že je možné presúvať komponenty (Widgety) z našej paletty na našu scénku:&lt;br /&gt;
&lt;br /&gt;
== Pridanie funkcionality pre našu scénu ==&lt;br /&gt;
1.Teraz pridáme najprv ZOOMaction na našu scénku a to tak, že na koniec '''GraphSceneImpl''' konštruktoru pridáme:&lt;br /&gt;
    getActions().addAction(ActionFactory.createZoomAction());&lt;br /&gt;
&lt;br /&gt;
Keď spustíme teraz náš projekt, tak pri pridržaní ctrl+ kolieško myši sa nám bude zoomovať naša plocha&lt;br /&gt;
&lt;br /&gt;
2. Pridaním riadku za predošlým :&lt;br /&gt;
    getActions().addAction(ActionFactory.createPanAction());&lt;br /&gt;
Pridáme funkcionalitu, že keď user potlačí kolečko myši, tak potom môže hýbať do hociktorého smeru.&lt;br /&gt;
&lt;br /&gt;
== Pridanie funkcinality pre IconNodeWidget ==&lt;br /&gt;
Pre IconNodeWidget sme už pridali funcionalitu pre hýbanie '''MoveAction'''. Tak isto sme schopný pridať aj funkcionalitu pre '''HoverAction, SelectAction, a InplaceEditorAction''', v poradí (nadídenie, vybranie, premenovanie)&lt;br /&gt;
1. Najprv na úrovni triedy definujte &lt;br /&gt;
   private WidgetAction editorAction = ActionFactory.createInplaceEditorAction(new LabelTextFieldEditor());&lt;br /&gt;
Následne sa objaví znova žltá žiarovka, najprv dajte '''&amp;quot;Add import...&amp;quot;''', následne dajte '''&amp;quot;Create class LabelTextFieldEditor...&amp;quot;''' , čo nám pridá do nášho package triedu.&lt;br /&gt;
2.Telo tejto triedy '''LabelTextFieldEditor''' zmeníme nasledovne:&lt;br /&gt;
    class LabelTextFieldEditor implements TextFieldInplaceEditor {&lt;br /&gt;
    public boolean isEnabled(Widget widget) {&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
    public String getText(Widget widget) {&lt;br /&gt;
        return ((LabelWidget) widget).getLabel();&lt;br /&gt;
    }&lt;br /&gt;
    public void setText(Widget widget, String text) {&lt;br /&gt;
        ((LabelWidget) widget).setLabel(text);&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
Znovu sa v tejto triede objaví zopár žltých žiaroviek, poklikajte na '''&amp;quot;add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
3. Následne priradíme editorAction nášmu IconNodeWidget, a to tak, že na koniec metódy '''protected Widget attachNodeWidget(MyNode node)''' triedy '''GraphSceneImpl''' vložíme tesne nad riadok ''' mainLayer.addChild(widget);''' nasledujúci kód:&lt;br /&gt;
    widget.getLabelWidget().getActions().addAction(editorAction);&lt;br /&gt;
&lt;br /&gt;
4. Následne Hower, Clicked action dolníme tak, že po vyššie doplnenom riadku dáme tieto dva:&lt;br /&gt;
    widget.getActions().addAction(createSelectAction());&lt;br /&gt;
    widget.getActions().addAction(createObjectHoverAction());&lt;br /&gt;
&lt;br /&gt;
5. Teraz musíme trochu premyslieť poradie, v ktorom sme akcie pridali, info tu [http://bits.netbeans.org/dev/javadoc/org-netbeans-api-visual/org/netbeans/api/visual/widget/doc-files/documentation.html#OrderOfActions]&lt;br /&gt;
A následne bude naša metóda '''protected Widget attachNodeWidget''' vypadať nasledovne&lt;br /&gt;
    protected Widget attachNodeWidget(MyNode node) {&lt;br /&gt;
        IconNodeWidget widget = new IconNodeWidget(this);&lt;br /&gt;
        widget.setImage(node.getImage());&lt;br /&gt;
        widget.setLabel(Long.toString(node.hashCode()));&lt;br /&gt;
        //double-click, event sa spustí len pri doubleclicku:&lt;br /&gt;
        widget.getLabelWidget().getActions().addAction(editorAction);&lt;br /&gt;
        //single-click, event sa spustí pri single clicku&lt;br /&gt;
        widget.getActions().addAction(createSelectAction());&lt;br /&gt;
        //mouse-dragged&lt;br /&gt;
        widget.getActions().addAction(ActionFactory.createMoveAction());&lt;br /&gt;
        //mouse-over,&lt;br /&gt;
        widget.getActions().addAction(createObjectHoverAction());&lt;br /&gt;
        mainLayer.addChild(widget);&lt;br /&gt;
        return widget;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
6. Po spustení to bude môcť vypadať takto napr.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb desat.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Záver a riešenie problémov ==&lt;br /&gt;
&lt;br /&gt;
Ukázali sme v skutku len veľmi strohú ukážku, čo by sa s NetBeans dalo spraviť, ale keďže je to problematika, ktorou by sa mali zaoberať knihy pre pokročilejších programátorov, tak tu skončíme.&lt;br /&gt;
&lt;br /&gt;
V prípade nejasností je vždy dobré sa obráti na stránku NetBeans tutorials [http://netbeans.org/kb/trails/platform.html]&lt;br /&gt;
&lt;br /&gt;
V prípade problémov, resp. riešenia chýb uvedeného návodu, '''odporúčam použiť VYTVORENY FUNKCNY MODUL'''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Download:''' [http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=14027]&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Inštalácia:''' Spustite '''NetBeans--Tools--Plugins--kliknite Downloaded--Add Plugins...--nájdite stiahnutý--install'''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Spustenie pluginu:''' '''Spustite NetBeans--File--New Project--Samples--NetBeansModule--Visual Library Demo'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
V prípade nejasností, je tam všetko štruktúrované ako v našom návode, čiže by ste tam mali nájsť svoju chybu dosť rýchlo a prehľadne.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zdroj:[http://platform.netbeans.org/tutorials/nbm-visual_library.html]&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3874</id>
		<title>Základy práce s NetBeans IDE a vývoj modulov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3874"/>
		<updated>2010-04-27T19:25:43Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: /* Pridanie LayerWidget */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== NetBeans IDE ==&lt;br /&gt;
NetBeans je krásne vývojové prostredie, ktorého hlavnou výhodou je jeho modulárna architektúra. Ďalším skvelým prvkom je, že sa spolieha na toolkit SWING UI, čo nám dokopy dáva obrovské výhody.&lt;br /&gt;
&lt;br /&gt;
V tomto článku sa posnažím ukázať, ako možno vytvoriť jednoduchý modul pre NetBeans, ktorý bude iba strohá ukážka toho, čo sa s NetBeans dá robit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Požiadavky na postup článkom ==&lt;br /&gt;
1. NetBeans IDE ( použitá verzia 6.8 )&amp;lt;br /&amp;gt;&lt;br /&gt;
2. Java_jdk ( použitá verzia 1.6.0.18 ) &amp;lt;br /&amp;gt;&lt;br /&gt;
3. Základné znalosti jazyka JAVA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie a spustenie projektu ==&lt;br /&gt;
1. Začneme  spustením  Netbeans  a  zvolíme  '''File--New Project--NetBeans Modules--Module'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb prvy.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Klikneme na tlačítko &amp;quot;NEXT&amp;quot;, pomenujeme si náš projekt napr. &amp;quot;ShapeSample&amp;quot;, nastavíme ho ako &amp;quot;'''main project'''&amp;quot; a vyberieme si umiestnenie, kde ho chceme uložiť a ponecháme '''Standalone Module'''&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb druhy.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Klikneme &amp;quot;NEXT&amp;quot;, zadáme do &amp;quot;Code Name Base&amp;quot; '''org.netbeans.shapesample''', a dôležité, klikneme na '''Generate XML Layer'''. Následne klikneme na tlačítko finish, a vytvorí sa nám projekt.&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb treti.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. V okne &amp;quot;Project&amp;quot; , '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--Properties--Libraries'''. Module Dependencies klikneme na tlačítko &amp;quot;ADD&amp;quot; a pridáme:&amp;lt;br /&amp;gt;&lt;br /&gt;
''a/ Visual Library API &amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Utilities API &amp;lt;br /&amp;gt;''&lt;br /&gt;
Klikneme na tlačítko OK, čo nám pridá odkazy.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Znova v &amp;quot;Project&amp;quot; window '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--New--Other--Module Development--Window Component''' , klikneme &amp;quot;NEXT&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6. Ako Windows Position dáme '''editor''' a zaškrtneme '''Open on application start''' a klikneme &amp;quot;NEXT&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7.Do políčka &amp;quot;Class Name Prefix&amp;quot; dopíšeme '''Shape''', klikneme na tlačítko &amp;quot;FINISH&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. Vygeneruje sa nám viacero súbor, jedným z nich je '''ShapeTopComponent''', 2krát naň klikneme a otvoríme ho v design view.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. V design view, pravým klikneme na okno akoby a dáme '''Set Layout--Border Layout'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb stvrty.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie scény ==&lt;br /&gt;
1. Využijeme okno &amp;quot;'''Palette'''&amp;quot; (ak nie je zobrazené dáme window---palette) a vložíme na náš layout '''ScrollPane'''. V okne &amp;quot;Inspector&amp;quot; klikneme pravým na jScrollPane1--Change Variable Name a nastavíme hodnotu na &amp;quot;shapePane&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
2.V &amp;quot;Project&amp;quot; window na zložku''' org--netbeans--shapesample''' klikneme pravým a dáme '''new--Java Class''', pomenujme ju &amp;quot;'''GraphSceneImpl'''&amp;quot;, a po vytvorení dopíšme do triedy '''extends GraphScene'''&lt;br /&gt;
&lt;br /&gt;
3. Žltá žiarovka s červeným výkričníkom sa nám objaví naľavo v editore, klikneme na ňu, a dáme &amp;quot;'''add Import...'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
Následne sa nám objaví ďalšia žltá žiarovka, klikneme na ňu a dáme &amp;quot;'''Implement all abstract methods'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb piaty.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Pre lepšiu orientáciu zmeníme názvy parametrov vygenerovaných NetBeans, a po úprave bude naša trieda vypadať takto:&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
    public GraphSceneImpl() {&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachNodeWidget(Object node) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachEdgeWidget(Object edge) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeSourceAnchor(Object edge, Object oldSourceNode, Object newSourceNode) {&lt;br /&gt;
    &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeTargetAnchor(Object edge, Object oldTargetNode, Object newTargetNode) {&lt;br /&gt;
            &lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
5.Vrátime sa k ShapeTopComponent, kde sa budeme starať o instanciu GraphSceneImpl , prepneme Design View na SourceView, a nájdeme jeho konštruktor. Do tela konštruktora doplníme nasledujúce riadky:&lt;br /&gt;
     GraphSceneImpl scene = new GraphSceneImpl();&lt;br /&gt;
     myView = scene.createView();     &lt;br /&gt;
     shapePane.setViewportView(myView);&lt;br /&gt;
     add(scene.createSatelliteView(), BorderLayout.WEST);  &lt;br /&gt;
&lt;br /&gt;
Týmto sme vytvorili 2 náhľady, jeden veľký, a jeden akoby informačný na ľavej strane, ktorý pomôže používateľovi rýchlejšie sa pohybovať po väčšom rozpätí.&lt;br /&gt;
&lt;br /&gt;
6. Na '''úrovni triedy ShapeTopComponent'''  deklarujeme (doplníme napr. hneď nad konštruktor)&lt;br /&gt;
    private JComponent myView;&lt;br /&gt;
&lt;br /&gt;
Ostanú nám ešte 2 žlté žiarovky, klikneme na každú z nich, a dáme &amp;quot;'''Add Import...'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
7. Teraz musíme ošetriť, že ak sa NetBeans IDE reštartuje, nemáme žiadny dôvod aby ShapeTopComponent pretrvával, čiže nájdeme metódu '''getPersistenceType()''' v tele triedy, a zmeníme ju nasledovne:&lt;br /&gt;
   public int getPersistenceType() {&lt;br /&gt;
       return TopComponent.PERSISTENCE_NEVER;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
8. Klikneme v &amp;quot;Project&amp;quot; window na náš projekt '''ShapeSample pravým--run'''&lt;br /&gt;
&lt;br /&gt;
9. Nezľaknite sa, spustí sa nová inštancia NetBeans IDE(ak nie je náš projekt už otvorený kliknite na '''window---Shape''') a zobrazí sa Vám niečo takéto:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb siesty.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vytváranie Palety pre našu scénu ==&lt;br /&gt;
&lt;br /&gt;
Teraz aby sme pokračovali niečím užitočným, vytvoríme si palettu, na čo využijeme Palette API, ktorá bude obsahovať komponenty, ktoré môžeme použiť a pridať na našu scénu pretiahnutím.&lt;br /&gt;
Pre ďalšie pokračovanie budeme potrebovať 3 obrázky našich komponentov, použime tieto(kliknite pravým---uložiť ako, nemente názvy):&lt;br /&gt;
[[Súbor:Image1.png]][[Súbor:Image2.png]][[Súbor:Image3.png]]&lt;br /&gt;
&lt;br /&gt;
'''Keďže náš návod sa zaoberá s Visual Library API, a nie s Palette API(info tu:[http://netbeans.org/kb/trails/platform.html] ), na funkcionalitu Paletty použijeme už hotové knižnice, ktoré stiahnete tu''':&lt;br /&gt;
[http://www.sendspace.com/file/dqtnbi]  (v prípade, že je link nefunkčný, na konci článku je hotový plugin pre tento modul, knižnice vytiahnite z neho)&lt;br /&gt;
&lt;br /&gt;
1. Klikneme na náš projekt pravým--new--Java Package a pomenujeme ho '''org.netbeans.shapesample.palette'''&lt;br /&gt;
2. Teraz otvorme zložku, kde sme nás projekt uložili, konkrétne   '''násProjekt/src/org/netbeans/shapesample/pallete'''. A do tejto''' zložky nakopírujeme stiahnuté obrázky a následne aj knižnice''', čiže tieto súbory:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Category&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ CategoryChildren &amp;lt;br /&amp;gt;&lt;br /&gt;
c/ CategoryNode &amp;lt;br /&amp;gt;&lt;br /&gt;
d/ PaletteSupport&amp;lt;br /&amp;gt;&lt;br /&gt;
e/ Shape&amp;lt;br /&amp;gt;&lt;br /&gt;
f/ ShapeChildren&amp;lt;br /&amp;gt;&lt;br /&gt;
g/ ShapeNode&amp;lt;br /&amp;gt;&lt;br /&gt;
h/ image1, image2, image3&amp;lt;br /&amp;gt;&lt;br /&gt;
po zobrazení NetBeans sa nám novo vytvorený package obnoví, a budeme tam mať načítané všetky vložené súbory, pričom niekde sa znovu objavia červené krúžky so žiarovkou, to si nevšímajme chvíľku&lt;br /&gt;
&lt;br /&gt;
3. Klikneme '''pravým na projekt--Properties--Libraries--Add''' a pridáme nasledujúce knižnice:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Actions APIs&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Nodes API&amp;lt;br /&amp;gt;&lt;br /&gt;
c/ Common Palette &amp;lt;br /&amp;gt;&lt;br /&gt;
Teraz by sme mali spozorovať, že všetky žlté žiarov nám zmiznú, a bude nám to vypadať nasledovne: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb siedmy.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Teraz pridáme našu Palettu do ShapeTopComponentovho náhľadu, a to tak, že do konštruktoru ShapeTopComponent kód&lt;br /&gt;
     associateLookup( Lookups.fixed( new Object[] { PaletteSupport.createPalette() } ) );&lt;br /&gt;
&lt;br /&gt;
5. Znova sa nám objaví žltá žiarovka, klikneme na ňu dáme &amp;quot;Add import...&amp;quot;, následne sa tam objaví znova, čiže znova klikneme a dáme &amp;quot;Add import...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
6. Spustite modul znova(pravým--run), teraz by to už malo vypadať takto, no zatiaľ bez funkcionality, pretože potrebujeme Layer Widget: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb osmy.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pridanie LayerWidget ==&lt;br /&gt;
&lt;br /&gt;
Pod pojmom LayerWidget si predstavte niečo priesvitné, na ktoré budeme môcť ukladať naše komponenty s paletty.&lt;br /&gt;
&lt;br /&gt;
1. Ná úrovni triedy GraphSceneImpl deklarujte náš LayerWidget&lt;br /&gt;
     private LayerWidget mainLayer;&lt;br /&gt;
&lt;br /&gt;
2. Do konštruktoru GraphSceneImpl pridajte LayerWidget ako dieťa našej scény:&lt;br /&gt;
     mainLayer = new LayerWidget (this);&lt;br /&gt;
     addChild (mainLayer);&lt;br /&gt;
&lt;br /&gt;
Teraz keď pridáme na scénu nejaký komponent s našej paletty , pridajú sa ako deti do našej mainLayer.&lt;br /&gt;
&lt;br /&gt;
== Pridanie IconNodeWidget (komponentu) cez funkcionalitu Drag and Drop (chyť a hoď) ==&lt;br /&gt;
&lt;br /&gt;
Doposiaľ, naša scéna existuje, ale nemá žiadnu funkcionalitu. Túto funkcionalitu pridáme pomocou '''&amp;quot;actions&amp;quot;'''. Action, ktorá nám umožnuje Drag &amp;amp; Drop funkcionalitu je '''AcceptAction''' . Táto action môže byť aplikovaná buď na náš komponent alebo na našu scénu. My ju budeme aplikovať na našu scénu. Využijeme '''createAcceptAction''' na to, aby sme definovali čo sa má stať po tom, ako je komponent pretiahnutý nad našu scénu.&lt;br /&gt;
&lt;br /&gt;
1. Najprv pridajte '''createAcceptAction''' spolu s jeho dvomi metódami do GraphSceneImpl konštruktoru:&lt;br /&gt;
   getActions().addAction(ActionFactory.createAcceptAction(new AcceptProvider() {&lt;br /&gt;
    public ConnectorState isAcceptable(Widget widget, Point point, Transferable transferable) {&lt;br /&gt;
        Image dragImage = getImageFromTransferable(transferable);&lt;br /&gt;
        JComponent view = getView();&lt;br /&gt;
        Graphics2D g2 = (Graphics2D) view.getGraphics();&lt;br /&gt;
        Rectangle visRect = view.getVisibleRect();&lt;br /&gt;
        view.paintImmediately(visRect.x, visRect.y, visRect.width, visRect.height);&lt;br /&gt;
        g2.drawImage(dragImage,&lt;br /&gt;
                AffineTransform.getTranslateInstance(point.getLocation().getX(),&lt;br /&gt;
                point.getLocation().getY()),&lt;br /&gt;
                null);&lt;br /&gt;
        return ConnectorState.ACCEPT;&lt;br /&gt;
    }&lt;br /&gt;
    public void accept(Widget widget, Point point, Transferable transferable) {&lt;br /&gt;
        Image image = getImageFromTransferable(transferable);&lt;br /&gt;
        Widget w = GraphSceneImpl.this.addNode(new MyNode(image));&lt;br /&gt;
        w.setPreferredLocation(widget.convertLocalToScene(point));&lt;br /&gt;
    }&lt;br /&gt;
    }));&lt;br /&gt;
&lt;br /&gt;
Objaví sa nám viacero chýb, a to z toho dôvodu, že sme použili aj metody, ktoré zatiaľ nie sú definované, čiže si chvíľku nevšímajme tieto errory.&lt;br /&gt;
&lt;br /&gt;
2. Teraz do triedy '''GraphSceneImpl''' pridáme pomocnú metódu na získavanie obrázkov:&lt;br /&gt;
   private Image getImageFromTransferable(Transferable transferable) {&lt;br /&gt;
    Object o = null;&lt;br /&gt;
    try {&lt;br /&gt;
        o = transferable.getTransferData(DataFlavor.imageFlavor);&lt;br /&gt;
    } catch (IOException ex) {&lt;br /&gt;
        ex.printStackTrace();&lt;br /&gt;
    } catch (UnsupportedFlavorException ex) {&lt;br /&gt;
        ex.printStackTrace();&lt;br /&gt;
    }&lt;br /&gt;
    return o instanceof Image ? (Image) o : ImageUtilities.loadImage(&amp;quot;org/netbeans/shapesample/palette/shape1.png&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
Ako vidíme, je tu ošetrená chyba, čiže môžete do org.netbeans.shapesample.palette doplniť obrázok, ktorý sa má objaviť pri chybe, dajte mu meno shape1.png&lt;br /&gt;
&lt;br /&gt;
3. Z dôvodu toho, že máme len 3 obrázky, mohli by sme vytvoriť akoby len 3 prvky, preto si vytvoríme novú triedu s názvom '''MyNode'''. Klikneme na náš '''package shapesample pravým--new---java class''' a bude vypadať takto:&lt;br /&gt;
    public class MyNode {    &lt;br /&gt;
    private Image image;&lt;br /&gt;
    &lt;br /&gt;
    public MyNode(Image image) {&lt;br /&gt;
        this.image = image;&lt;br /&gt;
    }    &lt;br /&gt;
    public Image getImage() {&lt;br /&gt;
        return image;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
Klikneme na žltú žiarovku v tejto triede a dáme '''&amp;quot;Add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
4. Zmeníme teraz v triede '''GraphSceneImpl''' rodiča, od ktorého dedí, čiže jeden z prvý riadkov bude vypadať takto:&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&amp;lt;MyNode, String&amp;gt;{...telo triedy...}&lt;br /&gt;
čím sme zabezpečili, že naša Node je prijatá  cez Visual Library. Teraz sa nám objaví žltá žiarovka aj pri tomto riadku, lebo teraz musíme dediť iné abstraktné metódy, '''čiže klikneme na ňu --implement all abstract methods'''&lt;br /&gt;
5. Kedže používame generics, tak klikneme '''pravým na náš projekt--properties--sources''' a presvedčíme sa, že tam máme hodnotu  '''Source level = 1.5'''&lt;br /&gt;
&lt;br /&gt;
6. Následne definujeme náš nový Widget (komponent) v triede '''GraphSceneImpl''' a to tak, že tam nájdeme metódu '''protected Widget attachNodeWidget(MyNode node)''' a upravíme ju nasledovne:&lt;br /&gt;
     protected Widget attachNodeWidget(MyNode node) {&lt;br /&gt;
       IconNodeWidget widget = new IconNodeWidget(this);&lt;br /&gt;
       widget.setImage(node.getImage());&lt;br /&gt;
       widget.setLabel(Long.toString(node.hashCode()));&lt;br /&gt;
       widget.getActions().addAction(ActionFactory.createMoveAction());&lt;br /&gt;
       mainLayer.addChild(widget);&lt;br /&gt;
       return widget;&lt;br /&gt;
     }&lt;br /&gt;
Týmto nášmu Widgetu nastavíme obrázok, a priradíme mu veľké náhodné číslo, a ešte možnosť posúvať ho po našej scéne, a následne po zastavení ho pridať znova ako child.&lt;br /&gt;
&lt;br /&gt;
7. Ešte stále nám ostáva pár žltých žiaroviek, takže klikneme na každú z nich, ktorá tam bude a dáme '''&amp;quot;Add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
8. Spustíme náš projekt, a už uvidíme, že je možné presúvať komponenty (Widgety) z našej paletty na našu scénku:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pridanie funkcionality pre našu scénu ==&lt;br /&gt;
1.Teraz pridáme najprv ZOOMaction na našu scénku a to tak, že na koniec '''GraphSceneImpl''' konštruktoru pridáme:&lt;br /&gt;
    getActions().addAction(ActionFactory.createZoomAction());&lt;br /&gt;
&lt;br /&gt;
Keď spustíme teraz náš projekt, tak pri pridržaní ctrl+ kolieško myši sa nám bude zoomovať naša plocha&lt;br /&gt;
&lt;br /&gt;
2. Pridaním riadku za predošlým :&lt;br /&gt;
    getActions().addAction(ActionFactory.createPanAction());&lt;br /&gt;
Pridáme funkcionalitu, že keď user potlačí kolečko myši, tak potom môže hýbať do hociktorého smeru.&lt;br /&gt;
&lt;br /&gt;
== Pridanie funkcinality pre IconNodeWidget ==&lt;br /&gt;
Pre IconNodeWidget sme už pridali funcionalitu pre hýbanie '''MoveAction'''. Tak isto sme schopný pridať aj funkcionalitu pre '''HoverAction, SelectAction, a InplaceEditorAction''', v poradí (nadídenie, vybranie, premenovanie)&lt;br /&gt;
1. Najprv na úrovni triedy definujte &lt;br /&gt;
   private WidgetAction editorAction = ActionFactory.createInplaceEditorAction(new LabelTextFieldEditor());&lt;br /&gt;
Následne sa objaví znova žltá žiarovka, najprv dajte '''&amp;quot;Add import...&amp;quot;''', následne dajte '''&amp;quot;Create class LabelTextFieldEditor...&amp;quot;''' , čo nám pridá do nášho package triedu.&lt;br /&gt;
2.Telo tejto triedy '''LabelTextFieldEditor''' zmeníme nasledovne:&lt;br /&gt;
    class LabelTextFieldEditor implements TextFieldInplaceEditor {&lt;br /&gt;
    public boolean isEnabled(Widget widget) {&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
    public String getText(Widget widget) {&lt;br /&gt;
        return ((LabelWidget) widget).getLabel();&lt;br /&gt;
    }&lt;br /&gt;
    public void setText(Widget widget, String text) {&lt;br /&gt;
        ((LabelWidget) widget).setLabel(text);&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
Znovu sa v tejto triede objaví zopár žltých žiaroviek, poklikajte na '''&amp;quot;add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
3. Následne priradíme editorAction nášmu IconNodeWidget, a to tak, že na koniec metódy '''protected Widget attachNodeWidget(MyNode node)''' triedy '''GraphSceneImpl''' vložíme tesne nad riadok ''' mainLayer.addChild(widget);''' nasledujúci kód:&lt;br /&gt;
    widget.getLabelWidget().getActions().addAction(editorAction);&lt;br /&gt;
&lt;br /&gt;
4. Následne Hower, Clicked action dolníme tak, že po vyššie doplnenom riadku dáme tieto dva:&lt;br /&gt;
    widget.getActions().addAction(createSelectAction());&lt;br /&gt;
    widget.getActions().addAction(createObjectHoverAction());&lt;br /&gt;
&lt;br /&gt;
5. Teraz musíme trochu premyslieť poradie, v ktorom sme akcie pridali, info tu [http://bits.netbeans.org/dev/javadoc/org-netbeans-api-visual/org/netbeans/api/visual/widget/doc-files/documentation.html#OrderOfActions]&lt;br /&gt;
A následne bude naša metóda '''protected Widget attachNodeWidget''' vypadať nasledovne&lt;br /&gt;
    protected Widget attachNodeWidget(MyNode node) {&lt;br /&gt;
        IconNodeWidget widget = new IconNodeWidget(this);&lt;br /&gt;
        widget.setImage(node.getImage());&lt;br /&gt;
        widget.setLabel(Long.toString(node.hashCode()));&lt;br /&gt;
        //double-click, event sa spustí len pri doubleclicku:&lt;br /&gt;
        widget.getLabelWidget().getActions().addAction(editorAction);&lt;br /&gt;
        //single-click, event sa spustí pri single clicku&lt;br /&gt;
        widget.getActions().addAction(createSelectAction());&lt;br /&gt;
        //mouse-dragged&lt;br /&gt;
        widget.getActions().addAction(ActionFactory.createMoveAction());&lt;br /&gt;
        //mouse-over,&lt;br /&gt;
        widget.getActions().addAction(createObjectHoverAction());&lt;br /&gt;
        mainLayer.addChild(widget);&lt;br /&gt;
        return widget;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
6. Po spustení to bude môcť vypadať takto napr.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb desat.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Záver a riešenie problémov ==&lt;br /&gt;
&lt;br /&gt;
Ukázali sme v skutku len veľmi strohú ukážku, čo by sa s NetBeans dalo spraviť, ale keďže je to problematika, ktorou by sa mali zaoberať knihy pre pokročilejších programátorov, tak tu skončíme.&lt;br /&gt;
&lt;br /&gt;
V prípade nejasností je vždy dobré sa obráti na stránku NetBeans tutorials [http://netbeans.org/kb/trails/platform.html]&lt;br /&gt;
&lt;br /&gt;
V prípade problémov, resp. riešenia chýb uvedeného návodu, '''odporúčam použiť VYTVORENY FUNKCNY MODUL'''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Download:''' [http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=14027]&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Inštalácia:''' Spustite '''NetBeans--Tools--Plugins--kliknite Downloaded--Add Plugins...--nájdite stiahnutý--install'''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Spustenie pluginu:''' '''Spustite NetBeans--File--New Project--Samples--NetBeansModule--Visual Library Demo'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
V prípade nejasností, je tam všetko štruktúrované ako v našom návode, čiže by ste tam mali nájsť svoju chybu dosť rýchlo a prehľadne.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zdroj:[http://platform.netbeans.org/tutorials/nbm-visual_library.html]&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3873</id>
		<title>Základy práce s NetBeans IDE a vývoj modulov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3873"/>
		<updated>2010-04-27T19:25:17Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: /* Vytváranie Palety pre našu scénu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== NetBeans IDE ==&lt;br /&gt;
NetBeans je krásne vývojové prostredie, ktorého hlavnou výhodou je jeho modulárna architektúra. Ďalším skvelým prvkom je, že sa spolieha na toolkit SWING UI, čo nám dokopy dáva obrovské výhody.&lt;br /&gt;
&lt;br /&gt;
V tomto článku sa posnažím ukázať, ako možno vytvoriť jednoduchý modul pre NetBeans, ktorý bude iba strohá ukážka toho, čo sa s NetBeans dá robit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Požiadavky na postup článkom ==&lt;br /&gt;
1. NetBeans IDE ( použitá verzia 6.8 )&amp;lt;br /&amp;gt;&lt;br /&gt;
2. Java_jdk ( použitá verzia 1.6.0.18 ) &amp;lt;br /&amp;gt;&lt;br /&gt;
3. Základné znalosti jazyka JAVA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie a spustenie projektu ==&lt;br /&gt;
1. Začneme  spustením  Netbeans  a  zvolíme  '''File--New Project--NetBeans Modules--Module'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb prvy.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Klikneme na tlačítko &amp;quot;NEXT&amp;quot;, pomenujeme si náš projekt napr. &amp;quot;ShapeSample&amp;quot;, nastavíme ho ako &amp;quot;'''main project'''&amp;quot; a vyberieme si umiestnenie, kde ho chceme uložiť a ponecháme '''Standalone Module'''&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb druhy.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Klikneme &amp;quot;NEXT&amp;quot;, zadáme do &amp;quot;Code Name Base&amp;quot; '''org.netbeans.shapesample''', a dôležité, klikneme na '''Generate XML Layer'''. Následne klikneme na tlačítko finish, a vytvorí sa nám projekt.&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb treti.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. V okne &amp;quot;Project&amp;quot; , '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--Properties--Libraries'''. Module Dependencies klikneme na tlačítko &amp;quot;ADD&amp;quot; a pridáme:&amp;lt;br /&amp;gt;&lt;br /&gt;
''a/ Visual Library API &amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Utilities API &amp;lt;br /&amp;gt;''&lt;br /&gt;
Klikneme na tlačítko OK, čo nám pridá odkazy.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Znova v &amp;quot;Project&amp;quot; window '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--New--Other--Module Development--Window Component''' , klikneme &amp;quot;NEXT&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6. Ako Windows Position dáme '''editor''' a zaškrtneme '''Open on application start''' a klikneme &amp;quot;NEXT&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7.Do políčka &amp;quot;Class Name Prefix&amp;quot; dopíšeme '''Shape''', klikneme na tlačítko &amp;quot;FINISH&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. Vygeneruje sa nám viacero súbor, jedným z nich je '''ShapeTopComponent''', 2krát naň klikneme a otvoríme ho v design view.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. V design view, pravým klikneme na okno akoby a dáme '''Set Layout--Border Layout'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb stvrty.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie scény ==&lt;br /&gt;
1. Využijeme okno &amp;quot;'''Palette'''&amp;quot; (ak nie je zobrazené dáme window---palette) a vložíme na náš layout '''ScrollPane'''. V okne &amp;quot;Inspector&amp;quot; klikneme pravým na jScrollPane1--Change Variable Name a nastavíme hodnotu na &amp;quot;shapePane&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
2.V &amp;quot;Project&amp;quot; window na zložku''' org--netbeans--shapesample''' klikneme pravým a dáme '''new--Java Class''', pomenujme ju &amp;quot;'''GraphSceneImpl'''&amp;quot;, a po vytvorení dopíšme do triedy '''extends GraphScene'''&lt;br /&gt;
&lt;br /&gt;
3. Žltá žiarovka s červeným výkričníkom sa nám objaví naľavo v editore, klikneme na ňu, a dáme &amp;quot;'''add Import...'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
Následne sa nám objaví ďalšia žltá žiarovka, klikneme na ňu a dáme &amp;quot;'''Implement all abstract methods'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb piaty.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Pre lepšiu orientáciu zmeníme názvy parametrov vygenerovaných NetBeans, a po úprave bude naša trieda vypadať takto:&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
    public GraphSceneImpl() {&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachNodeWidget(Object node) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachEdgeWidget(Object edge) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeSourceAnchor(Object edge, Object oldSourceNode, Object newSourceNode) {&lt;br /&gt;
    &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeTargetAnchor(Object edge, Object oldTargetNode, Object newTargetNode) {&lt;br /&gt;
            &lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
5.Vrátime sa k ShapeTopComponent, kde sa budeme starať o instanciu GraphSceneImpl , prepneme Design View na SourceView, a nájdeme jeho konštruktor. Do tela konštruktora doplníme nasledujúce riadky:&lt;br /&gt;
     GraphSceneImpl scene = new GraphSceneImpl();&lt;br /&gt;
     myView = scene.createView();     &lt;br /&gt;
     shapePane.setViewportView(myView);&lt;br /&gt;
     add(scene.createSatelliteView(), BorderLayout.WEST);  &lt;br /&gt;
&lt;br /&gt;
Týmto sme vytvorili 2 náhľady, jeden veľký, a jeden akoby informačný na ľavej strane, ktorý pomôže používateľovi rýchlejšie sa pohybovať po väčšom rozpätí.&lt;br /&gt;
&lt;br /&gt;
6. Na '''úrovni triedy ShapeTopComponent'''  deklarujeme (doplníme napr. hneď nad konštruktor)&lt;br /&gt;
    private JComponent myView;&lt;br /&gt;
&lt;br /&gt;
Ostanú nám ešte 2 žlté žiarovky, klikneme na každú z nich, a dáme &amp;quot;'''Add Import...'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
7. Teraz musíme ošetriť, že ak sa NetBeans IDE reštartuje, nemáme žiadny dôvod aby ShapeTopComponent pretrvával, čiže nájdeme metódu '''getPersistenceType()''' v tele triedy, a zmeníme ju nasledovne:&lt;br /&gt;
   public int getPersistenceType() {&lt;br /&gt;
       return TopComponent.PERSISTENCE_NEVER;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
8. Klikneme v &amp;quot;Project&amp;quot; window na náš projekt '''ShapeSample pravým--run'''&lt;br /&gt;
&lt;br /&gt;
9. Nezľaknite sa, spustí sa nová inštancia NetBeans IDE(ak nie je náš projekt už otvorený kliknite na '''window---Shape''') a zobrazí sa Vám niečo takéto:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb siesty.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vytváranie Palety pre našu scénu ==&lt;br /&gt;
&lt;br /&gt;
Teraz aby sme pokračovali niečím užitočným, vytvoríme si palettu, na čo využijeme Palette API, ktorá bude obsahovať komponenty, ktoré môžeme použiť a pridať na našu scénu pretiahnutím.&lt;br /&gt;
Pre ďalšie pokračovanie budeme potrebovať 3 obrázky našich komponentov, použime tieto(kliknite pravým---uložiť ako, nemente názvy):&lt;br /&gt;
[[Súbor:Image1.png]][[Súbor:Image2.png]][[Súbor:Image3.png]]&lt;br /&gt;
&lt;br /&gt;
'''Keďže náš návod sa zaoberá s Visual Library API, a nie s Palette API(info tu:[http://netbeans.org/kb/trails/platform.html] ), na funkcionalitu Paletty použijeme už hotové knižnice, ktoré stiahnete tu''':&lt;br /&gt;
[http://www.sendspace.com/file/dqtnbi]  (v prípade, že je link nefunkčný, na konci článku je hotový plugin pre tento modul, knižnice vytiahnite z neho)&lt;br /&gt;
&lt;br /&gt;
1. Klikneme na náš projekt pravým--new--Java Package a pomenujeme ho '''org.netbeans.shapesample.palette'''&lt;br /&gt;
2. Teraz otvorme zložku, kde sme nás projekt uložili, konkrétne   '''násProjekt/src/org/netbeans/shapesample/pallete'''. A do tejto''' zložky nakopírujeme stiahnuté obrázky a následne aj knižnice''', čiže tieto súbory:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Category&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ CategoryChildren &amp;lt;br /&amp;gt;&lt;br /&gt;
c/ CategoryNode &amp;lt;br /&amp;gt;&lt;br /&gt;
d/ PaletteSupport&amp;lt;br /&amp;gt;&lt;br /&gt;
e/ Shape&amp;lt;br /&amp;gt;&lt;br /&gt;
f/ ShapeChildren&amp;lt;br /&amp;gt;&lt;br /&gt;
g/ ShapeNode&amp;lt;br /&amp;gt;&lt;br /&gt;
h/ image1, image2, image3&amp;lt;br /&amp;gt;&lt;br /&gt;
po zobrazení NetBeans sa nám novo vytvorený package obnoví, a budeme tam mať načítané všetky vložené súbory, pričom niekde sa znovu objavia červené krúžky so žiarovkou, to si nevšímajme chvíľku&lt;br /&gt;
&lt;br /&gt;
3. Klikneme '''pravým na projekt--Properties--Libraries--Add''' a pridáme nasledujúce knižnice:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Actions APIs&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Nodes API&amp;lt;br /&amp;gt;&lt;br /&gt;
c/ Common Palette &amp;lt;br /&amp;gt;&lt;br /&gt;
Teraz by sme mali spozorovať, že všetky žlté žiarov nám zmiznú, a bude nám to vypadať nasledovne: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb siedmy.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Teraz pridáme našu Palettu do ShapeTopComponentovho náhľadu, a to tak, že do konštruktoru ShapeTopComponent kód&lt;br /&gt;
     associateLookup( Lookups.fixed( new Object[] { PaletteSupport.createPalette() } ) );&lt;br /&gt;
&lt;br /&gt;
5. Znova sa nám objaví žltá žiarovka, klikneme na ňu dáme &amp;quot;Add import...&amp;quot;, následne sa tam objaví znova, čiže znova klikneme a dáme &amp;quot;Add import...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
6. Spustite modul znova(pravým--run), teraz by to už malo vypadať takto, no zatiaľ bez funkcionality, pretože potrebujeme Layer Widget: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb osmy.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pridanie LayerWidget ==&lt;br /&gt;
&lt;br /&gt;
Pod pojmom LayerWidget si predstavte niečo priesvitné, na ktoré budeme môcť ukladať naše komponenty s paletty.&lt;br /&gt;
&lt;br /&gt;
1. Ná úrovni triedy GraphSceneImpl deklarujte náš LayerWidget&lt;br /&gt;
     private LayerWidget mainLayer;&lt;br /&gt;
&lt;br /&gt;
2. Do konštruktoru GraphSceneImpl pridajte LayerWidget ako dieťa našej scény:&lt;br /&gt;
     mainLayer = new LayerWidget (this);&lt;br /&gt;
     addChild (mainLayer);&lt;br /&gt;
&lt;br /&gt;
Teraz keď pridáme na scénu nejaký komponent s našej paletty , pridajú sa ako deti do našel mainLayer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pridanie IconNodeWidget (komponentu) cez funkcionalitu Drag and Drop (chyť a hoď) ==&lt;br /&gt;
&lt;br /&gt;
Doposiaľ, naša scéna existuje, ale nemá žiadnu funkcionalitu. Túto funkcionalitu pridáme pomocou '''&amp;quot;actions&amp;quot;'''. Action, ktorá nám umožnuje Drag &amp;amp; Drop funkcionalitu je '''AcceptAction''' . Táto action môže byť aplikovaná buď na náš komponent alebo na našu scénu. My ju budeme aplikovať na našu scénu. Využijeme '''createAcceptAction''' na to, aby sme definovali čo sa má stať po tom, ako je komponent pretiahnutý nad našu scénu.&lt;br /&gt;
&lt;br /&gt;
1. Najprv pridajte '''createAcceptAction''' spolu s jeho dvomi metódami do GraphSceneImpl konštruktoru:&lt;br /&gt;
   getActions().addAction(ActionFactory.createAcceptAction(new AcceptProvider() {&lt;br /&gt;
    public ConnectorState isAcceptable(Widget widget, Point point, Transferable transferable) {&lt;br /&gt;
        Image dragImage = getImageFromTransferable(transferable);&lt;br /&gt;
        JComponent view = getView();&lt;br /&gt;
        Graphics2D g2 = (Graphics2D) view.getGraphics();&lt;br /&gt;
        Rectangle visRect = view.getVisibleRect();&lt;br /&gt;
        view.paintImmediately(visRect.x, visRect.y, visRect.width, visRect.height);&lt;br /&gt;
        g2.drawImage(dragImage,&lt;br /&gt;
                AffineTransform.getTranslateInstance(point.getLocation().getX(),&lt;br /&gt;
                point.getLocation().getY()),&lt;br /&gt;
                null);&lt;br /&gt;
        return ConnectorState.ACCEPT;&lt;br /&gt;
    }&lt;br /&gt;
    public void accept(Widget widget, Point point, Transferable transferable) {&lt;br /&gt;
        Image image = getImageFromTransferable(transferable);&lt;br /&gt;
        Widget w = GraphSceneImpl.this.addNode(new MyNode(image));&lt;br /&gt;
        w.setPreferredLocation(widget.convertLocalToScene(point));&lt;br /&gt;
    }&lt;br /&gt;
    }));&lt;br /&gt;
&lt;br /&gt;
Objaví sa nám viacero chýb, a to z toho dôvodu, že sme použili aj metody, ktoré zatiaľ nie sú definované, čiže si chvíľku nevšímajme tieto errory.&lt;br /&gt;
&lt;br /&gt;
2. Teraz do triedy '''GraphSceneImpl''' pridáme pomocnú metódu na získavanie obrázkov:&lt;br /&gt;
   private Image getImageFromTransferable(Transferable transferable) {&lt;br /&gt;
    Object o = null;&lt;br /&gt;
    try {&lt;br /&gt;
        o = transferable.getTransferData(DataFlavor.imageFlavor);&lt;br /&gt;
    } catch (IOException ex) {&lt;br /&gt;
        ex.printStackTrace();&lt;br /&gt;
    } catch (UnsupportedFlavorException ex) {&lt;br /&gt;
        ex.printStackTrace();&lt;br /&gt;
    }&lt;br /&gt;
    return o instanceof Image ? (Image) o : ImageUtilities.loadImage(&amp;quot;org/netbeans/shapesample/palette/shape1.png&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
Ako vidíme, je tu ošetrená chyba, čiže môžete do org.netbeans.shapesample.palette doplniť obrázok, ktorý sa má objaviť pri chybe, dajte mu meno shape1.png&lt;br /&gt;
&lt;br /&gt;
3. Z dôvodu toho, že máme len 3 obrázky, mohli by sme vytvoriť akoby len 3 prvky, preto si vytvoríme novú triedu s názvom '''MyNode'''. Klikneme na náš '''package shapesample pravým--new---java class''' a bude vypadať takto:&lt;br /&gt;
    public class MyNode {    &lt;br /&gt;
    private Image image;&lt;br /&gt;
    &lt;br /&gt;
    public MyNode(Image image) {&lt;br /&gt;
        this.image = image;&lt;br /&gt;
    }    &lt;br /&gt;
    public Image getImage() {&lt;br /&gt;
        return image;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
Klikneme na žltú žiarovku v tejto triede a dáme '''&amp;quot;Add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
4. Zmeníme teraz v triede '''GraphSceneImpl''' rodiča, od ktorého dedí, čiže jeden z prvý riadkov bude vypadať takto:&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&amp;lt;MyNode, String&amp;gt;{...telo triedy...}&lt;br /&gt;
čím sme zabezpečili, že naša Node je prijatá  cez Visual Library. Teraz sa nám objaví žltá žiarovka aj pri tomto riadku, lebo teraz musíme dediť iné abstraktné metódy, '''čiže klikneme na ňu --implement all abstract methods'''&lt;br /&gt;
5. Kedže používame generics, tak klikneme '''pravým na náš projekt--properties--sources''' a presvedčíme sa, že tam máme hodnotu  '''Source level = 1.5'''&lt;br /&gt;
&lt;br /&gt;
6. Následne definujeme náš nový Widget (komponent) v triede '''GraphSceneImpl''' a to tak, že tam nájdeme metódu '''protected Widget attachNodeWidget(MyNode node)''' a upravíme ju nasledovne:&lt;br /&gt;
     protected Widget attachNodeWidget(MyNode node) {&lt;br /&gt;
       IconNodeWidget widget = new IconNodeWidget(this);&lt;br /&gt;
       widget.setImage(node.getImage());&lt;br /&gt;
       widget.setLabel(Long.toString(node.hashCode()));&lt;br /&gt;
       widget.getActions().addAction(ActionFactory.createMoveAction());&lt;br /&gt;
       mainLayer.addChild(widget);&lt;br /&gt;
       return widget;&lt;br /&gt;
     }&lt;br /&gt;
Týmto nášmu Widgetu nastavíme obrázok, a priradíme mu veľké náhodné číslo, a ešte možnosť posúvať ho po našej scéne, a následne po zastavení ho pridať znova ako child.&lt;br /&gt;
&lt;br /&gt;
7. Ešte stále nám ostáva pár žltých žiaroviek, takže klikneme na každú z nich, ktorá tam bude a dáme '''&amp;quot;Add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
8. Spustíme náš projekt, a už uvidíme, že je možné presúvať komponenty (Widgety) z našej paletty na našu scénku:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pridanie funkcionality pre našu scénu ==&lt;br /&gt;
1.Teraz pridáme najprv ZOOMaction na našu scénku a to tak, že na koniec '''GraphSceneImpl''' konštruktoru pridáme:&lt;br /&gt;
    getActions().addAction(ActionFactory.createZoomAction());&lt;br /&gt;
&lt;br /&gt;
Keď spustíme teraz náš projekt, tak pri pridržaní ctrl+ kolieško myši sa nám bude zoomovať naša plocha&lt;br /&gt;
&lt;br /&gt;
2. Pridaním riadku za predošlým :&lt;br /&gt;
    getActions().addAction(ActionFactory.createPanAction());&lt;br /&gt;
Pridáme funkcionalitu, že keď user potlačí kolečko myši, tak potom môže hýbať do hociktorého smeru.&lt;br /&gt;
&lt;br /&gt;
== Pridanie funkcinality pre IconNodeWidget ==&lt;br /&gt;
Pre IconNodeWidget sme už pridali funcionalitu pre hýbanie '''MoveAction'''. Tak isto sme schopný pridať aj funkcionalitu pre '''HoverAction, SelectAction, a InplaceEditorAction''', v poradí (nadídenie, vybranie, premenovanie)&lt;br /&gt;
1. Najprv na úrovni triedy definujte &lt;br /&gt;
   private WidgetAction editorAction = ActionFactory.createInplaceEditorAction(new LabelTextFieldEditor());&lt;br /&gt;
Následne sa objaví znova žltá žiarovka, najprv dajte '''&amp;quot;Add import...&amp;quot;''', následne dajte '''&amp;quot;Create class LabelTextFieldEditor...&amp;quot;''' , čo nám pridá do nášho package triedu.&lt;br /&gt;
2.Telo tejto triedy '''LabelTextFieldEditor''' zmeníme nasledovne:&lt;br /&gt;
    class LabelTextFieldEditor implements TextFieldInplaceEditor {&lt;br /&gt;
    public boolean isEnabled(Widget widget) {&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
    public String getText(Widget widget) {&lt;br /&gt;
        return ((LabelWidget) widget).getLabel();&lt;br /&gt;
    }&lt;br /&gt;
    public void setText(Widget widget, String text) {&lt;br /&gt;
        ((LabelWidget) widget).setLabel(text);&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
Znovu sa v tejto triede objaví zopár žltých žiaroviek, poklikajte na '''&amp;quot;add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
3. Následne priradíme editorAction nášmu IconNodeWidget, a to tak, že na koniec metódy '''protected Widget attachNodeWidget(MyNode node)''' triedy '''GraphSceneImpl''' vložíme tesne nad riadok ''' mainLayer.addChild(widget);''' nasledujúci kód:&lt;br /&gt;
    widget.getLabelWidget().getActions().addAction(editorAction);&lt;br /&gt;
&lt;br /&gt;
4. Následne Hower, Clicked action dolníme tak, že po vyššie doplnenom riadku dáme tieto dva:&lt;br /&gt;
    widget.getActions().addAction(createSelectAction());&lt;br /&gt;
    widget.getActions().addAction(createObjectHoverAction());&lt;br /&gt;
&lt;br /&gt;
5. Teraz musíme trochu premyslieť poradie, v ktorom sme akcie pridali, info tu [http://bits.netbeans.org/dev/javadoc/org-netbeans-api-visual/org/netbeans/api/visual/widget/doc-files/documentation.html#OrderOfActions]&lt;br /&gt;
A následne bude naša metóda '''protected Widget attachNodeWidget''' vypadať nasledovne&lt;br /&gt;
    protected Widget attachNodeWidget(MyNode node) {&lt;br /&gt;
        IconNodeWidget widget = new IconNodeWidget(this);&lt;br /&gt;
        widget.setImage(node.getImage());&lt;br /&gt;
        widget.setLabel(Long.toString(node.hashCode()));&lt;br /&gt;
        //double-click, event sa spustí len pri doubleclicku:&lt;br /&gt;
        widget.getLabelWidget().getActions().addAction(editorAction);&lt;br /&gt;
        //single-click, event sa spustí pri single clicku&lt;br /&gt;
        widget.getActions().addAction(createSelectAction());&lt;br /&gt;
        //mouse-dragged&lt;br /&gt;
        widget.getActions().addAction(ActionFactory.createMoveAction());&lt;br /&gt;
        //mouse-over,&lt;br /&gt;
        widget.getActions().addAction(createObjectHoverAction());&lt;br /&gt;
        mainLayer.addChild(widget);&lt;br /&gt;
        return widget;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
6. Po spustení to bude môcť vypadať takto napr.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb desat.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Záver a riešenie problémov ==&lt;br /&gt;
&lt;br /&gt;
Ukázali sme v skutku len veľmi strohú ukážku, čo by sa s NetBeans dalo spraviť, ale keďže je to problematika, ktorou by sa mali zaoberať knihy pre pokročilejších programátorov, tak tu skončíme.&lt;br /&gt;
&lt;br /&gt;
V prípade nejasností je vždy dobré sa obráti na stránku NetBeans tutorials [http://netbeans.org/kb/trails/platform.html]&lt;br /&gt;
&lt;br /&gt;
V prípade problémov, resp. riešenia chýb uvedeného návodu, '''odporúčam použiť VYTVORENY FUNKCNY MODUL'''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Download:''' [http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=14027]&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Inštalácia:''' Spustite '''NetBeans--Tools--Plugins--kliknite Downloaded--Add Plugins...--nájdite stiahnutý--install'''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Spustenie pluginu:''' '''Spustite NetBeans--File--New Project--Samples--NetBeansModule--Visual Library Demo'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
V prípade nejasností, je tam všetko štruktúrované ako v našom návode, čiže by ste tam mali nájsť svoju chybu dosť rýchlo a prehľadne.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zdroj:[http://platform.netbeans.org/tutorials/nbm-visual_library.html]&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3872</id>
		<title>Základy práce s NetBeans IDE a vývoj modulov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3872"/>
		<updated>2010-04-27T19:22:15Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: /* Vytvorenie scény */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== NetBeans IDE ==&lt;br /&gt;
NetBeans je krásne vývojové prostredie, ktorého hlavnou výhodou je jeho modulárna architektúra. Ďalším skvelým prvkom je, že sa spolieha na toolkit SWING UI, čo nám dokopy dáva obrovské výhody.&lt;br /&gt;
&lt;br /&gt;
V tomto článku sa posnažím ukázať, ako možno vytvoriť jednoduchý modul pre NetBeans, ktorý bude iba strohá ukážka toho, čo sa s NetBeans dá robit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Požiadavky na postup článkom ==&lt;br /&gt;
1. NetBeans IDE ( použitá verzia 6.8 )&amp;lt;br /&amp;gt;&lt;br /&gt;
2. Java_jdk ( použitá verzia 1.6.0.18 ) &amp;lt;br /&amp;gt;&lt;br /&gt;
3. Základné znalosti jazyka JAVA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie a spustenie projektu ==&lt;br /&gt;
1. Začneme  spustením  Netbeans  a  zvolíme  '''File--New Project--NetBeans Modules--Module'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb prvy.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Klikneme na tlačítko &amp;quot;NEXT&amp;quot;, pomenujeme si náš projekt napr. &amp;quot;ShapeSample&amp;quot;, nastavíme ho ako &amp;quot;'''main project'''&amp;quot; a vyberieme si umiestnenie, kde ho chceme uložiť a ponecháme '''Standalone Module'''&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb druhy.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Klikneme &amp;quot;NEXT&amp;quot;, zadáme do &amp;quot;Code Name Base&amp;quot; '''org.netbeans.shapesample''', a dôležité, klikneme na '''Generate XML Layer'''. Následne klikneme na tlačítko finish, a vytvorí sa nám projekt.&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb treti.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. V okne &amp;quot;Project&amp;quot; , '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--Properties--Libraries'''. Module Dependencies klikneme na tlačítko &amp;quot;ADD&amp;quot; a pridáme:&amp;lt;br /&amp;gt;&lt;br /&gt;
''a/ Visual Library API &amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Utilities API &amp;lt;br /&amp;gt;''&lt;br /&gt;
Klikneme na tlačítko OK, čo nám pridá odkazy.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Znova v &amp;quot;Project&amp;quot; window '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--New--Other--Module Development--Window Component''' , klikneme &amp;quot;NEXT&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6. Ako Windows Position dáme '''editor''' a zaškrtneme '''Open on application start''' a klikneme &amp;quot;NEXT&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7.Do políčka &amp;quot;Class Name Prefix&amp;quot; dopíšeme '''Shape''', klikneme na tlačítko &amp;quot;FINISH&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. Vygeneruje sa nám viacero súbor, jedným z nich je '''ShapeTopComponent''', 2krát naň klikneme a otvoríme ho v design view.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. V design view, pravým klikneme na okno akoby a dáme '''Set Layout--Border Layout'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb stvrty.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie scény ==&lt;br /&gt;
1. Využijeme okno &amp;quot;'''Palette'''&amp;quot; (ak nie je zobrazené dáme window---palette) a vložíme na náš layout '''ScrollPane'''. V okne &amp;quot;Inspector&amp;quot; klikneme pravým na jScrollPane1--Change Variable Name a nastavíme hodnotu na &amp;quot;shapePane&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
2.V &amp;quot;Project&amp;quot; window na zložku''' org--netbeans--shapesample''' klikneme pravým a dáme '''new--Java Class''', pomenujme ju &amp;quot;'''GraphSceneImpl'''&amp;quot;, a po vytvorení dopíšme do triedy '''extends GraphScene'''&lt;br /&gt;
&lt;br /&gt;
3. Žltá žiarovka s červeným výkričníkom sa nám objaví naľavo v editore, klikneme na ňu, a dáme &amp;quot;'''add Import...'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
Následne sa nám objaví ďalšia žltá žiarovka, klikneme na ňu a dáme &amp;quot;'''Implement all abstract methods'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb piaty.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Pre lepšiu orientáciu zmeníme názvy parametrov vygenerovaných NetBeans, a po úprave bude naša trieda vypadať takto:&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
    public GraphSceneImpl() {&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachNodeWidget(Object node) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachEdgeWidget(Object edge) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeSourceAnchor(Object edge, Object oldSourceNode, Object newSourceNode) {&lt;br /&gt;
    &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeTargetAnchor(Object edge, Object oldTargetNode, Object newTargetNode) {&lt;br /&gt;
            &lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
5.Vrátime sa k ShapeTopComponent, kde sa budeme starať o instanciu GraphSceneImpl , prepneme Design View na SourceView, a nájdeme jeho konštruktor. Do tela konštruktora doplníme nasledujúce riadky:&lt;br /&gt;
     GraphSceneImpl scene = new GraphSceneImpl();&lt;br /&gt;
     myView = scene.createView();     &lt;br /&gt;
     shapePane.setViewportView(myView);&lt;br /&gt;
     add(scene.createSatelliteView(), BorderLayout.WEST);  &lt;br /&gt;
&lt;br /&gt;
Týmto sme vytvorili 2 náhľady, jeden veľký, a jeden akoby informačný na ľavej strane, ktorý pomôže používateľovi rýchlejšie sa pohybovať po väčšom rozpätí.&lt;br /&gt;
&lt;br /&gt;
6. Na '''úrovni triedy ShapeTopComponent'''  deklarujeme (doplníme napr. hneď nad konštruktor)&lt;br /&gt;
    private JComponent myView;&lt;br /&gt;
&lt;br /&gt;
Ostanú nám ešte 2 žlté žiarovky, klikneme na každú z nich, a dáme &amp;quot;'''Add Import...'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
7. Teraz musíme ošetriť, že ak sa NetBeans IDE reštartuje, nemáme žiadny dôvod aby ShapeTopComponent pretrvával, čiže nájdeme metódu '''getPersistenceType()''' v tele triedy, a zmeníme ju nasledovne:&lt;br /&gt;
   public int getPersistenceType() {&lt;br /&gt;
       return TopComponent.PERSISTENCE_NEVER;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
8. Klikneme v &amp;quot;Project&amp;quot; window na náš projekt '''ShapeSample pravým--run'''&lt;br /&gt;
&lt;br /&gt;
9. Nezľaknite sa, spustí sa nová inštancia NetBeans IDE(ak nie je náš projekt už otvorený kliknite na '''window---Shape''') a zobrazí sa Vám niečo takéto:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb siesty.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vytváranie Palety pre našu scénu ==&lt;br /&gt;
&lt;br /&gt;
Teraz aby sme pokračovali niečím užitočným, vytvoríme si palletu, na čo využijeme Pallete API, ktorá bude obsahovať komponenty, ktoré môžeme použiť a pridať na našu scénu pretiahnutím.&lt;br /&gt;
Pre ďalšie pokračovanie budeme potrebovať 3 obrázky našich komponentov, použime tieto(kliknite pravým---uložiť ako, nemente názvy):&lt;br /&gt;
[[Súbor:Image1.png]][[Súbor:Image2.png]][[Súbor:Image3.png]]&lt;br /&gt;
&lt;br /&gt;
'''Keďže náš tutoriál sa zaoberá s Visual Library API, a nie s Palette API(info tu:[http://netbeans.org/kb/trails/platform.html] ), na funkcionalitu Paletty použijeme už hotové knižnice, ktoré stiahnete tu''':&lt;br /&gt;
[http://www.sendspace.com/file/dqtnbi]  (v prípade, že je link nefunkčný, na konci článku je hotový plugin pre tento modul, knižnice vytiahnite z neho)&lt;br /&gt;
&lt;br /&gt;
1. Klikneme na náš projekt pravým--new--Java Package a pomenujeme ho '''org.netbeans.shapesample.palette'''&lt;br /&gt;
2. Teraz podme do zložky, kde sme nás projekt uložili, konkrétne   '''násProjekt/src/org/netbeans/shapesample/pallete'''. A do tejto''' zložky nakopírujeme stiahnuté obrázky a následne aj knižnice''', čiže tieto súbory:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Category&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ CategoryChildren &amp;lt;br /&amp;gt;&lt;br /&gt;
c/ CategoryNode &amp;lt;br /&amp;gt;&lt;br /&gt;
d/ PaletteSupport&amp;lt;br /&amp;gt;&lt;br /&gt;
e/ Shape&amp;lt;br /&amp;gt;&lt;br /&gt;
f/ ShapeChildren&amp;lt;br /&amp;gt;&lt;br /&gt;
g/ ShapeNode&amp;lt;br /&amp;gt;&lt;br /&gt;
h/ image1, image2, image3&amp;lt;br /&amp;gt;&lt;br /&gt;
po zobrazení NetBeans sa nám novo vytvorený package obnoví, a budeme tam mať načítané všetky vložené súbory, pričom niekde sa znovu objavia červené krúžky so žiarovkou, to si nevšímajme chvíľku&lt;br /&gt;
&lt;br /&gt;
3. Klikneme '''pravým na projekt--Properties--Libraries--Add''' a pridáme nasledujúce knižnice:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Actions APIs&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Nodes API&amp;lt;br /&amp;gt;&lt;br /&gt;
c/ Common Palette &amp;lt;br /&amp;gt;&lt;br /&gt;
Teraz by sme mali spozorovať, že všetky červené guličky nám zmiznú, a bude nám to vypadať nasledovne: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb siedmy.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Teraz pridáme našu Palettu do ShapeTopComponentovho náhľadu, a to tak, že do konštruktoru ShapeTopComponent kod&lt;br /&gt;
     associateLookup( Lookups.fixed( new Object[] { PaletteSupport.createPalette() } ) );&lt;br /&gt;
&lt;br /&gt;
5. Znova sa nám objaví žltá žiarovka, klikneme na ňu dáme &amp;quot;Add import...&amp;quot;, následne sa tam objaví znova, čiže znova klikneme a dáme &amp;quot;Add import...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
6. Spustite modul znova(pravým--run), teraz by to už malo vypadať takto, no zatiaľ bez funkcionality, pretože potrebujeme Layer Widget: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb osmy.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pridanie LayerWidget ==&lt;br /&gt;
&lt;br /&gt;
Pod pojmom LayerWidget si predstavte niečo priesvitné, na ktoré budeme môcť ukladať naše komponenty s paletty.&lt;br /&gt;
&lt;br /&gt;
1. Ná úrovni triedy GraphSceneImpl deklarujte náš LayerWidget&lt;br /&gt;
     private LayerWidget mainLayer;&lt;br /&gt;
&lt;br /&gt;
2. Do konštruktoru GraphSceneImpl pridajte LayerWidget ako dieťa našej scény:&lt;br /&gt;
     mainLayer = new LayerWidget (this);&lt;br /&gt;
     addChild (mainLayer);&lt;br /&gt;
&lt;br /&gt;
Teraz keď pridáme na scénu nejaký komponent s našej paletty , pridajú sa ako deti do našel mainLayer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pridanie IconNodeWidget (komponentu) cez funkcionalitu Drag and Drop (chyť a hoď) ==&lt;br /&gt;
&lt;br /&gt;
Doposiaľ, naša scéna existuje, ale nemá žiadnu funkcionalitu. Túto funkcionalitu pridáme pomocou '''&amp;quot;actions&amp;quot;'''. Action, ktorá nám umožnuje Drag &amp;amp; Drop funkcionalitu je '''AcceptAction''' . Táto action môže byť aplikovaná buď na náš komponent alebo na našu scénu. My ju budeme aplikovať na našu scénu. Využijeme '''createAcceptAction''' na to, aby sme definovali čo sa má stať po tom, ako je komponent pretiahnutý nad našu scénu.&lt;br /&gt;
&lt;br /&gt;
1. Najprv pridajte '''createAcceptAction''' spolu s jeho dvomi metódami do GraphSceneImpl konštruktoru:&lt;br /&gt;
   getActions().addAction(ActionFactory.createAcceptAction(new AcceptProvider() {&lt;br /&gt;
    public ConnectorState isAcceptable(Widget widget, Point point, Transferable transferable) {&lt;br /&gt;
        Image dragImage = getImageFromTransferable(transferable);&lt;br /&gt;
        JComponent view = getView();&lt;br /&gt;
        Graphics2D g2 = (Graphics2D) view.getGraphics();&lt;br /&gt;
        Rectangle visRect = view.getVisibleRect();&lt;br /&gt;
        view.paintImmediately(visRect.x, visRect.y, visRect.width, visRect.height);&lt;br /&gt;
        g2.drawImage(dragImage,&lt;br /&gt;
                AffineTransform.getTranslateInstance(point.getLocation().getX(),&lt;br /&gt;
                point.getLocation().getY()),&lt;br /&gt;
                null);&lt;br /&gt;
        return ConnectorState.ACCEPT;&lt;br /&gt;
    }&lt;br /&gt;
    public void accept(Widget widget, Point point, Transferable transferable) {&lt;br /&gt;
        Image image = getImageFromTransferable(transferable);&lt;br /&gt;
        Widget w = GraphSceneImpl.this.addNode(new MyNode(image));&lt;br /&gt;
        w.setPreferredLocation(widget.convertLocalToScene(point));&lt;br /&gt;
    }&lt;br /&gt;
    }));&lt;br /&gt;
&lt;br /&gt;
Objaví sa nám viacero chýb, a to z toho dôvodu, že sme použili aj metody, ktoré zatiaľ nie sú definované, čiže si chvíľku nevšímajme tieto errory.&lt;br /&gt;
&lt;br /&gt;
2. Teraz do triedy '''GraphSceneImpl''' pridáme pomocnú metódu na získavanie obrázkov:&lt;br /&gt;
   private Image getImageFromTransferable(Transferable transferable) {&lt;br /&gt;
    Object o = null;&lt;br /&gt;
    try {&lt;br /&gt;
        o = transferable.getTransferData(DataFlavor.imageFlavor);&lt;br /&gt;
    } catch (IOException ex) {&lt;br /&gt;
        ex.printStackTrace();&lt;br /&gt;
    } catch (UnsupportedFlavorException ex) {&lt;br /&gt;
        ex.printStackTrace();&lt;br /&gt;
    }&lt;br /&gt;
    return o instanceof Image ? (Image) o : ImageUtilities.loadImage(&amp;quot;org/netbeans/shapesample/palette/shape1.png&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
Ako vidíme, je tu ošetrená chyba, čiže môžete do org.netbeans.shapesample.palette doplniť obrázok, ktorý sa má objaviť pri chybe, dajte mu meno shape1.png&lt;br /&gt;
&lt;br /&gt;
3. Z dôvodu toho, že máme len 3 obrázky, mohli by sme vytvoriť akoby len 3 prvky, preto si vytvoríme novú triedu s názvom '''MyNode'''. Klikneme na náš '''package shapesample pravým--new---java class''' a bude vypadať takto:&lt;br /&gt;
    public class MyNode {    &lt;br /&gt;
    private Image image;&lt;br /&gt;
    &lt;br /&gt;
    public MyNode(Image image) {&lt;br /&gt;
        this.image = image;&lt;br /&gt;
    }    &lt;br /&gt;
    public Image getImage() {&lt;br /&gt;
        return image;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
Klikneme na žltú žiarovku v tejto triede a dáme '''&amp;quot;Add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
4. Zmeníme teraz v triede '''GraphSceneImpl''' rodiča, od ktorého dedí, čiže jeden z prvý riadkov bude vypadať takto:&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&amp;lt;MyNode, String&amp;gt;{...telo triedy...}&lt;br /&gt;
čím sme zabezpečili, že naša Node je prijatá  cez Visual Library. Teraz sa nám objaví žltá žiarovka aj pri tomto riadku, lebo teraz musíme dediť iné abstraktné metódy, '''čiže klikneme na ňu --implement all abstract methods'''&lt;br /&gt;
5. Kedže používame generics, tak klikneme '''pravým na náš projekt--properties--sources''' a presvedčíme sa, že tam máme hodnotu  '''Source level = 1.5'''&lt;br /&gt;
&lt;br /&gt;
6. Následne definujeme náš nový Widget (komponent) v triede '''GraphSceneImpl''' a to tak, že tam nájdeme metódu '''protected Widget attachNodeWidget(MyNode node)''' a upravíme ju nasledovne:&lt;br /&gt;
     protected Widget attachNodeWidget(MyNode node) {&lt;br /&gt;
       IconNodeWidget widget = new IconNodeWidget(this);&lt;br /&gt;
       widget.setImage(node.getImage());&lt;br /&gt;
       widget.setLabel(Long.toString(node.hashCode()));&lt;br /&gt;
       widget.getActions().addAction(ActionFactory.createMoveAction());&lt;br /&gt;
       mainLayer.addChild(widget);&lt;br /&gt;
       return widget;&lt;br /&gt;
     }&lt;br /&gt;
Týmto nášmu Widgetu nastavíme obrázok, a priradíme mu veľké náhodné číslo, a ešte možnosť posúvať ho po našej scéne, a následne po zastavení ho pridať znova ako child.&lt;br /&gt;
&lt;br /&gt;
7. Ešte stále nám ostáva pár žltých žiaroviek, takže klikneme na každú z nich, ktorá tam bude a dáme '''&amp;quot;Add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
8. Spustíme náš projekt, a už uvidíme, že je možné presúvať komponenty (Widgety) z našej paletty na našu scénku:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pridanie funkcionality pre našu scénu ==&lt;br /&gt;
1.Teraz pridáme najprv ZOOMaction na našu scénku a to tak, že na koniec '''GraphSceneImpl''' konštruktoru pridáme:&lt;br /&gt;
    getActions().addAction(ActionFactory.createZoomAction());&lt;br /&gt;
&lt;br /&gt;
Keď spustíme teraz náš projekt, tak pri pridržaní ctrl+ kolieško myši sa nám bude zoomovať naša plocha&lt;br /&gt;
&lt;br /&gt;
2. Pridaním riadku za predošlým :&lt;br /&gt;
    getActions().addAction(ActionFactory.createPanAction());&lt;br /&gt;
Pridáme funkcionalitu, že keď user potlačí kolečko myši, tak potom môže hýbať do hociktorého smeru.&lt;br /&gt;
&lt;br /&gt;
== Pridanie funkcinality pre IconNodeWidget ==&lt;br /&gt;
Pre IconNodeWidget sme už pridali funcionalitu pre hýbanie '''MoveAction'''. Tak isto sme schopný pridať aj funkcionalitu pre '''HoverAction, SelectAction, a InplaceEditorAction''', v poradí (nadídenie, vybranie, premenovanie)&lt;br /&gt;
1. Najprv na úrovni triedy definujte &lt;br /&gt;
   private WidgetAction editorAction = ActionFactory.createInplaceEditorAction(new LabelTextFieldEditor());&lt;br /&gt;
Následne sa objaví znova žltá žiarovka, najprv dajte '''&amp;quot;Add import...&amp;quot;''', následne dajte '''&amp;quot;Create class LabelTextFieldEditor...&amp;quot;''' , čo nám pridá do nášho package triedu.&lt;br /&gt;
2.Telo tejto triedy '''LabelTextFieldEditor''' zmeníme nasledovne:&lt;br /&gt;
    class LabelTextFieldEditor implements TextFieldInplaceEditor {&lt;br /&gt;
    public boolean isEnabled(Widget widget) {&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
    public String getText(Widget widget) {&lt;br /&gt;
        return ((LabelWidget) widget).getLabel();&lt;br /&gt;
    }&lt;br /&gt;
    public void setText(Widget widget, String text) {&lt;br /&gt;
        ((LabelWidget) widget).setLabel(text);&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
Znovu sa v tejto triede objaví zopár žltých žiaroviek, poklikajte na '''&amp;quot;add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
3. Následne priradíme editorAction nášmu IconNodeWidget, a to tak, že na koniec metódy '''protected Widget attachNodeWidget(MyNode node)''' triedy '''GraphSceneImpl''' vložíme tesne nad riadok ''' mainLayer.addChild(widget);''' nasledujúci kód:&lt;br /&gt;
    widget.getLabelWidget().getActions().addAction(editorAction);&lt;br /&gt;
&lt;br /&gt;
4. Následne Hower, Clicked action dolníme tak, že po vyššie doplnenom riadku dáme tieto dva:&lt;br /&gt;
    widget.getActions().addAction(createSelectAction());&lt;br /&gt;
    widget.getActions().addAction(createObjectHoverAction());&lt;br /&gt;
&lt;br /&gt;
5. Teraz musíme trochu premyslieť poradie, v ktorom sme akcie pridali, info tu [http://bits.netbeans.org/dev/javadoc/org-netbeans-api-visual/org/netbeans/api/visual/widget/doc-files/documentation.html#OrderOfActions]&lt;br /&gt;
A následne bude naša metóda '''protected Widget attachNodeWidget''' vypadať nasledovne&lt;br /&gt;
    protected Widget attachNodeWidget(MyNode node) {&lt;br /&gt;
        IconNodeWidget widget = new IconNodeWidget(this);&lt;br /&gt;
        widget.setImage(node.getImage());&lt;br /&gt;
        widget.setLabel(Long.toString(node.hashCode()));&lt;br /&gt;
        //double-click, event sa spustí len pri doubleclicku:&lt;br /&gt;
        widget.getLabelWidget().getActions().addAction(editorAction);&lt;br /&gt;
        //single-click, event sa spustí pri single clicku&lt;br /&gt;
        widget.getActions().addAction(createSelectAction());&lt;br /&gt;
        //mouse-dragged&lt;br /&gt;
        widget.getActions().addAction(ActionFactory.createMoveAction());&lt;br /&gt;
        //mouse-over,&lt;br /&gt;
        widget.getActions().addAction(createObjectHoverAction());&lt;br /&gt;
        mainLayer.addChild(widget);&lt;br /&gt;
        return widget;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
6. Po spustení to bude môcť vypadať takto napr.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb desat.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Záver a riešenie problémov ==&lt;br /&gt;
&lt;br /&gt;
Ukázali sme v skutku len veľmi strohú ukážku, čo by sa s NetBeans dalo spraviť, ale keďže je to problematika, ktorou by sa mali zaoberať knihy pre pokročilejších programátorov, tak tu skončíme.&lt;br /&gt;
&lt;br /&gt;
V prípade nejasností je vždy dobré sa obráti na stránku NetBeans tutorials [http://netbeans.org/kb/trails/platform.html]&lt;br /&gt;
&lt;br /&gt;
V prípade problémov, resp. riešenia chýb uvedeného návodu, '''odporúčam použiť VYTVORENY FUNKCNY MODUL'''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Download:''' [http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=14027]&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Inštalácia:''' Spustite '''NetBeans--Tools--Plugins--kliknite Downloaded--Add Plugins...--nájdite stiahnutý--install'''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Spustenie pluginu:''' '''Spustite NetBeans--File--New Project--Samples--NetBeansModule--Visual Library Demo'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
V prípade nejasností, je tam všetko štruktúrované ako v našom návode, čiže by ste tam mali nájsť svoju chybu dosť rýchlo a prehľadne.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zdroj:[http://platform.netbeans.org/tutorials/nbm-visual_library.html]&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3871</id>
		<title>Základy práce s NetBeans IDE a vývoj modulov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3871"/>
		<updated>2010-04-27T19:19:43Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: /* Vytvorenie scény */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== NetBeans IDE ==&lt;br /&gt;
NetBeans je krásne vývojové prostredie, ktorého hlavnou výhodou je jeho modulárna architektúra. Ďalším skvelým prvkom je, že sa spolieha na toolkit SWING UI, čo nám dokopy dáva obrovské výhody.&lt;br /&gt;
&lt;br /&gt;
V tomto článku sa posnažím ukázať, ako možno vytvoriť jednoduchý modul pre NetBeans, ktorý bude iba strohá ukážka toho, čo sa s NetBeans dá robit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Požiadavky na postup článkom ==&lt;br /&gt;
1. NetBeans IDE ( použitá verzia 6.8 )&amp;lt;br /&amp;gt;&lt;br /&gt;
2. Java_jdk ( použitá verzia 1.6.0.18 ) &amp;lt;br /&amp;gt;&lt;br /&gt;
3. Základné znalosti jazyka JAVA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie a spustenie projektu ==&lt;br /&gt;
1. Začneme  spustením  Netbeans  a  zvolíme  '''File--New Project--NetBeans Modules--Module'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb prvy.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Klikneme na tlačítko &amp;quot;NEXT&amp;quot;, pomenujeme si náš projekt napr. &amp;quot;ShapeSample&amp;quot;, nastavíme ho ako &amp;quot;'''main project'''&amp;quot; a vyberieme si umiestnenie, kde ho chceme uložiť a ponecháme '''Standalone Module'''&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb druhy.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Klikneme &amp;quot;NEXT&amp;quot;, zadáme do &amp;quot;Code Name Base&amp;quot; '''org.netbeans.shapesample''', a dôležité, klikneme na '''Generate XML Layer'''. Následne klikneme na tlačítko finish, a vytvorí sa nám projekt.&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb treti.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. V okne &amp;quot;Project&amp;quot; , '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--Properties--Libraries'''. Module Dependencies klikneme na tlačítko &amp;quot;ADD&amp;quot; a pridáme:&amp;lt;br /&amp;gt;&lt;br /&gt;
''a/ Visual Library API &amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Utilities API &amp;lt;br /&amp;gt;''&lt;br /&gt;
Klikneme na tlačítko OK, čo nám pridá odkazy.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Znova v &amp;quot;Project&amp;quot; window '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--New--Other--Module Development--Window Component''' , klikneme &amp;quot;NEXT&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6. Ako Windows Position dáme '''editor''' a zaškrtneme '''Open on application start''' a klikneme &amp;quot;NEXT&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7.Do políčka &amp;quot;Class Name Prefix&amp;quot; dopíšeme '''Shape''', klikneme na tlačítko &amp;quot;FINISH&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. Vygeneruje sa nám viacero súbor, jedným z nich je '''ShapeTopComponent''', 2krát naň klikneme a otvoríme ho v design view.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. V design view, pravým klikneme na okno akoby a dáme '''Set Layout--Border Layout'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb stvrty.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie scény ==&lt;br /&gt;
1. Využijeme okno &amp;quot;'''Palette'''&amp;quot; (ak nie je zobrazené dáme window---pallete) a vložíme na naš layout '''ScrollPane'''. V okne &amp;quot;Inspector&amp;quot; klikneme pravým na jScrollPane1--Change Variable Name a nastavíme hodnotu na &amp;quot;shapePane&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
2.V &amp;quot;Project&amp;quot; windows na zložku''' org--netbeans--shapesample''' klikneme pravým a dáme '''new--Java Class''', pomenujme ju &amp;quot;'''GraphSceneImpl'''&amp;quot;, a po vytvorení dopíšme do triedy '''extends GraphScene'''&lt;br /&gt;
&lt;br /&gt;
3. Žltá žiarovka s červeným výkričníkom sa nám objaví naľavo v editore, klikneme na ňu, a dáme &amp;quot;'''add Import...'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
Následne sa dám objaví ďalšia žltá žiarovka, klikneme na ňu a dáme &amp;quot;'''Implement all abstract methods'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb piaty.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Pre lepšiu orientáciu zmeníme názvy parametrov vygenerovaných NetBeans, a po úprave bude naša trieda vypadať takto:&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
    public GraphSceneImpl() {&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachNodeWidget(Object node) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachEdgeWidget(Object edge) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeSourceAnchor(Object edge, Object oldSourceNode, Object newSourceNode) {&lt;br /&gt;
    &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeTargetAnchor(Object edge, Object oldTargetNode, Object newTargetNode) {&lt;br /&gt;
            &lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
5.Vrátime sa k ShapeTopComponent, kde sa budeme starať o instanciu GraphSceneImpl , prepneme Design View na SourceView, a nájdeme jeho konštruktor. Do tela konštruktora doplnime nasledujúce riadky:&lt;br /&gt;
     GraphSceneImpl scene = new GraphSceneImpl();&lt;br /&gt;
     myView = scene.createView();     &lt;br /&gt;
     shapePane.setViewportView(myView);&lt;br /&gt;
     add(scene.createSatelliteView(), BorderLayout.WEST);  &lt;br /&gt;
&lt;br /&gt;
Týmto sme vytvorili 2 náhľady, jeden veľký, a jeden akoby informačný na ľavej strane, ktorý pomôže používateľovi rýchlejšie sa pohybovať po väčšom rozpätí.&lt;br /&gt;
&lt;br /&gt;
6. Na '''úrovni triedy ShapeTopComponent'''  deklarujeme (doplníme napr. hneď nad konštruktor)&lt;br /&gt;
    private JComponent myView;&lt;br /&gt;
&lt;br /&gt;
Ostanú nám ešte 2 žlté žiarovky, klikneme na každú z nich, a dáme &amp;quot;'''Add Import...'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
7. Teraz musíme ošetriť, že ak sa NetBeans IDE reštartuje, nemáme žiadny dôvod aby ShapeTopComponent pretrvával, čiže nájdeme metódu '''getPersistenceType()''' v tele triedy, a zmeníme ju nasledovne:&lt;br /&gt;
   public int getPersistenceType() {&lt;br /&gt;
       return TopComponent.PERSISTENCE_NEVER;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
8. Klikneme v &amp;quot;Project&amp;quot; window na náš projekt '''ShapeSample pravým--run'''&lt;br /&gt;
&lt;br /&gt;
9. Nezlaknite sa, spustí sa nová inštancia NetBeans IDE(ak nie je náš projekt už otvorený kliknite na '''window---Shape''') a zobrazí sa Vám niečo takéto:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb siesty.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vytváranie Palety pre našu scénu ==&lt;br /&gt;
&lt;br /&gt;
Teraz aby sme pokračovali niečím užitočným, vytvoríme si palletu, na čo využijeme Pallete API, ktorá bude obsahovať komponenty, ktoré môžeme použiť a pridať na našu scénu pretiahnutím.&lt;br /&gt;
Pre ďalšie pokračovanie budeme potrebovať 3 obrázky našich komponentov, použime tieto(kliknite pravým---uložiť ako, nemente názvy):&lt;br /&gt;
[[Súbor:Image1.png]][[Súbor:Image2.png]][[Súbor:Image3.png]]&lt;br /&gt;
&lt;br /&gt;
'''Keďže náš tutoriál sa zaoberá s Visual Library API, a nie s Palette API(info tu:[http://netbeans.org/kb/trails/platform.html] ), na funkcionalitu Paletty použijeme už hotové knižnice, ktoré stiahnete tu''':&lt;br /&gt;
[http://www.sendspace.com/file/dqtnbi]  (v prípade, že je link nefunkčný, na konci článku je hotový plugin pre tento modul, knižnice vytiahnite z neho)&lt;br /&gt;
&lt;br /&gt;
1. Klikneme na náš projekt pravým--new--Java Package a pomenujeme ho '''org.netbeans.shapesample.palette'''&lt;br /&gt;
2. Teraz podme do zložky, kde sme nás projekt uložili, konkrétne   '''násProjekt/src/org/netbeans/shapesample/pallete'''. A do tejto''' zložky nakopírujeme stiahnuté obrázky a následne aj knižnice''', čiže tieto súbory:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Category&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ CategoryChildren &amp;lt;br /&amp;gt;&lt;br /&gt;
c/ CategoryNode &amp;lt;br /&amp;gt;&lt;br /&gt;
d/ PaletteSupport&amp;lt;br /&amp;gt;&lt;br /&gt;
e/ Shape&amp;lt;br /&amp;gt;&lt;br /&gt;
f/ ShapeChildren&amp;lt;br /&amp;gt;&lt;br /&gt;
g/ ShapeNode&amp;lt;br /&amp;gt;&lt;br /&gt;
h/ image1, image2, image3&amp;lt;br /&amp;gt;&lt;br /&gt;
po zobrazení NetBeans sa nám novo vytvorený package obnoví, a budeme tam mať načítané všetky vložené súbory, pričom niekde sa znovu objavia červené krúžky so žiarovkou, to si nevšímajme chvíľku&lt;br /&gt;
&lt;br /&gt;
3. Klikneme '''pravým na projekt--Properties--Libraries--Add''' a pridáme nasledujúce knižnice:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Actions APIs&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Nodes API&amp;lt;br /&amp;gt;&lt;br /&gt;
c/ Common Palette &amp;lt;br /&amp;gt;&lt;br /&gt;
Teraz by sme mali spozorovať, že všetky červené guličky nám zmiznú, a bude nám to vypadať nasledovne: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb siedmy.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Teraz pridáme našu Palettu do ShapeTopComponentovho náhľadu, a to tak, že do konštruktoru ShapeTopComponent kod&lt;br /&gt;
     associateLookup( Lookups.fixed( new Object[] { PaletteSupport.createPalette() } ) );&lt;br /&gt;
&lt;br /&gt;
5. Znova sa nám objaví žltá žiarovka, klikneme na ňu dáme &amp;quot;Add import...&amp;quot;, následne sa tam objaví znova, čiže znova klikneme a dáme &amp;quot;Add import...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
6. Spustite modul znova(pravým--run), teraz by to už malo vypadať takto, no zatiaľ bez funkcionality, pretože potrebujeme Layer Widget: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb osmy.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pridanie LayerWidget ==&lt;br /&gt;
&lt;br /&gt;
Pod pojmom LayerWidget si predstavte niečo priesvitné, na ktoré budeme môcť ukladať naše komponenty s paletty.&lt;br /&gt;
&lt;br /&gt;
1. Ná úrovni triedy GraphSceneImpl deklarujte náš LayerWidget&lt;br /&gt;
     private LayerWidget mainLayer;&lt;br /&gt;
&lt;br /&gt;
2. Do konštruktoru GraphSceneImpl pridajte LayerWidget ako dieťa našej scény:&lt;br /&gt;
     mainLayer = new LayerWidget (this);&lt;br /&gt;
     addChild (mainLayer);&lt;br /&gt;
&lt;br /&gt;
Teraz keď pridáme na scénu nejaký komponent s našej paletty , pridajú sa ako deti do našel mainLayer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pridanie IconNodeWidget (komponentu) cez funkcionalitu Drag and Drop (chyť a hoď) ==&lt;br /&gt;
&lt;br /&gt;
Doposiaľ, naša scéna existuje, ale nemá žiadnu funkcionalitu. Túto funkcionalitu pridáme pomocou '''&amp;quot;actions&amp;quot;'''. Action, ktorá nám umožnuje Drag &amp;amp; Drop funkcionalitu je '''AcceptAction''' . Táto action môže byť aplikovaná buď na náš komponent alebo na našu scénu. My ju budeme aplikovať na našu scénu. Využijeme '''createAcceptAction''' na to, aby sme definovali čo sa má stať po tom, ako je komponent pretiahnutý nad našu scénu.&lt;br /&gt;
&lt;br /&gt;
1. Najprv pridajte '''createAcceptAction''' spolu s jeho dvomi metódami do GraphSceneImpl konštruktoru:&lt;br /&gt;
   getActions().addAction(ActionFactory.createAcceptAction(new AcceptProvider() {&lt;br /&gt;
    public ConnectorState isAcceptable(Widget widget, Point point, Transferable transferable) {&lt;br /&gt;
        Image dragImage = getImageFromTransferable(transferable);&lt;br /&gt;
        JComponent view = getView();&lt;br /&gt;
        Graphics2D g2 = (Graphics2D) view.getGraphics();&lt;br /&gt;
        Rectangle visRect = view.getVisibleRect();&lt;br /&gt;
        view.paintImmediately(visRect.x, visRect.y, visRect.width, visRect.height);&lt;br /&gt;
        g2.drawImage(dragImage,&lt;br /&gt;
                AffineTransform.getTranslateInstance(point.getLocation().getX(),&lt;br /&gt;
                point.getLocation().getY()),&lt;br /&gt;
                null);&lt;br /&gt;
        return ConnectorState.ACCEPT;&lt;br /&gt;
    }&lt;br /&gt;
    public void accept(Widget widget, Point point, Transferable transferable) {&lt;br /&gt;
        Image image = getImageFromTransferable(transferable);&lt;br /&gt;
        Widget w = GraphSceneImpl.this.addNode(new MyNode(image));&lt;br /&gt;
        w.setPreferredLocation(widget.convertLocalToScene(point));&lt;br /&gt;
    }&lt;br /&gt;
    }));&lt;br /&gt;
&lt;br /&gt;
Objaví sa nám viacero chýb, a to z toho dôvodu, že sme použili aj metody, ktoré zatiaľ nie sú definované, čiže si chvíľku nevšímajme tieto errory.&lt;br /&gt;
&lt;br /&gt;
2. Teraz do triedy '''GraphSceneImpl''' pridáme pomocnú metódu na získavanie obrázkov:&lt;br /&gt;
   private Image getImageFromTransferable(Transferable transferable) {&lt;br /&gt;
    Object o = null;&lt;br /&gt;
    try {&lt;br /&gt;
        o = transferable.getTransferData(DataFlavor.imageFlavor);&lt;br /&gt;
    } catch (IOException ex) {&lt;br /&gt;
        ex.printStackTrace();&lt;br /&gt;
    } catch (UnsupportedFlavorException ex) {&lt;br /&gt;
        ex.printStackTrace();&lt;br /&gt;
    }&lt;br /&gt;
    return o instanceof Image ? (Image) o : ImageUtilities.loadImage(&amp;quot;org/netbeans/shapesample/palette/shape1.png&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
Ako vidíme, je tu ošetrená chyba, čiže môžete do org.netbeans.shapesample.palette doplniť obrázok, ktorý sa má objaviť pri chybe, dajte mu meno shape1.png&lt;br /&gt;
&lt;br /&gt;
3. Z dôvodu toho, že máme len 3 obrázky, mohli by sme vytvoriť akoby len 3 prvky, preto si vytvoríme novú triedu s názvom '''MyNode'''. Klikneme na náš '''package shapesample pravým--new---java class''' a bude vypadať takto:&lt;br /&gt;
    public class MyNode {    &lt;br /&gt;
    private Image image;&lt;br /&gt;
    &lt;br /&gt;
    public MyNode(Image image) {&lt;br /&gt;
        this.image = image;&lt;br /&gt;
    }    &lt;br /&gt;
    public Image getImage() {&lt;br /&gt;
        return image;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
Klikneme na žltú žiarovku v tejto triede a dáme '''&amp;quot;Add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
4. Zmeníme teraz v triede '''GraphSceneImpl''' rodiča, od ktorého dedí, čiže jeden z prvý riadkov bude vypadať takto:&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&amp;lt;MyNode, String&amp;gt;{...telo triedy...}&lt;br /&gt;
čím sme zabezpečili, že naša Node je prijatá  cez Visual Library. Teraz sa nám objaví žltá žiarovka aj pri tomto riadku, lebo teraz musíme dediť iné abstraktné metódy, '''čiže klikneme na ňu --implement all abstract methods'''&lt;br /&gt;
5. Kedže používame generics, tak klikneme '''pravým na náš projekt--properties--sources''' a presvedčíme sa, že tam máme hodnotu  '''Source level = 1.5'''&lt;br /&gt;
&lt;br /&gt;
6. Následne definujeme náš nový Widget (komponent) v triede '''GraphSceneImpl''' a to tak, že tam nájdeme metódu '''protected Widget attachNodeWidget(MyNode node)''' a upravíme ju nasledovne:&lt;br /&gt;
     protected Widget attachNodeWidget(MyNode node) {&lt;br /&gt;
       IconNodeWidget widget = new IconNodeWidget(this);&lt;br /&gt;
       widget.setImage(node.getImage());&lt;br /&gt;
       widget.setLabel(Long.toString(node.hashCode()));&lt;br /&gt;
       widget.getActions().addAction(ActionFactory.createMoveAction());&lt;br /&gt;
       mainLayer.addChild(widget);&lt;br /&gt;
       return widget;&lt;br /&gt;
     }&lt;br /&gt;
Týmto nášmu Widgetu nastavíme obrázok, a priradíme mu veľké náhodné číslo, a ešte možnosť posúvať ho po našej scéne, a následne po zastavení ho pridať znova ako child.&lt;br /&gt;
&lt;br /&gt;
7. Ešte stále nám ostáva pár žltých žiaroviek, takže klikneme na každú z nich, ktorá tam bude a dáme '''&amp;quot;Add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
8. Spustíme náš projekt, a už uvidíme, že je možné presúvať komponenty (Widgety) z našej paletty na našu scénku:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pridanie funkcionality pre našu scénu ==&lt;br /&gt;
1.Teraz pridáme najprv ZOOMaction na našu scénku a to tak, že na koniec '''GraphSceneImpl''' konštruktoru pridáme:&lt;br /&gt;
    getActions().addAction(ActionFactory.createZoomAction());&lt;br /&gt;
&lt;br /&gt;
Keď spustíme teraz náš projekt, tak pri pridržaní ctrl+ kolieško myši sa nám bude zoomovať naša plocha&lt;br /&gt;
&lt;br /&gt;
2. Pridaním riadku za predošlým :&lt;br /&gt;
    getActions().addAction(ActionFactory.createPanAction());&lt;br /&gt;
Pridáme funkcionalitu, že keď user potlačí kolečko myši, tak potom môže hýbať do hociktorého smeru.&lt;br /&gt;
&lt;br /&gt;
== Pridanie funkcinality pre IconNodeWidget ==&lt;br /&gt;
Pre IconNodeWidget sme už pridali funcionalitu pre hýbanie '''MoveAction'''. Tak isto sme schopný pridať aj funkcionalitu pre '''HoverAction, SelectAction, a InplaceEditorAction''', v poradí (nadídenie, vybranie, premenovanie)&lt;br /&gt;
1. Najprv na úrovni triedy definujte &lt;br /&gt;
   private WidgetAction editorAction = ActionFactory.createInplaceEditorAction(new LabelTextFieldEditor());&lt;br /&gt;
Následne sa objaví znova žltá žiarovka, najprv dajte '''&amp;quot;Add import...&amp;quot;''', následne dajte '''&amp;quot;Create class LabelTextFieldEditor...&amp;quot;''' , čo nám pridá do nášho package triedu.&lt;br /&gt;
2.Telo tejto triedy '''LabelTextFieldEditor''' zmeníme nasledovne:&lt;br /&gt;
    class LabelTextFieldEditor implements TextFieldInplaceEditor {&lt;br /&gt;
    public boolean isEnabled(Widget widget) {&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
    public String getText(Widget widget) {&lt;br /&gt;
        return ((LabelWidget) widget).getLabel();&lt;br /&gt;
    }&lt;br /&gt;
    public void setText(Widget widget, String text) {&lt;br /&gt;
        ((LabelWidget) widget).setLabel(text);&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
Znovu sa v tejto triede objaví zopár žltých žiaroviek, poklikajte na '''&amp;quot;add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
3. Následne priradíme editorAction nášmu IconNodeWidget, a to tak, že na koniec metódy '''protected Widget attachNodeWidget(MyNode node)''' triedy '''GraphSceneImpl''' vložíme tesne nad riadok ''' mainLayer.addChild(widget);''' nasledujúci kód:&lt;br /&gt;
    widget.getLabelWidget().getActions().addAction(editorAction);&lt;br /&gt;
&lt;br /&gt;
4. Následne Hower, Clicked action dolníme tak, že po vyššie doplnenom riadku dáme tieto dva:&lt;br /&gt;
    widget.getActions().addAction(createSelectAction());&lt;br /&gt;
    widget.getActions().addAction(createObjectHoverAction());&lt;br /&gt;
&lt;br /&gt;
5. Teraz musíme trochu premyslieť poradie, v ktorom sme akcie pridali, info tu [http://bits.netbeans.org/dev/javadoc/org-netbeans-api-visual/org/netbeans/api/visual/widget/doc-files/documentation.html#OrderOfActions]&lt;br /&gt;
A následne bude naša metóda '''protected Widget attachNodeWidget''' vypadať nasledovne&lt;br /&gt;
    protected Widget attachNodeWidget(MyNode node) {&lt;br /&gt;
        IconNodeWidget widget = new IconNodeWidget(this);&lt;br /&gt;
        widget.setImage(node.getImage());&lt;br /&gt;
        widget.setLabel(Long.toString(node.hashCode()));&lt;br /&gt;
        //double-click, event sa spustí len pri doubleclicku:&lt;br /&gt;
        widget.getLabelWidget().getActions().addAction(editorAction);&lt;br /&gt;
        //single-click, event sa spustí pri single clicku&lt;br /&gt;
        widget.getActions().addAction(createSelectAction());&lt;br /&gt;
        //mouse-dragged&lt;br /&gt;
        widget.getActions().addAction(ActionFactory.createMoveAction());&lt;br /&gt;
        //mouse-over,&lt;br /&gt;
        widget.getActions().addAction(createObjectHoverAction());&lt;br /&gt;
        mainLayer.addChild(widget);&lt;br /&gt;
        return widget;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
6. Po spustení to bude môcť vypadať takto napr.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb desat.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Záver a riešenie problémov ==&lt;br /&gt;
&lt;br /&gt;
Ukázali sme v skutku len veľmi strohú ukážku, čo by sa s NetBeans dalo spraviť, ale keďže je to problematika, ktorou by sa mali zaoberať knihy pre pokročilejších programátorov, tak tu skončíme.&lt;br /&gt;
&lt;br /&gt;
V prípade nejasností je vždy dobré sa obráti na stránku NetBeans tutorials [http://netbeans.org/kb/trails/platform.html]&lt;br /&gt;
&lt;br /&gt;
V prípade problémov, resp. riešenia chýb uvedeného návodu, '''odporúčam použiť VYTVORENY FUNKCNY MODUL'''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Download:''' [http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=14027]&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Inštalácia:''' Spustite '''NetBeans--Tools--Plugins--kliknite Downloaded--Add Plugins...--nájdite stiahnutý--install'''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Spustenie pluginu:''' '''Spustite NetBeans--File--New Project--Samples--NetBeansModule--Visual Library Demo'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
V prípade nejasností, je tam všetko štruktúrované ako v našom návode, čiže by ste tam mali nájsť svoju chybu dosť rýchlo a prehľadne.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zdroj:[http://platform.netbeans.org/tutorials/nbm-visual_library.html]&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3870</id>
		<title>Základy práce s NetBeans IDE a vývoj modulov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3870"/>
		<updated>2010-04-27T19:17:01Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: /* Pridanie funkcinality pre IconNodeWidget */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== NetBeans IDE ==&lt;br /&gt;
NetBeans je krásne vývojové prostredie, ktorého hlavnou výhodou je jeho modulárna architektúra. Ďalším skvelým prvkom je, že sa spolieha na toolkit SWING UI, čo nám dokopy dáva obrovské výhody.&lt;br /&gt;
&lt;br /&gt;
V tomto článku sa posnažím ukázať, ako možno vytvoriť jednoduchý modul pre NetBeans, ktorý bude iba strohá ukážka toho, čo sa s NetBeans dá robit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Požiadavky na postup článkom ==&lt;br /&gt;
1. NetBeans IDE ( použitá verzia 6.8 )&amp;lt;br /&amp;gt;&lt;br /&gt;
2. Java_jdk ( použitá verzia 1.6.0.18 ) &amp;lt;br /&amp;gt;&lt;br /&gt;
3. Základné znalosti jazyka JAVA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie a spustenie projektu ==&lt;br /&gt;
1. Začneme  spustením  Netbeans  a  zvolíme  '''File--New Project--NetBeans Modules--Module'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb prvy.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Klikneme na tlačítko &amp;quot;NEXT&amp;quot;, pomenujeme si náš projekt napr. &amp;quot;ShapeSample&amp;quot;, nastavíme ho ako &amp;quot;'''main project'''&amp;quot; a vyberieme si umiestnenie, kde ho chceme uložiť a ponecháme '''Standalone Module'''&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb druhy.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Klikneme &amp;quot;NEXT&amp;quot;, zadáme do &amp;quot;Code Name Base&amp;quot; '''org.netbeans.shapesample''', a dôležité, klikneme na '''Generate XML Layer'''. Následne klikneme na tlačítko finish, a vytvorí sa nám projekt.&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb treti.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. V okne &amp;quot;Project&amp;quot; , '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--Properties--Libraries'''. Module Dependencies klikneme na tlačítko &amp;quot;ADD&amp;quot; a pridáme:&amp;lt;br /&amp;gt;&lt;br /&gt;
''a/ Visual Library API &amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Utilities API &amp;lt;br /&amp;gt;''&lt;br /&gt;
Klikneme na tlačítko OK, čo nám pridá odkazy.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Znova v &amp;quot;Project&amp;quot; window '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--New--Other--Module Development--Window Component''' , klikneme &amp;quot;NEXT&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6. Ako Windows Position dáme '''editor''' a zaškrtneme '''Open on application start''' a klikneme &amp;quot;NEXT&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7.Do políčka &amp;quot;Class Name Prefix&amp;quot; dopíšeme '''Shape''', klikneme na tlačítko &amp;quot;FINISH&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. Vygeneruje sa nám viacero súbor, jedným z nich je '''ShapeTopComponent''', 2krát naň klikneme a otvoríme ho v design view.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. V design view, pravým klikneme na okno akoby a dáme '''Set Layout--Border Layout'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb stvrty.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie scény ==&lt;br /&gt;
1. Využijeme okno &amp;quot;'''Pallete'''&amp;quot; (ak nie je zobrazené dáme window---pallete) a vložíme na naš layout '''ScrollPane'''. V okne &amp;quot;Inspector&amp;quot; klikneme pravým na jScrollPane1--Change Variable Name a nastavíme hodnotu na &amp;quot;shapePane&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
2.V &amp;quot;Project&amp;quot; windows na zložku''' org--netbeans--shapesample''' klikneme pravým a dáme '''new--Java Class''', pomenujme ju &amp;quot;'''GraphSceneImpl'''&amp;quot;, a po vytvorení dopíšme do triedy '''extends GraphScene'''&lt;br /&gt;
&lt;br /&gt;
3. Žltá žiarovka s červeným výkričníkom sa nám objaví naľavo v editore, klikneme na ňu, a dáme &amp;quot;'''add Import...'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
Následne sa dám objaví ďalšia žltá žiarovka, klikneme na ňu a dáme &amp;quot;'''Implement all abstract methods'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb piaty.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Pre lepšiu orientáciu zmeníme názvy parametrov vygenerovaných NetBeans, a po úprave bude naša trieda vypadať takto:&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
    public GraphSceneImpl() {&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachNodeWidget(Object node) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachEdgeWidget(Object edge) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeSourceAnchor(Object edge, Object oldSourceNode, Object newSourceNode) {&lt;br /&gt;
    &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeTargetAnchor(Object edge, Object oldTargetNode, Object newTargetNode) {&lt;br /&gt;
            &lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
5.Vrátime sa k ShapeTopComponent, kde sa budeme starať o instanciu GraphSceneImpl , prepneme Design View na SourceView, a nájdeme jeho konštruktor. Do tela konštruktora doplnime nasledujúce riadky:&lt;br /&gt;
     GraphSceneImpl scene = new GraphSceneImpl();&lt;br /&gt;
     myView = scene.createView();     &lt;br /&gt;
     shapePane.setViewportView(myView);&lt;br /&gt;
     add(scene.createSatelliteView(), BorderLayout.WEST);  &lt;br /&gt;
&lt;br /&gt;
Týmto sme vytvorili 2 náhľady, jeden veľký, a jeden akoby informačný na ľavej strane, ktorý pomôže používateľovi rýchlejšie sa pohybovať po väčšom rozpätí.&lt;br /&gt;
&lt;br /&gt;
6. Na '''úrovni triedy ShapeTopComponent'''  deklarujeme (doplníme napr. hneď nad konštruktor)&lt;br /&gt;
    private JComponent myView;&lt;br /&gt;
&lt;br /&gt;
Ostanú nám ešte 2 žlté žiarovky, klikneme na každú z nich, a dáme &amp;quot;'''Add Import...'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
7. Teraz musíme ošetriť, že ak sa NetBeans IDE reštartuje, nemáme žiadny dôvod aby ShapeTopComponent pretrvával, čiže nájdeme metódu '''getPersistenceType()''' v tele triedy, a zmeníme ju nasledovne:&lt;br /&gt;
   public int getPersistenceType() {&lt;br /&gt;
       return TopComponent.PERSISTENCE_NEVER;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
8. Klikneme v &amp;quot;Project&amp;quot; window na náš projekt '''ShapeSample pravým--run'''&lt;br /&gt;
&lt;br /&gt;
9. Nezlaknite sa, spustí sa nová inštancia NetBeans IDE(ak nie je náš projekt už otvorený kliknite na '''window---Shape''') a zobrazí sa Vám niečo takéto:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb siesty.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vytváranie Palety pre našu scénu ==&lt;br /&gt;
&lt;br /&gt;
Teraz aby sme pokračovali niečím užitočným, vytvoríme si palletu, na čo využijeme Pallete API, ktorá bude obsahovať komponenty, ktoré môžeme použiť a pridať na našu scénu pretiahnutím.&lt;br /&gt;
Pre ďalšie pokračovanie budeme potrebovať 3 obrázky našich komponentov, použime tieto(kliknite pravým---uložiť ako, nemente názvy):&lt;br /&gt;
[[Súbor:Image1.png]][[Súbor:Image2.png]][[Súbor:Image3.png]]&lt;br /&gt;
&lt;br /&gt;
'''Keďže náš tutoriál sa zaoberá s Visual Library API, a nie s Palette API(info tu:[http://netbeans.org/kb/trails/platform.html] ), na funkcionalitu Paletty použijeme už hotové knižnice, ktoré stiahnete tu''':&lt;br /&gt;
[http://www.sendspace.com/file/dqtnbi]  (v prípade, že je link nefunkčný, na konci článku je hotový plugin pre tento modul, knižnice vytiahnite z neho)&lt;br /&gt;
&lt;br /&gt;
1. Klikneme na náš projekt pravým--new--Java Package a pomenujeme ho '''org.netbeans.shapesample.palette'''&lt;br /&gt;
2. Teraz podme do zložky, kde sme nás projekt uložili, konkrétne   '''násProjekt/src/org/netbeans/shapesample/pallete'''. A do tejto''' zložky nakopírujeme stiahnuté obrázky a následne aj knižnice''', čiže tieto súbory:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Category&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ CategoryChildren &amp;lt;br /&amp;gt;&lt;br /&gt;
c/ CategoryNode &amp;lt;br /&amp;gt;&lt;br /&gt;
d/ PaletteSupport&amp;lt;br /&amp;gt;&lt;br /&gt;
e/ Shape&amp;lt;br /&amp;gt;&lt;br /&gt;
f/ ShapeChildren&amp;lt;br /&amp;gt;&lt;br /&gt;
g/ ShapeNode&amp;lt;br /&amp;gt;&lt;br /&gt;
h/ image1, image2, image3&amp;lt;br /&amp;gt;&lt;br /&gt;
po zobrazení NetBeans sa nám novo vytvorený package obnoví, a budeme tam mať načítané všetky vložené súbory, pričom niekde sa znovu objavia červené krúžky so žiarovkou, to si nevšímajme chvíľku&lt;br /&gt;
&lt;br /&gt;
3. Klikneme '''pravým na projekt--Properties--Libraries--Add''' a pridáme nasledujúce knižnice:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Actions APIs&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Nodes API&amp;lt;br /&amp;gt;&lt;br /&gt;
c/ Common Palette &amp;lt;br /&amp;gt;&lt;br /&gt;
Teraz by sme mali spozorovať, že všetky červené guličky nám zmiznú, a bude nám to vypadať nasledovne: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb siedmy.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Teraz pridáme našu Palettu do ShapeTopComponentovho náhľadu, a to tak, že do konštruktoru ShapeTopComponent kod&lt;br /&gt;
     associateLookup( Lookups.fixed( new Object[] { PaletteSupport.createPalette() } ) );&lt;br /&gt;
&lt;br /&gt;
5. Znova sa nám objaví žltá žiarovka, klikneme na ňu dáme &amp;quot;Add import...&amp;quot;, následne sa tam objaví znova, čiže znova klikneme a dáme &amp;quot;Add import...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
6. Spustite modul znova(pravým--run), teraz by to už malo vypadať takto, no zatiaľ bez funkcionality, pretože potrebujeme Layer Widget: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb osmy.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pridanie LayerWidget ==&lt;br /&gt;
&lt;br /&gt;
Pod pojmom LayerWidget si predstavte niečo priesvitné, na ktoré budeme môcť ukladať naše komponenty s paletty.&lt;br /&gt;
&lt;br /&gt;
1. Ná úrovni triedy GraphSceneImpl deklarujte náš LayerWidget&lt;br /&gt;
     private LayerWidget mainLayer;&lt;br /&gt;
&lt;br /&gt;
2. Do konštruktoru GraphSceneImpl pridajte LayerWidget ako dieťa našej scény:&lt;br /&gt;
     mainLayer = new LayerWidget (this);&lt;br /&gt;
     addChild (mainLayer);&lt;br /&gt;
&lt;br /&gt;
Teraz keď pridáme na scénu nejaký komponent s našej paletty , pridajú sa ako deti do našel mainLayer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pridanie IconNodeWidget (komponentu) cez funkcionalitu Drag and Drop (chyť a hoď) ==&lt;br /&gt;
&lt;br /&gt;
Doposiaľ, naša scéna existuje, ale nemá žiadnu funkcionalitu. Túto funkcionalitu pridáme pomocou '''&amp;quot;actions&amp;quot;'''. Action, ktorá nám umožnuje Drag &amp;amp; Drop funkcionalitu je '''AcceptAction''' . Táto action môže byť aplikovaná buď na náš komponent alebo na našu scénu. My ju budeme aplikovať na našu scénu. Využijeme '''createAcceptAction''' na to, aby sme definovali čo sa má stať po tom, ako je komponent pretiahnutý nad našu scénu.&lt;br /&gt;
&lt;br /&gt;
1. Najprv pridajte '''createAcceptAction''' spolu s jeho dvomi metódami do GraphSceneImpl konštruktoru:&lt;br /&gt;
   getActions().addAction(ActionFactory.createAcceptAction(new AcceptProvider() {&lt;br /&gt;
    public ConnectorState isAcceptable(Widget widget, Point point, Transferable transferable) {&lt;br /&gt;
        Image dragImage = getImageFromTransferable(transferable);&lt;br /&gt;
        JComponent view = getView();&lt;br /&gt;
        Graphics2D g2 = (Graphics2D) view.getGraphics();&lt;br /&gt;
        Rectangle visRect = view.getVisibleRect();&lt;br /&gt;
        view.paintImmediately(visRect.x, visRect.y, visRect.width, visRect.height);&lt;br /&gt;
        g2.drawImage(dragImage,&lt;br /&gt;
                AffineTransform.getTranslateInstance(point.getLocation().getX(),&lt;br /&gt;
                point.getLocation().getY()),&lt;br /&gt;
                null);&lt;br /&gt;
        return ConnectorState.ACCEPT;&lt;br /&gt;
    }&lt;br /&gt;
    public void accept(Widget widget, Point point, Transferable transferable) {&lt;br /&gt;
        Image image = getImageFromTransferable(transferable);&lt;br /&gt;
        Widget w = GraphSceneImpl.this.addNode(new MyNode(image));&lt;br /&gt;
        w.setPreferredLocation(widget.convertLocalToScene(point));&lt;br /&gt;
    }&lt;br /&gt;
    }));&lt;br /&gt;
&lt;br /&gt;
Objaví sa nám viacero chýb, a to z toho dôvodu, že sme použili aj metody, ktoré zatiaľ nie sú definované, čiže si chvíľku nevšímajme tieto errory.&lt;br /&gt;
&lt;br /&gt;
2. Teraz do triedy '''GraphSceneImpl''' pridáme pomocnú metódu na získavanie obrázkov:&lt;br /&gt;
   private Image getImageFromTransferable(Transferable transferable) {&lt;br /&gt;
    Object o = null;&lt;br /&gt;
    try {&lt;br /&gt;
        o = transferable.getTransferData(DataFlavor.imageFlavor);&lt;br /&gt;
    } catch (IOException ex) {&lt;br /&gt;
        ex.printStackTrace();&lt;br /&gt;
    } catch (UnsupportedFlavorException ex) {&lt;br /&gt;
        ex.printStackTrace();&lt;br /&gt;
    }&lt;br /&gt;
    return o instanceof Image ? (Image) o : ImageUtilities.loadImage(&amp;quot;org/netbeans/shapesample/palette/shape1.png&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
Ako vidíme, je tu ošetrená chyba, čiže môžete do org.netbeans.shapesample.palette doplniť obrázok, ktorý sa má objaviť pri chybe, dajte mu meno shape1.png&lt;br /&gt;
&lt;br /&gt;
3. Z dôvodu toho, že máme len 3 obrázky, mohli by sme vytvoriť akoby len 3 prvky, preto si vytvoríme novú triedu s názvom '''MyNode'''. Klikneme na náš '''package shapesample pravým--new---java class''' a bude vypadať takto:&lt;br /&gt;
    public class MyNode {    &lt;br /&gt;
    private Image image;&lt;br /&gt;
    &lt;br /&gt;
    public MyNode(Image image) {&lt;br /&gt;
        this.image = image;&lt;br /&gt;
    }    &lt;br /&gt;
    public Image getImage() {&lt;br /&gt;
        return image;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
Klikneme na žltú žiarovku v tejto triede a dáme '''&amp;quot;Add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
4. Zmeníme teraz v triede '''GraphSceneImpl''' rodiča, od ktorého dedí, čiže jeden z prvý riadkov bude vypadať takto:&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&amp;lt;MyNode, String&amp;gt;{...telo triedy...}&lt;br /&gt;
čím sme zabezpečili, že naša Node je prijatá  cez Visual Library. Teraz sa nám objaví žltá žiarovka aj pri tomto riadku, lebo teraz musíme dediť iné abstraktné metódy, '''čiže klikneme na ňu --implement all abstract methods'''&lt;br /&gt;
5. Kedže používame generics, tak klikneme '''pravým na náš projekt--properties--sources''' a presvedčíme sa, že tam máme hodnotu  '''Source level = 1.5'''&lt;br /&gt;
&lt;br /&gt;
6. Následne definujeme náš nový Widget (komponent) v triede '''GraphSceneImpl''' a to tak, že tam nájdeme metódu '''protected Widget attachNodeWidget(MyNode node)''' a upravíme ju nasledovne:&lt;br /&gt;
     protected Widget attachNodeWidget(MyNode node) {&lt;br /&gt;
       IconNodeWidget widget = new IconNodeWidget(this);&lt;br /&gt;
       widget.setImage(node.getImage());&lt;br /&gt;
       widget.setLabel(Long.toString(node.hashCode()));&lt;br /&gt;
       widget.getActions().addAction(ActionFactory.createMoveAction());&lt;br /&gt;
       mainLayer.addChild(widget);&lt;br /&gt;
       return widget;&lt;br /&gt;
     }&lt;br /&gt;
Týmto nášmu Widgetu nastavíme obrázok, a priradíme mu veľké náhodné číslo, a ešte možnosť posúvať ho po našej scéne, a následne po zastavení ho pridať znova ako child.&lt;br /&gt;
&lt;br /&gt;
7. Ešte stále nám ostáva pár žltých žiaroviek, takže klikneme na každú z nich, ktorá tam bude a dáme '''&amp;quot;Add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
8. Spustíme náš projekt, a už uvidíme, že je možné presúvať komponenty (Widgety) z našej paletty na našu scénku:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pridanie funkcionality pre našu scénu ==&lt;br /&gt;
1.Teraz pridáme najprv ZOOMaction na našu scénku a to tak, že na koniec '''GraphSceneImpl''' konštruktoru pridáme:&lt;br /&gt;
    getActions().addAction(ActionFactory.createZoomAction());&lt;br /&gt;
&lt;br /&gt;
Keď spustíme teraz náš projekt, tak pri pridržaní ctrl+ kolieško myši sa nám bude zoomovať naša plocha&lt;br /&gt;
&lt;br /&gt;
2. Pridaním riadku za predošlým :&lt;br /&gt;
    getActions().addAction(ActionFactory.createPanAction());&lt;br /&gt;
Pridáme funkcionalitu, že keď user potlačí kolečko myši, tak potom môže hýbať do hociktorého smeru.&lt;br /&gt;
&lt;br /&gt;
== Pridanie funkcinality pre IconNodeWidget ==&lt;br /&gt;
Pre IconNodeWidget sme už pridali funcionalitu pre hýbanie '''MoveAction'''. Tak isto sme schopný pridať aj funkcionalitu pre '''HoverAction, SelectAction, a InplaceEditorAction''', v poradí (nadídenie, vybranie, premenovanie)&lt;br /&gt;
1. Najprv na úrovni triedy definujte &lt;br /&gt;
   private WidgetAction editorAction = ActionFactory.createInplaceEditorAction(new LabelTextFieldEditor());&lt;br /&gt;
Následne sa objaví znova žltá žiarovka, najprv dajte '''&amp;quot;Add import...&amp;quot;''', následne dajte '''&amp;quot;Create class LabelTextFieldEditor...&amp;quot;''' , čo nám pridá do nášho package triedu.&lt;br /&gt;
2.Telo tejto triedy '''LabelTextFieldEditor''' zmeníme nasledovne:&lt;br /&gt;
    class LabelTextFieldEditor implements TextFieldInplaceEditor {&lt;br /&gt;
    public boolean isEnabled(Widget widget) {&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
    public String getText(Widget widget) {&lt;br /&gt;
        return ((LabelWidget) widget).getLabel();&lt;br /&gt;
    }&lt;br /&gt;
    public void setText(Widget widget, String text) {&lt;br /&gt;
        ((LabelWidget) widget).setLabel(text);&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
Znovu sa v tejto triede objaví zopár žltých žiaroviek, poklikajte na '''&amp;quot;add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
3. Následne priradíme editorAction nášmu IconNodeWidget, a to tak, že na koniec metódy '''protected Widget attachNodeWidget(MyNode node)''' triedy '''GraphSceneImpl''' vložíme tesne nad riadok ''' mainLayer.addChild(widget);''' nasledujúci kód:&lt;br /&gt;
    widget.getLabelWidget().getActions().addAction(editorAction);&lt;br /&gt;
&lt;br /&gt;
4. Následne Hower, Clicked action dolníme tak, že po vyššie doplnenom riadku dáme tieto dva:&lt;br /&gt;
    widget.getActions().addAction(createSelectAction());&lt;br /&gt;
    widget.getActions().addAction(createObjectHoverAction());&lt;br /&gt;
&lt;br /&gt;
5. Teraz musíme trochu premyslieť poradie, v ktorom sme akcie pridali, info tu [http://bits.netbeans.org/dev/javadoc/org-netbeans-api-visual/org/netbeans/api/visual/widget/doc-files/documentation.html#OrderOfActions]&lt;br /&gt;
A následne bude naša metóda '''protected Widget attachNodeWidget''' vypadať nasledovne&lt;br /&gt;
    protected Widget attachNodeWidget(MyNode node) {&lt;br /&gt;
        IconNodeWidget widget = new IconNodeWidget(this);&lt;br /&gt;
        widget.setImage(node.getImage());&lt;br /&gt;
        widget.setLabel(Long.toString(node.hashCode()));&lt;br /&gt;
        //double-click, event sa spustí len pri doubleclicku:&lt;br /&gt;
        widget.getLabelWidget().getActions().addAction(editorAction);&lt;br /&gt;
        //single-click, event sa spustí pri single clicku&lt;br /&gt;
        widget.getActions().addAction(createSelectAction());&lt;br /&gt;
        //mouse-dragged&lt;br /&gt;
        widget.getActions().addAction(ActionFactory.createMoveAction());&lt;br /&gt;
        //mouse-over,&lt;br /&gt;
        widget.getActions().addAction(createObjectHoverAction());&lt;br /&gt;
        mainLayer.addChild(widget);&lt;br /&gt;
        return widget;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
6. Po spustení to bude môcť vypadať takto napr.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb desat.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Záver a riešenie problémov ==&lt;br /&gt;
&lt;br /&gt;
Ukázali sme v skutku len veľmi strohú ukážku, čo by sa s NetBeans dalo spraviť, ale keďže je to problematika, ktorou by sa mali zaoberať knihy pre pokročilejších programátorov, tak tu skončíme.&lt;br /&gt;
&lt;br /&gt;
V prípade nejasností je vždy dobré sa obráti na stránku NetBeans tutorials [http://netbeans.org/kb/trails/platform.html]&lt;br /&gt;
&lt;br /&gt;
V prípade problémov, resp. riešenia chýb uvedeného návodu, '''odporúčam použiť VYTVORENY FUNKCNY MODUL'''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Download:''' [http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=14027]&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Inštalácia:''' Spustite '''NetBeans--Tools--Plugins--kliknite Downloaded--Add Plugins...--nájdite stiahnutý--install'''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Spustenie pluginu:''' '''Spustite NetBeans--File--New Project--Samples--NetBeansModule--Visual Library Demo'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
V prípade nejasností, je tam všetko štruktúrované ako v našom návode, čiže by ste tam mali nájsť svoju chybu dosť rýchlo a prehľadne.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zdroj:[http://platform.netbeans.org/tutorials/nbm-visual_library.html]&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3869</id>
		<title>Základy práce s NetBeans IDE a vývoj modulov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3869"/>
		<updated>2010-04-27T19:16:02Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: /* Vytváranie Palety pre našu scénu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== NetBeans IDE ==&lt;br /&gt;
NetBeans je krásne vývojové prostredie, ktorého hlavnou výhodou je jeho modulárna architektúra. Ďalším skvelým prvkom je, že sa spolieha na toolkit SWING UI, čo nám dokopy dáva obrovské výhody.&lt;br /&gt;
&lt;br /&gt;
V tomto článku sa posnažím ukázať, ako možno vytvoriť jednoduchý modul pre NetBeans, ktorý bude iba strohá ukážka toho, čo sa s NetBeans dá robit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Požiadavky na postup článkom ==&lt;br /&gt;
1. NetBeans IDE ( použitá verzia 6.8 )&amp;lt;br /&amp;gt;&lt;br /&gt;
2. Java_jdk ( použitá verzia 1.6.0.18 ) &amp;lt;br /&amp;gt;&lt;br /&gt;
3. Základné znalosti jazyka JAVA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie a spustenie projektu ==&lt;br /&gt;
1. Začneme  spustením  Netbeans  a  zvolíme  '''File--New Project--NetBeans Modules--Module'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb prvy.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Klikneme na tlačítko &amp;quot;NEXT&amp;quot;, pomenujeme si náš projekt napr. &amp;quot;ShapeSample&amp;quot;, nastavíme ho ako &amp;quot;'''main project'''&amp;quot; a vyberieme si umiestnenie, kde ho chceme uložiť a ponecháme '''Standalone Module'''&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb druhy.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Klikneme &amp;quot;NEXT&amp;quot;, zadáme do &amp;quot;Code Name Base&amp;quot; '''org.netbeans.shapesample''', a dôležité, klikneme na '''Generate XML Layer'''. Následne klikneme na tlačítko finish, a vytvorí sa nám projekt.&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb treti.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. V okne &amp;quot;Project&amp;quot; , '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--Properties--Libraries'''. Module Dependencies klikneme na tlačítko &amp;quot;ADD&amp;quot; a pridáme:&amp;lt;br /&amp;gt;&lt;br /&gt;
''a/ Visual Library API &amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Utilities API &amp;lt;br /&amp;gt;''&lt;br /&gt;
Klikneme na tlačítko OK, čo nám pridá odkazy.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Znova v &amp;quot;Project&amp;quot; window '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--New--Other--Module Development--Window Component''' , klikneme &amp;quot;NEXT&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6. Ako Windows Position dáme '''editor''' a zaškrtneme '''Open on application start''' a klikneme &amp;quot;NEXT&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7.Do políčka &amp;quot;Class Name Prefix&amp;quot; dopíšeme '''Shape''', klikneme na tlačítko &amp;quot;FINISH&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. Vygeneruje sa nám viacero súbor, jedným z nich je '''ShapeTopComponent''', 2krát naň klikneme a otvoríme ho v design view.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. V design view, pravým klikneme na okno akoby a dáme '''Set Layout--Border Layout'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb stvrty.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie scény ==&lt;br /&gt;
1. Využijeme okno &amp;quot;'''Pallete'''&amp;quot; (ak nie je zobrazené dáme window---pallete) a vložíme na naš layout '''ScrollPane'''. V okne &amp;quot;Inspector&amp;quot; klikneme pravým na jScrollPane1--Change Variable Name a nastavíme hodnotu na &amp;quot;shapePane&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
2.V &amp;quot;Project&amp;quot; windows na zložku''' org--netbeans--shapesample''' klikneme pravým a dáme '''new--Java Class''', pomenujme ju &amp;quot;'''GraphSceneImpl'''&amp;quot;, a po vytvorení dopíšme do triedy '''extends GraphScene'''&lt;br /&gt;
&lt;br /&gt;
3. Žltá žiarovka s červeným výkričníkom sa nám objaví naľavo v editore, klikneme na ňu, a dáme &amp;quot;'''add Import...'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
Následne sa dám objaví ďalšia žltá žiarovka, klikneme na ňu a dáme &amp;quot;'''Implement all abstract methods'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb piaty.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Pre lepšiu orientáciu zmeníme názvy parametrov vygenerovaných NetBeans, a po úprave bude naša trieda vypadať takto:&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
    public GraphSceneImpl() {&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachNodeWidget(Object node) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachEdgeWidget(Object edge) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeSourceAnchor(Object edge, Object oldSourceNode, Object newSourceNode) {&lt;br /&gt;
    &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeTargetAnchor(Object edge, Object oldTargetNode, Object newTargetNode) {&lt;br /&gt;
            &lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
5.Vrátime sa k ShapeTopComponent, kde sa budeme starať o instanciu GraphSceneImpl , prepneme Design View na SourceView, a nájdeme jeho konštruktor. Do tela konštruktora doplnime nasledujúce riadky:&lt;br /&gt;
     GraphSceneImpl scene = new GraphSceneImpl();&lt;br /&gt;
     myView = scene.createView();     &lt;br /&gt;
     shapePane.setViewportView(myView);&lt;br /&gt;
     add(scene.createSatelliteView(), BorderLayout.WEST);  &lt;br /&gt;
&lt;br /&gt;
Týmto sme vytvorili 2 náhľady, jeden veľký, a jeden akoby informačný na ľavej strane, ktorý pomôže používateľovi rýchlejšie sa pohybovať po väčšom rozpätí.&lt;br /&gt;
&lt;br /&gt;
6. Na '''úrovni triedy ShapeTopComponent'''  deklarujeme (doplníme napr. hneď nad konštruktor)&lt;br /&gt;
    private JComponent myView;&lt;br /&gt;
&lt;br /&gt;
Ostanú nám ešte 2 žlté žiarovky, klikneme na každú z nich, a dáme &amp;quot;'''Add Import...'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
7. Teraz musíme ošetriť, že ak sa NetBeans IDE reštartuje, nemáme žiadny dôvod aby ShapeTopComponent pretrvával, čiže nájdeme metódu '''getPersistenceType()''' v tele triedy, a zmeníme ju nasledovne:&lt;br /&gt;
   public int getPersistenceType() {&lt;br /&gt;
       return TopComponent.PERSISTENCE_NEVER;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
8. Klikneme v &amp;quot;Project&amp;quot; window na náš projekt '''ShapeSample pravým--run'''&lt;br /&gt;
&lt;br /&gt;
9. Nezlaknite sa, spustí sa nová inštancia NetBeans IDE(ak nie je náš projekt už otvorený kliknite na '''window---Shape''') a zobrazí sa Vám niečo takéto:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb siesty.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vytváranie Palety pre našu scénu ==&lt;br /&gt;
&lt;br /&gt;
Teraz aby sme pokračovali niečím užitočným, vytvoríme si palletu, na čo využijeme Pallete API, ktorá bude obsahovať komponenty, ktoré môžeme použiť a pridať na našu scénu pretiahnutím.&lt;br /&gt;
Pre ďalšie pokračovanie budeme potrebovať 3 obrázky našich komponentov, použime tieto(kliknite pravým---uložiť ako, nemente názvy):&lt;br /&gt;
[[Súbor:Image1.png]][[Súbor:Image2.png]][[Súbor:Image3.png]]&lt;br /&gt;
&lt;br /&gt;
'''Keďže náš tutoriál sa zaoberá s Visual Library API, a nie s Palette API(info tu:[http://netbeans.org/kb/trails/platform.html] ), na funkcionalitu Paletty použijeme už hotové knižnice, ktoré stiahnete tu''':&lt;br /&gt;
[http://www.sendspace.com/file/dqtnbi]  (v prípade, že je link nefunkčný, na konci článku je hotový plugin pre tento modul, knižnice vytiahnite z neho)&lt;br /&gt;
&lt;br /&gt;
1. Klikneme na náš projekt pravým--new--Java Package a pomenujeme ho '''org.netbeans.shapesample.palette'''&lt;br /&gt;
2. Teraz podme do zložky, kde sme nás projekt uložili, konkrétne   '''násProjekt/src/org/netbeans/shapesample/pallete'''. A do tejto''' zložky nakopírujeme stiahnuté obrázky a následne aj knižnice''', čiže tieto súbory:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Category&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ CategoryChildren &amp;lt;br /&amp;gt;&lt;br /&gt;
c/ CategoryNode &amp;lt;br /&amp;gt;&lt;br /&gt;
d/ PaletteSupport&amp;lt;br /&amp;gt;&lt;br /&gt;
e/ Shape&amp;lt;br /&amp;gt;&lt;br /&gt;
f/ ShapeChildren&amp;lt;br /&amp;gt;&lt;br /&gt;
g/ ShapeNode&amp;lt;br /&amp;gt;&lt;br /&gt;
h/ image1, image2, image3&amp;lt;br /&amp;gt;&lt;br /&gt;
po zobrazení NetBeans sa nám novo vytvorený package obnoví, a budeme tam mať načítané všetky vložené súbory, pričom niekde sa znovu objavia červené krúžky so žiarovkou, to si nevšímajme chvíľku&lt;br /&gt;
&lt;br /&gt;
3. Klikneme '''pravým na projekt--Properties--Libraries--Add''' a pridáme nasledujúce knižnice:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Actions APIs&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Nodes API&amp;lt;br /&amp;gt;&lt;br /&gt;
c/ Common Palette &amp;lt;br /&amp;gt;&lt;br /&gt;
Teraz by sme mali spozorovať, že všetky červené guličky nám zmiznú, a bude nám to vypadať nasledovne: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb siedmy.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Teraz pridáme našu Palettu do ShapeTopComponentovho náhľadu, a to tak, že do konštruktoru ShapeTopComponent kod&lt;br /&gt;
     associateLookup( Lookups.fixed( new Object[] { PaletteSupport.createPalette() } ) );&lt;br /&gt;
&lt;br /&gt;
5. Znova sa nám objaví žltá žiarovka, klikneme na ňu dáme &amp;quot;Add import...&amp;quot;, následne sa tam objaví znova, čiže znova klikneme a dáme &amp;quot;Add import...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
6. Spustite modul znova(pravým--run), teraz by to už malo vypadať takto, no zatiaľ bez funkcionality, pretože potrebujeme Layer Widget: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb osmy.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pridanie LayerWidget ==&lt;br /&gt;
&lt;br /&gt;
Pod pojmom LayerWidget si predstavte niečo priesvitné, na ktoré budeme môcť ukladať naše komponenty s paletty.&lt;br /&gt;
&lt;br /&gt;
1. Ná úrovni triedy GraphSceneImpl deklarujte náš LayerWidget&lt;br /&gt;
     private LayerWidget mainLayer;&lt;br /&gt;
&lt;br /&gt;
2. Do konštruktoru GraphSceneImpl pridajte LayerWidget ako dieťa našej scény:&lt;br /&gt;
     mainLayer = new LayerWidget (this);&lt;br /&gt;
     addChild (mainLayer);&lt;br /&gt;
&lt;br /&gt;
Teraz keď pridáme na scénu nejaký komponent s našej paletty , pridajú sa ako deti do našel mainLayer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pridanie IconNodeWidget (komponentu) cez funkcionalitu Drag and Drop (chyť a hoď) ==&lt;br /&gt;
&lt;br /&gt;
Doposiaľ, naša scéna existuje, ale nemá žiadnu funkcionalitu. Túto funkcionalitu pridáme pomocou '''&amp;quot;actions&amp;quot;'''. Action, ktorá nám umožnuje Drag &amp;amp; Drop funkcionalitu je '''AcceptAction''' . Táto action môže byť aplikovaná buď na náš komponent alebo na našu scénu. My ju budeme aplikovať na našu scénu. Využijeme '''createAcceptAction''' na to, aby sme definovali čo sa má stať po tom, ako je komponent pretiahnutý nad našu scénu.&lt;br /&gt;
&lt;br /&gt;
1. Najprv pridajte '''createAcceptAction''' spolu s jeho dvomi metódami do GraphSceneImpl konštruktoru:&lt;br /&gt;
   getActions().addAction(ActionFactory.createAcceptAction(new AcceptProvider() {&lt;br /&gt;
    public ConnectorState isAcceptable(Widget widget, Point point, Transferable transferable) {&lt;br /&gt;
        Image dragImage = getImageFromTransferable(transferable);&lt;br /&gt;
        JComponent view = getView();&lt;br /&gt;
        Graphics2D g2 = (Graphics2D) view.getGraphics();&lt;br /&gt;
        Rectangle visRect = view.getVisibleRect();&lt;br /&gt;
        view.paintImmediately(visRect.x, visRect.y, visRect.width, visRect.height);&lt;br /&gt;
        g2.drawImage(dragImage,&lt;br /&gt;
                AffineTransform.getTranslateInstance(point.getLocation().getX(),&lt;br /&gt;
                point.getLocation().getY()),&lt;br /&gt;
                null);&lt;br /&gt;
        return ConnectorState.ACCEPT;&lt;br /&gt;
    }&lt;br /&gt;
    public void accept(Widget widget, Point point, Transferable transferable) {&lt;br /&gt;
        Image image = getImageFromTransferable(transferable);&lt;br /&gt;
        Widget w = GraphSceneImpl.this.addNode(new MyNode(image));&lt;br /&gt;
        w.setPreferredLocation(widget.convertLocalToScene(point));&lt;br /&gt;
    }&lt;br /&gt;
    }));&lt;br /&gt;
&lt;br /&gt;
Objaví sa nám viacero chýb, a to z toho dôvodu, že sme použili aj metody, ktoré zatiaľ nie sú definované, čiže si chvíľku nevšímajme tieto errory.&lt;br /&gt;
&lt;br /&gt;
2. Teraz do triedy '''GraphSceneImpl''' pridáme pomocnú metódu na získavanie obrázkov:&lt;br /&gt;
   private Image getImageFromTransferable(Transferable transferable) {&lt;br /&gt;
    Object o = null;&lt;br /&gt;
    try {&lt;br /&gt;
        o = transferable.getTransferData(DataFlavor.imageFlavor);&lt;br /&gt;
    } catch (IOException ex) {&lt;br /&gt;
        ex.printStackTrace();&lt;br /&gt;
    } catch (UnsupportedFlavorException ex) {&lt;br /&gt;
        ex.printStackTrace();&lt;br /&gt;
    }&lt;br /&gt;
    return o instanceof Image ? (Image) o : ImageUtilities.loadImage(&amp;quot;org/netbeans/shapesample/palette/shape1.png&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
Ako vidíme, je tu ošetrená chyba, čiže môžete do org.netbeans.shapesample.palette doplniť obrázok, ktorý sa má objaviť pri chybe, dajte mu meno shape1.png&lt;br /&gt;
&lt;br /&gt;
3. Z dôvodu toho, že máme len 3 obrázky, mohli by sme vytvoriť akoby len 3 prvky, preto si vytvoríme novú triedu s názvom '''MyNode'''. Klikneme na náš '''package shapesample pravým--new---java class''' a bude vypadať takto:&lt;br /&gt;
    public class MyNode {    &lt;br /&gt;
    private Image image;&lt;br /&gt;
    &lt;br /&gt;
    public MyNode(Image image) {&lt;br /&gt;
        this.image = image;&lt;br /&gt;
    }    &lt;br /&gt;
    public Image getImage() {&lt;br /&gt;
        return image;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
Klikneme na žltú žiarovku v tejto triede a dáme '''&amp;quot;Add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
4. Zmeníme teraz v triede '''GraphSceneImpl''' rodiča, od ktorého dedí, čiže jeden z prvý riadkov bude vypadať takto:&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&amp;lt;MyNode, String&amp;gt;{...telo triedy...}&lt;br /&gt;
čím sme zabezpečili, že naša Node je prijatá  cez Visual Library. Teraz sa nám objaví žltá žiarovka aj pri tomto riadku, lebo teraz musíme dediť iné abstraktné metódy, '''čiže klikneme na ňu --implement all abstract methods'''&lt;br /&gt;
5. Kedže používame generics, tak klikneme '''pravým na náš projekt--properties--sources''' a presvedčíme sa, že tam máme hodnotu  '''Source level = 1.5'''&lt;br /&gt;
&lt;br /&gt;
6. Následne definujeme náš nový Widget (komponent) v triede '''GraphSceneImpl''' a to tak, že tam nájdeme metódu '''protected Widget attachNodeWidget(MyNode node)''' a upravíme ju nasledovne:&lt;br /&gt;
     protected Widget attachNodeWidget(MyNode node) {&lt;br /&gt;
       IconNodeWidget widget = new IconNodeWidget(this);&lt;br /&gt;
       widget.setImage(node.getImage());&lt;br /&gt;
       widget.setLabel(Long.toString(node.hashCode()));&lt;br /&gt;
       widget.getActions().addAction(ActionFactory.createMoveAction());&lt;br /&gt;
       mainLayer.addChild(widget);&lt;br /&gt;
       return widget;&lt;br /&gt;
     }&lt;br /&gt;
Týmto nášmu Widgetu nastavíme obrázok, a priradíme mu veľké náhodné číslo, a ešte možnosť posúvať ho po našej scéne, a následne po zastavení ho pridať znova ako child.&lt;br /&gt;
&lt;br /&gt;
7. Ešte stále nám ostáva pár žltých žiaroviek, takže klikneme na každú z nich, ktorá tam bude a dáme '''&amp;quot;Add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
8. Spustíme náš projekt, a už uvidíme, že je možné presúvať komponenty (Widgety) z našej paletty na našu scénku:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pridanie funkcionality pre našu scénu ==&lt;br /&gt;
1.Teraz pridáme najprv ZOOMaction na našu scénku a to tak, že na koniec '''GraphSceneImpl''' konštruktoru pridáme:&lt;br /&gt;
    getActions().addAction(ActionFactory.createZoomAction());&lt;br /&gt;
&lt;br /&gt;
Keď spustíme teraz náš projekt, tak pri pridržaní ctrl+ kolieško myši sa nám bude zoomovať naša plocha&lt;br /&gt;
&lt;br /&gt;
2. Pridaním riadku za predošlým :&lt;br /&gt;
    getActions().addAction(ActionFactory.createPanAction());&lt;br /&gt;
Pridáme funkcionalitu, že keď user potlačí kolečko myši, tak potom môže hýbať do hociktorého smeru.&lt;br /&gt;
&lt;br /&gt;
== Pridanie funkcinality pre IconNodeWidget ==&lt;br /&gt;
Pre IconNodeWidget sme už pridali funcionalitu pre hýbanie '''MoveAction'''. Tak isto sme schopný pridať aj funkcionalitu pre '''HoverAction, SelectAction, a InplaceEditorAction''', v poradí (nadídenie, vybranie, premenovanie)&lt;br /&gt;
1. Najprv na úrovni triedy definujte &lt;br /&gt;
   private WidgetAction editorAction = ActionFactory.createInplaceEditorAction(new LabelTextFieldEditor());&lt;br /&gt;
Následne sa objaví znova žltá žiarovka, najprv dajte '''&amp;quot;Add import...&amp;quot;''', následne dajte '''&amp;quot;Create class LabelTextFieldEditor...&amp;quot;''' , čo nám pridá do nášho package triedu.&lt;br /&gt;
2.Telo tejto triedy '''LabelTextFieldEditor''' zmeníme nasledovne:&lt;br /&gt;
    class LabelTextFieldEditor implements TextFieldInplaceEditor {&lt;br /&gt;
    public boolean isEnabled(Widget widget) {&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
    public String getText(Widget widget) {&lt;br /&gt;
        return ((LabelWidget) widget).getLabel();&lt;br /&gt;
    }&lt;br /&gt;
    public void setText(Widget widget, String text) {&lt;br /&gt;
        ((LabelWidget) widget).setLabel(text);&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
Znovu sa v tejto triede objaví zopár žltých žiaroviek, poklikajte na '''&amp;quot;add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
3. Následne priradíme editorAction nášmu IconNodeWidget, a to tak, že na koniec metódy '''protected Widget attachNodeWidget(MyNode node)''' triedy '''GraphSceneImpl''' vložíme tesne nad riadok ''' mainLayer.addChild(widget);''' nasledujúci kód:&lt;br /&gt;
    widget.getLabelWidget().getActions().addAction(editorAction);&lt;br /&gt;
&lt;br /&gt;
4. Následne Hower, Clicked action dolníme tak, že po vyššie doplnenom riadku dáme tieto dva:&lt;br /&gt;
    widget.getActions().addAction(createSelectAction());&lt;br /&gt;
    widget.getActions().addAction(createObjectHoverAction());&lt;br /&gt;
&lt;br /&gt;
5. Teraz musíme trochu premyslieť poradie, v ktorom sme akcie pridali, info tu [http://bits.netbeans.org/dev/javadoc/org-netbeans-api-visual/org/netbeans/api/visual/widget/doc-files/documentation.html#OrderOfActions]&lt;br /&gt;
A následne bude naša metóda '''protected Widget attachNodeWidget''' vypadať nasledovne&lt;br /&gt;
    protected Widget attachNodeWidget(MyNode node) {&lt;br /&gt;
        IconNodeWidget widget = new IconNodeWidget(this);&lt;br /&gt;
        widget.setImage(node.getImage());&lt;br /&gt;
        widget.setLabel(Long.toString(node.hashCode()));&lt;br /&gt;
        //double-click, event sa spustí len pri doubleclicku:&lt;br /&gt;
        widget.getLabelWidget().getActions().addAction(editorAction);&lt;br /&gt;
        //single-click, event sa spustí pri single clicku&lt;br /&gt;
        widget.getActions().addAction(createSelectAction());&lt;br /&gt;
        //mouse-dragged&lt;br /&gt;
        widget.getActions().addAction(ActionFactory.createMoveAction());&lt;br /&gt;
        //mouse-over,&lt;br /&gt;
        widget.getActions().addAction(createObjectHoverAction());&lt;br /&gt;
        mainLayer.addChild(widget);&lt;br /&gt;
        return widget;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
6. Po spustení to bude môcť vypadať takto napr.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb desat.png]]&lt;br /&gt;
&lt;br /&gt;
== Záver a riešenie problémov ==&lt;br /&gt;
&lt;br /&gt;
Ukázali sme v skutku len veľmi strohú ukážku, čo by sa s NetBeans dalo spraviť, ale keďže je to problematika, ktorou by sa mali zaoberať knihy pre pokročilejších programátorov, tak tu skončíme.&lt;br /&gt;
&lt;br /&gt;
V prípade nejasností je vždy dobré sa obráti na stránku NetBeans tutorials [http://netbeans.org/kb/trails/platform.html]&lt;br /&gt;
&lt;br /&gt;
V prípade problémov, resp. riešenia chýb uvedeného návodu, '''odporúčam použiť VYTVORENY FUNKCNY MODUL'''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Download:''' [http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=14027]&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Inštalácia:''' Spustite '''NetBeans--Tools--Plugins--kliknite Downloaded--Add Plugins...--nájdite stiahnutý--install'''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Spustenie pluginu:''' '''Spustite NetBeans--File--New Project--Samples--NetBeansModule--Visual Library Demo'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
V prípade nejasností, je tam všetko štruktúrované ako v našom návode, čiže by ste tam mali nájsť svoju chybu dosť rýchlo a prehľadne.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zdroj:[http://platform.netbeans.org/tutorials/nbm-visual_library.html]&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3868</id>
		<title>Základy práce s NetBeans IDE a vývoj modulov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3868"/>
		<updated>2010-04-27T19:15:00Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: /* Vytvorenie scény */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== NetBeans IDE ==&lt;br /&gt;
NetBeans je krásne vývojové prostredie, ktorého hlavnou výhodou je jeho modulárna architektúra. Ďalším skvelým prvkom je, že sa spolieha na toolkit SWING UI, čo nám dokopy dáva obrovské výhody.&lt;br /&gt;
&lt;br /&gt;
V tomto článku sa posnažím ukázať, ako možno vytvoriť jednoduchý modul pre NetBeans, ktorý bude iba strohá ukážka toho, čo sa s NetBeans dá robit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Požiadavky na postup článkom ==&lt;br /&gt;
1. NetBeans IDE ( použitá verzia 6.8 )&amp;lt;br /&amp;gt;&lt;br /&gt;
2. Java_jdk ( použitá verzia 1.6.0.18 ) &amp;lt;br /&amp;gt;&lt;br /&gt;
3. Základné znalosti jazyka JAVA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie a spustenie projektu ==&lt;br /&gt;
1. Začneme  spustením  Netbeans  a  zvolíme  '''File--New Project--NetBeans Modules--Module'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb prvy.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Klikneme na tlačítko &amp;quot;NEXT&amp;quot;, pomenujeme si náš projekt napr. &amp;quot;ShapeSample&amp;quot;, nastavíme ho ako &amp;quot;'''main project'''&amp;quot; a vyberieme si umiestnenie, kde ho chceme uložiť a ponecháme '''Standalone Module'''&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb druhy.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Klikneme &amp;quot;NEXT&amp;quot;, zadáme do &amp;quot;Code Name Base&amp;quot; '''org.netbeans.shapesample''', a dôležité, klikneme na '''Generate XML Layer'''. Následne klikneme na tlačítko finish, a vytvorí sa nám projekt.&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb treti.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. V okne &amp;quot;Project&amp;quot; , '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--Properties--Libraries'''. Module Dependencies klikneme na tlačítko &amp;quot;ADD&amp;quot; a pridáme:&amp;lt;br /&amp;gt;&lt;br /&gt;
''a/ Visual Library API &amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Utilities API &amp;lt;br /&amp;gt;''&lt;br /&gt;
Klikneme na tlačítko OK, čo nám pridá odkazy.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Znova v &amp;quot;Project&amp;quot; window '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--New--Other--Module Development--Window Component''' , klikneme &amp;quot;NEXT&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6. Ako Windows Position dáme '''editor''' a zaškrtneme '''Open on application start''' a klikneme &amp;quot;NEXT&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7.Do políčka &amp;quot;Class Name Prefix&amp;quot; dopíšeme '''Shape''', klikneme na tlačítko &amp;quot;FINISH&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. Vygeneruje sa nám viacero súbor, jedným z nich je '''ShapeTopComponent''', 2krát naň klikneme a otvoríme ho v design view.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. V design view, pravým klikneme na okno akoby a dáme '''Set Layout--Border Layout'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb stvrty.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie scény ==&lt;br /&gt;
1. Využijeme okno &amp;quot;'''Pallete'''&amp;quot; (ak nie je zobrazené dáme window---pallete) a vložíme na naš layout '''ScrollPane'''. V okne &amp;quot;Inspector&amp;quot; klikneme pravým na jScrollPane1--Change Variable Name a nastavíme hodnotu na &amp;quot;shapePane&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
2.V &amp;quot;Project&amp;quot; windows na zložku''' org--netbeans--shapesample''' klikneme pravým a dáme '''new--Java Class''', pomenujme ju &amp;quot;'''GraphSceneImpl'''&amp;quot;, a po vytvorení dopíšme do triedy '''extends GraphScene'''&lt;br /&gt;
&lt;br /&gt;
3. Žltá žiarovka s červeným výkričníkom sa nám objaví naľavo v editore, klikneme na ňu, a dáme &amp;quot;'''add Import...'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
Následne sa dám objaví ďalšia žltá žiarovka, klikneme na ňu a dáme &amp;quot;'''Implement all abstract methods'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb piaty.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Pre lepšiu orientáciu zmeníme názvy parametrov vygenerovaných NetBeans, a po úprave bude naša trieda vypadať takto:&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
    public GraphSceneImpl() {&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachNodeWidget(Object node) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachEdgeWidget(Object edge) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeSourceAnchor(Object edge, Object oldSourceNode, Object newSourceNode) {&lt;br /&gt;
    &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeTargetAnchor(Object edge, Object oldTargetNode, Object newTargetNode) {&lt;br /&gt;
            &lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
5.Vrátime sa k ShapeTopComponent, kde sa budeme starať o instanciu GraphSceneImpl , prepneme Design View na SourceView, a nájdeme jeho konštruktor. Do tela konštruktora doplnime nasledujúce riadky:&lt;br /&gt;
     GraphSceneImpl scene = new GraphSceneImpl();&lt;br /&gt;
     myView = scene.createView();     &lt;br /&gt;
     shapePane.setViewportView(myView);&lt;br /&gt;
     add(scene.createSatelliteView(), BorderLayout.WEST);  &lt;br /&gt;
&lt;br /&gt;
Týmto sme vytvorili 2 náhľady, jeden veľký, a jeden akoby informačný na ľavej strane, ktorý pomôže používateľovi rýchlejšie sa pohybovať po väčšom rozpätí.&lt;br /&gt;
&lt;br /&gt;
6. Na '''úrovni triedy ShapeTopComponent'''  deklarujeme (doplníme napr. hneď nad konštruktor)&lt;br /&gt;
    private JComponent myView;&lt;br /&gt;
&lt;br /&gt;
Ostanú nám ešte 2 žlté žiarovky, klikneme na každú z nich, a dáme &amp;quot;'''Add Import...'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
7. Teraz musíme ošetriť, že ak sa NetBeans IDE reštartuje, nemáme žiadny dôvod aby ShapeTopComponent pretrvával, čiže nájdeme metódu '''getPersistenceType()''' v tele triedy, a zmeníme ju nasledovne:&lt;br /&gt;
   public int getPersistenceType() {&lt;br /&gt;
       return TopComponent.PERSISTENCE_NEVER;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
8. Klikneme v &amp;quot;Project&amp;quot; window na náš projekt '''ShapeSample pravým--run'''&lt;br /&gt;
&lt;br /&gt;
9. Nezlaknite sa, spustí sa nová inštancia NetBeans IDE(ak nie je náš projekt už otvorený kliknite na '''window---Shape''') a zobrazí sa Vám niečo takéto:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb siesty.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vytváranie Palety pre našu scénu ==&lt;br /&gt;
&lt;br /&gt;
Teraz aby sme pokračovali niečím užitočným, vytvoríme si palletu, na čo využijeme Pallete API, ktorá bude obsahovať komponenty, ktoré môžeme použiť a pridať na našu scénu pretiahnutím.&lt;br /&gt;
Pre ďalšie pokračovanie budeme potrebovať 3 obrázky našich komponentov, použime tieto(kliknite pravým---uložiť ako, nemente názvy):&lt;br /&gt;
[[Súbor:Image1.png]][[Súbor:Image2.png]][[Súbor:Image3.png]]&lt;br /&gt;
&lt;br /&gt;
'''Keďže náš tutoriál sa zaoberá s Visual Library API, a nie s Palette API(info tu:[http://netbeans.org/kb/trails/platform.html] ), na funkcionalitu Paletty použijeme už hotové knižnice, ktoré stiahnete tu''':&lt;br /&gt;
[http://www.sendspace.com/file/dqtnbi]  (v prípade, že je link nefunkčný, na konci článku je hotový plugin pre tento modul, knižnice vytiahnite z neho)&lt;br /&gt;
&lt;br /&gt;
1. Klikneme na náš projekt pravým--new--Java Package a pomenujeme ho '''org.netbeans.shapesample.palette'''&lt;br /&gt;
2. Teraz podme do zložky, kde sme nás projekt uložili, konkrétne   '''násProjekt/src/org/netbeans/shapesample/pallete'''. A do tejto''' zložky nakopírujeme stiahnuté obrázky a následne aj knižnice''', čiže tieto súbory:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Category&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ CategoryChildren &amp;lt;br /&amp;gt;&lt;br /&gt;
c/ CategoryNode &amp;lt;br /&amp;gt;&lt;br /&gt;
d/ PaletteSupport&amp;lt;br /&amp;gt;&lt;br /&gt;
e/ Shape&amp;lt;br /&amp;gt;&lt;br /&gt;
f/ ShapeChildren&amp;lt;br /&amp;gt;&lt;br /&gt;
g/ ShapeNode&amp;lt;br /&amp;gt;&lt;br /&gt;
h/ image1, image2, image3&amp;lt;br /&amp;gt;&lt;br /&gt;
po zobrazení NetBeans sa nám novo vytvorený package obnoví, a budeme tam mať načítané všetky vložené súbory, pričom niekde sa znovu objavia červené krúžky so žiarovkou, to si nevšímajme chvíľku&lt;br /&gt;
&lt;br /&gt;
3. Klikneme '''pravým na projekt--Properties--Libraries--Add''' a pridáme nasledujúce knižnice:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Actions APIs&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Nodes API&amp;lt;br /&amp;gt;&lt;br /&gt;
c/ Common Palette &amp;lt;br /&amp;gt;&lt;br /&gt;
Teraz by sme mali spozorovať, že všetky červené guličky nám zmiznú, a bude nám to vypadať nasledovne: &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb siedmy.png]]&lt;br /&gt;
&lt;br /&gt;
4. Teraz pridáme našu Palettu do ShapeTopComponentovho náhľadu, a to tak, že do konštruktoru ShapeTopComponent kod&lt;br /&gt;
     associateLookup( Lookups.fixed( new Object[] { PaletteSupport.createPalette() } ) );&lt;br /&gt;
&lt;br /&gt;
5. Znova sa nám objaví žltá žiarovka, klikneme na ňu dáme &amp;quot;Add import...&amp;quot;, následne sa tam objaví znova, čiže znova klikneme a dáme &amp;quot;Add import...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
6. Spustite modul znova(pravým--run), teraz by to už malo vypadať takto, no zatiaľ bez funkcionality, pretože potrebujeme Layer Widget: &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb osmy.png]]&lt;br /&gt;
&lt;br /&gt;
== Pridanie LayerWidget ==&lt;br /&gt;
&lt;br /&gt;
Pod pojmom LayerWidget si predstavte niečo priesvitné, na ktoré budeme môcť ukladať naše komponenty s paletty.&lt;br /&gt;
&lt;br /&gt;
1. Ná úrovni triedy GraphSceneImpl deklarujte náš LayerWidget&lt;br /&gt;
     private LayerWidget mainLayer;&lt;br /&gt;
&lt;br /&gt;
2. Do konštruktoru GraphSceneImpl pridajte LayerWidget ako dieťa našej scény:&lt;br /&gt;
     mainLayer = new LayerWidget (this);&lt;br /&gt;
     addChild (mainLayer);&lt;br /&gt;
&lt;br /&gt;
Teraz keď pridáme na scénu nejaký komponent s našej paletty , pridajú sa ako deti do našel mainLayer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pridanie IconNodeWidget (komponentu) cez funkcionalitu Drag and Drop (chyť a hoď) ==&lt;br /&gt;
&lt;br /&gt;
Doposiaľ, naša scéna existuje, ale nemá žiadnu funkcionalitu. Túto funkcionalitu pridáme pomocou '''&amp;quot;actions&amp;quot;'''. Action, ktorá nám umožnuje Drag &amp;amp; Drop funkcionalitu je '''AcceptAction''' . Táto action môže byť aplikovaná buď na náš komponent alebo na našu scénu. My ju budeme aplikovať na našu scénu. Využijeme '''createAcceptAction''' na to, aby sme definovali čo sa má stať po tom, ako je komponent pretiahnutý nad našu scénu.&lt;br /&gt;
&lt;br /&gt;
1. Najprv pridajte '''createAcceptAction''' spolu s jeho dvomi metódami do GraphSceneImpl konštruktoru:&lt;br /&gt;
   getActions().addAction(ActionFactory.createAcceptAction(new AcceptProvider() {&lt;br /&gt;
    public ConnectorState isAcceptable(Widget widget, Point point, Transferable transferable) {&lt;br /&gt;
        Image dragImage = getImageFromTransferable(transferable);&lt;br /&gt;
        JComponent view = getView();&lt;br /&gt;
        Graphics2D g2 = (Graphics2D) view.getGraphics();&lt;br /&gt;
        Rectangle visRect = view.getVisibleRect();&lt;br /&gt;
        view.paintImmediately(visRect.x, visRect.y, visRect.width, visRect.height);&lt;br /&gt;
        g2.drawImage(dragImage,&lt;br /&gt;
                AffineTransform.getTranslateInstance(point.getLocation().getX(),&lt;br /&gt;
                point.getLocation().getY()),&lt;br /&gt;
                null);&lt;br /&gt;
        return ConnectorState.ACCEPT;&lt;br /&gt;
    }&lt;br /&gt;
    public void accept(Widget widget, Point point, Transferable transferable) {&lt;br /&gt;
        Image image = getImageFromTransferable(transferable);&lt;br /&gt;
        Widget w = GraphSceneImpl.this.addNode(new MyNode(image));&lt;br /&gt;
        w.setPreferredLocation(widget.convertLocalToScene(point));&lt;br /&gt;
    }&lt;br /&gt;
    }));&lt;br /&gt;
&lt;br /&gt;
Objaví sa nám viacero chýb, a to z toho dôvodu, že sme použili aj metody, ktoré zatiaľ nie sú definované, čiže si chvíľku nevšímajme tieto errory.&lt;br /&gt;
&lt;br /&gt;
2. Teraz do triedy '''GraphSceneImpl''' pridáme pomocnú metódu na získavanie obrázkov:&lt;br /&gt;
   private Image getImageFromTransferable(Transferable transferable) {&lt;br /&gt;
    Object o = null;&lt;br /&gt;
    try {&lt;br /&gt;
        o = transferable.getTransferData(DataFlavor.imageFlavor);&lt;br /&gt;
    } catch (IOException ex) {&lt;br /&gt;
        ex.printStackTrace();&lt;br /&gt;
    } catch (UnsupportedFlavorException ex) {&lt;br /&gt;
        ex.printStackTrace();&lt;br /&gt;
    }&lt;br /&gt;
    return o instanceof Image ? (Image) o : ImageUtilities.loadImage(&amp;quot;org/netbeans/shapesample/palette/shape1.png&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
Ako vidíme, je tu ošetrená chyba, čiže môžete do org.netbeans.shapesample.palette doplniť obrázok, ktorý sa má objaviť pri chybe, dajte mu meno shape1.png&lt;br /&gt;
&lt;br /&gt;
3. Z dôvodu toho, že máme len 3 obrázky, mohli by sme vytvoriť akoby len 3 prvky, preto si vytvoríme novú triedu s názvom '''MyNode'''. Klikneme na náš '''package shapesample pravým--new---java class''' a bude vypadať takto:&lt;br /&gt;
    public class MyNode {    &lt;br /&gt;
    private Image image;&lt;br /&gt;
    &lt;br /&gt;
    public MyNode(Image image) {&lt;br /&gt;
        this.image = image;&lt;br /&gt;
    }    &lt;br /&gt;
    public Image getImage() {&lt;br /&gt;
        return image;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
Klikneme na žltú žiarovku v tejto triede a dáme '''&amp;quot;Add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
4. Zmeníme teraz v triede '''GraphSceneImpl''' rodiča, od ktorého dedí, čiže jeden z prvý riadkov bude vypadať takto:&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&amp;lt;MyNode, String&amp;gt;{...telo triedy...}&lt;br /&gt;
čím sme zabezpečili, že naša Node je prijatá  cez Visual Library. Teraz sa nám objaví žltá žiarovka aj pri tomto riadku, lebo teraz musíme dediť iné abstraktné metódy, '''čiže klikneme na ňu --implement all abstract methods'''&lt;br /&gt;
5. Kedže používame generics, tak klikneme '''pravým na náš projekt--properties--sources''' a presvedčíme sa, že tam máme hodnotu  '''Source level = 1.5'''&lt;br /&gt;
&lt;br /&gt;
6. Následne definujeme náš nový Widget (komponent) v triede '''GraphSceneImpl''' a to tak, že tam nájdeme metódu '''protected Widget attachNodeWidget(MyNode node)''' a upravíme ju nasledovne:&lt;br /&gt;
     protected Widget attachNodeWidget(MyNode node) {&lt;br /&gt;
       IconNodeWidget widget = new IconNodeWidget(this);&lt;br /&gt;
       widget.setImage(node.getImage());&lt;br /&gt;
       widget.setLabel(Long.toString(node.hashCode()));&lt;br /&gt;
       widget.getActions().addAction(ActionFactory.createMoveAction());&lt;br /&gt;
       mainLayer.addChild(widget);&lt;br /&gt;
       return widget;&lt;br /&gt;
     }&lt;br /&gt;
Týmto nášmu Widgetu nastavíme obrázok, a priradíme mu veľké náhodné číslo, a ešte možnosť posúvať ho po našej scéne, a následne po zastavení ho pridať znova ako child.&lt;br /&gt;
&lt;br /&gt;
7. Ešte stále nám ostáva pár žltých žiaroviek, takže klikneme na každú z nich, ktorá tam bude a dáme '''&amp;quot;Add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
8. Spustíme náš projekt, a už uvidíme, že je možné presúvať komponenty (Widgety) z našej paletty na našu scénku:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pridanie funkcionality pre našu scénu ==&lt;br /&gt;
1.Teraz pridáme najprv ZOOMaction na našu scénku a to tak, že na koniec '''GraphSceneImpl''' konštruktoru pridáme:&lt;br /&gt;
    getActions().addAction(ActionFactory.createZoomAction());&lt;br /&gt;
&lt;br /&gt;
Keď spustíme teraz náš projekt, tak pri pridržaní ctrl+ kolieško myši sa nám bude zoomovať naša plocha&lt;br /&gt;
&lt;br /&gt;
2. Pridaním riadku za predošlým :&lt;br /&gt;
    getActions().addAction(ActionFactory.createPanAction());&lt;br /&gt;
Pridáme funkcionalitu, že keď user potlačí kolečko myši, tak potom môže hýbať do hociktorého smeru.&lt;br /&gt;
&lt;br /&gt;
== Pridanie funkcinality pre IconNodeWidget ==&lt;br /&gt;
Pre IconNodeWidget sme už pridali funcionalitu pre hýbanie '''MoveAction'''. Tak isto sme schopný pridať aj funkcionalitu pre '''HoverAction, SelectAction, a InplaceEditorAction''', v poradí (nadídenie, vybranie, premenovanie)&lt;br /&gt;
1. Najprv na úrovni triedy definujte &lt;br /&gt;
   private WidgetAction editorAction = ActionFactory.createInplaceEditorAction(new LabelTextFieldEditor());&lt;br /&gt;
Následne sa objaví znova žltá žiarovka, najprv dajte '''&amp;quot;Add import...&amp;quot;''', následne dajte '''&amp;quot;Create class LabelTextFieldEditor...&amp;quot;''' , čo nám pridá do nášho package triedu.&lt;br /&gt;
2.Telo tejto triedy '''LabelTextFieldEditor''' zmeníme nasledovne:&lt;br /&gt;
    class LabelTextFieldEditor implements TextFieldInplaceEditor {&lt;br /&gt;
    public boolean isEnabled(Widget widget) {&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
    public String getText(Widget widget) {&lt;br /&gt;
        return ((LabelWidget) widget).getLabel();&lt;br /&gt;
    }&lt;br /&gt;
    public void setText(Widget widget, String text) {&lt;br /&gt;
        ((LabelWidget) widget).setLabel(text);&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
Znovu sa v tejto triede objaví zopár žltých žiaroviek, poklikajte na '''&amp;quot;add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
3. Následne priradíme editorAction nášmu IconNodeWidget, a to tak, že na koniec metódy '''protected Widget attachNodeWidget(MyNode node)''' triedy '''GraphSceneImpl''' vložíme tesne nad riadok ''' mainLayer.addChild(widget);''' nasledujúci kód:&lt;br /&gt;
    widget.getLabelWidget().getActions().addAction(editorAction);&lt;br /&gt;
&lt;br /&gt;
4. Následne Hower, Clicked action dolníme tak, že po vyššie doplnenom riadku dáme tieto dva:&lt;br /&gt;
    widget.getActions().addAction(createSelectAction());&lt;br /&gt;
    widget.getActions().addAction(createObjectHoverAction());&lt;br /&gt;
&lt;br /&gt;
5. Teraz musíme trochu premyslieť poradie, v ktorom sme akcie pridali, info tu [http://bits.netbeans.org/dev/javadoc/org-netbeans-api-visual/org/netbeans/api/visual/widget/doc-files/documentation.html#OrderOfActions]&lt;br /&gt;
A následne bude naša metóda '''protected Widget attachNodeWidget''' vypadať nasledovne&lt;br /&gt;
    protected Widget attachNodeWidget(MyNode node) {&lt;br /&gt;
        IconNodeWidget widget = new IconNodeWidget(this);&lt;br /&gt;
        widget.setImage(node.getImage());&lt;br /&gt;
        widget.setLabel(Long.toString(node.hashCode()));&lt;br /&gt;
        //double-click, event sa spustí len pri doubleclicku:&lt;br /&gt;
        widget.getLabelWidget().getActions().addAction(editorAction);&lt;br /&gt;
        //single-click, event sa spustí pri single clicku&lt;br /&gt;
        widget.getActions().addAction(createSelectAction());&lt;br /&gt;
        //mouse-dragged&lt;br /&gt;
        widget.getActions().addAction(ActionFactory.createMoveAction());&lt;br /&gt;
        //mouse-over,&lt;br /&gt;
        widget.getActions().addAction(createObjectHoverAction());&lt;br /&gt;
        mainLayer.addChild(widget);&lt;br /&gt;
        return widget;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
6. Po spustení to bude môcť vypadať takto napr.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb desat.png]]&lt;br /&gt;
&lt;br /&gt;
== Záver a riešenie problémov ==&lt;br /&gt;
&lt;br /&gt;
Ukázali sme v skutku len veľmi strohú ukážku, čo by sa s NetBeans dalo spraviť, ale keďže je to problematika, ktorou by sa mali zaoberať knihy pre pokročilejších programátorov, tak tu skončíme.&lt;br /&gt;
&lt;br /&gt;
V prípade nejasností je vždy dobré sa obráti na stránku NetBeans tutorials [http://netbeans.org/kb/trails/platform.html]&lt;br /&gt;
&lt;br /&gt;
V prípade problémov, resp. riešenia chýb uvedeného návodu, '''odporúčam použiť VYTVORENY FUNKCNY MODUL'''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Download:''' [http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=14027]&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Inštalácia:''' Spustite '''NetBeans--Tools--Plugins--kliknite Downloaded--Add Plugins...--nájdite stiahnutý--install'''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Spustenie pluginu:''' '''Spustite NetBeans--File--New Project--Samples--NetBeansModule--Visual Library Demo'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
V prípade nejasností, je tam všetko štruktúrované ako v našom návode, čiže by ste tam mali nájsť svoju chybu dosť rýchlo a prehľadne.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zdroj:[http://platform.netbeans.org/tutorials/nbm-visual_library.html]&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3867</id>
		<title>Základy práce s NetBeans IDE a vývoj modulov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3867"/>
		<updated>2010-04-27T19:13:51Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: /* Vytvorenie a spustenie projektu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== NetBeans IDE ==&lt;br /&gt;
NetBeans je krásne vývojové prostredie, ktorého hlavnou výhodou je jeho modulárna architektúra. Ďalším skvelým prvkom je, že sa spolieha na toolkit SWING UI, čo nám dokopy dáva obrovské výhody.&lt;br /&gt;
&lt;br /&gt;
V tomto článku sa posnažím ukázať, ako možno vytvoriť jednoduchý modul pre NetBeans, ktorý bude iba strohá ukážka toho, čo sa s NetBeans dá robit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Požiadavky na postup článkom ==&lt;br /&gt;
1. NetBeans IDE ( použitá verzia 6.8 )&amp;lt;br /&amp;gt;&lt;br /&gt;
2. Java_jdk ( použitá verzia 1.6.0.18 ) &amp;lt;br /&amp;gt;&lt;br /&gt;
3. Základné znalosti jazyka JAVA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie a spustenie projektu ==&lt;br /&gt;
1. Začneme  spustením  Netbeans  a  zvolíme  '''File--New Project--NetBeans Modules--Module'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb prvy.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Klikneme na tlačítko &amp;quot;NEXT&amp;quot;, pomenujeme si náš projekt napr. &amp;quot;ShapeSample&amp;quot;, nastavíme ho ako &amp;quot;'''main project'''&amp;quot; a vyberieme si umiestnenie, kde ho chceme uložiť a ponecháme '''Standalone Module'''&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb druhy.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Klikneme &amp;quot;NEXT&amp;quot;, zadáme do &amp;quot;Code Name Base&amp;quot; '''org.netbeans.shapesample''', a dôležité, klikneme na '''Generate XML Layer'''. Následne klikneme na tlačítko finish, a vytvorí sa nám projekt.&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb treti.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. V okne &amp;quot;Project&amp;quot; , '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--Properties--Libraries'''. Module Dependencies klikneme na tlačítko &amp;quot;ADD&amp;quot; a pridáme:&amp;lt;br /&amp;gt;&lt;br /&gt;
''a/ Visual Library API &amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Utilities API &amp;lt;br /&amp;gt;''&lt;br /&gt;
Klikneme na tlačítko OK, čo nám pridá odkazy.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Znova v &amp;quot;Project&amp;quot; window '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--New--Other--Module Development--Window Component''' , klikneme &amp;quot;NEXT&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6. Ako Windows Position dáme '''editor''' a zaškrtneme '''Open on application start''' a klikneme &amp;quot;NEXT&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7.Do políčka &amp;quot;Class Name Prefix&amp;quot; dopíšeme '''Shape''', klikneme na tlačítko &amp;quot;FINISH&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. Vygeneruje sa nám viacero súbor, jedným z nich je '''ShapeTopComponent''', 2krát naň klikneme a otvoríme ho v design view.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. V design view, pravým klikneme na okno akoby a dáme '''Set Layout--Border Layout'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt; &lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; width=450 | [[Súbor:Ytb stvrty.png | 400px]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie scény ==&lt;br /&gt;
1. Využijeme okno &amp;quot;'''Pallete'''&amp;quot; (ak nie je zobrazené dáme window---pallete) a vložíme na naš layout '''ScrollPane'''. V okne &amp;quot;Inspector&amp;quot; klikneme pravým na jScrollPane1--Change Variable Name a nastavíme hodnotu na &amp;quot;shapePane&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
2.V &amp;quot;Project&amp;quot; windows na zložku''' org--netbeans--shapesample''' klikneme pravým a dáme '''new--Java Class''', pomenujme ju &amp;quot;'''GraphSceneImpl'''&amp;quot;, a po vytvorení dopíšme do triedy '''extends GraphScene'''&lt;br /&gt;
&lt;br /&gt;
3. Žltá žiarovka s červeným výkričníkom sa nám objaví naľavo v editore, klikneme na ňu, a dáme &amp;quot;'''add Import...'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
Následne sa dám objaví ďalšia žltá žiarovka, klikneme na ňu a dáme &amp;quot;'''Implement all abstract methods'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb piaty.png]]&lt;br /&gt;
&lt;br /&gt;
4. Pre lepšiu orientáciu zmeníme názvy parametrov vygenerovaných NetBeans, a po úprave bude naša trieda vypadať takto:&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
    public GraphSceneImpl() {&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachNodeWidget(Object node) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachEdgeWidget(Object edge) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeSourceAnchor(Object edge, Object oldSourceNode, Object newSourceNode) {&lt;br /&gt;
    &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeTargetAnchor(Object edge, Object oldTargetNode, Object newTargetNode) {&lt;br /&gt;
            &lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
5.Vrátime sa k ShapeTopComponent, kde sa budeme starať o instanciu GraphSceneImpl , prepneme Design View na SourceView, a nájdeme jeho konštruktor. Do tela konštruktora doplnime nasledujúce riadky:&lt;br /&gt;
     GraphSceneImpl scene = new GraphSceneImpl();&lt;br /&gt;
     myView = scene.createView();     &lt;br /&gt;
     shapePane.setViewportView(myView);&lt;br /&gt;
     add(scene.createSatelliteView(), BorderLayout.WEST);  &lt;br /&gt;
&lt;br /&gt;
Týmto sme vytvorili 2 náhľady, jeden veľký, a jeden akoby informačný na ľavej strane, ktorý pomôže používateľovi rýchlejšie sa pohybovať po väčšom rozpätí.&lt;br /&gt;
&lt;br /&gt;
6. Na '''úrovni triedy ShapeTopComponent'''  deklarujeme (doplníme napr. hneď nad konštruktor)&lt;br /&gt;
    private JComponent myView;&lt;br /&gt;
&lt;br /&gt;
Ostanú nám ešte 2 žlté žiarovky, klikneme na každú z nich, a dáme &amp;quot;'''Add Import...'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
7. Teraz musíme ošetriť, že ak sa NetBeans IDE reštartuje, nemáme žiadny dôvod aby ShapeTopComponent pretrvával, čiže nájdeme metódu '''getPersistenceType()''' v tele triedy, a zmeníme ju nasledovne:&lt;br /&gt;
   public int getPersistenceType() {&lt;br /&gt;
       return TopComponent.PERSISTENCE_NEVER;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
8. Klikneme v &amp;quot;Project&amp;quot; window na náš projekt '''ShapeSample pravým--run'''&lt;br /&gt;
&lt;br /&gt;
9. Nezlaknite sa, spustí sa nová inštancia NetBeans IDE(ak nie je náš projekt už otvorený kliknite na '''window---Shape''') a zobrazí sa Vám niečo takéto:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb siesty.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytváranie Palety pre našu scénu ==&lt;br /&gt;
&lt;br /&gt;
Teraz aby sme pokračovali niečím užitočným, vytvoríme si palletu, na čo využijeme Pallete API, ktorá bude obsahovať komponenty, ktoré môžeme použiť a pridať na našu scénu pretiahnutím.&lt;br /&gt;
Pre ďalšie pokračovanie budeme potrebovať 3 obrázky našich komponentov, použime tieto(kliknite pravým---uložiť ako, nemente názvy):&lt;br /&gt;
[[Súbor:Image1.png]][[Súbor:Image2.png]][[Súbor:Image3.png]]&lt;br /&gt;
&lt;br /&gt;
'''Keďže náš tutoriál sa zaoberá s Visual Library API, a nie s Palette API(info tu:[http://netbeans.org/kb/trails/platform.html] ), na funkcionalitu Paletty použijeme už hotové knižnice, ktoré stiahnete tu''':&lt;br /&gt;
[http://www.sendspace.com/file/dqtnbi]  (v prípade, že je link nefunkčný, na konci článku je hotový plugin pre tento modul, knižnice vytiahnite z neho)&lt;br /&gt;
&lt;br /&gt;
1. Klikneme na náš projekt pravým--new--Java Package a pomenujeme ho '''org.netbeans.shapesample.palette'''&lt;br /&gt;
2. Teraz podme do zložky, kde sme nás projekt uložili, konkrétne   '''násProjekt/src/org/netbeans/shapesample/pallete'''. A do tejto''' zložky nakopírujeme stiahnuté obrázky a následne aj knižnice''', čiže tieto súbory:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Category&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ CategoryChildren &amp;lt;br /&amp;gt;&lt;br /&gt;
c/ CategoryNode &amp;lt;br /&amp;gt;&lt;br /&gt;
d/ PaletteSupport&amp;lt;br /&amp;gt;&lt;br /&gt;
e/ Shape&amp;lt;br /&amp;gt;&lt;br /&gt;
f/ ShapeChildren&amp;lt;br /&amp;gt;&lt;br /&gt;
g/ ShapeNode&amp;lt;br /&amp;gt;&lt;br /&gt;
h/ image1, image2, image3&amp;lt;br /&amp;gt;&lt;br /&gt;
po zobrazení NetBeans sa nám novo vytvorený package obnoví, a budeme tam mať načítané všetky vložené súbory, pričom niekde sa znovu objavia červené krúžky so žiarovkou, to si nevšímajme chvíľku&lt;br /&gt;
&lt;br /&gt;
3. Klikneme '''pravým na projekt--Properties--Libraries--Add''' a pridáme nasledujúce knižnice:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Actions APIs&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Nodes API&amp;lt;br /&amp;gt;&lt;br /&gt;
c/ Common Palette &amp;lt;br /&amp;gt;&lt;br /&gt;
Teraz by sme mali spozorovať, že všetky červené guličky nám zmiznú, a bude nám to vypadať nasledovne: &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb siedmy.png]]&lt;br /&gt;
&lt;br /&gt;
4. Teraz pridáme našu Palettu do ShapeTopComponentovho náhľadu, a to tak, že do konštruktoru ShapeTopComponent kod&lt;br /&gt;
     associateLookup( Lookups.fixed( new Object[] { PaletteSupport.createPalette() } ) );&lt;br /&gt;
&lt;br /&gt;
5. Znova sa nám objaví žltá žiarovka, klikneme na ňu dáme &amp;quot;Add import...&amp;quot;, následne sa tam objaví znova, čiže znova klikneme a dáme &amp;quot;Add import...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
6. Spustite modul znova(pravým--run), teraz by to už malo vypadať takto, no zatiaľ bez funkcionality, pretože potrebujeme Layer Widget: &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb osmy.png]]&lt;br /&gt;
&lt;br /&gt;
== Pridanie LayerWidget ==&lt;br /&gt;
&lt;br /&gt;
Pod pojmom LayerWidget si predstavte niečo priesvitné, na ktoré budeme môcť ukladať naše komponenty s paletty.&lt;br /&gt;
&lt;br /&gt;
1. Ná úrovni triedy GraphSceneImpl deklarujte náš LayerWidget&lt;br /&gt;
     private LayerWidget mainLayer;&lt;br /&gt;
&lt;br /&gt;
2. Do konštruktoru GraphSceneImpl pridajte LayerWidget ako dieťa našej scény:&lt;br /&gt;
     mainLayer = new LayerWidget (this);&lt;br /&gt;
     addChild (mainLayer);&lt;br /&gt;
&lt;br /&gt;
Teraz keď pridáme na scénu nejaký komponent s našej paletty , pridajú sa ako deti do našel mainLayer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pridanie IconNodeWidget (komponentu) cez funkcionalitu Drag and Drop (chyť a hoď) ==&lt;br /&gt;
&lt;br /&gt;
Doposiaľ, naša scéna existuje, ale nemá žiadnu funkcionalitu. Túto funkcionalitu pridáme pomocou '''&amp;quot;actions&amp;quot;'''. Action, ktorá nám umožnuje Drag &amp;amp; Drop funkcionalitu je '''AcceptAction''' . Táto action môže byť aplikovaná buď na náš komponent alebo na našu scénu. My ju budeme aplikovať na našu scénu. Využijeme '''createAcceptAction''' na to, aby sme definovali čo sa má stať po tom, ako je komponent pretiahnutý nad našu scénu.&lt;br /&gt;
&lt;br /&gt;
1. Najprv pridajte '''createAcceptAction''' spolu s jeho dvomi metódami do GraphSceneImpl konštruktoru:&lt;br /&gt;
   getActions().addAction(ActionFactory.createAcceptAction(new AcceptProvider() {&lt;br /&gt;
    public ConnectorState isAcceptable(Widget widget, Point point, Transferable transferable) {&lt;br /&gt;
        Image dragImage = getImageFromTransferable(transferable);&lt;br /&gt;
        JComponent view = getView();&lt;br /&gt;
        Graphics2D g2 = (Graphics2D) view.getGraphics();&lt;br /&gt;
        Rectangle visRect = view.getVisibleRect();&lt;br /&gt;
        view.paintImmediately(visRect.x, visRect.y, visRect.width, visRect.height);&lt;br /&gt;
        g2.drawImage(dragImage,&lt;br /&gt;
                AffineTransform.getTranslateInstance(point.getLocation().getX(),&lt;br /&gt;
                point.getLocation().getY()),&lt;br /&gt;
                null);&lt;br /&gt;
        return ConnectorState.ACCEPT;&lt;br /&gt;
    }&lt;br /&gt;
    public void accept(Widget widget, Point point, Transferable transferable) {&lt;br /&gt;
        Image image = getImageFromTransferable(transferable);&lt;br /&gt;
        Widget w = GraphSceneImpl.this.addNode(new MyNode(image));&lt;br /&gt;
        w.setPreferredLocation(widget.convertLocalToScene(point));&lt;br /&gt;
    }&lt;br /&gt;
    }));&lt;br /&gt;
&lt;br /&gt;
Objaví sa nám viacero chýb, a to z toho dôvodu, že sme použili aj metody, ktoré zatiaľ nie sú definované, čiže si chvíľku nevšímajme tieto errory.&lt;br /&gt;
&lt;br /&gt;
2. Teraz do triedy '''GraphSceneImpl''' pridáme pomocnú metódu na získavanie obrázkov:&lt;br /&gt;
   private Image getImageFromTransferable(Transferable transferable) {&lt;br /&gt;
    Object o = null;&lt;br /&gt;
    try {&lt;br /&gt;
        o = transferable.getTransferData(DataFlavor.imageFlavor);&lt;br /&gt;
    } catch (IOException ex) {&lt;br /&gt;
        ex.printStackTrace();&lt;br /&gt;
    } catch (UnsupportedFlavorException ex) {&lt;br /&gt;
        ex.printStackTrace();&lt;br /&gt;
    }&lt;br /&gt;
    return o instanceof Image ? (Image) o : ImageUtilities.loadImage(&amp;quot;org/netbeans/shapesample/palette/shape1.png&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
Ako vidíme, je tu ošetrená chyba, čiže môžete do org.netbeans.shapesample.palette doplniť obrázok, ktorý sa má objaviť pri chybe, dajte mu meno shape1.png&lt;br /&gt;
&lt;br /&gt;
3. Z dôvodu toho, že máme len 3 obrázky, mohli by sme vytvoriť akoby len 3 prvky, preto si vytvoríme novú triedu s názvom '''MyNode'''. Klikneme na náš '''package shapesample pravým--new---java class''' a bude vypadať takto:&lt;br /&gt;
    public class MyNode {    &lt;br /&gt;
    private Image image;&lt;br /&gt;
    &lt;br /&gt;
    public MyNode(Image image) {&lt;br /&gt;
        this.image = image;&lt;br /&gt;
    }    &lt;br /&gt;
    public Image getImage() {&lt;br /&gt;
        return image;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
Klikneme na žltú žiarovku v tejto triede a dáme '''&amp;quot;Add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
4. Zmeníme teraz v triede '''GraphSceneImpl''' rodiča, od ktorého dedí, čiže jeden z prvý riadkov bude vypadať takto:&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&amp;lt;MyNode, String&amp;gt;{...telo triedy...}&lt;br /&gt;
čím sme zabezpečili, že naša Node je prijatá  cez Visual Library. Teraz sa nám objaví žltá žiarovka aj pri tomto riadku, lebo teraz musíme dediť iné abstraktné metódy, '''čiže klikneme na ňu --implement all abstract methods'''&lt;br /&gt;
5. Kedže používame generics, tak klikneme '''pravým na náš projekt--properties--sources''' a presvedčíme sa, že tam máme hodnotu  '''Source level = 1.5'''&lt;br /&gt;
&lt;br /&gt;
6. Následne definujeme náš nový Widget (komponent) v triede '''GraphSceneImpl''' a to tak, že tam nájdeme metódu '''protected Widget attachNodeWidget(MyNode node)''' a upravíme ju nasledovne:&lt;br /&gt;
     protected Widget attachNodeWidget(MyNode node) {&lt;br /&gt;
       IconNodeWidget widget = new IconNodeWidget(this);&lt;br /&gt;
       widget.setImage(node.getImage());&lt;br /&gt;
       widget.setLabel(Long.toString(node.hashCode()));&lt;br /&gt;
       widget.getActions().addAction(ActionFactory.createMoveAction());&lt;br /&gt;
       mainLayer.addChild(widget);&lt;br /&gt;
       return widget;&lt;br /&gt;
     }&lt;br /&gt;
Týmto nášmu Widgetu nastavíme obrázok, a priradíme mu veľké náhodné číslo, a ešte možnosť posúvať ho po našej scéne, a následne po zastavení ho pridať znova ako child.&lt;br /&gt;
&lt;br /&gt;
7. Ešte stále nám ostáva pár žltých žiaroviek, takže klikneme na každú z nich, ktorá tam bude a dáme '''&amp;quot;Add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
8. Spustíme náš projekt, a už uvidíme, že je možné presúvať komponenty (Widgety) z našej paletty na našu scénku:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pridanie funkcionality pre našu scénu ==&lt;br /&gt;
1.Teraz pridáme najprv ZOOMaction na našu scénku a to tak, že na koniec '''GraphSceneImpl''' konštruktoru pridáme:&lt;br /&gt;
    getActions().addAction(ActionFactory.createZoomAction());&lt;br /&gt;
&lt;br /&gt;
Keď spustíme teraz náš projekt, tak pri pridržaní ctrl+ kolieško myši sa nám bude zoomovať naša plocha&lt;br /&gt;
&lt;br /&gt;
2. Pridaním riadku za predošlým :&lt;br /&gt;
    getActions().addAction(ActionFactory.createPanAction());&lt;br /&gt;
Pridáme funkcionalitu, že keď user potlačí kolečko myši, tak potom môže hýbať do hociktorého smeru.&lt;br /&gt;
&lt;br /&gt;
== Pridanie funkcinality pre IconNodeWidget ==&lt;br /&gt;
Pre IconNodeWidget sme už pridali funcionalitu pre hýbanie '''MoveAction'''. Tak isto sme schopný pridať aj funkcionalitu pre '''HoverAction, SelectAction, a InplaceEditorAction''', v poradí (nadídenie, vybranie, premenovanie)&lt;br /&gt;
1. Najprv na úrovni triedy definujte &lt;br /&gt;
   private WidgetAction editorAction = ActionFactory.createInplaceEditorAction(new LabelTextFieldEditor());&lt;br /&gt;
Následne sa objaví znova žltá žiarovka, najprv dajte '''&amp;quot;Add import...&amp;quot;''', následne dajte '''&amp;quot;Create class LabelTextFieldEditor...&amp;quot;''' , čo nám pridá do nášho package triedu.&lt;br /&gt;
2.Telo tejto triedy '''LabelTextFieldEditor''' zmeníme nasledovne:&lt;br /&gt;
    class LabelTextFieldEditor implements TextFieldInplaceEditor {&lt;br /&gt;
    public boolean isEnabled(Widget widget) {&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
    public String getText(Widget widget) {&lt;br /&gt;
        return ((LabelWidget) widget).getLabel();&lt;br /&gt;
    }&lt;br /&gt;
    public void setText(Widget widget, String text) {&lt;br /&gt;
        ((LabelWidget) widget).setLabel(text);&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
Znovu sa v tejto triede objaví zopár žltých žiaroviek, poklikajte na '''&amp;quot;add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
3. Následne priradíme editorAction nášmu IconNodeWidget, a to tak, že na koniec metódy '''protected Widget attachNodeWidget(MyNode node)''' triedy '''GraphSceneImpl''' vložíme tesne nad riadok ''' mainLayer.addChild(widget);''' nasledujúci kód:&lt;br /&gt;
    widget.getLabelWidget().getActions().addAction(editorAction);&lt;br /&gt;
&lt;br /&gt;
4. Následne Hower, Clicked action dolníme tak, že po vyššie doplnenom riadku dáme tieto dva:&lt;br /&gt;
    widget.getActions().addAction(createSelectAction());&lt;br /&gt;
    widget.getActions().addAction(createObjectHoverAction());&lt;br /&gt;
&lt;br /&gt;
5. Teraz musíme trochu premyslieť poradie, v ktorom sme akcie pridali, info tu [http://bits.netbeans.org/dev/javadoc/org-netbeans-api-visual/org/netbeans/api/visual/widget/doc-files/documentation.html#OrderOfActions]&lt;br /&gt;
A následne bude naša metóda '''protected Widget attachNodeWidget''' vypadať nasledovne&lt;br /&gt;
    protected Widget attachNodeWidget(MyNode node) {&lt;br /&gt;
        IconNodeWidget widget = new IconNodeWidget(this);&lt;br /&gt;
        widget.setImage(node.getImage());&lt;br /&gt;
        widget.setLabel(Long.toString(node.hashCode()));&lt;br /&gt;
        //double-click, event sa spustí len pri doubleclicku:&lt;br /&gt;
        widget.getLabelWidget().getActions().addAction(editorAction);&lt;br /&gt;
        //single-click, event sa spustí pri single clicku&lt;br /&gt;
        widget.getActions().addAction(createSelectAction());&lt;br /&gt;
        //mouse-dragged&lt;br /&gt;
        widget.getActions().addAction(ActionFactory.createMoveAction());&lt;br /&gt;
        //mouse-over,&lt;br /&gt;
        widget.getActions().addAction(createObjectHoverAction());&lt;br /&gt;
        mainLayer.addChild(widget);&lt;br /&gt;
        return widget;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
6. Po spustení to bude môcť vypadať takto napr.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb desat.png]]&lt;br /&gt;
&lt;br /&gt;
== Záver a riešenie problémov ==&lt;br /&gt;
&lt;br /&gt;
Ukázali sme v skutku len veľmi strohú ukážku, čo by sa s NetBeans dalo spraviť, ale keďže je to problematika, ktorou by sa mali zaoberať knihy pre pokročilejších programátorov, tak tu skončíme.&lt;br /&gt;
&lt;br /&gt;
V prípade nejasností je vždy dobré sa obráti na stránku NetBeans tutorials [http://netbeans.org/kb/trails/platform.html]&lt;br /&gt;
&lt;br /&gt;
V prípade problémov, resp. riešenia chýb uvedeného návodu, '''odporúčam použiť VYTVORENY FUNKCNY MODUL'''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Download:''' [http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=14027]&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Inštalácia:''' Spustite '''NetBeans--Tools--Plugins--kliknite Downloaded--Add Plugins...--nájdite stiahnutý--install'''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Spustenie pluginu:''' '''Spustite NetBeans--File--New Project--Samples--NetBeansModule--Visual Library Demo'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
V prípade nejasností, je tam všetko štruktúrované ako v našom návode, čiže by ste tam mali nájsť svoju chybu dosť rýchlo a prehľadne.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zdroj:[http://platform.netbeans.org/tutorials/nbm-visual_library.html]&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Z%C3%A1klady_informatiky_-_jazyk_Java&amp;diff=3863</id>
		<title>Základy informatiky - jazyk Java</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Z%C3%A1klady_informatiky_-_jazyk_Java&amp;diff=3863"/>
		<updated>2010-04-27T12:47:34Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: /* Obsah prednášky */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Java]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;properties&amp;gt;&lt;br /&gt;
Názov=Základy informatiky - programovanie v jazyku Java&lt;br /&gt;
Forma=Podklady k prednáškam a cvičeniam&lt;br /&gt;
Abstrakt= Úvod do programovania, operačný systém, aplikácia, zdrojový kód, kompilovanie a spustenie programu. Syntax jazyka Java. Elementy programovacieho jazyka, identifikátory, klúčové slová, operátory. Dátové typy a ich rozdelenie. Výrazy a poradie vyhodnocovania výrazov. Deklarácie premenných a polí. Riadenie toku, bloky, podmienkové a logické výrazy. Triedy a objekty tried. Výnimky spracovanie výnimiek. Java API, aplikácie a applety. &lt;br /&gt;
Rozvrh=3/0/2&lt;br /&gt;
Hodnotenie=Skúška&lt;br /&gt;
Poznámky=Prvú verziu tohoto kurzu vyvoril [http://www.facebook.com/Peter.Pazak RNDr. Peter Pažák] ako podklady k cvičeniam z predmetu Základy programovania na FMFI UK . Pretože pôvodý text svojim rozsahom a kvalitou spracovania vysoko prevyšoval požiadavky na štandardné podklady ku cvičeniam, po konverzii do wiki je základným učebným textom k prednáške. Pokiaľ by ste chceli pôvodný text rozširovať, doplňovať o vlastné príklady a úlohy, stante sa redaktorom serveru kiwiki.&lt;br /&gt;
&amp;lt;/properties&amp;gt;&lt;br /&gt;
{{Draft}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Obsah prednášky ==&lt;br /&gt;
* [[Uvod do programovania v jazyku Java]]&lt;br /&gt;
** Základné pojmy&lt;br /&gt;
** Zdrojový kód&lt;br /&gt;
** Kompilácia a spustenie programu&lt;br /&gt;
* [[Syntax jazyka Java]]&lt;br /&gt;
** Elementy programovacieho jazyka Java&lt;br /&gt;
** Kľúčové slová jazyka Java&lt;br /&gt;
** Primitívne dátové typy a operátory&lt;br /&gt;
** Bloky, vetvenie toku programu a cykly&lt;br /&gt;
* [[Triedy a objekty]] &lt;br /&gt;
** Deklarácia triedy&lt;br /&gt;
** Vytváranie objektov&lt;br /&gt;
** Hodnoty a referencie&lt;br /&gt;
** Polia&lt;br /&gt;
* [[Vytváranie vlastných tried]]&lt;br /&gt;
** Trieda Ratio&lt;br /&gt;
* [[Dedičnosť a vzťahy medzi triedami]]&lt;br /&gt;
** [[Základy práce s NetBeans IDE a vývoj modulov]]&lt;br /&gt;
&lt;br /&gt;
== Doporučená literatúra a odkazy ==&lt;br /&gt;
&lt;br /&gt;
'''WWW'''&lt;br /&gt;
* [http://java.sun.com/ Java] - Domáca stránka, dokumentácia, tútoriály ... všetko na jednej kope&lt;br /&gt;
* [http://www.particle.kth.se/~lindsey/JavaCourse/Book/courseMap.html JavaTech] - Interaktívny kurz Javy&lt;br /&gt;
&lt;br /&gt;
'''Voľne dostupné učebnice a knihy'''&lt;br /&gt;
*[http://www.root.cz/knihy/thinking-in-java/ Thinking in Java] &lt;br /&gt;
* [http://www.freeprogrammingresources.com/javabook.html Zoznam voľne dostupnej literatúry] &lt;br /&gt;
&lt;br /&gt;
'''Pomôcky, programy'''&lt;br /&gt;
* [http://netbeans.org/ NetBeans IDE] - Domáca stránka komplexného vývojového prostredia&lt;br /&gt;
* [http://www.scintilla.org/SciTE.html SciTe] - Jednoduchý multiplatformový programátorský editor&lt;br /&gt;
* [http://www.geany.org/ Geany] - Jednoduché multiplatformové vývojové prostredie&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Podklady_k_predn%C3%A1%C5%A1kam_a_cvi%C4%8Deniam&amp;diff=3862</id>
		<title>Podklady k prednáškam a cvičeniam</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Podklady_k_predn%C3%A1%C5%A1kam_a_cvi%C4%8Deniam&amp;diff=3862"/>
		<updated>2010-04-27T12:46:41Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študijné materiály]]&lt;br /&gt;
== Cvičenia, semináre, návody a iné múdre texty==&lt;br /&gt;
&lt;br /&gt;
* [[Algoritmy a programovanie]]&lt;br /&gt;
* [[Databázové systémy - poznámky k Oracle SQL]]&lt;br /&gt;
* [[Konfigurovateľné mikroprocesorové systémy]]&lt;br /&gt;
* [[Logické a číslicové systémy ]]&lt;br /&gt;
* [[Objektovo orientované programovanie]]&lt;br /&gt;
* [[Operačné systémy]]&lt;br /&gt;
* [[Simulácie a modelovanie]] pre elektroniku a elektrotechniku&lt;br /&gt;
* [[Softvérové inžinierstvo]]&lt;br /&gt;
* [[Spolupráca počítača s prostredím]]&lt;br /&gt;
* [[Webovské technológie]]&lt;br /&gt;
* [[Základy informatiky - jazyk C]]&lt;br /&gt;
* [[Základy informatiky - jazyk Java]]&lt;br /&gt;
* [[Základy informatiky - jazyk Python]]&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3859</id>
		<title>Základy práce s NetBeans IDE a vývoj modulov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3859"/>
		<updated>2010-04-26T06:39:23Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: /* Záver a riešenie problémov */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== NetBeans IDE ==&lt;br /&gt;
NetBeans je krásne vývojové prostredie, ktorého hlavnou výhodou je jeho modulárna architektúra. Ďalším skvelým prvkom je, že sa spolieha na toolkit SWING UI, čo nám dokopy dáva obrovské výhody.&lt;br /&gt;
&lt;br /&gt;
V tomto článku sa posnažím ukázať, ako možno vytvoriť jednoduchý modul pre NetBeans, ktorý bude iba strohá ukážka toho, čo sa s NetBeans dá robit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Požiadavky na postup článkom ==&lt;br /&gt;
1. NetBeans IDE ( použitá verzia 6.8 )&amp;lt;br /&amp;gt;&lt;br /&gt;
2. Java_jdk ( použitá verzia 1.6.0.18 ) &amp;lt;br /&amp;gt;&lt;br /&gt;
3. Základné znalosti jazyka JAVA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie a spustenie projektu ==&lt;br /&gt;
1. Začneme  spustením  Netbeans  a  zvolíme  '''File--New Project--NetBeans Modules--Module'''&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb prvy.png]]&lt;br /&gt;
&lt;br /&gt;
2. Klikneme na tlačítko &amp;quot;NEXT&amp;quot;, pomenujeme si náš projekt napr. &amp;quot;ShapeSample&amp;quot;, nastavíme ho ako &amp;quot;'''main project'''&amp;quot; a vyberieme si umiestnenie, kde ho chceme uložiť a ponecháme '''Standalone Module'''&lt;br /&gt;
[[Súbor:Ytb druhy.png]]&lt;br /&gt;
&lt;br /&gt;
3. Klikneme &amp;quot;NEXT&amp;quot;, zadáme do &amp;quot;Code Name Base&amp;quot; '''org.netbeans.shapesample''', a dôležité, klikneme na '''Generate XML Layer'''. Následne klikneme na tlačítko finish, a vytvorí sa nám projekt.&lt;br /&gt;
[[Súbor:Ytb treti.png]]&lt;br /&gt;
&lt;br /&gt;
4. V okne &amp;quot;Project&amp;quot; , '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--Properties--Libraries'''. Module Dependencies klikneme na tlačítko &amp;quot;ADD&amp;quot; a pridáme:&amp;lt;br /&amp;gt;&lt;br /&gt;
''a/ Visual Library API &amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Utilities API &amp;lt;br /&amp;gt;''&lt;br /&gt;
Klikneme na tlačítko OK, čo nám pridá odkazy.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Znova v &amp;quot;Project&amp;quot; window '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--New--Other--Module Development--Window Component''' , klikneme &amp;quot;NEXT&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6. Ako Windows Position dáme '''editor''' a zaškrtneme '''Open on application start''' a klikneme &amp;quot;NEXT&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7.Do políčka &amp;quot;Class Name Prefix&amp;quot; dopíšeme '''Shape''', klikneme na tlačítko &amp;quot;FINISH&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. Vygeneruje sa nám viacero súbor, jedným z nich je '''ShapeTopComponent''', 2krát naň klikneme a otvoríme ho v design view.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. V design view, pravým klikneme na okno akoby a dáme '''Set Layout--Border Layout'''&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb stvrty.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie scény ==&lt;br /&gt;
1. Využijeme okno &amp;quot;'''Pallete'''&amp;quot; (ak nie je zobrazené dáme window---pallete) a vložíme na naš layout '''ScrollPane'''. V okne &amp;quot;Inspector&amp;quot; klikneme pravým na jScrollPane1--Change Variable Name a nastavíme hodnotu na &amp;quot;shapePane&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
2.V &amp;quot;Project&amp;quot; windows na zložku''' org--netbeans--shapesample''' klikneme pravým a dáme '''new--Java Class''', pomenujme ju &amp;quot;'''GraphSceneImpl'''&amp;quot;, a po vytvorení dopíšme do triedy '''extends GraphScene'''&lt;br /&gt;
&lt;br /&gt;
3. Žltá žiarovka s červeným výkričníkom sa nám objaví naľavo v editore, klikneme na ňu, a dáme &amp;quot;'''add Import...'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
Následne sa dám objaví ďalšia žltá žiarovka, klikneme na ňu a dáme &amp;quot;'''Implement all abstract methods'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb piaty.png]]&lt;br /&gt;
&lt;br /&gt;
4. Pre lepšiu orientáciu zmeníme názvy parametrov vygenerovaných NetBeans, a po úprave bude naša trieda vypadať takto:&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
    public GraphSceneImpl() {&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachNodeWidget(Object node) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachEdgeWidget(Object edge) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeSourceAnchor(Object edge, Object oldSourceNode, Object newSourceNode) {&lt;br /&gt;
    &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeTargetAnchor(Object edge, Object oldTargetNode, Object newTargetNode) {&lt;br /&gt;
            &lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
5.Vrátime sa k ShapeTopComponent, kde sa budeme starať o instanciu GraphSceneImpl , prepneme Design View na SourceView, a nájdeme jeho konštruktor. Do tela konštruktora doplnime nasledujúce riadky:&lt;br /&gt;
     GraphSceneImpl scene = new GraphSceneImpl();&lt;br /&gt;
     myView = scene.createView();     &lt;br /&gt;
     shapePane.setViewportView(myView);&lt;br /&gt;
     add(scene.createSatelliteView(), BorderLayout.WEST);  &lt;br /&gt;
&lt;br /&gt;
Týmto sme vytvorili 2 náhľady, jeden veľký, a jeden akoby informačný na ľavej strane, ktorý pomôže používateľovi rýchlejšie sa pohybovať po väčšom rozpätí.&lt;br /&gt;
&lt;br /&gt;
6. Na '''úrovni triedy ShapeTopComponent'''  deklarujeme (doplníme napr. hneď nad konštruktor)&lt;br /&gt;
    private JComponent myView;&lt;br /&gt;
&lt;br /&gt;
Ostanú nám ešte 2 žlté žiarovky, klikneme na každú z nich, a dáme &amp;quot;'''Add Import...'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
7. Teraz musíme ošetriť, že ak sa NetBeans IDE reštartuje, nemáme žiadny dôvod aby ShapeTopComponent pretrvával, čiže nájdeme metódu '''getPersistenceType()''' v tele triedy, a zmeníme ju nasledovne:&lt;br /&gt;
   public int getPersistenceType() {&lt;br /&gt;
       return TopComponent.PERSISTENCE_NEVER;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
8. Klikneme v &amp;quot;Project&amp;quot; window na náš projekt '''ShapeSample pravým--run'''&lt;br /&gt;
&lt;br /&gt;
9. Nezlaknite sa, spustí sa nová inštancia NetBeans IDE(ak nie je náš projekt už otvorený kliknite na '''window---Shape''') a zobrazí sa Vám niečo takéto:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb siesty.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytváranie Palety pre našu scénu ==&lt;br /&gt;
&lt;br /&gt;
Teraz aby sme pokračovali niečím užitočným, vytvoríme si palletu, na čo využijeme Pallete API, ktorá bude obsahovať komponenty, ktoré môžeme použiť a pridať na našu scénu pretiahnutím.&lt;br /&gt;
Pre ďalšie pokračovanie budeme potrebovať 3 obrázky našich komponentov, použime tieto(kliknite pravým---uložiť ako, nemente názvy):&lt;br /&gt;
[[Súbor:Image1.png]][[Súbor:Image2.png]][[Súbor:Image3.png]]&lt;br /&gt;
&lt;br /&gt;
'''Keďže náš tutoriál sa zaoberá s Visual Library API, a nie s Palette API(info tu:[http://netbeans.org/kb/trails/platform.html] ), na funkcionalitu Paletty použijeme už hotové knižnice, ktoré stiahnete tu''':&lt;br /&gt;
[http://www.sendspace.com/file/dqtnbi]  (v prípade, že je link nefunkčný, na konci článku je hotový plugin pre tento modul, knižnice vytiahnite z neho)&lt;br /&gt;
&lt;br /&gt;
1. Klikneme na náš projekt pravým--new--Java Package a pomenujeme ho '''org.netbeans.shapesample.palette'''&lt;br /&gt;
2. Teraz podme do zložky, kde sme nás projekt uložili, konkrétne   '''násProjekt/src/org/netbeans/shapesample/pallete'''. A do tejto''' zložky nakopírujeme stiahnuté obrázky a následne aj knižnice''', čiže tieto súbory:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Category&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ CategoryChildren &amp;lt;br /&amp;gt;&lt;br /&gt;
c/ CategoryNode &amp;lt;br /&amp;gt;&lt;br /&gt;
d/ PaletteSupport&amp;lt;br /&amp;gt;&lt;br /&gt;
e/ Shape&amp;lt;br /&amp;gt;&lt;br /&gt;
f/ ShapeChildren&amp;lt;br /&amp;gt;&lt;br /&gt;
g/ ShapeNode&amp;lt;br /&amp;gt;&lt;br /&gt;
h/ image1, image2, image3&amp;lt;br /&amp;gt;&lt;br /&gt;
po zobrazení NetBeans sa nám novo vytvorený package obnoví, a budeme tam mať načítané všetky vložené súbory, pričom niekde sa znovu objavia červené krúžky so žiarovkou, to si nevšímajme chvíľku&lt;br /&gt;
&lt;br /&gt;
3. Klikneme '''pravým na projekt--Properties--Libraries--Add''' a pridáme nasledujúce knižnice:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Actions APIs&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Nodes API&amp;lt;br /&amp;gt;&lt;br /&gt;
c/ Common Palette &amp;lt;br /&amp;gt;&lt;br /&gt;
Teraz by sme mali spozorovať, že všetky červené guličky nám zmiznú, a bude nám to vypadať nasledovne: &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb siedmy.png]]&lt;br /&gt;
&lt;br /&gt;
4. Teraz pridáme našu Palettu do ShapeTopComponentovho náhľadu, a to tak, že do konštruktoru ShapeTopComponent kod&lt;br /&gt;
     associateLookup( Lookups.fixed( new Object[] { PaletteSupport.createPalette() } ) );&lt;br /&gt;
&lt;br /&gt;
5. Znova sa nám objaví žltá žiarovka, klikneme na ňu dáme &amp;quot;Add import...&amp;quot;, následne sa tam objaví znova, čiže znova klikneme a dáme &amp;quot;Add import...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
6. Spustite modul znova(pravým--run), teraz by to už malo vypadať takto, no zatiaľ bez funkcionality, pretože potrebujeme Layer Widget: &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb osmy.png]]&lt;br /&gt;
&lt;br /&gt;
== Pridanie LayerWidget ==&lt;br /&gt;
&lt;br /&gt;
Pod pojmom LayerWidget si predstavte niečo priesvitné, na ktoré budeme môcť ukladať naše komponenty s paletty.&lt;br /&gt;
&lt;br /&gt;
1. Ná úrovni triedy GraphSceneImpl deklarujte náš LayerWidget&lt;br /&gt;
     private LayerWidget mainLayer;&lt;br /&gt;
&lt;br /&gt;
2. Do konštruktoru GraphSceneImpl pridajte LayerWidget ako dieťa našej scény:&lt;br /&gt;
     mainLayer = new LayerWidget (this);&lt;br /&gt;
     addChild (mainLayer);&lt;br /&gt;
&lt;br /&gt;
Teraz keď pridáme na scénu nejaký komponent s našej paletty , pridajú sa ako deti do našel mainLayer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pridanie IconNodeWidget (komponentu) cez funkcionalitu Drag and Drop (chyť a hoď) ==&lt;br /&gt;
&lt;br /&gt;
Doposiaľ, naša scéna existuje, ale nemá žiadnu funkcionalitu. Túto funkcionalitu pridáme pomocou '''&amp;quot;actions&amp;quot;'''. Action, ktorá nám umožnuje Drag &amp;amp; Drop funkcionalitu je '''AcceptAction''' . Táto action môže byť aplikovaná buď na náš komponent alebo na našu scénu. My ju budeme aplikovať na našu scénu. Využijeme '''createAcceptAction''' na to, aby sme definovali čo sa má stať po tom, ako je komponent pretiahnutý nad našu scénu.&lt;br /&gt;
&lt;br /&gt;
1. Najprv pridajte '''createAcceptAction''' spolu s jeho dvomi metódami do GraphSceneImpl konštruktoru:&lt;br /&gt;
   getActions().addAction(ActionFactory.createAcceptAction(new AcceptProvider() {&lt;br /&gt;
    public ConnectorState isAcceptable(Widget widget, Point point, Transferable transferable) {&lt;br /&gt;
        Image dragImage = getImageFromTransferable(transferable);&lt;br /&gt;
        JComponent view = getView();&lt;br /&gt;
        Graphics2D g2 = (Graphics2D) view.getGraphics();&lt;br /&gt;
        Rectangle visRect = view.getVisibleRect();&lt;br /&gt;
        view.paintImmediately(visRect.x, visRect.y, visRect.width, visRect.height);&lt;br /&gt;
        g2.drawImage(dragImage,&lt;br /&gt;
                AffineTransform.getTranslateInstance(point.getLocation().getX(),&lt;br /&gt;
                point.getLocation().getY()),&lt;br /&gt;
                null);&lt;br /&gt;
        return ConnectorState.ACCEPT;&lt;br /&gt;
    }&lt;br /&gt;
    public void accept(Widget widget, Point point, Transferable transferable) {&lt;br /&gt;
        Image image = getImageFromTransferable(transferable);&lt;br /&gt;
        Widget w = GraphSceneImpl.this.addNode(new MyNode(image));&lt;br /&gt;
        w.setPreferredLocation(widget.convertLocalToScene(point));&lt;br /&gt;
    }&lt;br /&gt;
    }));&lt;br /&gt;
&lt;br /&gt;
Objaví sa nám viacero chýb, a to z toho dôvodu, že sme použili aj metody, ktoré zatiaľ nie sú definované, čiže si chvíľku nevšímajme tieto errory.&lt;br /&gt;
&lt;br /&gt;
2. Teraz do triedy '''GraphSceneImpl''' pridáme pomocnú metódu na získavanie obrázkov:&lt;br /&gt;
   private Image getImageFromTransferable(Transferable transferable) {&lt;br /&gt;
    Object o = null;&lt;br /&gt;
    try {&lt;br /&gt;
        o = transferable.getTransferData(DataFlavor.imageFlavor);&lt;br /&gt;
    } catch (IOException ex) {&lt;br /&gt;
        ex.printStackTrace();&lt;br /&gt;
    } catch (UnsupportedFlavorException ex) {&lt;br /&gt;
        ex.printStackTrace();&lt;br /&gt;
    }&lt;br /&gt;
    return o instanceof Image ? (Image) o : ImageUtilities.loadImage(&amp;quot;org/netbeans/shapesample/palette/shape1.png&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
Ako vidíme, je tu ošetrená chyba, čiže môžete do org.netbeans.shapesample.palette doplniť obrázok, ktorý sa má objaviť pri chybe, dajte mu meno shape1.png&lt;br /&gt;
&lt;br /&gt;
3. Z dôvodu toho, že máme len 3 obrázky, mohli by sme vytvoriť akoby len 3 prvky, preto si vytvoríme novú triedu s názvom '''MyNode'''. Klikneme na náš '''package shapesample pravým--new---java class''' a bude vypadať takto:&lt;br /&gt;
    public class MyNode {    &lt;br /&gt;
    private Image image;&lt;br /&gt;
    &lt;br /&gt;
    public MyNode(Image image) {&lt;br /&gt;
        this.image = image;&lt;br /&gt;
    }    &lt;br /&gt;
    public Image getImage() {&lt;br /&gt;
        return image;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
Klikneme na žltú žiarovku v tejto triede a dáme '''&amp;quot;Add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
4. Zmeníme teraz v triede '''GraphSceneImpl''' rodiča, od ktorého dedí, čiže jeden z prvý riadkov bude vypadať takto:&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&amp;lt;MyNode, String&amp;gt;{...telo triedy...}&lt;br /&gt;
čím sme zabezpečili, že naša Node je prijatá  cez Visual Library. Teraz sa nám objaví žltá žiarovka aj pri tomto riadku, lebo teraz musíme dediť iné abstraktné metódy, '''čiže klikneme na ňu --implement all abstract methods'''&lt;br /&gt;
5. Kedže používame generics, tak klikneme '''pravým na náš projekt--properties--sources''' a presvedčíme sa, že tam máme hodnotu  '''Source level = 1.5'''&lt;br /&gt;
&lt;br /&gt;
6. Následne definujeme náš nový Widget (komponent) v triede '''GraphSceneImpl''' a to tak, že tam nájdeme metódu '''protected Widget attachNodeWidget(MyNode node)''' a upravíme ju nasledovne:&lt;br /&gt;
     protected Widget attachNodeWidget(MyNode node) {&lt;br /&gt;
       IconNodeWidget widget = new IconNodeWidget(this);&lt;br /&gt;
       widget.setImage(node.getImage());&lt;br /&gt;
       widget.setLabel(Long.toString(node.hashCode()));&lt;br /&gt;
       widget.getActions().addAction(ActionFactory.createMoveAction());&lt;br /&gt;
       mainLayer.addChild(widget);&lt;br /&gt;
       return widget;&lt;br /&gt;
     }&lt;br /&gt;
Týmto nášmu Widgetu nastavíme obrázok, a priradíme mu veľké náhodné číslo, a ešte možnosť posúvať ho po našej scéne, a následne po zastavení ho pridať znova ako child.&lt;br /&gt;
&lt;br /&gt;
7. Ešte stále nám ostáva pár žltých žiaroviek, takže klikneme na každú z nich, ktorá tam bude a dáme '''&amp;quot;Add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
8. Spustíme náš projekt, a už uvidíme, že je možné presúvať komponenty (Widgety) z našej paletty na našu scénku:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pridanie funkcionality pre našu scénu ==&lt;br /&gt;
1.Teraz pridáme najprv ZOOMaction na našu scénku a to tak, že na koniec '''GraphSceneImpl''' konštruktoru pridáme:&lt;br /&gt;
    getActions().addAction(ActionFactory.createZoomAction());&lt;br /&gt;
&lt;br /&gt;
Keď spustíme teraz náš projekt, tak pri pridržaní ctrl+ kolieško myši sa nám bude zoomovať naša plocha&lt;br /&gt;
&lt;br /&gt;
2. Pridaním riadku za predošlým :&lt;br /&gt;
    getActions().addAction(ActionFactory.createPanAction());&lt;br /&gt;
Pridáme funkcionalitu, že keď user potlačí kolečko myši, tak potom môže hýbať do hociktorého smeru.&lt;br /&gt;
&lt;br /&gt;
== Pridanie funkcinality pre IconNodeWidget ==&lt;br /&gt;
Pre IconNodeWidget sme už pridali funcionalitu pre hýbanie '''MoveAction'''. Tak isto sme schopný pridať aj funkcionalitu pre '''HoverAction, SelectAction, a InplaceEditorAction''', v poradí (nadídenie, vybranie, premenovanie)&lt;br /&gt;
1. Najprv na úrovni triedy definujte &lt;br /&gt;
   private WidgetAction editorAction = ActionFactory.createInplaceEditorAction(new LabelTextFieldEditor());&lt;br /&gt;
Následne sa objaví znova žltá žiarovka, najprv dajte '''&amp;quot;Add import...&amp;quot;''', následne dajte '''&amp;quot;Create class LabelTextFieldEditor...&amp;quot;''' , čo nám pridá do nášho package triedu.&lt;br /&gt;
2.Telo tejto triedy '''LabelTextFieldEditor''' zmeníme nasledovne:&lt;br /&gt;
    class LabelTextFieldEditor implements TextFieldInplaceEditor {&lt;br /&gt;
    public boolean isEnabled(Widget widget) {&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
    public String getText(Widget widget) {&lt;br /&gt;
        return ((LabelWidget) widget).getLabel();&lt;br /&gt;
    }&lt;br /&gt;
    public void setText(Widget widget, String text) {&lt;br /&gt;
        ((LabelWidget) widget).setLabel(text);&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
Znovu sa v tejto triede objaví zopár žltých žiaroviek, poklikajte na '''&amp;quot;add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
3. Následne priradíme editorAction nášmu IconNodeWidget, a to tak, že na koniec metódy '''protected Widget attachNodeWidget(MyNode node)''' triedy '''GraphSceneImpl''' vložíme tesne nad riadok ''' mainLayer.addChild(widget);''' nasledujúci kód:&lt;br /&gt;
    widget.getLabelWidget().getActions().addAction(editorAction);&lt;br /&gt;
&lt;br /&gt;
4. Následne Hower, Clicked action dolníme tak, že po vyššie doplnenom riadku dáme tieto dva:&lt;br /&gt;
    widget.getActions().addAction(createSelectAction());&lt;br /&gt;
    widget.getActions().addAction(createObjectHoverAction());&lt;br /&gt;
&lt;br /&gt;
5. Teraz musíme trochu premyslieť poradie, v ktorom sme akcie pridali, info tu [http://bits.netbeans.org/dev/javadoc/org-netbeans-api-visual/org/netbeans/api/visual/widget/doc-files/documentation.html#OrderOfActions]&lt;br /&gt;
A následne bude naša metóda '''protected Widget attachNodeWidget''' vypadať nasledovne&lt;br /&gt;
    protected Widget attachNodeWidget(MyNode node) {&lt;br /&gt;
        IconNodeWidget widget = new IconNodeWidget(this);&lt;br /&gt;
        widget.setImage(node.getImage());&lt;br /&gt;
        widget.setLabel(Long.toString(node.hashCode()));&lt;br /&gt;
        //double-click, event sa spustí len pri doubleclicku:&lt;br /&gt;
        widget.getLabelWidget().getActions().addAction(editorAction);&lt;br /&gt;
        //single-click, event sa spustí pri single clicku&lt;br /&gt;
        widget.getActions().addAction(createSelectAction());&lt;br /&gt;
        //mouse-dragged&lt;br /&gt;
        widget.getActions().addAction(ActionFactory.createMoveAction());&lt;br /&gt;
        //mouse-over,&lt;br /&gt;
        widget.getActions().addAction(createObjectHoverAction());&lt;br /&gt;
        mainLayer.addChild(widget);&lt;br /&gt;
        return widget;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
6. Po spustení to bude môcť vypadať takto napr.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb desat.png]]&lt;br /&gt;
&lt;br /&gt;
== Záver a riešenie problémov ==&lt;br /&gt;
&lt;br /&gt;
Ukázali sme v skutku len veľmi strohú ukážku, čo by sa s NetBeans dalo spraviť, ale keďže je to problematika, ktorou by sa mali zaoberať knihy pre pokročilejších programátorov, tak tu skončíme.&lt;br /&gt;
&lt;br /&gt;
V prípade nejasností je vždy dobré sa obráti na stránku NetBeans tutorials [http://netbeans.org/kb/trails/platform.html]&lt;br /&gt;
&lt;br /&gt;
V prípade problémov, resp. riešenia chýb uvedeného návodu, '''odporúčam použiť VYTVORENY FUNKCNY MODUL'''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Download:''' [http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=14027]&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Inštalácia:''' Spustite '''NetBeans--Tools--Plugins--kliknite Downloaded--Add Plugins...--nájdite stiahnutý--install'''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Spustenie pluginu:''' '''Spustite NetBeans--File--New Project--Samples--NetBeansModule--Visual Library Demo'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
V prípade nejasností, je tam všetko štruktúrované ako v našom návode, čiže by ste tam mali nájsť svoju chybu dosť rýchlo a prehľadne.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zdroj:[http://platform.netbeans.org/tutorials/nbm-visual_library.html]&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3858</id>
		<title>Základy práce s NetBeans IDE a vývoj modulov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3858"/>
		<updated>2010-04-26T06:38:58Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: /* Záver a riešenie problémov */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== NetBeans IDE ==&lt;br /&gt;
NetBeans je krásne vývojové prostredie, ktorého hlavnou výhodou je jeho modulárna architektúra. Ďalším skvelým prvkom je, že sa spolieha na toolkit SWING UI, čo nám dokopy dáva obrovské výhody.&lt;br /&gt;
&lt;br /&gt;
V tomto článku sa posnažím ukázať, ako možno vytvoriť jednoduchý modul pre NetBeans, ktorý bude iba strohá ukážka toho, čo sa s NetBeans dá robit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Požiadavky na postup článkom ==&lt;br /&gt;
1. NetBeans IDE ( použitá verzia 6.8 )&amp;lt;br /&amp;gt;&lt;br /&gt;
2. Java_jdk ( použitá verzia 1.6.0.18 ) &amp;lt;br /&amp;gt;&lt;br /&gt;
3. Základné znalosti jazyka JAVA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie a spustenie projektu ==&lt;br /&gt;
1. Začneme  spustením  Netbeans  a  zvolíme  '''File--New Project--NetBeans Modules--Module'''&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb prvy.png]]&lt;br /&gt;
&lt;br /&gt;
2. Klikneme na tlačítko &amp;quot;NEXT&amp;quot;, pomenujeme si náš projekt napr. &amp;quot;ShapeSample&amp;quot;, nastavíme ho ako &amp;quot;'''main project'''&amp;quot; a vyberieme si umiestnenie, kde ho chceme uložiť a ponecháme '''Standalone Module'''&lt;br /&gt;
[[Súbor:Ytb druhy.png]]&lt;br /&gt;
&lt;br /&gt;
3. Klikneme &amp;quot;NEXT&amp;quot;, zadáme do &amp;quot;Code Name Base&amp;quot; '''org.netbeans.shapesample''', a dôležité, klikneme na '''Generate XML Layer'''. Následne klikneme na tlačítko finish, a vytvorí sa nám projekt.&lt;br /&gt;
[[Súbor:Ytb treti.png]]&lt;br /&gt;
&lt;br /&gt;
4. V okne &amp;quot;Project&amp;quot; , '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--Properties--Libraries'''. Module Dependencies klikneme na tlačítko &amp;quot;ADD&amp;quot; a pridáme:&amp;lt;br /&amp;gt;&lt;br /&gt;
''a/ Visual Library API &amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Utilities API &amp;lt;br /&amp;gt;''&lt;br /&gt;
Klikneme na tlačítko OK, čo nám pridá odkazy.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Znova v &amp;quot;Project&amp;quot; window '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--New--Other--Module Development--Window Component''' , klikneme &amp;quot;NEXT&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6. Ako Windows Position dáme '''editor''' a zaškrtneme '''Open on application start''' a klikneme &amp;quot;NEXT&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7.Do políčka &amp;quot;Class Name Prefix&amp;quot; dopíšeme '''Shape''', klikneme na tlačítko &amp;quot;FINISH&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. Vygeneruje sa nám viacero súbor, jedným z nich je '''ShapeTopComponent''', 2krát naň klikneme a otvoríme ho v design view.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. V design view, pravým klikneme na okno akoby a dáme '''Set Layout--Border Layout'''&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb stvrty.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie scény ==&lt;br /&gt;
1. Využijeme okno &amp;quot;'''Pallete'''&amp;quot; (ak nie je zobrazené dáme window---pallete) a vložíme na naš layout '''ScrollPane'''. V okne &amp;quot;Inspector&amp;quot; klikneme pravým na jScrollPane1--Change Variable Name a nastavíme hodnotu na &amp;quot;shapePane&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
2.V &amp;quot;Project&amp;quot; windows na zložku''' org--netbeans--shapesample''' klikneme pravým a dáme '''new--Java Class''', pomenujme ju &amp;quot;'''GraphSceneImpl'''&amp;quot;, a po vytvorení dopíšme do triedy '''extends GraphScene'''&lt;br /&gt;
&lt;br /&gt;
3. Žltá žiarovka s červeným výkričníkom sa nám objaví naľavo v editore, klikneme na ňu, a dáme &amp;quot;'''add Import...'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
Následne sa dám objaví ďalšia žltá žiarovka, klikneme na ňu a dáme &amp;quot;'''Implement all abstract methods'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb piaty.png]]&lt;br /&gt;
&lt;br /&gt;
4. Pre lepšiu orientáciu zmeníme názvy parametrov vygenerovaných NetBeans, a po úprave bude naša trieda vypadať takto:&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
    public GraphSceneImpl() {&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachNodeWidget(Object node) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachEdgeWidget(Object edge) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeSourceAnchor(Object edge, Object oldSourceNode, Object newSourceNode) {&lt;br /&gt;
    &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeTargetAnchor(Object edge, Object oldTargetNode, Object newTargetNode) {&lt;br /&gt;
            &lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
5.Vrátime sa k ShapeTopComponent, kde sa budeme starať o instanciu GraphSceneImpl , prepneme Design View na SourceView, a nájdeme jeho konštruktor. Do tela konštruktora doplnime nasledujúce riadky:&lt;br /&gt;
     GraphSceneImpl scene = new GraphSceneImpl();&lt;br /&gt;
     myView = scene.createView();     &lt;br /&gt;
     shapePane.setViewportView(myView);&lt;br /&gt;
     add(scene.createSatelliteView(), BorderLayout.WEST);  &lt;br /&gt;
&lt;br /&gt;
Týmto sme vytvorili 2 náhľady, jeden veľký, a jeden akoby informačný na ľavej strane, ktorý pomôže používateľovi rýchlejšie sa pohybovať po väčšom rozpätí.&lt;br /&gt;
&lt;br /&gt;
6. Na '''úrovni triedy ShapeTopComponent'''  deklarujeme (doplníme napr. hneď nad konštruktor)&lt;br /&gt;
    private JComponent myView;&lt;br /&gt;
&lt;br /&gt;
Ostanú nám ešte 2 žlté žiarovky, klikneme na každú z nich, a dáme &amp;quot;'''Add Import...'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
7. Teraz musíme ošetriť, že ak sa NetBeans IDE reštartuje, nemáme žiadny dôvod aby ShapeTopComponent pretrvával, čiže nájdeme metódu '''getPersistenceType()''' v tele triedy, a zmeníme ju nasledovne:&lt;br /&gt;
   public int getPersistenceType() {&lt;br /&gt;
       return TopComponent.PERSISTENCE_NEVER;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
8. Klikneme v &amp;quot;Project&amp;quot; window na náš projekt '''ShapeSample pravým--run'''&lt;br /&gt;
&lt;br /&gt;
9. Nezlaknite sa, spustí sa nová inštancia NetBeans IDE(ak nie je náš projekt už otvorený kliknite na '''window---Shape''') a zobrazí sa Vám niečo takéto:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb siesty.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytváranie Palety pre našu scénu ==&lt;br /&gt;
&lt;br /&gt;
Teraz aby sme pokračovali niečím užitočným, vytvoríme si palletu, na čo využijeme Pallete API, ktorá bude obsahovať komponenty, ktoré môžeme použiť a pridať na našu scénu pretiahnutím.&lt;br /&gt;
Pre ďalšie pokračovanie budeme potrebovať 3 obrázky našich komponentov, použime tieto(kliknite pravým---uložiť ako, nemente názvy):&lt;br /&gt;
[[Súbor:Image1.png]][[Súbor:Image2.png]][[Súbor:Image3.png]]&lt;br /&gt;
&lt;br /&gt;
'''Keďže náš tutoriál sa zaoberá s Visual Library API, a nie s Palette API(info tu:[http://netbeans.org/kb/trails/platform.html] ), na funkcionalitu Paletty použijeme už hotové knižnice, ktoré stiahnete tu''':&lt;br /&gt;
[http://www.sendspace.com/file/dqtnbi]  (v prípade, že je link nefunkčný, na konci článku je hotový plugin pre tento modul, knižnice vytiahnite z neho)&lt;br /&gt;
&lt;br /&gt;
1. Klikneme na náš projekt pravým--new--Java Package a pomenujeme ho '''org.netbeans.shapesample.palette'''&lt;br /&gt;
2. Teraz podme do zložky, kde sme nás projekt uložili, konkrétne   '''násProjekt/src/org/netbeans/shapesample/pallete'''. A do tejto''' zložky nakopírujeme stiahnuté obrázky a následne aj knižnice''', čiže tieto súbory:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Category&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ CategoryChildren &amp;lt;br /&amp;gt;&lt;br /&gt;
c/ CategoryNode &amp;lt;br /&amp;gt;&lt;br /&gt;
d/ PaletteSupport&amp;lt;br /&amp;gt;&lt;br /&gt;
e/ Shape&amp;lt;br /&amp;gt;&lt;br /&gt;
f/ ShapeChildren&amp;lt;br /&amp;gt;&lt;br /&gt;
g/ ShapeNode&amp;lt;br /&amp;gt;&lt;br /&gt;
h/ image1, image2, image3&amp;lt;br /&amp;gt;&lt;br /&gt;
po zobrazení NetBeans sa nám novo vytvorený package obnoví, a budeme tam mať načítané všetky vložené súbory, pričom niekde sa znovu objavia červené krúžky so žiarovkou, to si nevšímajme chvíľku&lt;br /&gt;
&lt;br /&gt;
3. Klikneme '''pravým na projekt--Properties--Libraries--Add''' a pridáme nasledujúce knižnice:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Actions APIs&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Nodes API&amp;lt;br /&amp;gt;&lt;br /&gt;
c/ Common Palette &amp;lt;br /&amp;gt;&lt;br /&gt;
Teraz by sme mali spozorovať, že všetky červené guličky nám zmiznú, a bude nám to vypadať nasledovne: &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb siedmy.png]]&lt;br /&gt;
&lt;br /&gt;
4. Teraz pridáme našu Palettu do ShapeTopComponentovho náhľadu, a to tak, že do konštruktoru ShapeTopComponent kod&lt;br /&gt;
     associateLookup( Lookups.fixed( new Object[] { PaletteSupport.createPalette() } ) );&lt;br /&gt;
&lt;br /&gt;
5. Znova sa nám objaví žltá žiarovka, klikneme na ňu dáme &amp;quot;Add import...&amp;quot;, následne sa tam objaví znova, čiže znova klikneme a dáme &amp;quot;Add import...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
6. Spustite modul znova(pravým--run), teraz by to už malo vypadať takto, no zatiaľ bez funkcionality, pretože potrebujeme Layer Widget: &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb osmy.png]]&lt;br /&gt;
&lt;br /&gt;
== Pridanie LayerWidget ==&lt;br /&gt;
&lt;br /&gt;
Pod pojmom LayerWidget si predstavte niečo priesvitné, na ktoré budeme môcť ukladať naše komponenty s paletty.&lt;br /&gt;
&lt;br /&gt;
1. Ná úrovni triedy GraphSceneImpl deklarujte náš LayerWidget&lt;br /&gt;
     private LayerWidget mainLayer;&lt;br /&gt;
&lt;br /&gt;
2. Do konštruktoru GraphSceneImpl pridajte LayerWidget ako dieťa našej scény:&lt;br /&gt;
     mainLayer = new LayerWidget (this);&lt;br /&gt;
     addChild (mainLayer);&lt;br /&gt;
&lt;br /&gt;
Teraz keď pridáme na scénu nejaký komponent s našej paletty , pridajú sa ako deti do našel mainLayer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pridanie IconNodeWidget (komponentu) cez funkcionalitu Drag and Drop (chyť a hoď) ==&lt;br /&gt;
&lt;br /&gt;
Doposiaľ, naša scéna existuje, ale nemá žiadnu funkcionalitu. Túto funkcionalitu pridáme pomocou '''&amp;quot;actions&amp;quot;'''. Action, ktorá nám umožnuje Drag &amp;amp; Drop funkcionalitu je '''AcceptAction''' . Táto action môže byť aplikovaná buď na náš komponent alebo na našu scénu. My ju budeme aplikovať na našu scénu. Využijeme '''createAcceptAction''' na to, aby sme definovali čo sa má stať po tom, ako je komponent pretiahnutý nad našu scénu.&lt;br /&gt;
&lt;br /&gt;
1. Najprv pridajte '''createAcceptAction''' spolu s jeho dvomi metódami do GraphSceneImpl konštruktoru:&lt;br /&gt;
   getActions().addAction(ActionFactory.createAcceptAction(new AcceptProvider() {&lt;br /&gt;
    public ConnectorState isAcceptable(Widget widget, Point point, Transferable transferable) {&lt;br /&gt;
        Image dragImage = getImageFromTransferable(transferable);&lt;br /&gt;
        JComponent view = getView();&lt;br /&gt;
        Graphics2D g2 = (Graphics2D) view.getGraphics();&lt;br /&gt;
        Rectangle visRect = view.getVisibleRect();&lt;br /&gt;
        view.paintImmediately(visRect.x, visRect.y, visRect.width, visRect.height);&lt;br /&gt;
        g2.drawImage(dragImage,&lt;br /&gt;
                AffineTransform.getTranslateInstance(point.getLocation().getX(),&lt;br /&gt;
                point.getLocation().getY()),&lt;br /&gt;
                null);&lt;br /&gt;
        return ConnectorState.ACCEPT;&lt;br /&gt;
    }&lt;br /&gt;
    public void accept(Widget widget, Point point, Transferable transferable) {&lt;br /&gt;
        Image image = getImageFromTransferable(transferable);&lt;br /&gt;
        Widget w = GraphSceneImpl.this.addNode(new MyNode(image));&lt;br /&gt;
        w.setPreferredLocation(widget.convertLocalToScene(point));&lt;br /&gt;
    }&lt;br /&gt;
    }));&lt;br /&gt;
&lt;br /&gt;
Objaví sa nám viacero chýb, a to z toho dôvodu, že sme použili aj metody, ktoré zatiaľ nie sú definované, čiže si chvíľku nevšímajme tieto errory.&lt;br /&gt;
&lt;br /&gt;
2. Teraz do triedy '''GraphSceneImpl''' pridáme pomocnú metódu na získavanie obrázkov:&lt;br /&gt;
   private Image getImageFromTransferable(Transferable transferable) {&lt;br /&gt;
    Object o = null;&lt;br /&gt;
    try {&lt;br /&gt;
        o = transferable.getTransferData(DataFlavor.imageFlavor);&lt;br /&gt;
    } catch (IOException ex) {&lt;br /&gt;
        ex.printStackTrace();&lt;br /&gt;
    } catch (UnsupportedFlavorException ex) {&lt;br /&gt;
        ex.printStackTrace();&lt;br /&gt;
    }&lt;br /&gt;
    return o instanceof Image ? (Image) o : ImageUtilities.loadImage(&amp;quot;org/netbeans/shapesample/palette/shape1.png&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
Ako vidíme, je tu ošetrená chyba, čiže môžete do org.netbeans.shapesample.palette doplniť obrázok, ktorý sa má objaviť pri chybe, dajte mu meno shape1.png&lt;br /&gt;
&lt;br /&gt;
3. Z dôvodu toho, že máme len 3 obrázky, mohli by sme vytvoriť akoby len 3 prvky, preto si vytvoríme novú triedu s názvom '''MyNode'''. Klikneme na náš '''package shapesample pravým--new---java class''' a bude vypadať takto:&lt;br /&gt;
    public class MyNode {    &lt;br /&gt;
    private Image image;&lt;br /&gt;
    &lt;br /&gt;
    public MyNode(Image image) {&lt;br /&gt;
        this.image = image;&lt;br /&gt;
    }    &lt;br /&gt;
    public Image getImage() {&lt;br /&gt;
        return image;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
Klikneme na žltú žiarovku v tejto triede a dáme '''&amp;quot;Add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
4. Zmeníme teraz v triede '''GraphSceneImpl''' rodiča, od ktorého dedí, čiže jeden z prvý riadkov bude vypadať takto:&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&amp;lt;MyNode, String&amp;gt;{...telo triedy...}&lt;br /&gt;
čím sme zabezpečili, že naša Node je prijatá  cez Visual Library. Teraz sa nám objaví žltá žiarovka aj pri tomto riadku, lebo teraz musíme dediť iné abstraktné metódy, '''čiže klikneme na ňu --implement all abstract methods'''&lt;br /&gt;
5. Kedže používame generics, tak klikneme '''pravým na náš projekt--properties--sources''' a presvedčíme sa, že tam máme hodnotu  '''Source level = 1.5'''&lt;br /&gt;
&lt;br /&gt;
6. Následne definujeme náš nový Widget (komponent) v triede '''GraphSceneImpl''' a to tak, že tam nájdeme metódu '''protected Widget attachNodeWidget(MyNode node)''' a upravíme ju nasledovne:&lt;br /&gt;
     protected Widget attachNodeWidget(MyNode node) {&lt;br /&gt;
       IconNodeWidget widget = new IconNodeWidget(this);&lt;br /&gt;
       widget.setImage(node.getImage());&lt;br /&gt;
       widget.setLabel(Long.toString(node.hashCode()));&lt;br /&gt;
       widget.getActions().addAction(ActionFactory.createMoveAction());&lt;br /&gt;
       mainLayer.addChild(widget);&lt;br /&gt;
       return widget;&lt;br /&gt;
     }&lt;br /&gt;
Týmto nášmu Widgetu nastavíme obrázok, a priradíme mu veľké náhodné číslo, a ešte možnosť posúvať ho po našej scéne, a následne po zastavení ho pridať znova ako child.&lt;br /&gt;
&lt;br /&gt;
7. Ešte stále nám ostáva pár žltých žiaroviek, takže klikneme na každú z nich, ktorá tam bude a dáme '''&amp;quot;Add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
8. Spustíme náš projekt, a už uvidíme, že je možné presúvať komponenty (Widgety) z našej paletty na našu scénku:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pridanie funkcionality pre našu scénu ==&lt;br /&gt;
1.Teraz pridáme najprv ZOOMaction na našu scénku a to tak, že na koniec '''GraphSceneImpl''' konštruktoru pridáme:&lt;br /&gt;
    getActions().addAction(ActionFactory.createZoomAction());&lt;br /&gt;
&lt;br /&gt;
Keď spustíme teraz náš projekt, tak pri pridržaní ctrl+ kolieško myši sa nám bude zoomovať naša plocha&lt;br /&gt;
&lt;br /&gt;
2. Pridaním riadku za predošlým :&lt;br /&gt;
    getActions().addAction(ActionFactory.createPanAction());&lt;br /&gt;
Pridáme funkcionalitu, že keď user potlačí kolečko myši, tak potom môže hýbať do hociktorého smeru.&lt;br /&gt;
&lt;br /&gt;
== Pridanie funkcinality pre IconNodeWidget ==&lt;br /&gt;
Pre IconNodeWidget sme už pridali funcionalitu pre hýbanie '''MoveAction'''. Tak isto sme schopný pridať aj funkcionalitu pre '''HoverAction, SelectAction, a InplaceEditorAction''', v poradí (nadídenie, vybranie, premenovanie)&lt;br /&gt;
1. Najprv na úrovni triedy definujte &lt;br /&gt;
   private WidgetAction editorAction = ActionFactory.createInplaceEditorAction(new LabelTextFieldEditor());&lt;br /&gt;
Následne sa objaví znova žltá žiarovka, najprv dajte '''&amp;quot;Add import...&amp;quot;''', následne dajte '''&amp;quot;Create class LabelTextFieldEditor...&amp;quot;''' , čo nám pridá do nášho package triedu.&lt;br /&gt;
2.Telo tejto triedy '''LabelTextFieldEditor''' zmeníme nasledovne:&lt;br /&gt;
    class LabelTextFieldEditor implements TextFieldInplaceEditor {&lt;br /&gt;
    public boolean isEnabled(Widget widget) {&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
    public String getText(Widget widget) {&lt;br /&gt;
        return ((LabelWidget) widget).getLabel();&lt;br /&gt;
    }&lt;br /&gt;
    public void setText(Widget widget, String text) {&lt;br /&gt;
        ((LabelWidget) widget).setLabel(text);&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
Znovu sa v tejto triede objaví zopár žltých žiaroviek, poklikajte na '''&amp;quot;add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
3. Následne priradíme editorAction nášmu IconNodeWidget, a to tak, že na koniec metódy '''protected Widget attachNodeWidget(MyNode node)''' triedy '''GraphSceneImpl''' vložíme tesne nad riadok ''' mainLayer.addChild(widget);''' nasledujúci kód:&lt;br /&gt;
    widget.getLabelWidget().getActions().addAction(editorAction);&lt;br /&gt;
&lt;br /&gt;
4. Následne Hower, Clicked action dolníme tak, že po vyššie doplnenom riadku dáme tieto dva:&lt;br /&gt;
    widget.getActions().addAction(createSelectAction());&lt;br /&gt;
    widget.getActions().addAction(createObjectHoverAction());&lt;br /&gt;
&lt;br /&gt;
5. Teraz musíme trochu premyslieť poradie, v ktorom sme akcie pridali, info tu [http://bits.netbeans.org/dev/javadoc/org-netbeans-api-visual/org/netbeans/api/visual/widget/doc-files/documentation.html#OrderOfActions]&lt;br /&gt;
A následne bude naša metóda '''protected Widget attachNodeWidget''' vypadať nasledovne&lt;br /&gt;
    protected Widget attachNodeWidget(MyNode node) {&lt;br /&gt;
        IconNodeWidget widget = new IconNodeWidget(this);&lt;br /&gt;
        widget.setImage(node.getImage());&lt;br /&gt;
        widget.setLabel(Long.toString(node.hashCode()));&lt;br /&gt;
        //double-click, event sa spustí len pri doubleclicku:&lt;br /&gt;
        widget.getLabelWidget().getActions().addAction(editorAction);&lt;br /&gt;
        //single-click, event sa spustí pri single clicku&lt;br /&gt;
        widget.getActions().addAction(createSelectAction());&lt;br /&gt;
        //mouse-dragged&lt;br /&gt;
        widget.getActions().addAction(ActionFactory.createMoveAction());&lt;br /&gt;
        //mouse-over,&lt;br /&gt;
        widget.getActions().addAction(createObjectHoverAction());&lt;br /&gt;
        mainLayer.addChild(widget);&lt;br /&gt;
        return widget;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
6. Po spustení to bude môcť vypadať takto napr.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb desat.png]]&lt;br /&gt;
&lt;br /&gt;
== Záver a riešenie problémov ==&lt;br /&gt;
&lt;br /&gt;
Ukázali sme v skutku len veľmi strohú ukážku, čo by sa s NetBeans dalo spraviť, ale keďže je to problematika, ktorou by sa mali zaoberať knihy pre pokročilejších programátorov, tak tu skončíme.&lt;br /&gt;
&lt;br /&gt;
V prípade nejasností je vždy dobré sa obráti na stránku NetBeans tutorials [http://netbeans.org/kb/trails/platform.html]&lt;br /&gt;
&lt;br /&gt;
V prípade problémov, resp. riešenia chýb uvedeného návodu, '''odporúčam použiť VYTVORENY FUNKCNY MODUL'''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Download:''' [http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=14027]&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Inštalácia:''' Spustite '''NetBeans--Tools--Plugins--kliknite Downloaded--Add Plugins...--nájdite stiahnutý--install'''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Spustenie pluginu:''' '''Spustite NetBeans--File--New Project--Samples--NetBeansModule--Visual Library Demo'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
V prípade nejasností, je tam všetko štruktúrované ako v našom návode, čiže by ste tam mali nájsť svoju chybu dosť rýchlo a prehľadne.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''ENJOY!'''&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zdroj:[http://platform.netbeans.org/tutorials/nbm-visual_library.html]&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3857</id>
		<title>Základy práce s NetBeans IDE a vývoj modulov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3857"/>
		<updated>2010-04-25T21:43:08Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: /* Vytváranie Palety pre našu scénu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== NetBeans IDE ==&lt;br /&gt;
NetBeans je krásne vývojové prostredie, ktorého hlavnou výhodou je jeho modulárna architektúra. Ďalším skvelým prvkom je, že sa spolieha na toolkit SWING UI, čo nám dokopy dáva obrovské výhody.&lt;br /&gt;
&lt;br /&gt;
V tomto článku sa posnažím ukázať, ako možno vytvoriť jednoduchý modul pre NetBeans, ktorý bude iba strohá ukážka toho, čo sa s NetBeans dá robit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Požiadavky na postup článkom ==&lt;br /&gt;
1. NetBeans IDE ( použitá verzia 6.8 )&amp;lt;br /&amp;gt;&lt;br /&gt;
2. Java_jdk ( použitá verzia 1.6.0.18 ) &amp;lt;br /&amp;gt;&lt;br /&gt;
3. Základné znalosti jazyka JAVA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie a spustenie projektu ==&lt;br /&gt;
1. Začneme  spustením  Netbeans  a  zvolíme  '''File--New Project--NetBeans Modules--Module'''&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb prvy.png]]&lt;br /&gt;
&lt;br /&gt;
2. Klikneme na tlačítko &amp;quot;NEXT&amp;quot;, pomenujeme si náš projekt napr. &amp;quot;ShapeSample&amp;quot;, nastavíme ho ako &amp;quot;'''main project'''&amp;quot; a vyberieme si umiestnenie, kde ho chceme uložiť a ponecháme '''Standalone Module'''&lt;br /&gt;
[[Súbor:Ytb druhy.png]]&lt;br /&gt;
&lt;br /&gt;
3. Klikneme &amp;quot;NEXT&amp;quot;, zadáme do &amp;quot;Code Name Base&amp;quot; '''org.netbeans.shapesample''', a dôležité, klikneme na '''Generate XML Layer'''. Následne klikneme na tlačítko finish, a vytvorí sa nám projekt.&lt;br /&gt;
[[Súbor:Ytb treti.png]]&lt;br /&gt;
&lt;br /&gt;
4. V okne &amp;quot;Project&amp;quot; , '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--Properties--Libraries'''. Module Dependencies klikneme na tlačítko &amp;quot;ADD&amp;quot; a pridáme:&amp;lt;br /&amp;gt;&lt;br /&gt;
''a/ Visual Library API &amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Utilities API &amp;lt;br /&amp;gt;''&lt;br /&gt;
Klikneme na tlačítko OK, čo nám pridá odkazy.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Znova v &amp;quot;Project&amp;quot; window '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--New--Other--Module Development--Window Component''' , klikneme &amp;quot;NEXT&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6. Ako Windows Position dáme '''editor''' a zaškrtneme '''Open on application start''' a klikneme &amp;quot;NEXT&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7.Do políčka &amp;quot;Class Name Prefix&amp;quot; dopíšeme '''Shape''', klikneme na tlačítko &amp;quot;FINISH&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. Vygeneruje sa nám viacero súbor, jedným z nich je '''ShapeTopComponent''', 2krát naň klikneme a otvoríme ho v design view.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. V design view, pravým klikneme na okno akoby a dáme '''Set Layout--Border Layout'''&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb stvrty.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie scény ==&lt;br /&gt;
1. Využijeme okno &amp;quot;'''Pallete'''&amp;quot; (ak nie je zobrazené dáme window---pallete) a vložíme na naš layout '''ScrollPane'''. V okne &amp;quot;Inspector&amp;quot; klikneme pravým na jScrollPane1--Change Variable Name a nastavíme hodnotu na &amp;quot;shapePane&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
2.V &amp;quot;Project&amp;quot; windows na zložku''' org--netbeans--shapesample''' klikneme pravým a dáme '''new--Java Class''', pomenujme ju &amp;quot;'''GraphSceneImpl'''&amp;quot;, a po vytvorení dopíšme do triedy '''extends GraphScene'''&lt;br /&gt;
&lt;br /&gt;
3. Žltá žiarovka s červeným výkričníkom sa nám objaví naľavo v editore, klikneme na ňu, a dáme &amp;quot;'''add Import...'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
Následne sa dám objaví ďalšia žltá žiarovka, klikneme na ňu a dáme &amp;quot;'''Implement all abstract methods'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb piaty.png]]&lt;br /&gt;
&lt;br /&gt;
4. Pre lepšiu orientáciu zmeníme názvy parametrov vygenerovaných NetBeans, a po úprave bude naša trieda vypadať takto:&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
    public GraphSceneImpl() {&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachNodeWidget(Object node) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachEdgeWidget(Object edge) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeSourceAnchor(Object edge, Object oldSourceNode, Object newSourceNode) {&lt;br /&gt;
    &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeTargetAnchor(Object edge, Object oldTargetNode, Object newTargetNode) {&lt;br /&gt;
            &lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
5.Vrátime sa k ShapeTopComponent, kde sa budeme starať o instanciu GraphSceneImpl , prepneme Design View na SourceView, a nájdeme jeho konštruktor. Do tela konštruktora doplnime nasledujúce riadky:&lt;br /&gt;
     GraphSceneImpl scene = new GraphSceneImpl();&lt;br /&gt;
     myView = scene.createView();     &lt;br /&gt;
     shapePane.setViewportView(myView);&lt;br /&gt;
     add(scene.createSatelliteView(), BorderLayout.WEST);  &lt;br /&gt;
&lt;br /&gt;
Týmto sme vytvorili 2 náhľady, jeden veľký, a jeden akoby informačný na ľavej strane, ktorý pomôže používateľovi rýchlejšie sa pohybovať po väčšom rozpätí.&lt;br /&gt;
&lt;br /&gt;
6. Na '''úrovni triedy ShapeTopComponent'''  deklarujeme (doplníme napr. hneď nad konštruktor)&lt;br /&gt;
    private JComponent myView;&lt;br /&gt;
&lt;br /&gt;
Ostanú nám ešte 2 žlté žiarovky, klikneme na každú z nich, a dáme &amp;quot;'''Add Import...'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
7. Teraz musíme ošetriť, že ak sa NetBeans IDE reštartuje, nemáme žiadny dôvod aby ShapeTopComponent pretrvával, čiže nájdeme metódu '''getPersistenceType()''' v tele triedy, a zmeníme ju nasledovne:&lt;br /&gt;
   public int getPersistenceType() {&lt;br /&gt;
       return TopComponent.PERSISTENCE_NEVER;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
8. Klikneme v &amp;quot;Project&amp;quot; window na náš projekt '''ShapeSample pravým--run'''&lt;br /&gt;
&lt;br /&gt;
9. Nezlaknite sa, spustí sa nová inštancia NetBeans IDE(ak nie je náš projekt už otvorený kliknite na '''window---Shape''') a zobrazí sa Vám niečo takéto:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb siesty.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytváranie Palety pre našu scénu ==&lt;br /&gt;
&lt;br /&gt;
Teraz aby sme pokračovali niečím užitočným, vytvoríme si palletu, na čo využijeme Pallete API, ktorá bude obsahovať komponenty, ktoré môžeme použiť a pridať na našu scénu pretiahnutím.&lt;br /&gt;
Pre ďalšie pokračovanie budeme potrebovať 3 obrázky našich komponentov, použime tieto(kliknite pravým---uložiť ako, nemente názvy):&lt;br /&gt;
[[Súbor:Image1.png]][[Súbor:Image2.png]][[Súbor:Image3.png]]&lt;br /&gt;
&lt;br /&gt;
'''Keďže náš tutoriál sa zaoberá s Visual Library API, a nie s Palette API(info tu:[http://netbeans.org/kb/trails/platform.html] ), na funkcionalitu Paletty použijeme už hotové knižnice, ktoré stiahnete tu''':&lt;br /&gt;
[http://www.sendspace.com/file/dqtnbi]  (v prípade, že je link nefunkčný, na konci článku je hotový plugin pre tento modul, knižnice vytiahnite z neho)&lt;br /&gt;
&lt;br /&gt;
1. Klikneme na náš projekt pravým--new--Java Package a pomenujeme ho '''org.netbeans.shapesample.palette'''&lt;br /&gt;
2. Teraz podme do zložky, kde sme nás projekt uložili, konkrétne   '''násProjekt/src/org/netbeans/shapesample/pallete'''. A do tejto''' zložky nakopírujeme stiahnuté obrázky a následne aj knižnice''', čiže tieto súbory:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Category&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ CategoryChildren &amp;lt;br /&amp;gt;&lt;br /&gt;
c/ CategoryNode &amp;lt;br /&amp;gt;&lt;br /&gt;
d/ PaletteSupport&amp;lt;br /&amp;gt;&lt;br /&gt;
e/ Shape&amp;lt;br /&amp;gt;&lt;br /&gt;
f/ ShapeChildren&amp;lt;br /&amp;gt;&lt;br /&gt;
g/ ShapeNode&amp;lt;br /&amp;gt;&lt;br /&gt;
h/ image1, image2, image3&amp;lt;br /&amp;gt;&lt;br /&gt;
po zobrazení NetBeans sa nám novo vytvorený package obnoví, a budeme tam mať načítané všetky vložené súbory, pričom niekde sa znovu objavia červené krúžky so žiarovkou, to si nevšímajme chvíľku&lt;br /&gt;
&lt;br /&gt;
3. Klikneme '''pravým na projekt--Properties--Libraries--Add''' a pridáme nasledujúce knižnice:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Actions APIs&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Nodes API&amp;lt;br /&amp;gt;&lt;br /&gt;
c/ Common Palette &amp;lt;br /&amp;gt;&lt;br /&gt;
Teraz by sme mali spozorovať, že všetky červené guličky nám zmiznú, a bude nám to vypadať nasledovne: &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb siedmy.png]]&lt;br /&gt;
&lt;br /&gt;
4. Teraz pridáme našu Palettu do ShapeTopComponentovho náhľadu, a to tak, že do konštruktoru ShapeTopComponent kod&lt;br /&gt;
     associateLookup( Lookups.fixed( new Object[] { PaletteSupport.createPalette() } ) );&lt;br /&gt;
&lt;br /&gt;
5. Znova sa nám objaví žltá žiarovka, klikneme na ňu dáme &amp;quot;Add import...&amp;quot;, následne sa tam objaví znova, čiže znova klikneme a dáme &amp;quot;Add import...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
6. Spustite modul znova(pravým--run), teraz by to už malo vypadať takto, no zatiaľ bez funkcionality, pretože potrebujeme Layer Widget: &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb osmy.png]]&lt;br /&gt;
&lt;br /&gt;
== Pridanie LayerWidget ==&lt;br /&gt;
&lt;br /&gt;
Pod pojmom LayerWidget si predstavte niečo priesvitné, na ktoré budeme môcť ukladať naše komponenty s paletty.&lt;br /&gt;
&lt;br /&gt;
1. Ná úrovni triedy GraphSceneImpl deklarujte náš LayerWidget&lt;br /&gt;
     private LayerWidget mainLayer;&lt;br /&gt;
&lt;br /&gt;
2. Do konštruktoru GraphSceneImpl pridajte LayerWidget ako dieťa našej scény:&lt;br /&gt;
     mainLayer = new LayerWidget (this);&lt;br /&gt;
     addChild (mainLayer);&lt;br /&gt;
&lt;br /&gt;
Teraz keď pridáme na scénu nejaký komponent s našej paletty , pridajú sa ako deti do našel mainLayer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pridanie IconNodeWidget (komponentu) cez funkcionalitu Drag and Drop (chyť a hoď) ==&lt;br /&gt;
&lt;br /&gt;
Doposiaľ, naša scéna existuje, ale nemá žiadnu funkcionalitu. Túto funkcionalitu pridáme pomocou '''&amp;quot;actions&amp;quot;'''. Action, ktorá nám umožnuje Drag &amp;amp; Drop funkcionalitu je '''AcceptAction''' . Táto action môže byť aplikovaná buď na náš komponent alebo na našu scénu. My ju budeme aplikovať na našu scénu. Využijeme '''createAcceptAction''' na to, aby sme definovali čo sa má stať po tom, ako je komponent pretiahnutý nad našu scénu.&lt;br /&gt;
&lt;br /&gt;
1. Najprv pridajte '''createAcceptAction''' spolu s jeho dvomi metódami do GraphSceneImpl konštruktoru:&lt;br /&gt;
   getActions().addAction(ActionFactory.createAcceptAction(new AcceptProvider() {&lt;br /&gt;
    public ConnectorState isAcceptable(Widget widget, Point point, Transferable transferable) {&lt;br /&gt;
        Image dragImage = getImageFromTransferable(transferable);&lt;br /&gt;
        JComponent view = getView();&lt;br /&gt;
        Graphics2D g2 = (Graphics2D) view.getGraphics();&lt;br /&gt;
        Rectangle visRect = view.getVisibleRect();&lt;br /&gt;
        view.paintImmediately(visRect.x, visRect.y, visRect.width, visRect.height);&lt;br /&gt;
        g2.drawImage(dragImage,&lt;br /&gt;
                AffineTransform.getTranslateInstance(point.getLocation().getX(),&lt;br /&gt;
                point.getLocation().getY()),&lt;br /&gt;
                null);&lt;br /&gt;
        return ConnectorState.ACCEPT;&lt;br /&gt;
    }&lt;br /&gt;
    public void accept(Widget widget, Point point, Transferable transferable) {&lt;br /&gt;
        Image image = getImageFromTransferable(transferable);&lt;br /&gt;
        Widget w = GraphSceneImpl.this.addNode(new MyNode(image));&lt;br /&gt;
        w.setPreferredLocation(widget.convertLocalToScene(point));&lt;br /&gt;
    }&lt;br /&gt;
    }));&lt;br /&gt;
&lt;br /&gt;
Objaví sa nám viacero chýb, a to z toho dôvodu, že sme použili aj metody, ktoré zatiaľ nie sú definované, čiže si chvíľku nevšímajme tieto errory.&lt;br /&gt;
&lt;br /&gt;
2. Teraz do triedy '''GraphSceneImpl''' pridáme pomocnú metódu na získavanie obrázkov:&lt;br /&gt;
   private Image getImageFromTransferable(Transferable transferable) {&lt;br /&gt;
    Object o = null;&lt;br /&gt;
    try {&lt;br /&gt;
        o = transferable.getTransferData(DataFlavor.imageFlavor);&lt;br /&gt;
    } catch (IOException ex) {&lt;br /&gt;
        ex.printStackTrace();&lt;br /&gt;
    } catch (UnsupportedFlavorException ex) {&lt;br /&gt;
        ex.printStackTrace();&lt;br /&gt;
    }&lt;br /&gt;
    return o instanceof Image ? (Image) o : ImageUtilities.loadImage(&amp;quot;org/netbeans/shapesample/palette/shape1.png&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
Ako vidíme, je tu ošetrená chyba, čiže môžete do org.netbeans.shapesample.palette doplniť obrázok, ktorý sa má objaviť pri chybe, dajte mu meno shape1.png&lt;br /&gt;
&lt;br /&gt;
3. Z dôvodu toho, že máme len 3 obrázky, mohli by sme vytvoriť akoby len 3 prvky, preto si vytvoríme novú triedu s názvom '''MyNode'''. Klikneme na náš '''package shapesample pravým--new---java class''' a bude vypadať takto:&lt;br /&gt;
    public class MyNode {    &lt;br /&gt;
    private Image image;&lt;br /&gt;
    &lt;br /&gt;
    public MyNode(Image image) {&lt;br /&gt;
        this.image = image;&lt;br /&gt;
    }    &lt;br /&gt;
    public Image getImage() {&lt;br /&gt;
        return image;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
Klikneme na žltú žiarovku v tejto triede a dáme '''&amp;quot;Add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
4. Zmeníme teraz v triede '''GraphSceneImpl''' rodiča, od ktorého dedí, čiže jeden z prvý riadkov bude vypadať takto:&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&amp;lt;MyNode, String&amp;gt;{...telo triedy...}&lt;br /&gt;
čím sme zabezpečili, že naša Node je prijatá  cez Visual Library. Teraz sa nám objaví žltá žiarovka aj pri tomto riadku, lebo teraz musíme dediť iné abstraktné metódy, '''čiže klikneme na ňu --implement all abstract methods'''&lt;br /&gt;
5. Kedže používame generics, tak klikneme '''pravým na náš projekt--properties--sources''' a presvedčíme sa, že tam máme hodnotu  '''Source level = 1.5'''&lt;br /&gt;
&lt;br /&gt;
6. Následne definujeme náš nový Widget (komponent) v triede '''GraphSceneImpl''' a to tak, že tam nájdeme metódu '''protected Widget attachNodeWidget(MyNode node)''' a upravíme ju nasledovne:&lt;br /&gt;
     protected Widget attachNodeWidget(MyNode node) {&lt;br /&gt;
       IconNodeWidget widget = new IconNodeWidget(this);&lt;br /&gt;
       widget.setImage(node.getImage());&lt;br /&gt;
       widget.setLabel(Long.toString(node.hashCode()));&lt;br /&gt;
       widget.getActions().addAction(ActionFactory.createMoveAction());&lt;br /&gt;
       mainLayer.addChild(widget);&lt;br /&gt;
       return widget;&lt;br /&gt;
     }&lt;br /&gt;
Týmto nášmu Widgetu nastavíme obrázok, a priradíme mu veľké náhodné číslo, a ešte možnosť posúvať ho po našej scéne, a následne po zastavení ho pridať znova ako child.&lt;br /&gt;
&lt;br /&gt;
7. Ešte stále nám ostáva pár žltých žiaroviek, takže klikneme na každú z nich, ktorá tam bude a dáme '''&amp;quot;Add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
8. Spustíme náš projekt, a už uvidíme, že je možné presúvať komponenty (Widgety) z našej paletty na našu scénku:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pridanie funkcionality pre našu scénu ==&lt;br /&gt;
1.Teraz pridáme najprv ZOOMaction na našu scénku a to tak, že na koniec '''GraphSceneImpl''' konštruktoru pridáme:&lt;br /&gt;
    getActions().addAction(ActionFactory.createZoomAction());&lt;br /&gt;
&lt;br /&gt;
Keď spustíme teraz náš projekt, tak pri pridržaní ctrl+ kolieško myši sa nám bude zoomovať naša plocha&lt;br /&gt;
&lt;br /&gt;
2. Pridaním riadku za predošlým :&lt;br /&gt;
    getActions().addAction(ActionFactory.createPanAction());&lt;br /&gt;
Pridáme funkcionalitu, že keď user potlačí kolečko myši, tak potom môže hýbať do hociktorého smeru.&lt;br /&gt;
&lt;br /&gt;
== Pridanie funkcinality pre IconNodeWidget ==&lt;br /&gt;
Pre IconNodeWidget sme už pridali funcionalitu pre hýbanie '''MoveAction'''. Tak isto sme schopný pridať aj funkcionalitu pre '''HoverAction, SelectAction, a InplaceEditorAction''', v poradí (nadídenie, vybranie, premenovanie)&lt;br /&gt;
1. Najprv na úrovni triedy definujte &lt;br /&gt;
   private WidgetAction editorAction = ActionFactory.createInplaceEditorAction(new LabelTextFieldEditor());&lt;br /&gt;
Následne sa objaví znova žltá žiarovka, najprv dajte '''&amp;quot;Add import...&amp;quot;''', následne dajte '''&amp;quot;Create class LabelTextFieldEditor...&amp;quot;''' , čo nám pridá do nášho package triedu.&lt;br /&gt;
2.Telo tejto triedy '''LabelTextFieldEditor''' zmeníme nasledovne:&lt;br /&gt;
    class LabelTextFieldEditor implements TextFieldInplaceEditor {&lt;br /&gt;
    public boolean isEnabled(Widget widget) {&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
    public String getText(Widget widget) {&lt;br /&gt;
        return ((LabelWidget) widget).getLabel();&lt;br /&gt;
    }&lt;br /&gt;
    public void setText(Widget widget, String text) {&lt;br /&gt;
        ((LabelWidget) widget).setLabel(text);&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
Znovu sa v tejto triede objaví zopár žltých žiaroviek, poklikajte na '''&amp;quot;add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
3. Následne priradíme editorAction nášmu IconNodeWidget, a to tak, že na koniec metódy '''protected Widget attachNodeWidget(MyNode node)''' triedy '''GraphSceneImpl''' vložíme tesne nad riadok ''' mainLayer.addChild(widget);''' nasledujúci kód:&lt;br /&gt;
    widget.getLabelWidget().getActions().addAction(editorAction);&lt;br /&gt;
&lt;br /&gt;
4. Následne Hower, Clicked action dolníme tak, že po vyššie doplnenom riadku dáme tieto dva:&lt;br /&gt;
    widget.getActions().addAction(createSelectAction());&lt;br /&gt;
    widget.getActions().addAction(createObjectHoverAction());&lt;br /&gt;
&lt;br /&gt;
5. Teraz musíme trochu premyslieť poradie, v ktorom sme akcie pridali, info tu [http://bits.netbeans.org/dev/javadoc/org-netbeans-api-visual/org/netbeans/api/visual/widget/doc-files/documentation.html#OrderOfActions]&lt;br /&gt;
A následne bude naša metóda '''protected Widget attachNodeWidget''' vypadať nasledovne&lt;br /&gt;
    protected Widget attachNodeWidget(MyNode node) {&lt;br /&gt;
        IconNodeWidget widget = new IconNodeWidget(this);&lt;br /&gt;
        widget.setImage(node.getImage());&lt;br /&gt;
        widget.setLabel(Long.toString(node.hashCode()));&lt;br /&gt;
        //double-click, event sa spustí len pri doubleclicku:&lt;br /&gt;
        widget.getLabelWidget().getActions().addAction(editorAction);&lt;br /&gt;
        //single-click, event sa spustí pri single clicku&lt;br /&gt;
        widget.getActions().addAction(createSelectAction());&lt;br /&gt;
        //mouse-dragged&lt;br /&gt;
        widget.getActions().addAction(ActionFactory.createMoveAction());&lt;br /&gt;
        //mouse-over,&lt;br /&gt;
        widget.getActions().addAction(createObjectHoverAction());&lt;br /&gt;
        mainLayer.addChild(widget);&lt;br /&gt;
        return widget;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
6. Po spustení to bude môcť vypadať takto napr.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb desat.png]]&lt;br /&gt;
&lt;br /&gt;
== Záver a riešenie problémov ==&lt;br /&gt;
&lt;br /&gt;
Ukázali sme v skutku len veľmi strohú ukážku, čo by sa s NetBeans dalo spraviť, ale keďže je to problematika, ktorou by sa mali zaoberať knihy pre pokročilejších programerov, tak tu skončíme.&lt;br /&gt;
&lt;br /&gt;
V prípade nejasností je vždy dobré sa obráti na stránku NetBeans tutorials [http://netbeans.org/kb/trails/platform.html]&lt;br /&gt;
&lt;br /&gt;
V prípade problémov, resp. riešenia chýb uvedeného návodu, '''odporúčam použiť VYTVORENY FUNKCNY MODUL'''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Download:''' [http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=14027]&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Inštalácia:''' Spustite '''NetBeans--Tools--Plugins--kliknite Downloaded--Add Plugins...--nájdite stiahnutý--install'''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Spustenie pluginu:''' '''Spustite NetBeans--File--New Project--Samples--NetBeansModule--Visual Library Demo'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
V prípade nejasností, je tam všetko štruktúrované ako v našom návode, čiže by ste tam mali nájsť svoju chybu dosť rýchlo a prehľadne.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''ENJOY!'''&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zdroj:[http://platform.netbeans.org/tutorials/nbm-visual_library.html]&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3856</id>
		<title>Základy práce s NetBeans IDE a vývoj modulov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3856"/>
		<updated>2010-04-25T21:33:06Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== NetBeans IDE ==&lt;br /&gt;
NetBeans je krásne vývojové prostredie, ktorého hlavnou výhodou je jeho modulárna architektúra. Ďalším skvelým prvkom je, že sa spolieha na toolkit SWING UI, čo nám dokopy dáva obrovské výhody.&lt;br /&gt;
&lt;br /&gt;
V tomto článku sa posnažím ukázať, ako možno vytvoriť jednoduchý modul pre NetBeans, ktorý bude iba strohá ukážka toho, čo sa s NetBeans dá robit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Požiadavky na postup článkom ==&lt;br /&gt;
1. NetBeans IDE ( použitá verzia 6.8 )&amp;lt;br /&amp;gt;&lt;br /&gt;
2. Java_jdk ( použitá verzia 1.6.0.18 ) &amp;lt;br /&amp;gt;&lt;br /&gt;
3. Základné znalosti jazyka JAVA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie a spustenie projektu ==&lt;br /&gt;
1. Začneme  spustením  Netbeans  a  zvolíme  '''File--New Project--NetBeans Modules--Module'''&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb prvy.png]]&lt;br /&gt;
&lt;br /&gt;
2. Klikneme na tlačítko &amp;quot;NEXT&amp;quot;, pomenujeme si náš projekt napr. &amp;quot;ShapeSample&amp;quot;, nastavíme ho ako &amp;quot;'''main project'''&amp;quot; a vyberieme si umiestnenie, kde ho chceme uložiť a ponecháme '''Standalone Module'''&lt;br /&gt;
[[Súbor:Ytb druhy.png]]&lt;br /&gt;
&lt;br /&gt;
3. Klikneme &amp;quot;NEXT&amp;quot;, zadáme do &amp;quot;Code Name Base&amp;quot; '''org.netbeans.shapesample''', a dôležité, klikneme na '''Generate XML Layer'''. Následne klikneme na tlačítko finish, a vytvorí sa nám projekt.&lt;br /&gt;
[[Súbor:Ytb treti.png]]&lt;br /&gt;
&lt;br /&gt;
4. V okne &amp;quot;Project&amp;quot; , '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--Properties--Libraries'''. Module Dependencies klikneme na tlačítko &amp;quot;ADD&amp;quot; a pridáme:&amp;lt;br /&amp;gt;&lt;br /&gt;
''a/ Visual Library API &amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Utilities API &amp;lt;br /&amp;gt;''&lt;br /&gt;
Klikneme na tlačítko OK, čo nám pridá odkazy.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Znova v &amp;quot;Project&amp;quot; window '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--New--Other--Module Development--Window Component''' , klikneme &amp;quot;NEXT&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6. Ako Windows Position dáme '''editor''' a zaškrtneme '''Open on application start''' a klikneme &amp;quot;NEXT&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7.Do políčka &amp;quot;Class Name Prefix&amp;quot; dopíšeme '''Shape''', klikneme na tlačítko &amp;quot;FINISH&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. Vygeneruje sa nám viacero súbor, jedným z nich je '''ShapeTopComponent''', 2krát naň klikneme a otvoríme ho v design view.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. V design view, pravým klikneme na okno akoby a dáme '''Set Layout--Border Layout'''&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb stvrty.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie scény ==&lt;br /&gt;
1. Využijeme okno &amp;quot;'''Pallete'''&amp;quot; (ak nie je zobrazené dáme window---pallete) a vložíme na naš layout '''ScrollPane'''. V okne &amp;quot;Inspector&amp;quot; klikneme pravým na jScrollPane1--Change Variable Name a nastavíme hodnotu na &amp;quot;shapePane&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
2.V &amp;quot;Project&amp;quot; windows na zložku''' org--netbeans--shapesample''' klikneme pravým a dáme '''new--Java Class''', pomenujme ju &amp;quot;'''GraphSceneImpl'''&amp;quot;, a po vytvorení dopíšme do triedy '''extends GraphScene'''&lt;br /&gt;
&lt;br /&gt;
3. Žltá žiarovka s červeným výkričníkom sa nám objaví naľavo v editore, klikneme na ňu, a dáme &amp;quot;'''add Import...'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
Následne sa dám objaví ďalšia žltá žiarovka, klikneme na ňu a dáme &amp;quot;'''Implement all abstract methods'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb piaty.png]]&lt;br /&gt;
&lt;br /&gt;
4. Pre lepšiu orientáciu zmeníme názvy parametrov vygenerovaných NetBeans, a po úprave bude naša trieda vypadať takto:&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
    public GraphSceneImpl() {&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachNodeWidget(Object node) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachEdgeWidget(Object edge) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeSourceAnchor(Object edge, Object oldSourceNode, Object newSourceNode) {&lt;br /&gt;
    &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeTargetAnchor(Object edge, Object oldTargetNode, Object newTargetNode) {&lt;br /&gt;
            &lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
5.Vrátime sa k ShapeTopComponent, kde sa budeme starať o instanciu GraphSceneImpl , prepneme Design View na SourceView, a nájdeme jeho konštruktor. Do tela konštruktora doplnime nasledujúce riadky:&lt;br /&gt;
     GraphSceneImpl scene = new GraphSceneImpl();&lt;br /&gt;
     myView = scene.createView();     &lt;br /&gt;
     shapePane.setViewportView(myView);&lt;br /&gt;
     add(scene.createSatelliteView(), BorderLayout.WEST);  &lt;br /&gt;
&lt;br /&gt;
Týmto sme vytvorili 2 náhľady, jeden veľký, a jeden akoby informačný na ľavej strane, ktorý pomôže používateľovi rýchlejšie sa pohybovať po väčšom rozpätí.&lt;br /&gt;
&lt;br /&gt;
6. Na '''úrovni triedy ShapeTopComponent'''  deklarujeme (doplníme napr. hneď nad konštruktor)&lt;br /&gt;
    private JComponent myView;&lt;br /&gt;
&lt;br /&gt;
Ostanú nám ešte 2 žlté žiarovky, klikneme na každú z nich, a dáme &amp;quot;'''Add Import...'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
7. Teraz musíme ošetriť, že ak sa NetBeans IDE reštartuje, nemáme žiadny dôvod aby ShapeTopComponent pretrvával, čiže nájdeme metódu '''getPersistenceType()''' v tele triedy, a zmeníme ju nasledovne:&lt;br /&gt;
   public int getPersistenceType() {&lt;br /&gt;
       return TopComponent.PERSISTENCE_NEVER;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
8. Klikneme v &amp;quot;Project&amp;quot; window na náš projekt '''ShapeSample pravým--run'''&lt;br /&gt;
&lt;br /&gt;
9. Nezlaknite sa, spustí sa nová inštancia NetBeans IDE(ak nie je náš projekt už otvorený kliknite na '''window---Shape''') a zobrazí sa Vám niečo takéto:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb siesty.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytváranie Palety pre našu scénu ==&lt;br /&gt;
&lt;br /&gt;
Teraz aby sme pokračovali niečím užitočným, vytvoríme si palletu, na čo využijeme Pallete API, ktorá bude obsahovať komponenty, ktoré môžeme použiť a pridať na našu scénu pretiahnutím.&lt;br /&gt;
Pre ďalšie pokračovanie budeme potrebovať 3 obrázky našich komponentov, použime tieto(kliknite pravým---uložiť ako, nemente názvy):&lt;br /&gt;
[[Súbor:Image1.png]][[Súbor:Image2.png]][[Súbor:Image3.png]]&lt;br /&gt;
&lt;br /&gt;
'''Keďže náš tutoriál sa zaoberá s Visual Library API, a nie s Palette API(info tu:[http://netbeans.org/kb/trails/platform.html] ), na funkcionalitu Paletty použijeme už hotové knižnice, ktoré stiahnete tu''':&lt;br /&gt;
[http://www.sendspace.com/file/dqtnbi]&lt;br /&gt;
&lt;br /&gt;
1. Klikneme na náš projekt pravým--new--Java Package a pomenujeme ho '''org.netbeans.shapesample.palette'''&lt;br /&gt;
2. Teraz podme do zložky, kde sme nás projekt uložili, konkrétne   '''násProjekt/src/org/netbeans/shapesample/pallete'''. A do tejto''' zložky nakopírujeme stiahnuté obrázky a následne aj knižnice''', čiže tieto súbory:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Category&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ CategoryChildren &amp;lt;br /&amp;gt;&lt;br /&gt;
c/ CategoryNode &amp;lt;br /&amp;gt;&lt;br /&gt;
d/ PaletteSupport&amp;lt;br /&amp;gt;&lt;br /&gt;
e/ Shape&amp;lt;br /&amp;gt;&lt;br /&gt;
f/ ShapeChildren&amp;lt;br /&amp;gt;&lt;br /&gt;
g/ ShapeNode&amp;lt;br /&amp;gt;&lt;br /&gt;
h/ image1, image2, image3&amp;lt;br /&amp;gt;&lt;br /&gt;
po zobrazení NetBeans sa nám novo vytvorený package obnoví, a budeme tam mať načítané všetky vložené súbory, pričom niekde sa znovu objavia červené krúžky so žiarovkou, to si nevšímajme chvíľku&lt;br /&gt;
&lt;br /&gt;
3. Klikneme '''pravým na projekt--Properties--Libraries--Add''' a pridáme nasledujúce knižnice:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Actions APIs&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Nodes API&amp;lt;br /&amp;gt;&lt;br /&gt;
c/ Common Palette &amp;lt;br /&amp;gt;&lt;br /&gt;
Teraz by sme mali spozorovať, že všetky červené guličky nám zmiznú, a bude nám to vypadať nasledovne: &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb siedmy.png]]&lt;br /&gt;
&lt;br /&gt;
4. Teraz pridáme našu Palettu do ShapeTopComponentovho náhľadu, a to tak, že do konštruktoru ShapeTopComponent kod&lt;br /&gt;
     associateLookup( Lookups.fixed( new Object[] { PaletteSupport.createPalette() } ) );&lt;br /&gt;
&lt;br /&gt;
5. Znova sa nám objaví žltá žiarovka, klikneme na ňu dáme &amp;quot;Add import...&amp;quot;, následne sa tam objaví znova, čiže znova klikneme a dáme &amp;quot;Add import...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
6. Spustite modul znova(pravým--run), teraz by to už malo vypadať takto, no zatiaľ bez funkcionality, pretože potrebujeme Layer Widget: &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb osmy.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pridanie LayerWidget ==&lt;br /&gt;
&lt;br /&gt;
Pod pojmom LayerWidget si predstavte niečo priesvitné, na ktoré budeme môcť ukladať naše komponenty s paletty.&lt;br /&gt;
&lt;br /&gt;
1. Ná úrovni triedy GraphSceneImpl deklarujte náš LayerWidget&lt;br /&gt;
     private LayerWidget mainLayer;&lt;br /&gt;
&lt;br /&gt;
2. Do konštruktoru GraphSceneImpl pridajte LayerWidget ako dieťa našej scény:&lt;br /&gt;
     mainLayer = new LayerWidget (this);&lt;br /&gt;
     addChild (mainLayer);&lt;br /&gt;
&lt;br /&gt;
Teraz keď pridáme na scénu nejaký komponent s našej paletty , pridajú sa ako deti do našel mainLayer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pridanie IconNodeWidget (komponentu) cez funkcionalitu Drag and Drop (chyť a hoď) ==&lt;br /&gt;
&lt;br /&gt;
Doposiaľ, naša scéna existuje, ale nemá žiadnu funkcionalitu. Túto funkcionalitu pridáme pomocou '''&amp;quot;actions&amp;quot;'''. Action, ktorá nám umožnuje Drag &amp;amp; Drop funkcionalitu je '''AcceptAction''' . Táto action môže byť aplikovaná buď na náš komponent alebo na našu scénu. My ju budeme aplikovať na našu scénu. Využijeme '''createAcceptAction''' na to, aby sme definovali čo sa má stať po tom, ako je komponent pretiahnutý nad našu scénu.&lt;br /&gt;
&lt;br /&gt;
1. Najprv pridajte '''createAcceptAction''' spolu s jeho dvomi metódami do GraphSceneImpl konštruktoru:&lt;br /&gt;
   getActions().addAction(ActionFactory.createAcceptAction(new AcceptProvider() {&lt;br /&gt;
    public ConnectorState isAcceptable(Widget widget, Point point, Transferable transferable) {&lt;br /&gt;
        Image dragImage = getImageFromTransferable(transferable);&lt;br /&gt;
        JComponent view = getView();&lt;br /&gt;
        Graphics2D g2 = (Graphics2D) view.getGraphics();&lt;br /&gt;
        Rectangle visRect = view.getVisibleRect();&lt;br /&gt;
        view.paintImmediately(visRect.x, visRect.y, visRect.width, visRect.height);&lt;br /&gt;
        g2.drawImage(dragImage,&lt;br /&gt;
                AffineTransform.getTranslateInstance(point.getLocation().getX(),&lt;br /&gt;
                point.getLocation().getY()),&lt;br /&gt;
                null);&lt;br /&gt;
        return ConnectorState.ACCEPT;&lt;br /&gt;
    }&lt;br /&gt;
    public void accept(Widget widget, Point point, Transferable transferable) {&lt;br /&gt;
        Image image = getImageFromTransferable(transferable);&lt;br /&gt;
        Widget w = GraphSceneImpl.this.addNode(new MyNode(image));&lt;br /&gt;
        w.setPreferredLocation(widget.convertLocalToScene(point));&lt;br /&gt;
    }&lt;br /&gt;
    }));&lt;br /&gt;
&lt;br /&gt;
Objaví sa nám viacero chýb, a to z toho dôvodu, že sme použili aj metody, ktoré zatiaľ nie sú definované, čiže si chvíľku nevšímajme tieto errory.&lt;br /&gt;
&lt;br /&gt;
2. Teraz do triedy '''GraphSceneImpl''' pridáme pomocnú metódu na získavanie obrázkov:&lt;br /&gt;
   private Image getImageFromTransferable(Transferable transferable) {&lt;br /&gt;
    Object o = null;&lt;br /&gt;
    try {&lt;br /&gt;
        o = transferable.getTransferData(DataFlavor.imageFlavor);&lt;br /&gt;
    } catch (IOException ex) {&lt;br /&gt;
        ex.printStackTrace();&lt;br /&gt;
    } catch (UnsupportedFlavorException ex) {&lt;br /&gt;
        ex.printStackTrace();&lt;br /&gt;
    }&lt;br /&gt;
    return o instanceof Image ? (Image) o : ImageUtilities.loadImage(&amp;quot;org/netbeans/shapesample/palette/shape1.png&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
Ako vidíme, je tu ošetrená chyba, čiže môžete do org.netbeans.shapesample.palette doplniť obrázok, ktorý sa má objaviť pri chybe, dajte mu meno shape1.png&lt;br /&gt;
&lt;br /&gt;
3. Z dôvodu toho, že máme len 3 obrázky, mohli by sme vytvoriť akoby len 3 prvky, preto si vytvoríme novú triedu s názvom '''MyNode'''. Klikneme na náš '''package shapesample pravým--new---java class''' a bude vypadať takto:&lt;br /&gt;
    public class MyNode {    &lt;br /&gt;
    private Image image;&lt;br /&gt;
    &lt;br /&gt;
    public MyNode(Image image) {&lt;br /&gt;
        this.image = image;&lt;br /&gt;
    }    &lt;br /&gt;
    public Image getImage() {&lt;br /&gt;
        return image;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
Klikneme na žltú žiarovku v tejto triede a dáme '''&amp;quot;Add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
4. Zmeníme teraz v triede '''GraphSceneImpl''' rodiča, od ktorého dedí, čiže jeden z prvý riadkov bude vypadať takto:&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&amp;lt;MyNode, String&amp;gt;{...telo triedy...}&lt;br /&gt;
čím sme zabezpečili, že naša Node je prijatá  cez Visual Library. Teraz sa nám objaví žltá žiarovka aj pri tomto riadku, lebo teraz musíme dediť iné abstraktné metódy, '''čiže klikneme na ňu --implement all abstract methods'''&lt;br /&gt;
5. Kedže používame generics, tak klikneme '''pravým na náš projekt--properties--sources''' a presvedčíme sa, že tam máme hodnotu  '''Source level = 1.5'''&lt;br /&gt;
&lt;br /&gt;
6. Následne definujeme náš nový Widget (komponent) v triede '''GraphSceneImpl''' a to tak, že tam nájdeme metódu '''protected Widget attachNodeWidget(MyNode node)''' a upravíme ju nasledovne:&lt;br /&gt;
     protected Widget attachNodeWidget(MyNode node) {&lt;br /&gt;
       IconNodeWidget widget = new IconNodeWidget(this);&lt;br /&gt;
       widget.setImage(node.getImage());&lt;br /&gt;
       widget.setLabel(Long.toString(node.hashCode()));&lt;br /&gt;
       widget.getActions().addAction(ActionFactory.createMoveAction());&lt;br /&gt;
       mainLayer.addChild(widget);&lt;br /&gt;
       return widget;&lt;br /&gt;
     }&lt;br /&gt;
Týmto nášmu Widgetu nastavíme obrázok, a priradíme mu veľké náhodné číslo, a ešte možnosť posúvať ho po našej scéne, a následne po zastavení ho pridať znova ako child.&lt;br /&gt;
&lt;br /&gt;
7. Ešte stále nám ostáva pár žltých žiaroviek, takže klikneme na každú z nich, ktorá tam bude a dáme '''&amp;quot;Add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
8. Spustíme náš projekt, a už uvidíme, že je možné presúvať komponenty (Widgety) z našej paletty na našu scénku:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pridanie funkcionality pre našu scénu ==&lt;br /&gt;
1.Teraz pridáme najprv ZOOMaction na našu scénku a to tak, že na koniec '''GraphSceneImpl''' konštruktoru pridáme:&lt;br /&gt;
    getActions().addAction(ActionFactory.createZoomAction());&lt;br /&gt;
&lt;br /&gt;
Keď spustíme teraz náš projekt, tak pri pridržaní ctrl+ kolieško myši sa nám bude zoomovať naša plocha&lt;br /&gt;
&lt;br /&gt;
2. Pridaním riadku za predošlým :&lt;br /&gt;
    getActions().addAction(ActionFactory.createPanAction());&lt;br /&gt;
Pridáme funkcionalitu, že keď user potlačí kolečko myši, tak potom môže hýbať do hociktorého smeru.&lt;br /&gt;
&lt;br /&gt;
== Pridanie funkcinality pre IconNodeWidget ==&lt;br /&gt;
Pre IconNodeWidget sme už pridali funcionalitu pre hýbanie '''MoveAction'''. Tak isto sme schopný pridať aj funkcionalitu pre '''HoverAction, SelectAction, a InplaceEditorAction''', v poradí (nadídenie, vybranie, premenovanie)&lt;br /&gt;
1. Najprv na úrovni triedy definujte &lt;br /&gt;
   private WidgetAction editorAction = ActionFactory.createInplaceEditorAction(new LabelTextFieldEditor());&lt;br /&gt;
Následne sa objaví znova žltá žiarovka, najprv dajte '''&amp;quot;Add import...&amp;quot;''', následne dajte '''&amp;quot;Create class LabelTextFieldEditor...&amp;quot;''' , čo nám pridá do nášho package triedu.&lt;br /&gt;
2.Telo tejto triedy '''LabelTextFieldEditor''' zmeníme nasledovne:&lt;br /&gt;
    class LabelTextFieldEditor implements TextFieldInplaceEditor {&lt;br /&gt;
    public boolean isEnabled(Widget widget) {&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
    public String getText(Widget widget) {&lt;br /&gt;
        return ((LabelWidget) widget).getLabel();&lt;br /&gt;
    }&lt;br /&gt;
    public void setText(Widget widget, String text) {&lt;br /&gt;
        ((LabelWidget) widget).setLabel(text);&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
Znovu sa v tejto triede objaví zopár žltých žiaroviek, poklikajte na '''&amp;quot;add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
3. Následne priradíme editorAction nášmu IconNodeWidget, a to tak, že na koniec metódy '''protected Widget attachNodeWidget(MyNode node)''' triedy '''GraphSceneImpl''' vložíme tesne nad riadok ''' mainLayer.addChild(widget);''' nasledujúci kód:&lt;br /&gt;
    widget.getLabelWidget().getActions().addAction(editorAction);&lt;br /&gt;
&lt;br /&gt;
4. Následne Hower, Clicked action dolníme tak, že po vyššie doplnenom riadku dáme tieto dva:&lt;br /&gt;
    widget.getActions().addAction(createSelectAction());&lt;br /&gt;
    widget.getActions().addAction(createObjectHoverAction());&lt;br /&gt;
&lt;br /&gt;
5. Teraz musíme trochu premyslieť poradie, v ktorom sme akcie pridali, info tu [http://bits.netbeans.org/dev/javadoc/org-netbeans-api-visual/org/netbeans/api/visual/widget/doc-files/documentation.html#OrderOfActions]&lt;br /&gt;
A následne bude naša metóda '''protected Widget attachNodeWidget''' vypadať nasledovne&lt;br /&gt;
    protected Widget attachNodeWidget(MyNode node) {&lt;br /&gt;
        IconNodeWidget widget = new IconNodeWidget(this);&lt;br /&gt;
        widget.setImage(node.getImage());&lt;br /&gt;
        widget.setLabel(Long.toString(node.hashCode()));&lt;br /&gt;
        //double-click, event sa spustí len pri doubleclicku:&lt;br /&gt;
        widget.getLabelWidget().getActions().addAction(editorAction);&lt;br /&gt;
        //single-click, event sa spustí pri single clicku&lt;br /&gt;
        widget.getActions().addAction(createSelectAction());&lt;br /&gt;
        //mouse-dragged&lt;br /&gt;
        widget.getActions().addAction(ActionFactory.createMoveAction());&lt;br /&gt;
        //mouse-over,&lt;br /&gt;
        widget.getActions().addAction(createObjectHoverAction());&lt;br /&gt;
        mainLayer.addChild(widget);&lt;br /&gt;
        return widget;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
6. Po spustení to bude môcť vypadať takto napr.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb desat.png]]&lt;br /&gt;
&lt;br /&gt;
== Záver a riešenie problémov ==&lt;br /&gt;
&lt;br /&gt;
Ukázali sme v skutku len veľmi strohú ukážku, čo by sa s NetBeans dalo spraviť, ale keďže je to problematika, ktorou by sa mali zaoberať knihy pre pokročilejších programerov, tak tu skončíme.&lt;br /&gt;
&lt;br /&gt;
V prípade nejasností je vždy dobré sa obráti na stránku NetBeans tutorials [http://netbeans.org/kb/trails/platform.html]&lt;br /&gt;
&lt;br /&gt;
V prípade problémov, resp. riešenia chýb uvedeného návodu, '''odporúčam použiť VYTVORENY FUNKCNY MODUL'''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Download:''' [http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=14027]&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Inštalácia:''' Spustite '''NetBeans--Tools--Plugins--kliknite Downloaded--Add Plugins...--nájdite stiahnutý--install'''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Spustenie pluginu:''' '''Spustite NetBeans--File--New Project--Samples--NetBeansModule--Visual Library Demo'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
V prípade nejasností, je tam všetko štruktúrované ako v našom návode, čiže by ste tam mali nájsť svoju chybu dosť rýchlo a prehľadne.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''ENJOY!'''&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zdroj:[http://platform.netbeans.org/tutorials/nbm-visual_library.html]&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3855</id>
		<title>Základy práce s NetBeans IDE a vývoj modulov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3855"/>
		<updated>2010-04-25T21:31:41Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: /* Záver a riešenie problémov */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Work in progress :)'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== NetBeans IDE ==&lt;br /&gt;
NetBeans je krásne vývojové prostredie, ktorého hlavnou výhodou je jeho modulárna architektúra. Ďalším skvelým prvkom je, že sa spolieha na toolkit SWING UI, čo nám dokopy dáva obrovské výhody.&lt;br /&gt;
&lt;br /&gt;
V tomto článku sa posnažím ukázať, ako možno vytvoriť jednoduchý modul pre NetBeans, ktorý bude iba strohá ukážka toho, čo sa s NetBeans dá robit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Požiadavky na postup článkom ==&lt;br /&gt;
1. NetBeans IDE ( použitá verzia 6.8 )&amp;lt;br /&amp;gt;&lt;br /&gt;
2. Java_jdk ( použitá verzia 1.6.0.18 ) &amp;lt;br /&amp;gt;&lt;br /&gt;
3. Základné znalosti jazyka JAVA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie a spustenie projektu ==&lt;br /&gt;
1. Začneme  spustením  Netbeans  a  zvolíme  '''File--New Project--NetBeans Modules--Module'''&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb prvy.png]]&lt;br /&gt;
&lt;br /&gt;
2. Klikneme na tlačítko &amp;quot;NEXT&amp;quot;, pomenujeme si náš projekt napr. &amp;quot;ShapeSample&amp;quot;, nastavíme ho ako &amp;quot;'''main project'''&amp;quot; a vyberieme si umiestnenie, kde ho chceme uložiť a ponecháme '''Standalone Module'''&lt;br /&gt;
[[Súbor:Ytb druhy.png]]&lt;br /&gt;
&lt;br /&gt;
3. Klikneme &amp;quot;NEXT&amp;quot;, zadáme do &amp;quot;Code Name Base&amp;quot; '''org.netbeans.shapesample''', a dôležité, klikneme na '''Generate XML Layer'''. Následne klikneme na tlačítko finish, a vytvorí sa nám projekt.&lt;br /&gt;
[[Súbor:Ytb treti.png]]&lt;br /&gt;
&lt;br /&gt;
4. V okne &amp;quot;Project&amp;quot; , '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--Properties--Libraries'''. Module Dependencies klikneme na tlačítko &amp;quot;ADD&amp;quot; a pridáme:&amp;lt;br /&amp;gt;&lt;br /&gt;
''a/ Visual Library API &amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Utilities API &amp;lt;br /&amp;gt;''&lt;br /&gt;
Klikneme na tlačítko OK, čo nám pridá odkazy.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Znova v &amp;quot;Project&amp;quot; window '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--New--Other--Module Development--Window Component''' , klikneme &amp;quot;NEXT&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6. Ako Windows Position dáme '''editor''' a zaškrtneme '''Open on application start''' a klikneme &amp;quot;NEXT&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7.Do políčka &amp;quot;Class Name Prefix&amp;quot; dopíšeme '''Shape''', klikneme na tlačítko &amp;quot;FINISH&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. Vygeneruje sa nám viacero súbor, jedným z nich je '''ShapeTopComponent''', 2krát naň klikneme a otvoríme ho v design view.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. V design view, pravým klikneme na okno akoby a dáme '''Set Layout--Border Layout'''&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb stvrty.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie scény ==&lt;br /&gt;
1. Využijeme okno &amp;quot;'''Pallete'''&amp;quot; (ak nie je zobrazené dáme window---pallete) a vložíme na naš layout '''ScrollPane'''. V okne &amp;quot;Inspector&amp;quot; klikneme pravým na jScrollPane1--Change Variable Name a nastavíme hodnotu na &amp;quot;shapePane&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
2.V &amp;quot;Project&amp;quot; windows na zložku''' org--netbeans--shapesample''' klikneme pravým a dáme '''new--Java Class''', pomenujme ju &amp;quot;'''GraphSceneImpl'''&amp;quot;, a po vytvorení dopíšme do triedy '''extends GraphScene'''&lt;br /&gt;
&lt;br /&gt;
3. Žltá žiarovka s červeným výkričníkom sa nám objaví naľavo v editore, klikneme na ňu, a dáme &amp;quot;'''add Import...'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
Následne sa dám objaví ďalšia žltá žiarovka, klikneme na ňu a dáme &amp;quot;'''Implement all abstract methods'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb piaty.png]]&lt;br /&gt;
&lt;br /&gt;
4. Pre lepšiu orientáciu zmeníme názvy parametrov vygenerovaných NetBeans, a po úprave bude naša trieda vypadať takto:&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
    public GraphSceneImpl() {&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachNodeWidget(Object node) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachEdgeWidget(Object edge) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeSourceAnchor(Object edge, Object oldSourceNode, Object newSourceNode) {&lt;br /&gt;
    &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeTargetAnchor(Object edge, Object oldTargetNode, Object newTargetNode) {&lt;br /&gt;
            &lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
5.Vrátime sa k ShapeTopComponent, kde sa budeme starať o instanciu GraphSceneImpl , prepneme Design View na SourceView, a nájdeme jeho konštruktor. Do tela konštruktora doplnime nasledujúce riadky:&lt;br /&gt;
     GraphSceneImpl scene = new GraphSceneImpl();&lt;br /&gt;
     myView = scene.createView();     &lt;br /&gt;
     shapePane.setViewportView(myView);&lt;br /&gt;
     add(scene.createSatelliteView(), BorderLayout.WEST);  &lt;br /&gt;
&lt;br /&gt;
Týmto sme vytvorili 2 náhľady, jeden veľký, a jeden akoby informačný na ľavej strane, ktorý pomôže používateľovi rýchlejšie sa pohybovať po väčšom rozpätí.&lt;br /&gt;
&lt;br /&gt;
6. Na '''úrovni triedy ShapeTopComponent'''  deklarujeme (doplníme napr. hneď nad konštruktor)&lt;br /&gt;
    private JComponent myView;&lt;br /&gt;
&lt;br /&gt;
Ostanú nám ešte 2 žlté žiarovky, klikneme na každú z nich, a dáme &amp;quot;'''Add Import...'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
7. Teraz musíme ošetriť, že ak sa NetBeans IDE reštartuje, nemáme žiadny dôvod aby ShapeTopComponent pretrvával, čiže nájdeme metódu '''getPersistenceType()''' v tele triedy, a zmeníme ju nasledovne:&lt;br /&gt;
   public int getPersistenceType() {&lt;br /&gt;
       return TopComponent.PERSISTENCE_NEVER;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
8. Klikneme v &amp;quot;Project&amp;quot; window na náš projekt '''ShapeSample pravým--run'''&lt;br /&gt;
&lt;br /&gt;
9. Nezlaknite sa, spustí sa nová inštancia NetBeans IDE(ak nie je náš projekt už otvorený kliknite na '''window---Shape''') a zobrazí sa Vám niečo takéto:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb siesty.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytváranie Palety pre našu scénu ==&lt;br /&gt;
&lt;br /&gt;
Teraz aby sme pokračovali niečím užitočným, vytvoríme si palletu, na čo využijeme Pallete API, ktorá bude obsahovať komponenty, ktoré môžeme použiť a pridať na našu scénu pretiahnutím.&lt;br /&gt;
Pre ďalšie pokračovanie budeme potrebovať 3 obrázky našich komponentov, použime tieto(kliknite pravým---uložiť ako, nemente názvy):&lt;br /&gt;
[[Súbor:Image1.png]][[Súbor:Image2.png]][[Súbor:Image3.png]]&lt;br /&gt;
&lt;br /&gt;
'''Keďže náš tutoriál sa zaoberá s Visual Library API, a nie s Palette API(info tu:[http://netbeans.org/kb/trails/platform.html] ), na funkcionalitu Paletty použijeme už hotové knižnice, ktoré stiahnete tu''':&lt;br /&gt;
[http://www.sendspace.com/file/dqtnbi]&lt;br /&gt;
&lt;br /&gt;
1. Klikneme na náš projekt pravým--new--Java Package a pomenujeme ho '''org.netbeans.shapesample.palette'''&lt;br /&gt;
2. Teraz podme do zložky, kde sme nás projekt uložili, konkrétne   '''násProjekt/src/org/netbeans/shapesample/pallete'''. A do tejto''' zložky nakopírujeme stiahnuté obrázky a následne aj knižnice''', čiže tieto súbory:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Category&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ CategoryChildren &amp;lt;br /&amp;gt;&lt;br /&gt;
c/ CategoryNode &amp;lt;br /&amp;gt;&lt;br /&gt;
d/ PaletteSupport&amp;lt;br /&amp;gt;&lt;br /&gt;
e/ Shape&amp;lt;br /&amp;gt;&lt;br /&gt;
f/ ShapeChildren&amp;lt;br /&amp;gt;&lt;br /&gt;
g/ ShapeNode&amp;lt;br /&amp;gt;&lt;br /&gt;
h/ image1, image2, image3&amp;lt;br /&amp;gt;&lt;br /&gt;
po zobrazení NetBeans sa nám novo vytvorený package obnoví, a budeme tam mať načítané všetky vložené súbory, pričom niekde sa znovu objavia červené krúžky so žiarovkou, to si nevšímajme chvíľku&lt;br /&gt;
&lt;br /&gt;
3. Klikneme '''pravým na projekt--Properties--Libraries--Add''' a pridáme nasledujúce knižnice:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Actions APIs&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Nodes API&amp;lt;br /&amp;gt;&lt;br /&gt;
c/ Common Palette &amp;lt;br /&amp;gt;&lt;br /&gt;
Teraz by sme mali spozorovať, že všetky červené guličky nám zmiznú, a bude nám to vypadať nasledovne: &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb siedmy.png]]&lt;br /&gt;
&lt;br /&gt;
4. Teraz pridáme našu Palettu do ShapeTopComponentovho náhľadu, a to tak, že do konštruktoru ShapeTopComponent kod&lt;br /&gt;
     associateLookup( Lookups.fixed( new Object[] { PaletteSupport.createPalette() } ) );&lt;br /&gt;
&lt;br /&gt;
5. Znova sa nám objaví žltá žiarovka, klikneme na ňu dáme &amp;quot;Add import...&amp;quot;, následne sa tam objaví znova, čiže znova klikneme a dáme &amp;quot;Add import...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
6. Spustite modul znova(pravým--run), teraz by to už malo vypadať takto, no zatiaľ bez funkcionality, pretože potrebujeme Layer Widget: &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb osmy.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pridanie LayerWidget ==&lt;br /&gt;
&lt;br /&gt;
Pod pojmom LayerWidget si predstavte niečo priesvitné, na ktoré budeme môcť ukladať naše komponenty s paletty.&lt;br /&gt;
&lt;br /&gt;
1. Ná úrovni triedy GraphSceneImpl deklarujte náš LayerWidget&lt;br /&gt;
     private LayerWidget mainLayer;&lt;br /&gt;
&lt;br /&gt;
2. Do konštruktoru GraphSceneImpl pridajte LayerWidget ako dieťa našej scény:&lt;br /&gt;
     mainLayer = new LayerWidget (this);&lt;br /&gt;
     addChild (mainLayer);&lt;br /&gt;
&lt;br /&gt;
Teraz keď pridáme na scénu nejaký komponent s našej paletty , pridajú sa ako deti do našel mainLayer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pridanie IconNodeWidget (komponentu) cez funkcionalitu Drag and Drop (chyť a hoď) ==&lt;br /&gt;
&lt;br /&gt;
Doposiaľ, naša scéna existuje, ale nemá žiadnu funkcionalitu. Túto funkcionalitu pridáme pomocou '''&amp;quot;actions&amp;quot;'''. Action, ktorá nám umožnuje Drag &amp;amp; Drop funkcionalitu je '''AcceptAction''' . Táto action môže byť aplikovaná buď na náš komponent alebo na našu scénu. My ju budeme aplikovať na našu scénu. Využijeme '''createAcceptAction''' na to, aby sme definovali čo sa má stať po tom, ako je komponent pretiahnutý nad našu scénu.&lt;br /&gt;
&lt;br /&gt;
1. Najprv pridajte '''createAcceptAction''' spolu s jeho dvomi metódami do GraphSceneImpl konštruktoru:&lt;br /&gt;
   getActions().addAction(ActionFactory.createAcceptAction(new AcceptProvider() {&lt;br /&gt;
    public ConnectorState isAcceptable(Widget widget, Point point, Transferable transferable) {&lt;br /&gt;
        Image dragImage = getImageFromTransferable(transferable);&lt;br /&gt;
        JComponent view = getView();&lt;br /&gt;
        Graphics2D g2 = (Graphics2D) view.getGraphics();&lt;br /&gt;
        Rectangle visRect = view.getVisibleRect();&lt;br /&gt;
        view.paintImmediately(visRect.x, visRect.y, visRect.width, visRect.height);&lt;br /&gt;
        g2.drawImage(dragImage,&lt;br /&gt;
                AffineTransform.getTranslateInstance(point.getLocation().getX(),&lt;br /&gt;
                point.getLocation().getY()),&lt;br /&gt;
                null);&lt;br /&gt;
        return ConnectorState.ACCEPT;&lt;br /&gt;
    }&lt;br /&gt;
    public void accept(Widget widget, Point point, Transferable transferable) {&lt;br /&gt;
        Image image = getImageFromTransferable(transferable);&lt;br /&gt;
        Widget w = GraphSceneImpl.this.addNode(new MyNode(image));&lt;br /&gt;
        w.setPreferredLocation(widget.convertLocalToScene(point));&lt;br /&gt;
    }&lt;br /&gt;
    }));&lt;br /&gt;
&lt;br /&gt;
Objaví sa nám viacero chýb, a to z toho dôvodu, že sme použili aj metody, ktoré zatiaľ nie sú definované, čiže si chvíľku nevšímajme tieto errory.&lt;br /&gt;
&lt;br /&gt;
2. Teraz do triedy '''GraphSceneImpl''' pridáme pomocnú metódu na získavanie obrázkov:&lt;br /&gt;
   private Image getImageFromTransferable(Transferable transferable) {&lt;br /&gt;
    Object o = null;&lt;br /&gt;
    try {&lt;br /&gt;
        o = transferable.getTransferData(DataFlavor.imageFlavor);&lt;br /&gt;
    } catch (IOException ex) {&lt;br /&gt;
        ex.printStackTrace();&lt;br /&gt;
    } catch (UnsupportedFlavorException ex) {&lt;br /&gt;
        ex.printStackTrace();&lt;br /&gt;
    }&lt;br /&gt;
    return o instanceof Image ? (Image) o : ImageUtilities.loadImage(&amp;quot;org/netbeans/shapesample/palette/shape1.png&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
Ako vidíme, je tu ošetrená chyba, čiže môžete do org.netbeans.shapesample.palette doplniť obrázok, ktorý sa má objaviť pri chybe, dajte mu meno shape1.png&lt;br /&gt;
&lt;br /&gt;
3. Z dôvodu toho, že máme len 3 obrázky, mohli by sme vytvoriť akoby len 3 prvky, preto si vytvoríme novú triedu s názvom '''MyNode'''. Klikneme na náš '''package shapesample pravým--new---java class''' a bude vypadať takto:&lt;br /&gt;
    public class MyNode {    &lt;br /&gt;
    private Image image;&lt;br /&gt;
    &lt;br /&gt;
    public MyNode(Image image) {&lt;br /&gt;
        this.image = image;&lt;br /&gt;
    }    &lt;br /&gt;
    public Image getImage() {&lt;br /&gt;
        return image;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
Klikneme na žltú žiarovku v tejto triede a dáme '''&amp;quot;Add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
4. Zmeníme teraz v triede '''GraphSceneImpl''' rodiča, od ktorého dedí, čiže jeden z prvý riadkov bude vypadať takto:&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&amp;lt;MyNode, String&amp;gt;{...telo triedy...}&lt;br /&gt;
čím sme zabezpečili, že naša Node je prijatá  cez Visual Library. Teraz sa nám objaví žltá žiarovka aj pri tomto riadku, lebo teraz musíme dediť iné abstraktné metódy, '''čiže klikneme na ňu --implement all abstract methods'''&lt;br /&gt;
5. Kedže používame generics, tak klikneme '''pravým na náš projekt--properties--sources''' a presvedčíme sa, že tam máme hodnotu  '''Source level = 1.5'''&lt;br /&gt;
&lt;br /&gt;
6. Následne definujeme náš nový Widget (komponent) v triede '''GraphSceneImpl''' a to tak, že tam nájdeme metódu '''protected Widget attachNodeWidget(MyNode node)''' a upravíme ju nasledovne:&lt;br /&gt;
     protected Widget attachNodeWidget(MyNode node) {&lt;br /&gt;
       IconNodeWidget widget = new IconNodeWidget(this);&lt;br /&gt;
       widget.setImage(node.getImage());&lt;br /&gt;
       widget.setLabel(Long.toString(node.hashCode()));&lt;br /&gt;
       widget.getActions().addAction(ActionFactory.createMoveAction());&lt;br /&gt;
       mainLayer.addChild(widget);&lt;br /&gt;
       return widget;&lt;br /&gt;
     }&lt;br /&gt;
Týmto nášmu Widgetu nastavíme obrázok, a priradíme mu veľké náhodné číslo, a ešte možnosť posúvať ho po našej scéne, a následne po zastavení ho pridať znova ako child.&lt;br /&gt;
&lt;br /&gt;
7. Ešte stále nám ostáva pár žltých žiaroviek, takže klikneme na každú z nich, ktorá tam bude a dáme '''&amp;quot;Add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
8. Spustíme náš projekt, a už uvidíme, že je možné presúvať komponenty (Widgety) z našej paletty na našu scénku:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pridanie funkcionality pre našu scénu ==&lt;br /&gt;
1.Teraz pridáme najprv ZOOMaction na našu scénku a to tak, že na koniec '''GraphSceneImpl''' konštruktoru pridáme:&lt;br /&gt;
    getActions().addAction(ActionFactory.createZoomAction());&lt;br /&gt;
&lt;br /&gt;
Keď spustíme teraz náš projekt, tak pri pridržaní ctrl+ kolieško myši sa nám bude zoomovať naša plocha&lt;br /&gt;
&lt;br /&gt;
2. Pridaním riadku za predošlým :&lt;br /&gt;
    getActions().addAction(ActionFactory.createPanAction());&lt;br /&gt;
Pridáme funkcionalitu, že keď user potlačí kolečko myši, tak potom môže hýbať do hociktorého smeru.&lt;br /&gt;
&lt;br /&gt;
== Pridanie funkcinality pre IconNodeWidget ==&lt;br /&gt;
Pre IconNodeWidget sme už pridali funcionalitu pre hýbanie '''MoveAction'''. Tak isto sme schopný pridať aj funkcionalitu pre '''HoverAction, SelectAction, a InplaceEditorAction''', v poradí (nadídenie, vybranie, premenovanie)&lt;br /&gt;
1. Najprv na úrovni triedy definujte &lt;br /&gt;
   private WidgetAction editorAction = ActionFactory.createInplaceEditorAction(new LabelTextFieldEditor());&lt;br /&gt;
Následne sa objaví znova žltá žiarovka, najprv dajte '''&amp;quot;Add import...&amp;quot;''', následne dajte '''&amp;quot;Create class LabelTextFieldEditor...&amp;quot;''' , čo nám pridá do nášho package triedu.&lt;br /&gt;
2.Telo tejto triedy '''LabelTextFieldEditor''' zmeníme nasledovne:&lt;br /&gt;
    class LabelTextFieldEditor implements TextFieldInplaceEditor {&lt;br /&gt;
    public boolean isEnabled(Widget widget) {&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
    public String getText(Widget widget) {&lt;br /&gt;
        return ((LabelWidget) widget).getLabel();&lt;br /&gt;
    }&lt;br /&gt;
    public void setText(Widget widget, String text) {&lt;br /&gt;
        ((LabelWidget) widget).setLabel(text);&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
Znovu sa v tejto triede objaví zopár žltých žiaroviek, poklikajte na '''&amp;quot;add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
3. Následne priradíme editorAction nášmu IconNodeWidget, a to tak, že na koniec metódy '''protected Widget attachNodeWidget(MyNode node)''' triedy '''GraphSceneImpl''' vložíme tesne nad riadok ''' mainLayer.addChild(widget);''' nasledujúci kód:&lt;br /&gt;
    widget.getLabelWidget().getActions().addAction(editorAction);&lt;br /&gt;
&lt;br /&gt;
4. Následne Hower, Clicked action dolníme tak, že po vyššie doplnenom riadku dáme tieto dva:&lt;br /&gt;
    widget.getActions().addAction(createSelectAction());&lt;br /&gt;
    widget.getActions().addAction(createObjectHoverAction());&lt;br /&gt;
&lt;br /&gt;
5. Teraz musíme trochu premyslieť poradie, v ktorom sme akcie pridali, info tu [http://bits.netbeans.org/dev/javadoc/org-netbeans-api-visual/org/netbeans/api/visual/widget/doc-files/documentation.html#OrderOfActions]&lt;br /&gt;
A následne bude naša metóda '''protected Widget attachNodeWidget''' vypadať nasledovne&lt;br /&gt;
    protected Widget attachNodeWidget(MyNode node) {&lt;br /&gt;
        IconNodeWidget widget = new IconNodeWidget(this);&lt;br /&gt;
        widget.setImage(node.getImage());&lt;br /&gt;
        widget.setLabel(Long.toString(node.hashCode()));&lt;br /&gt;
        //double-click, event sa spustí len pri doubleclicku:&lt;br /&gt;
        widget.getLabelWidget().getActions().addAction(editorAction);&lt;br /&gt;
        //single-click, event sa spustí pri single clicku&lt;br /&gt;
        widget.getActions().addAction(createSelectAction());&lt;br /&gt;
        //mouse-dragged&lt;br /&gt;
        widget.getActions().addAction(ActionFactory.createMoveAction());&lt;br /&gt;
        //mouse-over,&lt;br /&gt;
        widget.getActions().addAction(createObjectHoverAction());&lt;br /&gt;
        mainLayer.addChild(widget);&lt;br /&gt;
        return widget;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
6. Po spustení to bude môcť vypadať takto napr.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb desat.png]]&lt;br /&gt;
&lt;br /&gt;
== Záver a riešenie problémov ==&lt;br /&gt;
&lt;br /&gt;
Ukázali sme v skutku len veľmi strohú ukážku, čo by sa s NetBeans dalo spraviť, ale keďže je to problematika, ktorou by sa mali zaoberať knihy pre pokročilejších programerov, tak tu skončíme.&lt;br /&gt;
&lt;br /&gt;
V prípade nejasností je vždy dobré sa obráti na stránku NetBeans tutorials [http://netbeans.org/kb/trails/platform.html]&lt;br /&gt;
&lt;br /&gt;
V prípade problémov, resp. riešenia chýb uvedeného návodu, '''odporúčam použiť VYTVORENY FUNKCNY MODUL'''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Download:''' [http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=14027]&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Inštalácia:''' Spustite '''NetBeans--Tools--Plugins--kliknite Downloaded--Add Plugins...--nájdite stiahnutý--install'''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Spustenie pluginu:''' '''Spustite NetBeans--File--New Project--Samples--NetBeansModule--Visual Library Demo'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
V prípade nejasností, je tam všetko štruktúrované ako v našom návode, čiže by ste tam mali nájsť svoju chybu dosť rýchlo a prehľadne.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
'''ENJOY!'''&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zdroj:[http://platform.netbeans.org/tutorials/nbm-visual_library.html]&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3854</id>
		<title>Základy práce s NetBeans IDE a vývoj modulov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3854"/>
		<updated>2010-04-25T21:22:42Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: /* Pridanie funkcinality pre IconNodeWidget */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Work in progress :)'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== NetBeans IDE ==&lt;br /&gt;
NetBeans je krásne vývojové prostredie, ktorého hlavnou výhodou je jeho modulárna architektúra. Ďalším skvelým prvkom je, že sa spolieha na toolkit SWING UI, čo nám dokopy dáva obrovské výhody.&lt;br /&gt;
&lt;br /&gt;
V tomto článku sa posnažím ukázať, ako možno vytvoriť jednoduchý modul pre NetBeans, ktorý bude iba strohá ukážka toho, čo sa s NetBeans dá robit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Požiadavky na postup článkom ==&lt;br /&gt;
1. NetBeans IDE ( použitá verzia 6.8 )&amp;lt;br /&amp;gt;&lt;br /&gt;
2. Java_jdk ( použitá verzia 1.6.0.18 ) &amp;lt;br /&amp;gt;&lt;br /&gt;
3. Základné znalosti jazyka JAVA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie a spustenie projektu ==&lt;br /&gt;
1. Začneme  spustením  Netbeans  a  zvolíme  '''File--New Project--NetBeans Modules--Module'''&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb prvy.png]]&lt;br /&gt;
&lt;br /&gt;
2. Klikneme na tlačítko &amp;quot;NEXT&amp;quot;, pomenujeme si náš projekt napr. &amp;quot;ShapeSample&amp;quot;, nastavíme ho ako &amp;quot;'''main project'''&amp;quot; a vyberieme si umiestnenie, kde ho chceme uložiť a ponecháme '''Standalone Module'''&lt;br /&gt;
[[Súbor:Ytb druhy.png]]&lt;br /&gt;
&lt;br /&gt;
3. Klikneme &amp;quot;NEXT&amp;quot;, zadáme do &amp;quot;Code Name Base&amp;quot; '''org.netbeans.shapesample''', a dôležité, klikneme na '''Generate XML Layer'''. Následne klikneme na tlačítko finish, a vytvorí sa nám projekt.&lt;br /&gt;
[[Súbor:Ytb treti.png]]&lt;br /&gt;
&lt;br /&gt;
4. V okne &amp;quot;Project&amp;quot; , '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--Properties--Libraries'''. Module Dependencies klikneme na tlačítko &amp;quot;ADD&amp;quot; a pridáme:&amp;lt;br /&amp;gt;&lt;br /&gt;
''a/ Visual Library API &amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Utilities API &amp;lt;br /&amp;gt;''&lt;br /&gt;
Klikneme na tlačítko OK, čo nám pridá odkazy.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Znova v &amp;quot;Project&amp;quot; window '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--New--Other--Module Development--Window Component''' , klikneme &amp;quot;NEXT&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6. Ako Windows Position dáme '''editor''' a zaškrtneme '''Open on application start''' a klikneme &amp;quot;NEXT&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7.Do políčka &amp;quot;Class Name Prefix&amp;quot; dopíšeme '''Shape''', klikneme na tlačítko &amp;quot;FINISH&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. Vygeneruje sa nám viacero súbor, jedným z nich je '''ShapeTopComponent''', 2krát naň klikneme a otvoríme ho v design view.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. V design view, pravým klikneme na okno akoby a dáme '''Set Layout--Border Layout'''&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb stvrty.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie scény ==&lt;br /&gt;
1. Využijeme okno &amp;quot;'''Pallete'''&amp;quot; (ak nie je zobrazené dáme window---pallete) a vložíme na naš layout '''ScrollPane'''. V okne &amp;quot;Inspector&amp;quot; klikneme pravým na jScrollPane1--Change Variable Name a nastavíme hodnotu na &amp;quot;shapePane&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
2.V &amp;quot;Project&amp;quot; windows na zložku''' org--netbeans--shapesample''' klikneme pravým a dáme '''new--Java Class''', pomenujme ju &amp;quot;'''GraphSceneImpl'''&amp;quot;, a po vytvorení dopíšme do triedy '''extends GraphScene'''&lt;br /&gt;
&lt;br /&gt;
3. Žltá žiarovka s červeným výkričníkom sa nám objaví naľavo v editore, klikneme na ňu, a dáme &amp;quot;'''add Import...'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
Následne sa dám objaví ďalšia žltá žiarovka, klikneme na ňu a dáme &amp;quot;'''Implement all abstract methods'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb piaty.png]]&lt;br /&gt;
&lt;br /&gt;
4. Pre lepšiu orientáciu zmeníme názvy parametrov vygenerovaných NetBeans, a po úprave bude naša trieda vypadať takto:&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
    public GraphSceneImpl() {&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachNodeWidget(Object node) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachEdgeWidget(Object edge) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeSourceAnchor(Object edge, Object oldSourceNode, Object newSourceNode) {&lt;br /&gt;
    &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeTargetAnchor(Object edge, Object oldTargetNode, Object newTargetNode) {&lt;br /&gt;
            &lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
5.Vrátime sa k ShapeTopComponent, kde sa budeme starať o instanciu GraphSceneImpl , prepneme Design View na SourceView, a nájdeme jeho konštruktor. Do tela konštruktora doplnime nasledujúce riadky:&lt;br /&gt;
     GraphSceneImpl scene = new GraphSceneImpl();&lt;br /&gt;
     myView = scene.createView();     &lt;br /&gt;
     shapePane.setViewportView(myView);&lt;br /&gt;
     add(scene.createSatelliteView(), BorderLayout.WEST);  &lt;br /&gt;
&lt;br /&gt;
Týmto sme vytvorili 2 náhľady, jeden veľký, a jeden akoby informačný na ľavej strane, ktorý pomôže používateľovi rýchlejšie sa pohybovať po väčšom rozpätí.&lt;br /&gt;
&lt;br /&gt;
6. Na '''úrovni triedy ShapeTopComponent'''  deklarujeme (doplníme napr. hneď nad konštruktor)&lt;br /&gt;
    private JComponent myView;&lt;br /&gt;
&lt;br /&gt;
Ostanú nám ešte 2 žlté žiarovky, klikneme na každú z nich, a dáme &amp;quot;'''Add Import...'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
7. Teraz musíme ošetriť, že ak sa NetBeans IDE reštartuje, nemáme žiadny dôvod aby ShapeTopComponent pretrvával, čiže nájdeme metódu '''getPersistenceType()''' v tele triedy, a zmeníme ju nasledovne:&lt;br /&gt;
   public int getPersistenceType() {&lt;br /&gt;
       return TopComponent.PERSISTENCE_NEVER;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
8. Klikneme v &amp;quot;Project&amp;quot; window na náš projekt '''ShapeSample pravým--run'''&lt;br /&gt;
&lt;br /&gt;
9. Nezlaknite sa, spustí sa nová inštancia NetBeans IDE(ak nie je náš projekt už otvorený kliknite na '''window---Shape''') a zobrazí sa Vám niečo takéto:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb siesty.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytváranie Palety pre našu scénu ==&lt;br /&gt;
&lt;br /&gt;
Teraz aby sme pokračovali niečím užitočným, vytvoríme si palletu, na čo využijeme Pallete API, ktorá bude obsahovať komponenty, ktoré môžeme použiť a pridať na našu scénu pretiahnutím.&lt;br /&gt;
Pre ďalšie pokračovanie budeme potrebovať 3 obrázky našich komponentov, použime tieto(kliknite pravým---uložiť ako, nemente názvy):&lt;br /&gt;
[[Súbor:Image1.png]][[Súbor:Image2.png]][[Súbor:Image3.png]]&lt;br /&gt;
&lt;br /&gt;
'''Keďže náš tutoriál sa zaoberá s Visual Library API, a nie s Palette API(info tu:[http://netbeans.org/kb/trails/platform.html] ), na funkcionalitu Paletty použijeme už hotové knižnice, ktoré stiahnete tu''':&lt;br /&gt;
[http://www.sendspace.com/file/dqtnbi]&lt;br /&gt;
&lt;br /&gt;
1. Klikneme na náš projekt pravým--new--Java Package a pomenujeme ho '''org.netbeans.shapesample.palette'''&lt;br /&gt;
2. Teraz podme do zložky, kde sme nás projekt uložili, konkrétne   '''násProjekt/src/org/netbeans/shapesample/pallete'''. A do tejto''' zložky nakopírujeme stiahnuté obrázky a následne aj knižnice''', čiže tieto súbory:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Category&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ CategoryChildren &amp;lt;br /&amp;gt;&lt;br /&gt;
c/ CategoryNode &amp;lt;br /&amp;gt;&lt;br /&gt;
d/ PaletteSupport&amp;lt;br /&amp;gt;&lt;br /&gt;
e/ Shape&amp;lt;br /&amp;gt;&lt;br /&gt;
f/ ShapeChildren&amp;lt;br /&amp;gt;&lt;br /&gt;
g/ ShapeNode&amp;lt;br /&amp;gt;&lt;br /&gt;
h/ image1, image2, image3&amp;lt;br /&amp;gt;&lt;br /&gt;
po zobrazení NetBeans sa nám novo vytvorený package obnoví, a budeme tam mať načítané všetky vložené súbory, pričom niekde sa znovu objavia červené krúžky so žiarovkou, to si nevšímajme chvíľku&lt;br /&gt;
&lt;br /&gt;
3. Klikneme '''pravým na projekt--Properties--Libraries--Add''' a pridáme nasledujúce knižnice:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Actions APIs&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Nodes API&amp;lt;br /&amp;gt;&lt;br /&gt;
c/ Common Palette &amp;lt;br /&amp;gt;&lt;br /&gt;
Teraz by sme mali spozorovať, že všetky červené guličky nám zmiznú, a bude nám to vypadať nasledovne: &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb siedmy.png]]&lt;br /&gt;
&lt;br /&gt;
4. Teraz pridáme našu Palettu do ShapeTopComponentovho náhľadu, a to tak, že do konštruktoru ShapeTopComponent kod&lt;br /&gt;
     associateLookup( Lookups.fixed( new Object[] { PaletteSupport.createPalette() } ) );&lt;br /&gt;
&lt;br /&gt;
5. Znova sa nám objaví žltá žiarovka, klikneme na ňu dáme &amp;quot;Add import...&amp;quot;, následne sa tam objaví znova, čiže znova klikneme a dáme &amp;quot;Add import...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
6. Spustite modul znova(pravým--run), teraz by to už malo vypadať takto, no zatiaľ bez funkcionality, pretože potrebujeme Layer Widget: &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb osmy.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pridanie LayerWidget ==&lt;br /&gt;
&lt;br /&gt;
Pod pojmom LayerWidget si predstavte niečo priesvitné, na ktoré budeme môcť ukladať naše komponenty s paletty.&lt;br /&gt;
&lt;br /&gt;
1. Ná úrovni triedy GraphSceneImpl deklarujte náš LayerWidget&lt;br /&gt;
     private LayerWidget mainLayer;&lt;br /&gt;
&lt;br /&gt;
2. Do konštruktoru GraphSceneImpl pridajte LayerWidget ako dieťa našej scény:&lt;br /&gt;
     mainLayer = new LayerWidget (this);&lt;br /&gt;
     addChild (mainLayer);&lt;br /&gt;
&lt;br /&gt;
Teraz keď pridáme na scénu nejaký komponent s našej paletty , pridajú sa ako deti do našel mainLayer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pridanie IconNodeWidget (komponentu) cez funkcionalitu Drag and Drop (chyť a hoď) ==&lt;br /&gt;
&lt;br /&gt;
Doposiaľ, naša scéna existuje, ale nemá žiadnu funkcionalitu. Túto funkcionalitu pridáme pomocou '''&amp;quot;actions&amp;quot;'''. Action, ktorá nám umožnuje Drag &amp;amp; Drop funkcionalitu je '''AcceptAction''' . Táto action môže byť aplikovaná buď na náš komponent alebo na našu scénu. My ju budeme aplikovať na našu scénu. Využijeme '''createAcceptAction''' na to, aby sme definovali čo sa má stať po tom, ako je komponent pretiahnutý nad našu scénu.&lt;br /&gt;
&lt;br /&gt;
1. Najprv pridajte '''createAcceptAction''' spolu s jeho dvomi metódami do GraphSceneImpl konštruktoru:&lt;br /&gt;
   getActions().addAction(ActionFactory.createAcceptAction(new AcceptProvider() {&lt;br /&gt;
    public ConnectorState isAcceptable(Widget widget, Point point, Transferable transferable) {&lt;br /&gt;
        Image dragImage = getImageFromTransferable(transferable);&lt;br /&gt;
        JComponent view = getView();&lt;br /&gt;
        Graphics2D g2 = (Graphics2D) view.getGraphics();&lt;br /&gt;
        Rectangle visRect = view.getVisibleRect();&lt;br /&gt;
        view.paintImmediately(visRect.x, visRect.y, visRect.width, visRect.height);&lt;br /&gt;
        g2.drawImage(dragImage,&lt;br /&gt;
                AffineTransform.getTranslateInstance(point.getLocation().getX(),&lt;br /&gt;
                point.getLocation().getY()),&lt;br /&gt;
                null);&lt;br /&gt;
        return ConnectorState.ACCEPT;&lt;br /&gt;
    }&lt;br /&gt;
    public void accept(Widget widget, Point point, Transferable transferable) {&lt;br /&gt;
        Image image = getImageFromTransferable(transferable);&lt;br /&gt;
        Widget w = GraphSceneImpl.this.addNode(new MyNode(image));&lt;br /&gt;
        w.setPreferredLocation(widget.convertLocalToScene(point));&lt;br /&gt;
    }&lt;br /&gt;
    }));&lt;br /&gt;
&lt;br /&gt;
Objaví sa nám viacero chýb, a to z toho dôvodu, že sme použili aj metody, ktoré zatiaľ nie sú definované, čiže si chvíľku nevšímajme tieto errory.&lt;br /&gt;
&lt;br /&gt;
2. Teraz do triedy '''GraphSceneImpl''' pridáme pomocnú metódu na získavanie obrázkov:&lt;br /&gt;
   private Image getImageFromTransferable(Transferable transferable) {&lt;br /&gt;
    Object o = null;&lt;br /&gt;
    try {&lt;br /&gt;
        o = transferable.getTransferData(DataFlavor.imageFlavor);&lt;br /&gt;
    } catch (IOException ex) {&lt;br /&gt;
        ex.printStackTrace();&lt;br /&gt;
    } catch (UnsupportedFlavorException ex) {&lt;br /&gt;
        ex.printStackTrace();&lt;br /&gt;
    }&lt;br /&gt;
    return o instanceof Image ? (Image) o : ImageUtilities.loadImage(&amp;quot;org/netbeans/shapesample/palette/shape1.png&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
Ako vidíme, je tu ošetrená chyba, čiže môžete do org.netbeans.shapesample.palette doplniť obrázok, ktorý sa má objaviť pri chybe, dajte mu meno shape1.png&lt;br /&gt;
&lt;br /&gt;
3. Z dôvodu toho, že máme len 3 obrázky, mohli by sme vytvoriť akoby len 3 prvky, preto si vytvoríme novú triedu s názvom '''MyNode'''. Klikneme na náš '''package shapesample pravým--new---java class''' a bude vypadať takto:&lt;br /&gt;
    public class MyNode {    &lt;br /&gt;
    private Image image;&lt;br /&gt;
    &lt;br /&gt;
    public MyNode(Image image) {&lt;br /&gt;
        this.image = image;&lt;br /&gt;
    }    &lt;br /&gt;
    public Image getImage() {&lt;br /&gt;
        return image;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
Klikneme na žltú žiarovku v tejto triede a dáme '''&amp;quot;Add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
4. Zmeníme teraz v triede '''GraphSceneImpl''' rodiča, od ktorého dedí, čiže jeden z prvý riadkov bude vypadať takto:&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&amp;lt;MyNode, String&amp;gt;{...telo triedy...}&lt;br /&gt;
čím sme zabezpečili, že naša Node je prijatá  cez Visual Library. Teraz sa nám objaví žltá žiarovka aj pri tomto riadku, lebo teraz musíme dediť iné abstraktné metódy, '''čiže klikneme na ňu --implement all abstract methods'''&lt;br /&gt;
5. Kedže používame generics, tak klikneme '''pravým na náš projekt--properties--sources''' a presvedčíme sa, že tam máme hodnotu  '''Source level = 1.5'''&lt;br /&gt;
&lt;br /&gt;
6. Následne definujeme náš nový Widget (komponent) v triede '''GraphSceneImpl''' a to tak, že tam nájdeme metódu '''protected Widget attachNodeWidget(MyNode node)''' a upravíme ju nasledovne:&lt;br /&gt;
     protected Widget attachNodeWidget(MyNode node) {&lt;br /&gt;
       IconNodeWidget widget = new IconNodeWidget(this);&lt;br /&gt;
       widget.setImage(node.getImage());&lt;br /&gt;
       widget.setLabel(Long.toString(node.hashCode()));&lt;br /&gt;
       widget.getActions().addAction(ActionFactory.createMoveAction());&lt;br /&gt;
       mainLayer.addChild(widget);&lt;br /&gt;
       return widget;&lt;br /&gt;
     }&lt;br /&gt;
Týmto nášmu Widgetu nastavíme obrázok, a priradíme mu veľké náhodné číslo, a ešte možnosť posúvať ho po našej scéne, a následne po zastavení ho pridať znova ako child.&lt;br /&gt;
&lt;br /&gt;
7. Ešte stále nám ostáva pár žltých žiaroviek, takže klikneme na každú z nich, ktorá tam bude a dáme '''&amp;quot;Add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
8. Spustíme náš projekt, a už uvidíme, že je možné presúvať komponenty (Widgety) z našej paletty na našu scénku:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pridanie funkcionality pre našu scénu ==&lt;br /&gt;
1.Teraz pridáme najprv ZOOMaction na našu scénku a to tak, že na koniec '''GraphSceneImpl''' konštruktoru pridáme:&lt;br /&gt;
    getActions().addAction(ActionFactory.createZoomAction());&lt;br /&gt;
&lt;br /&gt;
Keď spustíme teraz náš projekt, tak pri pridržaní ctrl+ kolieško myši sa nám bude zoomovať naša plocha&lt;br /&gt;
&lt;br /&gt;
2. Pridaním riadku za predošlým :&lt;br /&gt;
    getActions().addAction(ActionFactory.createPanAction());&lt;br /&gt;
Pridáme funkcionalitu, že keď user potlačí kolečko myši, tak potom môže hýbať do hociktorého smeru.&lt;br /&gt;
&lt;br /&gt;
== Pridanie funkcinality pre IconNodeWidget ==&lt;br /&gt;
Pre IconNodeWidget sme už pridali funcionalitu pre hýbanie '''MoveAction'''. Tak isto sme schopný pridať aj funkcionalitu pre '''HoverAction, SelectAction, a InplaceEditorAction''', v poradí (nadídenie, vybranie, premenovanie)&lt;br /&gt;
1. Najprv na úrovni triedy definujte &lt;br /&gt;
   private WidgetAction editorAction = ActionFactory.createInplaceEditorAction(new LabelTextFieldEditor());&lt;br /&gt;
Následne sa objaví znova žltá žiarovka, najprv dajte '''&amp;quot;Add import...&amp;quot;''', následne dajte '''&amp;quot;Create class LabelTextFieldEditor...&amp;quot;''' , čo nám pridá do nášho package triedu.&lt;br /&gt;
2.Telo tejto triedy '''LabelTextFieldEditor''' zmeníme nasledovne:&lt;br /&gt;
    class LabelTextFieldEditor implements TextFieldInplaceEditor {&lt;br /&gt;
    public boolean isEnabled(Widget widget) {&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
    public String getText(Widget widget) {&lt;br /&gt;
        return ((LabelWidget) widget).getLabel();&lt;br /&gt;
    }&lt;br /&gt;
    public void setText(Widget widget, String text) {&lt;br /&gt;
        ((LabelWidget) widget).setLabel(text);&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
Znovu sa v tejto triede objaví zopár žltých žiaroviek, poklikajte na '''&amp;quot;add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
3. Následne priradíme editorAction nášmu IconNodeWidget, a to tak, že na koniec metódy '''protected Widget attachNodeWidget(MyNode node)''' triedy '''GraphSceneImpl''' vložíme tesne nad riadok ''' mainLayer.addChild(widget);''' nasledujúci kód:&lt;br /&gt;
    widget.getLabelWidget().getActions().addAction(editorAction);&lt;br /&gt;
&lt;br /&gt;
4. Následne Hower, Clicked action dolníme tak, že po vyššie doplnenom riadku dáme tieto dva:&lt;br /&gt;
    widget.getActions().addAction(createSelectAction());&lt;br /&gt;
    widget.getActions().addAction(createObjectHoverAction());&lt;br /&gt;
&lt;br /&gt;
5. Teraz musíme trochu premyslieť poradie, v ktorom sme akcie pridali, info tu [http://bits.netbeans.org/dev/javadoc/org-netbeans-api-visual/org/netbeans/api/visual/widget/doc-files/documentation.html#OrderOfActions]&lt;br /&gt;
A následne bude naša metóda '''protected Widget attachNodeWidget''' vypadať nasledovne&lt;br /&gt;
    protected Widget attachNodeWidget(MyNode node) {&lt;br /&gt;
        IconNodeWidget widget = new IconNodeWidget(this);&lt;br /&gt;
        widget.setImage(node.getImage());&lt;br /&gt;
        widget.setLabel(Long.toString(node.hashCode()));&lt;br /&gt;
        //double-click, event sa spustí len pri doubleclicku:&lt;br /&gt;
        widget.getLabelWidget().getActions().addAction(editorAction);&lt;br /&gt;
        //single-click, event sa spustí pri single clicku&lt;br /&gt;
        widget.getActions().addAction(createSelectAction());&lt;br /&gt;
        //mouse-dragged&lt;br /&gt;
        widget.getActions().addAction(ActionFactory.createMoveAction());&lt;br /&gt;
        //mouse-over,&lt;br /&gt;
        widget.getActions().addAction(createObjectHoverAction());&lt;br /&gt;
        mainLayer.addChild(widget);&lt;br /&gt;
        return widget;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
6. Po spustení to bude môcť vypadať takto napr.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb desat.png]]&lt;br /&gt;
&lt;br /&gt;
== Záver a riešenie problémov ==&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Ytb_desat.png&amp;diff=3853</id>
		<title>Súbor:Ytb desat.png</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Ytb_desat.png&amp;diff=3853"/>
		<updated>2010-04-25T21:22:18Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3852</id>
		<title>Základy práce s NetBeans IDE a vývoj modulov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3852"/>
		<updated>2010-04-25T21:20:18Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: /* Pridanie IconNodeWidget (komponentu) cez funkcionalitu Drag and Drop (chyť a hoď) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Work in progress :)'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== NetBeans IDE ==&lt;br /&gt;
NetBeans je krásne vývojové prostredie, ktorého hlavnou výhodou je jeho modulárna architektúra. Ďalším skvelým prvkom je, že sa spolieha na toolkit SWING UI, čo nám dokopy dáva obrovské výhody.&lt;br /&gt;
&lt;br /&gt;
V tomto článku sa posnažím ukázať, ako možno vytvoriť jednoduchý modul pre NetBeans, ktorý bude iba strohá ukážka toho, čo sa s NetBeans dá robit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Požiadavky na postup článkom ==&lt;br /&gt;
1. NetBeans IDE ( použitá verzia 6.8 )&amp;lt;br /&amp;gt;&lt;br /&gt;
2. Java_jdk ( použitá verzia 1.6.0.18 ) &amp;lt;br /&amp;gt;&lt;br /&gt;
3. Základné znalosti jazyka JAVA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie a spustenie projektu ==&lt;br /&gt;
1. Začneme  spustením  Netbeans  a  zvolíme  '''File--New Project--NetBeans Modules--Module'''&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb prvy.png]]&lt;br /&gt;
&lt;br /&gt;
2. Klikneme na tlačítko &amp;quot;NEXT&amp;quot;, pomenujeme si náš projekt napr. &amp;quot;ShapeSample&amp;quot;, nastavíme ho ako &amp;quot;'''main project'''&amp;quot; a vyberieme si umiestnenie, kde ho chceme uložiť a ponecháme '''Standalone Module'''&lt;br /&gt;
[[Súbor:Ytb druhy.png]]&lt;br /&gt;
&lt;br /&gt;
3. Klikneme &amp;quot;NEXT&amp;quot;, zadáme do &amp;quot;Code Name Base&amp;quot; '''org.netbeans.shapesample''', a dôležité, klikneme na '''Generate XML Layer'''. Následne klikneme na tlačítko finish, a vytvorí sa nám projekt.&lt;br /&gt;
[[Súbor:Ytb treti.png]]&lt;br /&gt;
&lt;br /&gt;
4. V okne &amp;quot;Project&amp;quot; , '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--Properties--Libraries'''. Module Dependencies klikneme na tlačítko &amp;quot;ADD&amp;quot; a pridáme:&amp;lt;br /&amp;gt;&lt;br /&gt;
''a/ Visual Library API &amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Utilities API &amp;lt;br /&amp;gt;''&lt;br /&gt;
Klikneme na tlačítko OK, čo nám pridá odkazy.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Znova v &amp;quot;Project&amp;quot; window '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--New--Other--Module Development--Window Component''' , klikneme &amp;quot;NEXT&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6. Ako Windows Position dáme '''editor''' a zaškrtneme '''Open on application start''' a klikneme &amp;quot;NEXT&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7.Do políčka &amp;quot;Class Name Prefix&amp;quot; dopíšeme '''Shape''', klikneme na tlačítko &amp;quot;FINISH&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. Vygeneruje sa nám viacero súbor, jedným z nich je '''ShapeTopComponent''', 2krát naň klikneme a otvoríme ho v design view.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. V design view, pravým klikneme na okno akoby a dáme '''Set Layout--Border Layout'''&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb stvrty.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie scény ==&lt;br /&gt;
1. Využijeme okno &amp;quot;'''Pallete'''&amp;quot; (ak nie je zobrazené dáme window---pallete) a vložíme na naš layout '''ScrollPane'''. V okne &amp;quot;Inspector&amp;quot; klikneme pravým na jScrollPane1--Change Variable Name a nastavíme hodnotu na &amp;quot;shapePane&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
2.V &amp;quot;Project&amp;quot; windows na zložku''' org--netbeans--shapesample''' klikneme pravým a dáme '''new--Java Class''', pomenujme ju &amp;quot;'''GraphSceneImpl'''&amp;quot;, a po vytvorení dopíšme do triedy '''extends GraphScene'''&lt;br /&gt;
&lt;br /&gt;
3. Žltá žiarovka s červeným výkričníkom sa nám objaví naľavo v editore, klikneme na ňu, a dáme &amp;quot;'''add Import...'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
Následne sa dám objaví ďalšia žltá žiarovka, klikneme na ňu a dáme &amp;quot;'''Implement all abstract methods'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb piaty.png]]&lt;br /&gt;
&lt;br /&gt;
4. Pre lepšiu orientáciu zmeníme názvy parametrov vygenerovaných NetBeans, a po úprave bude naša trieda vypadať takto:&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
    public GraphSceneImpl() {&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachNodeWidget(Object node) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachEdgeWidget(Object edge) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeSourceAnchor(Object edge, Object oldSourceNode, Object newSourceNode) {&lt;br /&gt;
    &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeTargetAnchor(Object edge, Object oldTargetNode, Object newTargetNode) {&lt;br /&gt;
            &lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
5.Vrátime sa k ShapeTopComponent, kde sa budeme starať o instanciu GraphSceneImpl , prepneme Design View na SourceView, a nájdeme jeho konštruktor. Do tela konštruktora doplnime nasledujúce riadky:&lt;br /&gt;
     GraphSceneImpl scene = new GraphSceneImpl();&lt;br /&gt;
     myView = scene.createView();     &lt;br /&gt;
     shapePane.setViewportView(myView);&lt;br /&gt;
     add(scene.createSatelliteView(), BorderLayout.WEST);  &lt;br /&gt;
&lt;br /&gt;
Týmto sme vytvorili 2 náhľady, jeden veľký, a jeden akoby informačný na ľavej strane, ktorý pomôže používateľovi rýchlejšie sa pohybovať po väčšom rozpätí.&lt;br /&gt;
&lt;br /&gt;
6. Na '''úrovni triedy ShapeTopComponent'''  deklarujeme (doplníme napr. hneď nad konštruktor)&lt;br /&gt;
    private JComponent myView;&lt;br /&gt;
&lt;br /&gt;
Ostanú nám ešte 2 žlté žiarovky, klikneme na každú z nich, a dáme &amp;quot;'''Add Import...'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
7. Teraz musíme ošetriť, že ak sa NetBeans IDE reštartuje, nemáme žiadny dôvod aby ShapeTopComponent pretrvával, čiže nájdeme metódu '''getPersistenceType()''' v tele triedy, a zmeníme ju nasledovne:&lt;br /&gt;
   public int getPersistenceType() {&lt;br /&gt;
       return TopComponent.PERSISTENCE_NEVER;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
8. Klikneme v &amp;quot;Project&amp;quot; window na náš projekt '''ShapeSample pravým--run'''&lt;br /&gt;
&lt;br /&gt;
9. Nezlaknite sa, spustí sa nová inštancia NetBeans IDE(ak nie je náš projekt už otvorený kliknite na '''window---Shape''') a zobrazí sa Vám niečo takéto:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb siesty.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytváranie Palety pre našu scénu ==&lt;br /&gt;
&lt;br /&gt;
Teraz aby sme pokračovali niečím užitočným, vytvoríme si palletu, na čo využijeme Pallete API, ktorá bude obsahovať komponenty, ktoré môžeme použiť a pridať na našu scénu pretiahnutím.&lt;br /&gt;
Pre ďalšie pokračovanie budeme potrebovať 3 obrázky našich komponentov, použime tieto(kliknite pravým---uložiť ako, nemente názvy):&lt;br /&gt;
[[Súbor:Image1.png]][[Súbor:Image2.png]][[Súbor:Image3.png]]&lt;br /&gt;
&lt;br /&gt;
'''Keďže náš tutoriál sa zaoberá s Visual Library API, a nie s Palette API(info tu:[http://netbeans.org/kb/trails/platform.html] ), na funkcionalitu Paletty použijeme už hotové knižnice, ktoré stiahnete tu''':&lt;br /&gt;
[http://www.sendspace.com/file/dqtnbi]&lt;br /&gt;
&lt;br /&gt;
1. Klikneme na náš projekt pravým--new--Java Package a pomenujeme ho '''org.netbeans.shapesample.palette'''&lt;br /&gt;
2. Teraz podme do zložky, kde sme nás projekt uložili, konkrétne   '''násProjekt/src/org/netbeans/shapesample/pallete'''. A do tejto''' zložky nakopírujeme stiahnuté obrázky a následne aj knižnice''', čiže tieto súbory:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Category&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ CategoryChildren &amp;lt;br /&amp;gt;&lt;br /&gt;
c/ CategoryNode &amp;lt;br /&amp;gt;&lt;br /&gt;
d/ PaletteSupport&amp;lt;br /&amp;gt;&lt;br /&gt;
e/ Shape&amp;lt;br /&amp;gt;&lt;br /&gt;
f/ ShapeChildren&amp;lt;br /&amp;gt;&lt;br /&gt;
g/ ShapeNode&amp;lt;br /&amp;gt;&lt;br /&gt;
h/ image1, image2, image3&amp;lt;br /&amp;gt;&lt;br /&gt;
po zobrazení NetBeans sa nám novo vytvorený package obnoví, a budeme tam mať načítané všetky vložené súbory, pričom niekde sa znovu objavia červené krúžky so žiarovkou, to si nevšímajme chvíľku&lt;br /&gt;
&lt;br /&gt;
3. Klikneme '''pravým na projekt--Properties--Libraries--Add''' a pridáme nasledujúce knižnice:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Actions APIs&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Nodes API&amp;lt;br /&amp;gt;&lt;br /&gt;
c/ Common Palette &amp;lt;br /&amp;gt;&lt;br /&gt;
Teraz by sme mali spozorovať, že všetky červené guličky nám zmiznú, a bude nám to vypadať nasledovne: &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb siedmy.png]]&lt;br /&gt;
&lt;br /&gt;
4. Teraz pridáme našu Palettu do ShapeTopComponentovho náhľadu, a to tak, že do konštruktoru ShapeTopComponent kod&lt;br /&gt;
     associateLookup( Lookups.fixed( new Object[] { PaletteSupport.createPalette() } ) );&lt;br /&gt;
&lt;br /&gt;
5. Znova sa nám objaví žltá žiarovka, klikneme na ňu dáme &amp;quot;Add import...&amp;quot;, následne sa tam objaví znova, čiže znova klikneme a dáme &amp;quot;Add import...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
6. Spustite modul znova(pravým--run), teraz by to už malo vypadať takto, no zatiaľ bez funkcionality, pretože potrebujeme Layer Widget: &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb osmy.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pridanie LayerWidget ==&lt;br /&gt;
&lt;br /&gt;
Pod pojmom LayerWidget si predstavte niečo priesvitné, na ktoré budeme môcť ukladať naše komponenty s paletty.&lt;br /&gt;
&lt;br /&gt;
1. Ná úrovni triedy GraphSceneImpl deklarujte náš LayerWidget&lt;br /&gt;
     private LayerWidget mainLayer;&lt;br /&gt;
&lt;br /&gt;
2. Do konštruktoru GraphSceneImpl pridajte LayerWidget ako dieťa našej scény:&lt;br /&gt;
     mainLayer = new LayerWidget (this);&lt;br /&gt;
     addChild (mainLayer);&lt;br /&gt;
&lt;br /&gt;
Teraz keď pridáme na scénu nejaký komponent s našej paletty , pridajú sa ako deti do našel mainLayer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pridanie IconNodeWidget (komponentu) cez funkcionalitu Drag and Drop (chyť a hoď) ==&lt;br /&gt;
&lt;br /&gt;
Doposiaľ, naša scéna existuje, ale nemá žiadnu funkcionalitu. Túto funkcionalitu pridáme pomocou '''&amp;quot;actions&amp;quot;'''. Action, ktorá nám umožnuje Drag &amp;amp; Drop funkcionalitu je '''AcceptAction''' . Táto action môže byť aplikovaná buď na náš komponent alebo na našu scénu. My ju budeme aplikovať na našu scénu. Využijeme '''createAcceptAction''' na to, aby sme definovali čo sa má stať po tom, ako je komponent pretiahnutý nad našu scénu.&lt;br /&gt;
&lt;br /&gt;
1. Najprv pridajte '''createAcceptAction''' spolu s jeho dvomi metódami do GraphSceneImpl konštruktoru:&lt;br /&gt;
   getActions().addAction(ActionFactory.createAcceptAction(new AcceptProvider() {&lt;br /&gt;
    public ConnectorState isAcceptable(Widget widget, Point point, Transferable transferable) {&lt;br /&gt;
        Image dragImage = getImageFromTransferable(transferable);&lt;br /&gt;
        JComponent view = getView();&lt;br /&gt;
        Graphics2D g2 = (Graphics2D) view.getGraphics();&lt;br /&gt;
        Rectangle visRect = view.getVisibleRect();&lt;br /&gt;
        view.paintImmediately(visRect.x, visRect.y, visRect.width, visRect.height);&lt;br /&gt;
        g2.drawImage(dragImage,&lt;br /&gt;
                AffineTransform.getTranslateInstance(point.getLocation().getX(),&lt;br /&gt;
                point.getLocation().getY()),&lt;br /&gt;
                null);&lt;br /&gt;
        return ConnectorState.ACCEPT;&lt;br /&gt;
    }&lt;br /&gt;
    public void accept(Widget widget, Point point, Transferable transferable) {&lt;br /&gt;
        Image image = getImageFromTransferable(transferable);&lt;br /&gt;
        Widget w = GraphSceneImpl.this.addNode(new MyNode(image));&lt;br /&gt;
        w.setPreferredLocation(widget.convertLocalToScene(point));&lt;br /&gt;
    }&lt;br /&gt;
    }));&lt;br /&gt;
&lt;br /&gt;
Objaví sa nám viacero chýb, a to z toho dôvodu, že sme použili aj metody, ktoré zatiaľ nie sú definované, čiže si chvíľku nevšímajme tieto errory.&lt;br /&gt;
&lt;br /&gt;
2. Teraz do triedy '''GraphSceneImpl''' pridáme pomocnú metódu na získavanie obrázkov:&lt;br /&gt;
   private Image getImageFromTransferable(Transferable transferable) {&lt;br /&gt;
    Object o = null;&lt;br /&gt;
    try {&lt;br /&gt;
        o = transferable.getTransferData(DataFlavor.imageFlavor);&lt;br /&gt;
    } catch (IOException ex) {&lt;br /&gt;
        ex.printStackTrace();&lt;br /&gt;
    } catch (UnsupportedFlavorException ex) {&lt;br /&gt;
        ex.printStackTrace();&lt;br /&gt;
    }&lt;br /&gt;
    return o instanceof Image ? (Image) o : ImageUtilities.loadImage(&amp;quot;org/netbeans/shapesample/palette/shape1.png&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
Ako vidíme, je tu ošetrená chyba, čiže môžete do org.netbeans.shapesample.palette doplniť obrázok, ktorý sa má objaviť pri chybe, dajte mu meno shape1.png&lt;br /&gt;
&lt;br /&gt;
3. Z dôvodu toho, že máme len 3 obrázky, mohli by sme vytvoriť akoby len 3 prvky, preto si vytvoríme novú triedu s názvom '''MyNode'''. Klikneme na náš '''package shapesample pravým--new---java class''' a bude vypadať takto:&lt;br /&gt;
    public class MyNode {    &lt;br /&gt;
    private Image image;&lt;br /&gt;
    &lt;br /&gt;
    public MyNode(Image image) {&lt;br /&gt;
        this.image = image;&lt;br /&gt;
    }    &lt;br /&gt;
    public Image getImage() {&lt;br /&gt;
        return image;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
Klikneme na žltú žiarovku v tejto triede a dáme '''&amp;quot;Add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
4. Zmeníme teraz v triede '''GraphSceneImpl''' rodiča, od ktorého dedí, čiže jeden z prvý riadkov bude vypadať takto:&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&amp;lt;MyNode, String&amp;gt;{...telo triedy...}&lt;br /&gt;
čím sme zabezpečili, že naša Node je prijatá  cez Visual Library. Teraz sa nám objaví žltá žiarovka aj pri tomto riadku, lebo teraz musíme dediť iné abstraktné metódy, '''čiže klikneme na ňu --implement all abstract methods'''&lt;br /&gt;
5. Kedže používame generics, tak klikneme '''pravým na náš projekt--properties--sources''' a presvedčíme sa, že tam máme hodnotu  '''Source level = 1.5'''&lt;br /&gt;
&lt;br /&gt;
6. Následne definujeme náš nový Widget (komponent) v triede '''GraphSceneImpl''' a to tak, že tam nájdeme metódu '''protected Widget attachNodeWidget(MyNode node)''' a upravíme ju nasledovne:&lt;br /&gt;
     protected Widget attachNodeWidget(MyNode node) {&lt;br /&gt;
       IconNodeWidget widget = new IconNodeWidget(this);&lt;br /&gt;
       widget.setImage(node.getImage());&lt;br /&gt;
       widget.setLabel(Long.toString(node.hashCode()));&lt;br /&gt;
       widget.getActions().addAction(ActionFactory.createMoveAction());&lt;br /&gt;
       mainLayer.addChild(widget);&lt;br /&gt;
       return widget;&lt;br /&gt;
     }&lt;br /&gt;
Týmto nášmu Widgetu nastavíme obrázok, a priradíme mu veľké náhodné číslo, a ešte možnosť posúvať ho po našej scéne, a následne po zastavení ho pridať znova ako child.&lt;br /&gt;
&lt;br /&gt;
7. Ešte stále nám ostáva pár žltých žiaroviek, takže klikneme na každú z nich, ktorá tam bude a dáme '''&amp;quot;Add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
8. Spustíme náš projekt, a už uvidíme, že je možné presúvať komponenty (Widgety) z našej paletty na našu scénku:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pridanie funkcionality pre našu scénu ==&lt;br /&gt;
1.Teraz pridáme najprv ZOOMaction na našu scénku a to tak, že na koniec '''GraphSceneImpl''' konštruktoru pridáme:&lt;br /&gt;
    getActions().addAction(ActionFactory.createZoomAction());&lt;br /&gt;
&lt;br /&gt;
Keď spustíme teraz náš projekt, tak pri pridržaní ctrl+ kolieško myši sa nám bude zoomovať naša plocha&lt;br /&gt;
&lt;br /&gt;
2. Pridaním riadku za predošlým :&lt;br /&gt;
    getActions().addAction(ActionFactory.createPanAction());&lt;br /&gt;
Pridáme funkcionalitu, že keď user potlačí kolečko myši, tak potom môže hýbať do hociktorého smeru.&lt;br /&gt;
&lt;br /&gt;
== Pridanie funkcinality pre IconNodeWidget ==&lt;br /&gt;
Pre IconNodeWidget sme už pridali funcionalitu pre hýbanie '''MoveAction'''. Tak isto sme schopný pridať aj funkcionalitu pre '''HoverAction, SelectAction, a InplaceEditorAction''', v poradí (nadídenie, vybranie, premenovanie)&lt;br /&gt;
1. Najprv na úrovni triedy definujte &lt;br /&gt;
   private WidgetAction editorAction = ActionFactory.createInplaceEditorAction(new LabelTextFieldEditor());&lt;br /&gt;
Následne sa objaví znova žltá žiarovka, najprv dajte '''&amp;quot;Add import...&amp;quot;''', následne dajte '''&amp;quot;Create class LabelTextFieldEditor...&amp;quot;''' , čo nám pridá do nášho package triedu.&lt;br /&gt;
2.Telo tejto triedy '''LabelTextFieldEditor''' zmeníme nasledovne:&lt;br /&gt;
    class LabelTextFieldEditor implements TextFieldInplaceEditor {&lt;br /&gt;
    public boolean isEnabled(Widget widget) {&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
    public String getText(Widget widget) {&lt;br /&gt;
        return ((LabelWidget) widget).getLabel();&lt;br /&gt;
    }&lt;br /&gt;
    public void setText(Widget widget, String text) {&lt;br /&gt;
        ((LabelWidget) widget).setLabel(text);&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
Znovu sa v tejto triede objaví zopár žltých žiaroviek, poklikajte na '''&amp;quot;add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
3. Následne priradíme editorAction nášmu IconNodeWidget, a to tak, že na koniec metódy '''protected Widget attachNodeWidget(MyNode node)''' triedy '''GraphSceneImpl''' vložíme tesne nad riadok ''' mainLayer.addChild(widget);''' nasledujúci kód:&lt;br /&gt;
    widget.getLabelWidget().getActions().addAction(editorAction);&lt;br /&gt;
&lt;br /&gt;
4. Následne Hower, Clicked action dolníme tak, že po vyššie doplnenom riadku dáme tieto dva:&lt;br /&gt;
    widget.getActions().addAction(createSelectAction());&lt;br /&gt;
    widget.getActions().addAction(createObjectHoverAction());&lt;br /&gt;
&lt;br /&gt;
5. Teraz musíme trochu premyslieť poradie, v ktorom sme akcie pridali, info tu [http://bits.netbeans.org/dev/javadoc/org-netbeans-api-visual/org/netbeans/api/visual/widget/doc-files/documentation.html#OrderOfActions]&lt;br /&gt;
A následne bude naša metóda '''protected Widget attachNodeWidget''' vypadať nasledovne&lt;br /&gt;
    protected Widget attachNodeWidget(MyNode node) {&lt;br /&gt;
        IconNodeWidget widget = new IconNodeWidget(this);&lt;br /&gt;
        widget.setImage(node.getImage());&lt;br /&gt;
        widget.setLabel(Long.toString(node.hashCode()));&lt;br /&gt;
        //double-click, event sa spustí len pri doubleclicku:&lt;br /&gt;
        widget.getLabelWidget().getActions().addAction(editorAction);&lt;br /&gt;
        //single-click, event sa spustí pri single clicku&lt;br /&gt;
        widget.getActions().addAction(createSelectAction());&lt;br /&gt;
        //mouse-dragged&lt;br /&gt;
        widget.getActions().addAction(ActionFactory.createMoveAction());&lt;br /&gt;
        //mouse-over,&lt;br /&gt;
        widget.getActions().addAction(createObjectHoverAction());&lt;br /&gt;
        mainLayer.addChild(widget);&lt;br /&gt;
        return widget;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Záver a riešenie problémov ==&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3851</id>
		<title>Základy práce s NetBeans IDE a vývoj modulov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3851"/>
		<updated>2010-04-25T20:54:46Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: /* Pridanie IconNodeWidget (komponentu) cez funkcionalitu Drag and Drop (chyť a hoď) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Work in progress :)'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== NetBeans IDE ==&lt;br /&gt;
NetBeans je krásne vývojové prostredie, ktorého hlavnou výhodou je jeho modulárna architektúra. Ďalším skvelým prvkom je, že sa spolieha na toolkit SWING UI, čo nám dokopy dáva obrovské výhody.&lt;br /&gt;
&lt;br /&gt;
V tomto článku sa posnažím ukázať, ako možno vytvoriť jednoduchý modul pre NetBeans, ktorý bude iba strohá ukážka toho, čo sa s NetBeans dá robit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Požiadavky na postup článkom ==&lt;br /&gt;
1. NetBeans IDE ( použitá verzia 6.8 )&amp;lt;br /&amp;gt;&lt;br /&gt;
2. Java_jdk ( použitá verzia 1.6.0.18 ) &amp;lt;br /&amp;gt;&lt;br /&gt;
3. Základné znalosti jazyka JAVA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie a spustenie projektu ==&lt;br /&gt;
1. Začneme  spustením  Netbeans  a  zvolíme  '''File--New Project--NetBeans Modules--Module'''&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb prvy.png]]&lt;br /&gt;
&lt;br /&gt;
2. Klikneme na tlačítko &amp;quot;NEXT&amp;quot;, pomenujeme si náš projekt napr. &amp;quot;ShapeSample&amp;quot;, nastavíme ho ako &amp;quot;'''main project'''&amp;quot; a vyberieme si umiestnenie, kde ho chceme uložiť a ponecháme '''Standalone Module'''&lt;br /&gt;
[[Súbor:Ytb druhy.png]]&lt;br /&gt;
&lt;br /&gt;
3. Klikneme &amp;quot;NEXT&amp;quot;, zadáme do &amp;quot;Code Name Base&amp;quot; '''org.netbeans.shapesample''', a dôležité, klikneme na '''Generate XML Layer'''. Následne klikneme na tlačítko finish, a vytvorí sa nám projekt.&lt;br /&gt;
[[Súbor:Ytb treti.png]]&lt;br /&gt;
&lt;br /&gt;
4. V okne &amp;quot;Project&amp;quot; , '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--Properties--Libraries'''. Module Dependencies klikneme na tlačítko &amp;quot;ADD&amp;quot; a pridáme:&amp;lt;br /&amp;gt;&lt;br /&gt;
''a/ Visual Library API &amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Utilities API &amp;lt;br /&amp;gt;''&lt;br /&gt;
Klikneme na tlačítko OK, čo nám pridá odkazy.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Znova v &amp;quot;Project&amp;quot; window '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--New--Other--Module Development--Window Component''' , klikneme &amp;quot;NEXT&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6. Ako Windows Position dáme '''editor''' a zaškrtneme '''Open on application start''' a klikneme &amp;quot;NEXT&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7.Do políčka &amp;quot;Class Name Prefix&amp;quot; dopíšeme '''Shape''', klikneme na tlačítko &amp;quot;FINISH&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. Vygeneruje sa nám viacero súbor, jedným z nich je '''ShapeTopComponent''', 2krát naň klikneme a otvoríme ho v design view.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. V design view, pravým klikneme na okno akoby a dáme '''Set Layout--Border Layout'''&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb stvrty.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie scény ==&lt;br /&gt;
1. Využijeme okno &amp;quot;'''Pallete'''&amp;quot; (ak nie je zobrazené dáme window---pallete) a vložíme na naš layout '''ScrollPane'''. V okne &amp;quot;Inspector&amp;quot; klikneme pravým na jScrollPane1--Change Variable Name a nastavíme hodnotu na &amp;quot;shapePane&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
2.V &amp;quot;Project&amp;quot; windows na zložku''' org--netbeans--shapesample''' klikneme pravým a dáme '''new--Java Class''', pomenujme ju &amp;quot;'''GraphSceneImpl'''&amp;quot;, a po vytvorení dopíšme do triedy '''extends GraphScene'''&lt;br /&gt;
&lt;br /&gt;
3. Žltá žiarovka s červeným výkričníkom sa nám objaví naľavo v editore, klikneme na ňu, a dáme &amp;quot;'''add Import...'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
Následne sa dám objaví ďalšia žltá žiarovka, klikneme na ňu a dáme &amp;quot;'''Implement all abstract methods'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb piaty.png]]&lt;br /&gt;
&lt;br /&gt;
4. Pre lepšiu orientáciu zmeníme názvy parametrov vygenerovaných NetBeans, a po úprave bude naša trieda vypadať takto:&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
    public GraphSceneImpl() {&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachNodeWidget(Object node) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachEdgeWidget(Object edge) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeSourceAnchor(Object edge, Object oldSourceNode, Object newSourceNode) {&lt;br /&gt;
    &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeTargetAnchor(Object edge, Object oldTargetNode, Object newTargetNode) {&lt;br /&gt;
            &lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
5.Vrátime sa k ShapeTopComponent, kde sa budeme starať o instanciu GraphSceneImpl , prepneme Design View na SourceView, a nájdeme jeho konštruktor. Do tela konštruktora doplnime nasledujúce riadky:&lt;br /&gt;
     GraphSceneImpl scene = new GraphSceneImpl();&lt;br /&gt;
     myView = scene.createView();     &lt;br /&gt;
     shapePane.setViewportView(myView);&lt;br /&gt;
     add(scene.createSatelliteView(), BorderLayout.WEST);  &lt;br /&gt;
&lt;br /&gt;
Týmto sme vytvorili 2 náhľady, jeden veľký, a jeden akoby informačný na ľavej strane, ktorý pomôže používateľovi rýchlejšie sa pohybovať po väčšom rozpätí.&lt;br /&gt;
&lt;br /&gt;
6. Na '''úrovni triedy ShapeTopComponent'''  deklarujeme (doplníme napr. hneď nad konštruktor)&lt;br /&gt;
    private JComponent myView;&lt;br /&gt;
&lt;br /&gt;
Ostanú nám ešte 2 žlté žiarovky, klikneme na každú z nich, a dáme &amp;quot;'''Add Import...'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
7. Teraz musíme ošetriť, že ak sa NetBeans IDE reštartuje, nemáme žiadny dôvod aby ShapeTopComponent pretrvával, čiže nájdeme metódu '''getPersistenceType()''' v tele triedy, a zmeníme ju nasledovne:&lt;br /&gt;
   public int getPersistenceType() {&lt;br /&gt;
       return TopComponent.PERSISTENCE_NEVER;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
8. Klikneme v &amp;quot;Project&amp;quot; window na náš projekt '''ShapeSample pravým--run'''&lt;br /&gt;
&lt;br /&gt;
9. Nezlaknite sa, spustí sa nová inštancia NetBeans IDE(ak nie je náš projekt už otvorený kliknite na '''window---Shape''') a zobrazí sa Vám niečo takéto:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb siesty.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytváranie Palety pre našu scénu ==&lt;br /&gt;
&lt;br /&gt;
Teraz aby sme pokračovali niečím užitočným, vytvoríme si palletu, na čo využijeme Pallete API, ktorá bude obsahovať komponenty, ktoré môžeme použiť a pridať na našu scénu pretiahnutím.&lt;br /&gt;
Pre ďalšie pokračovanie budeme potrebovať 3 obrázky našich komponentov, použime tieto(kliknite pravým---uložiť ako, nemente názvy):&lt;br /&gt;
[[Súbor:Image1.png]][[Súbor:Image2.png]][[Súbor:Image3.png]]&lt;br /&gt;
&lt;br /&gt;
'''Keďže náš tutoriál sa zaoberá s Visual Library API, a nie s Palette API(info tu:[http://netbeans.org/kb/trails/platform.html] ), na funkcionalitu Paletty použijeme už hotové knižnice, ktoré stiahnete tu''':&lt;br /&gt;
[http://www.sendspace.com/file/dqtnbi]&lt;br /&gt;
&lt;br /&gt;
1. Klikneme na náš projekt pravým--new--Java Package a pomenujeme ho '''org.netbeans.shapesample.palette'''&lt;br /&gt;
2. Teraz podme do zložky, kde sme nás projekt uložili, konkrétne   '''násProjekt/src/org/netbeans/shapesample/pallete'''. A do tejto''' zložky nakopírujeme stiahnuté obrázky a následne aj knižnice''', čiže tieto súbory:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Category&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ CategoryChildren &amp;lt;br /&amp;gt;&lt;br /&gt;
c/ CategoryNode &amp;lt;br /&amp;gt;&lt;br /&gt;
d/ PaletteSupport&amp;lt;br /&amp;gt;&lt;br /&gt;
e/ Shape&amp;lt;br /&amp;gt;&lt;br /&gt;
f/ ShapeChildren&amp;lt;br /&amp;gt;&lt;br /&gt;
g/ ShapeNode&amp;lt;br /&amp;gt;&lt;br /&gt;
h/ image1, image2, image3&amp;lt;br /&amp;gt;&lt;br /&gt;
po zobrazení NetBeans sa nám novo vytvorený package obnoví, a budeme tam mať načítané všetky vložené súbory, pričom niekde sa znovu objavia červené krúžky so žiarovkou, to si nevšímajme chvíľku&lt;br /&gt;
&lt;br /&gt;
3. Klikneme '''pravým na projekt--Properties--Libraries--Add''' a pridáme nasledujúce knižnice:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Actions APIs&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Nodes API&amp;lt;br /&amp;gt;&lt;br /&gt;
c/ Common Palette &amp;lt;br /&amp;gt;&lt;br /&gt;
Teraz by sme mali spozorovať, že všetky červené guličky nám zmiznú, a bude nám to vypadať nasledovne: &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb siedmy.png]]&lt;br /&gt;
&lt;br /&gt;
4. Teraz pridáme našu Palettu do ShapeTopComponentovho náhľadu, a to tak, že do konštruktoru ShapeTopComponent kod&lt;br /&gt;
     associateLookup( Lookups.fixed( new Object[] { PaletteSupport.createPalette() } ) );&lt;br /&gt;
&lt;br /&gt;
5. Znova sa nám objaví žltá žiarovka, klikneme na ňu dáme &amp;quot;Add import...&amp;quot;, následne sa tam objaví znova, čiže znova klikneme a dáme &amp;quot;Add import...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
6. Spustite modul znova(pravým--run), teraz by to už malo vypadať takto, no zatiaľ bez funkcionality, pretože potrebujeme Layer Widget: &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb osmy.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pridanie LayerWidget ==&lt;br /&gt;
&lt;br /&gt;
Pod pojmom LayerWidget si predstavte niečo priesvitné, na ktoré budeme môcť ukladať naše komponenty s paletty.&lt;br /&gt;
&lt;br /&gt;
1. Ná úrovni triedy GraphSceneImpl deklarujte náš LayerWidget&lt;br /&gt;
     private LayerWidget mainLayer;&lt;br /&gt;
&lt;br /&gt;
2. Do konštruktoru GraphSceneImpl pridajte LayerWidget ako dieťa našej scény:&lt;br /&gt;
     mainLayer = new LayerWidget (this);&lt;br /&gt;
     addChild (mainLayer);&lt;br /&gt;
&lt;br /&gt;
Teraz keď pridáme na scénu nejaký komponent s našej paletty , pridajú sa ako deti do našel mainLayer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pridanie IconNodeWidget (komponentu) cez funkcionalitu Drag and Drop (chyť a hoď) ==&lt;br /&gt;
&lt;br /&gt;
Doposiaľ, naša scéna existuje, ale nemá žiadnu funkcionalitu. Túto funkcionalitu pridáme pomocou '''&amp;quot;actions&amp;quot;'''. Action, ktorá nám umožnuje Drag &amp;amp; Drop funkcionalitu je '''AcceptAction''' . Táto action môže byť aplikovaná buď na náš komponent alebo na našu scénu. My ju budeme aplikovať na našu scénu. Využijeme '''createAcceptAction''' na to, aby sme definovali čo sa má stať po tom, ako je komponent pretiahnutý nad našu scénu.&lt;br /&gt;
&lt;br /&gt;
1. Najprv pridajte '''createAcceptAction''' spolu s jeho dvomi metódami do GraphSceneImpl konštruktoru:&lt;br /&gt;
   getActions().addAction(ActionFactory.createAcceptAction(new AcceptProvider() {&lt;br /&gt;
    public ConnectorState isAcceptable(Widget widget, Point point, Transferable transferable) {&lt;br /&gt;
        Image dragImage = getImageFromTransferable(transferable);&lt;br /&gt;
        JComponent view = getView();&lt;br /&gt;
        Graphics2D g2 = (Graphics2D) view.getGraphics();&lt;br /&gt;
        Rectangle visRect = view.getVisibleRect();&lt;br /&gt;
        view.paintImmediately(visRect.x, visRect.y, visRect.width, visRect.height);&lt;br /&gt;
        g2.drawImage(dragImage,&lt;br /&gt;
                AffineTransform.getTranslateInstance(point.getLocation().getX(),&lt;br /&gt;
                point.getLocation().getY()),&lt;br /&gt;
                null);&lt;br /&gt;
        return ConnectorState.ACCEPT;&lt;br /&gt;
    }&lt;br /&gt;
    public void accept(Widget widget, Point point, Transferable transferable) {&lt;br /&gt;
        Image image = getImageFromTransferable(transferable);&lt;br /&gt;
        Widget w = GraphSceneImpl.this.addNode(new MyNode(image));&lt;br /&gt;
        w.setPreferredLocation(widget.convertLocalToScene(point));&lt;br /&gt;
    }&lt;br /&gt;
    }));&lt;br /&gt;
&lt;br /&gt;
Objaví sa nám viacero chýb, a to z toho dôvodu, že sme použili aj metody, ktoré zatiaľ nie sú definované, čiže si chvíľku nevšímajme tieto errory.&lt;br /&gt;
&lt;br /&gt;
2. Teraz do triedy '''GraphSceneImpl''' pridáme pomocnú metódu na získavanie obrázkov:&lt;br /&gt;
   private Image getImageFromTransferable(Transferable transferable) {&lt;br /&gt;
    Object o = null;&lt;br /&gt;
    try {&lt;br /&gt;
        o = transferable.getTransferData(DataFlavor.imageFlavor);&lt;br /&gt;
    } catch (IOException ex) {&lt;br /&gt;
        ex.printStackTrace();&lt;br /&gt;
    } catch (UnsupportedFlavorException ex) {&lt;br /&gt;
        ex.printStackTrace();&lt;br /&gt;
    }&lt;br /&gt;
    return o instanceof Image ? (Image) o : ImageUtilities.loadImage(&amp;quot;org/netbeans/shapesample/palette/shape1.png&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
Ako vidíme, je tu ošetrená chyba, čiže môžete do org.netbeans.shapesample.palette doplniť obrázok, ktorý sa má objaviť pri chybe, dajte mu meno shape1.png&lt;br /&gt;
&lt;br /&gt;
3. Z dôvodu toho, že máme len 3 obrázky, mohli by sme vytvoriť akoby len 3 prvky, preto si vytvoríme novú triedu s názvom '''MyNode'''. Klikneme na náš '''package shapesample pravým--new---java class''' a bude vypadať takto:&lt;br /&gt;
    public class MyNode {    &lt;br /&gt;
    private Image image;&lt;br /&gt;
    &lt;br /&gt;
    public MyNode(Image image) {&lt;br /&gt;
        this.image = image;&lt;br /&gt;
    }    &lt;br /&gt;
    public Image getImage() {&lt;br /&gt;
        return image;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
Klikneme na žltú žiarovku v tejto triede a dáme '''&amp;quot;Add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
4. Zmeníme teraz v triede '''GraphSceneImpl''' rodiča, od ktorého dedí, čiže jeden z prvý riadkov bude vypadať takto:&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&amp;lt;MyNode, String&amp;gt;{...telo triedy...}&lt;br /&gt;
čím sme zabezpečili, že naša Node je prijatá  cez Visual Library. Teraz sa nám objaví žltá žiarovka aj pri tomto riadku, lebo teraz musíme dediť iné abstraktné metódy, '''čiže klikneme na ňu --implement all abstract methods'''&lt;br /&gt;
5. Kedže používame generics, tak klikneme '''pravým na náš projekt--properties--sources''' a presvedčíme sa, že tam máme hodnotu  '''Source level = 1.5'''&lt;br /&gt;
&lt;br /&gt;
6. Následne definujeme náš nový Widget (komponent) v triede '''GraphSceneImpl''' a to tak, že tam nájdeme metódu '''protected Widget attachNodeWidget(MyNode node)''' a upravíme ju nasledovne:&lt;br /&gt;
     protected Widget attachNodeWidget(MyNode node) {&lt;br /&gt;
       IconNodeWidget widget = new IconNodeWidget(this);&lt;br /&gt;
       widget.setImage(node.getImage());&lt;br /&gt;
       widget.setLabel(Long.toString(node.hashCode()));&lt;br /&gt;
       widget.getActions().addAction(ActionFactory.createMoveAction());&lt;br /&gt;
       mainLayer.addChild(widget);&lt;br /&gt;
       return widget;&lt;br /&gt;
     }&lt;br /&gt;
Týmto nášmu Widgetu nastavíme obrázok, a priradíme mu veľké náhodné číslo, a ešte možnosť posúvať ho po našej scéne, a následne po zastavení ho pridať znova ako child.&lt;br /&gt;
&lt;br /&gt;
7. Ešte stále nám ostáva pár žltých žiaroviek, takže klikneme na každú z nich, ktorá tam bude a dáme '''&amp;quot;Add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
8. Spustíme náš projekt, a už uvidíme, že je možné presúvať komponenty (Widgety) z našej paletty na našu scénku:&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3849</id>
		<title>Základy práce s NetBeans IDE a vývoj modulov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3849"/>
		<updated>2010-04-25T20:48:03Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: /* Pridanie IconNodeWidget (komponentu) cez funkcionalitu Drag and Drop (chyť a hoď) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Work in progress :)'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== NetBeans IDE ==&lt;br /&gt;
NetBeans je krásne vývojové prostredie, ktorého hlavnou výhodou je jeho modulárna architektúra. Ďalším skvelým prvkom je, že sa spolieha na toolkit SWING UI, čo nám dokopy dáva obrovské výhody.&lt;br /&gt;
&lt;br /&gt;
V tomto článku sa posnažím ukázať, ako možno vytvoriť jednoduchý modul pre NetBeans, ktorý bude iba strohá ukážka toho, čo sa s NetBeans dá robit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Požiadavky na postup článkom ==&lt;br /&gt;
1. NetBeans IDE ( použitá verzia 6.8 )&amp;lt;br /&amp;gt;&lt;br /&gt;
2. Java_jdk ( použitá verzia 1.6.0.18 ) &amp;lt;br /&amp;gt;&lt;br /&gt;
3. Základné znalosti jazyka JAVA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie a spustenie projektu ==&lt;br /&gt;
1. Začneme  spustením  Netbeans  a  zvolíme  '''File--New Project--NetBeans Modules--Module'''&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb prvy.png]]&lt;br /&gt;
&lt;br /&gt;
2. Klikneme na tlačítko &amp;quot;NEXT&amp;quot;, pomenujeme si náš projekt napr. &amp;quot;ShapeSample&amp;quot;, nastavíme ho ako &amp;quot;'''main project'''&amp;quot; a vyberieme si umiestnenie, kde ho chceme uložiť a ponecháme '''Standalone Module'''&lt;br /&gt;
[[Súbor:Ytb druhy.png]]&lt;br /&gt;
&lt;br /&gt;
3. Klikneme &amp;quot;NEXT&amp;quot;, zadáme do &amp;quot;Code Name Base&amp;quot; '''org.netbeans.shapesample''', a dôležité, klikneme na '''Generate XML Layer'''. Následne klikneme na tlačítko finish, a vytvorí sa nám projekt.&lt;br /&gt;
[[Súbor:Ytb treti.png]]&lt;br /&gt;
&lt;br /&gt;
4. V okne &amp;quot;Project&amp;quot; , '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--Properties--Libraries'''. Module Dependencies klikneme na tlačítko &amp;quot;ADD&amp;quot; a pridáme:&amp;lt;br /&amp;gt;&lt;br /&gt;
''a/ Visual Library API &amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Utilities API &amp;lt;br /&amp;gt;''&lt;br /&gt;
Klikneme na tlačítko OK, čo nám pridá odkazy.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Znova v &amp;quot;Project&amp;quot; window '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--New--Other--Module Development--Window Component''' , klikneme &amp;quot;NEXT&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6. Ako Windows Position dáme '''editor''' a zaškrtneme '''Open on application start''' a klikneme &amp;quot;NEXT&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7.Do políčka &amp;quot;Class Name Prefix&amp;quot; dopíšeme '''Shape''', klikneme na tlačítko &amp;quot;FINISH&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. Vygeneruje sa nám viacero súbor, jedným z nich je '''ShapeTopComponent''', 2krát naň klikneme a otvoríme ho v design view.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. V design view, pravým klikneme na okno akoby a dáme '''Set Layout--Border Layout'''&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb stvrty.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie scény ==&lt;br /&gt;
1. Využijeme okno &amp;quot;'''Pallete'''&amp;quot; (ak nie je zobrazené dáme window---pallete) a vložíme na naš layout '''ScrollPane'''. V okne &amp;quot;Inspector&amp;quot; klikneme pravým na jScrollPane1--Change Variable Name a nastavíme hodnotu na &amp;quot;shapePane&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
2.V &amp;quot;Project&amp;quot; windows na zložku''' org--netbeans--shapesample''' klikneme pravým a dáme '''new--Java Class''', pomenujme ju &amp;quot;'''GraphSceneImpl'''&amp;quot;, a po vytvorení dopíšme do triedy '''extends GraphScene'''&lt;br /&gt;
&lt;br /&gt;
3. Žltá žiarovka s červeným výkričníkom sa nám objaví naľavo v editore, klikneme na ňu, a dáme &amp;quot;'''add Import...'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
Následne sa dám objaví ďalšia žltá žiarovka, klikneme na ňu a dáme &amp;quot;'''Implement all abstract methods'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb piaty.png]]&lt;br /&gt;
&lt;br /&gt;
4. Pre lepšiu orientáciu zmeníme názvy parametrov vygenerovaných NetBeans, a po úprave bude naša trieda vypadať takto:&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
    public GraphSceneImpl() {&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachNodeWidget(Object node) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachEdgeWidget(Object edge) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeSourceAnchor(Object edge, Object oldSourceNode, Object newSourceNode) {&lt;br /&gt;
    &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeTargetAnchor(Object edge, Object oldTargetNode, Object newTargetNode) {&lt;br /&gt;
            &lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
5.Vrátime sa k ShapeTopComponent, kde sa budeme starať o instanciu GraphSceneImpl , prepneme Design View na SourceView, a nájdeme jeho konštruktor. Do tela konštruktora doplnime nasledujúce riadky:&lt;br /&gt;
     GraphSceneImpl scene = new GraphSceneImpl();&lt;br /&gt;
     myView = scene.createView();     &lt;br /&gt;
     shapePane.setViewportView(myView);&lt;br /&gt;
     add(scene.createSatelliteView(), BorderLayout.WEST);  &lt;br /&gt;
&lt;br /&gt;
Týmto sme vytvorili 2 náhľady, jeden veľký, a jeden akoby informačný na ľavej strane, ktorý pomôže používateľovi rýchlejšie sa pohybovať po väčšom rozpätí.&lt;br /&gt;
&lt;br /&gt;
6. Na '''úrovni triedy ShapeTopComponent'''  deklarujeme (doplníme napr. hneď nad konštruktor)&lt;br /&gt;
    private JComponent myView;&lt;br /&gt;
&lt;br /&gt;
Ostanú nám ešte 2 žlté žiarovky, klikneme na každú z nich, a dáme &amp;quot;'''Add Import...'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
7. Teraz musíme ošetriť, že ak sa NetBeans IDE reštartuje, nemáme žiadny dôvod aby ShapeTopComponent pretrvával, čiže nájdeme metódu '''getPersistenceType()''' v tele triedy, a zmeníme ju nasledovne:&lt;br /&gt;
   public int getPersistenceType() {&lt;br /&gt;
       return TopComponent.PERSISTENCE_NEVER;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
8. Klikneme v &amp;quot;Project&amp;quot; window na náš projekt '''ShapeSample pravým--run'''&lt;br /&gt;
&lt;br /&gt;
9. Nezlaknite sa, spustí sa nová inštancia NetBeans IDE(ak nie je náš projekt už otvorený kliknite na '''window---Shape''') a zobrazí sa Vám niečo takéto:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb siesty.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytváranie Palety pre našu scénu ==&lt;br /&gt;
&lt;br /&gt;
Teraz aby sme pokračovali niečím užitočným, vytvoríme si palletu, na čo využijeme Pallete API, ktorá bude obsahovať komponenty, ktoré môžeme použiť a pridať na našu scénu pretiahnutím.&lt;br /&gt;
Pre ďalšie pokračovanie budeme potrebovať 3 obrázky našich komponentov, použime tieto(kliknite pravým---uložiť ako, nemente názvy):&lt;br /&gt;
[[Súbor:Image1.png]][[Súbor:Image2.png]][[Súbor:Image3.png]]&lt;br /&gt;
&lt;br /&gt;
'''Keďže náš tutoriál sa zaoberá s Visual Library API, a nie s Palette API(info tu:[http://netbeans.org/kb/trails/platform.html] ), na funkcionalitu Paletty použijeme už hotové knižnice, ktoré stiahnete tu''':&lt;br /&gt;
[http://www.sendspace.com/file/dqtnbi]&lt;br /&gt;
&lt;br /&gt;
1. Klikneme na náš projekt pravým--new--Java Package a pomenujeme ho '''org.netbeans.shapesample.palette'''&lt;br /&gt;
2. Teraz podme do zložky, kde sme nás projekt uložili, konkrétne   '''násProjekt/src/org/netbeans/shapesample/pallete'''. A do tejto''' zložky nakopírujeme stiahnuté obrázky a následne aj knižnice''', čiže tieto súbory:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Category&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ CategoryChildren &amp;lt;br /&amp;gt;&lt;br /&gt;
c/ CategoryNode &amp;lt;br /&amp;gt;&lt;br /&gt;
d/ PaletteSupport&amp;lt;br /&amp;gt;&lt;br /&gt;
e/ Shape&amp;lt;br /&amp;gt;&lt;br /&gt;
f/ ShapeChildren&amp;lt;br /&amp;gt;&lt;br /&gt;
g/ ShapeNode&amp;lt;br /&amp;gt;&lt;br /&gt;
h/ image1, image2, image3&amp;lt;br /&amp;gt;&lt;br /&gt;
po zobrazení NetBeans sa nám novo vytvorený package obnoví, a budeme tam mať načítané všetky vložené súbory, pričom niekde sa znovu objavia červené krúžky so žiarovkou, to si nevšímajme chvíľku&lt;br /&gt;
&lt;br /&gt;
3. Klikneme '''pravým na projekt--Properties--Libraries--Add''' a pridáme nasledujúce knižnice:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Actions APIs&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Nodes API&amp;lt;br /&amp;gt;&lt;br /&gt;
c/ Common Palette &amp;lt;br /&amp;gt;&lt;br /&gt;
Teraz by sme mali spozorovať, že všetky červené guličky nám zmiznú, a bude nám to vypadať nasledovne: &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb siedmy.png]]&lt;br /&gt;
&lt;br /&gt;
4. Teraz pridáme našu Palettu do ShapeTopComponentovho náhľadu, a to tak, že do konštruktoru ShapeTopComponent kod&lt;br /&gt;
     associateLookup( Lookups.fixed( new Object[] { PaletteSupport.createPalette() } ) );&lt;br /&gt;
&lt;br /&gt;
5. Znova sa nám objaví žltá žiarovka, klikneme na ňu dáme &amp;quot;Add import...&amp;quot;, následne sa tam objaví znova, čiže znova klikneme a dáme &amp;quot;Add import...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
6. Spustite modul znova(pravým--run), teraz by to už malo vypadať takto, no zatiaľ bez funkcionality, pretože potrebujeme Layer Widget: &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb osmy.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pridanie LayerWidget ==&lt;br /&gt;
&lt;br /&gt;
Pod pojmom LayerWidget si predstavte niečo priesvitné, na ktoré budeme môcť ukladať naše komponenty s paletty.&lt;br /&gt;
&lt;br /&gt;
1. Ná úrovni triedy GraphSceneImpl deklarujte náš LayerWidget&lt;br /&gt;
     private LayerWidget mainLayer;&lt;br /&gt;
&lt;br /&gt;
2. Do konštruktoru GraphSceneImpl pridajte LayerWidget ako dieťa našej scény:&lt;br /&gt;
     mainLayer = new LayerWidget (this);&lt;br /&gt;
     addChild (mainLayer);&lt;br /&gt;
&lt;br /&gt;
Teraz keď pridáme na scénu nejaký komponent s našej paletty , pridajú sa ako deti do našel mainLayer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pridanie IconNodeWidget (komponentu) cez funkcionalitu Drag and Drop (chyť a hoď) ==&lt;br /&gt;
&lt;br /&gt;
Doposiaľ, naša scéna existuje, ale nemá žiadnu funkcionalitu. Túto funkcionalitu pridáme pomocou '''&amp;quot;actions&amp;quot;'''. Action, ktorá nám umožnuje Drag &amp;amp; Drop funkcionalitu je '''AcceptAction''' . Táto action môže byť aplikovaná buď na náš komponent alebo na našu scénu. My ju budeme aplikovať na našu scénu. Využijeme '''createAcceptAction''' na to, aby sme definovali čo sa má stať po tom, ako je komponent pretiahnutý nad našu scénu.&lt;br /&gt;
&lt;br /&gt;
1. Najprv pridajte '''createAcceptAction''' spolu s jeho dvomi metódami do GraphSceneImpl konštruktoru:&lt;br /&gt;
   getActions().addAction(ActionFactory.createAcceptAction(new AcceptProvider() {&lt;br /&gt;
    public ConnectorState isAcceptable(Widget widget, Point point, Transferable transferable) {&lt;br /&gt;
        Image dragImage = getImageFromTransferable(transferable);&lt;br /&gt;
        JComponent view = getView();&lt;br /&gt;
        Graphics2D g2 = (Graphics2D) view.getGraphics();&lt;br /&gt;
        Rectangle visRect = view.getVisibleRect();&lt;br /&gt;
        view.paintImmediately(visRect.x, visRect.y, visRect.width, visRect.height);&lt;br /&gt;
        g2.drawImage(dragImage,&lt;br /&gt;
                AffineTransform.getTranslateInstance(point.getLocation().getX(),&lt;br /&gt;
                point.getLocation().getY()),&lt;br /&gt;
                null);&lt;br /&gt;
        return ConnectorState.ACCEPT;&lt;br /&gt;
    }&lt;br /&gt;
    public void accept(Widget widget, Point point, Transferable transferable) {&lt;br /&gt;
        Image image = getImageFromTransferable(transferable);&lt;br /&gt;
        Widget w = GraphSceneImpl.this.addNode(new MyNode(image));&lt;br /&gt;
        w.setPreferredLocation(widget.convertLocalToScene(point));&lt;br /&gt;
    }&lt;br /&gt;
    }));&lt;br /&gt;
&lt;br /&gt;
Objaví sa nám viacero chýb, a to z toho dôvodu, že sme použili aj metody, ktoré zatiaľ nie sú definované, čiže si chvíľku nevšímajme tieto errory.&lt;br /&gt;
&lt;br /&gt;
2. Teraz do triedy '''GraphSceneImpl''' pridáme pomocnú metódu na získavanie obrázkov:&lt;br /&gt;
   private Image getImageFromTransferable(Transferable transferable) {&lt;br /&gt;
    Object o = null;&lt;br /&gt;
    try {&lt;br /&gt;
        o = transferable.getTransferData(DataFlavor.imageFlavor);&lt;br /&gt;
    } catch (IOException ex) {&lt;br /&gt;
        ex.printStackTrace();&lt;br /&gt;
    } catch (UnsupportedFlavorException ex) {&lt;br /&gt;
        ex.printStackTrace();&lt;br /&gt;
    }&lt;br /&gt;
    return o instanceof Image ? (Image) o : ImageUtilities.loadImage(&amp;quot;org/netbeans/shapesample/palette/shape1.png&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
Ako vidíme, je tu ošetrená chyba, čiže môžete do org.netbeans.shapesample.palette doplniť obrázok, ktorý sa má objaviť pri chybe, dajte mu meno shape1.png&lt;br /&gt;
&lt;br /&gt;
3. Z dôvodu toho, že máme len 3 obrázky, mohli by sme vytvoriť akoby len 3 prvky, preto si vytvoríme novú triedu s názvom '''MyNode'''. Klikneme na náš '''package shapesample pravým--new---java class''' a bude vypadať takto:&lt;br /&gt;
    public class MyNode {    &lt;br /&gt;
    private Image image;&lt;br /&gt;
    &lt;br /&gt;
    public MyNode(Image image) {&lt;br /&gt;
        this.image = image;&lt;br /&gt;
    }    &lt;br /&gt;
    public Image getImage() {&lt;br /&gt;
        return image;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
Klikneme na žltú žiarovku v tejto triede a dáme '''&amp;quot;Add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
4. Zmeníme teraz v triede '''GraphSceneImpl''' rodiča, od ktorého dedí, čiže jeden z prvý riadkov bude vypadať takto:&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&amp;lt;MyNode, String&amp;gt;{...telo triedy...}&lt;br /&gt;
čím sme zabezpečili, že naša Node je prijatá  cez Visual Library. Teraz sa nám objaví žltá žiarovka aj pri tomto riadku, lebo teraz musíme dediť iné abstraktné metódy, '''čiže klikneme na ňu --implement all abstract methods'''&lt;br /&gt;
5. Kedže používame generics, tak klikneme '''pravým na náš projekt--properties--sources''' a presvedčíme sa, že tam máme hodnotu  '''Source level = 1.5'''&lt;br /&gt;
&lt;br /&gt;
6. Následne definujeme náš nový Widget (komponent) v triede '''GraphSceneImpl''' a to tak, že tam nájdeme metódu '''protected Widget attachNodeWidget(MyNode node)''' a upravíme ju nasledovne:&lt;br /&gt;
     protected Widget attachNodeWidget(MyNode node) {&lt;br /&gt;
       IconNodeWidget widget = new IconNodeWidget(this);&lt;br /&gt;
       widget.setImage(node.getImage());&lt;br /&gt;
       widget.setLabel(Long.toString(node.hashCode()));&lt;br /&gt;
       widget.getActions().addAction(ActionFactory.createMoveAction());&lt;br /&gt;
       mainLayer.addChild(widget);&lt;br /&gt;
       return widget;&lt;br /&gt;
     }&lt;br /&gt;
Týmto nášmu Widgetu nastavíme obrázok, a priradíme mu veľké náhodné číslo, a ešte možnosť posúvať ho po našej scéne, a následne po zastavení ho pridať znova ako child.&lt;br /&gt;
&lt;br /&gt;
7. Ešte stále nám ostáva pár žltých žiaroviek, takže klikneme na každú z nich, ktorá tam bude a dáme '''&amp;quot;Add import...&amp;quot;'''&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3844</id>
		<title>Základy práce s NetBeans IDE a vývoj modulov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3844"/>
		<updated>2010-04-25T10:42:20Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: /* Pridanie LayerWidget */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Work in progress :)'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== NetBeans IDE ==&lt;br /&gt;
NetBeans je krásne vývojové prostredie, ktorého hlavnou výhodou je jeho modulárna architektúra. Ďalším skvelým prvkom je, že sa spolieha na toolkit SWING UI, čo nám dokopy dáva obrovské výhody.&lt;br /&gt;
&lt;br /&gt;
V tomto článku sa posnažím ukázať, ako možno vytvoriť jednoduchý modul pre NetBeans, ktorý bude iba strohá ukážka toho, čo sa s NetBeans dá robit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Požiadavky na postup článkom ==&lt;br /&gt;
1. NetBeans IDE ( použitá verzia 6.8 )&amp;lt;br /&amp;gt;&lt;br /&gt;
2. Java_jdk ( použitá verzia 1.6.0.18 ) &amp;lt;br /&amp;gt;&lt;br /&gt;
3. Základné znalosti jazyka JAVA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie a spustenie projektu ==&lt;br /&gt;
1. Začneme  spustením  Netbeans  a  zvolíme  '''File--New Project--NetBeans Modules--Module'''&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb prvy.png]]&lt;br /&gt;
&lt;br /&gt;
2. Klikneme na tlačítko &amp;quot;NEXT&amp;quot;, pomenujeme si náš projekt napr. &amp;quot;ShapeSample&amp;quot;, nastavíme ho ako &amp;quot;'''main project'''&amp;quot; a vyberieme si umiestnenie, kde ho chceme uložiť a ponecháme '''Standalone Module'''&lt;br /&gt;
[[Súbor:Ytb druhy.png]]&lt;br /&gt;
&lt;br /&gt;
3. Klikneme &amp;quot;NEXT&amp;quot;, zadáme do &amp;quot;Code Name Base&amp;quot; '''org.netbeans.shapesample''', a dôležité, klikneme na '''Generate XML Layer'''. Následne klikneme na tlačítko finish, a vytvorí sa nám projekt.&lt;br /&gt;
[[Súbor:Ytb treti.png]]&lt;br /&gt;
&lt;br /&gt;
4. V okne &amp;quot;Project&amp;quot; , '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--Properties--Libraries'''. Module Dependencies klikneme na tlačítko &amp;quot;ADD&amp;quot; a pridáme:&amp;lt;br /&amp;gt;&lt;br /&gt;
''a/ Visual Library API &amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Utilities API &amp;lt;br /&amp;gt;''&lt;br /&gt;
Klikneme na tlačítko OK, čo nám pridá odkazy.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Znova v &amp;quot;Project&amp;quot; window '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--New--Other--Module Development--Window Component''' , klikneme &amp;quot;NEXT&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6. Ako Windows Position dáme '''editor''' a zaškrtneme '''Open on application start''' a klikneme &amp;quot;NEXT&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7.Do políčka &amp;quot;Class Name Prefix&amp;quot; dopíšeme '''Shape''', klikneme na tlačítko &amp;quot;FINISH&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. Vygeneruje sa nám viacero súbor, jedným z nich je '''ShapeTopComponent''', 2krát naň klikneme a otvoríme ho v design view.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. V design view, pravým klikneme na okno akoby a dáme '''Set Layout--Border Layout'''&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb stvrty.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie scény ==&lt;br /&gt;
1. Využijeme okno &amp;quot;'''Pallete'''&amp;quot; (ak nie je zobrazené dáme window---pallete) a vložíme na naš layout '''ScrollPane'''. V okne &amp;quot;Inspector&amp;quot; klikneme pravým na jScrollPane1--Change Variable Name a nastavíme hodnotu na &amp;quot;shapePane&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
2.V &amp;quot;Project&amp;quot; windows na zložku''' org--netbeans--shapesample''' klikneme pravým a dáme '''new--Java Class''', pomenujme ju &amp;quot;'''GraphSceneImpl'''&amp;quot;, a po vytvorení dopíšme do triedy '''extends GraphScene'''&lt;br /&gt;
&lt;br /&gt;
3. Žltá žiarovka s červeným výkričníkom sa nám objaví naľavo v editore, klikneme na ňu, a dáme &amp;quot;'''add Import...'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
Následne sa dám objaví ďalšia žltá žiarovka, klikneme na ňu a dáme &amp;quot;'''Implement all abstract methods'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb piaty.png]]&lt;br /&gt;
&lt;br /&gt;
4. Pre lepšiu orientáciu zmeníme názvy parametrov vygenerovaných NetBeans, a po úprave bude naša trieda vypadať takto:&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
    public GraphSceneImpl() {&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachNodeWidget(Object node) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachEdgeWidget(Object edge) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeSourceAnchor(Object edge, Object oldSourceNode, Object newSourceNode) {&lt;br /&gt;
    &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeTargetAnchor(Object edge, Object oldTargetNode, Object newTargetNode) {&lt;br /&gt;
            &lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
5.Vrátime sa k ShapeTopComponent, kde sa budeme starať o instanciu GraphSceneImpl , prepneme Design View na SourceView, a nájdeme jeho konštruktor. Do tela konštruktora doplnime nasledujúce riadky:&lt;br /&gt;
     GraphSceneImpl scene = new GraphSceneImpl();&lt;br /&gt;
     myView = scene.createView();     &lt;br /&gt;
     shapePane.setViewportView(myView);&lt;br /&gt;
     add(scene.createSatelliteView(), BorderLayout.WEST);  &lt;br /&gt;
&lt;br /&gt;
Týmto sme vytvorili 2 náhľady, jeden veľký, a jeden akoby informačný na ľavej strane, ktorý pomôže používateľovi rýchlejšie sa pohybovať po väčšom rozpätí.&lt;br /&gt;
&lt;br /&gt;
6. Na '''úrovni triedy ShapeTopComponent'''  deklarujeme (doplníme napr. hneď nad konštruktor)&lt;br /&gt;
    private JComponent myView;&lt;br /&gt;
&lt;br /&gt;
Ostanú nám ešte 2 žlté žiarovky, klikneme na každú z nich, a dáme &amp;quot;'''Add Import...'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
7. Teraz musíme ošetriť, že ak sa NetBeans IDE reštartuje, nemáme žiadny dôvod aby ShapeTopComponent pretrvával, čiže nájdeme metódu '''getPersistenceType()''' v tele triedy, a zmeníme ju nasledovne:&lt;br /&gt;
   public int getPersistenceType() {&lt;br /&gt;
       return TopComponent.PERSISTENCE_NEVER;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
8. Klikneme v &amp;quot;Project&amp;quot; window na náš projekt '''ShapeSample pravým--run'''&lt;br /&gt;
&lt;br /&gt;
9. Nezlaknite sa, spustí sa nová inštancia NetBeans IDE(ak nie je náš projekt už otvorený kliknite na '''window---Shape''') a zobrazí sa Vám niečo takéto:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb siesty.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytváranie Palety pre našu scénu ==&lt;br /&gt;
&lt;br /&gt;
Teraz aby sme pokračovali niečím užitočným, vytvoríme si palletu, na čo využijeme Pallete API, ktorá bude obsahovať komponenty, ktoré môžeme použiť a pridať na našu scénu pretiahnutím.&lt;br /&gt;
Pre ďalšie pokračovanie budeme potrebovať 3 obrázky našich komponentov, použime tieto(kliknite pravým---uložiť ako, nemente názvy):&lt;br /&gt;
[[Súbor:Image1.png]][[Súbor:Image2.png]][[Súbor:Image3.png]]&lt;br /&gt;
&lt;br /&gt;
'''Keďže náš tutoriál sa zaoberá s Visual Library API, a nie s Palette API(info tu:[http://netbeans.org/kb/trails/platform.html] ), na funkcionalitu Paletty použijeme už hotové knižnice, ktoré stiahnete tu''':&lt;br /&gt;
[http://www.sendspace.com/file/dqtnbi]&lt;br /&gt;
&lt;br /&gt;
1. Klikneme na náš projekt pravým--new--Java Package a pomenujeme ho '''org.netbeans.shapesample.palette'''&lt;br /&gt;
2. Teraz podme do zložky, kde sme nás projekt uložili, konkrétne   '''násProjekt/src/org/netbeans/shapesample/pallete'''. A do tejto''' zložky nakopírujeme stiahnuté obrázky a následne aj knižnice''', čiže tieto súbory:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Category&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ CategoryChildren &amp;lt;br /&amp;gt;&lt;br /&gt;
c/ CategoryNode &amp;lt;br /&amp;gt;&lt;br /&gt;
d/ PaletteSupport&amp;lt;br /&amp;gt;&lt;br /&gt;
e/ Shape&amp;lt;br /&amp;gt;&lt;br /&gt;
f/ ShapeChildren&amp;lt;br /&amp;gt;&lt;br /&gt;
g/ ShapeNode&amp;lt;br /&amp;gt;&lt;br /&gt;
h/ image1, image2, image3&amp;lt;br /&amp;gt;&lt;br /&gt;
po zobrazení NetBeans sa nám novo vytvorený package obnoví, a budeme tam mať načítané všetky vložené súbory, pričom niekde sa znovu objavia červené krúžky so žiarovkou, to si nevšímajme chvíľku&lt;br /&gt;
&lt;br /&gt;
3. Klikneme '''pravým na projekt--Properties--Libraries--Add''' a pridáme nasledujúce knižnice:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Actions APIs&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Nodes API&amp;lt;br /&amp;gt;&lt;br /&gt;
c/ Common Palette &amp;lt;br /&amp;gt;&lt;br /&gt;
Teraz by sme mali spozorovať, že všetky červené guličky nám zmiznú, a bude nám to vypadať nasledovne: &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb siedmy.png]]&lt;br /&gt;
&lt;br /&gt;
4. Teraz pridáme našu Palettu do ShapeTopComponentovho náhľadu, a to tak, že do konštruktoru ShapeTopComponent kod&lt;br /&gt;
     associateLookup( Lookups.fixed( new Object[] { PaletteSupport.createPalette() } ) );&lt;br /&gt;
&lt;br /&gt;
5. Znova sa nám objaví žltá žiarovka, klikneme na ňu dáme &amp;quot;Add import...&amp;quot;, následne sa tam objaví znova, čiže znova klikneme a dáme &amp;quot;Add import...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
6. Spustite modul znova(pravým--run), teraz by to už malo vypadať takto, no zatiaľ bez funkcionality, pretože potrebujeme Layer Widget: &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb osmy.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pridanie LayerWidget ==&lt;br /&gt;
&lt;br /&gt;
Pod pojmom LayerWidget si predstavte niečo priesvitné, na ktoré budeme môcť ukladať naše komponenty s paletty.&lt;br /&gt;
&lt;br /&gt;
1. Ná úrovni triedy GraphSceneImpl deklarujte náš LayerWidget&lt;br /&gt;
     private LayerWidget mainLayer;&lt;br /&gt;
&lt;br /&gt;
2. Do konštruktoru GraphSceneImpl pridajte LayerWidget ako dieťa našej scény:&lt;br /&gt;
     mainLayer = new LayerWidget (this);&lt;br /&gt;
     addChild (mainLayer);&lt;br /&gt;
&lt;br /&gt;
Teraz keď pridáme na scénu nejaký komponent s našej paletty , pridajú sa ako deti do našel mainLayer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pridanie IconNodeWidget (komponentu) cez funkcionalitu Drag and Drop (chyť a hoď) ==&lt;br /&gt;
&lt;br /&gt;
Doposiaľ, naša scéna existuje, ale nemá žiadnu funkcionalitu. Túto funkcionalitu pridáme pomocou '''&amp;quot;actions&amp;quot;'''. Action, ktorá nám umožnuje Drag &amp;amp; Drop funkcionalitu je '''AcceptAction''' . Táto action môže byť aplikovaná buď na náš komponent alebo na našu scénu. My ju budeme aplikovať na našu scénu. Využijeme '''createAcceptAction''' na to, aby sme definovali čo sa má stať po tom, ako je komponent pretiahnutý nad našu scénu.&lt;br /&gt;
&lt;br /&gt;
1. Najprv pridajte '''createAcceptAction''' spolu s jeho dvomi metódami do GraphSceneImpl konštruktoru:&lt;br /&gt;
   getActions().addAction(ActionFactory.createAcceptAction(new AcceptProvider() {&lt;br /&gt;
    public ConnectorState isAcceptable(Widget widget, Point point, Transferable transferable) {&lt;br /&gt;
        Image dragImage = getImageFromTransferable(transferable);&lt;br /&gt;
        JComponent view = getView();&lt;br /&gt;
        Graphics2D g2 = (Graphics2D) view.getGraphics();&lt;br /&gt;
        Rectangle visRect = view.getVisibleRect();&lt;br /&gt;
        view.paintImmediately(visRect.x, visRect.y, visRect.width, visRect.height);&lt;br /&gt;
        g2.drawImage(dragImage,&lt;br /&gt;
                AffineTransform.getTranslateInstance(point.getLocation().getX(),&lt;br /&gt;
                point.getLocation().getY()),&lt;br /&gt;
                null);&lt;br /&gt;
        return ConnectorState.ACCEPT;&lt;br /&gt;
    }&lt;br /&gt;
    public void accept(Widget widget, Point point, Transferable transferable) {&lt;br /&gt;
        Image image = getImageFromTransferable(transferable);&lt;br /&gt;
        Widget w = GraphSceneImpl.this.addNode(new MyNode(image));&lt;br /&gt;
        w.setPreferredLocation(widget.convertLocalToScene(point));&lt;br /&gt;
    }&lt;br /&gt;
    }));&lt;br /&gt;
&lt;br /&gt;
Objaví sa nám viacero chýb, a to z toho dôvodu, že sme použili aj metody, ktoré zatiaľ nie sú definované, čiže si chvíľku nevšímajme tieto errory.&lt;br /&gt;
&lt;br /&gt;
2. Teraz do triedy '''GraphSceneImpl''' pridáme pomocnú metódu na získavanie obrázkov:&lt;br /&gt;
   private Image getImageFromTransferable(Transferable transferable) {&lt;br /&gt;
    Object o = null;&lt;br /&gt;
    try {&lt;br /&gt;
        o = transferable.getTransferData(DataFlavor.imageFlavor);&lt;br /&gt;
    } catch (IOException ex) {&lt;br /&gt;
        ex.printStackTrace();&lt;br /&gt;
    } catch (UnsupportedFlavorException ex) {&lt;br /&gt;
        ex.printStackTrace();&lt;br /&gt;
    }&lt;br /&gt;
    return o instanceof Image ? (Image) o : ImageUtilities.loadImage(&amp;quot;org/netbeans/shapesample/palette/shape1.png&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
Ako vidíme, je tu ošetrená chyba, čiže môžete do org.netbeans.shapesample.palette doplniť obrázok, ktorý sa má objaviť pri chybe, dajte mu meno shape1.png&lt;br /&gt;
&lt;br /&gt;
3. Z dôvodu toho, že máme len 3 obrázky, mohli by sme vytvoriť akoby len 3 prvky, preto si vytvoríme novú triedu s názvom '''MyNode'''. Klikneme na náš '''package shapesample pravým--new---java class''' a bude vypadať takto:&lt;br /&gt;
    public class MyNode {    &lt;br /&gt;
    private Image image;&lt;br /&gt;
    &lt;br /&gt;
    public MyNode(Image image) {&lt;br /&gt;
        this.image = image;&lt;br /&gt;
    }    &lt;br /&gt;
    public Image getImage() {&lt;br /&gt;
        return image;&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
Klikneme na žltú žiarovku v tejto triede a dáme '''&amp;quot;Add import...&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
4.&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3843</id>
		<title>Základy práce s NetBeans IDE a vývoj modulov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3843"/>
		<updated>2010-04-25T09:44:51Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Work in progress :)'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== NetBeans IDE ==&lt;br /&gt;
NetBeans je krásne vývojové prostredie, ktorého hlavnou výhodou je jeho modulárna architektúra. Ďalším skvelým prvkom je, že sa spolieha na toolkit SWING UI, čo nám dokopy dáva obrovské výhody.&lt;br /&gt;
&lt;br /&gt;
V tomto článku sa posnažím ukázať, ako možno vytvoriť jednoduchý modul pre NetBeans, ktorý bude iba strohá ukážka toho, čo sa s NetBeans dá robit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Požiadavky na postup článkom ==&lt;br /&gt;
1. NetBeans IDE ( použitá verzia 6.8 )&amp;lt;br /&amp;gt;&lt;br /&gt;
2. Java_jdk ( použitá verzia 1.6.0.18 ) &amp;lt;br /&amp;gt;&lt;br /&gt;
3. Základné znalosti jazyka JAVA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie a spustenie projektu ==&lt;br /&gt;
1. Začneme  spustením  Netbeans  a  zvolíme  '''File--New Project--NetBeans Modules--Module'''&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb prvy.png]]&lt;br /&gt;
&lt;br /&gt;
2. Klikneme na tlačítko &amp;quot;NEXT&amp;quot;, pomenujeme si náš projekt napr. &amp;quot;ShapeSample&amp;quot;, nastavíme ho ako &amp;quot;'''main project'''&amp;quot; a vyberieme si umiestnenie, kde ho chceme uložiť a ponecháme '''Standalone Module'''&lt;br /&gt;
[[Súbor:Ytb druhy.png]]&lt;br /&gt;
&lt;br /&gt;
3. Klikneme &amp;quot;NEXT&amp;quot;, zadáme do &amp;quot;Code Name Base&amp;quot; '''org.netbeans.shapesample''', a dôležité, klikneme na '''Generate XML Layer'''. Následne klikneme na tlačítko finish, a vytvorí sa nám projekt.&lt;br /&gt;
[[Súbor:Ytb treti.png]]&lt;br /&gt;
&lt;br /&gt;
4. V okne &amp;quot;Project&amp;quot; , '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--Properties--Libraries'''. Module Dependencies klikneme na tlačítko &amp;quot;ADD&amp;quot; a pridáme:&amp;lt;br /&amp;gt;&lt;br /&gt;
''a/ Visual Library API &amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Utilities API &amp;lt;br /&amp;gt;''&lt;br /&gt;
Klikneme na tlačítko OK, čo nám pridá odkazy.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Znova v &amp;quot;Project&amp;quot; window '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--New--Other--Module Development--Window Component''' , klikneme &amp;quot;NEXT&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6. Ako Windows Position dáme '''editor''' a zaškrtneme '''Open on application start''' a klikneme &amp;quot;NEXT&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7.Do políčka &amp;quot;Class Name Prefix&amp;quot; dopíšeme '''Shape''', klikneme na tlačítko &amp;quot;FINISH&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. Vygeneruje sa nám viacero súbor, jedným z nich je '''ShapeTopComponent''', 2krát naň klikneme a otvoríme ho v design view.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. V design view, pravým klikneme na okno akoby a dáme '''Set Layout--Border Layout'''&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb stvrty.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie scény ==&lt;br /&gt;
1. Využijeme okno &amp;quot;'''Pallete'''&amp;quot; (ak nie je zobrazené dáme window---pallete) a vložíme na naš layout '''ScrollPane'''. V okne &amp;quot;Inspector&amp;quot; klikneme pravým na jScrollPane1--Change Variable Name a nastavíme hodnotu na &amp;quot;shapePane&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
2.V &amp;quot;Project&amp;quot; windows na zložku''' org--netbeans--shapesample''' klikneme pravým a dáme '''new--Java Class''', pomenujme ju &amp;quot;'''GraphSceneImpl'''&amp;quot;, a po vytvorení dopíšme do triedy '''extends GraphScene'''&lt;br /&gt;
&lt;br /&gt;
3. Žltá žiarovka s červeným výkričníkom sa nám objaví naľavo v editore, klikneme na ňu, a dáme &amp;quot;'''add Import...'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
Následne sa dám objaví ďalšia žltá žiarovka, klikneme na ňu a dáme &amp;quot;'''Implement all abstract methods'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb piaty.png]]&lt;br /&gt;
&lt;br /&gt;
4. Pre lepšiu orientáciu zmeníme názvy parametrov vygenerovaných NetBeans, a po úprave bude naša trieda vypadať takto:&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
    public GraphSceneImpl() {&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachNodeWidget(Object node) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachEdgeWidget(Object edge) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeSourceAnchor(Object edge, Object oldSourceNode, Object newSourceNode) {&lt;br /&gt;
    &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeTargetAnchor(Object edge, Object oldTargetNode, Object newTargetNode) {&lt;br /&gt;
            &lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
5.Vrátime sa k ShapeTopComponent, kde sa budeme starať o instanciu GraphSceneImpl , prepneme Design View na SourceView, a nájdeme jeho konštruktor. Do tela konštruktora doplnime nasledujúce riadky:&lt;br /&gt;
     GraphSceneImpl scene = new GraphSceneImpl();&lt;br /&gt;
     myView = scene.createView();     &lt;br /&gt;
     shapePane.setViewportView(myView);&lt;br /&gt;
     add(scene.createSatelliteView(), BorderLayout.WEST);  &lt;br /&gt;
&lt;br /&gt;
Týmto sme vytvorili 2 náhľady, jeden veľký, a jeden akoby informačný na ľavej strane, ktorý pomôže používateľovi rýchlejšie sa pohybovať po väčšom rozpätí.&lt;br /&gt;
&lt;br /&gt;
6. Na '''úrovni triedy ShapeTopComponent'''  deklarujeme (doplníme napr. hneď nad konštruktor)&lt;br /&gt;
    private JComponent myView;&lt;br /&gt;
&lt;br /&gt;
Ostanú nám ešte 2 žlté žiarovky, klikneme na každú z nich, a dáme &amp;quot;'''Add Import...'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
7. Teraz musíme ošetriť, že ak sa NetBeans IDE reštartuje, nemáme žiadny dôvod aby ShapeTopComponent pretrvával, čiže nájdeme metódu '''getPersistenceType()''' v tele triedy, a zmeníme ju nasledovne:&lt;br /&gt;
   public int getPersistenceType() {&lt;br /&gt;
       return TopComponent.PERSISTENCE_NEVER;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
8. Klikneme v &amp;quot;Project&amp;quot; window na náš projekt '''ShapeSample pravým--run'''&lt;br /&gt;
&lt;br /&gt;
9. Nezlaknite sa, spustí sa nová inštancia NetBeans IDE(ak nie je náš projekt už otvorený kliknite na '''window---Shape''') a zobrazí sa Vám niečo takéto:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb siesty.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytváranie Palety pre našu scénu ==&lt;br /&gt;
&lt;br /&gt;
Teraz aby sme pokračovali niečím užitočným, vytvoríme si palletu, na čo využijeme Pallete API, ktorá bude obsahovať komponenty, ktoré môžeme použiť a pridať na našu scénu pretiahnutím.&lt;br /&gt;
Pre ďalšie pokračovanie budeme potrebovať 3 obrázky našich komponentov, použime tieto(kliknite pravým---uložiť ako, nemente názvy):&lt;br /&gt;
[[Súbor:Image1.png]][[Súbor:Image2.png]][[Súbor:Image3.png]]&lt;br /&gt;
&lt;br /&gt;
'''Keďže náš tutoriál sa zaoberá s Visual Library API, a nie s Palette API(info tu:[http://netbeans.org/kb/trails/platform.html] ), na funkcionalitu Paletty použijeme už hotové knižnice, ktoré stiahnete tu''':&lt;br /&gt;
[http://www.sendspace.com/file/dqtnbi]&lt;br /&gt;
&lt;br /&gt;
1. Klikneme na náš projekt pravým--new--Java Package a pomenujeme ho '''org.netbeans.shapesample.palette'''&lt;br /&gt;
2. Teraz podme do zložky, kde sme nás projekt uložili, konkrétne   '''násProjekt/src/org/netbeans/shapesample/pallete'''. A do tejto''' zložky nakopírujeme stiahnuté obrázky a následne aj knižnice''', čiže tieto súbory:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Category&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ CategoryChildren &amp;lt;br /&amp;gt;&lt;br /&gt;
c/ CategoryNode &amp;lt;br /&amp;gt;&lt;br /&gt;
d/ PaletteSupport&amp;lt;br /&amp;gt;&lt;br /&gt;
e/ Shape&amp;lt;br /&amp;gt;&lt;br /&gt;
f/ ShapeChildren&amp;lt;br /&amp;gt;&lt;br /&gt;
g/ ShapeNode&amp;lt;br /&amp;gt;&lt;br /&gt;
h/ image1, image2, image3&amp;lt;br /&amp;gt;&lt;br /&gt;
po zobrazení NetBeans sa nám novo vytvorený package obnoví, a budeme tam mať načítané všetky vložené súbory, pričom niekde sa znovu objavia červené krúžky so žiarovkou, to si nevšímajme chvíľku&lt;br /&gt;
&lt;br /&gt;
3. Klikneme '''pravým na projekt--Properties--Libraries--Add''' a pridáme nasledujúce knižnice:&amp;lt;br /&amp;gt;&lt;br /&gt;
a/ Actions APIs&amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Nodes API&amp;lt;br /&amp;gt;&lt;br /&gt;
c/ Common Palette &amp;lt;br /&amp;gt;&lt;br /&gt;
Teraz by sme mali spozorovať, že všetky červené guličky nám zmiznú, a bude nám to vypadať nasledovne: &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb siedmy.png]]&lt;br /&gt;
&lt;br /&gt;
4. Teraz pridáme našu Palettu do ShapeTopComponentovho náhľadu, a to tak, že do konštruktoru ShapeTopComponent kod&lt;br /&gt;
     associateLookup( Lookups.fixed( new Object[] { PaletteSupport.createPalette() } ) );&lt;br /&gt;
&lt;br /&gt;
5. Znova sa nám objaví žltá žiarovka, klikneme na ňu dáme &amp;quot;Add import...&amp;quot;, následne sa tam objaví znova, čiže znova klikneme a dáme &amp;quot;Add import...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
6. Spustite modul znova(pravým--run), teraz by to už malo vypadať takto, no zatiaľ bez funkcionality, pretože potrebujeme Layer Widget: &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb osmy.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pridanie LayerWidget ==&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Ytb_osmy.png&amp;diff=3842</id>
		<title>Súbor:Ytb osmy.png</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Ytb_osmy.png&amp;diff=3842"/>
		<updated>2010-04-25T09:42:09Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Ytb_siedmy.png&amp;diff=3841</id>
		<title>Súbor:Ytb siedmy.png</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Ytb_siedmy.png&amp;diff=3841"/>
		<updated>2010-04-25T09:32:44Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Image3.png&amp;diff=3840</id>
		<title>Súbor:Image3.png</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Image3.png&amp;diff=3840"/>
		<updated>2010-04-25T09:05:58Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Image2.png&amp;diff=3839</id>
		<title>Súbor:Image2.png</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Image2.png&amp;diff=3839"/>
		<updated>2010-04-25T09:05:31Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Image1.png&amp;diff=3838</id>
		<title>Súbor:Image1.png</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Image1.png&amp;diff=3838"/>
		<updated>2010-04-25T09:04:53Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3805</id>
		<title>Základy práce s NetBeans IDE a vývoj modulov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3805"/>
		<updated>2010-04-21T22:16:54Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Work in progress :)'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== NetBeans IDE ==&lt;br /&gt;
NetBeans je krásne vývojové prostredie, ktorého hlavnou výhodou je jeho modulárna architektúra. Ďalším skvelým prvkom je, že sa spolieha na toolkit SWING UI, čo nám dokopy dáva obrovské výhody.&lt;br /&gt;
&lt;br /&gt;
V tomto článku sa posnažím ukázať, ako možno vytvoriť jednoduchý modul pre NetBeans, ktorý bude iba strohá ukážka toho, čo sa s NetBeans dá robit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Požiadavky na postup článkom ==&lt;br /&gt;
1. NetBeans IDE ( použitá verzia 6.8 )&amp;lt;br /&amp;gt;&lt;br /&gt;
2. Java_jdk ( použitá verzia 1.6.0.18 ) &amp;lt;br /&amp;gt;&lt;br /&gt;
3. Základné znalosti jazyka JAVA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie a spustenie projektu ==&lt;br /&gt;
1. Začneme  spustením  Netbeans  a  zvolíme  '''File--New Project--NetBeans Modules--Module'''&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb prvy.png]]&lt;br /&gt;
&lt;br /&gt;
2. Klikneme na tlačítko &amp;quot;NEXT&amp;quot;, pomenujeme si náš projekt napr. &amp;quot;ShapeSample&amp;quot;, nastavíme ho ako &amp;quot;'''main project'''&amp;quot; a vyberieme si umiestnenie, kde ho chceme uložiť a ponecháme '''Standalone Module'''&lt;br /&gt;
[[Súbor:Ytb druhy.png]]&lt;br /&gt;
&lt;br /&gt;
3. Klikneme &amp;quot;NEXT&amp;quot;, zadáme do &amp;quot;Code Name Base&amp;quot; '''org.netbeans.shapesample''', a dôležité, klikneme na '''Generate XML Layer'''. Následne klikneme na tlačítko finish, a vytvorí sa nám projekt.&lt;br /&gt;
[[Súbor:Ytb treti.png]]&lt;br /&gt;
&lt;br /&gt;
4. V okne &amp;quot;Project&amp;quot; , '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--Properties--Libraries'''. Module Dependencies klikneme na tlačítko &amp;quot;ADD&amp;quot; a pridáme:&amp;lt;br /&amp;gt;&lt;br /&gt;
''a/ Visual Library API &amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Utilities API &amp;lt;br /&amp;gt;''&lt;br /&gt;
Klikneme na tlačítko OK, čo nám pridá odkazy.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Znova v &amp;quot;Project&amp;quot; window '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--New--Other--Module Development--Window Component''' , klikneme &amp;quot;NEXT&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6. Ako Windows Position dáme '''editor''' a zaškrtneme '''Open on application start''' a klikneme &amp;quot;NEXT&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7.Do políčka &amp;quot;Class Name Prefix&amp;quot; dopíšeme '''Shape''', klikneme na tlačítko &amp;quot;FINISH&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. Vygeneruje sa nám viacero súbor, jedným z nich je '''ShapeTopComponent''', 2krát naň klikneme a otvoríme ho v design view.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. V design view, pravým klikneme na okno akoby a dáme '''Set Layout--Border Layout'''&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb stvrty.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie scény ==&lt;br /&gt;
1. Využijeme okno &amp;quot;'''Pallete'''&amp;quot; (ak nie je zobrazené dáme window---pallete) a vložíme na naš layout '''ScrollPane'''. V okne &amp;quot;Inspector&amp;quot; klikneme pravým na jScrollPane1--Change Variable Name a nastavíme hodnotu na &amp;quot;shapePane&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
2.V &amp;quot;Project&amp;quot; windows na zložku''' org--netbeans--shapesample''' klikneme pravým a dáme '''new--Java Class''', pomenujme ju &amp;quot;'''GraphSceneImpl'''&amp;quot;, a po vytvorení dopíšme do triedy '''extends GraphScene'''&lt;br /&gt;
&lt;br /&gt;
3. Žltá žiarovka s červeným výkričníkom sa nám objaví naľavo v editore, klikneme na ňu, a dáme &amp;quot;'''add Import...'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
Následne sa dám objaví ďalšia žltá žiarovka, klikneme na ňu a dáme &amp;quot;'''Implement all abstract methods'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb piaty.png]]&lt;br /&gt;
&lt;br /&gt;
4. Pre lepšiu orientáciu zmeníme názvy parametrov vygenerovaných NetBeans, a po úprave bude naša trieda vypadať takto:&amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
    public class GraphSceneImpl extends GraphScene&lt;br /&gt;
    {&lt;br /&gt;
 &lt;br /&gt;
    public GraphSceneImpl() {&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachNodeWidget(Object node) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected Widget attachEdgeWidget(Object edge) {&lt;br /&gt;
        return null;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeSourceAnchor(Object edge, Object oldSourceNode, Object newSourceNode) {&lt;br /&gt;
    &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    protected void attachEdgeTargetAnchor(Object edge, Object oldTargetNode, Object newTargetNode) {&lt;br /&gt;
            &lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
5.Vrátime sa k ShapeTopComponent, kde sa budeme starať o instanciu GraphSceneImpl , prepneme Design View na SourceView, a nájdeme jeho konštruktor. Do tela konštruktora doplnime nasledujúce riadky:&lt;br /&gt;
     GraphSceneImpl scene = new GraphSceneImpl();&lt;br /&gt;
     myView = scene.createView();     &lt;br /&gt;
     shapePane.setViewportView(myView);&lt;br /&gt;
     add(scene.createSatelliteView(), BorderLayout.WEST);  &lt;br /&gt;
&lt;br /&gt;
Týmto sme vytvorili 2 náhľady, jeden veľký, a jeden akoby informačný na ľavej strane, ktorý pomôže používateľovi rýchlejšie sa pohybovať po väčšom rozpätí.&lt;br /&gt;
&lt;br /&gt;
6. Na '''úrovni triedy ShapeTopComponent'''  deklarujeme (doplníme napr. hneď nad konštruktor)&lt;br /&gt;
    private JComponent myView;&lt;br /&gt;
&lt;br /&gt;
Ostanú nám ešte 2 žlté žiarovky, klikneme na každú z nich, a dáme &amp;quot;'''Add Import...'''&amp;quot;&lt;br /&gt;
&lt;br /&gt;
7. Teraz musíme ošetriť, že ak sa NetBeans IDE reštartuje, nemáme žiadny dôvod aby ShapeTopComponent pretrvával, čiže nájdeme metódu '''getPersistenceType()''' v tele triedy, a zmeníme ju nasledovne:&lt;br /&gt;
   public int getPersistenceType() {&lt;br /&gt;
       return TopComponent.PERSISTENCE_NEVER;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
8. Klikneme v &amp;quot;Project&amp;quot; window na náš projekt '''ShapeSample pravým--run'''&lt;br /&gt;
&lt;br /&gt;
9. Nezlaknite sa, spustí sa nová inštancia NetBeans IDE(ak nie je náš projekt už otvorený kliknite na '''window---Shape''') a zobrazí sa Vám niečo takéto:&lt;br /&gt;
[[Súbor:Ytb siesty.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytváranie Palety pre našu scénu ==&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Ytb_siesty.png&amp;diff=3804</id>
		<title>Súbor:Ytb siesty.png</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Ytb_siesty.png&amp;diff=3804"/>
		<updated>2010-04-21T22:15:11Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3803</id>
		<title>Základy práce s NetBeans IDE a vývoj modulov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3803"/>
		<updated>2010-04-21T21:47:40Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Work in progress :)'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== NetBeans IDE ==&lt;br /&gt;
NetBeans je krásne vývojové prostredie, ktorého hlavnou výhodou je jeho modulárna architektúra. Ďalším skvelým prvkom je, že sa spolieha na toolkit SWING UI, čo nám dokopy dáva obrovské výhody.&lt;br /&gt;
&lt;br /&gt;
V tomto článku sa posnažím ukázať, ako možno vytvoriť jednoduchý modul pre NetBeans, ktorý bude iba strohá ukážka toho, čo sa s NetBeans dá robit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Požiadavky na postup článkom ==&lt;br /&gt;
1. NetBeans IDE ( použitá verzia 6.8 )&amp;lt;br /&amp;gt;&lt;br /&gt;
2. Java_jdk ( použitá verzia 1.6.0.18 ) &amp;lt;br /&amp;gt;&lt;br /&gt;
3. Základné znalosti jazyka JAVA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie a spustenie projektu ==&lt;br /&gt;
1. Začneme  spustením  Netbeans  a  zvolíme  '''File--New Project--NetBeans Modules--Module'''&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb prvy.png]]&lt;br /&gt;
&lt;br /&gt;
2. Klikneme na tlačítko &amp;quot;NEXT&amp;quot;, pomenujeme si náš projekt napr. &amp;quot;ShapeSample&amp;quot;, nastavíme ho ako &amp;quot;'''main project'''&amp;quot; a vyberieme si umiestnenie, kde ho chceme uložiť a ponecháme '''Standalone Module'''&lt;br /&gt;
[[Súbor:Ytb druhy.png]]&lt;br /&gt;
&lt;br /&gt;
3. Klikneme &amp;quot;NEXT&amp;quot;, zadáme do &amp;quot;Code Name Base&amp;quot; '''org.netbeans.shapesample''', a dôležité, klikneme na '''Generate XML Layer'''. Následne klikneme na tlačítko finish, a vytvorí sa nám projekt.&lt;br /&gt;
[[Súbor:Ytb treti.png]]&lt;br /&gt;
&lt;br /&gt;
4. V okne &amp;quot;Project&amp;quot; , '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--Properties--Libraries'''. Module Dependencies klikneme na tlačítko &amp;quot;ADD&amp;quot; a pridáme:&amp;lt;br /&amp;gt;&lt;br /&gt;
''a/ Visual Library API &amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Utilities API &amp;lt;br /&amp;gt;''&lt;br /&gt;
Klikneme na tlačítko OK, čo nám pridá odkazy.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Znova v &amp;quot;Project&amp;quot; window '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--New--Other--Module Development--Window Component''' , klikneme &amp;quot;NEXT&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6. Ako Windows Position dáme '''editor''' a zaškrtneme '''Open on application start''' a klikneme &amp;quot;NEXT&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7.Do políčka &amp;quot;Class Name Prefix&amp;quot; dopíšeme '''Shape''', klikneme na tlačítko &amp;quot;FINISH&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. Vygeneruje sa nám viacero súbor, jedným z nich je '''ShapeTopComponent''', 2krát naň klikneme a otvoríme ho v design view.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
9. V design view, pravým klikneme na okno akoby a dáme '''Set Layout--Border Layout'''&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb stvrty.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie scény ==&lt;br /&gt;
1. Využijeme okno &amp;quot;'''Pallete'''&amp;quot; (ak nie je zobrazené dáme window---pallete) a vložíme na naš layout '''ScrollPane'''. V okne &amp;quot;Inspector&amp;quot; klikneme pravým na jScrollPane1--Change Variable Name a nastavíme hodnotu na &amp;quot;shapePane&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
2.V &amp;quot;Project&amp;quot; windows na zložku''' org--netbeans--shapesample''' klikneme pravým a dáme '''new--Java Class''', pomenujme ju &amp;quot;'''GraphSceneImpl'''&amp;quot;, a po vytvorení dopíšme do triedy '''extends GraphScene'''&lt;br /&gt;
&lt;br /&gt;
3. Žltá žiarovka s červeným výkričníkom sa nám objaví naľavo v editore, klikneme na ňu, a dáme &amp;quot;'''add Import...'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
Následne sa dám objaví ďalšia žltá žiarovka, klikneme na ňu a dáme &amp;quot;'''Implement all abstract methods'''&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb piaty.png]]&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Ytb_piaty.png&amp;diff=3802</id>
		<title>Súbor:Ytb piaty.png</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Ytb_piaty.png&amp;diff=3802"/>
		<updated>2010-04-21T21:44:53Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Ytb_stvrty.png&amp;diff=3801</id>
		<title>Súbor:Ytb stvrty.png</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Ytb_stvrty.png&amp;diff=3801"/>
		<updated>2010-04-21T21:33:18Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: bola nahraná nová verzia „Súbor:Ytb stvrty.png“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3800</id>
		<title>Základy práce s NetBeans IDE a vývoj modulov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3800"/>
		<updated>2010-04-21T21:29:01Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Work in progress :)'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== NetBeans IDE ==&lt;br /&gt;
NetBeans je krásne vývojové prostredie, ktorého hlavnou výhodou je jeho modulárna architektúra. Ďalším skvelým prvkom je, že sa spolieha na toolkit SWING UI, čo nám dokopy dáva obrovské výhody.&lt;br /&gt;
&lt;br /&gt;
V tomto článku sa posnažím ukázať, ako možno vytvoriť jednoduchý modul pre NetBeans, ktorý bude iba strohá ukážka toho, čo sa s NetBeans dá robit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Požiadavky na postup článkom ==&lt;br /&gt;
1. NetBeans IDE ( použitá verzia 6.8 )&amp;lt;br /&amp;gt;&lt;br /&gt;
2. Java_jdk ( použitá verzia 1.6.0.18 ) &amp;lt;br /&amp;gt;&lt;br /&gt;
3. Základné znalosti jazyka JAVA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie a spustenie projektu ==&lt;br /&gt;
1. Začneme  spustením  Netbeans  a  zvolíme  '''File--New Project--NetBeans Modules--Module'''&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb prvy.png]]&lt;br /&gt;
&lt;br /&gt;
2. Klikneme na tlačítko &amp;quot;NEXT&amp;quot;, pomenujeme si náš projekt napr. &amp;quot;ShapeSample&amp;quot;, nastavíme ho ako &amp;quot;'''main project'''&amp;quot; a vyberieme si umiestnenie, kde ho chceme uložiť a ponecháme '''Standalone Module'''&lt;br /&gt;
[[Súbor:Ytb druhy.png]]&lt;br /&gt;
&lt;br /&gt;
3. Klikneme &amp;quot;NEXT&amp;quot;, zadáme do &amp;quot;Code Name Base&amp;quot; '''org.netbeans.shapesample''', a dôležité, klikneme na '''Generate XML Layer'''. Následne klikneme na tlačítko finish, a vytvorí sa nám projekt.&lt;br /&gt;
[[Súbor:Ytb treti.png]]&lt;br /&gt;
&lt;br /&gt;
4. V okne &amp;quot;Project&amp;quot; , '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--Properties--Libraries'''. Module Dependencies klikneme na tlačítko &amp;quot;ADD&amp;quot; a pridáme:&amp;lt;br /&amp;gt;&lt;br /&gt;
''a/ Visual Library API &amp;lt;br /&amp;gt;&lt;br /&gt;
b/ Utilities API &amp;lt;br /&amp;gt;''&lt;br /&gt;
Klikneme na tlačítko OK, čo nám pridá odkazy.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Znova v &amp;quot;Project&amp;quot; window '''klikneme pravým na &amp;quot;ShapeSample&amp;quot;--New--Other--Module Development--Window Component''' , klikneme &amp;quot;NEXT&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6. Ako Windows Position dáme '''editor''' a zaškrtneme '''Open on application start''' a klikneme &amp;quot;NEXT&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7.Do políčka &amp;quot;Class Name Prefix&amp;quot; dopíšeme '''Shape''', klikneme na tlačítko &amp;quot;FINISH&amp;quot; &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. Vygeneruje sa nám viacero súbor, jedným z nich je '''ShapeTopComponent''', 2krát naň klikneme a otvoríme ho v design view.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb stvrty.png]]&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Ytb_stvrty.png&amp;diff=3799</id>
		<title>Súbor:Ytb stvrty.png</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Ytb_stvrty.png&amp;diff=3799"/>
		<updated>2010-04-21T21:27:46Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3798</id>
		<title>Základy práce s NetBeans IDE a vývoj modulov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3798"/>
		<updated>2010-04-21T21:09:08Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Work in progress :)'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== NetBeans IDE ==&lt;br /&gt;
NetBeans je krásne vývojové prostredie, ktorého hlavnou výhodou je jeho modulárna architektúra. Ďalším skvelým prvkom je, že sa spolieha na toolkit SWING UI, čo nám dokopy dáva obrovské výhody.&lt;br /&gt;
&lt;br /&gt;
V tomto článku sa posnažím ukázať, ako možno vytvoriť jednoduchý modul pre NetBeans, ktorý bude iba strohá ukážka toho, čo sa s NetBeans dá robit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Požiadavky na postup článkom ==&lt;br /&gt;
1. NetBeans IDE ( použitá verzia 6.8 )&amp;lt;br /&amp;gt;&lt;br /&gt;
2. Java_jdk ( použitá verzia 1.6.0.18 ) &amp;lt;br /&amp;gt;&lt;br /&gt;
3. Základné znalosti jazyka JAVA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vytvorenie a spustenie projektu ==&lt;br /&gt;
1. Začneme  spustením  Netbeans  a  zvolíme  '''File--New Project--NetBeans Modules--Module'''&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Súbor:Ytb prvy.png]]&lt;br /&gt;
&lt;br /&gt;
2. Klikneme na tlačítko &amp;quot;NEXT&amp;quot;, pomenujeme si náš projekt napr. &amp;quot;ShapeSample&amp;quot;, nastavíme ho ako &amp;quot;'''main project'''&amp;quot; a vyberieme si umiestnenie, kde ho chceme uložiť a ponecháme '''Standalone Module'''&lt;br /&gt;
[[Súbor:Ytb druhy.png]]&lt;br /&gt;
&lt;br /&gt;
3. Klikneme &amp;quot;NEXT&amp;quot;, zadáme do &amp;quot;Code Name Base&amp;quot; '''org.netbeans.shapesample''', a dôležité, klikneme na '''Generate XML Layer'''. Následne klikneme na tlačítko finish, a vytvorí sa nám projekt.&lt;br /&gt;
[[Súbor:Ytb treti.png]]&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Ytb_treti.png&amp;diff=3797</id>
		<title>Súbor:Ytb treti.png</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Ytb_treti.png&amp;diff=3797"/>
		<updated>2010-04-21T21:06:32Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Ytb_druhy.png&amp;diff=3796</id>
		<title>Súbor:Ytb druhy.png</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Ytb_druhy.png&amp;diff=3796"/>
		<updated>2010-04-21T21:02:12Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=S%C3%BAbor:Ytb_prvy.png&amp;diff=3795</id>
		<title>Súbor:Ytb prvy.png</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=S%C3%BAbor:Ytb_prvy.png&amp;diff=3795"/>
		<updated>2010-04-21T20:59:03Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3793</id>
		<title>Základy práce s NetBeans IDE a vývoj modulov</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Z%C3%A1klady_pr%C3%A1ce_s_NetBeans_IDE_a_v%C3%BDvoj_modulov&amp;diff=3793"/>
		<updated>2010-04-21T19:28:01Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: Vytvorená stránka „Work in progress :)“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Work in progress :)&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Podklady_k_predn%C3%A1%C5%A1kam_a_cvi%C4%8Deniam&amp;diff=3792</id>
		<title>Podklady k prednáškam a cvičeniam</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Podklady_k_predn%C3%A1%C5%A1kam_a_cvi%C4%8Deniam&amp;diff=3792"/>
		<updated>2010-04-21T19:27:38Z</updated>

		<summary type="html">&lt;p&gt;Pokoraczki1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Kategória:Študijné materiály]]&lt;br /&gt;
== Cvičenia, semináre, návody a iné múdre texty==&lt;br /&gt;
&lt;br /&gt;
* [[Algoritmy a programovanie]]&lt;br /&gt;
* [[Databázové systémy - poznámky k Oracle SQL]]&lt;br /&gt;
* [[Konfigurovateľné mikroprocesorové systémy]]&lt;br /&gt;
* [[Logické a číslicové systémy ]]&lt;br /&gt;
* [[Objektovo orientované programovanie]]&lt;br /&gt;
* [[Operačné systémy]]&lt;br /&gt;
* [[Simulácie a modelovanie]] pre elektroniku a elektrotechniku&lt;br /&gt;
* [[Softvérové inžinierstvo]]&lt;br /&gt;
* [[Spolupráca počítača s prostredím]]&lt;br /&gt;
* [[Webovské technológie]]&lt;br /&gt;
* [[Základy informatiky - jazyk C]]&lt;br /&gt;
* [[Základy informatiky - jazyk Java]]&lt;br /&gt;
* [[Základy informatiky - jazyk Python]]&lt;br /&gt;
*[[Základy práce s NetBeans IDE a vývoj modulov]]&lt;/div&gt;</summary>
		<author><name>Pokoraczki1</name></author>
		
	</entry>
</feed>