/// <summary> /// Fuegt einen neuen Baustein an der uebergebenen Position ein. /// </summary> /// <param name="pos">Position des neuen Bausteins.</param> /// <param name="stm">Einzufuegender Baustein.</param> public void addBeforeStm(Statement pos, Statement stm) { if (pos == null) { StmList.AddBefore(StmList.Last, stm); } else { StmList.AddBefore(StmList.Find(pos), stm); } stm.Parent = this; stm.Indent = this.Indent + 1; }
/// <summary> /// Entfernt den uebergebenen Baustein aus der stmList. /// </summary> /// <param name="stm">Zu entfernender Baustein.</param> public void removeStm(Statement stm) { stm.Parent = null; stm.Indent = 0; if (stm is ListStm) { for (int i = (stm as ListStm).StmList.Count - 2; i >= 0; i--) { (stm as ListStm).StmList.ElementAt<Statement>(i).Indent = this.Indent + 1; this.addBeforeStm(stm, (stm as ListStm).StmList.ElementAt<Statement>(i)); (stm as ListStm).StmList.Remove((stm as ListStm).StmList.ElementAt<Statement>(i)); } } stmList.Remove(stm); }
/// <summary> /// Prueft ob sich der uebergebene Baustein in der stmList befindet. /// </summary> /// <param name="stm">Gesuchter Baustein.</param> /// <param name="listStm">Zu durchsuchende Liste.</param> /// <returns>True, wenn der Baustein gefunden wurde. False, wenn nicht.</returns> public bool stmListContains(Statement stm, ListStm listStm) { if (stm == listStm) return true; foreach (Statement x in listStm.StmList) { if (x is ListStm) { if (stmListContains(stm, x as ListStm)) return true; } else if(x == stm) { return true; } } return false; }
/// <summary> /// Aktualisiert die Schriftfarbe des Pseudocodes. /// </summary> /// <param name="s"></param> private void updateFontStyle(Statement s) { bool foundOldStm = false; bool foundNewStm = false; int indexOld = Config.NOT_USED; int indexNew = Config.NOT_USED; foreach(Tuple<Statement, string> x in _stms) { if(x.Item2 == Config.TEXT_RED) { indexOld = _stms.IndexOf(x); foundOldStm = true; } if(x.Item1 == s) { indexNew = _stms.IndexOf(x); foundNewStm = true; } if(foundOldStm && foundNewStm) { break; } } if (indexNew != Config.NOT_USED) { Tuple<Statement, string> tmpTuple = _stms.ElementAt(indexNew); _stms.Insert(indexNew, new Tuple<Statement, string>(_stms.ElementAt<Tuple<Statement, string>>(indexNew).Item1, Config.TEXT_RED)); _stms.Remove(tmpTuple); } if (indexOld != Config.NOT_USED) { Tuple<Statement, string> tmpTuple = _stms.ElementAt(indexOld); _stms.Insert(indexOld, new Tuple<Statement, string>(_stms.ElementAt(indexOld).Item1, Config.TEXT_NORMAL)); _stms.Remove(tmpTuple); } }