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í.