/** file: Comune: parte per mie finestre e bottoni ecc.. */
import java.awt.*;
/** ================
Mia Finestra
================ */
class myFrame extends Frame {
public myFrame (String s) { super(s); }
public boolean handleEvent (Event evt) {
if (evt.id == Event.WINDOW_DESTROY) {
dispose();
return true;
}
return super.handleEvent(evt);
}
} //myFrame
/** ===============
Mio Bottone
=============== */
class myButton extends Button {
protected String OpS; // operazione da fare (aggiungere in stringa)
protected char FunC; // tipo: funzione "f" o valutazione "v"
public myButton () {
this ("?", "?", 'f');
}
public myButton (String Nome, String Oper, char fv) {
super (Nome);
OpS=Oper;
FunC=fv;
Color Col;
if (fv == 'f') {
if (Nome.length() > 1)
Col = (Color.white).darker();
else
try {
Integer NN = new Integer(Nome);
Col = Color.green;
} catch (Exception e)
{ if ((Oper.compareTo("+") == 0) ||
(Oper.compareTo("-") == 0) ||
(Oper.compareTo("*") == 0) ||
(Oper.compareTo("/") == 0))
Col = (Color.green).darker();
else
if ((Oper.compareTo("(") == 0) ||
(Oper.compareTo(")") == 0) ||
(Oper.compareTo(".") == 0) ||
(Oper.compareTo(" ") == 0))
Col = Color.lightGray;
else
Col = (Color.magenta).brighter();
}
}
else
Col = Color.white;
setBackground (Col);
setForeground (Color.black);
setFont (new Font("Helvetica", Font.BOLD, 20));
}
public void DefBottone (String Nome, String Oper, char fv) {
super.setLabel (Nome);
OpS=Oper;
FunC=fv;
}
public String toString() {
return super.toString()+"[myop:"+OpS+" myf:"+FunC+"]";
}
public String Oper () { return OpS; }
public char TipoFun () { return FunC; }
public String Nome () { return getLabel(); }
} //myButton
/** ==================
Segnala Errore
================== */
class myErrDialog extends Dialog { //Non usato
public myErrDialog (Frame Genitore, String Mess) {
super (Genitore, "!!! ERRORE !!!", true); // NB: e' modale!
add (new Label(Mess));
add (new Button ("OK"));
}
public boolean handleEvent (Event evt) {
if ((evt.id == Event.WINDOW_DESTROY) ||
(evt.target instanceof myButton)) {
dispose();
return true;
}
return super.handleEvent(evt);
}
} //myErrDialog
/** ==========================
Mio Display per Albero
========================== */
class myDispPerAlbero extends Canvas {
protected VisitorDisegnaAlbero DisVis = null; //Visitor per DISEGNARE l'albero
protected Exp MyExp;
protected TextArea MsgOut;
protected boolean PrimaVolta;
protected Image MiaImage;
protected Graphics MioGraph;
public myDispPerAlbero (Exp Espress, TextArea AreaMsg) {
super();
PrimaVolta=true;
MyExp = Espress;
MsgOut= AreaMsg;
}
public void paint (Graphics g) {
super.paint (g);
if (PrimaVolta) {
MiaImage=createImage (600,400); // creo immagine "fuori schermo"
MioGraph=MiaImage.getGraphics();
DisVis = new VisitorDisegnaAlbero (MioGraph, 30,20, MsgOut);
try {
MyExp.accept (DisVis); // ACCETTA I VISITOR
} catch (Exception e)
{ MsgOut.appendText ("!!! ERRORE !!! "+ e +"\n"); }
PrimaVolta=false;
}
// in ogni caso, stampa immagine su oggetto "g"!
g.drawImage (MiaImage, 0,0, this);
}
public int RendiMaxX() { if (DisVis != null) return DisVis.RendiMaxX();
else return 400;
}
public int RendiMaxY() { if (DisVis != null) return DisVis.RendiMaxY();
else return 300;
}
}
//*FINE FILE*