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

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

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

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

這兩天在配置一個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);		}	}這樣問題就解決了


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永福县| 清镇市| 鱼台县| 高雄市| 凯里市| 宾阳县| 壶关县| 长治县| 高阳县| 儋州市| 孝义市| 澄江县| 乳山市| 遵化市| 武夷山市| 衡水市| 玉林市| 定兴县| 宜丰县| 织金县| 西盟| 广宗县| 巴马| 彭水| 巴楚县| 信宜市| 皮山县| 精河县| 孝感市| 阳信县| 克山县| 庆阳市| 天峨县| 淳安县| 游戏| 鄢陵县| 新营市| 依安县| 涞水县| 宜君县| 晋宁县|