void UpdateRoomData() { dataWidgets = new List <IResultDataWidget>(); results = new List <RoundResultData>(); // 9 rows for speakers, 2 rows for both teams // the containers are always in standard order Container[] c = new Container[] { cGov1, cOpp1, cGov2, cOpp2, cFree1, cFree2, cFree3, cOpp3, cGov3, cTeamGov, cTeamOpp }; List <object> o = roomData.AsOrderedObjects(); for (int i = 0; i < 11; i++) { SetupTeamRow(c[i], o[i], i); } InsertTableColumns(judgesOffset, (uint)roomData.Judges.Count); // JUDGES // clear all avg parents (9 Speakers, 2 Teams = 11) first for (int i = 0; i < 11; i++) { labels[i].ClearParents(); } // Setup Judge Column (fills resultsJudges) resultsJudges = new List <RoundResultData>(); for (int i = 0; i < roomData.Judges.Count; i++) { SetupJudgeColumn(i); } // CHECK CONSISTENCY CheckPositions(); // GUI COL POSITIONS // (this needs to be done at the end!) RepositionJudgeCols(); // GUI ROW POSITIONS RepositionTeamRows(posGov); RepositionTeamRows(posOpp); // the above changes FrameLabels, so undo it. SetSpeakerFrameLabels(); // force total sum updates labels[labels.Count - 1].ForceUpdate(); labels[labels.Count - 2].ForceUpdate(); // is complete? CheckCompleteFlags(); // update bestOnes... UpdateBestOnes(); UpdateBestSpeaker(); }