Třída: cControl
Předek: cItem
cControl je báze všech objektů, které mohou vystupovat
ve formuláři ( cForm, cTabForm ). Nevytvářejí se instance této třídy,
nýbrž jejích potomků, které implementují různé objekty užívatelského rozhraní,
jako cBrowse, cEdit, cChoice, cCheckBox, cImage, cLabel, cList.
Konstruktory
public cControl( Panel parent, int x, int y,
int w, int h )
vytvoří nový objekt cControl.
Členské
proměnné třídy
public boolean checkModify = true;
proměnná definuje, zda editace prvku
označí též rodičovský formulář jako modifikovaný. Pokud checkModify=true,
také označí rodičovský formulář jako modifikovaný, takže při
odchodu stornem je uživatel dotázán, zda si přeje uložit změny.
Členské metody třídy ( publikovaná
část )
Čtení a zápis dat
Následující sada funkcí představuje univerzální rozhraní pro
přístup k datům ovládacích prvků. Tyto metoda lze uplatnit na všechny potomky
třídy cControl. Jejich implementace se však v jednotlivých typech
samozřejmě liší.
Objekty cEdit, cChoice, cLabel a cList těmito funkcemi manipulují
s obsahem editačního prvku, tedy čtou, případně zapisují editovanou hodnotu.
Objekt cCheckBox pracuje pouze s hodnotami A a N jako
parametry respektive výsledky volání setText/ getText. Funkce setText() takto
ovlivňuje stav ovládacího prvku.
Objekt cImage funkcemi setText/ getText nastavuje anebo vrací cestu k
obrázku.
Objekt cBrowse pracuje s těmito metodami pouze při zapnuté editaci
některé buňky, setText/ getText lze použít tedy pouze při validaci buňky.
public String getText()
metoda vrátí hodnotu ovládacího prvku jako String
public void setText(
String value )
metoda nastaví hodnotu ovládacího prvku
public long getLong()
metoda vrátí hodnotu ovládacího prvku jako long
public void setLong(
long value )
metoda nastaví hodnotu ovládacího prvku
public double getDouble()
metoda vrátí hodnotu ovládacího prvku jako double
public void setDouble(
double value )
metoda nastaví hodnotu ovládacího prvku
Tvorba vlastních
ovládacích prvků
public Component createControl()
tato metoda je volána při vytváření ovládacího prvku a má za úkol
vytvořit instanci vizuálního objektu, nejedná-li se o lightweight control, tedy
prvek, který se zobrazuje sám. Například cEdit touto metodou vytvoří
objekt třídy TextField. Metoda má vrátit odkaz na vytvořený objekt,
případně this, jedná-li se o lightweight control.
public Component getControl()
tato metoda vrací odkaz na vizuální objekt anebo this, jedná-li
se o lightweight control.
Ostatní
public void modify()
metoda označí prvek jako editovaný (při
odchodu se spustí validace). Pokud checkModify=true, také
označí rodičovský formulář jako modifikovaný, takže při odchodu stornem je
uživatel dotázán, zda si přeje uložit změny.
public cForm getForm()
metoda vrací odkaz na rodičovský formulář.
public String getSaveString()
Freelance volá metodu getSaveString() při ukládání dat
formuláře pro každý vnořený ovládací prvek. Každý typ ovládacího prvku implementuje
tuto metodu jiným způsobem. Základní implementace v třídě cControl je <JMÉNO_PRVKU>=<HODNOTA_PRVKU>.
Výsledkem sady volání je parametrický řetězec, který se spolu s příkazem pro
ukládání dat odešle FastX serveru.
public String getName()
metoda vrací identifikační jméno prvku
public void setName(
String name )
metoda nastaví identifikační jméno prvku
public void setEnabled(
boolean bEnabled )
metoda povolí anebo zakáže editaci ovládacího prvku
protected String getPopup()
Freelance volá tuto metodu při otevírání popup menu. Metoda vrací
jméno popup menu. Tuto funkci implementuje zatím pouze třída cBrowse,
počítá se s ní i u dalších tříd, například cImage.
public void setEditNotification(
iEditNotification notification )
metoda zaregistruje k ovl. prvku objekt
implementující interface iEditNotification. Interface definuje metodu
public void iEdited( cControl item ). Tato metoda je volána při každé uživatelské změně hodnoty ovl. prvku typu cEdit, cText,
cChoice, cCheckBox a cList. Spolu s metodou editNotify() vytváří konzistentní interface pro implementaci okamžité (nikoli až validační) odezvy
na uživatelské vstupy.
Příklad (chceme, aby
validátor implementoval odezvu při editaci pole NAME a CITY):
public class cMyEval extends cUniEval
implements iEditNotification
{
public void onCreate( String
itemName )
{
super.onCreate( itemName );
form.getControl(
"NAME" ).setEditNotification( this );
form.getControl(
"CITY" ).setEditNotification( this );
}
public void iEdited(
cControl item )
{
// called on each NAME &
CITY field editation
if ( item.getName().equals(
"CITY" ) )
{
...any code for CITY change...
}
else
{
...any code for NAME change...
}
}
}
public void editNotify()
metoda zjistí, je-li registrován objekt interface iEditNotification. Pokud ano, zavolá
jeho metodu public void iEdited( cControl item ). Implicitně tuto metodu
volají ovl. prvku typu cEdit, cText, cChoice,
cCheckBox a cList.