1 /*******************************************************************************
2 * Copyright (c) 2000, 2001, 2002 International Business Machines Corp. and others.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Common Public License v0.5
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/cpl-v05.html
9 * IBM Corporation - initial API and implementation
10 ******************************************************************************/
11 package net.sourceforge.phpdt.internal.formatter.impl;
15 public class FormatterOptions {
20 public static final String OPTION_InsertNewlineBeforeOpeningBrace = "net.sourceforge.phpeclipse.core.formatter.newline.openingBrace"; //$NON-NLS-1$
21 public static final String OPTION_InsertNewlineInControlStatement = "net.sourceforge.phpeclipse.core.formatter.newline.controlStatement"; //$NON-NLS-1$
22 // public static final String OPTION_InsertNewLineBetweenElseAndIf = "net.sourceforge.phpeclipse.core.formatter.newline.elseIf"; //$NON-NLS-1$
23 public static final String OPTION_InsertNewLineInEmptyBlock = "net.sourceforge.phpeclipse.core.formatter.newline.emptyBlock"; //$NON-NLS-1$
24 public static final String OPTION_ClearAllBlankLines = "net.sourceforge.phpeclipse.core.formatter.newline.clearAll"; //$NON-NLS-1$
25 public static final String OPTION_SplitLineExceedingLength = "net.sourceforge.phpeclipse.core.formatter.lineSplit"; //$NON-NLS-1$
26 public static final String OPTION_CompactAssignment = "net.sourceforge.phpeclipse.core.formatter.style.assignment"; //$NON-NLS-1$
27 public static final String OPTION_TabulationChar = "net.sourceforge.phpeclipse.core.formatter.tabulation.char"; //$NON-NLS-1$
28 public static final String OPTION_TabulationSize = "net.sourceforge.phpeclipse.core.formatter.tabulation.size"; //$NON-NLS-1$
30 public static final String INSERT = "insert"; //$NON-NLS-1$
31 public static final String DO_NOT_INSERT = "do not insert"; //$NON-NLS-1$
32 public static final String PRESERVE_ONE = "preserve one"; //$NON-NLS-1$
33 public static final String CLEAR_ALL = "clear all"; //$NON-NLS-1$
34 public static final String NORMAL = "normal"; //$NON-NLS-1$
35 public static final String COMPACT = "compact"; //$NON-NLS-1$
36 public static final String TAB = "tab"; //$NON-NLS-1$
37 public static final String SPACE = "space"; //$NON-NLS-1$
39 // by default, do not insert blank line before opening brace
40 public boolean newLineBeforeOpeningBraceMode = false;
42 // by default, do not insert blank line behind keywords (ELSE, CATCH, FINALLY,...) in control statements
43 public boolean newlineInControlStatementMode = false;
45 // by default, preserve one blank line per sequence of blank lines
46 public boolean clearAllBlankLinesMode = false;
48 // line splitting will occur when line exceeds this length
49 public int maxLineLength = 80;
51 public boolean compactAssignmentMode = false;
52 // if isTrue, assignments look like x= 12 (not like x = 12);
54 //number of consecutive spaces used to replace the tab char
55 public int tabSize = 4; // n spaces for one tab
56 public boolean indentWithTab = true;
58 //public boolean compactElseIfMode = true;
59 // if true, else and if are kept on the same line.
60 public boolean newLineInEmptyBlockMode = true;
61 // if false, no new line in {} if it's empty.
63 public char[] lineSeparatorSequence = System.getProperty("line.separator").toCharArray(); //$NON-NLS-1$
65 * Initializing the formatter options with default settings
67 public FormatterOptions() {
70 * Initializing the formatter options with external settings
72 public FormatterOptions(Map settings) {
76 // filter options which are related to the assist component
77 Object[] entries = settings.entrySet().toArray();
78 for (int i = 0, max = entries.length; i < max; i++) {
79 Map.Entry entry = (Map.Entry) entries[i];
80 if (!(entry.getKey() instanceof String))
82 if (!(entry.getValue() instanceof String))
84 String optionID = (String) entry.getKey();
85 String optionValue = (String) entry.getValue();
87 if (optionID.equals(OPTION_InsertNewlineBeforeOpeningBrace)) {
88 if (optionValue.equals(INSERT)) {
89 this.newLineBeforeOpeningBraceMode = true;
90 } else if (optionValue.equals(DO_NOT_INSERT)) {
91 this.newLineBeforeOpeningBraceMode = false;
95 if (optionID.equals(OPTION_InsertNewlineInControlStatement)) {
96 if (optionValue.equals(INSERT)) {
97 this.newlineInControlStatementMode = true;
98 } else if (optionValue.equals(DO_NOT_INSERT)) {
99 this.newlineInControlStatementMode = false;
103 if (optionID.equals(OPTION_ClearAllBlankLines)) {
104 if (optionValue.equals(CLEAR_ALL)) {
105 this.clearAllBlankLinesMode = true;
106 } else if (optionValue.equals(PRESERVE_ONE)) {
107 this.clearAllBlankLinesMode = false;
111 // if (optionID.equals(OPTION_InsertNewLineBetweenElseAndIf)) {
112 // if (optionValue.equals(INSERT)) {
113 // this.compactElseIfMode = false;
114 // } else if (optionValue.equals(DO_NOT_INSERT)) {
115 // this.compactElseIfMode = true;
119 if (optionID.equals(OPTION_InsertNewLineInEmptyBlock)) {
120 if (optionValue.equals(INSERT)) {
121 this.newLineInEmptyBlockMode = true;
122 } else if (optionValue.equals(DO_NOT_INSERT)) {
123 this.newLineInEmptyBlockMode = false;
127 if (optionID.equals(OPTION_SplitLineExceedingLength)) {
129 int val = Integer.parseInt(optionValue);
131 this.maxLineLength = val;
132 } catch (NumberFormatException e) {
135 if (optionID.equals(OPTION_CompactAssignment)) {
136 if (optionValue.equals(COMPACT)) {
137 this.compactAssignmentMode = true;
138 } else if (optionValue.equals(NORMAL)) {
139 this.compactAssignmentMode = false;
143 if (optionID.equals(OPTION_TabulationChar)) {
144 if (optionValue.equals(TAB)) {
145 this.indentWithTab = true;
146 } else if (optionValue.equals(SPACE)) {
147 this.indentWithTab = false;
151 if (optionID.equals(OPTION_TabulationSize)) {
153 int val = Integer.parseInt(optionValue);
156 } catch (NumberFormatException e) {
166 public int getMaxLineLength() {
167 return maxLineLength;
169 public int getTabSize() {
172 public boolean isAddingNewLineBeforeOpeningBrace() {
173 return newLineBeforeOpeningBraceMode;
175 public boolean isAddingNewLineInControlStatement() {
176 return newlineInControlStatementMode;
178 public boolean isAddingNewLineInEmptyBlock() {
179 return newLineInEmptyBlockMode;
181 public boolean isClearingAllBlankLines() {
182 return clearAllBlankLinesMode;
184 public boolean isCompactingAssignment() {
185 return compactAssignmentMode;
187 // public boolean isCompactingElseIf() {
188 // return compactElseIfMode;
190 public boolean isUsingTabForIndenting() {
191 return indentWithTab;
193 public void setLineSeparator(String lineSeparator) {
194 lineSeparatorSequence = lineSeparator.toCharArray();
197 * @deprecated - should use a Map when creating the options.
199 public void setMaxLineLength(int maxLineLength) {
200 this.maxLineLength = maxLineLength;
203 * @deprecated - should use a Map when creating the options.
205 // public void setCompactElseIfMode(boolean flag) {
206 // compactElseIfMode = flag;