import sum.komponenten.*;
import sum.werkzeuge.*;
import sum.ereignis.*;
import java.util.Random;
public class Visitenkartenanwendung extends EBAnwendung
{
// Objekte
private Etikett hatEtikettGoogle;
private Zeilenbereich hatBereichKarten;
private Knopf hatKnopfErzeugen;
private Knopf hatKnopfSuchen;
private Etikett hatEtikettSuchname;
private Knopf hatKnopfBeenden;
private Textfeld hatTextfeldSuchname;
private Etikett hatEtikettMeldung;
private Etikett hatEtikettTelefon;
private Etikett hatEtikettEmail;
private Rechner hatRechner;
private Rechner hatRechner2;
private Rechner hatRechner3;
private Rechner hatRechner4;
private Rechner hatRechner5;
private Visitenkarte[] hatKartenfeld;
private Textwerkzeug hatTextwerkzeug;
// Attribute
/**
* Konstruktor
*/
public Visitenkartenanwendung()
{
//Initialisierung der Oberklasse
super(1000, 1000);
hatEtikettGoogle = new Etikett(77, 23, 150, 25, "Gööögläh");
// Ausrichtung
hatEtikettGoogle.setzeAusrichtung(Ausrichtung.MITTE);
hatBereichKarten = new Zeilenbereich(23, 63, 360, 300, "");
//hatKnopfErzeugen = new Knopf(395, 64, 100, 30, "Erzeugen");
//hatKnopfErzeugen.setzeBearbeiterGeklickt("hatKnopfErzeugenGeklickt");
hatKnopfSuchen = new Knopf(395, 110, 100, 30, "Suchen");
hatKnopfSuchen.setzeBearbeiterGeklickt("hatKnopfSuchenGeklickt");
hatEtikettSuchname = new Etikett(395, 163, 70, 25, "Suchname");
// Ausrichtung
hatEtikettSuchname.setzeAusrichtung(Ausrichtung.RECHTS);
hatKnopfBeenden = new Knopf(395, 331, 100, 30, "Beenden");
hatKnopfBeenden.setzeBearbeiterGeklickt("hatKnopfBeendenGeklickt");
hatTextfeldSuchname = new Textfeld(395, 192, 500, 25, "");
// Ausrichtung
hatTextfeldSuchname.setzeAusrichtung(Ausrichtung.LINKS);
hatEtikettMeldung = new Etikett(23, 377, 360, 25, "");
// Ausrichtung
hatEtikettMeldung.setzeAusrichtung(Ausrichtung.LINKS);
hatEtikettTelefon = new Etikett(395, 232, 330, 25, "");
// Ausrichtung
hatEtikettTelefon.setzeAusrichtung(Ausrichtung.LINKS);
hatEtikettEmail = new Etikett(395, 272, 330, 25, "");
// Ausrichtung
hatEtikettEmail.setzeAusrichtung(Ausrichtung.LINKS);
hatRechner = new Rechner();
hatTextwerkzeug = new Textwerkzeug();
hatKartenfeld = new Visitenkarte[1000];
hatKnopfErzeugenGeklickt();
}
private static String generateRandomString(String allowedChars,Random random) {
int max = allowedChars.length();
StringBuffer buffer = new StringBuffer();
for (int i=0; i<5; i++) {
int value = random.nextInt(max);
buffer.append(allowedChars.charAt(value));
}
return buffer.toString();
}
/**
* Vorher: Ereignis GeklicktvonhatKnopfErzeugen fand statt.
* Nachher: (schreiben Sie, was in dieser Methode ausgefuehrt wird)
*/
public void hatKnopfErzeugenGeklickt()
{
String lName = "", lTelefon = "", lEmail;
hatBereichKarten.loescheAlles();
int lZahl;
String alphabet = "abcdefghijklmnopqrstuvwxyz";
Random random = new Random();
for(int i = 0; i < 1000; i++)
{
String randomString = generateRandomString(alphabet, random);
lEmail = randomString;
hatKartenfeld[i] = new Visitenkarte(lEmail , lTelefon , lName);
hatBereichKarten.haengeAn(hatKartenfeld[i] + ".de");
}
}
/**
* Vorher: Ereignis GeklicktvonhatKnopfSuchen fand statt.
* Nachher: (schreiben Sie, was in dieser Methode ausgefuehrt wird)
*/
public void hatKnopfSuchenGeklickt()
{
String lName;
Visitenkarte lKarte;
int lPosition;
lName = hatTextfeldSuchname.inhaltAlsText();
lPosition = this.binsucheRekursiv(lName, 0, 999);
if (lPosition == -1)
hatEtikettMeldung.setzeInhalt("Website " + lName + " wurde nicht gefunden.");
else
{
lKarte = hatKartenfeld[lPosition];
hatEtikettMeldung.setzeInhalt("Website " + lName + " gefunden an Position " + lPosition);
hatBereichKarten.setzeMarkierung(lPosition + 1, lPosition + 1);
hatEtikettTelefon.setzeInhalt(lKarte.telefon());
hatEtikettEmail.setzeInhalt(lKarte.email());
hatBereichKarten.haengeAn(lName);
}
}
public int binsucheRekursiv(String pSuchname, int pVon, int pBis)
{
int lMitte;
if (pBis < pVon)
return -1;
else
{
lMitte = (pVon + pBis) / 2;
if (hatKartenfeld[lMitte].name().compareTo(pSuchname) == 0)
return lMitte;
else if (hatKartenfeld[lMitte].name().compareTo(pSuchname) > 0)
return binsucheRekursiv(pSuchname, pVon, lMitte - 1);
else
return binsucheRekursiv(pSuchname, lMitte + 1, pBis);
}
}
/**
* Vorher: Ereignis GeklicktvonhatKnopfBeenden fand statt.
* Nachher: (schreiben Sie, was in dieser Methode ausgefuehrt wird)
*/
public void hatKnopfBeendenGeklickt()
{
this.beenden();
}
}