2 つのビューがあります。1 つTreeViewer
は SWT ウィジェットを含み、もう 1 つは 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()
メソッドが呼び出されることはありません。
私の推測では、コンシューマー側は非常に単純に見えるため、プロデューサー側で何か間違ったことをしているのだと思います。ポインタはありますか?
ありがとう!
ジョン