在我看来,我有一个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

09-30 23:41