boolean (final DraggedComponentList dcl, final Point dropPoint, final int dropAction) { myEditor.getActiveDecorationLayer().removeFeedback(); final ArrayList<RadComponent> dclComponents = dcl.getComponents(); final int componentCount = dclComponents.size(); ComponentDropLocation location = GridInsertProcessor.getDropLocation(myEditor.getRootContainer(), dropPoint); if (FormEditingUtil.isDropOnChild(dcl, location)) { setDraggingState(dcl, false); return false; } if (!location.canDrop(dcl)) { setDraggingState(dcl, false); return false; } if (!myEditor.ensureEditable()) { setDraggingState(dcl, false); return false; } List<RadComponent> droppedComponents; RadContainer[] originalParents = dcl.getOriginalParents(); cancelDrag(); if (dropAction == DnDConstants.ACTION_COPY) { setDraggingState(dcl, false); droppedComponents = myDraggedComponentsCopy; if (droppedComponents == null) { return false; } } else { for(int i=0; i<dclComponents.size(); i++) { LOG.info("Removing component " + dclComponents.get(i).getId() + " with constraints " + dcl.getOriginalConstraints() [i]); originalParents [i].removeComponent(dclComponents.get(i)); } droppedComponents = dclComponents; } final RadComponent[] components = droppedComponents.toArray(new RadComponent[componentCount]); final GridConstraints[] originalConstraints = dcl.getOriginalConstraints(); location.processDrop(myEditor, components, originalConstraints, dcl); if (dropAction == DnDConstants.ACTION_COPY) { for (RadComponent component : droppedComponents) { InsertComponentProcessor.createBindingWhenDrop(myEditor, component, false); } FormEditingUtil.selectComponents(myEditor, droppedComponents); } else { setDraggingState(dcl, false); } for (int i = 0; i < originalConstraints.length; i++) { if (originalParents[i].getLayoutManager().isGrid()) { FormEditingUtil.deleteEmptyGridCells(originalParents[i], originalConstraints[i]); } } return true; }