IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Eclipse插件(RCP)CNF 扩展(五)菜单及工具条定制 -> 正文阅读

[Java知识库]Eclipse插件(RCP)CNF 扩展(五)菜单及工具条定制

文章Common Navigator Framework 实践(四)文件过滤最后遗留了个问题,这一篇文章来解决。

目标

在这里插入图片描述
如上图所示,现在的导肮栏视图中有视图菜单和一些工具菜单,本文将讲述如何去掉这些菜单和工具菜单。

分析

这些视图菜单和工具菜单其实是视图菜单的扩展,是CNF框架自动默认构建的,有两种方法可以优化,一、使用CNF提供的配置选项进行配置;二、在导航视图实现类中修改视图菜单和工具菜单功能。

实现

一、CNF 实现

CNF导航视图扩展点org.eclipse.ui.navigator.viewer提供了options标签,用于配置默认导航视图菜单是否显示。其扩展点文档描述如下:

<extension
         point="org.eclipse.ui.navigator.viewer">
     <viewer
            popupMenuId="org.eclipse.ui.tests.navigator.TestView#PopupMenu"
            viewerId="org.eclipse.ui.tests.navigator.TestView">
         <options> 
            <!-- Hide the "Available Extensions" tab in the "Filters and Customization" 
                 dialog (available from the "Filters" action -->
            <property
                  name="org.eclipse.ui.navigator.hideAvailableExtensionsTab"
                  value="true"/>
            <!-- Hide the "Filters and Customization" dialog completely. This includes hiding the 
              filters and the available content extensions. -->
            <property
                  name="org.eclipse.ui.navigator.hideAvailableCustomizationsDialog"
                  value="true"/> 
            <!-- Hide the "Link with Editor" action from the toolbar of the viewer -->
            <property
                  name="org.eclipse.ui.navigator.hideLinkWithEditorAction"
                  value="true"/> 
            <!-- Hide the "Collapse All" action from the toolbar of the viewer -->
            <property
                  name="org.eclipse.ui.navigator.hideCollapseAllAction"
                  value="true"/>  
         </options>
      </viewer>
   </extension>

使用这种方式配置很简单,只要粘贴相关代码即可。配置后的plugin.xml信息为:

   <extension
         point="org.eclipse.ui.navigator.viewer">
      <viewer viewerId="com.xzbd.views.MainNavigator">
      	<!-- 省略 …… -->
        <options> 
            <!-- Hide the "Available Extensions" tab in the "Filters and Customization" 
                 dialog (available from the "Filters" action -->
            <property
                  name="org.eclipse.ui.navigator.hideAvailableExtensionsTab"
                  value="true"/>
            <!-- Hide the "Filters and Customization" dialog completely. This includes hiding the 
              filters and the available content extensions. -->
            <property
                  name="org.eclipse.ui.navigator.hideAvailableCustomizationsDialog"
                  value="true"/> 
            <!-- Hide the "Link with Editor" action from the toolbar of the viewer -->
            <property
                  name="org.eclipse.ui.navigator.hideLinkWithEditorAction"
                  value="true"/> 
            <!-- Hide the "Collapse All" action from the toolbar of the viewer -->
            <property
                  name="org.eclipse.ui.navigator.hideCollapseAllAction"
                  value="true"/>  
         </options>
        
      </viewer>

此时导航栏视图所有菜单都被隐藏了,如下图所示
在这里插入图片描述

二、自定义视图菜单

方法一只能控制CNF提供的视图菜单,无法扩展。因此方法二相较于方法一更加灵活。
扩展后的导航视图实现类

package com.xzbd.navigator;

import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.IActionBars;
import org.eclipse.ui.IViewSite;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.navigator.CommonNavigator;

import com.xzbd.actions.NavMenuAction01;
import com.xzbd.actions.NavMenuAction02;
import com.xzbd.actions.NavMenuAction03;

public class MainNavigator extends CommonNavigator {
	public static final String ID = "com.xzbd.views.MainNavigator";
	
	
	@Override
	public void createPartControl(Composite aParent) {
		super.createPartControl(aParent);
		addMenus();
	}

	@Override
	public void init(IViewSite site) throws PartInitException {
		super.init(site);
		
//		addMenus();
	}
	
	/**
	 * 添加菜单
	 */
	private void addMenus() {
		IActionBars actionBars = getViewSite().getActionBars();
		IMenuManager menuManager = actionBars.getMenuManager();
		IToolBarManager toolBarManager = actionBars.getToolBarManager();
		
		// 添加在工具条
		toolBarManager.add(new NavMenuAction01());
		toolBarManager.add(new NavMenuAction02());
		
		// 添加在菜单中
		menuManager.add(new NavMenuAction01());
		menuManager.add(new NavMenuAction02());
		menuManager.add(new NavMenuAction03());
		
	}
}

添加菜单可以重写createPartControlinit,建议在createPartControl中重写。重写后的类中使用到的NavMenuAction01NavMenuAction02NavMenuAction03,代码比较简单,详见项目epxNavMenuAction01示例如下:

package com.xzbd.actions;

import org.eclipse.jface.action.Action;

import com.xzbd.advisor.AppActivator;
import com.xzbd.utils.AppPrinter;

public class NavMenuAction01 extends Action{
	public static final String ID = NavMenuAction01.class.getSimpleName();
	public static final String TEXT = "刷粉";
	
	
	public NavMenuAction01() {
		setText(TEXT);
		setToolTipText(TEXT);
		setImageDescriptor(AppActivator.getImageDescriptor("icons/20220417/zhangfenrenwu.png"));
	}
	
	@Override
	public void run() {
		AppPrinter.println("我是导航菜单,我的任务是刷粉……");
	}
	
}


效果展示

在这里插入图片描述
注意,如果导航视图比较窄,展示效果将如下图所示
在这里插入图片描述

总结

文章目的是扩展CNF导航视图的工具条及菜单定制,使用了两种方法。第一种是CNF提供的方法,采用xml配置方式;第二种使用扩展视图类的实现。推荐使用第二种方式,这种方式是视图菜单及工具条添加菜单的原生方法,它能实现方法一的效果,并能灵活扩充。

系列文章

CNF系列汇总
Common Navigator Framework 实践(一)自定义导航
Common Navigator Framework 实践(二)菜单扩展
Common Navigator Framework 实践(三)文件拖拽控制
Common Navigator Framework 实践(四)文件过滤
Common Navigator Framework 实践(五)菜单及工具条定制

资料

项目地址

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-04-18 17:27:33  更:2022-04-18 17:30:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:43:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码