//******************************************************************************
// Welcome.java: Applet
//
//******************************************************************************
// Written with Microsoft Visual J++ version 1.1
// (which is based on the 1.0.2 version of JDK)
import java.applet.*;
import java.awt.*;
import java.util.*;
import java.net.*;
class Enkelin
{
String label;
String explanation;
String theURL;
String howToOpen;
Rectangle rc;
Point center;
boolean mouseOnMe;
public Enkelin()
{
label = new String();
explanation = new String();
theURL = new String();
howToOpen = new String();
rc = new Rectangle();
center = new Point(0,0);
mouseOnMe = false;
}
public void refillElements(String l,String e,Rectangle r,Point c,boolean m)
{
label = l;
explanation = e;
rc.x = r.x;
rc.y = r.y;
rc.width = r.width;
rc.height = r.height;
center.x = c.x;
center.y = c.y;
mouseOnMe = m;
}
}
class Tochter
{
String label;
Rectangle rc;
Point center;
boolean mouseOnMe;
Vector Enkelinnen;
public Tochter()
{
label = new String();
rc = new Rectangle();
center = new Point(0,0);
mouseOnMe = false;
Enkelinnen = new Vector(10,1);
}
}
class Mutter
{
String label;
Rectangle rc;
Point center;
Vector Toechter;
// Zustand
int lastMouOnWasDaughterNo;
int lastMouOnWasGrandDaughterNo;
public Mutter()
{
label = new String();
rc = new Rectangle();
center = new Point(0,0);
Toechter = new Vector(10,1);
lastMouOnWasDaughterNo = 9999;
lastMouOnWasGrandDaughterNo = 9999;
}
public boolean mouseEnteredTochter(int x,int y)
{
int daughterNo = -1; // also auf keiner
for (Enumeration enum = Toechter.elements();enum.hasMoreElements();)
{
Tochter tochter = (Tochter) enum.nextElement();
daughterNo++;
if (tochter.rc.inside(x,y)) // Maus möglicherweise über neuer Tochter
{
if (daughterNo != lastMouOnWasDaughterNo) // Maus über neuer Tochter !
{
lastMouOnWasDaughterNo = daughterNo; // merken,welche das ist
clearLastDaughterMouseOnMe();
tochter.mouseOnMe = true;
return true;
}
}
}
return false;
}
private void clearLastDaughterMouseOnMe()
{
for (Enumeration enum = Toechter.elements();enum.hasMoreElements();)
{
Tochter tochter = (Tochter) enum.nextElement();
tochter.mouseOnMe = false;
}
}
public boolean mouseEnteredEnkelin(int x,int y)
{
int grandDaughterNo = -1; // also auf keiner
for (Enumeration enum = Toechter.elements();enum.hasMoreElements();)
{
Tochter tochter = (Tochter) enum.nextElement();
for (Enumeration enum2 = tochter.Enkelinnen.elements();enum2.hasMoreElements();)
{
Enkelin enkelin = (Enkelin) enum2.nextElement();
grandDaughterNo++; // es werden ALLE einfach durchgezählt
if (enkelin.rc.inside(x,y)) // Maus möglicherweise über neuer Enkelin
{
if (tochter.mouseOnMe && grandDaughterNo != lastMouOnWasGrandDaughterNo) // Maus über neuer Enkelin !
{
lastMouOnWasGrandDaughterNo = grandDaughterNo; // merken,welche das ist
clearLastGrandDaughterMouseOnMe();
enkelin.mouseOnMe = true;
return true;
}
}
}
}
return false;
}
private void clearLastGrandDaughterMouseOnMe()
{
for (Enumeration enum = Toechter.elements();enum.hasMoreElements();)
{
Tochter tochter = (Tochter) enum.nextElement();
for (Enumeration enum2 = tochter.Enkelinnen.elements();enum2.hasMoreElements();)
{
Enkelin enkelin = (Enkelin) enum2.nextElement();
enkelin.mouseOnMe = false;
}
}
}
}
//==============================================================================
// Hauptklasse für Applet Welcome
//
//==============================================================================
public class Welcome extends Applet
{
private boolean busyFlag = false;
private boolean inErrorCondition = false;
private String theErrorIs = "Fehlerursache nicht gefunden";
private Mutter dieMutter = new Mutter();
int cTbl[][] = // Farbtabelle
{
{253,181,170}, // 1
{254,192,169}, // 2
{253,222,170}, // 3
{220,254,169}, // 4
{182,254,169}, // 5
{169,254,169}, // 6
{169,254,190}, // 7
{170,253,220}, // 8
{170,224,253}, // 9
{171,180,252}, // 10
{185,159,254}, // 11
{220,150,253} // 12
};
Color standardAbgetoentesWeiss = new Color(255,251,240); // Buchheit S.83
Color backgroundColor = new Color(0,0,0); //(164,151,145) wäre Systemartig
Font MutterFont = new Font("Arial",Font.PLAIN,14);
Font TochterFont = new Font("Arial",Font.PLAIN,10);
Font EnkelinFont = new Font("Arial",Font.PLAIN,10);
FontMetrics fm;
// PARAMETER-UNTERSTÜTZUNG:
// Mit Hilfe von Parametern kann ein HTML-Autor Informationen an das Applet übergeben,
// indem er die Marke innerhalb der Marke