Add predefined Velocity and CSS template if wiki builder is assigned to a project
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.wiki / src / net / sourceforge / phpeclipse / wiki / renderer / WikipediaContentRenderer.java
index c2d6e2c..9f3d428 100644 (file)
@@ -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 = "<h1 " + getHeaderCss(getHeaderSize(line)) + ">";
-    getBuffer().append(headerStartTag);
-    getBuffer().append(header);
-    getBuffer().append("</h1>");
-  }
-
-  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 = "<h1 " + getHeaderCss(getHeaderSize(line)) + ">";
+//    getBuffer().append(headerStartTag);
+//    getBuffer().append(header);
+//    getBuffer().append("</h1>");
+//  }
+
+//  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 "<table class=\"wiki-table\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">";
   }
 
-  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 "<html><body><p>" + e.getLocalizedMessage() + "</p></body></html>";
     }