В GraphicalEditor я создал папку с вкладками:
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, и они хорошо работают в других редакторах, у которых нет папок с вкладками, поэтому я думаю, что проблема должна находиться в области «Поставщик выбора».
Есть идеи или кто-нибудь сталкивался с такой же проблемой?