/** * Construit une chaîne de caractères qui contiendra le noeud spécifié ainsi que tous les noeuds * enfants. * * @param model Arborescence à écrire. * @param node Noeud de l'arborescence à écrire. * @param buffer Buffer dans lequel écrire le noeud. * @param level Niveau d'indentation (à partir de 0). * @param last Indique si les niveaux précédents sont en train d'écrire leurs derniers items. * @return Le tableau {@code last}, qui peut éventuellement avoir été agrandit. */ private static boolean[] format( final TreeModel model, final Object node, final Appendable buffer, final int level, boolean[] last, final String lineSeparator) throws IOException { for (int i = 0; i < level; i++) { if (i != level - 1) { buffer.append(last[i] ? '\u00A0' : '\u2502').append("\u00A0\u00A0\u00A0"); } else { buffer.append(last[i] ? '\u2514' : '\u251C').append("\u2500\u2500\u2500"); } } buffer.append(String.valueOf(node)).append(lineSeparator); if (level >= last.length) { last = XArray.resize(last, level * 2); } final int count = model.getChildCount(node); for (int i = 0; i < count; i++) { last[level] = (i == count - 1); last = format(model, model.getChild(node, i), buffer, level + 1, last, lineSeparator); } return last; }
/** * Returns the list of unprocessed arguments. If the number of remaining arguments is greater than * the specified maximum, then this method invokes {@link #illegalArgument}. * * @param max Maximum remaining arguments autorized. * @return An array of remaining arguments. Will never be longer than {@code max}. */ public String[] getRemainingArguments(final int max) { int count = 0; final String[] left = new String[Math.min(max, arguments.length)]; for (int i = 0; i < arguments.length; i++) { final String arg = arguments[i]; if (arg != null) { if (count >= max) { illegalArgument( new IllegalArgumentException( Errors.getResources(locale) .getString(ErrorKeys.UNEXPECTED_PARAMETER_$1, arguments[i]))); } left[count++] = arg; } } return XArray.resize(left, count); }