2016-09-11 51 views
0

在我看来,我有一个StyledText我想要打开默认的eclipse查找/替换对话框(出现在Ctlr + F上的编辑器中)。
因此,我要实例和运行FindReplaceAction但我的问题是,这个动作需要ResourceBundle作为参数,我不知道这是用于和在那里我可以从...在自定义视图中使用FindReplaceAction

得到它我不知道无论这是否是实现此功能的方式,或者是否有办法在eclipse中全局注册我的视图(即实现IFindReplaceTarget)以接收Ctrl + F快捷键以打开对话框

回答

1

您应该能够参与标准查找/替换代码,让您的视图响应主的getAdapter方法中IFindReplaceTarget的请求类并设置查找和替换操作。

适配器是一样的东西:

@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 
+0

存在不仅是'公共对象getAdapter(类适配器)'方法从'WorkbenchPart'类中,并用代码覆盖它不起作用。当我在我的视图中调用Ctrl + F时,它甚至不会调用此方法... – Raven

+0

对不起,看起来我错过了设置动作的需要。在答案中增加了对此的描述。 'getAdapter'被转换为在Eclipse中使用泛型Neon早期版本有你找到的声明。 –

+0

感谢您的编辑!我会尽快进行测试。这是否意味着这段代码不适用于Eclipse Neonas,它现在使用泛型类型参数? – Raven

相关问题