public class PetriEdiSim extends Applet
{
public PetriBedien Bedienfeld;
public PetriZeichnen Zeichenfeld;
private HinweisPanel MaxAnzeige1;
private HinweisPanel MaxAnzeige2;
private HinweisPanel MaxAnzeige3;
private HinweisPanel MaxAnzeige4;
private HinweisPanel MaxAnzeige5;
private HinweisPanel FehlerAnzeige1;
private HinweisPanel FehlerAnzeige2;
private HinweisPanel FehlerAnzeige3;
private HinweisPanel FehlerAnzeige4;
private HinweisPanel PlatzTransAnzeige;
private TextPanel TextEingabe;
private TransPanel TransEingabe;
private HinweisNeuPanel neuAnzeige; //-- FH Ansbach
private SpeicherPanel speicherAnzeige; //-- FH Ansbach
private final int ZEICHENRAND = 0; // Randbreite um das
// Zeichenfeld
private final int ZFBREITE = 700; // Breite des Zeichenfeldes
private int selectedPlatz = -1; // Platz wurde angeklickt
private int selectedTrans = -1; // Transition wurde angeklickt
private int selectedKante = -1; // Kante soll geloescht werden
private int selectedText = -1; // Text wurde angeklickt
private int anzToken = 0; // Anzahl der Token auf einem Platz
private boolean movePlatz = false; // Bewegen von Plaetzen
private boolean moveTrans = false; // Bewegen von Transitionen
private boolean moveText = false; // Bewegen von Texten
private boolean ziehkante = false; // Ziehen von Kanten
private int knoten_von = 0; // Kante von Platz oder Trans
private int knoten_nach = 0; // Kante von Platz oder Trans
private int kante_von = -1; // Platz- oder Trans-Nr. der Kante
private int kante_nach = -1; // Platz- oder Trans-Nr. der Kante
private int startx_ziehKante = 0; // Anfang beim Kanteziehen x-Wert
private int starty_ziehKante = 0; // Anfang beim Kanteziehen y-Wert
private int endx_ziehKante = 0; // Ende beim Kanteziehen x-Wert
private int endy_ziehKante = 0; // Ende beim Kanteziehen y-Wert
public String text; // Einzulesender Text aus dem Textfeld
private int TR_H = 0;
private int TR_B = 0;
private int PL_R = 0;
/* Setzen des Layouts fuer den gesamten Editor */
public FlowLayout flow = new FlowLayout(0, 0, FlowLayout.LEFT);
/***************************************************************/
/** Diese Methode initialisiert das komplette Applet und setzt */
/** die benoetigten Variablen. */
public void init()
{
File file = new File("");
String AppletURL = file.getAbsolutePath() + "\\";
setBackground(Color.lightGray);
setLayout(flow);
Bedienfeld = new PetriBedien(AppletURL);
add(Bedienfeld);
int Bedienfeldhoehe = 574; // Höhe der Weißen Zeichenplatte
// int Bedienfeldhoehe = Bedienfeld.preferredSize().height;
int Bedienfeldbreite = Bedienfeld.preferredSize().width;
// showStatus(Bedienfeldhoehe + " " + Bedienfeldbreite);
Zeichenfeld = new PetriZeichnen(new Dimension(ZFBREITE, Bedienfeldhoehe));
Zeichenfeld.setBackground(Color.white);
// -- Hier start FH AN
this.TR_H = Zeichenfeld.TRANSHOEHE;
this.TR_B = Zeichenfeld.TRANSBREITE;
this.PL_R = Zeichenfeld.PLATZRADIUS;
// -- Hier ende FH AN
MaxAnzeige1 = new HinweisPanel(Zeichenfeld, Bedienfeldbreite,
Bedienfeldhoehe, ZFBREITE,
"Maximale Anzahl von ",
"Plätzen erreicht !", "");
MaxAnzeige2 = new HinweisPanel(Zeichenfeld, Bedienfeldbreite,
Bedienfeldhoehe, ZFBREITE,
"Maximale Anzahl von ",
"Transitionen erreicht !", "");
MaxAnzeige3 = new HinweisPanel(Zeichenfeld, Bedienfeldbreite,
Bedienfeldhoehe, ZFBREITE,
"Maximale Anzahl von Token",
"pro Platz erreicht !", "");
MaxAnzeige4 = new HinweisPanel(Zeichenfeld, Bedienfeldbreite,
Bedienfeldhoehe, ZFBREITE,
"Maximale Anzahl von ",
"Textbausteinen erreicht !", "");
MaxAnzeige5 = new HinweisPanel(Zeichenfeld, Bedienfeldbreite,
Bedienfeldhoehe, ZFBREITE,
"Maximale Anzahl von ",
"Kanten erreicht !", "");
FehlerAnzeige1 = new HinweisPanel(Zeichenfeld, Bedienfeldbreite,
Bedienfeldhoehe, ZFBREITE,
"Transition kann nicht schalten !",
"Keine Plätze im Vorbereich",
"dieser Transition !");
FehlerAnzeige2 = new HinweisPanel(Zeichenfeld, Bedienfeldbreite,
Bedienfeldhoehe, ZFBREITE,
"Transition kann nicht schalten !",
"Keine Plätze im Nachbereich",
"dieser Transition !");
FehlerAnzeige3 = new HinweisPanel(Zeichenfeld, Bedienfeldbreite,
Bedienfeldhoehe, ZFBREITE,
"Transition kann nicht schalten !",
"In einigen Plätzen im Vorbereich",
"befinden sich keine Token !");
FehlerAnzeige4 = new HinweisPanel(Zeichenfeld, Bedienfeldbreite,
Bedienfeldhoehe, ZFBREITE,
"Maximale Anzahl von Token in",
"einem Platz im Nachbereich erreicht !","");
PlatzTransAnzeige = new HinweisPanel(Zeichenfeld, Bedienfeldbreite,
Bedienfeldhoehe, ZFBREITE,
"Es sind nur Kanten zwischen einem",
"Platz und einer Transition erlaubt",
"sowie umgekehrt !");
TextEingabe = new TextPanel(Zeichenfeld, Bedienfeldbreite,
Bedienfeldhoehe, ZFBREITE);
TransEingabe = new TransPanel(Zeichenfeld, Bedienfeldbreite,
Bedienfeldhoehe, ZFBREITE);
// -- Hier start Fh Ansbach
neuAnzeige = new HinweisNeuPanel(Zeichenfeld, Bedienfeldbreite,
Bedienfeldhoehe, ZFBREITE,
"Soll das alte Petrinetz gespeichert werden?", "");
speicherAnzeige = new SpeicherPanel(Zeichenfeld, Bedienfeldbreite,
Bedienfeldhoehe, ZFBREITE,
"Speichern. Verzeichnis und Dateiname angeben.");
// -- Hier ende Fh Ansbach
add(MaxAnzeige1);
add(MaxAnzeige2);
add(MaxAnzeige3);
add(MaxAnzeige4);
add(MaxAnzeige5);
add(FehlerAnzeige1);
add(FehlerAnzeige2);
add(FehlerAnzeige3);
add(FehlerAnzeige4);
add(PlatzTransAnzeige);
add(TextEingabe);
add(TransEingabe);
add(neuAnzeige); // -- Fh Ansbach
add(speicherAnzeige); // -- Fh Ansbach
add(Zeichenfeld);
// resize( Bedienfeldbreite + ZFBREITE, Bedienfeldhoehe);
// resize(900, 580);
repaint();
}
/***************************************************************/
/** Diese Methode wird benoetigt um einige Variablen korrekt */
/** zu setzen. */
public void start(){
repaint();
}
/***************************************************************/
/** Diese Methode wird aufgerufen, wenn das Applet vom System */
/** zurueckgegeben wird */
public void destroy(){
System.gc();
System.exit(0);
}
/*****************************************************************/
/** Diese Methode ist fuer die Bearbeitung der Benutzer-Eingaben */
/** zustaendig. */
public boolean handleEvent(Event evt)
{
...
}
/*****************************************************************/
/** Diese Methode zeichnet bei Bedarf den gesamten Editor und */
/** Simulator neu */
public void paint(Graphics graphic){
resize(890, 580);
}
public PetriZeichnen getZeichenfeld()
{
return this.Zeichenfeld;
}
public HinweisNeuPanel getNeuAnzeige()
{
return this.neuAnzeige;
}
public SpeicherPanel getSpeicherAnzeige()
{
return this.speicherAnzeige;
}
} /* Ende Klasse PetriEdiSim */