* Event-Handler f�r Erzeugung eines neuen Kindes.
* @see org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets.Event)
*/
public void handleEvent(Event event) {
// Vorneweg aktuelle Person merken.
Person current = Family.instance.getCurrentPerson();
// Dialog vorbereiten.
PersonChoiceShell pcs = new PersonChoiceShell(GUI.instance.shell, "Kind hinzuf�gen", "Als Kind eintragen",
"Neues Kind erzeugen", 2, false, null, false);
// Die Person selbst kann sich nicht als Kind haben, auch die Eltern nicht
// (und die vorhandenen Kinder sind es ohnehin
// schon).
pcs.removePerson(current);
for (Person person : current.getChildren()) {
pcs.removePerson(person);
}
for (Person person : current.getParents()) {
pcs.removePerson(person);
}
// Zu junge/alte Personen l�schen.
if (!current.getValueView(Person.BIRTHDAY).endsWith("?")) {
// Alle Person, die �lter als diese Person hier sind, l�schen.
String currBirth = current.getValueView(Person.BIRTHDAY);
if (currBirth.endsWith(".?")) {
// Versuchen, das Geburtsjahr zu erraten.
int year = current.getBirthYear(true);
if (year != Integer.MIN_VALUE) {
currBirth = currBirth.substring(0, currBirth.length() - 1) + year;
}
}
int minParentAge = OptionData.instance.getInt(OptionData.MIN_PARENT_AGE);
pcs.removePersonsBetweenDates(Person.BIRTHDAY, "0.0.0", currBirth, new int[] { 0, 0, -minParentAge });
// Alle Personen, die mindestens 90 Jahre nach der Geburt dieser Person
// geboren wurden entfernen.
int maxParentAge = OptionData.instance.getInt(OptionData.MAX_PARENT_AGE);
pcs.removePersonsBetweenDates(Person.BIRTHDAY, currBirth, "99.99.9999", new int[] { 0, 0, -maxParentAge });
}
// Alle Personen, die nach dem Todestag dieser Person geboren wurden,
// l�schen.
// Zehn Monate abziehen, weil der Vater ja vor der Geburt gestorben sein
// kann.
if (!current.getValueView(Person.DEATHDAY).endsWith("?")) {
pcs.removePersonsBetweenDates(Person.BIRTHDAY, current.getValueView(Person.DEATHDAY), "99.99.9999", new int[] {
0, -10, 0 });
}
// Dialog �ffnen.
pcs.open();
// Hier wird eventuell ein zugeordnetes Kind gespeichert.
Person child;
if (pcs.personChoice != null) {
Family.instance.getCurrentPerson().addChild(pcs.personChoice);
Family.instance.review();
child = pcs.personChoice;
}
else if (pcs.newPersonName != null) {
child = new Person();
child.setValue(Person.NAME, pcs.newPersonName);
Family.instance.addNewPerson(child);
Family.instance.getCurrentPerson().addChild(child);
Family.instance.setCurrentPerson(child, 2);
}
else {
return;
}
// Da nun ein Kind eingetragen wurde, auch f�r jeden Partner einzeln
// nachfragen, ob es dessen Kind ist.
String msgText = "Bei welchen der folgenden Personen soll <" + child.getValueView(Person.NAME)
+ "> noch zus�tzlich als Kind eingetragen werden?";
MultiPersonChoiceShell mpcs = new MultiPersonChoiceShell(GUI.instance.shell, "Kind hinzuf�gen", msgText);
// Alle Partner der aktuellen Person angeben.
Person[] partners = current.getPartner();