JavaHelp Základní popis systému JavaHelp Soucástí vetšiny

Transkript

JavaHelp Základní popis systému JavaHelp Soucástí vetšiny
JavaHelp
Základní popis systému JavaHelp
Soucástí vetšiny interaktivních aplikací je nápoveda (help) – aplikace v Jave nejsou výjimkou.
Systém JavaHelp je napsaný v Jave a je urcený pro aplikace vytvárené v Jave. JavaHelp
poskytuje vývojárum a autorum standardní, plnohodnotný a snadno použitelný systém pro
prezentování on-line informací uživatelum aplikací napsaných v Jave. Tento systém je standardním rozšírením Java SDK a je zdarma k dispozici na http://java.sun.com/.
JavaHelp systém umožnuje vývojárum zprístupnit nápovedu:
• v aplikacích,
• v JavaBeans,
• v appletech.
Obrázek 6.14: Prohlížec nápovedy
Systém JavaHelp má následujících základní rysy:
• prohlížec nápovedy (help viewer) se pripojuje k aplikaci jako jar soubor. Na obrázku 6.14
je ukázka okna s nápovedou.
Prohlížec obsahuje dva panely: jeden pro zobrazení vlastní nápovedy formátované pomocí
HTML 3.2 a druhý panel s navigacním oknem, ve kterém se lze prepínat mezi tremi
záložkami (navigátory):
• obsah (Table of Contents),
•
•
•
•
• rejstrík (Index)
• fulltextové vyhledávání (fulltext search)
Autor nápovedy muže pridávat další navigátory, poprípade muže navigátory ubírat.
Okno prohlížece muže být bud samostatné (panel v pojmech AWT a SWINGu), nebo
muže být soucástí okna aplikace.
Je obvyklé uložit veškeré informace nápovedy do jednoho jar archivu. Vývojári a autori
nápovedy obvykle využívají z duvodu flexibility možnost mít samostatné soubory.
JavaHelp podporuje kontextove závislou nápovedu, existuje vetší množství zpusobu, jak
nápovedu z aplikace vyvolat.
JavaHelp je napsaný v Jave a umožnuje vývojárum vytváret si vlastní vzhled i upravovat
funkcnost.
JavaHelp je navržen pro použití v ruzných typech aplikací i v ruznorodém sítovém prostredí.
• Samostatné aplikace obvykle mají soubor/soubory s nápovedou k dispozici na lokálním
disku a zobrazují ji v samostatném okne viz obrázek 6.15..
• Další možností je umístit soubory s vlastní nápovedou na síti a ne na lokálním disku.
Základní schéma této situace je na obrázku 6.16.
• JavaHelp podporuje vytvárení i tzv. help serveru – tento server podporuje nápovedu pro
více aplikací, umí prohledávat jednotlivé nápovedy (tj. hledání neprobíhá na stanici, ale na
serveru), umí spojovat více nápoved do jedné (duležité v prípade JavaBeans).
• Aplikace pro zobrazení nápovedy nemusí vždy vytváret zvláštní okno – je možno zaclenit
nápovedu prímo do okna aplikace viz obrázek 6.17:
Obrázek 6.15: Možnosti nápovedy, varianta nápoveda v samostatném okne, soubor na
disku.
Obrázek 6.16: Možnosti nápovedy, varianta nápoveda v samostatném okne, soubor na
síti.
Obrázek 6.17: Možnosti nápovedy, varianta nápoveda v okne aplikace, soubor na disku.
Obdobne jako v prípade aplikací je možné využít JavaHelp i v appletech a v JavaBeans.
Vytvárení nápovedy (vytvárení obsahu)
Tato kapitola obsahuje základní informace pro tvorbu souboru s nápovedou. Jednotlivá témata
nápovedy jsou popsána v samostatných HTML souborech dle standardu HTML 3.2. Dále se
vytvárejí speciální soubory s metadaty, které slouží pro prezentaci nápovedy (napr. soubor
s obsahem, soubor s indexem, soubory pro vyhledávání). Celek se oznacuje pojmem helpset.
Pro tvorbu nápovedy se casto používá speciální programové vybavení (na http://java.sun.com/
je k dispozici seznam techto programu od nezávislých výrobcu), které mnohé detaily tvorby
nápovedy autorum odstíní.
Zde si popíšeme základní postup pro vytvárení nápovedy. Mnohé podrobnosti a speciality
vynecháme – pokud budete vytváret vlastní nápovedu, doporucujeme prostudovat
dokumentaci k systému JavaHelp, kterou si stáhnete z java.sun.com soucasne s produktem..
Vytvorení nápovedy se skládá z následujících kroku:
• vytvorení souboru s jednotlivými tématy (texty a obrázky),
• vytvorení souboru popisujícího HelpSet
• vytvorení souboru s mapou odkazu,
• vytvorení souboru s obsahem,
• vytvorení souboru s indexem,
• vytvorení databáze pro fulltextové vyhledávání,
• kompletace všech cástí do JAR souboru.
Soucástí distribuce je pomocný program hsviewer, kterým si lze vytvárenou nápovedu
prohlížet – tj. pri vytvárení obsahu nápovedy není potreba mít k dispozici celou aplikaci.
Vytvárení souboru s jednotlivými tématy
Pro každé téma musí existovat samostatný soubor ve formátu HTML dle standardu HTML
3.2 (tj. nelze používat nekterá rozšírení z poslední doby). Soucástí mohou být i obrázky. Mezi
jednotlivými tématy je možno si vytváret vlastní odkazy (pomocí <A HREF=...>), je nutné
však používat relativní cesty. HTML soubory s tématy se obvykle umístují do samostatného
podadresáre, pri vetším rozsahu nápovedy je vhodné ji rozdelit napr. dle skupin témat do
jednotlivých podadresáru.
V HTML kódu lze používat speciální rozšírení pres definici speciálních objektu v HTML
kódu - napr. lze takto používat popup okna Konkrétní popis této techniky vcetne príkladu je
k dispozici v dokumentaci. Lze též definovat vlastní rozšírení.
Vytvorení souboru popisujícího HelpSet
V korenovém adresári s nápovedou musí existovat soubor s koncovkou .hs, který obsahuje
základní informace o nápovede. Jméno tohoto souboru udává jméno této nápovedy (jméno
helpsetu). Soubor je ve formátu XML (soucástí distribuce javahelpu je i príslušný DTD
soubor). Následuje príklad jednoduchého souboru s popisem helpsetu:
<?xml version='1.0' encoding='ISO-8859-1' ?>
<!DOCTYPE helpset
PUBLIC
"-//Sun Microsystems Inc.//DTD JavaHelp HelpSet Version 1.0//EN"
"http://java.sun.com/products/javahelp/helpset_1_0.dtd">
<helpset version="1.0">
<title>Cestovni Kancelar</title>
<maps>
<homeID>Cestovni_kancelar</homeID>
<mapref location="cestovka.jhm" />
</maps>
<view>
<name>Obsah</name>
<label>Obsah napovedy</label>
<type>javax.help.TOCView</type>
<data>cestovkaTOC.xml</data>
</view>
<view>
<name>Index</name>
<label>Index k napovede</label>
<type>javax.help.IndexView</type>
<data>cestovkaIndex.xml</data>
</view>
<view>
<name>Search</name>
<label>Search</label>
<type>javax.help.SearchView</type>
<data engine="com.sun.java.help.search.DefaultSearchEngine">
JavaHelpSearch
</data>
</view>
</helpset>
Soubor helpset obsahuje následující základní tagy:
<helpset>
definuje helpset, obsahuje následující tagy:
<title>
nadpis helpsetu,
<maps>
urcení souboru s mapou odkazu, obsahuje následující tagy:
<homeID> odkaz, který se použije, pokud není z aplikace urceno, který se
má zobrazit,
<mapref>
odkaz na jméno souboru (url) s mapou odkazu,
<view>
definuje jednotlivé navigátory použité pri zobrazení helpsetu,, tento tag
se muže opakovat,
<name>
jméno navigátoru,
<label>
krátké jméno navigátoru, použije se pri zobrazení (napr. Obsah,
Index, ...)
<type>
typ pohledu, v podstate je to jméno trídy, která se použije pro
zobrazení navigátoru,
<data>
jméno souboru (url), který obsahuje data pro tento navigátor
(napr. url souboru s obsahem),
Vytvorení souboru s mapou
Soubor s mapou obsahuje prirazení mezi identifikací jednotlivých témat nápovedy
v programu a URL príslušných HTML souboru, tj. v programu se nepoužívají jména
jednotlivých HTML souboru. Toto umožnuje vetší flexibilitu pri vytvárení nápovedy a také
napr. vytvárení vícejazycných verzí nápovedy. Jména odkazu se používají v souborech
s definicí obsahu, v souborech s definicí indexu a pri používání kontextove závislé nápovedy
v programu. Soubor s mapou by mel obsahovat i odkazy na obrázky.
Soubor s mapou odkazu používá formát XML. Následuje jednoduchý príklad souboru
s mapou odkazu:
<?xml version='1.0' encoding='ISO-8859-1' ?>
<!DOCTYPE map
PUBLIC
"-//Sun Microsystems Inc.//DTD JavaHelp Map Version 1.0//EN"
"http://java.sun.com/products/javahelp/map_1_0.dtd">
<map version="1.0">
<mapID target="Cestovni_kancelar"
url="HTML/Cestovni_kancelar.htm"/>
<mapID target="Novy_zakaznik"
url="HTML/Novy_zakaznik.htm"/>
<mapID target="Seznam_zakazniku"
url="HTML/Seznam_zakazniku.htm"/>
</map>
V souboru se používají dva tagy:
<map> definuje mapu, obsahuje <mapID> tagy,
<mapID>
definuje jednotlivé odkazy, má dva atributy:
target definuje jméno odkazu,
url
specifikuje url, na které se odkaz odkazuje,
Vytvorení souboru s obsahem
Soubor s obsahem obsahuje potrebné údaje pro navigátor TOC (Table of Contents) –
javax.helpset.TOCView. Tento soubor používá opet formát XML. Následuje jednoduchý
príklad souboru s obsahem:
<?xml version='1.0' encoding='windows-1250' ?>
<!DOCTYPE toc
PUBLIC
"-//Sun Microsystems Inc.//DTD JavaHelp TOC Version 1.0//EN"
"http://java.sun.com/products/javahelp/toc_1_0.dtd">
<toc version="1.0">
<tocitem text="Cestovní kancelár" target="Cestovni_kancelar"/>
<tocitem text="Seznam zákazníku" target="Seznam_zakazniku">
<tocitem text="Nový zákazník" target="Novy_zakaznik"/>
</tocitem>
</toc>
Obrázek 6.18: Vzhled obsahu nápovedy.
V souboru s obsahem se používají následující tagy:
<toc> definuje obsah, obsahuje tagy <tocitem>,
<tocitem>
definuje jednotlivé položky obsahu, tyto tagy mohou být vnoreny do
sebe – tím se vytvorí hierarchická struktura. Tento tag má tyto atributy:
text
urcuje text zobrazený v obsahu,
target (volitelný)
obsahuje jméno odkazu ze souboru mapy odkazu, který
se zobrazí pri zvolení tohoto nadpisu,
image (volitelný)
obsahuje jméno odkazu na obrázek ze souboru mapy
odkazu. Tento obrázek ve formátu JPEG nebo GIF se zobrazí
v obsahu.
Vytvorení souboru s indexem
Soubor s indexem obsahuje potrebné údaje pro navigátor Index (javax.helpset.IndexView).
Tento soubor používá opet formát XML. Následuje jednoduchý príklad souboru s indexem:
<?xml version='1.0' encoding='windows-1250' ?>
<!DOCTYPE index
PUBLIC
"-//Sun Microsystems Inc.//DTD JavaHelp Index Version 1.0//EN"
"http://java.sun.com/products/javahelp/index_1_0.dtd">
<index version="1.0">
<indexitem text="Konec" target="Cestovni_kancelar" />
<indexitem text="Help" target="Cestovni_kancelar" />
<indexitem text="Seznam zákazníku" target="Seznam_zakazniku" />
<indexitem text="Zobraz detail" target="Seznam_zakazniku" />
<indexitem text="Nový zákazník" target="Novy_zakaznik" />
<indexitem text="Jméno zákazníka" target="Novy_zakaznik" />
<indexitem text="Príjmení" target="Novy_zakaznik" />
<indexitem text="Rodné císlo" target="Novy_zakaznik" />
<indexitem text="Císlo pasu" target="Novy_zakaznik" />
<indexitem text="Adresa" target="Novy_zakaznik">
<indexitem text="Typ adresy" target="Novy_zakaznik" />
<indexitem text="Ulice" target="Novy_zakaznik" />
<indexitem text="Císlo popisné" target="Novy_zakaznik" />
<indexitem text="Mesto" target="Novy_zakaznik" />
<indexitem text="PSC" target="Novy_zakaznik" />
<indexitem text="Stát" target="Novy_zakaznik" />
</indexitem>
</index>
Obrázek 6.19: Vzhled navigátoru Index.
V souboru s indexem se používají následující tagy:
<index>
definuje index, obsahuje tagy <indexitem>,
<indexitem> urcuje jednotlivé položky indexu, tyto tagy mohou být vnoreny do sebe
– tím se vytvorí hierarchická struktura. Tento tag má následující atributy:
text
urcuje text zobraze ný v indexu,
target (volitelný)
obsahuje jméno odkazu ze souboru mapy odkazu, který
se zobrazí pri zvolení této položky indexu uživatelem,
Vytvorení databáze pro fulltextové vyhledávání
Systém pro fulltextové vyhledávání v javahelpu umožnuje nejen vyhledat príslušná témata
odpovídající dotazu, ale snaží se je též ohodnotit a seradit z hlediska relevantnosti. Pro
zprístupnení fulltextového vyhledávání je potreba v definici helpsetu uvést navigátor
javax.javahelp.SearchView a vytvorit databázi pro fulltextové vyhledávání. Tato databáze má
speciální strukturu a je možno ji vytvorit/aktualizovat pomocí programu jhindexer, který je
soucástí distribuce javahelpu. Program jhindexer spustte v adresári se souborem popisujícím
helpset a jako parametr mu zadejte jména podadresáru, které chcete indexovat. Program
jhindexer poté vytvorí speciální podadresár JavaHelpSearch s potrebnými soubory pro
navigátor.
Obrázek 6.20: Vzhled navigátoru Search.
Kompletace všech cástí do JAR souboru
Vytvorenou nápovedu je obvyklé distribuovat v jednom jar souboru, který lze vytvorit
programem jar. Popis tohoto programu je uveden v [JavaDoc] popr. v [UvodJava].
Použití JavaHelpu v programech
Trídy potrebné pro používání JavaHelpu jsou v souboru jh.jar z distribuce JavaHelpu. Pri
prekladu i pri spouštení musí být tento jar soubor uveden v CLASSPATH, aby se našli
potrebné trídy.
Pridání nápovedy do programu
Pridání nápovedy do programu volané pres nabídku v menu se skládá ze ctyr kroku.
1. Velmi vhodné je doplnit do zdrojového textu import klauzuli pro balícek javax.help:
import javax.help.*;
Dále je vhodné použít import klauzuli pro trídu java.net.URL:
import java.net.URL;
Jako promenné objektu je dále potreba nadeklarovat dve promenné, první typu HelpSet a
druhou typu HelpBroker, napr. takto:
HelpSet hs;
HelpBroker hb;
2. Prvním programovým krokem je udání cesty (popr. vyhledání) souboru popisujícího
helpset a vytvorení instance trídy HelpSet. Nejjednodušší je následující zpusob:
try {
URL hsURL = HelpSet.findHelpSet (null, "help/cestovka.hs");
hs = new HelpSet (null, hsURL);
}
catch (Exception ee) {
System.out.println("HelpSet cestovka.hs nenalezen");
return;
}
Následující varianta kódu vyhledává soubor s popisem helpsetu v rámci CLASSPATH:
try {
ClassLoader cl = CestovniKancelar.class.getClassLoader();
URL url = HelpSet.findHelpSet(cl, "cestovka");
mainHS = new HelpSet(cl, url);
}
catch (Exception ee) {
System.out.println ("HelpSet cestovka.hs nenalezen");
}
catch (ExceptionInInitializerError ex) {
System.err.println("initialization error:");
ex.getException().printStackTrace();
};
3. Dále by melo následovat vytvorení instance trídy HelpBroker, která zajištuje zobrazování
nápovedy:
hb = hs.createHelpBroker();
4. Následuje kód, který pridá do menu položku pro vyvolání nápovedy
JMenu help = new JMenu("Help");
menuBar.add(help);
JMenuItem menu_help = new JMenuItem("Nápoveda k programu");
menu_help.addActionListener (new CSH.DisplayHelpFromSource(hb));
Následující kód vytvorí tlacítko a priradí mu akci pro vyvolání nápovedy:
JButton helpbutton = new JButton("Help");
helpbutton.addActionListener(new CSH.DisplayHelpFromSource(mainHB));
Kontextove závislá nápoveda
Pri vytvárení kontextove závislé nápovedy musí programátor vyrešit dva problémy – musí
urcit zpusob, jak vyvolat tuto nápovedu (obvyklé je pomocí klávesy F1) a dále musí urcit,
které téma nápovedy se má zobrazit v príslušné situaci. Systém javahelp poskytuje více
variant rešení pro rešení obou problému. V následujícím textu si ukážeme základní varianty.
Prirazení kontextové nápovedy zajištuje objekt HelpBroker pomocí metody enableHelpKey,
která má tri parametry:
- AWT komponenta, pro kterou se prirazuje klávesa F1, obvykle se zde zadává Frame
(JFrame) nebo Panel (JPanel),
- identifikátor nápovedy (viz soubor s mapou), která se standardne zobrazí pri stisku F1,
toto prirazení lze prepsat u vložených objektu,
- helpset, který se má použít – obvykle se uvádí hodnota null, která znamená, že se použije
helpset prirazený pri vytvárení objektu HelpBroker,
V konstruktoru objektu ObrZakaznikVstup by kód mohl vypadat následovne:
CestovniKancelar.mainHB.enableHelpKey(this, "Novy_zakaznik", null);
K jednotlivým vstupním polím v rámci této obrazovky mužeme priradit téma kontextové
nápovedy pomocí statické metody CSH.setHelpIDString se dvemi parametry:
- komponenta, ke které se má priradit nápoveda (napr. typu JTextField),
- identifikátor nápovedy (viz soubor s mapou).
Napr. ke vstupnímu poli jmenoVstup lze priradit nápovedu následujícím príkazem:
CSH.setHelpIDString(jmenoVstup, "Novy_zakaznik.jmeno");
Statická metoda CSH.setHelpIDString neaktivuje klávesu F1, tj. u panelu ci rámu
obsahujícího príslušnou komponentu musí být prirazena klávesa F1 (aktivován príslušný
ActionListener) pomocí metody enableHelpKey objektu HelpBroker.
Poznámka: Podpora pro jeden typ kontextove závislé nápovedy, tzv. tooltips je soucástí
knihovny SWING.
Lokalizace nápovedy
Systém JavaHelp podporuje lokalizaci jednotlivých cástí nápovedy (a to vcetne vytvárení
vícejazycných nápoved):
• lokalizaci zobrazování nápovedy,
• lokalizaci helpsetu,
• lokalizaci HTML souboru,
• lokalizaci XML dat,
• lokalizaci fulltextového vyhledávání.
Jednotlivé prvky jsou popsány v dokumentaci programového vybavení.

Podobné dokumenty

Apache Camel ( Martin Polovinčák )

Apache Camel ( Martin Polovinčák ) §  Procesor – metoda process() – I když běží ve vláknech, §  Agregátor – XA transakce – nefunguje úplně jak by měl §  InOnly typ JMS endpointu – rychlost zapisování, obsah je stejný objekt

Více

Cesky

Cesky cinnosti, napr. výber, potvrzování, vyhledávání vpred nebo zpet..

Více

dálkový ovladač ZWP10

dálkový ovladač ZWP10 FAKRO nebo i jinými výrobci, které jsou kompatibilní s Z-Wave komunikací. Pomocí ovladače ZWP1 0 lze samostatně řídit až 1 0 zařízení na 5 kanálech (2 jednotky na 1 kanál). Umožňuje také vytvořit 1...

Více

8. Grafické uživatelské rozhraní

8. Grafické uživatelské rozhraní jednoduché aplikace stačí kombinace předcházejících a pro složitější aplikace pravděpodobně použijete RAD prostředí, které použití layoutu vyřeší za vás. Dalším rozvržením je CardLayout, pro vytvoř...

Více

1. Charakteristika discipliny SW inženýrství a její vývoj 2

1. Charakteristika discipliny SW inženýrství a její vývoj 2 • Odpovědnost (co třída zná nebo dělá) • Spolupracovník – pokud třída potřebuje informace, které nemá, nebo pomocí spolupracovníka změní informace, ke kterým nemá přímo přístup

Více