1 /*
2  *  CVS: $Id: GuiInterface.java,v 1.10 2004/07/16 16:22:34 marcus Exp $
3  * 
4  *  This file is part of Zuul.
5  *
6  *  Zuul is free software; you can redistribute it and/or modify
7  *  it under the terms of the GNU General Public License as published by
8  *  the Free Software Foundation; either version 2 of the License, or
9  *  (at your option) any later version.
10 *
11 *  Zuul is distributed in the hope that it will be useful,
12 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 *  GNU General Public License for more details.
15 *
16 *  You should have received a copy of the GNU General Public License
17 *  along with Zuul; if not, write to the Free Software
18 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19 * 
20 *  Copyrigth 2004 by marcus, leh
21 * 
22 */
23
24package org.jzuul.engine.gui;
25
26import java.awt.event.ActionListener;
27import java.awt.event.KeyListener;
28import java.io.InputStream;
29
30/**
31 * Dieses Interface wird von dem Engine für seine Ein/Ausgabe benutzt.
32 * Die print Methoden müssen so weit wie möglich den erwartungen Entsprechen.
33 * Der KeyListener muss nicht unbedingt implementiert werden, der ActionListener
34 * jedoch muss die Eingabe an das Engine weiterreichen.
35 * 
36 * 
37 * @version $Revision: 1.10 $
38 */
39public interface GuiInterface {
40    /**
41     * Definiert die Farbe Rot in einem int[3] in RGB Werten
42     */
43    int[] RED = { 255,0,0 };
44    /**
45     * Definiert die Farbe Grün in einem int[3] in RGB Werten
46     */
47    int[] GREEN = { 0,255,0 };
48    /**
49     * Definiert die Farbe Blau in einem int[3] in RGB Werten
50     */
51    int[] BLUE = { 0, 0,255 };
52    /**
53     * Definiert die Farbe Orange in einem int[3] in RGB Werten
54     */
55    int[] ORANGE = { 255, 177 , 177 };  
56    /**
57     * Definiert die Farbe Black in einem int[3] in RGB Werten
58     */
59    int[] BLACK = { 0, 0 , 0 }; 
60    
61    
62    /**
63     * Erwartet die Ausgaben von out mit anschließendem Zeilenumbruch
64     * in der Farbe color, die in RGB in einem int[3] übergeben wird.
65     * 
66     * @param out           der String der Ausgegeben werden soll
67     * @param color     die Farbe in RGB
68     */
69    void println(String out, int[] color );
70    
71    /**
72     * Erwartet die Ausgabe von out ohne Zeilenumbruch
73     * 
74     * @param out   der String der Ausgegeben werden soll
75     */
76     void print(String out);
77     
78     /**
79      * Erwartet die Ausgabe mit anschließendem Zeilenumbruch
80      * 
81      * @param out  der String der Ausgegben wird
82      */
83     void println(String out);
84     
85     /**
86      * Erwartet eine Leerzeile in der Ausgabe
87      */
88     void println();
89     
90     /**
91      * Erwartet die Ausgabe von out unterstrichen, falls das Ausgabesystem
92      * es unterstützt
93      * 
94      * @param out  der String der ausgegebn werden soll
95      */
96     void printU(String out);
97     
98     /**
99      * Erwartet die Ausgabe von out in Fett (Bold), falls das Ausgabesystem es 
00      * unterstützt plus einen Zeilenumbruch
01      * 
02      * @param out der String der Ausgegeben werden soll
03      */
04     void printlnB(String out);
05     
06     /**
07      * Erwartet die Ausgabe von out in Fett (Bold) in der in color spezifizierten
08      * Farbe, falls das Ausgabesystem es unterstützt plus einen Zeilenumbruch.
09      * 
10      * @param out      der String der Ausgegeben werden soll
11      * @param color    die RGB Farben in einem int[3]
12      */
13     void printlnB(String out, int[] color);
14     
15     /**
16      * Erwartet die Ausgabe von out in Kursiv (Italic) plus einen Zeilenumbruch
17      * 
18      * @param out  der String der Ausgegeben werden soll.
19      */
20     void printlnI(String out);
21     
22     /**
23      * Erwartet die Ausgabe von out in Kursiv(Italic) in der in color spezifizierten 
24      * Farbe, falls das Ausgabesystem dies unterstützt plus einen Zeilenumbruch.
25      * 
26      * @param out          der String der ausgegeben werden soll
27      * @param color        die Farbe in RGB in einem int[3]
28      */
29     void printlnI(String out, int[] color);
30     
31     /**
32      * Setzt den ActionListener der von dem GUI Objekt bedient werden muss. 
33      * 
34      * @param al   der ActionListener
35      */
36     void setActionListener(ActionListener al);
37     
38     /**
39      * Setzt einen default ActionListener der mit setDefaultActionListener()
40      * wieder gesetzt werden kann.
41      * 
42      * @param defaultListener  der default ActionListener
43      * @see #setDefaultActionListener()
44      */
45    void setDefaultActionListener(ActionListener defaultListener);
46    
47    /**
48     * Setzt den ActionListener der mit setDefaultActionListener(defaultListener)
49     * gesetzt worden ist wieder aktuell.
50     *
51     *@see #setDefaultActionListener(ActionListener defaultListener)
52     */
53     void setDefaultActionListener();
54     
55     /**
56      * Setzt einen KeyListener, der einzelne Tastendrücke mitgeteilt bekommt,
57      * falls das Ausgabesystem dies unterstützt.
58      * 
59      * @param list der KeyListener.
60      */
61     void setKeyListener(KeyListener list);
62     
63     /**
64      * Gibt den aktuell aktiven ActionListener zurück
65      * 
66      * @return den ActionListener, der aktuell von der Gui bedient wird
67      */
68     ActionListener getActionListener();
69     
70     /**
71      * Schaltet das Input ein, der gesetzte ActionListener wird mit Events bedient.
72      */
73     void enableInput();
74
75    /**
76     * Schaltet das Input ab, der gesetzte ActionListener darf nicht mehr mit
77     * Events bedient werden.
78     */
79     void disableInput();
80     
81     /**
82      * Fordert das neuzeichnen der Ausgabe, alle vorher aufgerufenen print
83      * methoden müssen dargestellt werden.
84      */
85     void redraw();
86
87    /**
88     *Übergibt dem GUI die Kontrolle
89     */
90     void start();
91     
92     /**
93      * Das GUI muss die Inputzeile bereinigen, falls dies möglich ist
94      */
95     void resetInput();
96     
97     /**
98      * Fragt das GUI ob es in einer Applet Sandbox läuft
99      * 
00      * @return true wenn das der Fall is, false sonst
01      */
02     boolean isApplet();
03     
04     /**
05      * Setzt die Eingabezeile auf newline
06      * 
07      * @param newline  der neue Text der Eingabezeile
08      */
09     void setInput(String newline);
10     
11     /**
12      * Holt den aktuellen Wert der Eingabezeile
13      * @return den aktuellen Wert der Eingabezeile
14      */
15     String getInput() ;
16
17    
18    /**
19     * Startet den Splashscreen (Fenster was den Ladevorgang illustriert)
20     * @param numOfSteps wieviele Schritte ausgeführt werden
21     */
22    void splash_start(int numOfSteps);
23    
24    /**
25     * stellt aufdem Splashscreen den Fortschritt um einen weiteren Task da
26     * @param message Nachricht die für den Fortschritt ausgegeben werden soll
27     */
28    void splash_next(String message);
29    
30    /**
31     * Beendet und schliesst das UserInterface
32     */
33    void close();
34    
35    /**
36     * Zeigt ein Bild an, wenn das Gui dieses Unterstützt
37     * 
38     * @param imageStream
39     */
40    public void showImage(InputStream imageStream);
41     
42}