現在、Zest を使用してツリーを表示する Eclipse 用のプラグインを開発しています。
MouseListener
ダブルクリック機能を追加したかったので、ノードを表示するフィギュアにカスタムを追加しようとしましたが、これはノードをドラッグできるようにする自然に存在する機能を上書きします。
Draw2D ベースのドラッグ機能を追加しようとしましたが、うまくいきませんでした。これが私が試したコードです:
private Point location;
public void mousePressed(MouseEvent me) {
location = me.getLocation();
me.consume();
}
public void mouseReleased(MouseEvent me) {
location = null;
me.consume();
}
public void mouseDragged(MouseEvent me) {
if (location == null) {
return;
}
Point moved= me.getLocation();
if (moved == null) {
return;
}
Dimension offset= moved.getDifference(location);
if (offset.width == 0 && offset.height == 0) {
return;
}
location= moved;
UpdateManager uMgr= figure.getUpdateManager();
LayoutManager lMgr= figure.getLayoutManager();
Rectangle bounds= figure.getBounds();
uMgr.addDirtyRegion(figure.getParent(), bounds);
bounds= bounds.getCopy().translate(offset.width, offset.height);
lMgr.setConstraint(figure, bounds);
figure.translate(offset.width, offset.height);
uMgr.addDirtyRegion(figure.getParent(), bounds);
me.consume();
}
誰でも私のコードの修正または回避策を提供できますか?