2012-02-23 118 views
3

在我們的應用中,我們有4次(查看1,2,3 & 4)和3個觀點(觀點1,2和3)。如何添加視角聽衆

的觀點通過實施​​建立和觀點通過擴展ViewPart時建造的。

我們面對我們想要將焦點設置到特定視圖中的任何角度的情況下,選擇的情況。

例如,考慮將視圖1作爲常見視圖,將在所有3個視角下顯示。無論何時我們選擇任何視角,我們都希望將焦點設置爲View1。

如何添加監聽器的觀點?

我們知道,我們必須添加IPerspectiveListerner才能聽取透視圖的變化,但我們不確定將其添加到何處,以便在我們已在IPerspectiveListener下實施的方法中獲得執行控制。

回答

4

您可以使用下面的代碼:

PlatformUI.getWorkbench().getActiveWorkbenchWindow().addPerspectiveListener(new IPerspectiveListener() { 
    @Override 
    public void perspectiveChanged(IWorkbenchPage page, IPerspectiveDescriptor perspective, String changeId) { 
    try { 
     page.showView("...", null, IWorkbenchPage.VIEW_VISIBLE); 
    } catch (PartInitException ex) { 
     ex.printStackTrace(); 
    } 
    } 

    @Override 
    public void perspectiveActivated(IWorkbenchPage page, IPerspectiveDescriptor perspective) { 
    } 
}); 

編輯:因爲這是依賴於VIEW1你可以把這個代碼在激活的廠景插件。當然,直到從view1插件加載一些代碼纔會顯示出來。例如:

Job job = new UIJob("Add Perspective listener") { 
    public IStatus runInUIThread(IProgressMonitor monitor) { 
     addPerspectiveListener(); 
     return Status.OK_STATUS; 
    } 
}; 
job.setSystem(true); 
job.schedule(); 
+0

我們嘗試使用上面的邏輯,但是我們無法獲得執行控制在執行的方法中。看起來勒索師沒有註冊。我們需要添加這個監聽器的任何信息? – prakashjv 2012-02-27 08:22:53

+0

上述代碼已從我們的代碼庫中提取出來......每當透視圖發生更改時,應調用'perspectiveChanged(...)'方法。 – 2012-02-27 09:13:37