boolean (final IComponent component) { if (progress != null && progress.isCanceled()) return false; // Reset previous error (if any) component.putClientProperty(CLIENT_PROP_BINDING_ERROR, null); final String binding = component.getBinding(); // a. Check that field exists and field is not static if (psiClass != null && binding != null) { if (validateFieldInClass(component, binding, component.getComponentClassName(), psiClass, editor, module)) return true; } // b. Check that binding is unique if (binding != null) { if (usedBindings.contains(binding)) { // TODO[vova] implement component.putClientProperty( CLIENT_PROP_BINDING_ERROR, new ErrorInfo( component, null, UIDesignerBundle.message("error.binding.already.exists", binding), HighlightDisplayLevel.ERROR, QuickFix.EMPTY_ARRAY ) ); return true; } usedBindings.add(binding); } IButtonGroup group = FormEditingUtil.findGroupForComponent(rootContainer, component); if (group != null && !processedGroups.contains(group)) { processedGroups.add(group); if (group.isBound()) { validateFieldInClass(component, group.getName(), ButtonGroup.class.getName(), psiClass, editor, module); } } return true; }