最初にStackOverflowのIStructuredSelection
について他のトピックをチェックしましたが、問題は解決しません。異なるViewPartsのJava Eclipse IStructuredSelectionがnullを返します
私は2つのビューを持っています。私はTreeViewer
を持っていると私はTreeNode
をクリックしたときMAINVIEWではすべてが、正しく動作しているgetSite().setSelectionProvider(viewer);
を実施し、両方のビューで(注:■カスタムクラスからですこれらTreeNode
」、myTreeNode
を言うことができます)PropertiesView
取得更新され、私のポップアップmenu
は異なるハンドラで正しい関数を呼び出します。
これらの関数のいずれかは、別のView
に新しいTreeItem
を作成し、異なる列に値を表示する必要があります。これらの値は毎秒更新されます。この部分も正しく動作しています。
しかし、今問題が発生します。 TreeItem
のいずれかをクリックすると、PropertiesViewが更新されず、ポップアップメニューハンドラも正しく動作しません。 IStructuredSelection strucSelection = (IStructuredSelection) selection;
は常にnull
を返します。ここで
PropertiesView
のための私のアダプタからの私getAdapter
方法です:
@Override
public Object getAdapter(Object adaptableObject, Class adapterType)
{
if(adapterType == IPropertySource.class && adaptableObject instanceof UATreeNode)
return new UATreeNodeAdapter((UATreeNode) adaptableObject);
else if(adapterType == IPropertySource.class && adaptableObject instanceof TreeItem)
{
MainView.printOnOPCUAConsole(OPCUAConsoleMessageTypeEnum.NULL, "Instanceof TreeItem");
return new TreeItemAdapter((TreeItem) adaptableObject);
}
else if(adapterType == IPropertySheetPage.class)
{
if(propertyPage == null)
propertyPage = new PropertySheetPage();
return propertyPage;
}
return null;
}
そしてここでは、2番目のビューでmenu
がオープンしまして、コマンドが実行されると、呼び出されなければなりません私のHandler
、あります
どちらの場合も、選択はnullですが、何かが選択されていることがわかります。それ以外の場合は、popup menu
は表示されません。
今私の質問は、誰も私の秒から選択を得る方法を知っていますView
?そして私は何が間違っているのですか?
これは、2番目のビューの 'setSelectionProvider'呼び出しに何か問題があるか、あるいは何か他のものがアクティブな部分であることを示唆しています。 –
2番目のビューでは、treeViewerを 'setSelectionProvider'に渡します。 2番目のビューにフォーカスが当たったとき、ビューアの最初の要素は常に「自動選択」され、私の「SelectionChangedListener」は起動されることが認識されました。しかし、私は 'event.getSelection();'がnullを返すという同じ問題を抱えています。 – Strizzi