2010-02-18 5 views
4

파일 확장명에 따라 활성화하려는 동작 클래스가 있습니다.
나는 액션 클래스의 selectionChanged()에이 로직을 작성했다.IActionDelegate의 selectionChanged()가 호출되지 않습니다.

그러나 이클립스를 시작하고 컨텍스트 메뉴의 파일을 클릭하면이 메서드가 호출되지 않습니다.
그리고 어떤 작업을 클릭하면 파일을 클릭 한 후 selectionChanged() 메서드가 호출됩니다.

조치를 클릭하기 전에 조치를 사용 불가능하게하려면 이클립스에서 파일 클릭시 항상 selectionChanged() 메소드를 호출하도록하려면 어떻게해야합니까?

답변

1

현재 선택된 요소의 유형에 따라 많은 동작이 활성화/비활성화되어 있습니다.
은 요소의 "복사"조치를 복사하는 것은 아닙니다 예를 들어 참고 항목 : org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart가 자신의 상황에 맞는 메뉴와 관련된 작업을 관리하는 방법을 확인할 수 있다는 것을 의미

http://web.archive.org/web/20120503153234/http://img522.i_mageshack.us/img522/448/eclipseinactivecommand.png

합니다.

복사, 잘라 내기 및 붙여 넣기 작업을 관리하는 CCPActionGroup을 포함하여 PackageExplorerActionGroup 클래스를 사용하여 menuAboutToShow() 메서드에서 시작하십시오.
그 마지막 클래스는 그 중에서도 CopyToClipboardAction :
의 액션 등록을 나타내며 selectionChanged method을 구현합니다.

public void selectionChanged(IStructuredSelection selection) { 
try { 
    List JavaDoc elements= selection.toList(); 
    IResource[] resources= ReorgUtils.getResources(elements); 
    IJavaElement[] javaElements= ReorgUtils.getJavaElements(elements); 
    if (elements.size() != resources.length + javaElements.length) 
    setEnabled(false); 
     else 
    setEnabled(canEnable(resources, javaElements)); 
    } catch (JavaModelException e) { 
    //no ui here - this happens on selection changes 
    // http://bugs.eclipse.org/bugs/show_bug.cgi?id=19253 
    if (JavaModelUtil.isExceptionToBeLogged(e)) 
    JavaPlugin.log(e); 
    setEnabled(false); 
    } 
} 
+0

그러나 문제는 selectionChanged가 동작이 수행 된 후에 만 ​​호출된다는 것입니다. 플러그인이로드 될 때 액션을로드하는 방법이 있습니까? 필자의 경우 IActionDelegate가로드 된 작업을 클릭 한 후에 만 ​​작업을 활성화/비활성화 할 수 있습니다. – reek

+0

@reek : 확실하지 않음; 초기 선택은 선택한 요소의 특성에 기반하므로 선택 항목이 변경 될 때마다 설정하는 것이 훨씬 낫습니다. – VonC

0

Eclipse의 게으른 플러그인로드 (나처럼)가 "고통 스럽다"것 같습니다. Eclipse Plugin-book 또는 manual for popups (사용중인 것으로 가정)을 확인할 수 있습니다. 항목을 활성화하는 데 필요한 선언적 메커니즘을 사용해야합니다. 귀하의 경우에는 nameFilter을 추가하는 것만 큼 간단해야합니다. 그렇게하면 Eclipse는 실제로 실행해야 할 때까지 (메뉴 항목과 플러그인 실행을 분리) 플러그인을로드하는 것을 피할 수 있습니다.

관련 문제