private void CheckPersonButton(string xref, int gen, bool force) { if (personControlList.ContainsKey(xref)) { IndividualButton personButton = personControlList[xref]; personButton.CheckPosition(force); if (personButton.individual != null) { IndividualClass person = personButton.individual; IList <FamilyXrefClass> parentList = person.GetFamilyChildList(); if (parentList != null) { foreach (FamilyXrefClass parentXref in parentList) { CheckFamilyButton(parentXref.GetXrefName(), gen + 1, force); } } } else { trace.TraceData(TraceEventType.Warning, 0, "Not yet cached person:" + gen + " " + xref); } } else { trace.TraceData(TraceEventType.Warning, 0, "Not buttoned person:" + gen + " " + xref); } }
private void UpdateIndividual(IndividualClass person, TreeViewLayout layout, ref IndividualButton personButton, FamilyButton parentButton = null) { trace.TraceInformation("UpdateIndividual(" + person.GetXrefName() + "),gen:" + personButton.bLayout.generation + ",name:" + person.GetPersonalName().GetName()); if (personButton.individual == null) { personButton.individual = person; personButton.Refresh(); } if (!personButton.Visible) { if (!personButton.SetLayout(layout, parentButton)) { trace.TraceInformation("UpdateIndividual(" + person.GetXrefName() + "),gen:" + personButton.bLayout.generation + ")-aborted,hidden"); return; } } if (layout.VisibleButton(personButton.bLayout)) { if (layout.SearchChildren()) { UpdateFamilyList(person.GetFamilySpouseList(), personButton); } if (layout.SearchParents()) { UpdateFamilyList(person.GetFamilyChildList(), personButton); } trace.TraceInformation("UpdateIndividual(" + person.GetXrefName() + ", " + personButton.bLayout.generation + ")-done"); } else { trace.TraceInformation("UpdateIndividual(" + person.GetXrefName() + ", " + personButton.bLayout.generation + ") not visible generation => stop!"); } }
private void UpdateIndividualSync(string xref, IndividualClass person) { if (person == null) { trace.TraceData(TraceEventType.Error, 0, "Requested person is null!" + xref); return; } if (xref != person.GetXrefName()) { trace.TraceData(TraceEventType.Error, 0, "Requested person doesn't match response!" + xref + "!=" + person.GetXrefName()); } if (personThreadList.ContainsKey(xref)) { personThreadList.Remove(xref); } else { trace.TraceData(TraceEventType.Error, 0, "Individual thread not added!" + xref); } if (personControlList.ContainsKey(xref)) { if (person != null) { IndividualButton personButton = personControlList[xref]; UpdateIndividual(person, layout, ref personButton); } } else { trace.TraceData(TraceEventType.Error, 0, "Individual button not added!" + xref); } }
public bool SetLayout(TreeViewLayout layout, IndividualButton parentButton) { if (Visible) { return(true); } if (this.parentButton == null) { this.parentButton = parentButton; } if (this.parentButton != null) { ButtonLayout parentButtonLayout = this.parentButton.bLayout; if (!layout.AddChildFamilyButton(parentButtonLayout, bLayout)) { trace.TraceInformation("SetLayout()-family" + xref + " " + bLayout.generation + " abort, max gen "); return(false); } SetPosition(bLayout.position); Size = bLayout.size; trace.TraceInformation("SetLayout()-family:" + xref + " " + bLayout.generation + " " + bLayout.position + " " + bLayout.size); this.Visible = true; return(true); } return(false); }
public void ClearLayout() { if (this.Visible) { this.Visible = false; this.parentButton = null; this.bLayout.childNo = 0; this.Refresh(); } }
private void UpdateFamilyList(IList <FamilyXrefClass> familyList, IndividualButton personButton) { if (familyList != null) { foreach (FamilyXrefClass familyXref in familyList) { if (!familyControlList.ContainsKey(familyXref.GetXrefName())) { FamilyButton familyButton = new FamilyButton(familyXref.GetXrefName()); familyButton.SetParent(this); familyButton.SetLayout(layout, personButton); familyControlList.Add(familyXref.GetXrefName(), familyButton); mainPanel.Controls.Add(familyButton); if (!familyThreadList.ContainsKey(familyXref.GetXrefName())) { FindFamilyThread thread = new FindFamilyThread(familyTree, familyXref.GetXrefName(), new HandleNewFamily(HandleNewFamily_Function)); familyThreadList.Add(familyXref.GetXrefName(), thread); } } else { FamilyButton familyButton = familyControlList[familyXref.GetXrefName()]; if (familyButton.family != null) { UpdateFamily(familyButton.family, layout, ref familyButton, personButton); } else { if (familyButton.SetLayout(layout, personButton)) { if (!familyThreadList.ContainsKey(familyXref.GetXrefName())) { FindFamilyThread thread = new FindFamilyThread(familyTree, familyXref.GetXrefName(), new HandleNewFamily(HandleNewFamily_Function)); familyThreadList.Add(familyXref.GetXrefName(), thread); } } } } } } }
private void UpdateIndividualList(IList <IndividualXrefClass> personList, FamilyButton familyButton) { if (personList != null) { foreach (IndividualXrefClass personXref in personList) { if (!personControlList.ContainsKey(personXref.GetXrefName())) { IndividualButton personButton = new IndividualButton(personXref.GetXrefName()); personButton.SetParent(this); personButton.SetLayout(layout, familyButton); personControlList.Add(personXref.GetXrefName(), personButton); mainPanel.Controls.Add(personButton); if (!personThreadList.ContainsKey(personXref.GetXrefName())) { FindPersonThread thread = new FindPersonThread(familyTree, personXref.GetXrefName(), new HandleNewIndividual(HandleNewIndividual_Function)); personThreadList.Add(personXref.GetXrefName(), thread); } } else { IndividualButton personButton = personControlList[personXref.GetXrefName()]; if (personButton.individual != null) { UpdateIndividual(personButton.individual, layout, ref personButton, familyButton); } else { if (personButton.SetLayout(layout, familyButton)) { if (!personThreadList.ContainsKey(personXref.GetXrefName())) { FindPersonThread thread = new FindPersonThread(familyTree, personXref.GetXrefName(), new HandleNewIndividual(HandleNewIndividual_Function)); personThreadList.Add(personXref.GetXrefName(), thread); } } } } } } }
private void ShowActiveFamily() { bool clear = false; trace.TraceInformation("ShowActiveFamily (start)"); if (!this.CanFocus) { trace.TraceInformation("ShowActiveFamily (end:hidden->shown=>refresh)"); return; } if (generationNoCtrl.SelectedItem == null) { trace.TraceInformation("ShowActiveFamily (selecteditem == null)"); return; } if (generationNoCtrl.SelectedItem.ToString() != layout.GetGenerations().ToString()) { layout.SetGenerations(Convert.ToInt32(generationNoCtrl.SelectedItem)); } if (!layout.IsEqual(prevLayout)) { //lastSize.Height = this.Height; //lastSize.Width = this.Width; //layout.Init(lastSize); //ClearButtonLayout(); clear = true; prevLayout = layout.Clone(); } if (selectedIndividual != null) { if ((prevSelectedIndividual == null) || (prevSelectedIndividual != selectedIndividual.GetXrefName())) { //ClearButtonLayout(); clear = true; //prevLayout = layout; prevSelectedIndividual = selectedIndividual.GetXrefName(); } if (clear) { ClearButtonLayout(); trace.TraceData(TraceEventType.Warning, 0, " scrollv:" + mainPanel.VerticalScroll.Value + " " + mainPanel.VerticalScroll.Maximum + " " + mainPanel.VerticalScroll.Minimum + " scrollh:" + mainPanel.HorizontalScroll.Value + " " + mainPanel.HorizontalScroll.Maximum + " " + mainPanel.HorizontalScroll.Minimum); mainPanel.Width += 100; mainPanel.Height += 100; mainPanel.VerticalScroll.Value = mainPanel.VerticalScroll.Maximum; mainPanel.HorizontalScroll.Value = mainPanel.HorizontalScroll.Maximum; trace.TraceData(TraceEventType.Warning, 0, " scrollv:" + mainPanel.VerticalScroll.Value + " " + mainPanel.VerticalScroll.Maximum + " " + mainPanel.VerticalScroll.Minimum + " scrollh:" + mainPanel.HorizontalScroll.Value + " " + mainPanel.HorizontalScroll.Maximum + " " + mainPanel.HorizontalScroll.Minimum); } if (!personControlList.ContainsKey(selectedIndividual.GetXrefName())) { IndividualButton selectedButton = new IndividualButton(selectedIndividual.GetXrefName(), selectedIndividual); selectedButton.SetParent(this); personControlList.Add(selectedIndividual.GetXrefName(), selectedButton); mainPanel.Controls.Add(selectedButton); } IndividualButton personControl = personControlList[selectedIndividual.GetXrefName()]; UpdateIndividual(selectedIndividual, layout, ref personControl); CheckLayout(selectedIndividual.GetXrefName(), false); } else { if (prevSelectedIndividual != null) { ClearButtonLayout(); prevSelectedIndividual = null; } } //Refresh(); trace.TraceInformation("ShowActiveFamily (end-done) "); }
private void UpdateFamily(FamilyClass family, TreeViewLayout layout, ref FamilyButton familyButton, IndividualButton parentButton = null) { trace.TraceInformation("UpdateFamily(" + family.GetXrefName() + "):" + familyButton.bLayout.generation); if (familyButton.family == null) { familyButton.family = family; familyButton.Refresh(); } if (!familyButton.Visible) { if (!familyButton.SetLayout(layout, parentButton)) { trace.TraceInformation("UpdateFamily(" + family.GetXrefName() + ")-aborted"); return; } //familyButton.Refresh(); } if (layout.VisibleButton(familyButton.bLayout)) { if (layout.SearchChildren()) { UpdateIndividualList(family.GetChildList(), familyButton); } if (layout.SearchParents()) { UpdateIndividualList(family.GetParentList(), familyButton); } trace.TraceInformation("UpdateFamily(" + family.GetXrefName() + ")-done"); } else { trace.TraceInformation("UpdateFamily(" + family.GetXrefName() + "," + familyButton.bLayout.generation + ") not visible generation => stop!"); } }