001/*
002 * Sonar, open source software quality management tool.
003 * Copyright (C) 2008-2012 SonarSource
004 * mailto:contact AT sonarsource DOT com
005 *
006 * Sonar is free software; you can redistribute it and/or
007 * modify it under the terms of the GNU Lesser General Public
008 * License as published by the Free Software Foundation; either
009 * version 3 of the License, or (at your option) any later version.
010 *
011 * Sonar is distributed in the hope that it will be useful,
012 * but WITHOUT ANY WARRANTY; without even the implied warranty of
013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
014 * Lesser General Public License for more details.
015 *
016 * You should have received a copy of the GNU Lesser General Public
017 * License along with Sonar; if not, write to the Free Software
018 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02
019 */
020package org.sonar.colorizer;
021
022public class HtmlOptions {
023  public static final HtmlOptions DEFAULT = new HtmlOptions(true, null, true);
024  public static final OnlySyntaxHtmlOptions ONLY_SYNTAX = new OnlySyntaxHtmlOptions();
025
026  private boolean generateTable = true;
027  private boolean generateHtmlHeader = true;
028  private String tableId = null;
029  private int firstLineId = 1;
030
031  public HtmlOptions() {
032  }
033
034  public HtmlOptions(boolean generateTable, String tableId, boolean generateHtmlHeader) {
035    this.generateTable = generateTable;
036    this.generateHtmlHeader = generateHtmlHeader;
037    this.tableId = tableId;
038  }
039
040  public boolean isGenerateTable() {
041    return generateTable;
042  }
043
044  public HtmlOptions setGenerateTable(boolean b) {
045    this.generateTable = b;
046    return this;
047  }
048
049  /**
050   * Used only if isGenerateTable() is true
051   */
052  public boolean isGenerateHtmlHeader() {
053    return generateHtmlHeader;
054  }
055
056  /**
057   * Defines if the HTML header, including CSS, must be generated.
058   */
059  public HtmlOptions setGenerateHtmlHeader(boolean b) {
060    this.generateHtmlHeader = b;
061    return this;
062  }
063
064  public String getTableId() {
065    return tableId;
066  }
067
068  /**
069   * Used only if isGenerateTable() is true. This field is optional.
070   */
071  public HtmlOptions setTableId(String id) {
072    this.tableId = id;
073    return this;
074  }
075
076  /**
077   * Used only if isGenerateTable() is true. Default value is 1.
078   */
079  public int getFirstLineId() {
080    return firstLineId;
081  }
082
083  public HtmlOptions setFirstLineId(int i) {
084    this.firstLineId = i;
085    return this;
086  }
087}
088
089class OnlySyntaxHtmlOptions extends HtmlOptions {
090
091  @Override
092  public boolean isGenerateTable() {
093    return false;
094  }
095
096  @Override
097  public boolean isGenerateHtmlHeader() {
098    return false;
099  }
100
101  @Override
102  public String getTableId() {
103    return null;
104  }
105
106  @Override
107  public HtmlOptions setGenerateHtmlHeader(boolean b) {
108    throw new IllegalStateException();
109  }
110
111  @Override
112  public HtmlOptions setGenerateTable(boolean b) {
113    throw new IllegalStateException();
114  }
115
116  @Override
117  public HtmlOptions setTableId(String id) {
118    throw new IllegalStateException();
119  }
120}