public ascx_MediaWiki_PageEditor_Simple buildGui(O2MediaWikiAPI wikiApi) { try { WikiApi = wikiApi; var topPanel = this.add_Panel(); var horizontalSplitterPosition = topPanel.height()/2; var verticalSplitterPosition = topPanel.width()/2; var controls = topPanel.add_1x2("WikiText","Preview","Live (Current page)",false,horizontalSplitterPosition,verticalSplitterPosition); WikiTextEditor = controls[0].add_RichTextBox(); BrowserPreview = controls[1].add_WebBrowser(); BrowserCurrent = controls[2].add_WebBrowser(); WikiPage_TextBox = WikiTextEditor.insert_Above<TextBox>(50); var bottomPanel = WikiPage_TextBox.insert_Below<Panel>(30); RecentChangesComboBox = WikiPage_TextBox.insert_Right<Panel>(290) .add_Label("Recent Changes / Search") .top(3) .append_Control<ComboBox>() //.dropDownList() .width(150) .top(0); Action<string> populateRecentChangesComboBox = (filter) => { RecentChangesComboBox.backColor(Color.LightPink); O2Thread.mtaThread( ()=>{ RecentChangesComboBox.clear(); if (filter.valid().isFalse()) RecentChangesComboBox.add_Items(WikiApi.recentPages()); else RecentChangesComboBox.add_Items(WikiApi.pages(filter)); RecentChangesComboBox.backColor(Color.White); }); }; RecentChangesComboBox.onSelection( ()=>{ WikiPage_TextBox.set_Text(RecentChangesComboBox.get_Text()); loadCurrentPage(); }); RecentChangesComboBox.onEnter( (text)=>{ populateRecentChangesComboBox(text); }); //WikiTextEditor.insert_Below<ascx_LogViewer>(130); //default values BrowserPreview.silent(true); BrowserCurrent.silent(true); //WikiPage_TextBox.set_Text("Test"); // add controls with events CurrentPageUrl = BrowserCurrent.insert_Above<Panel>(20) .add_LabelAndComboBoxAndButton("Current page","","open",showInCurrentBrowser) .controls<ComboBox>(); CurrentPageUrl.insert_Item("www.google.com"); bottomPanel.add_Button("Load",0).onClick( ()=>{ loadCurrentPage(); }); bottomPanel.add_Button("Preview",0,100).onClick( ()=>{ O2Thread.mtaThread( ()=>{ BrowserPreview.set_Text(WikiApi.parseText(WikiTextEditor.get_Text(),true)); }); }); SaveButton = bottomPanel.add_Button("Save",0,200).onClick( ()=>{ saveCurrentPage(); }); StatusLabel = SaveButton.append_Label("").topAdd(3).autoSize(); /*WikiTextEditor.onKeyPress(Keys.Enter, (code)=>{ O2Thread.mtaThread(()=> { BrowserPreview.set_Text(WikiApi.parseText(code,true)); }); });*/ WikiTextEditor.onKeyPress((key)=> // add suport to paste images form Clipboard { if (key == (Keys.Control | Keys.V)) return pasteImageFromClipboard(); return false; }); WikiPage_TextBox.onEnter((text)=>loadPage(text)); WikiTextEditor.add_ContextMenu() .add_MenuItem("Wrap with source tag (defaults to lang=csharp)", ()=>{ WikiTextEditor.invokeOnThread( ()=>{ WikiTextEditor.SelectedText = "<source lang=csharp>".line() + WikiTextEditor.SelectedText.line() + "</source>".line(); }); }); populateRecentChangesComboBox(""); } catch(Exception ex) { ex.log("in ascx_MediaWiki_PageEditor_Simple buildGui"); } return this; }
//bool putJavaScriptCodeViewerOnTheLeft, public ascx_Javascript_AST buildGui( bool addUrlLoadTextBox) { var mainGui = this.add_1x1("Files or ScriptBlocks","Javascript Source (you can edit this code and see the results in realtime)"); var splitContainer = this.controls<SplitContainer>(); if (addUrlLoadTextBox) { showJavascriptsFromUrl = splitContainer.insert_Above<Panel>(25) .add_LabelAndComboBoxAndButton("Enter Url to load Javascripts","","Open", loadJavascriptsFromUrl) .controls<ComboBox>(); } /*if (putJavaScriptCodeViewerOnTheLeft) { splitContainer.splitterDistance(this.width()/3); javascriptCode = mainGui[1].add_TreeView().showSelection().sort(); sourceCode = mainGui[0].add_SourceCodeViewer(); } else {*/ javascriptCode = mainGui[0].add_TreeView().showSelection().sort(); sourceCode = mainGui[1].add_SourceCodeViewer(); //} pagesVisited = javascriptCode.insert_Above<ComboBox>(25).dropDownList(); codeSnippet = sourceCode.insert_Below<TextBox>(100).multiLine().scrollBars(); tabControl = javascriptCode.insert_Below<TabControl>(); jsAST = tabControl.add_Tab("Javascript - View Ast Tree") .add_TreeView() .showSelection(); jsFunctions = tabControl.add_Tab("JScript: Functions") .add_TreeView() .showSelection() .sort(); jsIdentifiers = tabControl.add_Tab("JScript: Identifiers") .add_TreeView() .showSelection() .sort(); jsValues = tabControl.add_Tab("JScript: Values") .add_TreeView() .showSelection() .sort(); allAST = tabControl.add_Tab("Javascript - View Ast Elements") .add_TreeView() .showSelection() .sort(); var searchTab = tabControl.add_Tab("Search in Code") .add_LabelAndComboBoxAndButton("search for (case sensitive)","","show", (text)=> { sourceCode.editor().invoke("searchForTextInTextEditor_findNext", text); }); //tabControl.select_Tab(searchTab); javaScriptLoadMessage = javascriptCode.insert_Below<Panel>(20); allAST.insert_Below<Panel>(25) .add_CheckBox("Render this view (some performace impact on large scripts)", 0,0, (value)=>{ RenderViewAstElementsTreeView = value; processJavascript(); }) .autoSize(); allAST.jint_configure_showSelectionDetails(sourceCode, codeSnippet); jsFunctions.jint_configure_showSelectionDetails(sourceCode, codeSnippet); jsIdentifiers.jint_configure_showSelectionDetails(sourceCode, codeSnippet); jsValues.jint_configure_showSelectionDetails(sourceCode, codeSnippet); javascriptCode.afterSelect<string>( (jsCode) => { sourceCode.editor().clearBookmarksAndMarkers(); sourceCode.set_Text(jsCode,"*.js"); sourceCode.editor().refresh(); }); sourceCode.onTextChanged(processJavascript); pagesVisited.onSelection<IE_HtmlPage>( (htmlPage)=>{ var allScriptsCompiledOk = javascriptCode.populateWithHtmlPageScripts(htmlPage); javascriptCode.add_Node("zzz [Original Html Code for: {0}]".format(htmlPage.PageUri.str()),htmlPage.PageSource); handleCompilationResult(allScriptsCompiledOk); }); pagesVisited.onSelection<Jint_Wrapper>( (jintWrapper)=>{ var allScriptsCompiledOk = javascriptCode.populateWithHtmlPageScripts(jintWrapper.JavaScripts); javascriptCode.add_Node("zzz_[Original Code for: {0}]".format(jintWrapper.Uri.str()),jintWrapper.Html); handleCompilationResult(allScriptsCompiledOk); }); javascriptCode.onDrop( (fileOrFolder)=>{ if (fileOrFolder.fileExists()) javascriptCode.add_Node(fileOrFolder.str(), fileOrFolder.fileContents()); else if (fileOrFolder.dirExists()) { javascriptCode.clear(); foreach(var file in fileOrFolder.files("*.js",true)) javascriptCode.add_Node(file.str(), file.fileContents()); } }); this.add_ContextMenu().add_MenuItem("Show log viewer",()=> this.insert_Below<Panel>(90).add_LogViewer()); return this; }