/// <summary> /// Выполнить элемент программы. /// </summary> /// <param name="element">Элемент.</param> protected virtual void ExecuteElement(IRenderProgramElement element) { if (CommonRenderProgramElements.LineBreak.Equals(element.Id, StringComparison.CurrentCultureIgnoreCase)) { LineBreak = true; return; } if (CommonRenderProgramElements.AddAttribute.Equals(element.Id, StringComparison.CurrentCultureIgnoreCase)) { var el = element as IAttributeRenderProgramElement; if (el != null && el.Attribute != null) { Attributes.AddAttribute(el.Attribute); } return; } if (CommonRenderProgramElements.RemoveAttribute.Equals(element.Id, StringComparison.CurrentCultureIgnoreCase)) { var el = element as IAttributeRenderProgramElement; if (el != null && el.Attribute != null) { Attributes.RemoveAttribute(el.Attribute); } return; } }
/// <summary> /// Добавить элемент. /// </summary> /// <param name="element">Элемент.</param> /// <returns>Можно ещё выполнять команды.</returns> public bool PushProgramElement(IRenderProgramElement element) { if (!CommandFormer.AddElement(element)) { Flush(); CommandFormer.AddElement(element); } return true; }
/// <summary> /// Добавить элемент. /// </summary> /// <param name="element">Элемент.</param> /// <returns>Можно ещё выполнять команды.</returns> public bool PushProgramElement(IRenderProgramElement element) { if (ExceedLines) { return false; } if (!Former.AddElement(element)) { Flush(); Former.AddElement(element); } return true; }
/// <summary> /// Добавить элемент. /// </summary> /// <param name="element">Элемент.</param> /// <returns>true, если добавлено успешно. false, если нужно вызвать GetCommand</returns> public virtual bool AddElement(IRenderProgramElement element) { if (element == null || element.Id == null) { return true; } if (HasNonTextContent) { return false; } if (CommonRenderProgramElements.PrintText.Equals(element.Id, StringComparison.OrdinalIgnoreCase) && element is ITextRenderProgramElement) { var txt = (ITextRenderProgramElement) element; Text.Append(txt.Text ?? ""); return true; } if (Text.Length > 0) { return false; } ExecuteElement(element); return true; }