org.fusesource.ide.zk.jmx.jmxdoc.JmxDocFormText.java Source code

Java tutorial

Introduction

Here is the source code for org.fusesource.ide.zk.jmx.jmxdoc.JmxDocFormText.java

Source

/**
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.fusesource.ide.zk.jmx.jmxdoc;

import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.FontData;
import org.eclipse.ui.forms.widgets.FormText;

import java.util.List;

/**
 * TODO: Comment.
 * 
 * @author Mark Masse
 */
public final class JmxDocFormText {

    public static final String FONT_CODE_KEY = "code";
    public static final String FONT_H1_KEY = "H1";
    public static final String FONT_H3_KEY = "H3";
    public static final String INDENT = "    ";
    public static final String HEADING_ATTRIBUTE_DETAIL = "Attribute Detail";
    public static final String HEADING_OPERATION_DETAIL = "Operation Detail";
    public static final String HEADING_PARAMETERS = "Parameters:";
    public static final String HEADING_RETURNS = "Returns:";

    public static void initFormText(FormText formText) {

        formText.setWhitespaceNormalized(false);

        Font formTextFont = formText.getFont();
        FontData formTextFontData = formTextFont.getFontData()[0];

        FontData h1FontData = new FontData(formTextFontData.getName(), formTextFontData.getHeight() + 5, SWT.BOLD);
        final Font h1Font = new Font(formTextFont.getDevice(), h1FontData);
        formText.setFont(FONT_H1_KEY, h1Font);

        FontData h3FontData = new FontData(formTextFontData.getName(), formTextFontData.getHeight() + 3, SWT.BOLD);
        final Font h3Font = new Font(formTextFont.getDevice(), h3FontData);
        formText.setFont(FONT_H3_KEY, h3Font);

        Font codeFont = JFaceResources.getTextFont();
        formText.setFont(FONT_CODE_KEY, codeFont);

        formText.addDisposeListener(new DisposeListener() {

            @Override
            public void widgetDisposed(DisposeEvent e) {
                h1Font.dispose();
                h3Font.dispose();
            }
        });

        // Set fontKeySet = JFaceResources.getFontRegistry().getKeySet();
        // if (fontKeySet != null) {
        // for (Object fontKey : fontKeySet) {
        // System.out.println(fontKey);
        // }
        // }

    }

    public static String getFormTextHeader(MBeanFeatureDoc<?> featureDoc) {
        StringBuilder jmxdoc = new StringBuilder();

        jmxdoc.append("<p>");
        jmxdoc.append("<span font=\"" + FONT_H3_KEY + "\">");
        jmxdoc.append(featureDoc.getName());
        jmxdoc.append("</span>");
        jmxdoc.append("</p>");

        return jmxdoc.toString();
    }

    public static String getFormTextDescription(MBeanFeatureDoc<?> featureDoc) {
        StringBuilder jmxdoc = new StringBuilder();

        String name = featureDoc.getRawName();
        String description = featureDoc.getDescription();
        if (description != null && !description.equals(name) && !description.trim().isEmpty()) {
            jmxdoc.append("<p>");
            jmxdoc.append(INDENT);
            jmxdoc.append(description);
            jmxdoc.append("</p>");
        }

        return jmxdoc.toString();
    }

    public static String getFormTextSignature(MBeanOperationDoc operationDoc) {

        StringBuilder jmxdoc = new StringBuilder();

        String name = operationDoc.getName();
        String returnType = operationDoc.getReturnType().getName();

        jmxdoc.append("<p>");
        jmxdoc.append("<span font=\"" + FONT_CODE_KEY + "\">");
        jmxdoc.append(returnType).append(" ").append(name).append("(");

        // Signature Parameters

        List<MBeanParameterDoc> parameters = operationDoc.getParameters();
        int parameterCount = parameters.size();
        for (int i = 0; i < parameterCount; i++) {
            MBeanParameterDoc parameter = parameters.get(i);
            String parameterType = parameter.getType().getName();
            String parameterName = parameter.getName();
            jmxdoc.append(parameterType).append(" ").append(parameterName);

            if (i < parameterCount - 1) {
                jmxdoc.append(", ");
            }
        }

        jmxdoc.append(")");
        jmxdoc.append("</span>");
        jmxdoc.append("</p>");

        return jmxdoc.toString();
    }

    public static String getFormTextSignature(MBeanAttributeDoc attributeDoc) {
        StringBuilder jmxdoc = new StringBuilder();

        String name = attributeDoc.getName();
        String returnType = attributeDoc.getType().getName();

        jmxdoc.append("<p>");
        jmxdoc.append("<span font=\"" + FONT_CODE_KEY + "\">");
        jmxdoc.append(returnType).append(" ").append(name).append("()");
        jmxdoc.append("</span>");
        jmxdoc.append("</p>");

        return jmxdoc.toString();
    }

    public static String getFormTextParameters(MBeanOperationDoc operationDoc) {
        StringBuilder jmxdoc = new StringBuilder();

        List<MBeanParameterDoc> parameters = operationDoc.getParameters();
        int parameterCount = parameters.size();

        if (parameterCount > 0) {
            jmxdoc.append("<p>");
            jmxdoc.append(INDENT);
            jmxdoc.append("<b>");
            jmxdoc.append(HEADING_PARAMETERS);
            jmxdoc.append("</b>");
            jmxdoc.append("</p>");

            jmxdoc.append("<p>");

            for (int i = 0; i < parameterCount; i++) {
                MBeanParameterDoc parameter = parameters.get(i);

                String parameterName = parameter.getName();
                String parameterDescription = parameter.getDescription();

                jmxdoc.append(INDENT);
                jmxdoc.append(INDENT);
                jmxdoc.append("<span font=\"" + FONT_CODE_KEY + "\">");
                jmxdoc.append(parameterName);
                jmxdoc.append("</span>");
                jmxdoc.append(" - ").append(parameterDescription);

                if (i < parameterCount - 1) {
                    jmxdoc.append("<br/>");
                }
            }

            jmxdoc.append("</p>");
        }

        return jmxdoc.toString();
    }

    public static String getFormTextReturns(JmxType returnType) {
        StringBuilder jmxdoc = new StringBuilder();

        String returnTypeString = returnType.getName();

        if (returnTypeString != null && !returnTypeString.equals("void")) {
            jmxdoc.append("<p>");
            jmxdoc.append(INDENT);
            jmxdoc.append("<b>");
            jmxdoc.append(HEADING_RETURNS);
            jmxdoc.append("</b>");
            jmxdoc.append("</p>");

            jmxdoc.append("<p>");

            jmxdoc.append(INDENT);
            jmxdoc.append(INDENT);
            jmxdoc.append("<span font=\"" + FONT_CODE_KEY + "\">");
            jmxdoc.append(returnTypeString);
            jmxdoc.append("</span>");
            jmxdoc.append("<br/>");
            jmxdoc.append("</p>");
        }

        return jmxdoc.toString();
    }

    public static String getFormText(MBeanDoc mbeanDoc) {
        StringBuilder jmxdoc = new StringBuilder();

        jmxdoc.append("<form>");

        List<MBeanAttributeDoc> attributes = mbeanDoc.getAttributes();
        int attributeCount = attributes.size();

        if (attributeCount > 0) {
            jmxdoc.append("<p>");
            jmxdoc.append("<span font=\"" + FONT_H1_KEY + "\">");
            jmxdoc.append(HEADING_ATTRIBUTE_DETAIL);
            jmxdoc.append("</span>");
            jmxdoc.append("</p>");

            // jmxdoc.append("<p>");

            for (int i = 0; i < attributeCount; i++) {
                MBeanAttributeDoc attributeDoc = attributes.get(i);

                jmxdoc.append(getFormTextHeader(attributeDoc));
                jmxdoc.append(getFormTextSignature(attributeDoc));
                jmxdoc.append(getFormTextDescription(attributeDoc));
                jmxdoc.append(getFormTextReturns(attributeDoc.getType()));

                if (i < attributeCount - 1) {
                    jmxdoc.append("<br/>");
                }
            }

            // jmxdoc.append("</p>");
        }

        List<MBeanOperationDoc> operations = mbeanDoc.getOperations();
        int operationCount = operations.size();

        if (operationCount > 0) {

            if (attributeCount > 0) {

            }

            jmxdoc.append("<p>");
            jmxdoc.append("<span font=\"" + FONT_H1_KEY + "\">");
            jmxdoc.append(HEADING_OPERATION_DETAIL);
            jmxdoc.append("</span>");
            jmxdoc.append("</p>");

            // jmxdoc.append("<p>");

            for (int i = 0; i < operationCount; i++) {
                MBeanOperationDoc operationDoc = operations.get(i);

                jmxdoc.append(getFormTextHeader(operationDoc));
                jmxdoc.append(getFormTextSignature(operationDoc));
                jmxdoc.append(getFormTextDescription(operationDoc));
                jmxdoc.append(getFormTextParameters(operationDoc));
                jmxdoc.append(getFormTextReturns(operationDoc.getReturnType()));

                if (i < operationCount - 1) {
                    jmxdoc.append("<br/>");
                }
            }

            // jmxdoc.append("</p>");
        }

        jmxdoc.append("</form>");

        return jmxdoc.toString();
    }

    public static String getFormText(MBeanFeatureDoc<?> featureDoc, boolean includeHeader) {
        if (featureDoc instanceof MBeanOperationDoc) {
            return getFormText((MBeanOperationDoc) featureDoc, includeHeader);
        } else if (featureDoc instanceof MBeanAttributeDoc) {
            return getFormText((MBeanAttributeDoc) featureDoc, includeHeader);
        }

        return "<form></form>";
    }

    public static String getFormText(MBeanAttributeDoc attributeDoc, boolean includeHeader) {
        StringBuilder jmxdoc = new StringBuilder();

        jmxdoc.append("<form>");

        if (includeHeader) {
            jmxdoc.append(getFormTextHeader(attributeDoc));
        }

        jmxdoc.append(getFormTextSignature(attributeDoc));
        jmxdoc.append(getFormTextDescription(attributeDoc));
        jmxdoc.append(getFormTextReturns(attributeDoc.getType()));

        jmxdoc.append("</form>");

        return jmxdoc.toString();
    }

    public static String getFormText(MBeanOperationDoc operationDoc, boolean includeHeader) {
        StringBuilder jmxdoc = new StringBuilder();

        jmxdoc.append("<form>");

        if (includeHeader) {
            jmxdoc.append(getFormTextHeader(operationDoc));
        }

        jmxdoc.append(getFormTextSignature(operationDoc));
        jmxdoc.append(getFormTextDescription(operationDoc));
        jmxdoc.append(getFormTextParameters(operationDoc));
        jmxdoc.append(getFormTextReturns(operationDoc.getReturnType()));

        jmxdoc.append("</form>");

        return jmxdoc.toString();
    }

}