| /******************************************************************************* |
| * Copyright (c) 2004, 2016 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.HashMap; |
| import java.util.Iterator; |
| import java.util.Map; |
| import java.util.Vector; |
| |
| /** |
| * This class represents an HTML element. An HTML element has a name, a |
| * collection of attributes, and content |
| */ |
| public class HTMLElement { |
| |
| // the name of the element |
| private String elementName; |
| |
| // a collection of attributes that belong to this element (possibly empty) |
| private Map<String, String> elementAttributes; |
| |
| // a collection of other HTMLElements or Strings contained inside this |
| // element |
| private Vector<Object> elementContent; |
| |
| public HTMLElement(String name) { |
| this.elementName = name; |
| this.elementAttributes = new HashMap<>(); |
| this.elementContent = new Vector<>(); |
| } |
| |
| public HTMLElement(String name, Map<String, String> attributes, Vector<Object> content) { |
| this.elementName = name; |
| this.elementAttributes = attributes; |
| this.elementContent = content; |
| } |
| |
| /** |
| * Add an attribute with the given name and value to this HTMLElement |
| * |
| * @param attributeName |
| * @param attributeValue |
| */ |
| public void addAttribute(String attributeName, String attributeValue) { |
| if(attributeName != null && attributeValue != null) |
| getElementAttributes().put(attributeName, attributeValue); |
| } |
| |
| /** |
| * Add content to this element. The content should be in the form of |
| * another HTMLElement, or a String |
| */ |
| public void addContent(Object content) { |
| getElementContent().add(content); |
| } |
| |
| /** |
| * Get the attributes associated with this element |
| * |
| * @return Returns the elementAttributes. |
| */ |
| public Map<String, String> getElementAttributes() { |
| if (elementAttributes == null) |
| elementAttributes = new HashMap<>(); |
| |
| return elementAttributes; |
| } |
| |
| /** |
| * Set the attributes associated with this element |
| * |
| * @param elementAttributes |
| * The elementAttributes to set. |
| */ |
| public void setElementAttributes(Map<String, String> elementAttributes) { |
| this.elementAttributes = elementAttributes; |
| } |
| |
| /** |
| * Get this element's content |
| * |
| * @return Returns the elementContent. |
| */ |
| public Vector<Object> getElementContent() { |
| if (elementContent == null) |
| elementContent = new Vector<>(); |
| |
| return elementContent; |
| } |
| |
| /** |
| * Set this element's content |
| * |
| * @param elementContent |
| * The elementContent to set. |
| */ |
| public void setElementContent(Vector<Object> elementContent) { |
| this.elementContent = elementContent; |
| } |
| |
| /** |
| * Get the name of this element |
| * |
| * @return Returns the elementName. |
| */ |
| public String getElementName() { |
| return elementName; |
| } |
| |
| /** |
| * Set the name of this element |
| * |
| * @param elementName |
| * The elementName to set. |
| */ |
| public void setElementName(String elementName) { |
| this.elementName = elementName; |
| } |
| |
| @Override |
| public String toString() { |
| StringBuffer element = new StringBuffer(); |
| |
| // add the start tag and attributes |
| element.append( |
| HTMLUtil.createHTMLStartTag( |
| getElementName(), |
| getElementAttributes(), |
| false)); |
| |
| // include the element's content |
| for (Iterator it = getElementContent().iterator(); it.hasNext();) { |
| Object content = it.next(); |
| element.append(content); |
| } |
| |
| // include an end tag |
| element.append(HTMLUtil.createHTMLEndTag(getElementName(), false)); |
| return element.toString(); |
| } |
| } |