package elte.java2_utikalauz5.gui; /** Az AWT ablakozórendszer jellemzői használatát kijelző példaprogram. A szabványos kimeneten kilistázzuk a jellemzők inicializálását, valamint bevezetünk és beállítunk egy Teszt nevű értéket is. @link.forrásfájl {@docRoot}/../data/gui/src ToolkitTeszt.java @link.letöltés {@docRoot}/../data/gui ToolkitTeszt.jar @see java.awt.Toolkit @since Java 2 Útikalauz programozóknak 5.0 */ class ToolkitTeszt implements java.beans.PropertyChangeListener { /** Konstans objektum az eseményfigyeléshez */ static ToolkitTeszt teszt = new ToolkitTeszt(); /** Az új {@code Toolkit}-et telepítő alapértelmezett konstruktor */ private ToolkitTeszt() { teszt = this; //singleton eltárolása String jellemző = System.getProperty("awt.toolkit"); String toolkit = jellemző==null ? (System.getProperty("os.name").equals( "Linux")?"sun.awt.X11.XToolkit":"sun.awt.motif.MToolkit"):jellemző; toolkit = getClass().getName()+"$"+toolkit.substring( toolkit.lastIndexOf('.')+1 ); System.setProperty("awt.toolkit", toolkit); try { //Toolkit példányosítása és ellenőrzése String új=java.awt.Toolkit.getDefaultToolkit().getClass().getName(); if (új.equals(toolkit)) System.out.println("Új Toolkit="+új); else System.out.println("Saját Toolkit telepítése nem sikerült, "+ "mert a példányosítás már megtörtént:\n\t"+új); } catch (java.awt.AWTError hiba) { hiba.printStackTrace();//hiba esetén az eredeti érték visszaállítása System.setProperty("awt.toolkit", jellemző); } } /** Ablakozórendszer jellemző megváltozásának jelzése. @param esemény a megváltozott jellemzőt tartalmazó eseményobjektum */ public void propertyChange(java.beans.PropertyChangeEvent esemény){ System.out.println("ToolkitTeszt: jellemzőváltozás\n\tjellemző="+ esemény.getPropertyName()+", régi="+esemény.getOldValue()+", új="+ esemény.getNewValue()); } /*********** Linux ablakozórendszer jellemzőit figyelő Toolkit ************/ // public static class XToolkit extends sun.awt.X11.XToolkit { /** Konstruktor, az ablakozórendszer jellemzők változásait figyelteti */ // public XToolkit() { // desktopPropsSupport.addPropertyChangeListener(teszt); // } /** Ablakozórenszer jellemzők inicializálásának jelzése */ // @Override // protected void initializeDesktopProperties() { // super.initializeDesktopProperties(); //kezdeti értékek kilistázása // System.out.println("ToolkitTeszt: initDesktop\n"+desktopProperties); // } /** Ablakozórendszer jellemző inicializálása. @param jellemző az inicializálandó ablakozórendszer jellemző @return az ablakozórendszer jellemző kezdeti értéke */ // @Override // protected Object lazilyLoadDesktopProperty(String jellemző) { // Object érték = jellemző.equals("Teszt") ? jellemző : // super.lazilyLoadDesktopProperty( jellemző ); // System.out.println("ToolkitTeszt: lazyLoad "+jellemző+"\n\t"+érték); // return érték; // } // } /*********** Motif ablakozórendszer jellemzőit figyelő Toolkit ************/ // public static class MToolkit extends sun.awt.motif.MToolkit { /** Konstruktor, az ablakozórendszer jellemzők változásait figyelteti */ // public MToolkit() { // desktopPropsSupport.addPropertyChangeListener(teszt); // } /** Ablakozórenszer jellemzők inicializálásának jelzése */ // @Override // protected void initializeDesktopProperties() { // super.initializeDesktopProperties(); //kezdeti értékek kilistázása // System.out.println("ToolkitTeszt: initDesktop\n"+desktopProperties); // } /** Ablakozórendszer jellemző inicializálása. @param jellemző az inicializálandó ablakozórendszer jellemző @return az ablakozórendszer jellemző kezdeti értéke */ // @Override // protected Object lazilyLoadDesktopProperty(String jellemző) { // Object érték = jellemző.equals("Teszt") ? jellemző : // super.lazilyLoadDesktopProperty( jellemző ); // System.out.println("ToolkitTeszt: lazyLoad "+jellemző+"\n\t"+érték); // return érték; // } // } /********** Window ablakozórendszer jellemzőit figyelő Toolkit ************/ @SuppressWarnings({"deprecation","unchecked"}) public static class WToolkit extends sun.awt.windows.WToolkit { /** Konstruktor, az ablakozórendszer jellemzők változásait figyelteti */ public WToolkit() { desktopPropsSupport.addPropertyChangeListener(teszt); } /** Ablakozórenszer jellemzők inicializálásának jelzése */ @Override protected void initializeDesktopProperties() { super.initializeDesktopProperties(); //kezdeti értékek kilistázása System.out.println("ToolkitTeszt: initDesktop\n"+desktopProperties); } /** Ablakozórendszer jellemző inicializálása. @param jellemző az inicializálandó ablakozórendszer jellemző @return az ablakozórendszer jellemző kezdeti értéke */ @Override protected Object lazilyLoadDesktopProperty(String jellemző) { Object érték = jellemző.equals("Teszt") ? jellemző : super.lazilyLoadDesktopProperty( jellemző ); System.out.println("ToolkitTeszt: lazyLoad "+jellemző+"\n\t"+érték); return érték; } } /** A tesztprogram indítása. @param argumentumok Az indításkor megadott paraméterek. {@code null} esetén nincs teszt, csak az új Toolkit kerül telepítésre. */ public static void main( String[] argumentumok ) { if (argumentumok==null) return; //nem kell tesztelni java.awt.Toolkit toolkit = java.awt.Toolkit.getDefaultToolkit(); System.out.println("ToolkitTeszt get: "+toolkit.getDesktopProperty( "Teszt")); } }