ExpressPlugin开发示例

下面通过一个示例程序来说明基于ExpressPlugin的开发流程,该示例程序是一个类似于Windows记事本的文本编辑工具,提供了文本文件的创建、编辑、保存等功能,名字就叫SimpleEditor吧。

 
1.在Visual Studio中新建一个WindowsApplication类型的项目,命名为SimpleEditor。
2.为新建的项目添加引用ExpressPlugin.dll。从VS环境中的添加引用窗口中选择浏览,然后找到安装目录下的bin文件夹,将此文件夹中的dll文件添加到工程引用中。
3.创建文本编辑窗口。在此示例中,简单采用Windows提供的RichTextBox控件作为编辑控件,它具有文本的输入和显示功能。由于在插件框架中,任何工作窗口都是属于视图,需要实现IViewContent接口,才能被框架所识别,所以编辑窗口编辑窗口类也要实现IViewContent。类的定义如下:
 
   
   
/// <summary>
/// 文本编辑窗口
/// </summary>
class TextViewContent : AbstractViewContent
{
// 文本编辑控件
private RichTextBox richTextBox = new RichTextBox();

/// <summary>
/// 视图控件属性(实现IViewContent)
/// </summary>
public override Control ViewContentControl
{
get { return richTextBox; }
}
/// <summary>
/// 默认构造函数(创建新文本文件)
/// </summary>
public TextViewContent()
:
base ()
{
}
/// <summary>
/// 打开已经存在的文件
/// </summary>
/// <param name="fileName"> 文件路径 </param>
public TextViewContent( string fileName)
:
base (fileName)
{
this .FileName = fileName;
this .Title = Path.GetFileName(fileName);
if (File.Exists(fileName))
{
StreamReader sr
= new StreamReader(fileName, Encoding.Default);
string fileContent = sr.ReadToEnd();
sr.Close();
this .richTextBox.Text = fileContent;
}
}
   }

 

为了将来实现文件的保存和另存功能,需要在该类中增加两个处理函数:
 
代码
    
    
/// <summary>
/// 保存文件
/// </summary>
public void SaveFile()
{
// 已经打开的文件
if (File.Exists( this .FileName))
{
this .richTextBox.SaveFile( this .FileName, RichTextBoxStreamType.PlainText);
}
else
{
// 新建文件
SaveFileDialog saveDialog = new SaveFileDialog();
saveDialog.AddExtension
= true ;
saveDialog.Filter
= " 文本文件(*.txt,*.log,*.cs) | *.txt; *.log; *.cs " ;
DialogResult dr
= saveDialog.ShowDialog();
if (dr == DialogResult.OK)
{
string fileName = saveDialog.FileName;
this .FileName = fileName;
this .Title = Path.GetFileName(fileName);
this .richTextBox.SaveFile(fileName, RichTextBoxStreamType.PlainText);
this .OnSaved( new SaveEventArgs( true ));
}
}
}

/// <summary>
/// 另存文件
/// </summary>
public void SaveAs()
{
SaveFileDialog saveDialog
= new SaveFileDialog();
saveDialog.AddExtension
= true ;
saveDialog.Filter
= " 文本文件(*.txt,*.log,*.cs) | *.txt; *.log; *.cs " ;
DialogResult dr
= saveDialog.ShowDialog();
if (dr == DialogResult.OK)
{
string fileName = saveDialog.FileName;
this .FileName = fileName;
this .Title = Path.GetFileName(fileName);
this .richTextBox.SaveFile(fileName, RichTextBoxStreamType.PlainText);
}
}

 

4.实现功能。有了文本编辑窗口,现在就可以实现具体的文本操作功能。通常的文本操作有新建、打开、保存、另存等功能。每个功能的实现对应一个类,并要实现IMenuCommand接口,IMenuCommand接口定义了菜单的状态控制和调用入口。示例代码如下:
 
代码
    
    
[CommandUsage( " 新建文件 " )]
class doNewFile : AbstractMenuCommand
{
public override void Run()
{
// 创建文本编辑视图
TextViewContent view = new TextViewContent();
// 显示视图
WorkbenchSingleton.Workbench.ShowView(view);
}
}

[CommandUsage(
" 保存文件 " )]
class doSaveFile : AbstractMenuCommand
{
// 控制菜单的可用状态
public override bool IsEnabled
{
get
{
// 只有当前的文本编辑窗口不为空时,才能激活保存按钮
return WorkbenchSingleton.Workbench.ActiveViewContent != null ;
}
}

public override void Run()
{
IViewContent activeView
= WorkbenchSingleton.Workbench.ActiveViewContent;
if (activeView != null && activeView is TextViewContent)
{
TextViewContent textView
= activeView as TextViewContent;
// 弹出保存路径选择框并保存文本内容
textView.SaveFile();
}
}
}

 

5.配置系统菜单和界面。编写完功能代码之后,需要指定各个功能的调用入口--菜单,菜单也是应用程序的展现。所以接下来还需要通过工具来配置菜单和应用程序界面,配置的信息有如下几类(与插件类型相对应):
A:应用程序名称等描述信息。
配置主界面
B:运行库。运行库是插件功能代码编译后的成果(dll或exe),此处的设置必须确保文件名称路径等正确,否则应用程序无法运行。
运行库
C:启动项。设置系统启动之后自动执行的功能,通常为登录或加载资源等这一类初始化的操作。
D:系统面板。面板是应用程序界面的主要组成部分,必须设置的是面板所对应的实现类,名称、图标和快捷键等为可选。
面板
E:主菜单、右键菜单和工具栏。主菜单和右键菜单的名称为可选,而工具栏按钮必须设定图标,否则无法显示。
菜单配置
6.增加启动界面。  如果需要启动界面,可以把图片保存为SplashScreen.jpg或者SplashScreen.gif,放置在启动目录下即可。
 
7.启动应用程序。经过以上几个步骤,应用程序原型已经出来了,启动起来看看,然后再做进一步的开发和完善。
程序界面

 

下载:ExpressPlugin_SetupV1.0.rar

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值