2015-01-27 1 views
0

내 Java 클래스 및 키 바인딩에 정의 된 action이 plugins.xml 파일에서 바인딩되어 있습니다. 처음 응용 프로그램을 시작할 때 툴팁에서 툴바의 키 바인딩을 봅니다.하지만 툴팁을 setToolTip (String toolTip)으로 변경하면 버튼 바인딩이 툴바 액션 버튼에서 사라지지만 키 바인딩은 여전히 ​​작동합니다. 방법은 내가 다시 표시 할 방법이나 getAccelerator() 메소드는이이 플러그인에 정의되어 어떻게이 액션 클래스setToolTip() 메소드로 변경하면 액션에 대한 키 바인딩 툴팁이 사라집니다.

public class SampleAction extends DiagramAction{ 


public static final String ID = "sampleFunction"; 
private void initData() { 
     setId(ID); 
     setText(Messages.cmd_AddBranchAction_text); 
     setToolTipText(Messages.cmd_AddBranchAction_desc); 
    } 
    @Override 
     public void refresh() { 
     super.refresh(); 
     //checks if button in toolbar is enabled 
      boolean isEnabled = isEnabled(); 
     if(isEnabled) { 
      setToolTipText("Do something"); 
     } else { 
      setToolTipText("Node not selected, select a node"); 
     } 
    } 
    } 

내 코드 0 을 반환하기 때문에 나는 내 행동에 대한 특정 키 바인딩을받을 수 있나요. 이 얻을 것이다보기 또는 편집기에서

TriggerSequence activeBinding = bindingService.getBestActiveBindingFor("command id"); 
if (activeBinding != null && !activeBinding.isEmpty()) { 
    String acceleratorText = activeBinding.format(); 
} 

: XML

<key 
     commandId="com.sample.sampleFunction" 
     contextId="org.eclipse.ui.context.window" 
     schemeId="org.eclipse.ui.defaultAcceleratorConfiguration" 
     sequence="M1+A" /> 

답변

1

당신은 명령에 대한 키 바인딩에 대한 텍스트를 얻기 위해 IBindingService을 사용할 수 있습니다 바인딩 서비스 :

IBindingService service = (IBindingService)getSite().getService(IBindingService.class); 

다른 곳에서 당신이

IBindingService bindingSvc = (IBindingService)PlatformUI.getWorkbench().getAdapter(IBindingService.class); 
+0

사용할 수 있습니다 이것은 실제로 작동합니다. 그러나 행동의 원인은 무엇입니까? 그건 이상하게 보입니다. 나는 틀린 일을 했는가, 아니면 이클립스의 버그인가? –

+0

키 바인딩을 보여주는 도구 설명은 기본 도구 설명 일뿐입니다. 특정 도구 설명을 설정하면 해당 기본값을 바꿉니다. –

+0

그래, 그게 내가 알아 낸거야. 그러나 기본 툴팁 동작은 이상합니다. 원하는 툴팁 및 추가 된 키로 동작이 시작되기 때문입니다. 액셀러레이터 도구 설명이 이미 추가되었는지 알고 싶습니까? getToolTip() 메서드는 액셀러레이터 바인딩없이 툴팁을 제공하기 때문에. –

관련 문제