X-Git-Url: http://git.phpeclipse.com diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/renderer/WikipediaContentRenderer.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/renderer/WikipediaContentRenderer.java index c2d6e2c..9f3d428 100644 --- a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/renderer/WikipediaContentRenderer.java +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/renderer/WikipediaContentRenderer.java @@ -5,12 +5,18 @@ package net.sourceforge.phpeclipse.wiki.renderer; import java.io.IOException; import java.io.StringWriter; +import java.util.Properties; import net.sourceforge.phpeclipse.wiki.builder.BuilderRenderEngine; import net.sourceforge.phpeclipse.wiki.editor.WikiEditorPlugin; +import org.apache.velocity.Template; +import org.apache.velocity.VelocityContext; +import org.apache.velocity.app.Velocity; +import org.apache.velocity.app.VelocityEngine; import org.eclipse.core.resources.IProject; -import org.radeox.api.engine.RenderEngine; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.Path; import org.radeox.api.engine.context.InitialRenderContext; import org.radeox.engine.context.BaseInitialRenderContext; import org.radeox.macro.MacroRepository; @@ -28,40 +34,40 @@ public final class WikipediaContentRenderer extends AbstractContentRenderer { } - protected void appendHeader(String line) { - String header = getHeaderText(line); - String headerStartTag = "

"; - getBuffer().append(headerStartTag); - getBuffer().append(header); - getBuffer().append("

"); - } - - private int getHeaderSize(String line) { - int size = 0; - int index = 0; - while (index < line.length() && line.charAt(index) != ' ') { - if (line.charAt(index) == '1') { - size++; - } - index++; - } - return size; - } - - private String getHeaderCss(int size) { - int max = Math.min(3, size); - StringBuffer css = new StringBuffer(); - css.append("class=\"").append("heading"); - for (int i = 0; i < max; i++) { - css.append("-1"); - } - css.append("\""); - return css.toString(); - } - - protected String getHeaderText(String line) { - return line.substring(line.indexOf(' ')).trim(); - } +// protected void appendHeader(String line) { +// String header = getHeaderText(line); +// String headerStartTag = "

"; +// getBuffer().append(headerStartTag); +// getBuffer().append(header); +// getBuffer().append("

"); +// } + +// private int getHeaderSize(String line) { +// int size = 0; +// int index = 0; +// while (index < line.length() && line.charAt(index) != ' ') { +// if (line.charAt(index) == '1') { +// size++; +// } +// index++; +// } +// return size; +// } +// +// private String getHeaderCss(int size) { +// int max = Math.min(3, size); +// StringBuffer css = new StringBuffer(); +// css.append("class=\"").append("heading"); +// for (int i = 0; i < max; i++) { +// css.append("-1"); +// } +// css.append("\""); +// return css.toString(); +// } + +// protected String getHeaderText(String line) { +// return line.substring(line.indexOf(' ')).trim(); +// } protected int getListDepth(String line) { char bullet = getBullet(line); @@ -117,26 +123,57 @@ public final class WikipediaContentRenderer extends AbstractContentRenderer { return ""; } - public final void render(String content, StringBuffer buf, int level, boolean completeHTMLPage) { + public final void render(String templateFileName, String content, StringBuffer buf, int level, boolean completeHTMLPage) { try { - buffer = buf; - if (completeHTMLPage) { - appendHeader(); - } - StringWriter writer = new StringWriter(); - try { + if (templateFileName == null||templateFileName.equals("")) { + if (completeHTMLPage) { + appendHeader(buf); + } + StringWriter writer = new StringWriter(); + try { + engine.setLevel(level); + engine.render(writer, content, context); + buf.append(writer); + } catch (IOException e) { + // never reach + } + if (completeHTMLPage) { + appendFooter(buf); + } + } else { + StringWriter writer = new StringWriter(); engine.setLevel(level); engine.render(writer, content, context); - buffer.append(writer); - } catch (IOException e) { - // never reach - } - if (completeHTMLPage) { - appendFooter(); + + int index = 0; + IPath path = new Path(templateFileName); + String fileName = path.toString(); + String pathName = fileName; + index = fileName.lastIndexOf('/'); + if (index>=0) { + pathName = new Path(fileName.substring(0,index)).toOSString(); + fileName = fileName.substring(index+1); + } + Properties p = new Properties(); + p.setProperty("resource.loader", "file"); + p.setProperty("file.resource.loader.description", "Default Wikipedia Plugin Loader"); + p.setProperty("file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.FileResourceLoader"); + p.setProperty("file.resource.loader.path", pathName); + p.setProperty("file.resource.loader.cache", "false"); + p.setProperty("file.resource.loader.modificationCheckInterval", "0"); + VelocityEngine ve = new VelocityEngine(); + ve.init(p); + + VelocityContext velocityContext = new VelocityContext(); + velocityContext.put("content", String.valueOf(writer) ); + Template template = ve.getTemplate(fileName); + + StringWriter sw = new StringWriter(); + template.merge(velocityContext, sw); + buf.append(sw); } - // return buffer.toString(); } catch (Exception e) { - WikiEditorPlugin.getDefault().log(buffer.toString()); + WikiEditorPlugin.getDefault().log(buf.toString()); WikiEditorPlugin.getDefault().log(e.getLocalizedMessage(), e); // return "

" + e.getLocalizedMessage() + "

"; }