2011-11-25 36 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

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