/* * IzPack - Copyright 2001-2008 Julien Ponge, All Rights Reserved. * * http://izpack.org/ * http://izpack.codehaus.org/ * * Copyright 2005 Klaus Bartz * * 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 com.izforge.izpack.util; import com.izforge.izpack.installer.AutomatedInstallData; import com.izforge.izpack.installer.IzPanel; import java.util.Iterator; /** * A helper class which creates a summary from all panels. This class calls all declared panels for * a summary To differ between caption and message, HTML is used to draw caption in bold and indent * messaged a little bit. * * @author Klaus Bartz */ public class SummaryProcessor { private static String HTML_HEADER; private static String HTML_FOOTER = "</body>\n</html>\n"; private static String BODY_START = "<div class=\"body\">"; private static String BODY_END = "</div>"; private static String HEAD_START = "<h1>"; private static String HEAD_END = "</h1>\n"; static { // Initialize HTML header and footer. StringBuffer sb = new StringBuffer(256); sb.append("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n").append( "<html>\n" + "<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">" + "<head>\n<STYLE TYPE=\"text/css\" media=screen,print>\n").append( "h1{\n font-size: 100%;\n margin: 1em 0 0 0;\n padding: 0;\n}\n").append( "div.body {\n font-size: 100%;\n margin: 0mm 2mm 0 8mm;\n padding: 0;\n}\n") .append("</STYLE>\n</head>\n<body>\n"); HTML_HEADER = sb.toString(); } /** * Returns a HTML formated string which contains the summary of all panels. To get the summary, * the methods * {@link IzPanel#getSummaryCaption} and {@link IzPanel#getSummaryBody()} of all * panels are called. * * @param idata AutomatedInstallData which contains the panel references * @return a HTML formated string with the summary of all panels */ public static String getSummary(AutomatedInstallData idata) { Iterator<IzPanel> iter = idata.panels.iterator(); StringBuffer sb = new StringBuffer(2048); sb.append(HTML_HEADER); while (iter.hasNext()) { IzPanel panel = iter.next(); String caption = panel.getSummaryCaption(); String msg = panel.getSummaryBody(); // If no caption or/and message, ignore it. if (caption == null || msg == null) { continue; } sb.append(HEAD_START).append(caption).append(HEAD_END); sb.append(BODY_START).append(msg).append(BODY_END); } sb.append(HTML_FOOTER); return (sb.toString()); } }