2011-11-25 38 views
1

不工作在GraphicalEditor來我創建了一個標籤文件夾:SWT的JFace:SelectionProvider在TabFolder中

private final String[] tabNames = { "Text", "Image" }; 

private ResourcesTextComposite comText; 

private ResourcesImageComposite comImage; 

... 

public void createPartControl(Composite parent) { 
    ... 
    tabFolder = new TabFolder(parent, SWT.BORDER); 
    for (int loopIndex = 0; loopIndex < tabNames.length; loopIndex++) { 
     TabItem tabItem = new TabItem(tabFolder, SWT.NULL); 
     tabItem.setText(tabNames[loopIndex]); 

     if (loopIndex == 0) { 
      comText = new ResourcesTextComposite(tabFolder, SWT.NONE, 
        resources); 
      tabItem.setControl(comText); 
     } else if (loopIndex == 1) { 
      comImage = new ResourcesImageComposite(tabFolder, SWT.NONE, 
        resources); 
      tabItem.setControl(comImage); 
     } 
    } 
    ... 
} 

它有2分選項卡的項目和每個項目都有一個複合在裏面,並且每個複合分別具有TableViewer中。

我想這使每一個TableViewer的選擇供應商時,用戶選擇相應的選項卡項目(編輯器的功能相同的createPartControl):

public void createPartControl(Composite parent) { 
    ... 
    tabFolder.addSelectionListener(new SelectionListener() { 
     public void widgetSelected(SelectionEvent e) { 
      int tabIdx = tabFolder.getSelectionIndex(); 
      getSite().setSelectionProvider(null); 
      if (tabIdx == 0) { 
       getSite().setSelectionProvider(comText.getViewer()); 
      } else if (tabIdx == 1) { 
       getSite().setSelectionProvider(comImage.getViewer()); 
      } 
      System.out.println("widgetSelected" + getSite() + ": " 
        + getSite().getSelectionProvider()); 
     } 

     public void widgetDefaultSelected(SelectionEvent e) { 
      widgetSelected(e); 
     } 
    }); 
    ... 
} 

我希望,當我在一個TableViewer中選擇一行, Properties視圖將顯示所選模型的屬性,我已經完成了這些IPropertySource的事情,並且在沒有選項卡文件夾的其他編輯器中運行良好,所以我認爲問題應該在Selection Provider區域中。

任何想法或任何人遇到同樣的問題?

回答

2

如果您在視圖或編輯器中有多個選擇提供者,那麼您需要使用一個介體,如org.eclipse.jdt.internal.ui.viewsupport.SelectionProviderMediator。請注意,這是不幸的內部,所以你需要將它複製到你自己的項目

+0

我想在給定的時間,我希望只有一個TableViewer的作品,所以使用setSelectionProvider設置只有一個查看器是可能的。 –

+0

對不起,你是對的!有用! –