0

おはようございます(またはそれぞれ午後または夕方)、

ツリー ビューアーからダイアグラム エディターにノードをドラッグする SWTBot テストを構築しようとしています (Graphiti を使用して、問題はないと思います)。ドラッグするノードは、ツールバーではなく独自のビューにあるため、標準的な方法では機能しません。

SWTBotGefEditor editor = gefBot.gefEditor(editorName);
editor.activateTool(functionName);
editor.drag(20, 20, 20, 20);

TreeItem には dragAndDrop 関数があることもわかりましたが、間違っていない限り (完全に可能です)、別のツリーにドラッグする場合にのみ機能すると思います。

ツリーからダイアグラム エディタに直接ドラッグする方法はありますか?

4

2 に答える 2

0

SWTBot にはまだ実装されていないドラッグ スキームが多数あります。あなたのケースがそれらの一部であるかどうかはわかりません。テーブルの行をドラッグするための独自のユーティリティを作成する必要があったことはわかっています。したがって、SWTBot コードを掘り下げて、そのような空のメソッドが見つかるかどうかを確認する必要があると思います。

于 2014-07-13T08:15:37.127 に答える
0

しばらく前にこれを更新する必要がありましたが、スレッドをハングさせたくないので、調査結果を追加します。

ビューアーからキャンバス オブジェクトを取得するためにリフレクションを使用する必要があり、それを SWTBot が SWTBotTreeItems 用に持っている dragAndDrop() メソッドに渡すことができました。ピンチで作業しましたが、x/y 座標を与えることはできません (パレットから持ってくるときのように) ので、まだ理想的ではありません。

SWTBotView view = gefBot.viewByTitle("My View");
SWTBotTree tree = view.bot().tree();
SWTBotTreeItem treeItem = tree.expandNode("Parent Node Name", targetNodeName);

SWTBotGefViewer viewer = editor.getSWTBotGefViewer();
SWTBotGefFigureCanvas canvas = null;

for (Field f : viewer.getClass().getDeclaredFields()) {
    if ("canvas".equals(f.getName())) {
        f.setAccessible(true);
        try {
            canvas = (SWTBotGefFigureCanvas) f.get(viewer);
        } catch (IllegalArgumentException e) {
            e.printStackTrace(); 
        } catch (IllegalAccessException e) {
            e.printStackTrace(); 
        }
    }
}

Assert.assertNotNull(canvas);
treeItem.dragAndDrop(canvas);
于 2014-07-23T15:36:32.310 に答える