2014-02-18 51 views
0

我添加了一個主菜單按鈕,一個Eclipse插件,並生成該代碼來處理操作時按下按鈕:添加菜單按鈕Eclipse插件

package de.vogella.plugin.experiment; 

import org.eclipse.core.commands.ExecutionEvent; 
import org.eclipse.core.commands.ExecutionException; 
import org.eclipse.core.commands.IHandler; 
import org.eclipse.core.commands.IHandlerListener; 
import org.eclipse.jface.dialogs.MessageDialog; 
import org.eclipse.swt.widgets.Shell; 
import org.eclipse.ui.handlers.HandlerUtil; 


public class SomethingHandler implements IHandler { 
@Override 
public void addHandlerListener(IHandlerListener handlerListener) { 
    // TODO Auto-generated method stub 

} 

@Override 
public void dispose() { 
    // TODO Auto-generated method stub 

} 

@Override 
public Object execute(ExecutionEvent event) throws ExecutionException { 
    System.out.println("Hello"); 
    // TODO Auto-generated method stub 
    return null; 
} 

@Override 
public boolean isEnabled() { 
    // TODO Auto-generated method stub 
    return false; 
} 

@Override 
public boolean isHandled() { 
    // TODO Auto-generated method stub 
    return false; 
} 

@Override 
public void removeHandlerListener(IHandlerListener handlerListener) { 
    // TODO Auto-generated method stub 

} 

} 

我加入了打印語句的執行類以測試我按下按鈕時是否會發生任何事情。但是,當我將此插件作爲eclipse應用程序運行時,並按下按鈕,按鈕將保持按下狀態,直到我再次單擊它爲止,並且沒有其他事情發生。按下按鈕時如何執行某些事件?然後讓程序完成,所以我不必再次按下按鈕關閉它?

編輯:

這裏是我的plugin.xml

<?xml version="1.0" encoding="UTF-8"?> 
<?eclipse version="3.0"?> 
<plugin 
> 
    <extension 
     point="org.eclipse.ui.commands"> 
     <command 
      defaultHandler="de.vogella.plugin.experiment.SomethingHandler" 
      id="de.vogella.plugin.experiment.SomethingHandler" 
      name="name"> 
     </command> 
    </extension> 
    <extension 
     point="org.eclipse.ui.handlers"> 
     <handler 
      class="SomethingHandler" 
      commandId="de.vogella.plugin.experiment.SomethingHandler"> 
     </handler> 
    </extension> 
    <extension 
     point="org.eclipse.ui.menus"> 
     <menuContribution 
      allPopups="false" 
      locationURI="menu:org.eclipse.ui.main.menu"> 
     <command 
       commandId="de.vogella.plugin.experiment.SomethingHandler" 
       label="DoSomething" 
       style="push"> 
     </command> 
     </menuContribution> 
    </extension> 
</plugin> 
+0

擴展'org.eclipse.core.commands.AbstractHandler'而不是從頭實現'IHandler',它將處理除'execute'以外的所有內容。 「plugin.xml」中定義的菜單,命令和處理程序如何? –

+0

我擴展了AbstractHandler,它運行了但它仍然沒有改變任何東西。菜單,命令和處理程序的命令ID以及命令的默認處理程序都是相同的,處理程序的類是我在上面顯示的類。 –

+0

我認爲我們確實需要看到plugin.xml –

回答

0

menuContribution你只是定義它並不像普通按鈕的工作頂級菜單項。您需要定義一個菜單以顯示在菜單的下拉列表中。例如:

<extension 
    point="org.eclipse.ui.menus"> 
    <menuContribution 
     allPopups="false" 
     locationURI="menu:org.eclipse.ui.main.menu"> 
    <menu 
      id="menu.id" 
      label="Top Level Menu"> 
    <command 
      commandId="de.vogella.plugin.experiment.SomethingHandler" 
      label="DoSomething" 
      style="push"> 
    </command> 
    </menu>   
    </menuContribution> 
</extension>