private void AddPanel(object sender, RoutedEventArgs e)
        {
            repo.SaveChanges();
            // check for reference
            var text = NewChild.Text;
            var m    = new Regex(@"^@(\d+)").Match(text);

            if (m.Success)
            {
                Model.Panel p;
                try
                {
                    p = repo.GetPanelById(Int32.Parse(m.Groups[1].Value));
                    repo.CreateRelationship(CurrentPanel, p);
                    NewChild.Text = "";
                    editPanel(p);
                }
                catch (IndexOutOfRangeException err)
                {
                    NewChild.Text = "";
                    System.Windows.MessageBox.Show(err.Message);
                }
            }
            else
            {
                var p = new Model.Panel(NewChild.Text, "Write content here", CurrentCampaign.CampaignId);
                repo.AddPanel(p, CurrentAdventure.PanelId, CurrentPanel.PanelId);
                NewChild.Text = "";
                editPanel(p);
            }
        }
        private void AddAdventure_Click(object sender, RoutedEventArgs e)
        {
            var p = new Model.Panel(NewTextbox.Text, NewTextbox.Text, CurrentCampaign.CampaignId);

            repo.AddAdventure(p);
            NewTextbox.Text           = "";
            AdventureList.DataContext = repo.AdventuresForCampaign(CurrentCampaign.CampaignId);
        }
        private void editPanel(Model.Panel P)
        {
            CurrentPanel       = P;
            CurrentAdventure   = repo.GetPanelById(P.AdventureId);
            Parents.Visibility = CurrentPanel.PanelId == CurrentAdventure.PanelId ?
                                 Visibility.Hidden : Visibility.Visible;
            AddParent.Visibility = Parents.Visibility;
            Delete.Visibility    = Parents.Visibility;

            Title.Content        = CurrentAdventure.Title;
            Editor.DataContext   = P;
            Parents.ItemsSource  = repo.Parents(P.PanelId);
            Children.ItemsSource = repo.Children(P.PanelId);
        }
        private void Home_Click(object sender, RoutedEventArgs e)
        {
            repo.SaveChanges();
            CurrentCampaign  = null;
            CurrentAdventure = null;
            CurrentPanel     = null;
            Title.Content    = "Campaigns";

            CampaignList.DataContext       = repo.GetObservableCampaigns();
            Editor.Visibility              = Visibility.Hidden;
            AdventureList.Visibility       = Visibility.Hidden;
            CampaignList.Visibility        = Visibility.Visible;
            AddCampaign.Visibility         = Visibility.Visible;
            AddAdventure.Visibility        = Visibility.Hidden;
            CampaignBreadcrumb.Visibility  = Visibility.Hidden;
            AdventureBreadcrumb.Visibility = Visibility.Hidden;
        }