Пример #1
0
 public static SourceCodeEditor     caret_Column(this SourceCodeEditor codeEditor, int value, int viewOffset)
 {
     return(codeEditor.invokeOnThread(
                () => {
         codeEditor.caret().Column = value + viewOffset;          // so that the selected line is not at the bottom of the screen
         codeEditor.caret().Column = value;
         return codeEditor;
     }));
 }
Пример #2
0
 public static SourceCodeEditor     caret(this SourceCodeEditor codeEditor, int line, int column, int viewOffset)
 {
     return(codeEditor.invokeOnThread(
                () => {
         codeEditor.caret().Line = line - 1 + viewOffset;          // so that the selected line is not at the bottom of the screen
         codeEditor.caret().Line = line - 1;
         codeEditor.caret().Column = column - 1;
         return codeEditor;
     }));
 }
Пример #3
0
 public static SourceCodeEditor     onCaretMove(this SourceCodeEditor codeEditor, Action <Caret> callback)
 {
     codeEditor.textArea().Caret.PositionChanged +=
         (sender, e) => {
         if (codeEditor.notNull())
         {
             callback(codeEditor.caret());
         }
     };
     return(codeEditor);
 }
        public ascx_CodeStreams buildGui()
        {
            //codeViewer = this.add_SourceCodeViewer();
            _codeEditor      = this.add_SourceCodeEditor();
            codeStreams      = _codeEditor.insert_Right().add_GroupBox("All Code Streams").add_TreeView();
            codeStreamViewer = codeStreams.parent().insert_Below().add_GroupBox("Selected Code Stream").add_TreeView();
            //var codeStreamViewer = topPanel.insert_Right().add_TreeView();

            Action <TreeNode, CodeStreamPath> add_CodeStreamPath = null;

            add_CodeStreamPath =
                (treeNode, codeStreamPath) => {
                var newNode = treeNode.add_Node(codeStreamPath);
                foreach (var childPath in codeStreamPath.CodeStreamPaths)
                {
                    add_CodeStreamPath(newNode, childPath);
                }
            };

            Action <TreeView, CodeStreamPath> showCodeStreamPath =
                (treeView, codeStreamPath) => {
                treeView.clear();
                add_CodeStreamPath(treeView.rootNode(), codeStreamPath);
                treeView.expandAll();
                treeView.selectFirst();
            };

            Action <SourceCodeEditor, CodeStreamPath, bool> colorCodePath =
                (codeEditor, codeStreamPath, clearMarkers) =>
            {
                if (codeEditor.getSourceCode().inValid() || codeStreamPath.Line == 0 && codeStreamPath.Column == 0)
                {
                    return;
                }
                try
                {
                    if (clearMarkers)
                    {
                        codeEditor.clearMarkers();
                        codeEditor.caret(codeStreamPath.Line, codeStreamPath.Column);
                    }
                    codeEditor.selectTextWithColor(codeStreamPath.Line,
                                                   codeStreamPath.Column,
                                                   codeStreamPath.Line_End,
                                                   codeStreamPath.Column_End);
                    codeEditor.refresh();
                }
                catch (Exception ex)
                {
                    ex.log();
                }
            };

            Action <SourceCodeEditor, List <CodeStreamPath> > colorCodePaths =
                (codeEditor, codeStreamPaths) => {
                foreach (var codeStreamPath in codeStreamPaths)
                {
                    colorCodePath(codeEditor, codeStreamPath, false);
                }
            };

            Action <TreeView, SourceCodeEditor> set_AfterSelect_SyncWithCodeEditor =
                (treeView, codeEditor) => {
                treeView.afterSelect <CodeStreamPath>(
                    (codeStreamPath) => colorCodePath(codeEditor, codeStreamPath, true));
            };


            set_AfterSelect_SyncWithCodeEditor(codeStreams, _codeEditor.editor());
            set_AfterSelect_SyncWithCodeEditor(codeStreamViewer, _codeEditor.editor());

            codeStreams.afterSelect <CodeStreamPath>(
                (codeStreamPath) => showCodeStreamPath(codeStreamViewer, codeStreamPath));


            codeStreams.beforeExpand <CodeStreamPath>(
                (treeNode, codeStreamPath) => {
                treeNode.add_Nodes(codeStreamPath.CodeStreamPaths, (codeStream) => codeStream.CodeStreamPaths.size() > 0);
            });


            _codeEditor.onClick(
                () => {
                if (savedMethodStream.notNull())
                {
                    _codeEditor.editor().clearMarkers();
                    codeStreamViewer.clear();
                    codeStreams.clear();
                    var line   = _codeEditor.caret().Line + 1;
                    var column = _codeEditor.caret().Column + 1;
                    CodeStreamPath lastMatch = null;
                    foreach (var codeStreamPath in savedMethodStream.CodeStreams)
                    {
                        if (codeStreamPath.Line <= line && codeStreamPath.Line_End >= line &&
                            codeStreamPath.Column <= column && codeStreamPath.Column_End >= column)
                        {
                            codeStreams.add_Node(codeStreamPath);
                            lastMatch = codeStreamPath;
                        }
                    }
                    if (lastMatch.notNull())
                    {
                        showCodeStreamPath(codeStreamViewer, lastMatch);
                        var codeStreamPaths = (from node in codeStreamViewer.allNodes()
                                               select(CodeStreamPath) node.get_Tag()).toList();
                        colorCodePaths(_codeEditor.editor(), codeStreamPaths);
                    }
                    else
                    {
                        refresh_AllCodeStreams_TreeView();
                    }
                }
            });
            return(this);
        }
Пример #5
0
 public static SourceCodeEditor     caret(this SourceCodeEditor codeEditor, int line, int column)
 {
     return(codeEditor.caret(line, column, 3));
 }