X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fxwt%2FTemplate.java;h=79de777bb6a1fe8abb7c2c5c1e62db646720d786;hb=3da47c535468eb52df828f9625b636978312bd07;hp=62bcc1d91c033bf8abc25aec17dfd5f0bb9b7266;hpb=8fbfbafc7d95060fe63c57872131dc35f92dfdb2;p=org.ibex.core.git diff --git a/src/org/xwt/Template.java b/src/org/xwt/Template.java index 62bcc1d..79de777 100644 --- a/src/org/xwt/Template.java +++ b/src/org/xwt/Template.java @@ -47,7 +47,6 @@ public class Template { private StringBuffer content = null; ///< during XML parsing, this holds partially-read character data; null otherwise private int content_start = 0; ///< line number of the first line of content - private int content_lines = 0; ///< number of lines in content private int startLine = -1; ///< the line number that this element starts on private final Res r; ///< the resource we came from @@ -59,7 +58,8 @@ public class Template { r = r.addExtension(".xwt"); if (r.t != null) return r.t; r.t = new Template(r); - new TemplateHelper().parseit(r.getInputStream(), r.t); + try { new TemplateHelper().parseit(r.getInputStream(), r.t); } + catch (FileNotFoundException e) { Log.log(Template.class, "template not found: "+r); } return r.t; } catch (Exception e) { if (Log.on) Log.log(r.t == null ? "null" : r.t.fileName, e); @@ -70,8 +70,7 @@ public class Template { public static Res resolveStringToResource(String str, XWT xwt, boolean permitAbsolute) { // URL if (str.indexOf("://") != -1) { - // FIXME - //if (permitAbsolute) return Res.fromString(str); + if (permitAbsolute) return (Res)xwt.callMethod("res.url", str, null, null, null, 1); Log.log(Template.class, "absolute URL " + str + " not permitted here"); return null; } @@ -90,7 +89,12 @@ public class Template { // Methods to apply templates //////////////////////////////////////////////////////// - private Template(Res r) { this.r = r; } + private Template(Res r) { + this.r = r; + String f = r.toString(); + if (f != null && !f.equals("")) + fileName = f.substring(f.lastIndexOf('/')+1, f.endsWith(".xwt") ? f.length() - 4 : f.length()); + } /** called before this template is applied or its static object can be externally referenced */ JSScope getStatic() { @@ -122,14 +126,24 @@ public class Template { for (int i=0; children != null && i i; i++) t.content.append('\n'); } } } @@ -317,12 +340,10 @@ public class Template { if ("static".equals(nameOfHeaderNodeBeingProcessed) || state == STATE_IN_TEMPLATE_NODE) { if (t.content == null) { t.content_start = getLine(); - t.content_lines = 0; t.content = new StringBuffer(); } t.content.append(ch, start, length); - t.content_lines++; } else if (nameOfHeaderNodeBeingProcessed != null && state != STATE_FINISHED_TEMPLATE_NODE) { throw new XML.SchemaException("header node <" + nameOfHeaderNodeBeingProcessed + "> cannot have text content");