def onEnter(self, context):
     super.onEnter(context)
     assert draggableList.size() == 0
     
     dropTargetClientWidth = DOMUtil.getClientWidth(dropTarget.getElement())
     dropTargetClientHeight = DOMUtil.getClientHeight(dropTarget.getElement())
     WidgetLocation dropTargetLocation = WidgetLocation(dropTarget, None)
     dropTargetOffsetX = dropTargetLocation.getLeft()
     + DOMUtil.getBorderLeft(dropTarget.getElement())
     dropTargetOffsetY = dropTargetLocation.getTop() + DOMUtil.getBorderTop(dropTarget.getElement())
     
     int draggableAbsoluteLeft = context.draggable.getAbsoluteLeft()
     int draggableAbsoluteTop = context.draggable.getAbsoluteTop()
     for Iterator iterator = context.selectedWidgets.iterator(); iterator.hasNext();:
 def makePositioner(self, reference):
     # Use two widgets so that setPixelSize() consistently affects dimensions
     # excluding positioner border in quirks and strict modes
     SimplePanel outer = SimplePanel()
     outer.addStyleName(CSS_DRAGDROP_POSITIONER)
     DOM.setStyleAttribute(outer.getElement(), "margin", "0px")
     
     # place off screen for border calculation
     RootPanel.get().add(outer, -500, -500)
     
     # Ensure IE quirks mode returns valid outer.offsetHeight, and thus valid
     # DOMUtil.getVerticalBorders(outer)
     outer.setWidget(DUMMY_LABEL_IE_QUIRKS_MODE_OFFSET_HEIGHT)
     
     SimplePanel inner = SimplePanel()
     DOM.setStyleAttribute(inner.getElement(), "margin", "0px")
     DOM.setStyleAttribute(inner.getElement(), "border", "none")
     int offsetWidth = reference.getOffsetWidth() - DOMUtil.getHorizontalBorders(outer)
     int offsetHeight = reference.getOffsetHeight() - DOMUtil.getVerticalBorders(outer)
     inner.setPixelSize(offsetWidth, offsetHeight)
     
     outer.setWidget(inner)
     
     return outer
 def onMove(self, context):
     super.onMove(context)
     int targetIndex = DOMUtil.findIntersect(dropTarget, CoordinateLocation(context.mouseX,
     context.mouseY), getLocationWidgetComparator())
     
     # check that positioner not already in the correct location
     int positionerIndex = dropTarget.getWidgetIndex(positioner)
     
     if positionerIndex != targetIndex  and  (positionerIndex != targetIndex - 1  or  targetIndex == 0):
         if positionerIndex == 0  and  dropTarget.getWidgetCount() == 1:
             # do nothing, the positioner is the only widget
          elif targetIndex == -1:
             # outside drop target, so remove positioner to indicate a drop will not happen
             positioner.removeFromParent()
          else:
             insert(positioner, targetIndex)
Exemplo n.º 4
0
        # Ensure IE quirks mode returns valid outer.offsetHeight, and thus valid
        # DOMUtil.getVerticalBorders(outer)
        outer.setWidget(DUMMY_LABEL_IE_QUIRKS_MODE_OFFSET_HEIGHT)
        
        int width = 0
        int height = 0
        if dropTarget instanceof HorizontalPanel:
            for Iterator iterator = context.selectedWidgets.iterator(); iterator.hasNext();:
                Widget widget = (Widget) iterator.next()
                width += widget.getOffsetWidth()
                height = Math.max(height, widget.getOffsetHeight())
            
         else:
            for Iterator iterator = context.selectedWidgets.iterator(); iterator.hasNext();:
                Widget widget = (Widget) iterator.next()
                width = Math.max(width, widget.getOffsetWidth())
                height += widget.getOffsetHeight()
            
        
        
        SimplePanel inner = SimplePanel()
        inner.setPixelSize(width - DOMUtil.getHorizontalBorders(outer), height
        - DOMUtil.getVerticalBorders(outer))
        
        outer.setWidget(inner)
        
        return outer
    


Exemplo n.º 5
0
     movablePanel.removeFromParent()
     movablePanel = None
     super.dragEnd()
 
 
 def dragMove(self):
     int desiredLeft = context.desiredDraggableX - boundaryOffsetX
     int desiredTop = context.desiredDraggableY - boundaryOffsetY
     if getBehaviorConstrainedToBoundaryPanel():
         desiredLeft = Math.max(0, Math.min(desiredLeft, dropTargetClientWidth
         - context.draggable.getOffsetWidth()))
         desiredTop = Math.max(0, Math.min(desiredTop, dropTargetClientHeight
         - context.draggable.getOffsetHeight()))
     
     
     DOMUtil.fastSetElementPosition(movablePanel.getElement(), desiredLeft, desiredTop)
     
     DropController newDropController = getIntersectDropController(context.mouseX, context.mouseY)
     if context.dropController != newDropController:
         if context.dropController is not None:
             context.dropController.onLeave(context)
         
         context.dropController = newDropController
         if context.dropController is not None:
             context.dropController.onEnter(context)
         
     
     
     if context.dropController is not None:
         context.dropController.onMove(context)
     
Exemplo n.º 6
0
    * Cache a list of eligible drop controllers, sorted by relative DOM positions
    * of their respective drop targets. Called at the beginning of each drag operation,
    * or whenever drop target eligibility has changed while dragging.
    *
    * @param boundaryPanel boundary area for drop target eligibility considerations
    * @param context the current drag context
    """
    def resetCache(self, boundaryPanel, context):
        ArrayList list = ArrayList()
        
        if context.draggable is not None:
            WidgetArea boundaryArea = WidgetArea(boundaryPanel, None)
            for Iterator iterator = dropControllerList.iterator(); iterator.hasNext();:
                DropController dropController = (DropController) iterator.next()
                Candidate candidate = Candidate(dropController)
                if DOMUtil.isOrContains(context.draggable.getElement(),
                candidate.getDropTarget().getElement())) {
                    continue
                
                if candidate.getTargetArea().intersects(boundaryArea):
                    list.add(candidate)
                
            
        
        
        sortedCandidates = (Candidate[]) list.toArray(Candidate[list.size()])
        Arrays.sort(sortedCandidates)