public void draw(Widget content) { if (drawn) throw new IllegalStateException(); this.drawn = true; this.hidden = false; this.widget = content; setBalloonBackgroundStyle(widget); String dir = toTop ? "Down" : "Up"; a = new Image(GWT.getModuleBaseURL() + "img/balloon" + dir + ".gif"); a.setStyleName("ucpgwt-Balloon-Arrow"); a.setPixelSize(ARROW_H_PIXELS, ARROW_V_PIXELS); tl = new Image(GWT.getModuleBaseURL() + "img/balloonTL.gif"); tl.setPixelSize(BALLOON_BORDER, BALLOON_BORDER); tr = new Image(GWT.getModuleBaseURL() + "img/balloonTR.gif"); tr.setPixelSize(BALLOON_BORDER, BALLOON_BORDER); bl = new Image(GWT.getModuleBaseURL() + "img/balloonBL.gif"); bl.setPixelSize(BALLOON_BORDER, BALLOON_BORDER); br = new Image(GWT.getModuleBaseURL() + "img/balloonBR.gif"); br.setPixelSize(BALLOON_BORDER, BALLOON_BORDER); l = new Label(); DOM.setStyleAttribute( l.getElement(), "backgroundImage", "url(" + GWT.getModuleBaseURL() + "img/balloonL.gif)"); l.setPixelSize(BALLOON_BORDER, height); l.addClickListener(this); r = new Label(); DOM.setStyleAttribute( r.getElement(), "backgroundImage", "url(" + GWT.getModuleBaseURL() + "img/balloonR.gif)"); r.setPixelSize(BALLOON_BORDER, height); r.addClickListener(this); t = new Label(); DOM.setStyleAttribute( t.getElement(), "backgroundImage", "url(" + GWT.getModuleBaseURL() + "img/balloonT.gif)"); t.setPixelSize(width, BALLOON_BORDER); t.addClickListener(this); b = new Label(); DOM.setStyleAttribute( b.getElement(), "backgroundImage", "url(" + GWT.getModuleBaseURL() + "img/balloonB.gif)"); b.setPixelSize(width, BALLOON_BORDER); b.addClickListener(this); if (content instanceof SourcesClickEvents) { ((SourcesClickEvents) content).addClickListener(this); } AbsolutePanel root = RootPanel.get(); panel = new AbsolutePanel(); panel.addStyleName("ucpgwt-Balloon"); root.add(a, arrowLeft, arrowTop); panel.add(tl, 0, 0); panel.add(t, BALLOON_BORDER, 0); panel.add(tr, width + BALLOON_BORDER, 0); panel.add(l, 0, BALLOON_BORDER); panel.add(r, width + BALLOON_BORDER, BALLOON_BORDER); panel.add(bl, 0, height + BALLOON_BORDER); panel.add(b, BALLOON_BORDER, height + BALLOON_BORDER); panel.add(br, width + BALLOON_BORDER, height + BALLOON_BORDER); content.setPixelSize(width, height); panel.add(content, BALLOON_BORDER, BALLOON_BORDER); panel.setPixelSize(width + 2 * BALLOON_BORDER, height + 2 * BALLOON_BORDER); root.add(panel, left, top); }