void (@NotNull final AnActionEvent e) { final GuiEditor editor = FormEditingUtil.getEditorFromContext(e.getDataContext()); assert editor != null; final SelectionState selectionState = editor.getSelectionState(); selectionState.setInsideChange(true); ComponentTreeBuilder builder = DesignerToolWindowManager.getInstance(editor).getComponentTreeBuilder(); if (builder != null) { builder.beginUpdateSelection(); } final Stack<ComponentPtr[]> history = selectionState.getSelectionHistory(); try{ final ComponentPtr[] ptrs = history.peek(); for(int i = ptrs.length - 1; i >= 0; i--){ // Skip invalid components final ComponentPtr ptr = ptrs[i]; ptr.validate(); if(!ptr.isValid()){ continue; } // Extend selection final RadComponent component = ptr.getComponent(); final RadContainer parent = component.getParent(); if(parent == null){ // skip components without parents continue; } boolean shouldSelectParent = true; for(int j = parent.getComponentCount() - 1; j >= 0; j--){ final RadComponent sibling = parent.getComponent(j); if(!sibling.isSelected()){ shouldSelectParent = false; sibling.setSelected(true); } } if(shouldSelectParent){ parent.setSelected(true); } } // Store new selection history.push(SelectionState.getSelection(editor)); } finally { if (builder != null) { builder.endUpdateSelection(); } selectionState.setInsideChange(false); } }