国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

解決RCP中CNF(navigator)配置后delete/copy/past快捷鍵失效

2019-11-11 06:06:48
字體:
來源:轉載
供稿:網友

這兩天在配置一個CNF導航視圖時候發現快捷鍵delete、past、copy等都失效了,折騰良久,搞清楚了;

1.快捷鍵要想能在菜單右邊顯示出來:

deleteAction.setActionDefinitionId(IWorkbenchCommandConstants.EDIT_DELETE);2.要想生效必須綁定handler:

@Override	public void fillActionBars(final IActionBars actionBars) {		if (textActionHandler == null) {			textActionHandler = new TextActionHandler(actionBars); // hook																	// handlers		}		textActionHandler.setCopyAction(copyAction);		textActionHandler.setPasteAction(pasteAction);		textActionHandler.setDeleteAction(deleteAction);		// renameAction.setTextActionHandler(textActionHandler);		updateActionBars();		textActionHandler.updateActionBars();	}
public void updateActionBars() {		actionBars.setGlobalActionHandler(ActionFactory.CUT.getId(),                textCutAction);		actionBars.setGlobalActionHandler(ActionFactory.COPY.getId(),                textCopyAction);actionBars.setGlobalActionHandler(ActionFactory.PASTE.getId(),                textPasteAction);		actionBars.setGlobalActionHandler(ActionFactory.SELECT_ALL.getId(),                textSelectAllAction);		actionBars.setGlobalActionHandler(ActionFactory.DELETE.getId(),                textDeleteAction);	}setGlobalActionHandler把id和action綁定到一塊;

這里你發現綁定的action并不是自己那個action,是texthandler中的action;

如果想強制生效可以直接把這個action換成我們那個action;

3.推薦的解決方法:

之所以不生效,是因為系統找不到action對應的commandid,我們可以綁定:

PRotected void makeActions() {		clipboard = new Clipboard(shell.getDisplay());		...		deleteAction.setActionDefinitionId(IWorkbenchCommandConstants.EDIT_DELETE);		initActionCommandMappingService();	}	/**	 * 快捷鍵綁定actionBars.setGlobalActionHandler();	 * 這里使用了textActionHandler.updateActionBars();所以綁定的是textActionHandler中text*Action,而不是這里的action;	 * 方法一:重新設置setGlobalActionHandler為這里的action;	 * 方法二:ActionCommandMappingService中添加這里的action映射WorkbenchCommandConstants.EDIT_*	 */	private void initActionCommandMappingService() {		final IActionCommandMappingService actionCommandMappingService = (IActionCommandMappingService) CommonUIPlugin.getDefault().getWorkbench()				.getActiveWorkbenchWindow().getService(IActionCommandMappingService.class);		final String idDelete = actionCommandMappingService.getCommandId(ActionFactory.DELETE.getId());		if (idDelete == null) {			actionCommandMappingService.map(ActionFactory.DELETE.getId(), IWorkbenchCommandConstants.EDIT_DELETE);		}		final String idCopy = actionCommandMappingService.getCommandId(ActionFactory.COPY.getId());		if (idCopy == null) {			actionCommandMappingService.map(ActionFactory.COPY.getId(), IWorkbenchCommandConstants.EDIT_COPY);		}		final String idPast = actionCommandMappingService.getCommandId(ActionFactory.PASTE.getId());		if (idPast == null) {			actionCommandMappingService.map(ActionFactory.PASTE.getId(), IWorkbenchCommandConstants.EDIT_PASTE);		}	}這樣問題就解決了


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 长葛市| 聂荣县| 西乌| 临高县| 拉孜县| 称多县| 东乌| 淮南市| 永平县| 崇义县| 广安市| 呼玛县| 北安市| 乐安县| 江北区| 鹤壁市| 红安县| 资中县| 新龙县| 公主岭市| 北票市| 四子王旗| 疏勒县| 大新县| 庆元县| 海兴县| 安宁市| 安国市| 保康县| 图木舒克市| 郴州市| 晴隆县| 都江堰市| 子洲县| 漾濞| 台山市| 潜江市| 凤山市| 什邡市| 安福县| 定襄县|