void () { final Rectangle selectionRectangle = getSelectionRectangle(); final List<RadComponent> newSelection = new ArrayList<>(); RadComponent rootComponent = myArea.getRootComponent(); if (rootComponent != null) { rootComponent.accept(new RadComponentVisitor() { @Override public void endVisit(RadComponent component) { if (selectionRectangle.contains(component.getBounds(myArea.getNativeComponent())) && !component.isBackground()) { newSelection.add(component); } } }, true); if (newSelection.isEmpty() && mySelectBackground) { rootComponent.accept(new RadComponentVisitor() { @Override public void endVisit(RadComponent component) { // Only select the bottom-most background if (newSelection.isEmpty() && component.getBounds(myArea.getNativeComponent()).contains(selectionRectangle.x, selectionRectangle.y) && component.isBackground()) { newSelection.add(component); } } }, true); } } if (mySelectionMode == TOGGLE_MODE) { List<RadComponent> selection = new ArrayList<>(myArea.getSelection()); for (RadComponent component : newSelection) { int index = selection.indexOf(component); if (index == -1) { selection.add(component); } else { selection.remove(index); } } myArea.setSelection(selection); } else if (mySelectionMode == APPEND_MODE) { for (RadComponent component : newSelection) { myArea.appendSelection(component); } } else { myArea.setSelection(newSelection); } }