PaintBoard (graficky chat) - programatorska dokumentace
=======================================================

Aplikace je vyvijena pro Javu (jre 1.4+) v jBuilder 2005 Foundation. Jenda se 
o jednoduchy graficky chat. Sitova komunikace je postavena na Java RMI.


Spustitelne tridy
=================

PaintServer
-----------
Obsahuje tridu main. Po spusteni vytvori novy objekt implementujici rozhrani
PaintServerInterface a registruje ho ve jmene sluzbe. Ziskani cesty k class souborum
a zjisteni IP adresy (host name) by melo probehnout automaticky (testovano pouze pod
WinXP a Win2003).

PaintBoardConnectedFrame
------------------------
Klientaska aplikace slouzici k pripojeni se k chatu. Je v ni popis vzhledu
formulare. Pro funkci jsou prevazne volany metody jinych trid.

Popis funkce
============
Funkce servru je zrejma z popisu Spustitelne tridy - PaintServer.

Formular pro prihlaseni po stisku tlacitka "Connect server" vola funkci Naming.list()
daneho servru a vysledek vypise do Listu.
Po stisku tlacitka "connect" se pripojime ke vzdalenemu objektu na servru a vytvorime
novy lokalni, ktery dame do konstruktoru samotneho chatovaciho okna (PaintBoardWindow).

PaintBoardWindow obsahuje PaintComponent do ktere vykreslujeme objekty dedene z Shape.
Po vyvolani udalosti stisku tlacitka mysi nad PaintComponent (podle zvoleneho kresliciho
nastroje) volame metodu servru, ktera prida novy objekt na server.
Dalsi proces se stara o vykreslovani. Funguje nasledovne: Zepta se zda od jeho posledni 
aktualizace pribyly na servru nove objekty. Pokud ano zavola metodu getBoard ktera stahne
ze servru pole vsech objektu, ktere vlozi do PaintingComp a zavola na ni repaint().


Sestaveni jar
=============
Po vygenerovani jar souboru je nutno rucne pridat soubory com/borlan/jbcl/layout/*
jinak pri pokusu o spusteni klientske aplikace dostaneme vyjimku chybejiciho balicku
VerticalLlowLayout.


Zname chyby + navrh reseni
==========================
- pri pouziti jineho kresliciho nastroje nez "Pen" se kresleny objekt vykresli az po uvolneni
  tlacitka mysi.
  RESENI: Drzet si lokalne pole vsech objektu ktere by se vykreslovalo. Pri tazeni mysi vykreslit
  toto pole + novy objekt. Po uvolneni mysi poslat novy objekt na server.
  
- Pri velkem mnozstvi grafickych objektu (hlavne nastroj Pen) dochazi ke zpomalovani aplikace.
  RESENI: Drzet si lokalne pole vsech objektu, vlakno by zjistilo kolik je na servru novych
  objektu od posledni aktualizece a stahlo by jen nove a ty pridalo k lokalnimu poli.
