public void visit(NonterminalTailD nonterminalTailD)
        {
            NonterminalTailV nonterminalTailV = new NonterminalTailV(nonterminalTailD, level + 1);

            nonterminalTailD.AddReference(nonterminalTailV);

            current = nonterminalTailV;
        }
 public void visit(NonterminalTailV nonterminalTailV)
 {
     if (nonterminalTailV.IsExpanded)
     {
         nonterminalTailV.Rule.accept(this);
         drawnItem = new NonterminalExpanded(nonterminalTailV, drawnItem);
     }
     else
     {
         drawnItem = new NonterminalCollapsed(nonterminalTailV);
     }
 }
        public NonterminalCollapsed(NonterminalTailV nonterminalTailIn)
        {
            InitializeComponent();

            Init(nonterminalTailIn);
        }
        private void Init(NonterminalTailV nonterminalTailIn)
        {
            reference = nonterminalTailIn;

            labelName.Content = "_" + reference.Name;

            this.Background = Global.Settings.getBrush(reference.Level);

            if (reference.Reference.Reference.IsSelected)
                SetBorderThickness(2.0);

            if ((reference.Reference.Parent.Parent as ChoiceD).Children.Count == 1)
                rightClickMenu.Items.Remove(removeChoice);

            // let the controller hear me y'all
            ViewController.ViewListener.Listen(this);
        }
        public NonterminalExpanded(NonterminalTailV ruleIn, UserControl visualisedSymbolsIn)
        {
            InitializeComponent();

            Init(ruleIn, visualisedSymbolsIn, false);
        }
 public void AddReference(NonterminalTailV refIn)
 {
     reference.AddReference(refIn);
 }
        private void Init(SymbolV ruleIn, UserControl visualisedSymbolsIn, bool isStartSymbolIn)
        {
            visualisedSymbols = visualisedSymbolsIn;
            isStartSymbol = isStartSymbolIn;

            if (isStartSymbol)
            {
                referenceHead = (NonterminalHeadV)ruleIn;
                referenceTail = null;

                setName(referenceHead.Name);

                this.Background = Global.Settings.getBrush(0);

                collapseBtn.Visibility = Visibility.Collapsed;

                if (referenceHead.Reference.IsSelected)
                    SetBorderThickness(2.0);

                rightClickMenu.Visibility = Visibility.Collapsed;
            }
            else
            {
                referenceHead = null;
                referenceTail = (NonterminalTailV)ruleIn;

                if ((referenceTail.Reference.Parent.Parent as OperationD).Children.Count == 1)
                    rightClickMenu.Items.Remove(removeChoice);

                setName(referenceTail.Name);

                this.Background = Global.Settings.getBrush(referenceTail.Level);

                if (referenceTail.Reference.Reference.IsSelected)
                    SetBorderThickness(2.0);
            }

            // change direction of nont chilren if necessary
            if (ruleIn.Direction)
            {
                // draw top to bottom
                stackPanelOuter.Orientation = Orientation.Horizontal;
                stackPanelHeading.Orientation = Orientation.Vertical;
                stackPanelInner.Orientation = Orientation.Vertical;
                stackPanelName.Orientation = Orientation.Horizontal;
                arrow_down.Visibility = Visibility.Visible;
                arrow_right.Visibility = Visibility.Collapsed;
            }

            // add child to GUI
            stackPanelInner.Children.Remove(holder);
            stackPanelInner.Children.Add(visualisedSymbols);

            // let the controller hear me y'all
            ViewController.ViewListener.Listen(this);
        }
 public void visit(NonterminalTailV nonterminalTailV)
 {
     if (nonterminalTailV.IsExpanded)
         nonterminalTailV.Rule.accept(this);
 }
 public void Collapse(NonterminalTailV control)
 {
     control.Collapse();
 }
 public void Expand(NonterminalTailV control)
 {
     control.Expand();
 }
        private GrammarNodeV newVisual()
        {
            if (newItem is UndefinedD)
            {
                UndefinedD undefinedD = newItem as UndefinedD;
                UndefinedV visual = new UndefinedV(undefinedD, level);

                undefinedD.References.Add(visual);
                return visual;
            }
            else if (newItem is TerminalD)
            {
                TerminalD terminalD = newItem as TerminalD;
                TerminalV visual = new TerminalV(terminalD, level);

                terminalD.References.Add(visual);
                return visual;
            }
            else if (newItem is NonterminalTailD)
            {
                NonterminalTailD nontTailD = newItem as NonterminalTailD;
                NonterminalTailV visual = new NonterminalTailV(nontTailD, level);
                nontTailD.AddReference(visual);
                return visual;
            }
            else
                throw new NotImplementedException();
        }
 internal void setRule(NonterminalTailV nonterminalTailV)
 {
     rule = nonterminalTailV.Reference.getMyRule();
 }