private void ShowActiveFamily() { trace.TraceInformation("TreeViewPanel5::ShowActiveFamily (start) " + this.CanFocus); while (this.controlList.Count > 0) { IndividualButton button = controlList[0]; this.Controls.Remove(button); this.controlList.RemoveAt(0); } //SetBounds(0, 0, maxGenerations * controlWidth, (int)Math.Pow((double)2, (double)(maxGenerations)), BoundsSpecified.All); maxGenerations = Convert.ToInt32(generationNoCtrl.SelectedItem); //SetScrollState(); if ((familyTree == null) || !this.Visible) { return; } UpdateControlSizes(); if (selectedIndividual != null) { Point pos = new Point(0, (controlHeight + controlMargin) * (int)Math.Pow((double)2, (double)(maxGenerations)) / 2); AddPerson(selectedIndividual, pos, 0); //IndividualButton individual = new IndividualButton(selectedIndividual); //this.controlList.Add(individual); //this.Controls.Add(individual); } trace.TraceInformation("TreeViewPanel5::ShowActiveFamily (end) "); }
private void AddPerson(IndividualClass person, Point position, int generation) { Point size = new Point(controlWidth, controlHeight); IndividualButton individual = new IndividualButton(this, person, size, boxFont); individual.Top = position.Y; individual.Left = position.X; this.controlList.Add(individual); this.Controls.Add(individual); /*if (individual.Width > controlWidth) * { * individual.Width = controlWidth; * }*/ if (generation < maxGenerations) { IList <FamilyXrefClass> parentFamilies = individual.individual.GetFamilyChildList(); if (parentFamilies != null) { foreach (FamilyXrefClass familyXref in parentFamilies) { FamilyClass family = familyTree.GetFamily(familyXref.GetXrefName()); if (family != null) { IList <IndividualXrefClass> parentXrefList = family.GetParentList(); if (parentXrefList != null) { Point nextPosition = position; int margin = controlMargin; int controlOffset = (controlHeight + margin) * (int)Math.Pow((double)2, (double)(maxGenerations - generation - 1)); //if(generation == 0) { //margin += controlHeight / 2; } if (controlOffset > controlHeight) { nextPosition.X += controlWidth + margin; } /*else * { * nextPosition.X += controlWidthSmall + margin; * }*/ nextPosition.Y -= controlOffset / 2; foreach (IndividualXrefClass parentXref in parentXrefList) { IndividualClass parent = familyTree.GetIndividual(parentXref.GetXrefName()); if (parent != null) { AddPerson(parent, nextPosition, generation + 1); } nextPosition.Y += controlOffset; } } } } } } }