src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/DocType.java
changeset 47848 6b1311fbbaba
parent 47216 71c04702a3d5
child 53562 0d9dee001667
equal deleted inserted replaced
47847:7640bc1eb94f 47848:6b1311fbbaba
     1 /*
     1 /*
     2  * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 2010, 2017, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.  Oracle designates this
     7  * published by the Free Software Foundation.  Oracle designates this
    23  * questions.
    23  * questions.
    24  */
    24  */
    25 
    25 
    26 package jdk.javadoc.internal.doclets.formats.html.markup;
    26 package jdk.javadoc.internal.doclets.formats.html.markup;
    27 
    27 
    28 import java.io.IOException;
       
    29 import java.io.Writer;
       
    30 
       
    31 import jdk.javadoc.internal.doclets.toolkit.Content;
       
    32 import jdk.javadoc.internal.doclets.toolkit.util.DocletConstants;
       
    33 
       
    34 /**
    28 /**
    35  * Class for generating document type for HTML pages of javadoc output.
    29  *  Supported DOCTYPE declarations.
    36  *
    30  *
    37  *  <p><b>This is NOT part of any supported API.
    31  *  <p><b>This is NOT part of any supported API.
    38  *  If you write code that depends on this, you do so at your own risk.
    32  *  If you write code that depends on this, you do so at your own risk.
    39  *  This code and its internal interfaces are subject to change or
    33  *  This code and its internal interfaces are subject to change or
    40  *  deletion without notice.</b>
    34  *  deletion without notice.</b>
    41  *
    35  *
    42  * @author Bhavesh Patel
    36  * @author Bhavesh Patel
    43  */
    37  */
    44 public class DocType extends Content {
    38 public enum DocType {
       
    39     HTML4_TRANSITIONAL("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" "
       
    40             + "\"http://www.w3.org/TR/html4/loose.dtd\">"),
       
    41     HTML5("<!DOCTYPE HTML>");
    45 
    42 
    46     private String docType;
    43     public final String text;
    47 
    44 
    48     public static final DocType TRANSITIONAL =
    45     DocType(String text) {
    49             new DocType("Transitional", "http://www.w3.org/TR/html4/loose.dtd");
    46         this.text = text;
    50 
       
    51     public static final DocType HTML5 = new DocType();
       
    52 
       
    53     /**
       
    54      * Constructor to construct a DocType object.
       
    55      *
       
    56      * @param type the doctype to be added
       
    57      * @param dtd the dtd of the doctype
       
    58      */
       
    59     private DocType(String type, String dtd) {
       
    60         docType = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 " + type +
       
    61                 "//EN\" \"" + dtd + "\">" + DocletConstants.NL;
       
    62     }
    47     }
    63 
    48 
    64     /**
    49     public static DocType forVersion(HtmlVersion v) {
    65      * Constructor to construct a DocType object.
    50         switch (v) {
    66      */
    51             case HTML4: return HTML4_TRANSITIONAL;
    67     private DocType() {
    52             case HTML5: return HTML5;
    68         docType = "<!DOCTYPE HTML>" + DocletConstants.NL;
    53             default: throw new IllegalArgumentException();
    69     }
    54         }
    70 
       
    71     /**
       
    72      * This method is not supported by the class.
       
    73      *
       
    74      * @param content content that needs to be added
       
    75      * @throws UnsupportedOperationException always
       
    76      */
       
    77     public void addContent(Content content) {
       
    78         throw new UnsupportedOperationException();
       
    79     }
       
    80 
       
    81     /**
       
    82      * This method is not supported by the class.
       
    83      *
       
    84      * @param stringContent string content that needs to be added
       
    85      * @throws UnsupportedOperationException always
       
    86      */
       
    87     @Override
       
    88     public void addContent(CharSequence stringContent) {
       
    89         throw new UnsupportedOperationException();
       
    90     }
       
    91 
       
    92     /**
       
    93      * {@inheritDoc}
       
    94      */
       
    95     public boolean isEmpty() {
       
    96         return (docType.length() == 0);
       
    97     }
       
    98 
       
    99     /**
       
   100      * {@inheritDoc}
       
   101      */
       
   102     @Override
       
   103     public boolean write(Writer out, boolean atNewline) throws IOException {
       
   104         out.write(docType);
       
   105         return true; // guaranteed by constructor
       
   106     }
    55     }
   107 }
    56 }