| /******************************************************************************* |
| * Copyright (c) 2004, 2005 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.ui.internal.intro.impl.html; |
| |
| import java.util.Iterator; |
| import java.util.Map; |
| import java.util.Set; |
| |
| /** |
| * Convenience class for generating HTML elements. |
| */ |
| public final class HTMLUtil { |
| /** |
| * Creates an HTML opening element of the form <elementName |
| * elementAttributes> |
| * |
| * @param elementName |
| * the name of the element to create |
| * @param elementAttributes |
| * a map of attribute names and values to be inserted into the |
| * element start tag |
| * @param insertLineBreak |
| * true to insert a line break after the start tag is closed, |
| * false otherwise |
| * @return |
| */ |
| public static StringBuffer createHTMLStartTag(String elementName, |
| Map elementAttributes, boolean insertLineBreak) { |
| StringBuffer element = new StringBuffer(); |
| if (elementName != null) { |
| // open the start tag |
| element.append(openHTMLStartTag(elementName)); |
| // add the attributes, if there are any |
| if (elementAttributes != null && !(elementAttributes.isEmpty())) |
| element.append(IIntroHTMLConstants.SPACE).append( |
| createAttributeList(elementAttributes)); |
| // close the start tag |
| element.append(closeHTMLTag(insertLineBreak)); |
| } |
| return element; |
| } |
| |
| /** |
| * Creates an HTML start tag of the form <elementName> |
| * |
| * @param elementName |
| * the name of the element to create |
| * @param insertLineBreak |
| * true to insert a new line after the start tag |
| * @return |
| */ |
| public static StringBuffer createHTMLStartTag(String elementName, |
| boolean insertLineBreak) { |
| return createHTMLStartTag(elementName, null, insertLineBreak); |
| } |
| |
| /** |
| * Creates an HTML start tag of the form <elementName>and inserts a line |
| * break after the start tag |
| * |
| * @param elementName |
| * the name of the element to create |
| * @return |
| */ |
| public static StringBuffer createHTMLStartTag(String elementName) { |
| return createHTMLStartTag(elementName, null, true); |
| } |
| |
| /** |
| * Creates an HTML closing element of the form </elementName> |
| * |
| * @param elementName |
| * the name of the closing element to create |
| * @param addNewLine |
| * true to add a new line at the end |
| * @return |
| */ |
| public static StringBuffer createHTMLEndTag(String elementName, |
| boolean addNewLine) { |
| StringBuffer closingElement = new StringBuffer(); |
| if (elementName != null) |
| closingElement.append(IIntroHTMLConstants.LT).append( |
| IIntroHTMLConstants.FORWARD_SLASH).append(elementName) |
| .append(closeHTMLTag(addNewLine)); |
| return closingElement; |
| } |
| |
| /** |
| * Given a map of attribute names and values, this method will create a |
| * StringBuffer of the attributes in the form: attrName="attrValue". These |
| * attributes can appear in the start tag of an HTML element. |
| * |
| * @param attributes |
| * the attributes to be converted into a String list |
| * @return |
| */ |
| public static String createAttributeList(Map attributes) { |
| if (attributes == null) |
| return null; |
| StringBuffer attributeList = new StringBuffer(); |
| Set attrNames = attributes.keySet(); |
| for (Iterator it = attrNames.iterator(); it.hasNext();) { |
| Object name = it.next(); |
| Object value = attributes.get(name); |
| if ((name instanceof String) && (value instanceof String)) { |
| attributeList.append(createAttribute((String) name, |
| (String) value)); |
| if (it.hasNext()) { |
| attributeList.append(IIntroHTMLConstants.SPACE); |
| } |
| } |
| } |
| return attributeList.toString(); |
| } |
| |
| /** |
| * Creates an HTML attribute of the form attrName="attrValue" |
| * |
| * @param attrName |
| * the name of the attribute |
| * @param attrValue |
| * the value of the attribute |
| * @return |
| */ |
| public static StringBuffer createAttribute(String attrName, String attrValue) { |
| StringBuffer attribute = new StringBuffer(); |
| if (attrName != null && attrValue != null) { |
| attribute.append(attrName).append(IIntroHTMLConstants.EQUALS) |
| .append(IIntroHTMLConstants.QUOTE).append(attrValue) |
| .append(IIntroHTMLConstants.QUOTE); |
| } |
| return attribute; |
| } |
| |
| public static StringBuffer openHTMLStartTag(String elementName) { |
| return new StringBuffer().append(IIntroHTMLConstants.LT).append( |
| elementName); |
| } |
| |
| public static StringBuffer closeHTMLTag() { |
| return closeHTMLTag(true); |
| } |
| |
| public static StringBuffer closeHTMLTag(boolean newLine) { |
| StringBuffer closing = new StringBuffer() |
| .append(IIntroHTMLConstants.GT); |
| if (newLine) |
| closing.append(IIntroHTMLConstants.NEW_LINE); |
| return closing; |
| } |
| |
| /** |
| * Determine if the contents of two character arrays are equal |
| * |
| * @param a |
| * @param b |
| * @return |
| */ |
| public static boolean equalCharArrayContent(char[] a, char[] b) { |
| if (a.length != b.length) |
| return false; |
| for (int i = 0; i < a.length; i++) { |
| if (a[i] != b[i]) |
| return false; |
| } |
| return true; |
| } |
| } |