2017-04-25 7 views
0

Eclipse Luna 용 플러그인을 개발 중이며 일부 리스너를 추가하고 싶었고이를 수행하는 방법을 알고있다. 내 질문은 어디에서해야할까요?이클립스 플러그인이 시작되는 즉시 메서드 호출

플러그인을 시작하자 마자 추가해야합니다. 그래서 플러그인이로드 될 때 호출되는 메서드가 있어야한다고 생각하고 있습니다.이 메서드는 워드 프로세서에서 찾을 수 없습니다. 지금까지 public void start(BundleContext context) throws Exception 메서드에서이 청취자를 Activator 클래스에 추가하려고 시도했지만 작동하지 않았습니다. 나는 Ui 부분이 아직 그 시점에로드되지 않았으므로 이것이 실패한 이유라고 생각한다.

답변

1

플러그인의 Activator start 메서드는 플러그인의 다른 항목이 사용될 때까지 실행되지 않으므로 청취자를 배치하기에 적합하지 않습니다. 기본적으로 플러그인은 Eclipse 초기화 중에로드되지 않으며, 필요할 때만로드됩니다.

org.eclipse.ui.startup 확장 점을 사용하여 Eclipse 초기화 중에 실행될 IStartup을 구현하는 클래스를 정의 할 수 있습니다.

이 인터페이스로 정의 된 earlyStartup 메서드는 UI가 초기화되기 전에 실행될 수 있습니다. (가) earlyStartup에서 UI 코드를 실행하기 위해 다음과 같은 것을 사용

선택 서비스를받을 예를 들어
Display.getDefault().asyncExec(new Runnable() { 
    public void run() { 
    // UI code 
    } 
}); 

:.

@Override 
public void earlyStartup() 
{ 
    Display.getDefault().asyncExec(new Runnable() { 
    @Override 
    public void run() { 
    final ISelectionService service = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService(); 
    System.out.println("service " + service); 
    } 
}); 
} 
+0

내가 PlatformUI.getWorkbench()를 호출하는 시도를 getActiveWorkbenchWindow() getSelectionService를.(); 선택 서비스를 받으려면 NPE를 던집니다. –

+0

asyncExec Runnable에서 모든 작업을 수행하는 한 작동합니다. 그 대답의 추가 예제를 참조하십시오. –

+0

그것은 나를 위해 작동하지 않았다 그래서 그냥 UIJob을 만들었고, 모든 것을 run 메소드에 넣고 그것을 스케쥴했습니다. –