Java tutorial
// // Copyright (C) 2010-2016 Roger Rene Kommer & Micromata GmbH // // 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 de.micromata.genome.gwiki.page.impl.wiki.fragment; import org.apache.commons.lang3.StringUtils; import de.micromata.genome.gwiki.page.GWikiContext; import de.micromata.genome.gwiki.page.GWikiStandaloneContext; import de.micromata.genome.gwiki.page.RenderModes; import de.micromata.genome.gwiki.page.impl.wiki.GWikiMacroRenderFlags; import de.micromata.genome.gwiki.utils.WebUtils; public class GWikiFragmentHeading extends GWikiFragmentChildsBase { private static final long serialVersionUID = 7292812809082522573L; public static final String GWIKI_LAST_HEADING_LEVEL = "GWIKI_LAST_HEADING_LEVEL"; private int level; private String text; private String linkText = null; public GWikiFragmentHeading(int level) { this.level = level; } public GWikiFragmentHeading(int level, String text) { this.level = level; this.text = text; } public void renderBody(GWikiContext ctx) { if (StringUtils.isNotBlank(text) == true) { ctx.append(WebUtils.escapeHtml(text)); } else { renderChilds(ctx); } } public String getLinkText(GWikiContext ctx) { if (StringUtils.isNotEmpty(text) == true) { return text; } if (StringUtils.isNotBlank(linkText) == true) { return linkText; } GWikiStandaloneContext stc = new GWikiStandaloneContext(ctx); stc.setRenderMode(RenderModes.combine(RenderModes.ForText, RenderModes.NoImages, RenderModes.NoLinks)); stc.setWikiElement(ctx.getCurrentElement()); renderChilds(stc); // stc.flush(); linkText = stc.getOutString(); return linkText; } @Override public boolean render(GWikiContext ctx) { ctx.append("<h", Integer.toString(level), ">"); if (RenderModes.ForRichTextEdit.isSet(ctx.getRenderMode()) == false) { ctx.append("<a name=\"", getLinkText(ctx), "\" target=\"_top\"></a>"); } renderBody(ctx); ctx.append("</h", Integer.toString(level), ">\n"); return true; } @Override public void getSource(StringBuilder sb) { getSource(sb, null, null, null); } @Override public void getSource(StringBuilder sb, GWikiFragment parent, GWikiFragment previous, GWikiFragment next) { appendPrevNlIfNeeded(sb, parent, previous, this); sb.append("h").append(level).append(". "); getChildSouce(sb); sb.append("\n"); } @Override public int getRenderModes() { return GWikiMacroRenderFlags.combine(GWikiMacroRenderFlags.NoWrapWithP, GWikiMacroRenderFlags.NewLineAfterEnd, GWikiMacroRenderFlags.NewLineBeforeStart); } public int getLevel() { return level; } public void setLevel(int level) { this.level = level; } public String getText() { return text; } public void setText(String text) { this.text = text; } }