отправить выбранный объект из вида jface в другой вид jface при переходе к нему - PullRequest
0 голосов
/ 12 декабря 2011

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

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();  
  }  }  });

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

1 Ответ

1 голос
/ 12 декабря 2011

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

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

getSite().setSelectionProvider(viewer);

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

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

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

public void selectionChanged(IWorkbenchPart part, ISelection selection) {
    //Assuming structured selection from structured viewer
    IStructuredSelection structSel = (IStructuredSelection)selection;
    Object selElement = structSel.getFirstElement();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...