private List<Data.SearchableData> populatePrivateRequirements()
        {
            try
            {
                var preq = (from r in dataSet.PrivRequirements
                            from rel in dataSet.RelationProjectPrivateSecurityRequirement
                            where rel.ProjectID == Data.SelectedProject.Instance.Project.ProjectID &&
                            rel.PrivateRequirementID == r.Requirement.PrivateRequirementsID
                            select r.Requirement).ToList<PrivateRequirement>();

                //Add data that does not exist in the private requirement...
                List<Data.SearchableData> data = new List<Data.SearchableData>();
                foreach (PrivateRequirement pr in preq)
                {
                    Data.SearchableData newData = new Data.SearchableData();

                    //Because of the cast, we need to check if the value is null.
                    if (pr.SelectedExample != null)
                        newData.selectedExample = (int)pr.SelectedExample;
                    if (pr.Priority != null)
                        newData.Priority = (int)pr.Priority;

                    if (pr.RequirementID != null)
                    {
                        var req = (from r in dataSet.Requirements
                                   where r.Requirement.RequirementID == pr.RequirementID
                                   select r.Requirement).FirstOrDefault<Requirement>();
                        newData.ObjectType = (int)Data.SearchableData.types.requirement;

                        newData.ID = req.RequirementID;
                        newData.Name = req.Name;
                        newData.Aliases = req.Aliases;
                        newData.Description = req.Description;
                        newData.CommonAttacks = req.CommonAttacks;
                        newData.Issues = req.Issues;
                        newData.Problem = req.Problem;
                        newData.Solution = req.Solution;
                        newData.References = req.References;
                        newData.Domain = req.Domain;
                        newData.Examples = req.Examples;
                        newData.SuggestAsPublic = false;
                    }
                    else
                    {
                        //Populate newData
                        newData.ID = pr.PrivateRequirementsID;
                        newData.Name = pr.Name;
                        newData.Problem = pr.Problem;
                        newData.Solution = pr.Solution;
                        newData.Aliases = pr.Aliases;
                        newData.Description = pr.Description;
                        newData.CommonAttacks = pr.CommonAttacks;
                        newData.Issues = pr.Issues;
                        newData.References = pr.References;
                        newData.Domain = pr.Domain;
                        newData.Examples = pr.Examples;
                        newData.ObjectType = (int)Data.SearchableData.types.privateRequirement;

                        if(pr.SuggestAsPublic != null)
                            newData.SuggestAsPublic = (bool)pr.SuggestAsPublic;
                    }

                    Example exampleText = null;
                    if (newData.Examples != null) //Get text for exampleText(To show in leftList)
                    {
                        exampleText = (from example in newData.Examples
                                       where example.ExampleID == pr.SelectedExample
                                       select example).FirstOrDefault<Example>();
                    }
                    else
                    {
                        newData.Examples = new ObservableCollection<Example>();
                    }

                    if (exampleText != null)
                    {
                        newData.SelectedRequirementText = exampleText.Name +" "+ exampleText.ExampleID;
                    }
                    else
                    {
                        newData.SelectedRequirementText = "No selected example";
                    }

                    if (newData.Priority == 1)
                        newData.PriorityText = "High";
                    else if (newData.Priority == 2)
                        newData.PriorityText = "Medium";
                    else if (newData.Priority == 3)
                        newData.PriorityText = "Low";
                    else
                        newData.PriorityText = "Not set";

                    data.Add(newData);
                }
                return data;
            }
            catch (Exception)
            {
                return null;
            }
        }
        private void leftList_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            try
            {
                if (e.AddedItems.Count > 0)  //Only when focus is gained, not lost.
                {
                    ListBox lb = sender as ListBox;
                    selectedRequirement = lb.SelectedItem as Data.SearchableData;

                    requirementID.DataContext = selectedRequirement;
                    RequirementName.DataContext = selectedRequirement;
                    RequirementAliases.DataContext = selectedRequirement;
                    RequirementDescription.DataContext = selectedRequirement;
                    RequirementProblem.DataContext = selectedRequirement;
                    RequirementSolution.DataContext = selectedRequirement;
                    RequirementPriority.DataContext = selectedRequirement;
                    References_PSRP.DataContext = selectedRequirement;
                    Domain_PSRP.DataContext = selectedRequirement;
                    suggestAsPublicCheckBox.DataContext = selectedRequirement;

                    foreach (Example ex in selectedRequirement.Examples)
                    {
                        ex.Name = ex.Name + " " + ex.ExampleID;
                    }

                    RequirementExamples.ItemsSource = selectedRequirement.Examples;

                    if (selectedListBox != null && !selectedListBox.Equals(lb))
                    {
                        selectedListBox.SelectedIndex = -1;
                    }
                    selectedListBox = lb;

                    HideInfoPanels();
                    PrivateSecurityRequirement.Visibility = Visibility.Visible;
                }
            }
            catch (Exception)
            {
            }
        }