@Nonnull public final THISTYPE addChildAt (@Nonnegative final int nIndex, @Nullable final CHILDTYPE aChild) { ValueEnforcer.isBetweenInclusive (nIndex, "Index", 0, getChildCount ()); _internalAddChild (nIndex, aChild); return thisAsT (); }
@Nonnull public final THISTYPE removeChildAt (@Nonnegative final int nIndex) { final CHILDTYPE aRemovedChild = CollectionHelper.removeAndReturnElementAtIndex (m_aChildren, nIndex); if (aRemovedChild != null) afterRemoveChild (nIndex, aRemovedChild); return thisAsT (); }
@Nonnull public final THISTYPE removeChild (@Nullable final CHILDTYPE aChild) { if (aChild != null && m_aChildren != null) { final int nChildIndex = m_aChildren.indexOf (aChild); if (nChildIndex >= 0) removeChildAt (nChildIndex); } return thisAsT (); }
@Nonnull public final THISTYPE addChild (@Nullable final CHILDTYPE aChild) { _internalAddChild (CGlobal.ILLEGAL_UINT, aChild); return thisAsT (); }
@Override @Nonnull public String getPlainText () { if (!hasChildren ()) return ""; final StringBuilder ret = new StringBuilder (); for (final CHILDTYPE aChild : getChildrenFormEmitting (m_aChildren)) { final String sPlainText = aChild.getPlainText (); if (StringHelper.hasText (sPlainText)) { if (ret.length () > 0) ret.append (' '); ret.append (sPlainText); } } return ret.toString (); }
private void _internalAddChild (@CheckForSigned final int nIndex, @Nullable final CHILDTYPE aChild) { if (aChild == this) throw new IllegalArgumentException ("Cannot append child to self: " + aChild); if (aChild != null) { beforeAddChild (aChild); if (m_aChildren == null) m_aChildren = new CommonsArrayList<> (); int nAddIndex; if (nIndex < 0) { nAddIndex = m_aChildren.size (); m_aChildren.add (aChild); } else { nAddIndex = nIndex; m_aChildren.add (nIndex, aChild); } afterAddChild (nAddIndex, aChild); } }
@Nonnull public final THISTYPE sortAllChildren (@Nonnull final Comparator <? super CHILDTYPE> aComparator) { ValueEnforcer.notNull (aComparator, "Comparator"); if (m_aChildren != null) m_aChildren.sort (aComparator); return thisAsT (); }
@Override @OverrideOnDemand @OverridingMethodsMustInvokeSuper public boolean canConvertToMicroNode (@Nonnull final IHCConversionSettingsToNode aConversionSettings) { if (hasChildren ()) { // If at least one child is present and can be converted to a node, the // whole list can be converted to a node for (final CHILDTYPE aChild : m_aChildren) if (aChild.canConvertToMicroNode (aConversionSettings)) return true; } // No children, or all children cannot be converted -> cannot convert this // list return false; }
@Nonnull @Override @OverrideOnDemand @OverridingMethodsMustInvokeSuper protected IMicroContainer internalConvertToMicroNode (@Nonnull final IHCConversionSettingsToNode aConversionSettings) { final IMicroContainer ret = new MicroContainer (); if (hasChildren ()) for (final CHILDTYPE aNode : getChildrenFormEmitting (m_aChildren)) ret.appendChild (aNode.convertToMicroNode (aConversionSettings)); return ret; }
@Nonnull public final THISTYPE removeAllChildren () { if (m_aChildren != null) { // Call method to ensure callback methods are invoked while (m_aChildren.isNotEmpty ()) removeChildAt (0); m_aChildren = null; } return thisAsT (); }