001: /*
002: * $Header: /cvsroot/webman-cms/source/webman/com/teamkonzept/web/TKHTMLTemplate.java,v 1.8 2001/06/11 14:04:38 alex Exp $
003: *
004: */
005: package com.teamkonzept.web;
006:
007: import java.io.*;
008: import com.oroinc.text.regex.*;
009:
010: import com.teamkonzept.lib.*;
011: import com.teamkonzept.lib.templates.*;
012: import com.teamkonzept.web.templates.*;
013:
014: /**
015: * Die Klasse TKTemplate stellt Methoden fuer die Generierung eines Templates
016: * zur Verfuegung
017: */
018: public class TKHTMLTemplate extends TKTemplate {
019: static protected final String patRefTag = "(SRC|HREF|ACTION|BACKGROUND)";
020:
021: static Pattern patBaseURL;
022:
023: public TKTemplateSyntax newSyntax() {
024: return new TKHTMLTemplateSyntax();
025: }
026:
027: public TKTemplateSyntax newSyntax(Pattern patTKTag) {
028: return new TKHTMLTemplateSyntax(patTKTag);
029: }
030:
031: /************************************************************************
032: /**
033: * Konstruktor1
034: * Ein File-Objekt wird erzeugt un an Konstruktor2 uebergeben
035: *
036: * @param String filename, Pfad und Name des Templates
037: */
038: public TKHTMLTemplate(String location)
039: throws TKTemplateSyntaxException, FileNotFoundException {
040: super (location);
041: }
042:
043: /************************************************************************
044: /**
045: * Konstruktor3
046: * Durch dn Aufruf der statischen Methode init() werden Pattern fuer die
047: * spaetere Patternsuche/ersetzung definiert und global zur Verfuegung gestellt.
048: *
049: *@param ts, Ein TKTemplateSyntax-Objekt
050: *@param filename, das template als File-Objekt
051: */
052: public TKHTMLTemplate(TKTemplateSyntax ts/*, File templateFile*/) {
053: super (ts);
054: }
055:
056: /************************************************************************
057: /**
058: * Die URL-Base setzen
059: * Images sind z.B. meist ausserhalb des CGI-Verzeichnisses abgelegt.
060: * Im Template steht damit nicht der vollstaendige Pfad der Images.
061: * Die Methode setURLBase setzt den vollstaendigen Pfad fuer diese Bilder.
062: *
063: * @param String aBase, der Pfad
064: */
065: public void setURLBase(String aBase) {
066: ((TKHTMLTemplateData) td).base = aBase;
067: }
068:
069: /************************************************************************
070: /**
071: * Durch den Aufruf der Methode doMainSubstitution enthaelt die
072: * Instanzvariable "text" das Template mit den substituierten TKTags.
073: * Die nicht vollstaendigen Pfade werden ersetzt.
074: *
075: * Die URL-Base ist gestzt, wenn Images ausserhalb des CGI-Verzeichnisses
076: * abgelegt sind. Fuer diese Bilder muss der vollstaendige Pfad im
077: * Template gesetzt werden.
078: */
079: public void doTagSubstitution() throws TKTemplateSyntaxException {
080: //long d2 = System.currentTimeMillis();
081: doMainSubstitutions();
082:
083: //long d3 = System.currentTimeMillis();
084: if (((TKHTMLTemplateData) td).base != null) {
085: rel2baseURL();
086: }
087: }
088:
089: /************************************************************************
090: /**
091: * Images sind z.B. meist ausserhalb des CGI-Verzeichnisses abgelegt.
092: * Im Template steht damit nicht der vollstaendige Pfad der Images.
093: * Die Methode setURLBase setzt den vollstaendigen Pfad fuer diese Bilder.
094: */
095: protected void rel2baseURL() {
096: text = Util.substitute(TKReg.getMatcher(), patBaseURL, " $1=\""
097: + ((TKHTMLTemplateData) td).base, text,
098: Util.SUBSTITUTE_ALL);
099: }
100:
101: //{{DECLARE_CONTROLS
102: //}}
103: }
|