Search in sources :

Example 1 with RadHSpacer

use of com.intellij.uiDesigner.radComponents.RadHSpacer in project intellij-community by JetBrains.

the class BindingEditor method getFieldNames.

private static String[] getFieldNames(final RadComponent component, final String currentName) {
    final ArrayList<String> result = new ArrayList<>();
    if (currentName != null) {
        result.add(currentName);
    }
    final IRootContainer root = FormEditingUtil.getRoot(component);
    final String className = root.getClassToBind();
    if (className == null) {
        return ArrayUtil.toStringArray(result);
    }
    final PsiClass aClass = FormEditingUtil.findClassToBind(component.getModule(), className);
    if (aClass == null) {
        return ArrayUtil.toStringArray(result);
    }
    final PsiField[] fields = aClass.getFields();
    for (final PsiField field : fields) {
        if (field.hasModifierProperty(PsiModifier.STATIC)) {
            continue;
        }
        final String fieldName = field.getName();
        if (Comparing.equal(currentName, fieldName)) {
            continue;
        }
        if (!FormEditingUtil.isBindingUnique(component, fieldName, root)) {
            continue;
        }
        final String componentClassName;
        if (component instanceof RadErrorComponent) {
            componentClassName = component.getComponentClassName();
        } else if (component instanceof RadHSpacer || component instanceof RadVSpacer) {
            componentClassName = Spacer.class.getName();
        } else {
            componentClassName = component.getComponentClass().getName();
        }
        final PsiType componentType;
        try {
            componentType = JavaPsiFacade.getInstance(component.getProject()).getElementFactory().createTypeFromText(componentClassName, null);
        } catch (IncorrectOperationException e) {
            continue;
        }
        final PsiType fieldType = field.getType();
        if (!fieldType.isAssignableFrom(componentType)) {
            continue;
        }
        result.add(fieldName);
    }
    String text = FormInspectionUtil.getText(component.getModule(), component);
    if (text != null) {
        String binding = BindingProperty.suggestBindingFromText(component, text);
        if (binding != null && !result.contains(binding)) {
            result.add(binding);
        }
    }
    final String[] names = ArrayUtil.toStringArray(result);
    Arrays.sort(names);
    return names;
}
Also used : ArrayList(java.util.ArrayList) RadErrorComponent(com.intellij.uiDesigner.radComponents.RadErrorComponent) RadVSpacer(com.intellij.uiDesigner.radComponents.RadVSpacer) IRootContainer(com.intellij.uiDesigner.lw.IRootContainer) IncorrectOperationException(com.intellij.util.IncorrectOperationException) RadHSpacer(com.intellij.uiDesigner.radComponents.RadHSpacer)

Aggregations

IRootContainer (com.intellij.uiDesigner.lw.IRootContainer)1 RadErrorComponent (com.intellij.uiDesigner.radComponents.RadErrorComponent)1 RadHSpacer (com.intellij.uiDesigner.radComponents.RadHSpacer)1 RadVSpacer (com.intellij.uiDesigner.radComponents.RadVSpacer)1 IncorrectOperationException (com.intellij.util.IncorrectOperationException)1 ArrayList (java.util.ArrayList)1