0

一部の Java クラスをビュー パーツで UML として視覚化する Eclipse プラグインを作成しました。Package Explorer でパッケージを選択し、パッケージを右クリックした後、メニュー内の自己作成コマンド メニュー項目をクリックして視覚化できます。ビジュアライゼーションは prefuse ライブラリで作成されます。次の目標は、マルチタッチで使えるようにすることでした。PQLabs multitouch SDKの Multitouch Library を使用しています。マルチタッチ スクリーンで、UML モデルを移動したり、サイズを変更したりできます。

しかし、Package Explorer から情報を取得できませんでした。画面上の Package Explorer と IJavaElements の場所を見つけようとしましたが、失敗しました。私の考えは、(PQL Labs SDK から取得した) 指の x 座標と y 座標を、IJavaElements の x 座標と y 座標と比較することでした。最初から失敗しました。タッチ ポイントが Package Explorer ビューの境界内にあるかどうかを認識することができませんでした。私が得た唯一のものは、ディスプレイ全体の境界でした。インターネットとスタックオーバーフローを検索しましたが、役に立つものは見つかりませんでした。

それが可能かどうかはわかりませんが、誰かが私に情報を提供してくれたり、良いリンクを教えてくれたりするとありがたいです.

4

3 に答える 3

0

TreeViewerフランシスの回答で説明されているように、を取得できるはずでありTreeViewer#getControl()、基礎となるコントロールを提供します。

を介してコントロールの位置とサイズを取得する場合control.getBounds()、それらはシェル/ウィンドウの座標を基準にしています。絶対的な表示/画面座標が必要な場合は、を参照してください。control.toDisplay(some_x, some_y)

于 2012-07-17T00:01:04.493 に答える
0

パッケージ エクスプローラーについてはよくわかりませんが、プロジェクト エクスプローラー (Common Navigator) (これにも対処する必要があります) には、関連付けられた TreeViewer があります (この場合、クラスは CommonViewer です)。これは、CommonNavigator.getCommonViewer() を実行することで取得できます。TreeViewer を取得したら、基礎となる SWT ツリーにアクセスし、そこから標準の SWT メソッドを使用して、囲んでいるウィンドウに対するツリーの位置を取得できます。ツリー セルの境界を取得できるメソッドもあります。ツリーの操作に役立つ SWT スニペット (Google it) を参照してください。

Package Explorer の場合も同様です。ソースコードを見る必要があります。

于 2012-07-16T17:36:40.540 に答える
0

問題をどのように解決したかについて、私の手順を共有したいと思います。アドバイスの後、私は Java IDE の jdt Java インフラストラクチャーを深く掘り下げました。Package Explorer の TreeViewer を取得するには、" PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView("org.eclipse.jdt.ui.PackageExplorer ")" を "PackageExplorerPart" にキャストする必要がありました。 「org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart」で。私が行ったさらなる手順は次のとおりです。

treeViewer = packageExplorerPart.getTreeViewer();

tree = (ツリー) treeViewer.getControl();

その後、画面をタッチして渡された座標 x と y で「 Point 」を作成しました。しかし、ポイントの位置は画面全体を表しており、Package Explorer の正しい座標を取得するために、メソッド tree.toControl(...) を使用してポイントを変換しました。最後に、tree.getItem(....) メソッドでアイテムが与えられているかどうかを確認しました。

于 2012-08-02T15:06:13.617 に答える