今天要用到点右键的时候弹出一个向导窗口(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 了!
没有技术含量,但希望能为和我有一样问题的人节省点时间