在自定义视图中使用FindReplaceAction

时间:2016-09-11 12:10:35

标签: java eclipse eclipse-plugin

在我的视图中,我有一个StyledText,我想打开默认的eclipse查找/替换对话框(在Ctlr + F的编辑器中出现的那个)。
因此,我想实例化并运行FindReplaceAction,但我的问题是此操作需要ResourceBundle作为参数,我不知道这是用于什么以及从哪里可以得到它...

我想知道这是否真的是实现此功能的方法,或者是否有办法在eclipse中全局注册我的视图(实现IFindReplaceTarget)以接收用于打开对话框的Ctrl + F快捷方式

1 个答案:

答案 0 :(得分:1)

您应该能够参与标准的查找/替换代码,方法是让您的视图响应主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不会将Generics用于此方法。

使用以下内容设置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