📄 defaultworkbench.cs
字号:
}
doc.RemoveAll();
}
// interface IMementoCapable
public IXmlConvertable CreateMemento()
{
WorkbenchMemento memento = new WorkbenchMemento();
memento.Bounds = normalBounds;
memento.DefaultWindowState = fullscreen ? defaultWindowState : WindowState;
memento.WindowState = WindowState;
memento.FullScreen = fullscreen;
return memento;
}
public void SetMemento(IXmlConvertable xmlMemento)
{
if (xmlMemento != null) {
WorkbenchMemento memento = (WorkbenchMemento)xmlMemento;
Bounds = normalBounds = memento.Bounds;
WindowState = memento.WindowState;
defaultWindowState = memento.DefaultWindowState;
FullScreen = memento.FullScreen;
}
}
protected override void OnResize(EventArgs e)
{
base.OnResize(e);
if (WindowState == FormWindowState.Normal) {
normalBounds = Bounds;
}
}
protected override void OnLocationChanged(EventArgs e)
{
base.OnLocationChanged(e);
if (WindowState == FormWindowState.Normal) {
normalBounds = Bounds;
}
}
void CheckRemovedFile(object sender, FileEventArgs e)
{
if (e.IsDirectory) {
foreach (IViewContent content in ViewContentCollection) {
if (content.FileName.StartsWith(e.FileName)) {
content.WorkbenchWindow.CloseWindow(true);
}
}
} else {
foreach (IViewContent content in ViewContentCollection) {
// WINDOWS DEPENDENCY : ToUpper
if (content.FileName != null &&
content.FileName.ToUpper() == e.FileName.ToUpper()) {
content.WorkbenchWindow.CloseWindow(true);
return;
}
}
}
}
void CheckRenamedFile(object sender, FileEventArgs e)
{
if (e.IsDirectory) {
foreach (IViewContent content in ViewContentCollection) {
if (content.FileName.StartsWith(e.SourceFile)) {
content.FileName = e.TargetFile + content.FileName.Substring(e.SourceFile.Length);
}
}
} else {
foreach (IViewContent content in ViewContentCollection) {
// WINDOWS DEPENDENCY : ToUpper
if (content.FileName != null &&
content.FileName.ToUpper() == e.SourceFile.ToUpper()) {
content.FileName = e.TargetFile;
content.TitleName = Path.GetFileName(e.TargetFile);
return;
}
}
}
}
// protected void OnTopMenuSelected(MenuCommand mc)
// {
// IStatusBarService statusBarService = (IStatusBarService)ICSharpCode.Core.Services.ServiceManager.Services.GetService(typeof(IStatusBarService));
//
// statusBarService.SetMessage(mc.Description);
// }
//
// protected void OnTopMenuDeselected(MenuCommand mc)
// {
// SetStandardStatusBar(null, null);
// }
protected override void OnClosing(CancelEventArgs e)
{
base.OnClosing(e);
IProjectService projectService = (IProjectService)ICSharpCode.Core.Services.ServiceManager.Services.GetService(typeof(IProjectService));
if (projectService != null) {
projectService.SaveCombinePreferences();
while (WorkbenchSingleton.Workbench.ViewContentCollection.Count > 0) {
IViewContent content = WorkbenchSingleton.Workbench.ViewContentCollection[0];
content.WorkbenchWindow.CloseWindow(false);
if (WorkbenchSingleton.Workbench.ViewContentCollection.IndexOf(content) >= 0) {
e.Cancel = true;
return;
}
}
projectService.CloseCombine(false);
}
// TODO : Dirty Files Dialog
// foreach (IViewContent content in ViewContentCollection) {
// if (content.IsDirty) {
// ICSharpCode.SharpDevelop.Gui.Dialogs.DirtyFilesDialog dfd = new ICSharpCode.SharpDevelop.Gui.Dialogs.DirtyFilesDialog();
// e.Cancel = dfd.ShowDialog() == DialogResult.Cancel;
// return;
// }
// }
}
protected override void OnClosed(EventArgs e)
{
base.OnClosed(e);
layout.Detach();
foreach (IPadContent content in PadContentCollection) {
content.Dispose();
}
}
void CombineOpened(object sender, CombineEventArgs e)
{
UpdateMenu(null, null);
}
void SetProjectTitle(object sender, ProjectEventArgs e)
{
UpdateMenu(null, null);
ResourceService resourceService = (ResourceService)ServiceManager.Services.GetService(typeof(IResourceService));
if (e.Project != null) {
Title = String.Concat(e.Project.Name, " - ", resourceService.GetString("MainWindow.DialogName"));
} else {
Title = resourceService.GetString("MainWindow.DialogName");
}
}
void SetStandardStatusBar(object sender, EventArgs e)
{
IStatusBarService statusBarService = (IStatusBarService)ICSharpCode.Core.Services.ServiceManager.Services.GetService(typeof(IStatusBarService));
statusBarService.SetMessage("${res:MainWindow.StatusBar.ReadyMessage}");
}
void OnActiveWindowChanged(object sender, EventArgs e)
{
if (!closeAll && ActiveWorkbenchWindowChanged != null) {
ActiveWorkbenchWindowChanged(this, e);
}
}
public CommandBarManager commandBarManager = new CommandBarManager();
public CommandBar TopMenu = null;
public CommandBar[] ToolBars = null;
public IPadContent GetPad(Type type)
{
foreach (IPadContent pad in PadContentCollection) {
if (pad.GetType() == type) {
return pad;
}
}
return null;
}
void CreateMainMenu()
{
TopMenu = new CommandBar(CommandBarStyle.Menu);
CommandBarItem[] items = (CommandBarItem[])(AddInTreeSingleton.AddInTree.GetTreeNode(mainMenuPath).BuildChildItems(this)).ToArray(typeof(CommandBarItem));
TopMenu.Items.Clear();
TopMenu.Items.AddRange(items);
}
void UpdateMenu(object sender, EventArgs e)
{
UpdateMenus();
UpdateToolbars();
}
public void UpdateMenus()
{
// update menu
foreach (object o in TopMenu.Items) {
if (o is IStatusUpdate) {
((IStatusUpdate)o).UpdateStatus();
}
}
}
public void UpdateToolbars()
{
foreach (CommandBar commandBar in ToolBars) {
foreach (object item in commandBar.Items) {
if (item is IStatusUpdate) {
((IStatusUpdate)item).UpdateStatus();
}
}
}
}
// this method simply copies over the enabled state of the toolbar,
// this assumes that no item is inserted or removed.
// TODO : make this method more add-in tree like, currently with Windows.Forms
// toolbars this is not possible. (drawing fragments, slow etc.)
void CreateToolBars()
{
if (ToolBars == null) {
ToolbarService toolBarService = (ToolbarService)ICSharpCode.Core.Services.ServiceManager.Services.GetService(typeof(ToolbarService));
CommandBar[] toolBars = toolBarService.CreateToolbars();
ToolBars = toolBars;
}
}
public void UpdateViews(object sender, EventArgs e)
{
IPadContent[] contents = (IPadContent[])(AddInTreeSingleton.AddInTree.GetTreeNode(viewContentPath).BuildChildItems(this)).ToArray(typeof(IPadContent));
foreach (IPadContent content in contents) {
ShowPad(content);
}
}
// Handle keyboard shortcuts
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (this.commandBarManager.PreProcessMessage(ref msg)) {
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
protected override void OnDragEnter(DragEventArgs e)
{
base.OnDragEnter(e);
if (e.Data != null && e.Data.GetDataPresent(DataFormats.FileDrop)) {
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
foreach (string file in files) {
if (File.Exists(file)) {
e.Effect = DragDropEffects.Copy;
return;
}
}
}
e.Effect = DragDropEffects.None;
}
protected override void OnDragDrop(DragEventArgs e)
{
base.OnDragDrop(e);
if (e.Data != null && e.Data.GetDataPresent(DataFormats.FileDrop)) {
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
IFileService fileService = (IFileService)ICSharpCode.Core.Services.ServiceManager.Services.GetService(typeof(IFileService));
foreach (string file in files) {
if (File.Exists(file)) {
fileService.OpenFile(file);
}
}
}
}
protected virtual void OnViewOpened(ViewContentEventArgs e)
{
if (ViewOpened != null) {
ViewOpened(this, e);
}
}
protected virtual void OnViewClosed(ViewContentEventArgs e)
{
if (ViewClosed != null) {
ViewClosed(this, e);
}
}
public event ViewContentEventHandler ViewOpened;
public event ViewContentEventHandler ViewClosed;
public event EventHandler ActiveWorkbenchWindowChanged;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -