У меня есть два представления: одно с TreeViewer
, а другое с виджетами SWT.Я хочу, чтобы действия в представлении с виджетами вызывали изменения в представлении с TreeViewer
.Читая различные ресурсы по этой теме, они все говорят о том, чтобы позволить зрителям JFace создавать выборки и получать уведомления, но они не говорят о возможности инициировать эти выборки из текстового виджета, например.
МожетЯ делаю что-то вроде этого, предполагая, что представление, в котором этот код, является ISelectionProvider
?
Text someText = new Text( parent, SWT.BORDER ) ;
someText.addKeyListener( new KeyListener() {
@Override
public void keyPressed( KeyEvent e ) {}
@Override
public void keyReleased( KeyEvent e ) {
...
...
CellInfo cellInfo = new CellInfo( /*text collected while typing*/);
currentSelection = new StructuredSelection( cellInfo ) ;
setSelection( currentSelection ) ;
...
...
public void setSelection( ISelection selection ) {
Object[] list = getListeners() ;//listeners.getListeners();
for (int i = 0; i < list.length; i++) {
((ISelectionChangedListener) list[i])
.selectionChanged(new SelectionChangedEvent(this, selection));
}
}
Это, кажется, работает на стороне выбора, но на другой стороне, где я хочу потреблятьвыбор ничего не происходит.В этом средстве просмотра я реализую интерфейс ISelectionListener
и в начале метода createPartControl()
выполняю следующее:
getSite().getPage().addSelectionListener(this);
Но метод selectionChanged()
никогда не вызывается.
Я предполагаю, что я делаю что-то не так со стороны производителя, так как со стороны потребителя кажется довольно простым.Есть указатели?
Спасибо!
Джон