1   /**
2    * Distribution License:
3    * JSword is free software; you can redistribute it and/or modify it under
4    * the terms of the GNU Lesser General Public License, version 2.1 or later
5    * as published by the Free Software Foundation. This program is distributed
6    * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
7    * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
8    * See the GNU Lesser General Public License for more details.
9    *
10   * The License is available on the internet at:
11   *      http://www.gnu.org/copyleft/lgpl.html
12   * or by writing to:
13   *      Free Software Foundation, Inc.
14   *      59 Temple Place - Suite 330
15   *      Boston, MA 02111-1307, USA
16   *
17   * © CrossWire Bible Society, 2005 - 2016
18   *
19   */
20  package org.crosswire.common.xml;
21  
22  /**
23   * The PrettySerializingContentHandler uses a FormatType to control its output.
24   * 
25   * @see gnu.lgpl.License The GNU Lesser General Public License for details.
26   * @author DM Smith
27   */
28  public enum FormatType {
29      AS_IS           (false, false, false),
30      ANALYSIS        (true,  false, false),
31      CLASSIC         (true,  false, true),
32      ANALYSIS_INDENT (true,  true,  false),
33      CLASSIC_INDENT  (true,  true,  true);
34  
35      /**
36       * Simple ctor
37       */
38      FormatType(boolean displayNewlines, boolean doIndenting, boolean classicLines) {
39          multiline = displayNewlines;
40          // the following are true only if we add newlines.
41          indented = doIndenting && multiline;
42          classic = classicLines && multiline;
43          analytic = !classicLines && multiline;
44      }
45  
46      /**
47       * Whether newlines are introduced into the document.
48       * 
49       * @return true if newlines are added to the document
50       */
51      public boolean isMultiline() {
52          return multiline;
53      }
54  
55      /**
56       * Whether indents are introduced into the document.
57       * 
58       * @return true if indents are added to the document
59       */
60      public boolean isIndented() {
61          return indented;
62      }
63  
64      /**
65       * Whether added whitespace is inside tags. Note, this does not change the
66       * document.
67       * 
68       * @return true if whitespace is added inside tags of document
69       */
70      public boolean isAnalytic() {
71          return analytic;
72      }
73  
74      /**
75       * Whether added whitespace is between tags. Note, this does change the
76       * document as whitespace is added to either side of existing text.
77       * 
78       * @return true if whitespace is added inside tags of document
79       */
80      public boolean isClassic() {
81          return classic;
82      }
83  
84      private boolean indented;
85      private boolean multiline;
86      private boolean analytic;
87      private boolean classic;
88  }
89