GEF入门实例_总结_03_显示菜单和工具栏 GEF入门实例_总结_02_新建初始RCP空项目 GEF入门实例_总结_01_教程、源码、开发环境准备

一、前言

本文承接上一节: GEF入门实例_总结_02_新建初始RCP空项目

这一节,我们来给我们的插件加上菜单。

二、基础知识

1.action bar、menubar、coolbar

  含义
action bar 操作条
action 动作。单击菜单、工具栏图标按钮或者按键时执行某项处理
menubar 菜单栏
coolbar 工具栏

2.菜单在哪里加

还记得上一节我们新建的类: ApplicationActionBarAdvisor 吗,这个类继承自 ActionBarAdvisor。

我们打开 ActionBarAdvisor 源码,看看它的类注释:

/**
 * Public base class for configuring the action bars of a workbench window.
 * <p>
 * An application should declare a subclass of <code>ActionBarAdvisor</code>
 * and override methods to configure a window's action bars to suit the needs of the
 * particular application.

翻译过来就是:

(1) 用于配置工作台窗口的 action bars 的公共基类。

(2) 应用程序应该声明ActionBarAdvisor的子类和重写方法,以配置窗口的 action bar 来满足特定应用程序的需要。

也就是说,我们需要在 ApplicationActionBarAdvisor  类中,通过重写父类的方法,来填充菜单栏。

3.菜单怎么加

注意到我们在第一节中为 ApplicationActionBarAdvisor 类重写了三个方法,就是为这里准备的。

方法名 作用
makeActions 生成并注册Action。Action只有注册后才能添加到菜单中
fillMenuBar 填充菜单栏。用Action来填充菜单
fillCoolBar 填充工具栏。用Action来填充工具栏

三、准备Action

1、图片

请前往GitHub下载源码,拷贝图片到此工程的icons文件夹下。   传送门:GEF入门实例_总结_01_教程、源码、开发环境准备

注:

Eclipse插件开发时,图片都默认保存在icons文件夹中,请不要修改文件夹名称。

2、图片常量类 IImageConstant

在包 constant 下新建图片常量类 IImageConstant ,用来集中管理程序中用到的图片资源。

package gef.tutorial.step.constant;

public interface IImageConstant {

    public static final String EDITORTITLE = "icons/example.gif";

    public static final String NEWHELLOMODEL = "icons/newModel.gif";

    public static final String NEWCONNECTION = "icons/newConnection.gif";

    public static final String ARROWCONNECTION = "icons/arrowConnection.gif";
    

}
View Code

3、DiagramAction

准备一个Action,它的动作就是:点击的时候,打开一个文件对话框。

新建一个 DiagramAction,

package gef.tutorial.step.action;


import org.eclipse.jface.action.Action;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.ui.IWorkbenchWindow;

import gef.tutorial.step.app.Activator;
import gef.tutorial.step.constant.IImageConstant;

/**
 * DiagramAction
 * 
 * @author shirayner
 *
 */
public class DiagramAction extends Action {
    private final IWorkbenchWindow window;
    public final static String ID = "gef.tutorial.step.action.DiagramAction";

    /**
     * 一、在构造方法中设置基本属性
     * 
     * @param window
     */
    public DiagramAction(IWorkbenchWindow window) {
        this.window = window;

        //1.定义该Action的ID.  每一个Action需要一个唯一的ID号
        setId(ID);

        //2.设置该Action的文字。该文字也就是菜单上的文字。"@ALT+D"用来设置该Action的快捷键
        setText("&Diagram@ALT+D");

        //3.设置工具栏的提示文本
        setToolTipText("Draw the GEF diagram.");

        //4.设置该Action的图片。该方法使用 AbstractUIPlugin 抽象类的 imageDescriptorFromPlugin() 方法快捷地获取图像。
        //imageDescriptorFromPlugin()方法需要两个参数:项目ID、图片文件名。
        setImageDescriptor(Activator.imageDescriptorFromPlugin( Activator.PLUGIN_ID, IImageConstant.EDITORTITLE));

    }




    /**
     * 二、在Run方法中设置要执行的动作。
     * 单击菜单、工具栏图标按钮或者按键时会执行Action的run方法
     * 
     */
    @Override
    public void run() {
        String path = openFileDialog();
        if (path != null) {
            //弹出一个对话框
            MessageDialog.openInformation(window.getShell(), "温馨提示", "文件保存路径为:"+path);
        }
        
    }

    
    /** 打开一个文件对话框
     * 
     * @return
     *   String  文件路径
     */
    private String openFileDialog(){
        FileDialog dialog = new FileDialog(window.getShell(),SWT.OPEN);
        dialog.setText("文件保存到");
        dialog.setFilterExtensions(new String[] { ".diagram" });
        return dialog.open();
    }



}
View Code

猜你喜欢

转载自www.cnblogs.com/shirui/p/9154700.html
今日推荐