2011-10-04 30 views
0

我正在開發Eclipse插件,它帶有一個帶有工具欄和按鈕的樹形視圖。我想讓插件工作,這樣它會顯示默認的樹形視圖,但如果出現一些錯誤,會有一些文本和按鈕來初始化或更新插件。插件視圖應根據樹視圖和「錯誤視圖」之間的插件狀態動態更改。在Eclipse插件視圖中動態查看內容

現在我創建樹視圖實例並在createPartControl方法中執行其他需要的操作以顯示treeview權限。我應該如何實現在插件視圖中顯示不同類型內容的動態視圖?這可能嗎?

的createPartControlMethod的代碼:

public void createPartControl(Composite parent) { 
     viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL); 
     drillDownAdapter = new DrillDownAdapter(viewer); 
     viewContentProvider = new ViewContentProvider(); 
     viewer.setContentProvider(viewContentProvider); 
     viewer.setLabelProvider(new ViewLabelProvider()); 
     viewer.setSorter(new NameSorter()); 
     viewer.setInput(getViewSite()); 
     viewer.expandToLevel(2); 

     // Create the help context id for the viewer's control 
     PlatformUI.getWorkbench().getHelpSystem().setHelp(viewer.getControl(), "my.plugin.viewer"); 
     makeActions(); 
     hookContextMenu(); 
     hookDoubleClickAction(); 
     contributeToActionBars(); 
     setToolBarButtonsEnabled(); 

回答

0

最簡單的方法是創建一個CompositeStackLayout和兩個孩子,而不是:

private Composite container; 
private TreeViewer viewer; 
private Composite errorComposite; 
private StackLayout layout; 

public void createPartControl(Composite parent) { 
    container = new Composite(parent); 
    layout = new StackLayout(); 
    viewer = new TreeViewer(container, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL); 
    ... // setup viewer 
    errorComposite = new Composite(container, SWT.NONE); 
    ... // setup error view 
} 
+0

謝謝你的答案。我應該設置樹視圖還是錯誤組合作爲容器的子項,並在需要時更改子項? –

+1

你應該將兩者都設置爲容器的子節點,並根據需要將其放在頂部(這就是'StackLayout'允許你做的事情:使得其中一個子節點可見)。 –