package elte.java2_utikalauz5.gui;
/**
Példaprogram a {@code BorderLayout} elrendezési stratégia szemléltetésére.

A felhasználói felületen összes lehetséges pozícióba egy nyomógombot raktunk, melyek felirataként a rájuk érvényes elrendezési jellemző (abszolút / relatív formában) jelenik meg.
Bármely gombot megnyomva az eltűnik, így tesztelhetjük az elrendezés viselkedését, ha nincs minden komponenshely kitöltve.
Az utolsónak megmaradt gomb megnyomásakor pedig visszaáll a kezdőállapot.
@link.forrásfájl {@docRoot}/../data/gui/src BorderLayoutTeszt.java
@link.letöltés {@docRoot}/../data/gui BorderLayoutTeszt.jar
@see java.awt.BorderLayout
@since Java 2 Útikalauz programozóknak 5.0
*/
class BorderLayoutTeszt extends LayoutTeszt {
/**
A stratégia 5 komponensének beállítása.
@param gomb az új nyomógomb
@param felület cél konténer
@return a nyomógombhoz tartozó elrendezési jellemző, vagy {@code null}
*/
Object újgomb( java.awt.Container felület, Gomb gomb ) {
gomb.setVonalaz(false); //üres relatív komponenshely keresése
java.awt.BorderLayout bl = (java.awt.BorderLayout)elrendezés;
if (bl.getLayoutComponent(java.awt.BorderLayout.PAGE_START)==null)
return java.awt.BorderLayout.PAGE_START;
if (bl.getLayoutComponent(java.awt.BorderLayout.PAGE_END)==null)
return java.awt.BorderLayout.PAGE_END;
if (bl.getLayoutComponent(java.awt.BorderLayout.LINE_START)==null)
return java.awt.BorderLayout.LINE_START;
if (bl.getLayoutComponent(java.awt.BorderLayout.LINE_END)==null)
return java.awt.BorderLayout.LINE_END;
return java.awt.BorderLayout.CENTER;
}
/**
Gomb feliratának beállítása. A feliratra a gomb abszolút és relatív
elrendezési pozíciója kerül fel.
@param gomb a feliratozandó gomb
*/
@Override
void feliratoz( Gomb gomb ) {
gomb.setArány(0); //azonos méretűek lesznek a gombok
java.awt.BorderLayout bl = (java.awt.BorderLayout)elrendezés;
java.awt.Container felület = gomb.getParent();
String felirat = bl.getConstraints(gomb).toString();
if (bl.getLayoutComponent(felület, java.awt.BorderLayout.NORTH)==gomb)
felirat = "NORTH / "+felirat;
else if(bl.getLayoutComponent(felület,java.awt.BorderLayout.EAST)==gomb)
felirat = "EAST / "+felirat;
else if(bl.getLayoutComponent(felület,java.awt.BorderLayout.WEST)==gomb)
felirat = "WEST / "+felirat;
else if(bl.getLayoutComponent(felület,java.awt.BorderLayout.SOUTH)==gomb)
felirat = "SOUTH / "+felirat;
gomb.setLabel(felirat);
}
/**
Törölhető nyomógomb lekérdezése.
@param gomb az ellenőrzött nyomógomb
@return mindig igaz, mert minden gomb törlődhet.
*/
@Override
boolean törlőgomb( Gomb gomb ) {
return true;
}
/**
Új gombbal bővítést végző nyomógomb lekérdezése.
Ha már csak egy gomb látható, a többi újra felvételre kerül.
@param gomb az ellenőrzött nyomógomb
@return igaz érték az utolsó gomb esetén.
*/
@Override
boolean bővítőgomb( Gomb gomb ) {
if (gomb.getParent().getComponentCount()>1) return false;
for (int i=3; --i>=0;) újgomb(gomb.getParent());//a többi komponens újra
return true; //felvétele
}
/**
Az elrendezési jellemzők nem változnak meg.
@param gomb a megváltoztatandó nyomógomb
*/
@Override
void változógomb( Gomb gomb ) {}
/** Konstruktor az elrendezési stratégia megadásával. */
BorderLayoutTeszt() {
super( new java.awt.BorderLayout(helykihagyás, helykihagyás) );
}
/**
A grafikus felhasználói felület felépítése {@code BorderLayout}-ot használva
@param felület A felhasználói felületet tartalmazó konténer.
@param argumentumok Az indításkor megadott paraméterek.
*/
public static void felépít( java.awt.Container felület,
String argumentumok[]) {
argumentumKezelés( argumentumok ); //indítási paraméterek kezelése
felépít( new BorderLayoutTeszt(), felület, argumentumok );
}
/**
A tesztprogram indítása külön ablakban.
@param argumentumok Az indításkor megadott paraméterek.
*/
public static void main( String[] argumentumok ) {
felépít( null, argumentumok );
}
}