• 插件框架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_SetupV2.0.rar

  • 相关阅读:
    jQuery Lazy Load 图片延迟加载
    jquery多级联动(ajax查数据库)
    在命令行快速切换目录(转载)
    推荐Mac软件Alfred
    Vim的snipMate插件
    腾讯CMEM的PHP扩展(转载)
    svn hooks使用
    samba基本配置
    linux进程状态详解(转)
    elk systemd管理
  • 原文地址:https://www.cnblogs.com/qingteng1983/p/1728277.html
Copyright © 2020-2023  润新知