2014-02-18 5 views
0

나는 이클립스 플러그인 메인 메뉴 버튼을 추가하고, 버튼을 누를 때이 코드는 작업을 처리하기 위해 생성되었습니다 나는 실행 클래스의 print 문을 추가추가 메뉴 버튼 이클립스 플러그인

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 

} 

} 

내가 버튼을 눌렀을 때 어떤 일이 일어날지를 알기 위해 테스트 할 수 있습니다. 그러나 이클립스 애플리케이션으로이 플러그인을 실행하고 버튼을 누르면 버튼을 다시 클릭 할 때까지 버튼이 계속 눌려져 아무 것도 나타나지 않는다. 단추를 누를 때 어떻게하면 어떤 이벤트를 실행할 수 있습니까? 그리고 나서 프로세스가 완료되면 버튼을 다시 끄지 않아도됩니다.

편집 : 여기

내 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

'IHandler'를 처음부터 구현하지 않고'org.eclipse.core.commands.AbstractHandler'를 확장하면'execute'을 제외한 모든 것을 처리합니다. 'plugin.xml'에 메뉴, 커맨드, 핸들러는 어떻게 정의되어 있습니까? –

+0

AbstractHandler를 확장했으며 실행했지만 여전히 아무것도 변경하지 않았습니다. 메뉴, 명령 및 처리기의 명령 ID와 명령의 기본 처리기는 모두 같으며 처리기의 클래스는 위에 표시된 클래스입니다. –

+0

정말 우리가 plugin.xml을 볼 필요가 있다고 생각합니다 –

답변

0

입니다 menuContribution 그냥 일반 푸시 버튼처럼 작동하지 않는 최상위 메뉴 항목을 정의하고있다. 메뉴의 드롭 다운 목록에 표시 할 메뉴를 정의해야합니다. 다음과 같이 :

관련 문제