private void printHandler()

in gshell-support/gshell-clp/src/main/java/org/apache/geronimo/gshell/clp/Printer.java [235:294]


    private void printHandler(final PrintWriter out, final Handler handler, final int len) {
        assert out != null;
        assert handler != null;

        //
        // TODO: Expose these as configurables
        //
        
        int terminalWidth = 80;
        String prefix = "  ";
        String separator = "    ";
        int prefixSeperatorWidth = prefix.length() + separator.length();
        int descriptionWidth = terminalWidth - len - prefixSeperatorWidth;

        // Only render if there is help-text, else its hidden
        String desc = getHelpText(handler.descriptor);
        if (desc == null) {
            return;
        }

        // Render the prefix and syntax
        String nameAndToken = getNameAndToken(handler);
        out.print(prefix);
        out.print(nameAndToken);

        // Render the seperator
        for (int i = nameAndToken.length(); i < len; ++i) {
            out.print(' ');
       	}
        out.print(separator);

        // Render the description splitting it over multipule lines if its longer than column size
        while (desc != null && desc.length() > 0) {
            //
            // FIXME: Only split on words
            //

            int i = desc.indexOf('\n');

            if (i >= 0 && i <= descriptionWidth) {
                out.println(desc.substring(0, i));
                desc = desc.substring(i + 1);

                if (desc.length() > 0) {
                    indent(out, len + prefixSeperatorWidth);
                }

                continue;
            }

            if (desc.length() <= descriptionWidth) {
                out.println(desc);
                break;
            }

            out.println(desc.substring(0, descriptionWidth));
            desc = desc.substring(descriptionWidth);
            indent(out, len + prefixSeperatorWidth);
        }
    }