<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
   Licensed to the Apache Software Foundation (ASF) under one
   or more contributor license agreements.  See the NOTICE file
   distributed with this work for additional information
   regarding copyright ownership.  The ASF licenses this file
   to you under the Apache License, Version 2.0 (the
   "License"); you may not use this file except in compliance
   with the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing,
   software distributed under the License is distributed on an
   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   KIND, either express or implied.  See the License for the
   specific language governing permissions and limitations
   under the License.
-->
<profiles version="1">
<profile kind="" name="OFBiz" version="1">
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_new_line_before_if_statement" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.indent_statements_compare_to_block" value="true"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.preserve_extra_carriage_returns2" value=""/>
<setting id="com.aptana.ide.editors.codeassist.formatter.indent_statements_compare_to_body" value="true"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_new_line_in_empty_type_declaration" value="a,span,i,b,em,strong,h1,h2,h3,h4,h5,h6,title,option"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_space_between_empty_parens_in_enum_constant" value=""/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_new_line_before_finally_in_try_statement" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.keep_empty_array_initializer_on_one_line" value="true"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="false"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.preserve_extra_carriage_returns" value="true"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_new_line_in_empty_enum_declaration" value="doctype,br,link,meta"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.compact_else_if" value="true"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.brace_position_for_method_declaration" value="end_of_line"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.preserveWhitespaceinCDATA" value="true"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.format_guardian_clause_on_one_line" value="true"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_new_line_before_catch_in_try_statement" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.tabulation.size" value="4"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_space_after_and_in_type_parameter" value=""/>
<setting id="com.aptana.ide.editors.codeassist.formatter.brace_position_for_switch" value="end_of_line"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.keep_else_statement_on_same_line" value="true"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_new_line_before_while_in_do_statement" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.indent_switchstatements_compare_to_cases" value="true"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.blank_lines_before_method" value="1"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_new_line_before_return_statement" value="insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.tabulation.char" value=" "/>
<setting id="com.aptana.ide.editors.codeassist.formatter.indent_breaks_compare_to_cases" value="true"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.brace_position_for_array_initializer" value="end_of_line"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.brace_position_for_block" value="end_of_line"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.blank_lines_before_imports" value="5"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_space_after_closing_brace_in_block" value="false"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.brace_position_for_block_in_case" value="end_of_line"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.keep_imple_if_on_one_line" value="true"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.insert_new_line_before_else_in_if_statement" value="not-insert"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.keep_then_statement_on_same_line" value="true"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.indent_switchstatements_compare_to_switch" value="true"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.alignment_for_multiple_fields" value="1"/>
<setting id="com.aptana.ide.editors.codeassist.formatter.wraptags2" value=""/>
</profile>
</profiles>
