如何编写类似于现有 Find/Replace 对话框的 eclipse 插件
How to write an eclipse plugin similar to exisiting Find/Replace dialog
我想编写一个与现有 Find/Replace 对话框类似的 Eclipse 插件。 IE。如果我在焦点位于任意文本编辑器上时按下我选择的组合键,则会弹出我编写的对话框,我需要引用 IFindReplaceTarget
界面(或 IFindReplaceTargetExtension3
界面) .
这怎么可能?我需要扩展哪些扩展点?
我想要实现的顺序是
1) 按下组合键弹出对话框(我必须扩展某个我不知道的扩展点)
2) 也许然后我通过获取活动编辑器并将活动编辑器投射到此界面来获得 IFindReplaceTarget
界面。无论如何,我想要一个IFindReplaceTarget
。
3) 如果能够看到贡献 Find/Replace 对话框的插件的完整源代码,那也很棒。我能够打开对话框,将焦点放在它上面,然后按 Alt+Shift+F1 并访问 FindReplaceDialog
class 的源代码。但是怎么才能看到整个插件的源码呢?
使用 org.eclipse.ui.commands
扩展点定义命令。
使用 org.eclipse.ui.handlers
扩展点为您的命令定义处理程序。处理程序 class 可以打开您的对话框。
使用 org.eclipse.ui.bindings
扩展点为您的命令定义键绑定。
您可以获得当前部分的 IFindReplaceTarget
(如果有的话),使用类似:
IWorkbenchPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getPartService().getActivePart();
IFindReplaceTarget target = (IFindReplaceTarget)part.getAdapter(IFindReplaceTarget.class);
以下 plugin.xml 文件完成了工作
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension
point="org.eclipse.ui.commands">
<command
id="com.florian.regexfindandreplace.commands.FindAndReplaceCommand"
name="FindAndReplaceCommand">
<defaultHandler
class="com.florian.regexfindandreplace.handlers.FindAndReplaceHandler">
<parameter
name="com.florian.regexfindandreplace.parameter1"
value="com.florian.regexfindandreplace.parameter1">
</parameter>
</defaultHandler>
</command>
</extension>
<extension
point="org.eclipse.ui.bindings">
<key
commandId="com.florian.regexfindandreplace.commands.FindAndReplaceCommand"
contextId="org.eclipse.ui.textEditorScope"
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
sequence="M1+F5">
</key>
<scheme
name="Default"
description="Default shortcuts for Eclipse"
id="default.id" />
</extension>
</plugin>
在我的处理程序中,我必须像这样重写 execute、isEnabled 和 isHandled
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
IWorkbenchPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getPartService().getActivePart();
IFindReplaceTarget target = (IFindReplaceTarget)part.getAdapter(IFindReplaceTarget.class);
ExtendedFindReplaceDialog dialog = new ExtendedFindReplaceDialog(part.getSite().getShell(), target);
dialog.setBlockOnOpen(true);
dialog.open();
return null;
}
@Override
public boolean isEnabled() {
// TODO Auto-generated method stub
return true;
}
@Override
public boolean isHandled() {
// TODO Auto-generated method stub
return true;
}
我想编写一个与现有 Find/Replace 对话框类似的 Eclipse 插件。 IE。如果我在焦点位于任意文本编辑器上时按下我选择的组合键,则会弹出我编写的对话框,我需要引用 IFindReplaceTarget
界面(或 IFindReplaceTargetExtension3
界面) .
这怎么可能?我需要扩展哪些扩展点?
我想要实现的顺序是
1) 按下组合键弹出对话框(我必须扩展某个我不知道的扩展点)
2) 也许然后我通过获取活动编辑器并将活动编辑器投射到此界面来获得 IFindReplaceTarget
界面。无论如何,我想要一个IFindReplaceTarget
。
3) 如果能够看到贡献 Find/Replace 对话框的插件的完整源代码,那也很棒。我能够打开对话框,将焦点放在它上面,然后按 Alt+Shift+F1 并访问 FindReplaceDialog
class 的源代码。但是怎么才能看到整个插件的源码呢?
使用 org.eclipse.ui.commands
扩展点定义命令。
使用 org.eclipse.ui.handlers
扩展点为您的命令定义处理程序。处理程序 class 可以打开您的对话框。
使用 org.eclipse.ui.bindings
扩展点为您的命令定义键绑定。
您可以获得当前部分的 IFindReplaceTarget
(如果有的话),使用类似:
IWorkbenchPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getPartService().getActivePart();
IFindReplaceTarget target = (IFindReplaceTarget)part.getAdapter(IFindReplaceTarget.class);
以下 plugin.xml 文件完成了工作
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension
point="org.eclipse.ui.commands">
<command
id="com.florian.regexfindandreplace.commands.FindAndReplaceCommand"
name="FindAndReplaceCommand">
<defaultHandler
class="com.florian.regexfindandreplace.handlers.FindAndReplaceHandler">
<parameter
name="com.florian.regexfindandreplace.parameter1"
value="com.florian.regexfindandreplace.parameter1">
</parameter>
</defaultHandler>
</command>
</extension>
<extension
point="org.eclipse.ui.bindings">
<key
commandId="com.florian.regexfindandreplace.commands.FindAndReplaceCommand"
contextId="org.eclipse.ui.textEditorScope"
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
sequence="M1+F5">
</key>
<scheme
name="Default"
description="Default shortcuts for Eclipse"
id="default.id" />
</extension>
</plugin>
在我的处理程序中,我必须像这样重写 execute、isEnabled 和 isHandled
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
IWorkbenchPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getPartService().getActivePart();
IFindReplaceTarget target = (IFindReplaceTarget)part.getAdapter(IFindReplaceTarget.class);
ExtendedFindReplaceDialog dialog = new ExtendedFindReplaceDialog(part.getSite().getShell(), target);
dialog.setBlockOnOpen(true);
dialog.open();
return null;
}
@Override
public boolean isEnabled() {
// TODO Auto-generated method stub
return true;
}
@Override
public boolean isHandled() {
// TODO Auto-generated method stub
return true;
}