首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

20.4  给视图加下拉菜单和按钮

本例将给视图加入下拉菜单和按钮,如图20.4所示。同时再为列表添加一个右键菜单,这样读者可以用来和视图的下拉菜单进行比较阅读。

图20.4  给视图加下拉菜单和按钮

20.4.1  创建ActionGroup类

加入菜单和按钮的方法与SWT/JFace组件的一样。先创建一个ActionGroup代码如下:

public class MyActionGroup extends ActionGroup {

         // 加入按钮

         public void fillActionBars(IActionBars actionBars) {

                   if (actionBars == null)        return;

                   IToolBarManager toolBar = actionBars.getToolBarManager();

                   toolBar.add(new Action1());

                   toolBar.add(new Action2());

         }

         // 加入下拉菜单、右键弹出菜单

         public void fillContextMenu(IMenuManager menu) {

                   if (menu == null)       return;

                   menu.add(new Action1());

                   menu.add(new Action2());

         }

         private class Action1 extends Action {

                   public Action1() {

                            ImageDescriptor imageDesc = WorkbenchImages.getImageDescriptor(IWorkbenc
hGraphicConstants.IMG_ETOOL_HOME_NAV);

                            setHoverImageDescriptor(imageDesc);

                            setText("Action1");

                   }

                   public void run() {}

         }

         private class Action2 extends Action {

                   public Action2() {

                            ImageDescriptor imageDesc = WorkbenchImages.getImageDescriptor(IWorkbenc
hGraphicConstants.IMG_ETOOL_IMPORT_WIZ);

                            setHoverImageDescriptor(imageDesc);

                            setText("Action2");

                   }

                   public void run() {}

         }

}

程序说明:

  ● 本程序中含有两个Action类:Action1、Action2,和以往的Action不同之处在于它的图像描述符是直接从Eclipse环境中取得。既然插件在Eclipse环境内运行,那么Eclipse环境本身的图标就可以直接拿来使用。不过Eclipse会给出一个警告:“建议不要访问:由于对必需的库….jar具有一定的限制,因此不能访问类型WorkbenchImages”,这是因为该类在internal包中,也就是说它仅限于内部使用。

  ● fillContextMenu方法比起以前单纯的SWT编程少了几句。在20.4.2小节,可以看到它移到View1类中去了,主要原因是为了此方法兼顾添加视图的下拉菜单。

20.4.2  修改View1类

在View1中增加了3种方法,分别用来加入视图的导航栏按钮、下拉菜单,以及加入列表List的右键菜单。代码如下:

public class View1 extends ViewPart {

         private List list; // 将列表写成类的实例变量,以扩大它的可访问范围

         public void createPartControl(Composite parent) {

                   ……

                   // 加入导航栏按钮、下拉菜单、右键菜单

                   MyActionGroup actionGroup = new MyActionGroup();

                   fillViewAction(actionGroup);// 加入视图的导航栏按钮

                   fillViewMenu(actionGroup);// 加入视图的下拉菜单

                   fillListMenu(actionGroup);// 加入视图的下拉菜单

         }

         // 加入视图的导航栏按钮

         private void fillViewAction(MyActionGroup actionGroup) {

                   IActionBars bars = getViewSite().getActionBars();

                   actionGroup.fillActionBars(bars);

         }

         // 加入视图的下拉菜单

         private void fillViewMenu(MyActionGroup actionGroup) {

                   IMenuManager manager = getViewSite().getActionBars().getMenuManager();

                   actionGroup.fillContextMenu(manager);

         }

         // 加入列表List的右键菜单

         private void fillListMenu(MyActionGroup actionGroup) {

                   MenuManager manger = new MenuManager();

                   Menu menu = manger.createContextMenu(list);

                   list.setMenu(menu);

                   actionGroup.fillContextMenu(manger);

         }

         public void setFocus() {}

}

程序说明:视图加按钮、菜单的方式和以前SWT的方式是一样的。只不过以前自己生成MenuManager等对象,而现在只需使用插件平台提供的MenuManager对象。

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论