Bug 545423 - [12] Formatter Support for Switch Expressions - UI

Change-Id: Ic1fbf37569d1de569146d25a9e342c204e946444
Signed-off-by: Mateusz Matela <mateusz.matela@gmail.com>
diff --git a/org.eclipse.jdt.ui/preview/formatter.java b/org.eclipse.jdt.ui/preview/formatter.java
index dcf60b6..ec28ff8 100644
--- a/org.eclipse.jdt.ui/preview/formatter.java
+++ b/org.eclipse.jdt.ui/preview/formatter.java
@@ -416,10 +416,15 @@
 //--PREVIEW--END--section-whitespace-statements-for
 
 //--PREVIEW--START--section-whitespace-statements-switch
-switch (number) { 
+Color newColor = switch(color) {
+case RED -> GREEN;
+case GREEN,BLUD->RED;
+default->BLACK;
+};
+
+switch (color) { 
 case RED:return GREEN;
-case GREEN:return BLUE;
-case BLUE:return RED;
+case GREEN,BLUE:return RED;
 default:return BLACK;
 }
 //--PREVIEW--END--section-whitespace-statements-switch
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/formatter/FormatterMessages.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/formatter/FormatterMessages.java
index 9f0eed9..f53aa1b 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/formatter/FormatterMessages.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/formatter/FormatterMessages.java
@@ -261,6 +261,8 @@
 	public static String FormatterModifyDialog_preview_show_whitespace_toggle;
 	public static String FormatterModifyDialog_preview_show_raw_source_toggle;
 	public static String FormatterModifyDialog_whiteSpace_pref_after_and_list;
+	public static String FormatterModifyDialog_whiteSpace_pref_after_arrow_in_case;
+	public static String FormatterModifyDialog_whiteSpace_pref_after_arrow_in_default;
 	public static String FormatterModifyDialog_whiteSpace_pref_after_arrow_operator;
 	public static String FormatterModifyDialog_whiteSpace_pref_after_assignment_operator;
 	public static String FormatterModifyDialog_whiteSpace_pref_after_at;
@@ -281,6 +283,7 @@
 	public static String FormatterModifyDialog_whiteSpace_pref_after_comma_fields;
 	public static String FormatterModifyDialog_whiteSpace_pref_after_comma_implements;
 	public static String FormatterModifyDialog_whiteSpace_pref_after_comma_in_alloc;
+	public static String FormatterModifyDialog_whiteSpace_pref_after_comma_in_case_expressions;
 	public static String FormatterModifyDialog_whiteSpace_pref_after_comma_in_method_args;
 	public static String FormatterModifyDialog_whiteSpace_pref_after_comma_in_params;
 	public static String FormatterModifyDialog_whiteSpace_pref_after_comma_in_qalloc;
@@ -300,6 +303,8 @@
 	public static String FormatterModifyDialog_whiteSpace_pref_after_semicolon;
 	public static String FormatterModifyDialog_whiteSpace_pref_after_unary_operators;
 	public static String FormatterModifyDialog_whiteSpace_pref_before_and_list;
+	public static String FormatterModifyDialog_whiteSpace_pref_before_arrow_in_case;
+	public static String FormatterModifyDialog_whiteSpace_pref_before_arrow_in_default;
 	public static String FormatterModifyDialog_whiteSpace_pref_before_arrow_operator;
 	public static String FormatterModifyDialog_whiteSpace_pref_before_assignment_operator;
 	public static String FormatterModifyDialog_whiteSpace_pref_before_at;
@@ -324,6 +329,7 @@
 	public static String FormatterModifyDialog_whiteSpace_pref_before_comma_fields;
 	public static String FormatterModifyDialog_whiteSpace_pref_before_comma_implements;
 	public static String FormatterModifyDialog_whiteSpace_pref_before_comma_in_alloc;
+	public static String FormatterModifyDialog_whiteSpace_pref_before_comma_in_case_expressions;
 	public static String FormatterModifyDialog_whiteSpace_pref_before_comma_in_method_args;
 	public static String FormatterModifyDialog_whiteSpace_pref_before_comma_in_params;
 	public static String FormatterModifyDialog_whiteSpace_pref_before_comma_in_qalloc;
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/formatter/FormatterMessages.properties b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/formatter/FormatterMessages.properties
index 29ba3b0..d294a73 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/formatter/FormatterMessages.properties
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/formatter/FormatterMessages.properties
@@ -72,7 +72,9 @@
 FormatterModifyDialog_whiteSpace_pref_before_comma_in_method_args=Before comma in method arguments
 FormatterModifyDialog_whiteSpace_pref_after_comma_in_method_args=After comma in method arguments
 FormatterModifyDialog_whiteSpace_pref_before_comma_in_alloc=Before comma in object allocation arguments
+FormatterModifyDialog_whiteSpace_pref_before_comma_in_case_expressions=Before comma in case expressions
 FormatterModifyDialog_whiteSpace_pref_after_comma_in_alloc=After comma in object allocation arguments
+FormatterModifyDialog_whiteSpace_pref_after_comma_in_case_expressions=After comma in case expressions
 FormatterModifyDialog_whiteSpace_pref_before_comma_in_qalloc=Before comma in explicit constructor call
 FormatterModifyDialog_whiteSpace_pref_after_comma_in_qalloc=After comma in explicit constructor call
 
@@ -186,7 +188,11 @@
 FormatterModifyDialog_whiteSpace_pref_before_opening_paren_annot_type=Before opening parenthesis in annotation type members
 FormatterModifyDialog_whiteSpace_pref_between_empty_parens_annot_type=Between parenthesis in annotation type members
 
+FormatterModifyDialog_whiteSpace_pref_after_arrow_in_case=After arrow in case
+FormatterModifyDialog_whiteSpace_pref_after_arrow_in_default=After arrow in default
 FormatterModifyDialog_whiteSpace_pref_after_arrow_operator=After arrow operator
+FormatterModifyDialog_whiteSpace_pref_before_arrow_in_case=Before arrow in case
+FormatterModifyDialog_whiteSpace_pref_before_arrow_in_default=Before arrow in default
 FormatterModifyDialog_whiteSpace_pref_before_arrow_operator=Before arrow operator
 FormatterModifyDialog_whiteSpace_tree_return='return'
 FormatterModifyDialog_whiteSpace_tree_throw='throw'
@@ -289,7 +295,7 @@
 FormatterModifyDialog_braces_pref_constructor_declaration=Constructor declaration:
 FormatterModifyDialog_braces_pref_blocks=Blocks:
 FormatterModifyDialog_braces_pref_blocks_in_case=Blocks in case statement:
-FormatterModifyDialog_braces_pref_switch_case='switch' statement:
+FormatterModifyDialog_braces_pref_switch_case='switch' statement/expression:
 FormatterModifyDialog_braces_pref_array_initializer=Array initializer:
 FormatterModifyDialog_braces_pref_keep_empty_array_initializer_on_one_line=Keep empty array initializer on one line
 FormatterModifyDialog_braces_pref_enum_declaration=Enum declaration:
@@ -524,7 +530,7 @@
 FormatterModifyDialog_parentheses_pref_enum_constant_declaration=Enum constant declaration:
 FormatterModifyDialog_parentheses_pref_if_while_statement='if', 'while' and 'do while' statement:
 FormatterModifyDialog_parentheses_pref_for_statement='for' statement:
-FormatterModifyDialog_parentheses_pref_switch_statement='switch' statement:
+FormatterModifyDialog_parentheses_pref_switch_statement='switch' statement/expression:
 FormatterModifyDialog_parentheses_pref_try_clause='try' clause:
 FormatterModifyDialog_parentheses_pref_catch_clause='catch' clause:
 FormatterModifyDialog_parentheses_pref_annotation=Annotation:
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/formatter/FormatterModifyDialog.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/formatter/FormatterModifyDialog.java
index 93d22c1..44a2cee 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/formatter/FormatterModifyDialog.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/formatter/FormatterModifyDialog.java
@@ -966,10 +966,16 @@
 						.node(fTree.builder(FormatterMessages.FormatterModifyDialog_whiteSpace_tree_switch, "-switch", modAll) //$NON-NLS-1$
 								.pref(FormatterMessages.FormatterModifyDialog_whiteSpace_pref_before_colon_case, DefaultCodeFormatterConstants.FORMATTER_INSERT_SPACE_BEFORE_COLON_IN_CASE)
 								.pref(FormatterMessages.FormatterModifyDialog_whiteSpace_pref_before_colon_default, DefaultCodeFormatterConstants.FORMATTER_INSERT_SPACE_BEFORE_COLON_IN_DEFAULT)
-								.pref(FormatterMessages.FormatterModifyDialog_whiteSpace_pref_before_opening_brace, DefaultCodeFormatterConstants.FORMATTER_INSERT_SPACE_BEFORE_OPENING_BRACE_IN_SWITCH)
+								.pref(FormatterMessages.FormatterModifyDialog_whiteSpace_pref_before_arrow_in_case, DefaultCodeFormatterConstants.FORMATTER_INSERT_SPACE_BEFORE_ARROW_IN_SWITCH_CASE)
+								.pref(FormatterMessages.FormatterModifyDialog_whiteSpace_pref_after_arrow_in_case, DefaultCodeFormatterConstants.FORMATTER_INSERT_SPACE_AFTER_ARROW_IN_SWITCH_CASE)
+								.pref(FormatterMessages.FormatterModifyDialog_whiteSpace_pref_before_arrow_in_default, DefaultCodeFormatterConstants.FORMATTER_INSERT_SPACE_BEFORE_ARROW_IN_SWITCH_DEFAULT)
+								.pref(FormatterMessages.FormatterModifyDialog_whiteSpace_pref_after_arrow_in_default, DefaultCodeFormatterConstants.FORMATTER_INSERT_SPACE_AFTER_ARROW_IN_SWITCH_DEFAULT)
+								.pref(FormatterMessages.FormatterModifyDialog_whiteSpace_pref_before_comma_in_case_expressions, DefaultCodeFormatterConstants.FORMATTER_INSERT_SPACE_BEFORE_COMMA_IN_SWITCH_CASE_EXPRESSIONS)
+								.pref(FormatterMessages.FormatterModifyDialog_whiteSpace_pref_after_comma_in_case_expressions, DefaultCodeFormatterConstants.FORMATTER_INSERT_SPACE_AFTER_COMMA_IN_SWITCH_CASE_EXPRESSIONS)
 								.pref(FormatterMessages.FormatterModifyDialog_whiteSpace_pref_before_opening_paren, DefaultCodeFormatterConstants.FORMATTER_INSERT_SPACE_BEFORE_OPENING_PAREN_IN_SWITCH)
 								.pref(FormatterMessages.FormatterModifyDialog_whiteSpace_pref_after_opening_paren, DefaultCodeFormatterConstants.FORMATTER_INSERT_SPACE_AFTER_OPENING_PAREN_IN_SWITCH)
-								.pref(FormatterMessages.FormatterModifyDialog_whiteSpace_pref_before_closing_paren, DefaultCodeFormatterConstants.FORMATTER_INSERT_SPACE_BEFORE_CLOSING_PAREN_IN_SWITCH))
+								.pref(FormatterMessages.FormatterModifyDialog_whiteSpace_pref_before_closing_paren, DefaultCodeFormatterConstants.FORMATTER_INSERT_SPACE_BEFORE_CLOSING_PAREN_IN_SWITCH)
+								.pref(FormatterMessages.FormatterModifyDialog_whiteSpace_pref_before_opening_brace, DefaultCodeFormatterConstants.FORMATTER_INSERT_SPACE_BEFORE_OPENING_BRACE_IN_SWITCH))
 						.node(fTree.builder(FormatterMessages.FormatterModifyDialog_whiteSpace_tree_do, "-while", modAll) //$NON-NLS-1$
 								.pref(FormatterMessages.FormatterModifyDialog_whiteSpace_pref_before_opening_paren, DefaultCodeFormatterConstants.FORMATTER_INSERT_SPACE_BEFORE_OPENING_PAREN_IN_WHILE)
 								.pref(FormatterMessages.FormatterModifyDialog_whiteSpace_pref_after_opening_paren, DefaultCodeFormatterConstants.FORMATTER_INSERT_SPACE_AFTER_OPENING_PAREN_IN_WHILE)