private void Init(GrammarModel modelIn)
        {
            model = modelIn;

            GrammarNodeVDrawVisitor visitor = new GrammarNodeVDrawVisitor();
            model.VisualisedGrammar.StartSymbol.accept(visitor);
        }
        private void Init(GrammarModel modelIn)
        {
            model = modelIn;

            ViewController.ReInit();

            // draw controls
            GrammarNodeVDrawVisitor visitor = new GrammarNodeVDrawVisitor();
            model.VisualisedGrammar.accept(visitor);
            this.Content = visitor.DrawnItem;

            // update global information
            VADG.Global.Information.Nonterminals = model.getNonterminalNames();
        }
        public void Collapse(NonterminalExpanded control)
        {
            StackPanel parent = (control.Parent as StackPanel);
            if (parent == null)
                throw new Exception("The controls parent is not of type stack panel");

            // draw collapsed control
            GrammarNodeVDrawVisitor visitor = new GrammarNodeVDrawVisitor();
            visitor.visit(control.ReferenceTail);

            // get the index of the nonterminal collapsed that wants to expand
            int index = parent.Children.IndexOf(control);
            if (index < 0)
                throw new Exception("Cant find child in my stack panel, uh oh!");

            parent.Children.RemoveAt(index);
            parent.Children.Insert(index, visitor.DrawnItem);
        }