void () { if (myContext.getComponents().isEmpty()) { return; } final List<RadComponent> excludeComponents = new ArrayList<>(myContext.getComponents()); if (!myContext.isCreate()) { for (RadComponent component : myContext.getComponents()) { component.accept(new RadComponentVisitor() { @Override public void endVisit(RadComponent component) { excludeComponents.add(component); } }, true); } } final EditOperation[] operation = new EditOperation[1]; ComponentTargetFilter filter = new ComponentTargetFilter() { @Override public boolean preFilter(RadComponent component) { return myContext.isCreate() || !excludeComponents.contains(component); } @Override public boolean resultFilter(RadComponent target) { if (!myContext.isCreate()) { if (myContext.getComponents().get(0).getParent() == target) { myContext.setType(OperationContext.MOVE); } else { myContext.setType(OperationContext.ADD); } } if (myTarget == target) { return true; } RadLayout layout = target.getLayout(); if (layout != null) { operation[0] = layout.processChildOperation(myContext); } return operation[0] != null; } }; Point location = getLocation(); RadComponent target = myArea.findTarget(location.x, location.y, filter); if (target != myTarget) { if (myTargetOperation != null) { eraseFeedback(); } myTarget = target; myTargetOperation = operation[0]; } if (target == null) { if (!myContext.isCreate()) { myContext.setType(null); } } else { myTargetOperation.setComponents(myContext.getComponents()); } }