在我看来,我有一个StyledText
,要在其上打开默认的Eclipse find / replace-dialog(出现在Ctlr + F的编辑器中的那个)。
因此,我想实例化并运行FindReplaceAction
,但是我的问题是此操作需要ResourceBundle
作为参数,而且我不知道它的用途以及从何处获取它。
我想知道这是否真的是实现此功能的方式,还是是否有办法在eclipse中全局注册我的视图(实现IFindReplaceTarget
)以接收Ctrl + F快捷方式来打开对话框
最佳答案
通过使视图在主IFindReplaceTarget
类的getAdapter
方法中响应对ViewPart
的请求并设置查找和替换操作,您应该能够参与标准的查找/替换代码。
适配器类似于:
@SuppressWarnings("unchecked")
@Override
public <T> T getAdapter(Class<T> required) {
if (IFindReplaceTarget.class.equals(required)) {
return (T) ... your find replace target class
}
... other adapters
}
注意:较早版本的Eclipse对此方法不使用泛型。
设置
FindReplaceAction
类似于:ResourceBundle bundle = ResourceBundle.getBundle("my.package.Messages");
FindReplaceAction findReplaceAction = new FindReplaceAction(bundle, "find_replace_action_", this);
findReplaceAction.setActionDefinitionId(IWorkbenchCommandConstants.EDIT_FIND_AND_REPLACE);
IActionBars actionBars = getViewSite().getActionBars();
actionBars.setGlobalActionHandler(ActionFactory.FIND.getId(), findReplaceAction);
资源束需要一个
Messages.properties
文件,其内容如下:find_replace_action_label=&Find/Replace...
find_replace_action_tooltip=Find/Replace
find_replace_action_image=
find_replace_action_description=Find/Replace