htmlviewcontent.cs
来自「全功能c#编译器」· CS 代码 · 共 419 行 · 第 1/2 页
CS
419 行
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Mike Krüger" email="mike@icsharpcode.net"/>
// <version value="$version"/>
// </file>
using System;
using System.Text;
using System.Text.RegularExpressions;
using System.IO;
using System.Collections;
using System.Drawing;
using System.Drawing.Text;
using System.Drawing.Design;
using System.Reflection;
using System.Windows.Forms;
using System.Drawing.Printing;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Xml;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Internal.Project;
using ICSharpCode.SharpDevelop.Internal.Undo;
using ICSharpCode.SharpDevelop.Gui.Components;
using ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor;
using ICSharpCode.Core.Properties;
using ICSharpCode.Core.AddIns;
using ICSharpCode.Core.Services;
using ICSharpCode.SharpDevelop.Services;
using SharpDevelop.Internal.Parser;
using ICSharpCode.Core.AddIns.Codons;
using ICSharpCode.TextEditor;
using ICSharpCode.TextEditor.Document;
using System.CodeDom;
using System.CodeDom.Compiler;
using Microsoft.CSharp;
using Microsoft.VisualBasic;
using onlyconnect;
using Reflector.UserInterface;
namespace HtmlBackendBinding
{
public class HtmlViewContent : AbstractViewContent, ITextAreaControlProvider, IEditable
{
TabControl tabControl;
IViewContent htmlTextEditor;
AxSideTab tab = null;
// CommandBar menuToolBar = null;
onlyconnect.HtmlEditor htmlEditor;
// toolbar elements
// ComboBox fontComboBox = new TextComboBox(true);
public TextAreaControl TextAreaControl {
get {
return (TextAreaControl)htmlTextEditor.Control;
}
}
public IClipboardHandler ClipboardHandler {
get {
if (tabControl.SelectedTab.Controls[0] is IEditable) {
return ((IEditable)tabControl.SelectedTab.Controls[0]).ClipboardHandler;
}
return new HtmlEditorClipboardHandler(htmlEditor);
}
}
public string Text {
get {
return ((IEditable)htmlTextEditor).Text;
}
set {
((IEditable)htmlTextEditor).Text = value;
}
}
public override string ContentName {
get {
return htmlTextEditor.ContentName;
}
set {
htmlTextEditor.ContentName = value;
}
}
public override string UntitledName {
get {
return htmlTextEditor.UntitledName;
}
set {
htmlTextEditor.UntitledName = value;
}
}
public override Control Control {
get {
return tabControl;
}
}
// AbstractViewContent members
public override IWorkbenchWindow WorkbenchWindow {
set {
base.WorkbenchWindow = value;
WorkbenchWindow.WindowSelected += new EventHandler(SelectMe);
WorkbenchWindow.WindowDeselected += new EventHandler(DeSelectMe);
}
}
public HtmlViewContent(string fileName)
{
TextEditorDisplayBinding tdb = new TextEditorDisplayBinding();
htmlTextEditor = tdb.CreateContentForFile(fileName);
InitializeComponent();
ContentName = fileName;
}
public HtmlViewContent(string languageName, string content)
{
TextEditorDisplayBinding tdb = new TextEditorDisplayBinding();
htmlTextEditor = tdb.CreateContentForLanguage(languageName, content);
InitializeComponent();
htmlEditor.HtmlEvent += new HtmlEventHandler(ClickMe);
}
void ClickMe(object sender, HtmlEventArgs e)
{
string type = e.Event.type;
switch (type) {
case "click":
if (SharpDevelopSideBar.SideBar.ActiveTab.ChoosedItem.Tag is Element) {
Element elem = (Element)SharpDevelopSideBar.SideBar.ActiveTab.ChoosedItem.Tag;
elem.HtmlElement = htmlEditor.Document.createElement(elem.TagName);
string html = htmlEditor.Document.body.innerHTML + elem.ToString();
htmlEditor.Document.body.innerHTML = html;
//
// mshtml.IHTMLDOMNode body = (mshtml.IHTMLDOMNode);
// body.appendChild((mshtml.IHTMLDOMNode)elem.HtmlElement);
// Console.WriteLine("done");
tab.ChoosedItem = tab.Items[0];
SharpDevelopSideBar.SideBar.Refresh();
}
break;
}
}
public void Undo()
{
this.htmlEditor.Document.execCommand("Undo", false, null);
}
public void Redo()
{
this.htmlEditor.Document.execCommand("Redo", false, null);
}
void SelectMe(object sender, EventArgs e)
{
if (!SharpDevelopSideBar.SideBar.Tabs.Contains(tab)) {
SharpDevelopSideBar.SideBar.Tabs.Add(tab);
}
SharpDevelopSideBar.SideBar.ActiveTab = tab;
}
void DeSelectMe(object sender, EventArgs e)
{
SharpDevelopSideBar.SideBar.Tabs.Remove(tab);
}
void InitializeComponent()
{
tabControl = new TabControl();
tabControl.SelectedIndexChanged += new EventHandler(TabIndexChanged);
tabControl.Alignment = TabAlignment.Bottom;
IconService iconService = (IconService)ServiceManager.Services.GetService(typeof(IconService));
tabControl.ImageList = new ImageList();
tabControl.ImageList.Images.Add(iconService.GetBitmap("XmlFileIcon"));
tabControl.ImageList.Images.Add(iconService.GetBitmap("Icons.16x16.DesignPanel"));
TabPage sourcePage = new TabPage("Source");
sourcePage.ImageIndex = 0;
htmlTextEditor.Control.Dock = DockStyle.Fill;
htmlTextEditor.DirtyChanged += new EventHandler(TextAreaIsDirty);
sourcePage.Controls.Add(htmlTextEditor.Control);
tabControl.TabPages.Add(sourcePage);
TabPage designerPage = new TabPage("Design");
designerPage.ImageIndex = 1;
htmlEditor = new onlyconnect.HtmlEditor();
htmlEditor.IsDesignMode = true;
htmlEditor.Dock = DockStyle.Fill;
htmlEditor.TabIndex = 7;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?