def newPositioner(self, context): # Use two widgets so that setPixelSize() consistently affects dimensions outer = SimplePanel() outer.addStyleName(CSS_DRAGDROP_POSITIONER) # place off screen for border calculation RootPanel.get().add(outer, -500, -500) # Ensure IE quirks mode returns valid outer.offsetHeight, and thus valid outer.setWidget(self.DUMMY_LABEL_IE_QUIRKS_MODE_OFFSET_HEIGHT) width = 0 height = 0 if isinstance(self.dropTarget,HorizontalPanel): for widget in context.selectedWidgets: width += widget.getOffsetWidth() height = Math.max(height, widget.getOffsetHeight()) else: for widget in context.selectedWidgets: width = Math.max(width, widget.getOffsetWidth()) height += widget.getOffsetHeight() inner = SimplePanel() inner.setPixelSize( width - DOMUtil.getHorizontalBorders(outer), height - DOMUtil.getVerticalBorders(outer)) outer.setWidget(inner) return outer
def makePositioner(self, reference): outer = SimplePanel() # Use two widgets so that setPixelSize() consistently affects dimensions outer.addStyleName(CSS_DRAGDROP_POSITIONER) outer.getElement().getStyle().setProperty("margin", "0px") RootPanel.get().add(outer, -500, -500) # place off screen for border calculation outer.setWidget(DUMMY_LABEL_IE_QUIRKS_MODE_OFFSET_HEIGHT) # Ensure IE quirks mode returns valid outer.offsetHeight, and thus valid inner = SimplePanel() inner.getElement().getStyle().setProperty("margin", "0px") inner.getElement().getStyle().setProperty("border", "none") offsetWidth = reference.getOffsetWidth() - DOMUtil.getHorizontalBorders(outer) offsetHeight = reference.getOffsetHeight() - DOMUtil.getVerticalBorders(outer) inner.setPixelSize(offsetWidth, offsetHeight) outer.setWidget(inner) return outer