для отправки выбранного объекта из представления jface в другое представление jface при переходе к нему

У меня есть таблица jface tableviewer в представлении jface, пользователь может щелкнуть любую строку таблицы tableviewer, при щелчке представление должно перейти к другому представлению, а также отправить идентификатор выбранной строки в представление, по которому осуществляется переход. На данный момент я могу успешно перейти к другому представлению, а также получить идентификатор выбранной строки с кодом

viewer.getTable().addListener(SWT.Selection, new Listener() {  
@Override 
public void  handleEvent(Event e) {  
    try {  
       int selected = viewer.getTable().getSelectionIndex(); 
       String selection = viewer.getTable().getItem(selected).getText();       PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView("E2E_tab_view.view5");  
    } 
    catch (PartInitException e1) {  // TODO Auto-generated catch block
       e1.printStackTrace();  
  }  }  });

но невозможно отправить этот выбранный идентификатор строки в другое представление во время навигации. Может ли кто-нибудь помочь мне с этим?


person Pramodini Raju    schedule 12.12.2011    source источник


Ответы (1)


Вместо прямого обращения к другому представлению следует использовать ISelectionService страницы рабочей среды.

В первом представлении вы устанавливаете средство просмотра таблиц в качестве поставщика выбора для своего сайта:

getSite().setSelectionProvider(viewer);

В другом представлении вы регистрируете прослушиватель выбора на IWorkbenchPage:

getSite().getPage().addSelectionListener(firstViewID, listener);

В вашем listener вы можете получить доступ к выбранному элементу, используя IStructuredSelection:

public void selectionChanged(IWorkbenchPart part, ISelection selection) {
    //Assuming structured selection from structured viewer
    IStructuredSelection structSel = (IStructuredSelection)selection;
    Object selElement = structSel.getFirstElement();
}
person Martti Käärik    schedule 12.12.2011
comment
Мне просто нужно отправить строковое значение для навигации по следующему представлению. Можете ли вы помочь сейчас. - person Pramodini Raju; 19.12.2011
comment
@PramodiniRaju Я обновил свой ответ. Там действительно больше нечего делать. - person Martti Käärik; 19.12.2011