public static PropertyValue createFromSuggested( DesignComponent component, String suggestedMainName, Collection<String> additionalReservedNames) { assert component.getDocument().getTransactionManager().isAccess(); Collection<? extends CodeNamePresenter> presenters = component.getPresenters(CodeNamePresenter.class); if (presenters.isEmpty()) Debug.warning("CodeNamePresenter is missing for", component); // NOI18N HashSet<String> names = new HashSet<String>(); gatherNames(component.getDocument().getRootComponent(), component, names); if (additionalReservedNames != null) names.addAll(additionalReservedNames); suggestedMainName = checkForJavaIdentifierCompliant(suggestedMainName); if (checkIfNameAlreadyReserved(presenters, suggestedMainName, names)) { int index = suggestedMainName.length(); while (index >= 1 && Character.isDigit(suggestedMainName.charAt(index - 1))) index--; int number = index < suggestedMainName.length() ? Integer.parseInt(suggestedMainName.substring(index)) : 1; suggestedMainName = suggestedMainName.substring(0, index); suggestedMainName = findNumberedInstanceName(presenters, suggestedMainName, number, names); } return MidpTypes.createStringValue(suggestedMainName); }
private static void gatherNames( DesignComponent component, DesignComponent excludeComponent, HashSet<String> names) { assert component.getDocument().getTransactionManager().isAccess(); if (component == excludeComponent) return; Collection<? extends CodeNamePresenter> presenters = component.getPresenters(CodeNamePresenter.class); for (CodeNamePresenter presenter : presenters) { List<String> reservedNames = presenter.getReservedNames(); if (reservedNames != null) names.addAll(reservedNames); } for (DesignComponent child : component.getComponents()) gatherNames(child, excludeComponent, names); }
@Override public void generateParameterCode( DesignComponent component, MultiGuardedSection section, int index) { PropertyValue value = component.readProperty(PROP_CONSTRAINTS); if (value.getKind() == PropertyValue.Kind.VALUE) { int constraint = MidpTypes.getInteger(value); int core = constraint & TextFieldCD.VALUE_CONSTRAINT_MASK; CodeWriter writer = section.getWriter(); switch (core) { case TextFieldCD.VALUE_ANY: writer.write("TextField.ANY"); // NOI18N break; case TextFieldCD.VALUE_EMAILADDR: writer.write("TextField.EMAILADDR"); // NOI18N break; case TextFieldCD.VALUE_NUMERIC: writer.write("TextField.NUMERIC"); // NOI18N break; case TextFieldCD.VALUE_PHONENUMBER: writer.write("TextField.PHONENUMBER"); // NOI18N break; case TextFieldCD.VALUE_URL: writer.write("TextField.URL"); // NOI18N break; case TextFieldCD.VALUE_DECIMAL: writer.write("TextField.DECIMAL"); // NOI18N break; default: writer.write(Integer.toString(core)); } if ((constraint & TextFieldCD.VALUE_PASSWORD) != 0) { writer.write(" | TextField.PASSWORD"); // NOI18N } if ((constraint & TextFieldCD.VALUE_UNEDITABLE) != 0) { writer.write(" | TextField.UNEDITABLE"); // NOI18N } if ((constraint & TextFieldCD.VALUE_SENSITIVE) != 0) { writer.write(" | TextField.SENSITIVE"); // NOI18N } if ((constraint & TextFieldCD.VALUE_NON_PREDICTIVE) != 0) { writer.write(" | TextField.NON_PREDICTIVE"); // NOI18N } if ((constraint & TextFieldCD.VALUE_INITIAL_CAPS_WORD) != 0) { writer.write(" | TextField.INITIAL_CAPS_WORD"); // NOI18N } if ((constraint & TextFieldCD.VALUE_INITIAL_CAPS_SENTENCE) != 0) { writer.write(" | TextField.INITIAL_CAPS_SENTENCE"); // NOI18N } return; } super.generateParameterCode(component, section, index); }
@Override public void postInitialize(DesignComponent component) { component.writeProperty(PROP_MAX_SIZE, MidpTypes.createIntegerValue(32)); component.writeProperty(PROP_CONSTRAINTS, MidpTypes.createIntegerValue(VALUE_ANY)); }