第二章 View
View(視圖)是SD的基礎部分,View通常包含編輯器,如代碼編輯器,資源編輯器。基本上,它是顯示於MPI窗口選項卡頁面上的面板。
製作View要從AbstractViewContent繼承下來。下面就進入我們的實戰操作流程,首先新建一個類庫行的項目,SDViewDemoPlug,把Class1.cs改名爲Main.cs,修改爲如下內容:
1
using System;
2
using ICSharpCode.Core.AddIns;
3
using ICSharpCode.Core.AddIns.Codons;
4
5
using ICSharpCode.SharpDevelop.Gui;
6
7
namespace SDViewDemoPlug
8
{
9
public
class ShowViewCommand : AbstractMenuCommand
10
{
11
public
override
void Run()
12
{
13
WorkbenchSingleton.Workbench.ShowView(new SDViewContent());
14
}
15
}
16
}
添加一個新類,SDViewContent,文件名爲SDViewContent.cs,修改內容如下:
1
using System;
2
using System.Drawing;
3
using System.Windows.Forms;
4
using ICSharpCode.SharpDevelop.Gui;
5
6
namespace SDViewDemoPlug
7
{
8
public
class SDViewContent : AbstractViewContent
9
{
10
SDViewControl p=new SDViewControl();
11
public
override Control Control
12
{
13
get
{return p;}
14
}
15
16
public
override
bool IsReadOnly
17
{
18
get
{return
false;}
19
}
20
21
public
override
void Save(string fileName)
{}
22
public
override
void Load(string fileName)
{}
23
public
override
void RedrawContent()
{}
24
25
public
override
void Dispose()
26
{
27
p.Dispose();
28
}
29
30
public SDViewContent()
31
{
32
TitleName =
"TestView";
33
}
34
35
}
36
}
37
在項目中添加新建項à用戶控件。改名爲SDViewControl。各位可以在SDViewControl上添加一些相關的內容。最後添加插件配置文件ViewDemoPlug.addin,內容如下:
<AddIn name = "SharpDevelop Plug Demo"
author = "SongYuanWu"
copyright = "GPL"
url = "http://www.cnblogs.com/CBuilder"
description = "SharpDevelop"
version = "1.0.0">
<Runtime>
<Import assembly="SDViewDemoPlug.dll"/>
</Runtime>
<Extension path = "/SharpDevelop/Workbench/MainMenu/Tools">
<MenuItem id = "SDViewDemo"
label = "ShowMyView"
class = "SDViewDemoPlug.ShowViewCommand"/>
</Extension>
</AddIn>
還有不要忘記把ICSharpCode.Core.dll和SharpDevelop.Base.dll引用進項目中來。編譯後把ViewDemoPlug.addin和SDViewDemoPlug.dll拷貝到SD的/AddIns/目錄下。運行SD,就可以看到在【工具】菜單下出現了【ShowMyView】菜單項。Click【ShowMyView】菜單項後顯示如圖,再click【ShowMyView】菜單項後就會又顯示一個TestView。各位如果問:“需要做象“啓動頁”一樣的View,如果已經有打開的了就會激活打開的View該如何處理呢?”。其實很簡單,你可以把ShowViewCommand類中的Run函數更改爲:
foreach (IViewContent view in WorkbenchSingleton.Workbench.ViewContentCollection)
{
if (view is SDViewContent)
{
view.WorkbenchWindow.SelectWindow();
return;
}
}
WorkbenchSingleton.Workbench.ShowView(new SDViewContent());
此Demo演示瞭如何在SD添加一個View,同時也演示瞭如何在SD中更改菜單項。每添加一個菜單項時都要繼承一個AbstractMenuCommand,並且改寫Run()函數,當然你的XXXCommand也可以從SD的AbstractCommand繼承,但要實現IMenuCommand接口。因爲添加菜單項和添加工具條按鈕比較簡單,在以後的內容中我會一起講,在此我就不多說了。
源文檔 <http://www.cnblogs.com/CBuilder/archive/2005/08/06/209053.aspx>