Use the animate method from gwtquery to move the widget to the panel position (just a line of code) , dont forget to add a callback function in order to add the widget to the panel after the animation has been finished and maintain the gwt widget hierarchy.
BTW: gquery uses gwt-animate as its low-level function.
final HorizontalPanel panel = new HorizontalPanel();
final HTMLPanel widget = new HTMLPanel("Hello World");
RootPanel.get().add(panel);
RootPanel.get().add(widget);
// Style your widgets, gwtquery makes it easy
$(panel).css($$("bottom:0px; position:fixed; border: solid 1px; width: 200px; height: 40px;"));
$(widget).css($$("top: 50%; left: 50%; position:fixed; border: solid 1px; width: 150px"));
// Compute the final position of your widget
Properties props = $$("top: " + $(panel).top() + ", left:" + $(panel).left());
// animate it and run a callback function
$(widget).animate(props, 2000, new Function(){
public void f() {
panel.add(widget);
$(widget).css($$("position: relative"));
}
});