定制Eclipse视图Tab的右键系统菜单
2009-12-24 15:08
316 查看
定制Eclipse视图Tab的右键系统菜单(或者屏蔽Tab上的系统右键菜单)介绍:
1.在ApplicationWorkbenchWindowAdvisor类的preWindowOpen()方法中为 IWorkbenchWindowConfigurer添加一个自定义WorkbenchPresentationFactory工厂类;
2.在自定义WorkbenchPresentationFactory工厂类中实现public StackPresentation createViewPresentation(Composite parent,IStackPresentationSite site)方法:代码如下:
public StackPresentation createViewPresentation(Composite parent,
IStackPresentationSite site) {
/**XXXTabFolder继承于AbstractTabFolder.*/
XXXTabFolder folder = new XXXTabFolder(parent,
viewTabPosition | SWT.BORDER);
PresentablePartFolder partFolder = new PresentablePartFolder(folder);
folder.setUnselectedCloseVisible(false);
folder.setUnselectedImageVisible(true);
TabbedStackPresentation result = new TabbedStackPresentation(site,
partFolder, new XXXStandardSystemMenu(site));
/** XXXPropertyListener继承于AbstractPropertyListener. */
XXXPropertyListener themeListener = new EduPropertyListener(folder,
result.getTheme());
result.getTheme().addListener(themeListener);
/** XXXSimpleTabListener继承于AbstractBooleanListener. */
new XXXSimpleTabListener(result.getApiPreferences(),
IWorkbenchPreferenceConstants.SHOW_TRADITIONAL_STYLE_TABS,
folder);
return result;
}
其中XXXStandardSystemMenu(site)就是定义我们自己的系统菜单(现在我是 屏蔽所有右键菜单)
public class XXXStandardSystemMenu implements ISystemMenu {
MenuManager menuManager = new MenuManager();
/**
* Create the standard view menu
*
* @param site
* the site to associate the view with
*/
public XXXStandardSystemMenu(IStackPresentationSite site) {
site.addSystemActions(menuManager);
}
public String getMoveMenuText() {
return WorkbenchMessages.ViewPane_moveView;
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.ui.internal.presentations.util.ISystemMenu#show(org.eclipse
* .swt.graphics.Point, org.eclipse.ui.presentations.IPresentablePart)
*/
public void show(Control parent, Point displayCoordinates,
IPresentablePart currentSelection) {
Menu aMenu = menuManager.createContextMenu(parent);
menuManager.removeAll();
aMenu.setLocation(displayCoordinates.x, displayCoordinates.y);
aMenu.setVisible(false);
}
/**
* Dispose resources associated with this menu
*/
public void dispose() {
menuManager.dispose();
menuManager.removeAll();
}
顺便说一句屏蔽编辑器右键也是一样的原理实现。
1.在ApplicationWorkbenchWindowAdvisor类的preWindowOpen()方法中为 IWorkbenchWindowConfigurer添加一个自定义WorkbenchPresentationFactory工厂类;
2.在自定义WorkbenchPresentationFactory工厂类中实现public StackPresentation createViewPresentation(Composite parent,IStackPresentationSite site)方法:代码如下:
public StackPresentation createViewPresentation(Composite parent,
IStackPresentationSite site) {
/**XXXTabFolder继承于AbstractTabFolder.*/
XXXTabFolder folder = new XXXTabFolder(parent,
viewTabPosition | SWT.BORDER);
PresentablePartFolder partFolder = new PresentablePartFolder(folder);
folder.setUnselectedCloseVisible(false);
folder.setUnselectedImageVisible(true);
TabbedStackPresentation result = new TabbedStackPresentation(site,
partFolder, new XXXStandardSystemMenu(site));
/** XXXPropertyListener继承于AbstractPropertyListener. */
XXXPropertyListener themeListener = new EduPropertyListener(folder,
result.getTheme());
result.getTheme().addListener(themeListener);
/** XXXSimpleTabListener继承于AbstractBooleanListener. */
new XXXSimpleTabListener(result.getApiPreferences(),
IWorkbenchPreferenceConstants.SHOW_TRADITIONAL_STYLE_TABS,
folder);
return result;
}
其中XXXStandardSystemMenu(site)就是定义我们自己的系统菜单(现在我是 屏蔽所有右键菜单)
public class XXXStandardSystemMenu implements ISystemMenu {
MenuManager menuManager = new MenuManager();
/**
* Create the standard view menu
*
* @param site
* the site to associate the view with
*/
public XXXStandardSystemMenu(IStackPresentationSite site) {
site.addSystemActions(menuManager);
}
public String getMoveMenuText() {
return WorkbenchMessages.ViewPane_moveView;
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.ui.internal.presentations.util.ISystemMenu#show(org.eclipse
* .swt.graphics.Point, org.eclipse.ui.presentations.IPresentablePart)
*/
public void show(Control parent, Point displayCoordinates,
IPresentablePart currentSelection) {
Menu aMenu = menuManager.createContextMenu(parent);
menuManager.removeAll();
aMenu.setLocation(displayCoordinates.x, displayCoordinates.y);
aMenu.setVisible(false);
}
/**
* Dispose resources associated with this menu
*/
public void dispose() {
menuManager.dispose();
menuManager.removeAll();
}
顺便说一句屏蔽编辑器右键也是一样的原理实现。
相关文章推荐
- 为何定制的系统,长按触摸屏没有右键菜单?
- Eclipse不可不知的用法之三:定制视图与New菜单项
- 设置vim在系统右键菜单,并在新的tab打开
- 给Eclipse的工程导航视图添加自定义右键菜单
- Eclipse定制右键创建文件快捷菜单
- 为jQuery-easyui的tab组件添加右键菜单功能
- 这两天XP系统的右键打开菜单明显变慢,解决方法附内
- C# WinForm窗口最小化到系统托盘 右键操作菜单
- 增加系统右键菜单
- 右键弹出菜单+最小化按钮到系统托盘+提示信息
- EclipseRCP开发之屏蔽视图上的右键菜单
- 为EasyUI的Tab标签添加右键菜单的方法
- jQuery easyUI 添加tab并为tab添加右键菜单---每天多学一点
- 添加Dropbox服务到系统右键菜单
- JQuery EasyUI 最简单的左右布局实现及tab的右键菜单实现
- rcp修改右键菜单(eclipse3.7.2)
- 实现文件右键“打开方式”菜单功能(查看系统这种功能对比实现)
- 使用Javascript封装实现屏蔽鼠标右键系统键菜单,并绑定自定义的事件
- 系统重装之后,装入的软件在注册表中没有了,重新加载到右键菜单,sublime text2