Example #1
0
        private void ParseParagraph(HtmlNode node)
        {
            if (Logger.IsDebugEnabled)
            {
                Logger.Debug(string.Format("paragraph: {0}, {1}", node.Name, node.InnerText));
            }

            _currentParagraph = CreateParagraph();

            ParseInlines(node);

            if (_currentParagraph == null || _currentParagraph.IsEmpty)
            {
                return;
            }

            if (_currentStyledText == null)
            {
                _currentStyledText = CreateStyledText(_currentParagraph);
            }
            else
            {
                _currentStyledText.Add(_currentParagraph);
            }

            SetParagraphKind(_currentParagraph, GetParagraphKind(node));
            if (IsPre(node))
            {
                var indent = new IndentParagraphCommand(_currentParagraph);
                indent.Execute();
            }
        }
 public void Outdent()
 {
     if (_selection.IsEmpty)
     {
         var target = _target.GetBlockAt(_caretIndex) as Paragraph;
         var cmd    = new IndentParagraphCommand(target, -1);
         _executor.Execute(cmd);
     }
     else
     {
         var targets = GetParagraphsInSelection();
         var cmds    = new CompositeCommand();
         foreach (var target in targets)
         {
             var cmd = new IndentParagraphCommand(target, -1);
             if (cmd.CanExecute)
             {
                 cmds.Chain(cmd);
             }
         }
         if (cmds.Children.Count > 0)
         {
             _executor.Execute(cmds);
         }
     }
 }
Example #3
0
        private Paragraph CreateParagraph()
        {
            var ret = new Paragraph();

            if (_contexts.Count > 0)
            {
                var context = _contexts.Peek();
                SetListItemProps(ret, context.ListKind, context.ListLevel);
            }
            if (_indent)
            {
                var indent = new IndentParagraphCommand(ret);
                indent.Execute();
            }
            return(ret);
        }
Example #4
0
        private void SetListItemProps(Paragraph para, ListKind kind, int level)
        {
            var list = new SetListKindOfParagraphCommand(para, kind);

            list.Execute();

            if (para.ListLevel < level)
            {
                for (int i = para.ListLevel; i < level; ++i)
                {
                    var indent = new IndentParagraphCommand(para);
                    indent.Execute();
                }
            }
            else if (para.ListLevel > level)
            {
                for (int i = para.ListLevel; i > level; --i)
                {
                    var outdent = new IndentParagraphCommand(para, -1);
                    outdent.Execute();
                }
            }
        }