# Java applety systému Control Web

## Co je applet

Applet je program napsaný v Javě, který obsahuje vazby umožňující prohlížeči nahrát jej jako součást WWW stránky a spustit na klientském počítači. Jedná se tedy o aplikaci běžící v prostředí prohlížeče HTML stránek.

Systém Control Web je doplněn sadou appletů, které umožňují vložit do HTML stránky objekty zobrazující některé přístroje systému Control Web. Tyto applety komunikují s aplikací běžící v systému Control Web a zobrazují (případně nastavují) hodnotu zvolené proměnné.

## Jak vložit applet do HTML stránky

### Applet lze vložit do HTML dokumentu pomocí následujících příkazů:

  <APPLET
    CODEBASE = "."
    CODE = "mii.cw.Meter.Meter.class"
    WIDTH = 200
    HEIGHT = 120
    VSPACE = 5
    HSPACE = 5
    NAME = "..."
    ALT="Applet nebyl spuštěn"
    ALIGN=LEFT >
  <PARAM name="name1" value="value1">
  <PARAM name="name2" value="value2">
  .
  .
  .
  </APPLET>

#### Význam parametrů:

- CODEBASE
  Cesta k adresáři obsahujícímu třídy appletů (class soubory), pokud jsou v jiném adresáři, než který obsahuje HTML soubory. Atribut CODEBASE může být adresář na tomtéž nebo i na jiném počítači. Pokud atribut CODEBASE není v tagu APPLET uveden, použije prohlížeč k nalezení class souborů aktuální adresář (t.j. adresář obsahující HTML soubory).
  Třídy appletů (class soubory) systému Control Web jsou instalovány do základního adresáře MII. Parametr tedy obsahuje cestu do adresáře, do nějž byl adresář MII vložen. Cesta může být absolutní, nebo relativní vzhledem k HTML souboru.
- CODE
  Jméno souboru (plný název, včetně jména balíku), který obsahuje třídu použitou v HTML stránce.
- WIDTH a HEIGHT
  Šířka a výška okna, v němž applet běží. Hodnoty jsou zadávány v pixelech.
- HSPACE a VSPACE
  Velikost místa v pixelech, jenž prohlížeč vloží mezi applet a objekty, jež ho obklopují. VSPACE nastavuje vertikální vzdálenosti (nad appletem a pod ním), HSPACE nastavuje horizontální vzdálenosti (nalevo a napravo).
- NAME
  Jméno instance appletu. Pomocí něj mohou ostatní applety na stránce komunikovat s touto instancí.
- ALT
  Text, který zobrazí prohlížeč nepodporující Javu, jakmile narazí na tag APPLET.
- ALIGN
  Nastavení polohy appletu relativně vzhledem k ostatním objektům na stránce. Při umísťování okna appletu mohou nastat dvě situace: v prvním případě je applet blok, okolo kterého text obtéká, ve druhém případě je applet zařazen do textu a chová se jako by byl jedním velkým písmenem. Způsob umísťování appletu v prohlížeči lze zvolit pomocí následujících hodnot atributu ALIGN:

- LEFT
  Applet se umístí k levému okraji stránky. Text vyplňuje pravou část stránky.
- RIGHT
  Applet se umístí k pravému okraji stránky. Text vyplňuje levou část stránky.
- TOP
  Horní okraj appletu se umístí na horní okraj textu.
- BOTTOM
  Spodní okraj appletu se umístí na spodní okraj textu.
- MIDDLE
  Střed appletu se umístí na základní linku textu.
- ABSMIDDLE
  Střed appletu se umístí na střed textu.
- BASELINE
  Spodní okraj appletu se umístí na základní linku textu.
- ABSBOTTOM
  Spodní okraj appletu se umístí na spodní okraj textu.

- PARAM
  Z HTML stránky lze předat appletům parametry ovlivňující činnost appletu. U každého parametru musí být zadáno jeho jméno a hodnota. Počet, typ a význam parametrů závisí na konkrétním appletu a budou popsány v kapitole Parametry přístroje a v kapitolách popisujících jednotlivé applety.

## Jak vytvořit HTML stránku komunikující s aplikací systému Control Web

Systém Control Web je doplněn sadou appletů, jejichž třídy odpovídají některým přístrojům systému Control Web. Tyto třídy lze umístit do HTML stránky a pomocí nich zpřístupnit (vizualizovat i řídit) aplikaci běžící v systému Control Web z WWW prohlížeče přes TCP/IP síť. Přitom na straně klienta (WWW prohlížeče) není zapotřebí instalovat Control Web runtime ani žádnou jinou část systému Control Web.

Applety jsou distribuovány v přeložené formě jako sada class souborů. V každém class souboru je přeložen kód jedné třídy. Každý applet se ovšem může skládat z více tříd. Dodávané class soubory jsou organizovány do tzv. balíků uložených do samostatných adresářů, které jsou umístěny v základním adresáři mii\cw. Každý adresář obsahuje třídy jednoho appletu a jeho nazev je shodný s názvem appletu. Do HTML stránky je třeba vložit hlavní třídu z příslušného balíku, jejíž název je opět shodný s názvem appletu. Při vkládání appletu do HTML stránky, je v parametru CODE potřeba uvést úplný název třídy. T.j. včetně názvu balíku, ve kterém se třída nachází (např. mii.cw.Control.Control.class).

Applety jsou instalovány současně s instalací systému Control Web do kořenového adresáře systému (např.: "C:\Program Files\Control Web").

### Podmínky pro vytváření HTML stránky zpřístupňující aplikaci běžící v systému Control Web:

- počítač s aplikací musí mít definovánu vlastní IP adresu
- na počítači s aplikací musí být spuštěn program Control Web Daemon
- program Control Web Daemon musí mít v menu Nastavení... povolen parametr Přijímat nekryptované požadavky
- aplikace musí mít nastaveny parametry allow_open_connections a allow_attach.

             settings
                allow_open_connections = true;
                allow_attach = true;
             end_settings

- v aplikaci musí být zařazen přístroj httpd zpřístupňující aplikaci běžící v systému Control Web z libovolného WWW prohlížeče. Jako indexový soubor musí mít přístroj uveden název HTML dokumentu s applety.
  Např.:

             httpd http;
               index_file = 'testapp.htm';
             end_httpd;

- při spouštění appletů hledá HTML prohlížeč class soubory v aktuálním adresáři, t.j. v adresáři ve kterém je uložen příslušný HTML soubor. HTML soubory obsahující Java Applety systému Control Web by tedy měly být v kořenovém adresáři systému. Pokud je HTML soubor umístěn v jiném adresáři, je potřeba nastavit adresář, ve kterém se mají hledat class soubory a případné další balíky (podadresáře). Tento adresář je určen proměnnou prostředí CLASSPATH, která může obsahovat více adresářů, ve kterých bude prohlížeč hledat class soubory. Proměnná se nastavuje v souboru AUTOEXEC.BAT příkazem SET.
  Např.: SET CLASSPATH=C:\Program Files\Control Web
- z bezpečnostních důvodů může applet vytvořit síťové spojení pouze s počítačem z něhož byl spuštěn. Z toho důvodu musí být HTML stránka a systém class souborů appletů systému Control Web umístěny na stejném počítači jako aplikace systému Control Web.
- počítač musí být připojen na Domain Name Server (DNS)

### Postup při vytváření HTML stránky zpřístupňující aplikaci běžící v systému Control Web:

1. v HTML stránce je třeba vytvořit komunikační applet vložením třídy mii.cw.Net.Net.class.

  <APPLET
    CODEBASE = "."
    CODE = "mii.cw.Net.Net.class"
    WIDTH = 0
    HEIGHT = 0
    NAME = "Net">

  <PARAM NAME = "host_name" VALUE = "194.108.72.1">
  <PARAM NAME = "module_name" VALUE = "C:\CW\PROG\TEST.CWX">
  <PARAM NAME = "time_out" VALUE = 5000>
  </APPLET>

  Příkaz APPLET musí mít uvedeny parametry:

2. CODE s názvem třídy Net.class
3. NAME se symbolickým jménem instance appletu
4. WIDTH a HEIGHT nastavené na hodnotu 0

Komunikační třída musí mít uvedeny parametry:

- host_name s IP adresou počítače na kterém běží aplikace systému Control Web
- module_name s plnou cestou k aplikaci

Komunikační třída naváže spojení s aplikací systému Control Web a vytvoří TCP/IP spojení. Pomocí tohoto spojení pak mohou s aplikací komunikovat všechny applety přístrojů umístěné na stejné HTML stránce.

5. vložit applety přístrojů

  <APPLET
    CODEBASE = "."
    CODE = "mii.cw.Control.Control.class"
    WIDTH = 200
    HEIGHT = 200>
  <PARAM NAME = "net_name" VALUE = "Net">
  <PARAM NAME = "var_name" VALUE = "realVar">
  <PARAM NAME = "range_to" VALUE = 200>
  <PARAM NAME = "time_step" VALUE = 1000>
  </APPLET>

Příkaz APPLET musí mít uvedeny parametry:

- CODE s názvem třídy příslušného přístroje
- WIDTH a HEIGHT nastavené na požadovanou velikost appletu

Třída přístroje musí mít uvedeny parametry:

- net_name se jménem komunikačního appletu definovaným při jeho vytváření
- var_name se jménem proměnné aplikace systému Control Web, jejíž hodnotu bude applet zobrazovat, případně nastavovat
- další parametry podle typu přístroje

## Nastavení Microsoft Internet Exploreru verze 4.0 a 5.0

1. v hlavním menu prohlížeče otevřít podmenu "Nástroje"
2. vybrat položku "Možnosti sítě Internet"
3. v dialogu "Možnosti sítě Internet" zvolit záložku "Zabezpečení"
4. nastavit parametr "Zóna" na "Zóna sítě Internet"
5. nastavit parametr "Úroveň zabezpečení zóny" na "Vlastní"

6. tlačítkem "Nastavení" otevřít dialogové okno "Nastavení zabezpečení"
7. ve stromu parametrů vybrat větev "Java" a nastavit parametr "Povolení pro jazyk Java" na hodnotu "Vlastní"

8. tlačítkem "Uživatelské nastavení pro jazyk Java" otevřít dialogové okno pro změnu oprávnění
9. vybrat záložku "Upravit oprávnění"
10. nastavit parametr "Nepodepsaný obsah\Spustit nepodepsaný obsah\Další nepodepsaná oprávnění\Přístup ke všem adresám v síti" na hodnotu "Povolit".

## Applety přístrojů

### Parametry přístroje

Činnost přístrojů je upravována pomocí parametrů předávaných z HTML stránky. U každého parametru musí být uvedeno jeho jméno a hodnota.

Příklad:

  <APPLET
    CODEBASE = "."
    CODE = "mii.cw.Meter.Meter.class"
    WIDTH = 200
    HEIGHT = 120>
  <PARAM NAME = "net_name" VALUE = "Net">
  <PARAM NAME = "var_name" VALUE = "realVar">
  <PARAM NAME = "range_to" VALUE = 100>
  <PARAM NAME = "time_step" VALUE = 1000>
  </APPLET>

Parametry přístrojů jsou standardní, jejichž význam je totožný pro všechny přístroje, a parametry specifické pro jednotlivé přístroje.

V HTML stránce nemusí být uvedeny všechny parametry přístroje. Některé parametry není potřeba uvádět. U takového parametru se v přístroji použije jeho implicitní hodnota.

#### Standardní parametry přístroje:

- net_name
  Jméno komunikačního appletu. T.j. appletu, jehož prostřednictvím přístroj komunikuje s aplikací systému Control Web.
- host_name
  IP adresa na níž běží aplikace systému Control Web. Tento parametr je ignorován v případě, že komunikace probíhá prostřednictvím společného komunikačního appletu.
- module_name
  Plná cesta k aplikaci systému Control Web. Tento parametr je ignorován v případě, že komunikace probíhá prostřednictvím společného komunikačního appletu.
- time_out
  Doba v ms, po kterou se applet pokouší navázat spojení s aplikací. Pokud se během ní nepodaří spojení navázat je inicialize appletu ukončena chybou.
- time_step
  Časový interval v ms, s jakým se přístroj dotazuje na hodnotu proměnné.

### Přístroj "Control"

Přístroj zobrazuje hodnotu numerické proměnné a současně umožňuje její nastavení pomocí knoflíku, rolovací lišty nebo editačního řádku.

#### Specifické parametry přístroje:

- var_name
  Jméno proměnné aplikace systému Control Web, jejíž hodnotu bude přístroj zobrazovat, případně měnit.
- range_from
- range_to
  Parametry udávající rozsah přístroje. Je-li hodnota proměnné mimo rozsah přístroje, nastaví se přístroj na mezní hranici. Implicitní hodnota rozsahu je 0-100.
- init_value
  Nastavuje počáteční hodnotu přístroje při jeho inicializaci. Implicitní hodnota se rovná dolní mezi rozsahu přístroje.
- mode
  Určuje grafickou podobu přístroje uvedením jednoho z názvů módu:
  - knob ... knoflík

  - vertical_slider, horizontal_slider ... rolovací lišty

  - edit_box ... editační řádek

- content
  Má rovněž vliv na grafickou podobu přístroje. Může nabývat hodnot:
  - max ... maximum
  - min ... minimum
    Pro všechny módy znamená nastavení content = max zobrazení komplexní podoby přístroje. Některé módy umožňují nezobrazovat jednu ze svých částí nastavením parametru content = min.
- dec_places
  Počet zobrazovaných desetinných míst na číslicovém zobrazovači. Implicitní hodnota je 2.

#### Příklad volání:

  <APPLET
    CODEBASE = "."
    CODE = "mii.cw.Control.Control.class"
    WIDTH = 200 HEIGHT = 200>
  <PARAM NAME = "net_name" VALUE = "Net">
  <PARAM NAME = "var_name" VALUE = "realVar">
  <PARAM NAME = "range_to" VALUE = 200>
  <PARAM NAME = "time_step" VALUE = 1000>
  </APPLET>

### Přístroj "Indicator"

Přístroj zobrazuje hodnotu logické proměnné.

#### Specifické parametry přístroje:

- var_name
  Jméno proměnné aplikace systému Control Web.
- init_value
  Nastavuje počáteční hodnotu přístroje při jeho inicializaci. Implicitní hodnota je false.

#### Příklad volání:

  <APPLET
    CODEBASE = "."
    CODE = "mii.cw.Indicator.Indicator.class"
    WIDTH = 44
    HEIGHT = 44>
  <PARAM NAME = "net_name" VALUE = "Net">
  <PARAM NAME = "var_name" VALUE = "boolVar">
  <PARAM NAME = "init_value" VALUE = true>
  </APPLET>

#### Upozornění:

Přístroj Indicator má pevnou velikost 44 x 44. Proto se doporučuje nastavit na tyto hodnoty parametry WIDTH a HEIGHT.

### Přístroj "Meter"

Přístroj zobrazuje hodnotu numerické proměnné pomocí ručkového přístroje nebo grafu.

#### Specifické parametry přístroje:

- var_name
  Jméno proměnné aplikace systému Control Web, jejíž hodnotu bude přístroj zobrazovat.
- range_from
- range_to
  Parametry udávající rozsah přístroje. Je-li hodnota proměnné mimo rozsah přístroje, nastaví se přístroj na mezní hranici. Implicitní hodnota rozsahu je 0-100.
- low_limit
- high_limit
  Parametry podle kterých se nastaví limity. Je-li hodnota menší než low_limit, použije se barva cyan, přesáhne-li hodnota high_limit, použije se barva červená. V rozsahu mezi limitami se použije zelená.
- init_value
  Nastavuje počáteční hodnotu přístroje při jeho inicializaci. Implicitní hodnota se rovná dolní mezi rozsahu přístroje.
- meter_mode
  Určuje grafickou podobu přístroje uvedením jednoho z názvů módu:
  - pointer
    Napodobuje ručkový přístroj zobrazující spojitou veličinu.
  - vertical_bar, horizontal_bar
    Oba módy představují barevnou plochu, která zaplňuje aktuální barvou v poměru hodnoty proměnné k maximálnímu rozsahu přístoje.
  - flow_graph, sweep_graph
    Oba módy vykreslují graf historického trendu. Mód flow_graph vykresluje poslední hodnotu vždy na konec grafu, přičemž se celý graf průběžně posouvá. Mód sweep_graph vykresluje vždy od začátku grafu. Po dosažení konce začne přepisovat hodnoty opět od začátku, graf se neposouvá.
  - digital
    Digitální výstup.
- content
  Má rovněž vliv na grafickou podobu přístroje. Může nabývat hodnot:
  - max ... maximum
  - med ... medium
  - min ... minimum
    Pro všechny módy znamená nastavení content = max zobrazení komplexní podoby přístroje. Některé módy umožňují nezobrazovat jednu ze svých částí nastavením parametru content = min nebo content = med.
- dec_places
  Počet zobrazovaných desetinných míst na číslicovém zobrazovači. Implicitní hodnota je 2.
- history
  Udává počet pamatovaných a zobrazovaných hodnot v grafu.

#### Příklad volání:

  <APPLET
    CODEBASE = "."
    CODE = "mii.cw.Meter.Meter.class"
    WIDTH = 200
    HEIGHT = 200>
  <PARAM NAME = "net_name" VALUE = "Net">
  <PARAM NAME = "var_name" VALUE = "realVar">
  <PARAM NAME = "range_to" VALUE = 200>
  <PARAM NAME = "time_step" VALUE = 1000>
  </APPLET>

### Přístroj "Switch"

Nastavení logické hodnoty do proměnné typu boolean pomocí tlačítka.

#### Specifické parametry přístroje:

- var_name
  Jméno proměnné aplikace systému Control Web.
- init_value
  Nastavuje počáteční hodnotu přístroje při jeho inicializaci. Implicitní hodnota je false

#### Příklad volání:

  <APPLET
    CODEBASE = "."
    CODE = "mii.cw.Switch.Switch.class"
    WIDTH = 44
    HEIGHT = 44>
  <PARAM NAME = "net_name" VALUE = "Net">
  <PARAM NAME = "var_name" VALUE = "boolVar">
  <PARAM NAME = "init_value" VALUE = true>
  </APPLET>

#### Upozornění:

Přístroj Switch má pevnou velikost 44 x 44. Proto se doporučuje nastavit na tyto hodnoty parametry WIDTH a HEIGHT.