插件开发――菜单和工具栏

前面讲了菜单和工具栏的基本添加方法,可以创建基本的菜单和工具栏,本节中对菜单和工具栏进行一下简要补充。

  • 位置设定

如果添加另一个菜单,怎样控制其显示位置呢?

如果是在同一个插件中添加菜单,可以通过添加的命令顺序来进行排序,如果在多个插件中定义不同的菜单,而这些插件的启动顺序是不定的,如何控制菜单的位置?

在扩展点org.eclipse.ui.menus中新建menuContribution时,可以设定其locationURI来控制其显示位置。

在前面的项目中,创建了一个命令"测试",在菜单"文件"和工具栏上显示。

我们再创建两个命令"Before测试"和"After测试":

选择创建的"文件"菜单,设定其ID;

选择"文件"菜单下的"test"命令,设定其ID。

这两个ID可以作为后续菜单的基准,如下图所示:

创建一个新的menuContribution,设定其locationURI为:menu: plugin.demo.menu.file?after=test。

此locationURI的意思是将此menuContribution放到"文件"菜单上,位置在"test"之后,"plugin.demo.menu.file"是前面设定的"文件"菜单的ID,"test"就是前面菜单中设定的"test"的ID。

在menuContribution下新建command,设定为前面创建的"After测试"。

运行一下程序,看是不是显示出"After测试"菜单。

同样的方式,可以创建一个menuContribution,设定其locationURI为:menu: plugin.demo.menu.file?before=test。

添加"Before测试"命令到此menuContribution,"Before测试"将显示在"测试"之前。

由于"Before测试"和"After测试"还没有创建对应的实现handler,所示显示为禁用状态。

工具栏的位置设定和菜单类似,在此不再重复说明。

  • 下拉工具项

要实现下拉工具项,修改工具项的样式为:pulldown,设定其ID,以前面创建的工具栏条目为例,如下图所示:

创建下拉工具项的条目,新建一个menuContribution,设定其locationURI为:menu:toolbar.test (个人认为这个比较变态,分明是一个工具栏,确非要设定为menu,估计其实现是一个菜单)。

添加下拉工具项的条目命令(就使用前面创建的"Before测试"和"After测试"),如下图所示:

运行一下程序,看一下下拉工具项是否显示。

  • 控件工具项

很多时候默认的工具项样式不能满足我们的要求,例如我们想要一个组合框的工具项,可以在其中输入文字进行查询。

和前面创建工具项一样,所不同的是前面是创建"command",而这里是创建"control",创建的工具项

点击控件工具项的"class"标签,创建对应的控件工具项类。

在生成类的createControl()方法,创建自定义的工具项控件,如下面的代码,创建一个组合框,默认的组合框根据其内容计算其宽度,为了固定其宽度,所以重写computeSize()方法,返回固定的宽度100。

@Override

protected Control createControl(Composite parent) {

    Combo cb = new Combo(parent, SWT.NONE){

        @Override

        public Point computeSize(int wHint, int hHint, boolean changed) {

            Point point = super.computeSize(wHint, hHint, changed);

            return new Point(100, point.y);

        }

        @Override

        protected void checkSubclass() {}

    };

    for (int i = 0; i < 10; ++i)

        cb.add("测试" + i);

    return cb;

}

运行一下程序,看一下自定义的控件工具项。

posted on 2010-11-25 20:09  Benjac  阅读(627)  评论(1)    收藏  举报

导航