JPanel pane = new JPanel();
pane.add(label);
pane.add(table);
showFrame(pane);
robot.drag(label, label.getWidth()/2, label.getHeight()/2);
Timer timer = new Timer();
while (!label.dragStarted) {
if (timer.elapsed() > EVENT_GENERATION_DELAY) {
fail("Drag gesture not recognized");
}
if (label.exception != null)
throw label.exception;
robot.sleep();
}
Rectangle rect = table.getCellRect(1, 1, false);
robot.drop(table, rect.x + rect.width/2, rect.y + rect.height/2);
timer.reset();
while (!label.dragExited || !table.dragEntered
|| !table.dropAccepted || !label.dragEnded) {
if (timer.elapsed() > EVENT_GENERATION_DELAY) {
assertTrue("Drag never left drag source", label.dragExited);
assertTrue("Drag never entered drop target",
table.dragEntered);
assertTrue("Drag never ended", label.dragEnded);
assertTrue("Drag not accepted", table.dropAccepted);