gt:     String label = _document.getDocumentPath().getUserPath();
context: /*
   * Copyright (c) 1998-2012 Caucho Technology -- all rights reserved
   *
   * This file is part of Resin(R) Open Source
   *
   * Each copy or derived work must preserve the copyright notice and this
   * notice unmodified.
   *
   * Resin Open Source is free software; you can redistribute it and/or modify
   * it under the terms of the GNU General Public License as published by
   * the Free Software Foundation; either version 2 of the License, or
   * (at your option) any later version.
   *
   * Resin Open Source is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty
   * of NON-INFRINGEMENT.  See the GNU General Public License for more
   * details.
   *
   * You should have received a copy of the GNU General Public License
   * along with Resin Open Source; if not, write to the
   *
   *   Free Software Foundation, Inc.
   *   59 Temple Place, Suite 330
   *   Boston, MA 02111-1307  USA
   *
   * @author Emil Ong
   */
  
  package com.caucho.xtpdoc;
  
  import javax.xml.stream.XMLStreamException;
  import javax.xml.stream.XMLStreamWriter;
  import java.io.IOException;
  import java.io.PrintWriter;
  
  import java.util.HashSet;
  
  public class Header {
    private Document _document;
    private String _product;
    private String _version;
    private String _title;
    private String _browserTitle;
    private String _author;
    private String _date;
    private Section _description;
    private Keywords _keywords;
    private String _tutorial;
    private boolean _cauchoSite = true;
      
      
  
    public Header(Document document)
    {
      _document = document;
    }
  
    public void setCauchoSite(boolean cauchoSite){
  
      _cauchoSite = cauchoSite;
  
    }
  
    public void setProduct(String product)
    {
      _product = product;
    }
  
    public void setVersion(String version)
    {
      _version = version;
    }
  
    public void setTitle(String title)
    {
      _title = title;
    }
  
    public void setBrowserTitle(String title)
    {
      _browserTitle = title;
    }
  
    public String getTitle()
    {
      return _title;
    }
  
    public void setDate(String date)
    {
      _date = date;
    }
  
    public void setAuthor(String author)
    {
      _author = author;
    }
  
    public void setResin2_0(String resin2_0)
    {
    }
  
    public void setType(String type)
    {
    }
  
    public void setTutorialStartpage(String startPage)
    {
      _tutorial = startPage;
    }
  
    public String getTutorialStartPage()
    {
      return _tutorial;
    }
  
    public void setLevel(String level)
    {
    }
  
    public void setKeywords(Keywords keywords)
    {
      _keywords = keywords;
    }
  
    public ContentItem getDescription()
    {
      return _description;
    }
  
    public Section createDescription()
    {
      _description = new S1(_document);
      return _description;
    }
  
    public void writeHtml(XMLStreamWriter out)
      throws XMLStreamException
    {
      out.writeStartElement("head");
  
      out.writeEmptyElement("meta");
      out.writeAttribute("http-equiv", "Content-Type");
      out.writeAttribute("content", "text/html; charset=utf-8");
  
      if (_product != null) {
        out.writeEmptyElement("meta");
        out.writeAttribute("name", "product");
        out.writeAttribute("content", _product);
      }
  
      if (_version != null) {
        out.writeEmptyElement("meta");
        out.writeAttribute("name", "version");
        out.writeAttribute("content", _version);
      }
  
      if (_keywords != null) {
        out.writeEmptyElement("meta");
        out.writeAttribute("name", "keywords");
        out.writeAttribute("content", _keywords.toString());
      }
  
      if (_cauchoSite) {
          out.writeStartElement("script");
          out.writeAttribute("type", "text/javascript");
          out.writeCharacters(
                  "    var _gaq = _gaq || [];\n" +
          		"    _gaq.push(['_setAccount', 'UA-27887123-1']);\n" +
          		"    _gaq.push(['_setDomainName', 'caucho.com']);\n" +
          		"    _gaq.push(['_trackPageview']);\n" +
          		"    (function() {\n" +
          		"          var ga = document.createElement('script'); \n " +
          		"          ga.type = 'text/javascript'; ga.async = true;\n"+
          		"          ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + " +
          		"                  '.google-analytics.com/ga.js';" +
          		"          var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n" +
          		"    })();");
          out.writeEndElement(); // script
  
      }
  
      out.writeEmptyElement("link");
      out.writeAttribute("rel", "STYLESHEET");
      out.writeAttribute("type", "text/css");
      out.writeAttribute("href", _document.getContextPath() + "/css/default.css");
  
      out.writeEmptyElement("link");
      out.writeAttribute("rel", "shortcut icon");
      out.writeAttribute("href", _document.getContextPath() + "/images/favicon.ico");
  
      // this must be a start/end - browsers don't like empty <script/> tags
      out.writeStartElement("script");
      out.writeAttribute("type", "text/javascript");
      out.writeAttribute("src", _document.getContextPath() + "/js/default.js");
      out.writeEndElement(); // script
  
      out.writeStartElement("script");
      out.writeAttribute("type", "text/javascript");
  
      // this init() function is in default.js
      out.writeCharacters("  window.onload = function() {\n");
      out.writeCharacters("    init();\n");
      out.writeCharacters("  };\n");
      out.writeEndElement(); // script
  
      out.writeStartElement("title");
  
      NavigationItem nav = _document.getNavigation();
  
      if (nav != null
          && nav.getNavigation() != null
          && nav.getNavigation().getSection() != null)
        out.writeCharacters(nav.getNavigation().getSection());
      
      out.writeCharacters(_title);
      out.writeEndElement(); // title
  
      out.writeEndElement(); // head
    }
  
    public void writeLaTeXTop(PrintWriter out)
      throws IOException
    {
      out.println("\\usepackage[margin=1in]{geometry}");
      out.println("\\usepackage{url}");
      out.println("\\usepackage{hyperref}");
      out.println("\\usepackage{graphicx}");
      out.println("\\usepackage{color}");
      out.println("\\usepackage{colortbl}");
      out.println("\\usepackage{fancyvrb}");
      out.println("\\usepackage{listings}");
      out.println();
      out.println("\\definecolor{example-gray}{gray}{0.8}");
      out.println("\\definecolor{results-gray}{gray}{0.6}");
      out.println();
      out.println("\\title{" + _title + "}");
      //XXX: product & version
    }
  
    public void writeLaTeX(PrintWriter out)
      throws IOException
    {
      String label = _document.getDocumentPath().getUserPath();
      
      out.println("\\label{" + label + "}");
      out.println("\\hypertarget{" + label + "}{}");
      
      out.println("\\section{" + LaTeXUtil.escapeForLaTeX(_title) + "}");
    }
  
    public void writeLaTeXEnclosed(PrintWriter out)
      throws IOException
    {
  