private void Next() { if (CurrentPage_ == 1) { // if there's no selected format, skip if (listBoxFormats.SelectedItem == null) { return; } // load selected importer Importer_ = (Importer)listBoxFormats.SelectedItem; // clear importer files Importer_.File1Dialog.FileName = ""; Importer_.File2Dialog.FileName = ""; Importer_.File3Dialog.FileName = ""; // bring up panel 2 (file import) information // file 1 if (Importer_.File1Description != null) { lblFile1.Text = Importer_.File1Description; lblFile1.Visible = true; btnBrowse1.Visible = true; txtFile1.Visible = true; } else { lblFile1.Visible = false; btnBrowse1.Visible = false; txtFile1.Visible = false; } // file 2 if (Importer_.File2Description != null) { lblFile2.Text = Importer_.File2Description; lblFile2.Visible = true; btnBrowse2.Visible = true; txtFile2.Visible = true; } else { lblFile2.Visible = false; btnBrowse2.Visible = false; txtFile2.Visible = false; } // file 3 if (Importer_.File3Description != null) { lblFile3.Text = Importer_.File3Description; lblFile3.Visible = true; btnBrowse3.Visible = true; txtFile3.Visible = true; } else { lblFile3.Visible = false; btnBrowse3.Visible = false; txtFile3.Visible = false; } // file instructions if (Importer_.FileInstructions != null) { txtFileInstructions.Text = Importer_.FileInstructions; } else { txtFileInstructions.Text = "No instructions provided for " + Importer_.FormatName + "."; } // bring up panel 2 panel1.Visible = false; panel2.Visible = true; // enable back button btnBack.Enabled = true; } else if (CurrentPage_ == 2) { // try and parse files Timetable_ = Importer_.Import(); // if it failed, alert the user and stay on the current page if (Timetable_ == null) { MessageBox.Show("Failed to import timetable data.", "Import", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } // build relational data Timetable_.BuildEquivalency(); Timetable_.BuildCompatibility(); //Timetable_.UpdateStates(); // build tree Timetable_.BuildTreeView(treePreview); // and scroll back to the top treePreview.Nodes[0].EnsureVisible(); // clear details box txtTreeDetails.Text = ""; timetableControl1.Clear(); // bring up panel 3 panel2.Visible = false; panel3.Visible = true; } else if (CurrentPage_ == 3) { // clear ignored/required lists listViewIgnored.Items.Clear(); listViewIgnored.Groups.Clear(); listViewRequired.Items.Clear(); listViewRequired.Groups.Clear(); // populate ignored/required lists foreach (Subject subject in Timetable_.SubjectList) { // create and add groups for the subjects ListViewGroup ignoredSubjectGroup = new ListViewGroup(subject.Name); ignoredSubjectGroup.Tag = subject; listViewIgnored.Groups.Add(ignoredSubjectGroup); ListViewGroup requiredSubjectGroup = new ListViewGroup(subject.Name); requiredSubjectGroup.Tag = subject; listViewRequired.Groups.Add(requiredSubjectGroup); // add stream types to subject groups foreach (Type type in subject.Types) { // create ListViewItem without group ListViewItem item = new ListViewItem(new string[] { type.Code.ToString(), type.Name }); item.Tag = type; // add it to the current group in the correct box if (type.Required) { // set group and add to list item.Group = requiredSubjectGroup; listViewRequired.Items.Add(item); } else { // set group and add to list item.Group = ignoredSubjectGroup; listViewIgnored.Items.Add(item); } } } UpdateClashHighlight(); btnRequire.Enabled = false; btnIgnore.Enabled = false; // bring up panel 4 panel3.Visible = false; panel4.Visible = true; // swap next button for finish btnNext.Visible = false; btnFinish.Visible = true; // need to refresh to get red highlighter listViewIgnored.Refresh(); listViewRequired.Refresh(); } CurrentPage_++; }