2010-12-07 70 views
0

我有两类插件,它们负责从弹出菜单和菜单项中执行相同的插件。但由于其中一个run()方法,我不能使用执行事件来创建一个shell。 如何解决这个问题如何在不使用执行事件的情况下创建特定的shell

public class ConvertConstantsToEnumHandler extends AbstractHandler { 


//execution of the plugin 
public Object execute(ExecutionEvent event) throws ExecutionException { 


    ISelection currentSelection = HandlerUtil.getCurrentSelectionChecked(event); 

    RefactoringMenuAction menuitem= new RefactoringMenuAction(); 
    menuitem.setEvent(event); 
    List selectedFields = getSelectedFields(currentSelection); 


    Shell shell = HandlerUtil.getActiveShellChecked(event); 

    //get the selected Fields to do the convertion 
    IField[] fields = (IField[]) selectedFields.toArray(new IField[] {}); 
    try { 
    ConvertConstantsToEnumWizard.startConvertConstantsToEnumRefactoring(fields, shell); 
    } catch (JavaModelException e) { 
    e.printStackTrace(); 
    } 
    return null; 
} 


public class RefactoringMenuAction implements IWorkbenchWindowActionDelegate { 
public IWorkbenchWindow window; 

public RefactoringMenuAction() { 
} 

public void run(IAction action) { 
    RefactoringPlugin rp = new RefactoringPlugin(); 
try { 
    rp.start(rp.getTheBundle()); // get the current context of the eclipse 
    } catch (CoreException e) { 
    e.printStackTrace(); 
    } catch (Exception e) { 
    e.printStackTrace(); 
    } 

// here I need to find a way to access or create a shell to compile same as the above class 
} 
+1

您可以重新格式化您的问题,以便代码片段显示为格式化的代码?我认为CTRL + K可以为你做到这一点。 – 2010-12-09 17:40:26

回答

0

如果您正试图执行同一段代码,你为什么要通过行动在一个地方,并命令在另一个地方干什么呢?为什么你不能简单地使用一个命令并在两个地方添加命令贡献?

相关问题