View(视图)是SD的基础部分,View通常包含编辑器,如代码编辑器,资源编辑器。基本上,它是显示于MPI窗口选项卡页面上的面板。

    制作View要从AbstractViewContent继承下来。下面就进入我们的实战操作流程,首先新建一个类库行的项目,SDViewDemoPlug,把Class1.cs改名为Main.cs,修改为如下内容:

1using System;
  2using ICSharpCode.Core.AddIns;
  3using ICSharpCode.Core.AddIns.Codons;
  4
  5using ICSharpCode.SharpDevelop.Gui;
  6
  7namespace 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,修改内容如下:

1using System;
  2using System.Drawing;
  3using System.Windows.Forms;
  4using ICSharpCode.SharpDevelop.Gui;
  5
  6namespace 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         = ""
        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());

SharpDevelop开发教程(二)_ide

此Demo演示了如何在SD添加一个View,同时也演示了如何在SD中更改菜单项。每添加一个菜单项时都要继承一个AbstractMenuCommand,并且改写Run()函数,当然你的XXXCommand也可以从SD的AbstractCommand继承,但要实现IMenuCommand接口。因为添加菜单项和添加工具条按钮比较简单,在以后的内容中我会一起讲,在此我就不多说了。