/* * GNU LESSER GENERAL PUBLIC LICENSE Copyright (C) 2006 The Lobo Project * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with this library; if not, write to the Free Software Foundation, Inc., * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * * Contact info: lobochief@users.sourceforge.net */ package com.nvarghese.beowulf.common.cobra.html.domimpl; // import org.cobra_grendel.html.style.*; import org.w3c.dom.html2.HTMLHeadingElement; public class HTMLHeadingElementImpl extends HTMLAbstractUIElement implements HTMLHeadingElement { public HTMLHeadingElementImpl(String name) { super(name); } public String getAlign() { return this.getAttribute("align"); } public void setAlign(String align) { this.setAttribute("align", align); } private final float getHeadingFontSize() { String tagName = this.getTagName(); try { int lastCharValue = tagName.charAt(1) - '0'; switch (lastCharValue) { case 1: return 24.0f; case 2: return 18.0f; case 3: return 15.0f; case 4: return 12.0f; case 5: return 10.0f; case 6: return 8.0f; } } catch (Exception thrown) { this.warn("getHeadingFontSize(): Bad heading tag: " + this.getTagName(), thrown); } return 14.0f; } private final String getHeadingFontSizeText() { String tagName = this.getTagName(); try { int lastCharValue = tagName.charAt(1) - '0'; switch (lastCharValue) { case 1: return "24pt"; case 2: return "18pt"; case 3: return "13.55pt"; case 4: return "12pt"; case 5: return "10pt"; case 6: return "7.55pt"; } } catch (Exception thrown) { this.warn("getHeadingFontSizeText(): Bad heading tag: " + this.getTagName(), thrown); } return "14px"; } /* * * protected RenderState createRenderState(RenderState prevRenderState) { * float fontSize = this.getHeadingFontSize(); //(can't put a RenderState in * the middle - messes up "em" sizes). //prevRenderState = new * FontSizeRenderState(prevRenderState, fontSize, java.awt.Font.BOLD); * return new HeadingRenderState(prevRenderState, this); } */ protected void appendInnerTextImpl(StringBuffer buffer) { int length = buffer.length(); int lineBreaks; if (length == 0) { lineBreaks = 2; } else { int start = length - 4; if (start < 0) { start = 0; } lineBreaks = 0; for (int i = start; i < length; i++) { char ch = buffer.charAt(i); if (ch == '\n') { lineBreaks++; } } } for (int i = 0; i < 2 - lineBreaks; i++) { buffer.append("\r\n"); } super.appendInnerTextImpl(buffer); buffer.append("\r\n\r\n"); } /* * * protected AbstractCSS2Properties createDefaultStyleSheet() { * ComputedCSS2Properties css = new ComputedCSS2Properties(this); * css.internalSetLC("font-size", this.getHeadingFontSizeText()); * css.internalSetLC("font-weight", "bolder"); return css; } */ }