今天要用到点右键的时候弹出一个向导窗口(WizardDialog),向导窗口的构造函数里有需要传个Shell,而在action里我不知道怎么得到Shell,所以小小研究一下.
先把我的扩展点贴出来
<extension point="org.eclipse.ui.popupMenus">
<objectContribution
id="com.xyz.C3"
objectClass="org.eclipse.core.resources.IFile"
nameFilter="struts-config-*">
<action
id="com.xyz.runXYZ"
label="properties tool"
class="chinese2pingyin.actions.TransformAction">
</action>
</objectContribution>
</extension>
所以我的TransformAction需要实现org.eclipse.ui.IObjectActionDelegate接口,所以需要实现setActivePart(IAction action, IWorkbenchPart targetPart)方法
这里我在TransformAction定义一个成员变量
private IWorkbenchPart fWorkbenchPart= null;
在setActivePart方法里
public void setActivePart(IAction action, IWorkbenchPart targetPart) {
fWorkbenchPart = targetPart;
}
这时候就可以在run方法里
final IWorkbenchWindow window= fWorkbenchPart.getSite().getWorkbenchWindow();
Shell shell = window.getShell();
这样就得到Shell 了!
没有技术含量,但希望能为和我有一样问题的人节省点时间