internal void Select(Terminal terminalControl) { GrammarEventArgs eventArgs = new GrammarEventArgs(); eventArgs.Action = GrammarActions.Click; eventArgs.Reference = terminalControl.TerminalV; if (TerminalEvent != null) { TerminalEvent(terminalControl, eventArgs); } }
internal void Rename(Terminal terminalControl, string newName) { GrammarEventArgs eventArgs = new GrammarEventArgs(); eventArgs.NewName = newName; eventArgs.Reference = terminalControl.TerminalV; eventArgs.Action = GrammarActions.Rename; if (TerminalEvent != null) { TerminalEvent(terminalControl, eventArgs); } }
private void FireEvent(GrammarActions action) { if (ControlEvent != null) { GrammarEventArgs eventArgs = new GrammarEventArgs(); eventArgs.Action = action; eventArgs.Reference = terminalControl.TerminalV; eventArgs.NewName = nameTextBox.Text; eventArgs.setRule(terminalControl.TerminalV); eventArgs.SymbolType = SymbolType.Terminal; ControlEvent(terminalControl, eventArgs); } }
void NonterminalControlEvent(object sender, GrammarEventArgs e) { try { if (sender is NonterminalCollapsed) NonterminalCollapsedControlEvent(sender, e); else if (sender is NonterminalExpanded) NonterminalExpandedControlEvent(sender, e); } catch (Exception ex) { FireError(ex); } }
void setActionBar(object sender, GrammarEventArgs e) { if (sender is Terminal) { TerminalActionBar tab = new TerminalActionBar(sender as Terminal); actionBarHolder.Content = tab; controller.setActionBar(tab); } if (sender is NonterminalCollapsed) { NonterminalActionBar tab = new NonterminalActionBar(sender as NonterminalCollapsed); actionBarHolder.Content = tab; controller.setActionBar(tab); } if (sender is NonterminalExpanded) { NonterminalActionBar tab = new NonterminalActionBar(sender as NonterminalExpanded); actionBarHolder.Content = tab; controller.setActionBar(tab); } }
private void AddAfter(GrammarEventArgs eventArgs) { // add a new undefined item in the model UndefinedD undefinedD = model.Functions.AddAfter(eventArgs.Rule, eventArgs.Reference, SymbolType.Undefined) as UndefinedD; // traverse the view grammar and add this undefined property everywhere :o view.Functions.AddAfter(eventArgs.Reference, undefinedD); ReDraw(); }
void TerminalControlEvent(object sender, GrammarEventArgs eventArgs) { try { if (sender is Terminal) { Terminal control = (Terminal)sender; switch (eventArgs.Action) { case GrammarActions.Rename: Rename(control, eventArgs); break; case GrammarActions.Click: SelectedTerminal(control, eventArgs); break; case GrammarActions.Delete: Delete(eventArgs.Reference); break; case GrammarActions.AddAfter: AddAfter(eventArgs); break; case GrammarActions.AddBefore: AddBefore(eventArgs); break; case GrammarActions.AddChoice: AddChoice(eventArgs); break; case GrammarActions.RemoveChoice: RemoveChoice(eventArgs.Reference); break; default: throw new Exception("The action " + eventArgs.Action + " is not supported by the controller"); } } } catch (Exception e) { FireError(e); } }
private void SelectedNonterminal(GrammarEventArgs e) { UnselectAll(); // set the rule to be selected if (e.Reference is NonterminalHeadV) (e.Reference as NonterminalHeadV).Reference.IsSelected = true; else if (e.Reference is NonterminalTailV) (e.Reference as NonterminalTailV).Reference.Reference.IsSelected = true; ReDraw(); }
private void Replace(Undefined control, GrammarEventArgs eventArgs) { GrammarNodeD itemToReplace = control.Reference.getReference(); GrammarNodeD newItem = model.Functions.Replace(itemToReplace, eventArgs.SymbolType, eventArgs.NewName); view.Functions.Replace(itemToReplace, newItem); ReDraw(); }
private void Rename(Terminal terminalControl, GrammarEventArgs e) { TerminalV terminalV = e.Reference as TerminalV; if (terminalV == null) throw new Exception("The references visualised item is not of type TerminalV"); // rename in the model model.Functions.Rename(terminalV, e.NewName); // rename in the view //view.Functions.Rename(terminalControl, e.NewName); // the redraw will cause the view to be renamed and updated ReDraw(); }
void undefined_ControlEvent(object sender, GrammarEventArgs e) { if (UndefinedControlEvent != null) UndefinedControlEvent(sender, e); }
void terminal_ControlEvent(object sender, GrammarEventArgs e) { if (TerminalControlEvent != null) TerminalControlEvent(sender, e); }
internal void nonterminalExpanded_ControlEvent(object sender, GrammarEventArgs e) { if (NonterminalExpandedControlEvent != null) NonterminalExpandedControlEvent(sender, e); }
private void FireEvent(GrammarActions action) { if (ControlEvent != null) { GrammarEventArgs eArgs = new GrammarEventArgs(); eArgs.Action = action; eArgs.Reference = getReference(); eArgs.NewName = nameTextBox.Text; eArgs.SymbolType = SymbolType.Nonterminal; if (nontExpanded != null) { if (nontExpanded.ReferenceTail != null) eArgs.setRule(nontExpanded.ReferenceTail); else eArgs.setRule(nontExpanded.ReferenceHead); ControlEvent(nontExpanded, eArgs); } else { eArgs.setRule(nontCollapsed.Reference); ControlEvent(nontCollapsed, eArgs); } } }
private void FireEvent(GrammarActions action) { GrammarEventArgs e = new GrammarEventArgs(); e.Action = action; if (isStartSymbol) { e.Reference = referenceHead; e.setRule(referenceHead); } else { e.Reference = referenceTail; e.setRule(referenceTail); } if (ControlEvent != null) ControlEvent(this, e); }
void NonterminalExpandedControlEvent(object sender, GrammarEventArgs eventArgs) { // an event from an expanded nontermianl control if (sender is NonterminalExpanded) { NonterminalExpanded thisSender = (NonterminalExpanded)sender; switch (eventArgs.Action) { case GrammarActions.Collapse: collapse(thisSender, eventArgs); break; case GrammarActions.Click: SelectedNonterminal(thisSender, eventArgs); break; case GrammarActions.Rename: RenameNonterminal(eventArgs); break; case GrammarActions.Delete: Delete(eventArgs.Reference); break; case GrammarActions.AddAfter: AddAfter(eventArgs); break; case GrammarActions.AddBefore: AddBefore(eventArgs); break; case GrammarActions.AddChoice: AddChoice(eventArgs); break; case GrammarActions.RemoveChoice: RemoveChoice(eventArgs.Reference); break; case GrammarActions.DoubleClick: DoubleClick(eventArgs.Reference); break; default: throw new Exception("The action " + eventArgs.Action + " is not supported by the nont expanded event handler"); } } }
void nontExpanded_Flipping(object sender, GrammarEventArgs e) { //if (sender is NonterminalExpanded) //{ // NonterminalExpanded nont = (NonterminalExpanded)sender; // NonterminalTailV nonterminalTailV = (NonterminalTailV)e.Reference; // nonterminalTailV.Flip(); // // draw control // GrammarNodeVDrawVisitor drawer = new GrammarNodeVDrawVisitor(); // drawer.visit(nonterminalTailV); // // replace child // int index = e.MyParent.Children.IndexOf(nont); // if (index < 0) // throw new Exception("Cant find child in my stack panel, uh oh!"); // e.MyParent.Children.RemoveAt(index); // e.MyParent.Children.Insert(index, drawer.DrawnItem); //} }
void ViewEvents_TerminalEvent(object sender, GrammarEventArgs e) { // if the reference is the same if (e.Reference == terminalV) { switch (e.Action) { case GrammarActions.Rename: SetLabelContent(e.NewName); break; default: throw new Exception("The action " + e.Action + " is not supported by the Terminal Control"); } } }
private void RenameNonterminal(GrammarEventArgs eventArgs) { // get nontHead we're renaming NonterminalHeadD nont; if (eventArgs.Reference is NonterminalHeadV) nont = (eventArgs.Reference as NonterminalHeadV).Reference; else nont = (eventArgs.Reference as NonterminalTailV).Reference.Reference; if (model.getNonterminalNames().Contains(eventArgs.NewName)) { // can't rename to nonterminal already in grammar throw new Exception("That nonterminal name already exists in the grammar, choose another one."); } // rename in model model.Functions.Rename(nont, eventArgs.NewName); // the redraw will cause the view to be updated ReDraw(); }
private void FireEvent(GrammarActions action) { if (ControlEvent != null) { GrammarEventArgs eArgs = new GrammarEventArgs(); eArgs.Action = action; eArgs.Reference = terminalV; eArgs.setRule(terminalV); ControlEvent(this, eArgs); } }
private void SelectedNonterminal(NonterminalCollapsed control, GrammarEventArgs eventArgs) { SelectedNonterminal(eventArgs); if (ControlSelected != null) { ControlSelected(control, eventArgs); } }
private void expandBtn_Click(object sender, RoutedEventArgs e) { if (ControlEvent != null) { GrammarEventArgs eargs = new GrammarEventArgs(); eargs.Reference = reference; //eargs.MyParent = this.Parent as StackPanel; eargs.Action = GrammarActions.Expand; ControlEvent(this, eargs); } }
private void SelectedTerminal(Terminal control, GrammarEventArgs e) { UnselectAll(); // set the terminal in the view to be selected control.TerminalV.Reference.IsSelected = true; ReDraw(); if (ControlSelected != null) { ControlSelected(control, e); } }
private void AddChoice(GrammarEventArgs eventArgs) { model.Functions.AddChoice(eventArgs.Reference.getReference()); view.Functions.AddChoice(eventArgs.Reference); ReDraw(); }
void UndefinedControlEvent(object sender, GrammarEventArgs eventArgs) { try { if (sender is Undefined) { Undefined control = (Undefined)sender; switch (eventArgs.Action) { case GrammarActions.Replace: Replace(control, eventArgs); break; case GrammarActions.Delete: Delete(eventArgs.Reference); break; case GrammarActions.AddAfter: AddAfter(eventArgs); break; case GrammarActions.AddBefore: AddBefore(eventArgs); break; case GrammarActions.AddChoice: AddChoice(eventArgs); break; case GrammarActions.RemoveChoice: RemoveChoice(eventArgs.Reference); break; default: throw new Exception("The action " + eventArgs.Action + " is not supported by the controller"); } } } catch (Exception e) { FireError(e); } }
private void collapse(NonterminalExpanded nonterminalExpanded, GrammarEventArgs e) { lock (new System.Object()) { NonterminalTailV nonterminalTailV = (NonterminalTailV)e.Reference; if (nonterminalTailV.IsExpanded) { // collapse in the model model.Functions.Collapse(nonterminalTailV); // collapse in the view view.Functions.Collapse(nonterminalExpanded); // re draw the view - we do this to reinitialise the controllers - not needed when expanding ReDraw(); } } }
private void FireEvent(GrammarActions action) { if (ControlEvent != null) { GrammarEventArgs e = new GrammarEventArgs(); e.Action = action; e.NewName = newName; e.SymbolType = symbolType; e.Reference = reference; e.setRule(reference); ControlEvent(this, e); } }
private void expand(NonterminalCollapsed nonterminalCollapsed, GrammarEventArgs e) { lock (new System.Object()) { // the reference to the tail v NonterminalTailV nonterminalTailV = (NonterminalTailV)e.Reference; if (!nonterminalTailV.IsExpanded) { // expand the model (visualised grammar) model.Functions.Expand(nonterminalTailV); // expand the view view.Functions.Expand(nonterminalCollapsed); } } }