Třída: cBrowse
Předek: cControl
Třída cBrowse a její potomci implementují ovládací prvek typu
editační tabulka. Zobrazovaná data jsou rozdělena do řádek a sloupců. Definice
tabulky a obsahu je od vlastního objektu oddělena, je uložena na serveru v
souboru WTX, který je Freelance načten při inicializaci tohoto objektu a též
obsahuje SQL příkazy pro práci s daty. Editační tabulka umožňuje zobrazovat,
měnit, přidávat, rušit data a celou řadu dalších funkcí. Programátor Freelance
aplikace zpravidla pracuje jen s velmi úzkou množinou metod cBrowse,
neboť pracuje s objekty odvozenými od třídy cUniEval, které zapouzdřují
základní interface pro validaci a další aktivity nad editačními tabulkami.
Navíc, Freelance implementuje top-level objekt cBrowseForm, což je
formulář obsahující editační tabulku vhodný pro single-table editaci ( např.
registry apod. ) . Jiným užitečným objektem je cWTXForm, který také
pracuje s dynamickou definicí obsahu a do kterého lze integrovat editační
tabulky v rámci definice WTX souboru. Z toho vyplývá, že explicitní vytváření
objektů třídy cBrowse je jev velmi řídký.
Členské proměnné třídy ( publikovaná
část )
public static int rowbufsize = 40;
velikost read-cache, tedy základní jednotka, po kterých objekt
načítá řádky z databáze. Tato hodnota je univerzální pro všechny cBrowse
objekty a nesmí být měněna, je-li otevřena nějaká tabulka. Implicitní hodnota
byla shledána jako optimální pro středně rychlé sítě i kvalitní dial-up
připojení; pro aplikace s převahou browsů s řádově desítkami řádek lze pro
rychlejší odezvu doporučit hodnotu cca 25.
public static final int ROW_EDITED = 1;
public static final int ROW_NEW = 2;
public static final int ROW_DELETED = 4;
příznaky definující stav řádky ( viz getRowFlags(), setRowFlags() )
public static final int SCROLL_END = 2000000000;
konstanta, která
definuje přechod na poslední řádek. Používá se jako parametr funkce scrollTo(...).
Poznámka: následující proměnné jsou k dispozici pouze pro
čtení hodnot, nikoli pro přímý zápis.
int colcurrent;
id aktivního sloupce
int rowcurrent;
číslo aktivní řádky
int colcount;
počet všech sloupců
cibCol cols[];
pole sloupců
int colfirst;
id prvního viditelného sloupce
int rowfirst;
číslo prvního viditelné řádky
int visiblerows;
počet viditelných řádek
int newrows.count;
počet nových řádek
Konstruktory
public cBrowse( Panel parent, int x, int y,
int w, int h, String wtxFile )
vytvoří nový objekt cBrowse. Parametr wtxFile
obsahuje jméno WTX souboru. Rodičem je buď objekt cForm anebo cTab
( záložka formuláře ). Objekt je potřeba inicializovat voláním metody clear()
- prázdná tabulka anebo refresh() - načtení dat.
Členské metoda třídy ( publikovaná
část )
Inicializace, čtení a
zápis dat
public void clear()
metoda tabulku vyprázdní, tedy vymaže všechny řádky
public void refresh()
metoda tabulku vyprázdní a poté načte obsah znovu
public void refreshWithParams(
String parameters )
užitečná metoda, která tabulku vyprázdní a poté načte obsah znovu.
Navíc pošle servisnímu X modulu sadu parametrů, na které se může odkazovat
definice WTX souboru a které jsou před spuštěním SQL dotazu nahrazeny
skutečnými hodnotami.
public boolean save()
metoda provede zápis změn do databáze
public String replaceMetaSymbols(
String s, boolean b2Web )
metoda nahradí veškeré metasymboly ve vstupním řetězci a
vrátí nový řetězec. Pokud je b2Web=true, je vracený řetězec
upraven do formátu přípustného pro HTTP příkazy.
Interface, virtuální
metody
public boolean onRowValidate()
Freelance volá tuto metodu při přechodu z jednoho řádku na jiný,
pokud v původním řádku uživatel provedl nějaké změny.
public void onResizeForm(
int deltaw, int deltah )
Freelance volá tuto metodu při změně velikosti formuláře
protected void onColumnHeaderClick(
MouseEvent e )
Freelance volá tuto metodu, pokud uživatel klepne na záhlaví
některého sloupce
protected String getPopup()
Freelance volá tuto metodu při otevírání popup menu. Metoda vrací
jméno popup menu.
public Color getBkColor(
boolean bInBlock, int column, int row )
Freelance volá tuto metodu při vykreslování okna pro každou buňku.
Metodu lze překrýt a tím definovat vlastní barevné schéma.
Nastavení vzhledu
public void zoomIn()
metoda zvětší font a proporcionálně i rastr tabulky
public void zoomOut()
metoda zmenší font a proporcionálně i rastr tabulky
public void viewForm()
metoda zobrazí aktuální záznam jako formulář
public void viewTable()
metoda přepne z formulářového na tabulkový pohled
Práce s řádky
public int getRowcount()
metoda vrací počet záznamů, které SQL dotaz načetl
public int totalRows()
metoda vrací počet všech záznamů, tedy i nově vložených
public boolean addRow()
metoda přidá prázdný řádek. Poté inicializuje všechny sloupce
disponující default hodnotou ( WTX )
public void copyRow()
metoda přidá prázdný řádek a nakopíruje do něj hodoty z předchozího
aktuálního. Poté inicializuje všechny sloupce disponující default
hodnotou ( WTX )
public int getRowFlags(
int row )
metoda vrací bitovou masku s příznaky zadané řádky ( 1=editováno,
2=nový řádek, 4=označeno ke zrušení, tedy ROW_EDITED, ROW_NEW, ROW_DELETED )
public boolean setRowFlags(
int row, int flag, boolean bSet )
metoda nastaví anebo vypne příznaky zadané řádky
public boolean deleteRow(
int row )
metoda označí řádek ke zrušení
Práce se sloupci
public int colID(
String name )
metoda vrací id jmenovaného sloupce. Obecně platí, že metoda
pracující s id sloupce jsou rychlejší než jejich ekvivalenty pracující s
jménem sloupce. Tento rozdíl se však uplatní jen v hromadných operacích s daty.
public void enableCol(
int id, boolean bEnable )
metoda povolí/ zakáže editaci zadaného sloupce
public void enableNamedCol(
String colName, boolean bEnable )
metoda povolí/ zakáže editaci jmenovaného sloupce
public boolean scrollTo(
int row, int col )
metoda přesune fokus na zadanou buňku
public String value2data(
int id, String value )
metoda konvertuje editovanou hodnotu na datovou
public String data2value(
int id, String value )
metoda konvertuje datovou hodnotu na editovanou
public String getColText(
int id )
metoda vrací hodnotu zadaného sloupce jako String
public String getColType(
int id )
metoda vrací datový typ zadaného sloupce ( C, N, D )
public String getNamedColText(
String aName )
metoda vrací hodnotu jmenovaného sloupce jako String
public String getNamedColType(
String aName )
metoda vrací datový typ jmenovaného sloupce ( C, N, D )
public boolean setColText(
int id, String text )
metoda nastaví hodotu zadaného sloupce a vyvolá validaci
public boolean setNamedColText(
String aName, String text )
metoda nastaví hodotu jmenovaného sloupce a vyvolá validaci
public void sum(
int colId )
metoda vypočítá a zobrazí součet hodnot ve sloupci
protected boolean setValue(
int row, int col, String text, boolean bEval )
metoda nastaví hodotu jmenované buňky a případně vyvolá jeho
validaci
public boolean edit()
metoda zapne editaci aktivní buňky
protected void find(
int column )
metoda otevře find/ order dialog nad zadaným sloupcem
protected void findValue(
int column, String value, boolean bUseCurrent )
metoda vytvoří výběrovou podmínku se zadanými parametry a pošle ji
SQL serveru. Poté je tabulka naplněna daty splňujícími nová kriteria. Parametr bUseCurrent
říká, zda mají zůstat zachována též dříve nastavená kriteria. Tato volba
umožňuje postupné zpřesňování výběru.
protected void orderBy(
int column, boolean bUseCurrent, boolean bDesc
)
metoda vytvoří třídící kritérium se zadanými parametry a pošle ji
SQL serveru. Poté je tabulka naplněna daty. Parametr bUseCurrent říká,
zda mají zůstat zachována též dříve nastavená kriteria. Tato volba umožňuje
postupné zpřesňování třídění. Parametr bDesc říká, zda má být třídění
sestupné.
Iterace
public boolean forEach(
cAction action, boolean bFromCurrent, boolean bReturnContext )
metoda provede iteraci buď nad všemi řádky, anebo nad řádky od
aktuálního do konce ( bFromCurrent = true ). Na každém řádku vyvolá
metodu onAction(...) objektu action. Pokud bReturnContext = true,
vrátí se po iteraci kontext na původní řádek.
public boolean forEach(
boolean bFromCurrent, boolean bReturnContext )
metoda provede iteraci buď nad všemi řádky, anebo nad řádky od aktuálního
do konce ( bFromCurrent = true ). Na každém řádku vyvolá metodu
uniEval.forEachFunction() připojeného evaluátoru. Pokud bReturnContext =
true, vrátí se po iteraci kontext na původní řádek.
public boolean forEachSelected(
cAction action, boolean bReturnContext )
metoda provede iteraci nad všemi označenými řádky. Na každém řádku
vyvolá metodu onAction(...) objektu action. Pokud bReturnContext
= true, vrátí se po iteraci kontext na původní řádek.
public boolean forEachSelected(
boolean bReturnContext )
metoda provede iteraci nad všemi označenými řádky. Na každém řádku
vyvolá metodu uniEval.forEachFunction() připojeného evaluátoru. Pokud bReturnContext
= true, vrátí se po iteraci kontext na původní řádek.
Různé
public void print()
metoda zobrazí obsah tabulky jako HTML report v novém okně.
public void openWFX(
String sName, String sSrcColumns, String sDstFields )
komplexní metoda, která slouží k jednoduchému otevření formuláře v aktuálním
kontextu edit. tabulky. Otevře WFX formulář a jsou-li definovány čárkou
oddělené seznamy sSrcColumns a sDstFields, zkopíruje obsah
jmenovaných sloupců tabulky do jmenovaných ovládacích prvků formuláře a vyvolá
metodu load().
public void itemInfo()
metoda zobrazí asociované informace. Standardní implementace
pracuje s položkou wroInfo WTX šablony, kterou zpracuje a odešle jako
parametry server commandu Task=%%(application).wro.
public int errMsg(
String text )
metoda otevře chybové hlášení.