void (final DraggedComponentList draggedComponentList, final Point location, final int dropAction) { final List<RadComponent> dragComponents = draggedComponentList.getComponents(); Rectangle allBounds = null; if (!draggedComponentList.hasDragDelta() || !myUseDragDelta) { final RadContainer[] originalParents = draggedComponentList.getOriginalParents(); final Rectangle[] originalBounds = draggedComponentList.getOriginalBounds(); for(int i=0; i<originalParents.length; i++) { Rectangle rc = SwingUtilities.convertRectangle(originalParents [i].getDelegee(), originalBounds [i], myEditor.getDragLayer()); if (allBounds == null) { allBounds = rc; } else { allBounds = allBounds.union(rc); } } } // Place selected components to the drag layer. myDraggedComponentsCopy = CutCopyPasteSupport.copyComponents(myEditor, dragComponents); for (int i=0; i<dragComponents.size(); i++) { myDraggedComponentsCopy.get(i).setSelected(true); final JComponent delegee = myDraggedComponentsCopy.get(i).getDelegee(); final Point point = SwingUtilities.convertPoint( draggedComponentList.getOriginalParents() [i].getDelegee(), delegee.getLocation(), myEditor.getDragLayer() ); if (draggedComponentList.hasDragDelta() && myUseDragDelta) { delegee.setLocation((int) point.getX() + draggedComponentList.getDragDeltaX(), (int) point.getY() + draggedComponentList.getDragDeltaY()); } else { assert allBounds != null; delegee.setLocation((int) (point.getX() - allBounds.getX() + location.getX()), (int) (point.getY() - allBounds.getY() + location.getY())); } //myEditor.getDragLayer().add(delegee); } for (final RadComponent c : dragComponents) { if (dropAction != DnDConstants.ACTION_COPY) { c.setDragBorder(true); } c.setSelected(false); } }