diff --git a/CHANGELOG.md b/CHANGELOG.md
index ecce5cce..5ac56367 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,13 +3,38 @@ FlatLaf Change Log
## Unreleased
+- CheckBox and RadioButton: Support changing selected icon style from outline to
+ filled (as in FlatLaf IntelliJ theme) with `UIManager.put(
+ "CheckBox.icon.style", "filled" );`.
+- Button and ToggleButton: Support disabled background color (use UI values
+ `Button.disabledBackground` and `ToggleButton.disabledBackground`). (issue
+ #112)
+- ScrollBar: Support pressed track, thumb and button colors (use UI values
+ `ScrollBar.pressedTrackColor`, `ScrollBar.pressedThumbColor` and
+ `ScrollBar.pressedButtonBackground`). (issue #115)
+- ComboBox: Support changing arrow button style (set UI value
+ `ComboBox.buttonStyle` to `auto` (default), `button` or `none`). (issue #114)
+- Spinner: Support changing arrows button style (set UI value
+ `Spinner.buttonStyle` to `button` (default) or `none`).
+- TableHeader: Support top/bottom/left positioned sort arrow when using
+ [Glazed Lists](https://github.com/glazedlists/glazedlists). (issue #113)
+- Fixed/improved vertical position of text when scaled on HiDPI screens on
+ Windows.
+
+
+## 0.36
+
- ScrollBar: Made styling more flexible by supporting insets and arc for track
and thumb. (issue #103)
+- ScrollBar: Use round thumb on macOS and Linux to make it look similar to
+ native platform scroll bars. (issue #103)
- ComboBox: Minimum width is now 72 pixels (was ~50 for non-editable and ~130
for editable comboboxes).
- ComboBox: Support custom borders in combobox editors. (issue #102)
+- Button: Support non-square icon-only buttons. (issue #110)
- Ubuntu Linux: Fixed poorly rendered font. (issue #105)
- macOS Catalina: Use Helvetica Neue font.
+- `FlatInspector` added (see [FlatLaf Extras](flatlaf-extras)).
## 0.35
diff --git a/build.gradle.kts b/build.gradle.kts
index 590d61ac..be623ceb 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -14,8 +14,8 @@
* limitations under the License.
*/
-val releaseVersion = "0.35"
-val developmentVersion = "0.36-SNAPSHOT"
+val releaseVersion = "0.36"
+val developmentVersion = "0.37-SNAPSHOT"
version = if( java.lang.Boolean.getBoolean( "release" ) ) releaseVersion else developmentVersion
diff --git a/flatlaf-core/.settings/org.eclipse.jdt.core.prefs b/flatlaf-core/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000..4a19f363
--- /dev/null
+++ b/flatlaf-core/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,377 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=48
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression_chain=0
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_record_components=16
+org.eclipse.jdt.core.formatter.alignment_for_relational_operator=0
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_shift_operator=0
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=33
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=33
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_record_declaration=33
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=33
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=32
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=32
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_last_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_abstract_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=0
+org.eclipse.jdt.core.formatter.blank_lines_between_statement_group_in_switch=0
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=next_line_on_wrap
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=next_line_on_wrap
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=next_line_on_wrap
+org.eclipse.jdt.core.formatter.brace_position_for_record_constructor=next_line_on_wrap
+org.eclipse.jdt.core.formatter.brace_position_for_record_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=next_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.indent_tag_description=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_between_different_tags=do not insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=1
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=1
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_record_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_record_components=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_switch_case_expressions=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_not_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_record_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
+org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_record_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_record_components=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_switch_case_expressions=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_constructor=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_record_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_code_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_method_body_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_record_constructor_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_record_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_after_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_before_code_block=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_record_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.text_block_indentation=0
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_relational_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_shift_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/flatlaf-core/.settings/org.eclipse.jdt.ui.prefs b/flatlaf-core/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000..ef990006
--- /dev/null
+++ b/flatlaf-core/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+formatter_profile=_FlatLaf
+formatter_settings_version=19
diff --git a/flatlaf-core/build.gradle.kts b/flatlaf-core/build.gradle.kts
index 74a03b38..7d6c5038 100644
--- a/flatlaf-core/build.gradle.kts
+++ b/flatlaf-core/build.gradle.kts
@@ -38,6 +38,7 @@ tasks {
javadoc {
options {
this as StandardJavadocDocletOptions
+ use( true )
tags = listOf( "uiDefault", "clientProperty" )
addStringOption( "Xdoclint:all,-missing", "-Xdoclint:all,-missing" )
}
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java
index f40db140..92a9a144 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java
@@ -326,6 +326,7 @@ public abstract class FlatLaf
// initialize some defaults (for overriding) that are used in UI delegates,
// but are not set in BasicLookAndFeel
putDefaults( defaults, defaults.getColor( "control" ),
+ "Button.disabledBackground",
"EditorPane.disabledBackground",
"EditorPane.inactiveBackground",
"FormattedTextField.disabledBackground",
@@ -335,7 +336,8 @@ public abstract class FlatLaf
"TextArea.inactiveBackground",
"TextField.disabledBackground",
"TextPane.disabledBackground",
- "TextPane.inactiveBackground" );
+ "TextPane.inactiveBackground",
+ "ToggleButton.disabledBackground" );
putDefaults( defaults, defaults.getColor( "textInactiveText" ),
"Button.disabledText",
"CheckBox.disabledText",
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java
index f6cc7240..8a043135 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java
@@ -147,6 +147,11 @@ public class IntelliJTheme
applyColorPalette( defaults );
applyCheckBoxColors( defaults );
+ // IDEA does not paint button background if disabled, but FlatLaf does
+ Object panelBackground = defaults.get( "Panel.background" );
+ defaults.put( "Button.disabledBackground", panelBackground );
+ defaults.put( "ToggleButton.disabledBackground", panelBackground );
+
// IDEA uses a SVG icon for the help button, but paints the background with Button.startBackground and Button.endBackground
Object helpButtonBackground = defaults.get( "Button.startBackground" );
Object helpButtonBorderColor = defaults.get( "Button.startBorderColor" );
@@ -156,7 +161,7 @@ public class IntelliJTheme
helpButtonBorderColor = defaults.get( "Button.borderColor" );
defaults.put( "HelpButton.background", helpButtonBackground );
defaults.put( "HelpButton.borderColor", helpButtonBorderColor );
- defaults.put( "HelpButton.disabledBackground", defaults.get( "Panel.background" ) );
+ defaults.put( "HelpButton.disabledBackground", panelBackground );
defaults.put( "HelpButton.disabledBorderColor", defaults.get( "Button.disabledBorderColor" ) );
defaults.put( "HelpButton.focusedBorderColor", defaults.get( "Button.focusedBorderColor" ) );
defaults.put( "HelpButton.focusedBackground", defaults.get( "Button.focusedBackground" ) );
@@ -510,7 +515,7 @@ public class IntelliJTheme
checkboxKeyMapping.put( "Checkbox.Border.Default", "CheckBox.icon.borderColor" );
checkboxKeyMapping.put( "Checkbox.Border.Disabled", "CheckBox.icon.disabledBorderColor" );
checkboxKeyMapping.put( "Checkbox.Focus.Thin.Default", "CheckBox.icon.focusedBorderColor" );
- checkboxKeyMapping.put( "Checkbox.Focus.Wide", "CheckBox.icon.focusedColor" );
+ checkboxKeyMapping.put( "Checkbox.Focus.Wide", "CheckBox.icon.focusColor" );
checkboxKeyMapping.put( "Checkbox.Foreground.Disabled", "CheckBox.icon.disabledCheckmarkColor" );
checkboxKeyMapping.put( "Checkbox.Background.Selected", "CheckBox.icon.selectedBackground" );
checkboxKeyMapping.put( "Checkbox.Border.Selected", "CheckBox.icon.selectedBorderColor" );
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatCheckBoxIcon.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatCheckBoxIcon.java
index fa4199e9..50b1219b 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatCheckBoxIcon.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatCheckBoxIcon.java
@@ -36,25 +36,28 @@ import com.formdev.flatlaf.ui.FlatUIUtils;
* is painted outside of the icon bounds. Make sure that the checkbox
* has margins, which are equal or greater than focusWidth.
*
+ * @uiDefault CheckBox.icon.style String optional; "outline"/null (default) or "filled"
* @uiDefault Component.focusWidth int
* @uiDefault Component.focusColor Color
- * @uiDefault CheckBox.icon.focusedColor Color optional; defaults to Component.focusColor
+ * @uiDefault CheckBox.icon.focusWidth int optional; defaults to Component.focusWidth
+ * @uiDefault CheckBox.icon.focusColor Color optional; defaults to Component.focusColor
* @uiDefault CheckBox.icon.borderColor Color
- * @uiDefault CheckBox.icon.disabledBorderColor Color
- * @uiDefault CheckBox.icon.selectedBorderColor Color
- * @uiDefault CheckBox.icon.focusedBorderColor Color
- * @uiDefault CheckBox.icon.hoverBorderColor Color optional
- * @uiDefault CheckBox.icon.selectedFocusedBorderColor Color optional
* @uiDefault CheckBox.icon.background Color
- * @uiDefault CheckBox.icon.disabledBackground Color
- * @uiDefault CheckBox.icon.focusedBackground Color optional
- * @uiDefault CheckBox.icon.hoverBackground Color optional
- * @uiDefault CheckBox.icon.pressedBackground Color optional
+ * @uiDefault CheckBox.icon.selectedBorderColor Color
* @uiDefault CheckBox.icon.selectedBackground Color
- * @uiDefault CheckBox.icon.selectedHoverBackground Color optional
- * @uiDefault CheckBox.icon.selectedPressedBackground Color optional
* @uiDefault CheckBox.icon.checkmarkColor Color
+ * @uiDefault CheckBox.icon.disabledBorderColor Color
+ * @uiDefault CheckBox.icon.disabledBackground Color
* @uiDefault CheckBox.icon.disabledCheckmarkColor Color
+ * @uiDefault CheckBox.icon.focusedBorderColor Color
+ * @uiDefault CheckBox.icon.focusedBackground Color optional
+ * @uiDefault CheckBox.icon.selectedFocusedBorderColor Color optional
+ * @uiDefault CheckBox.icon.selectedFocusedBackground Color optional
+ * @uiDefault CheckBox.icon.hoverBorderColor Color optional
+ * @uiDefault CheckBox.icon.hoverBackground Color optional
+ * @uiDefault CheckBox.icon.selectedHoverBackground Color optional
+ * @uiDefault CheckBox.icon.pressedBackground Color optional
+ * @uiDefault CheckBox.icon.selectedPressedBackground Color optional
* @uiDefault CheckBox.arc int
*
* @author Karl Tauber
@@ -62,27 +65,62 @@ import com.formdev.flatlaf.ui.FlatUIUtils;
public class FlatCheckBoxIcon
extends FlatAbstractIcon
{
- public final int focusWidth = UIManager.getInt( "Component.focusWidth" );
- protected final Color focusColor = FlatUIUtils.getUIColor( "CheckBox.icon.focusedColor",
+ protected final String style = UIManager.getString( "CheckBox.icon.style" );
+ public final int focusWidth = getUIInt( "CheckBox.icon.focusWidth",
+ UIManager.getInt( "Component.focusWidth" ), style );
+ protected final Color focusColor = FlatUIUtils.getUIColor( "CheckBox.icon.focusColor",
UIManager.getColor( "Component.focusColor" ) );
protected final int arc = FlatUIUtils.getUIInt( "CheckBox.arc", 2 );
- protected final Color borderColor = UIManager.getColor( "CheckBox.icon.borderColor" );
- protected final Color disabledBorderColor = UIManager.getColor( "CheckBox.icon.disabledBorderColor" );
- protected final Color selectedBorderColor = UIManager.getColor( "CheckBox.icon.selectedBorderColor" );
- protected final Color focusedBorderColor = UIManager.getColor( "CheckBox.icon.focusedBorderColor" );
- protected final Color hoverBorderColor = UIManager.getColor( "CheckBox.icon.hoverBorderColor" );
- protected final Color selectedFocusedBorderColor = UIManager.getColor( "CheckBox.icon.selectedFocusedBorderColor" );
- protected final Color background = UIManager.getColor( "CheckBox.icon.background" );
- protected final Color disabledBackground = UIManager.getColor( "CheckBox.icon.disabledBackground" );
- protected final Color focusedBackground = UIManager.getColor( "CheckBox.icon.focusedBackground" );
- protected final Color hoverBackground = UIManager.getColor( "CheckBox.icon.hoverBackground" );
- protected final Color pressedBackground = UIManager.getColor( "CheckBox.icon.pressedBackground" );
- protected final Color selectedBackground = UIManager.getColor( "CheckBox.icon.selectedBackground" );
- protected final Color selectedHoverBackground = UIManager.getColor( "CheckBox.icon.selectedHoverBackground" );
- protected final Color selectedPressedBackground = UIManager.getColor( "CheckBox.icon.selectedPressedBackground" );
- protected final Color checkmarkColor = UIManager.getColor( "CheckBox.icon.checkmarkColor" );
- protected final Color disabledCheckmarkColor = UIManager.getColor( "CheckBox.icon.disabledCheckmarkColor" );
+ // enabled
+ protected final Color borderColor = getUIColor( "CheckBox.icon.borderColor", style );
+ protected final Color background = getUIColor( "CheckBox.icon.background", style );
+ protected final Color selectedBorderColor = getUIColor( "CheckBox.icon.selectedBorderColor", style );
+ protected final Color selectedBackground = getUIColor( "CheckBox.icon.selectedBackground", style );
+ protected final Color checkmarkColor = getUIColor( "CheckBox.icon.checkmarkColor", style );
+
+ // disabled
+ protected final Color disabledBorderColor = getUIColor( "CheckBox.icon.disabledBorderColor", style );
+ protected final Color disabledBackground = getUIColor( "CheckBox.icon.disabledBackground", style );
+ protected final Color disabledCheckmarkColor = getUIColor( "CheckBox.icon.disabledCheckmarkColor", style );
+
+ // focused
+ protected final Color focusedBorderColor = getUIColor( "CheckBox.icon.focusedBorderColor", style );
+ protected final Color focusedBackground = getUIColor( "CheckBox.icon.focusedBackground", style );
+ protected final Color selectedFocusedBorderColor = getUIColor( "CheckBox.icon.selectedFocusedBorderColor", style );
+ protected final Color selectedFocusedBackground = getUIColor( "CheckBox.icon.selectedFocusedBackground", style );
+ protected final Color selectedFocusedCheckmarkColor = getUIColor( "CheckBox.icon.selectedFocusedCheckmarkColor", style );
+
+ // hover
+ protected final Color hoverBorderColor = getUIColor( "CheckBox.icon.hoverBorderColor", style );
+ protected final Color hoverBackground = getUIColor( "CheckBox.icon.hoverBackground", style );
+ protected final Color selectedHoverBackground = getUIColor( "CheckBox.icon.selectedHoverBackground", style );
+
+ // pressed
+ protected final Color pressedBackground = getUIColor( "CheckBox.icon.pressedBackground", style );
+ protected final Color selectedPressedBackground = getUIColor( "CheckBox.icon.selectedPressedBackground", style );
+
+ protected static Color getUIColor( String key, String style ) {
+ if( style != null ) {
+ Color color = UIManager.getColor( styleKey( key, style ) );
+ if( color != null )
+ return color;
+ }
+ return UIManager.getColor( key );
+ }
+
+ protected static int getUIInt( String key, int defaultValue, String style ) {
+ if( style != null ) {
+ Object value = UIManager.get( styleKey( key, style ) );
+ if( value instanceof Integer )
+ return (Integer) value;
+ }
+ return FlatUIUtils.getUIInt( key, defaultValue );
+ }
+
+ private static String styleKey( String key, String style ) {
+ return key.replace( ".icon.", ".icon[" + style + "]." );
+ }
static final int ICON_SIZE = 15;
@@ -94,9 +132,10 @@ public class FlatCheckBoxIcon
protected void paintIcon( Component c, Graphics2D g2 ) {
boolean indeterminate = c instanceof JComponent && clientPropertyEquals( (JComponent) c, SELECTED_STATE, SELECTED_STATE_INDETERMINATE );
boolean selected = indeterminate || (c instanceof AbstractButton && ((AbstractButton)c).isSelected());
+ boolean isFocused = FlatUIUtils.isPermanentFocusOwner( c );
// paint focused border
- if( FlatUIUtils.isPermanentFocusOwner( c ) && focusWidth > 0 ) {
+ if( isFocused && focusWidth > 0 ) {
g2.setColor( focusColor );
paintFocusBorder( g2 );
}
@@ -114,15 +153,19 @@ public class FlatCheckBoxIcon
g2.setColor( FlatUIUtils.deriveColor( FlatButtonUI.buttonStateColor( c,
selected ? selectedBackground : background,
disabledBackground,
- focusedBackground,
- selected && selectedHoverBackground != null ? selectedHoverBackground : hoverBackground,
- selected && selectedPressedBackground != null ? selectedPressedBackground : pressedBackground ),
+ (selected && selectedFocusedBackground != null) ? selectedFocusedBackground : focusedBackground,
+ (selected && selectedHoverBackground != null) ? selectedHoverBackground : hoverBackground,
+ (selected && selectedPressedBackground != null) ? selectedPressedBackground : pressedBackground ),
background ) );
paintBackground( g2 );
// paint checkmark
if( selected || indeterminate ) {
- g2.setColor( c.isEnabled() ? checkmarkColor : disabledCheckmarkColor );
+ g2.setColor( c.isEnabled()
+ ? ((selected && isFocused && selectedFocusedCheckmarkColor != null)
+ ? selectedFocusedCheckmarkColor
+ : checkmarkColor)
+ : disabledCheckmarkColor );
if( indeterminate )
paintIndeterminate( g2 );
else
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatCheckBoxMenuItemIcon.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatCheckBoxMenuItemIcon.java
index c70be48b..501602b6 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatCheckBoxMenuItemIcon.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatCheckBoxMenuItemIcon.java
@@ -67,14 +67,14 @@ public class FlatCheckBoxMenuItemIcon
g2.draw( path );
}
- private Color getCheckmarkColor( Component c ) {
+ protected Color getCheckmarkColor( Component c ) {
if( c instanceof JMenuItem && ((JMenuItem)c).isArmed() && !isUnderlineSelection() )
return selectionForeground;
return c.isEnabled() ? checkmarkColor : disabledCheckmarkColor;
}
- private boolean isUnderlineSelection() {
+ protected boolean isUnderlineSelection() {
// not storing value of "MenuItem.selectionType" in class to allow changing at runtime
return "underline".equals( UIManager.getString( "MenuItem.selectionType" ) );
}
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatMenuArrowIcon.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatMenuArrowIcon.java
index 2f4af4de..2c401f61 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatMenuArrowIcon.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatMenuArrowIcon.java
@@ -65,14 +65,14 @@ public class FlatMenuArrowIcon
}
}
- private Color getArrowColor( Component c ) {
+ protected Color getArrowColor( Component c ) {
if( c instanceof JMenu && ((JMenu)c).isSelected() && !isUnderlineSelection() )
return selectionForeground;
return c.isEnabled() ? arrowColor : disabledArrowColor;
}
- private boolean isUnderlineSelection() {
+ protected boolean isUnderlineSelection() {
// not storing value of "MenuItem.selectionType" in class to allow changing at runtime
return "underline".equals( UIManager.getString( "MenuItem.selectionType" ) );
}
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatRadioButtonIcon.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatRadioButtonIcon.java
index 5d05a2cf..16c74bf8 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatRadioButtonIcon.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatRadioButtonIcon.java
@@ -18,7 +18,6 @@ package com.formdev.flatlaf.icons;
import java.awt.Graphics2D;
import java.awt.geom.Ellipse2D;
-import com.formdev.flatlaf.ui.FlatUIUtils;
/**
* Icon for {@link javax.swing.JRadioButton}.
@@ -34,7 +33,7 @@ import com.formdev.flatlaf.ui.FlatUIUtils;
public class FlatRadioButtonIcon
extends FlatCheckBoxIcon
{
- protected final int centerDiameter = FlatUIUtils.getUIInt( "RadioButton.icon.centerDiameter", 8 );
+ protected final int centerDiameter = getUIInt( "RadioButton.icon.centerDiameter", 8, style );
@Override
protected void paintFocusBorder( Graphics2D g2 ) {
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatArrowButton.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatArrowButton.java
index 6627edb9..172f07d1 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatArrowButton.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatArrowButton.java
@@ -47,15 +47,23 @@ public class FlatArrowButton
private final Color disabledForeground;
private final Color hoverForeground;
private final Color hoverBackground;
+ private final Color pressedBackground;
private int arrowWidth = DEFAULT_ARROW_WIDTH;
private int xOffset = 0;
private int yOffset = 0;
private boolean hover;
+ private boolean pressed;
public FlatArrowButton( int direction, String type, Color foreground, Color disabledForeground,
Color hoverForeground, Color hoverBackground )
+ {
+ this( direction, type, foreground, disabledForeground, hoverForeground, hoverBackground, null );
+ }
+
+ public FlatArrowButton( int direction, String type, Color foreground, Color disabledForeground,
+ Color hoverForeground, Color hoverBackground, Color pressedBackground )
{
super( direction, Color.WHITE, Color.WHITE, Color.WHITE, Color.WHITE );
@@ -64,11 +72,12 @@ public class FlatArrowButton
this.disabledForeground = disabledForeground;
this.hoverForeground = hoverForeground;
this.hoverBackground = hoverBackground;
+ this.pressedBackground = pressedBackground;
setOpaque( false );
setBorder( null );
- if( hoverForeground != null || hoverBackground != null ) {
+ if( hoverForeground != null || hoverBackground != null || pressedBackground != null ) {
addMouseListener( new MouseAdapter() {
@Override
public void mouseEntered( MouseEvent e ) {
@@ -81,6 +90,18 @@ public class FlatArrowButton
hover = false;
repaint();
}
+
+ @Override
+ public void mousePressed( MouseEvent e ) {
+ pressed = true;
+ repaint();
+ }
+
+ @Override
+ public void mouseReleased( MouseEvent e ) {
+ pressed = false;
+ repaint();
+ }
} );
}
}
@@ -97,6 +118,10 @@ public class FlatArrowButton
return hover;
}
+ protected boolean isPressed() {
+ return pressed;
+ }
+
public int getXOffset() {
return xOffset;
}
@@ -113,8 +138,8 @@ public class FlatArrowButton
this.yOffset = yOffset;
}
- protected Color deriveHoverBackground( Color hoverBackground ) {
- return hoverBackground;
+ protected Color deriveBackground( Color background ) {
+ return background;
}
@Override
@@ -136,10 +161,18 @@ public class FlatArrowButton
int height = getHeight();
boolean enabled = isEnabled();
- // paint hover background
- if( enabled && isHover() && hoverBackground != null ) {
- g.setColor( deriveHoverBackground( hoverBackground ) );
- g.fillRect( 0, 0, width, height );
+ // paint hover or pressed background
+ if( enabled ) {
+ Color background = (pressedBackground != null && isPressed())
+ ? deriveBackground( pressedBackground )
+ : ((hoverBackground != null && isHover())
+ ? deriveBackground( hoverBackground )
+ : null);
+
+ if( background != null ) {
+ g.setColor( background );
+ g.fillRect( 0, 0, width, height );
+ }
}
int direction = getDirection();
@@ -160,14 +193,8 @@ public class FlatArrowButton
rh++;
}
- // Adding -/+0.35 before rounding tends move up NORTH arrows and move down SOUTH arrows.
- // This makes top margin of NORTH arrow equal to bottom margin of SOUTH arrow.
- float rd = 0.35f;
- float xrd = vert ? 0 : (direction == WEST ? -rd : rd);
- float yrd = vert ? (direction == NORTH ? -rd : rd) : 0;
-
- int x = Math.round( (width - rw) / 2f + scale( (float) xOffset ) + xrd );
- int y = Math.round( (height - rh) / 2f + scale( (float) yOffset ) + yrd );
+ int x = Math.round( (width - rw) / 2f + scale( (float) xOffset ) );
+ int y = Math.round( (height - rh) / 2f + scale( (float) yOffset ) );
// move arrow for round borders
Container parent = getParent();
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatButtonBorder.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatButtonBorder.java
index e21aa3e1..266a4d60 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatButtonBorder.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatButtonBorder.java
@@ -114,8 +114,8 @@ public class FlatButtonBorder
} else {
insets = super.getBorderInsets( c, insets );
- // use smaller left and right insets for icon-only buttons (so that they are square)
- if( FlatButtonUI.isIconOnlyButton( c ) && ((AbstractButton)c).getMargin() instanceof UIResource )
+ // use smaller left and right insets for icon-only or single-character buttons (so that they are square)
+ if( FlatButtonUI.isIconOnlyOrSingleCharacterButton( c ) && ((AbstractButton)c).getMargin() instanceof UIResource )
insets.left = insets.right = Math.min( insets.top, insets.bottom );
}
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatButtonUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatButtonUI.java
index bc25074b..f6a27663 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatButtonUI.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatButtonUI.java
@@ -67,6 +67,7 @@ import com.formdev.flatlaf.util.UIScale;
* @uiDefault Button.focusedBackground Color optional
* @uiDefault Button.hoverBackground Color optional
* @uiDefault Button.pressedBackground Color optional
+ * @uiDefault Button.disabledBackground Color optional
* @uiDefault Button.disabledText Color
* @uiDefault Button.default.background Color
* @uiDefault Button.default.startBackground Color optional; if set, a gradient paint is used and Button.default.background is ignored
@@ -97,6 +98,7 @@ public class FlatButtonUI
protected Color focusedBackground;
protected Color hoverBackground;
protected Color pressedBackground;
+ protected Color disabledBackground;
protected Color disabledText;
protected Color defaultBackground;
@@ -142,6 +144,7 @@ public class FlatButtonUI
focusedBackground = UIManager.getColor( prefix + "focusedBackground" );
hoverBackground = UIManager.getColor( prefix + "hoverBackground" );
pressedBackground = UIManager.getColor( prefix + "pressedBackground" );
+ disabledBackground = UIManager.getColor( prefix + "disabledBackground" );
disabledText = UIManager.getColor( prefix + "disabledText" );
if( UIManager.getBoolean( "Button.paintShadow" ) ) {
@@ -224,7 +227,11 @@ public class FlatButtonUI
return c instanceof JButton && ((JButton)c).isDefaultButton();
}
- static boolean isIconOnlyButton( Component c ) {
+ /**
+ * Returns true if the button has an icon but no text,
+ * or it it does not have an icon and the text is either "..." or one character.
+ */
+ static boolean isIconOnlyOrSingleCharacterButton( Component c ) {
if( !(c instanceof JButton) && !(c instanceof JToggleButton) )
return false;
@@ -322,6 +329,11 @@ public class FlatButtonUI
}
}
+ @Override
+ public void paint( Graphics g, JComponent c ) {
+ super.paint( FlatLabelUI.createGraphicsHTMLTextYCorrection( g, c ), c );
+ }
+
@Override
protected void paintText( Graphics g, AbstractButton b, Rectangle textRect, String text ) {
if( isHelpButton( b ) )
@@ -352,7 +364,7 @@ public class FlatButtonUI
protected Color getBackground( JComponent c ) {
if( !c.isEnabled() )
- return null;
+ return disabledBackground;
// toolbar button
if( isToolBarButton( c ) ) {
@@ -409,11 +421,13 @@ public class FlatButtonUI
if( prefSize == null )
return null;
- // make button square if it is a icon-only button
- // or apply minimum width, if not in toolbar and not a icon-only button
- if( isIconOnlyButton( c ) )
- prefSize.width = Math.max( prefSize.width, prefSize.height );
- else if( !isToolBarButton( c ) && c.getBorder() instanceof FlatButtonBorder ) {
+ // make button square if it is a single-character button
+ // or apply minimum width, if not in toolbar and not a icon-only or single-character button
+ if( isIconOnlyOrSingleCharacterButton( c ) ) {
+ // make only single-character buttons square to allow non-square icon-only buttons
+ if( ((AbstractButton)c).getIcon() == null )
+ prefSize.width = Math.max( prefSize.width, prefSize.height );
+ } else if( !isToolBarButton( c ) && c.getBorder() instanceof FlatButtonBorder ) {
float focusWidth = FlatUIUtils.getBorderFocusWidth( c );
prefSize.width = Math.max( prefSize.width, scale( FlatUIUtils.minimumWidth( c, minimumWidth ) ) + Math.round( focusWidth * 2 ) );
prefSize.height = Math.max( prefSize.height, scale( FlatUIUtils.minimumHeight( c, 0 ) ) + Math.round( focusWidth * 2 ) );
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatComboBoxUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatComboBoxUI.java
index e41bfb21..cd2f5ac3 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatComboBoxUI.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatComboBoxUI.java
@@ -80,6 +80,7 @@ import com.formdev.flatlaf.util.UIScale;
*
* @uiDefault ComboBox.minimumWidth int
* @uiDefault ComboBox.editorColumns int
+ * @uiDefault ComboBox.buttonStyle String auto (default), button or none
* @uiDefault Component.arrowType String triangle (default) or chevron
* @uiDefault Component.isIntelliJTheme boolean
* @uiDefault Component.borderColor Color
@@ -100,6 +101,7 @@ public class FlatComboBoxUI
{
protected int minimumWidth;
protected int editorColumns;
+ protected String buttonStyle;
protected String arrowType;
protected boolean isIntelliJTheme;
protected Color borderColor;
@@ -154,6 +156,7 @@ public class FlatComboBoxUI
minimumWidth = UIManager.getInt( "ComboBox.minimumWidth" );
editorColumns = UIManager.getInt( "ComboBox.editorColumns" );
+ buttonStyle = UIManager.getString( "ComboBox.buttonStyle" );
arrowType = UIManager.getString( "Component.arrowType" );
isIntelliJTheme = UIManager.getBoolean( "Component.isIntelliJTheme" );
borderColor = UIManager.getColor( "Component.borderColor" );
@@ -314,12 +317,11 @@ public class FlatComboBoxUI
// use non-UIResource colors because when SwingUtilities.updateComponentTreeUI()
// is used, then the editor is updated after the combobox and the
// colors are again replaced with default colors
- boolean enabled = editor.isEnabled();
- editor.setForeground( FlatUIUtils.nonUIResource( (enabled || editor instanceof JTextComponent)
- ? comboBox.getForeground()
- : disabledForeground ) );
- if( editor instanceof JTextComponent )
- ((JTextComponent)editor).setDisabledTextColor( FlatUIUtils.nonUIResource( disabledForeground ) );
+ boolean isTextComponent = editor instanceof JTextComponent;
+ editor.setForeground( FlatUIUtils.nonUIResource( getForeground( isTextComponent || editor.isEnabled() ) ) );
+
+ if( isTextComponent )
+ ((JTextComponent)editor).setDisabledTextColor( FlatUIUtils.nonUIResource( getForeground( false ) ) );
}
@Override
@@ -350,18 +352,17 @@ public class FlatComboBoxUI
int height = c.getHeight();
int arrowX = arrowButton.getX();
int arrowWidth = arrowButton.getWidth();
+ boolean paintButton = (comboBox.isEditable() || "button".equals( buttonStyle )) && !"none".equals( buttonStyle );
boolean enabled = comboBox.isEnabled();
boolean isLeftToRight = comboBox.getComponentOrientation().isLeftToRight();
// paint background
- g2.setColor( enabled
- ? (editableBackground != null && comboBox.isEditable() ? editableBackground : c.getBackground())
- : getDisabledBackground( comboBox ) );
+ g2.setColor( getBackground( enabled ) );
FlatUIUtils.paintComponentBackground( g2, 0, 0, width, height, focusWidth, arc );
// paint arrow button background
if( enabled ) {
- g2.setColor( comboBox.isEditable() ? buttonEditableBackground : buttonBackground );
+ g2.setColor( paintButton ? buttonEditableBackground : buttonBackground );
Shape oldClip = g2.getClip();
if( isLeftToRight )
g2.clipRect( arrowX, 0, width - arrowX, height );
@@ -372,7 +373,7 @@ public class FlatComboBoxUI
}
// paint vertical line between value and arrow button
- if( comboBox.isEditable() ) {
+ if( paintButton ) {
g2.setColor( enabled ? borderColor : disabledBorderColor );
float lw = scale( 1f );
float lx = isLeftToRight ? arrowX : arrowX + arrowWidth - lw;
@@ -395,8 +396,8 @@ public class FlatComboBoxUI
uninstallCellPaddingBorder( c );
boolean enabled = comboBox.isEnabled();
- c.setForeground( enabled ? comboBox.getForeground() : disabledForeground );
- c.setBackground( enabled ? comboBox.getBackground() : getDisabledBackground( comboBox ) );
+ c.setBackground( getBackground( enabled ) );
+ c.setForeground( getForeground( enabled ) );
boolean shouldValidate = (c instanceof JPanel);
if( padding != null )
@@ -416,8 +417,14 @@ public class FlatComboBoxUI
// not necessary because already painted in update()
}
- private Color getDisabledBackground( JComponent c ) {
- return isIntelliJTheme ? FlatUIUtils.getParentBackground( c ) : disabledBackground;
+ protected Color getBackground( boolean enabled ) {
+ return enabled
+ ? (editableBackground != null && comboBox.isEditable() ? editableBackground : comboBox.getBackground())
+ : (isIntelliJTheme ? FlatUIUtils.getParentBackground( comboBox ) : disabledBackground);
+ }
+
+ protected Color getForeground( boolean enabled ) {
+ return enabled ? comboBox.getForeground() : disabledForeground;
}
@Override
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatEditorPaneUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatEditorPaneUI.java
index f988d89e..45484034 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatEditorPaneUI.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatEditorPaneUI.java
@@ -19,6 +19,7 @@ package com.formdev.flatlaf.ui;
import static com.formdev.flatlaf.util.UIScale.scale;
import java.awt.Dimension;
import java.awt.Graphics;
+import java.awt.Graphics2D;
import java.beans.PropertyChangeEvent;
import javax.swing.JComponent;
import javax.swing.JEditorPane;
@@ -28,6 +29,7 @@ import javax.swing.plaf.UIResource;
import javax.swing.plaf.basic.BasicEditorPaneUI;
import javax.swing.text.JTextComponent;
import com.formdev.flatlaf.FlatClientProperties;
+import com.formdev.flatlaf.util.HiDPIUtils;
/**
* Provides the Flat LaF UI delegate for {@link javax.swing.JEditorPane}.
@@ -119,6 +121,11 @@ public class FlatEditorPaneUI
return size;
}
+ @Override
+ protected void paintSafely( Graphics g ) {
+ super.paintSafely( HiDPIUtils.createGraphicsTextYCorrection( (Graphics2D) g ) );
+ }
+
@Override
protected void paintBackground( Graphics g ) {
JTextComponent c = getComponent();
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatLabelUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatLabelUI.java
index 6ed86360..b26853b2 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatLabelUI.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatLabelUI.java
@@ -19,6 +19,7 @@ package com.formdev.flatlaf.ui;
import java.awt.Color;
import java.awt.FontMetrics;
import java.awt.Graphics;
+import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.beans.PropertyChangeEvent;
import javax.swing.Icon;
@@ -30,6 +31,7 @@ import javax.swing.plaf.ComponentUI;
import javax.swing.plaf.basic.BasicHTML;
import javax.swing.plaf.basic.BasicLabelUI;
import com.formdev.flatlaf.FlatLaf;
+import com.formdev.flatlaf.util.HiDPIUtils;
import com.formdev.flatlaf.util.UIScale;
/**
@@ -124,6 +126,17 @@ public class FlatLabelUI
BasicHTML.updateRenderer( c, text );
}
+ static Graphics createGraphicsHTMLTextYCorrection( Graphics g, JComponent c ) {
+ return (c.getClientProperty( BasicHTML.propertyKey ) != null)
+ ? HiDPIUtils.createGraphicsTextYCorrection( (Graphics2D) g )
+ : g;
+ }
+
+ @Override
+ public void paint( Graphics g, JComponent c ) {
+ super.paint( createGraphicsHTMLTextYCorrection( g, c ), c );
+ }
+
@Override
protected void paintEnabledText( JLabel l, Graphics g, String s, int textX, int textY ) {
int mnemIndex = FlatLaf.isShowMnemonics() ? l.getDisplayedMnemonicIndex() : -1;
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatMenuItemRenderer.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatMenuItemRenderer.java
index 4bd7107c..d1904120 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatMenuItemRenderer.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatMenuItemRenderer.java
@@ -40,6 +40,7 @@ import javax.swing.plaf.basic.BasicHTML;
import javax.swing.text.View;
import com.formdev.flatlaf.FlatLaf;
import com.formdev.flatlaf.util.Graphics2DProxy;
+import com.formdev.flatlaf.util.HiDPIUtils;
/**
* Renderer for menu items.
@@ -360,7 +361,7 @@ debug*/
if( isArmedOrSelected( menuItem ) && selectionForeground != null )
g = new GraphicsProxyWithTextColor( (Graphics2D) g, selectionForeground );
- htmlView.paint( g, textRect );
+ htmlView.paint( HiDPIUtils.createGraphicsTextYCorrection( (Graphics2D) g ), textRect );
}
protected static boolean isArmedOrSelected( JMenuItem menuItem ) {
@@ -371,7 +372,7 @@ debug*/
return menuItem instanceof JMenu && ((JMenu)menuItem).isTopLevelMenu();
}
- private boolean isUnderlineSelection() {
+ protected boolean isUnderlineSelection() {
return "underline".equals( UIManager.getString( "MenuItem.selectionType" ) );
}
@@ -416,6 +417,13 @@ debug*/
if( accelerator == cachedAccelerator )
return cachedAcceleratorText;
+ cachedAccelerator = accelerator;
+ cachedAcceleratorText = getTextForAccelerator( accelerator );
+
+ return cachedAcceleratorText;
+ }
+
+ protected String getTextForAccelerator( KeyStroke accelerator ) {
StringBuilder buf = new StringBuilder();
int modifiers = accelerator.getModifiers();
if( modifiers != 0 )
@@ -427,10 +435,7 @@ debug*/
else
buf.append( accelerator.getKeyChar() );
- cachedAccelerator = accelerator;
- cachedAcceleratorText = buf.toString();
-
- return cachedAcceleratorText;
+ return buf.toString();
}
//---- class MinSizeIcon --------------------------------------------------
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatPasswordFieldUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatPasswordFieldUI.java
index 92b4c9f5..0ca2abda 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatPasswordFieldUI.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatPasswordFieldUI.java
@@ -19,6 +19,7 @@ package com.formdev.flatlaf.ui;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
+import java.awt.Graphics2D;
import java.awt.Toolkit;
import java.awt.event.FocusListener;
import java.awt.event.KeyAdapter;
@@ -33,6 +34,7 @@ import javax.swing.plaf.ComponentUI;
import javax.swing.plaf.basic.BasicPasswordFieldUI;
import javax.swing.text.Caret;
import javax.swing.text.JTextComponent;
+import com.formdev.flatlaf.util.HiDPIUtils;
/**
* Provides the Flat LaF UI delegate for {@link javax.swing.JPasswordField}.
@@ -153,7 +155,8 @@ public class FlatPasswordFieldUI
FlatTextFieldUI.paintBackground( g, getComponent(), isIntelliJTheme );
FlatTextFieldUI.paintPlaceholder( g, getComponent(), placeholderForeground );
paintCapsLock( g );
- super.paintSafely( g );
+
+ super.paintSafely( HiDPIUtils.createGraphicsTextYCorrection( (Graphics2D) g ) );
}
protected void paintCapsLock( Graphics g ) {
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatPopupFactory.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatPopupFactory.java
index 37fc2c1f..08f479e0 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatPopupFactory.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatPopupFactory.java
@@ -153,7 +153,8 @@ public class FlatPopupFactory
@Override
public void show() {
- delegate.show();
+ if( delegate != null )
+ delegate.show();
}
@Override
@@ -185,6 +186,7 @@ public class FlatPopupFactory
private boolean oldOpaque;
// medium weight
+ private boolean mediumWeightShown;
private Panel mediumWeightPanel;
private JPanel dropShadowPanel;
private ComponentListener mediumPanelListener;
@@ -311,6 +313,11 @@ public class FlatPopupFactory
}
private void showMediumWeightDropShadow() {
+ if( mediumWeightShown )
+ return;
+
+ mediumWeightShown = true;
+
Window window = SwingUtilities.windowForComponent( owner );
if( window == null )
return;
@@ -326,24 +333,29 @@ public class FlatPopupFactory
mediumPanelListener = new ComponentListener() {
@Override
public void componentShown( ComponentEvent e ) {
- dropShadowPanel.setVisible( true );
+ if( dropShadowPanel != null )
+ dropShadowPanel.setVisible( true );
}
@Override
public void componentHidden( ComponentEvent e ) {
- dropShadowPanel.setVisible( false );
+ if( dropShadowPanel != null )
+ dropShadowPanel.setVisible( false );
}
@Override
public void componentMoved( ComponentEvent e ) {
- Point location = mediumWeightPanel.getLocation();
- Insets insets = dropShadowPanel.getInsets();
- dropShadowPanel.setLocation( location.x - insets.left, location.y - insets.top );
+ if( dropShadowPanel != null && mediumWeightPanel != null ) {
+ Point location = mediumWeightPanel.getLocation();
+ Insets insets = dropShadowPanel.getInsets();
+ dropShadowPanel.setLocation( location.x - insets.left, location.y - insets.top );
+ }
}
@Override
public void componentResized( ComponentEvent e ) {
- dropShadowPanel.setSize( FlatUIUtils.addInsets( mediumWeightPanel.getSize(), dropShadowPanel.getInsets() ) );
+ if( dropShadowPanel != null )
+ dropShadowPanel.setSize( FlatUIUtils.addInsets( mediumWeightPanel.getSize(), dropShadowPanel.getInsets() ) );
}
};
mediumWeightPanel.addComponentListener( mediumPanelListener );
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatProgressBarUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatProgressBarUI.java
index 705725fd..4ac1efbd 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatProgressBarUI.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatProgressBarUI.java
@@ -31,6 +31,7 @@ import javax.swing.LookAndFeel;
import javax.swing.UIManager;
import javax.swing.plaf.ComponentUI;
import javax.swing.plaf.basic.BasicProgressBarUI;
+import com.formdev.flatlaf.util.HiDPIUtils;
import com.formdev.flatlaf.util.UIScale;
/**
@@ -194,6 +195,11 @@ public class FlatProgressBarUI
}
}
+ @Override
+ protected void paintString( Graphics g, int x, int y, int width, int height, int amountFull, Insets b ) {
+ super.paintString( HiDPIUtils.createGraphicsTextYCorrection( (Graphics2D) g ), x, y, width, height, amountFull, b );
+ }
+
@Override
protected void setAnimationIndex( int newValue ) {
super.setAnimationIndex( newValue );
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatRadioButtonUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatRadioButtonUI.java
index ffc2b854..7bde15d2 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatRadioButtonUI.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatRadioButtonUI.java
@@ -153,7 +153,7 @@ public class FlatRadioButtonUI
}
}
- super.paint( g, c );
+ super.paint( FlatLabelUI.createGraphicsHTMLTextYCorrection( g, c ), c );
}
@Override
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatScrollBarUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatScrollBarUI.java
index 0b43498f..26571390 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatScrollBarUI.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatScrollBarUI.java
@@ -59,13 +59,18 @@ import com.formdev.flatlaf.util.UIScale;
* @uiDefault ScrollBar.thumbInsets Insets
* @uiDefault ScrollBar.trackArc int
* @uiDefault ScrollBar.thumbArc int
- * @uiDefault ScrollBar.hoverTrackColor Color
- * @uiDefault ScrollBar.hoverThumbColor Color
+ * @uiDefault ScrollBar.hoverTrackColor Color optional
+ * @uiDefault ScrollBar.hoverThumbColor Color optional
* @uiDefault ScrollBar.hoverThumbWithTrack boolean
+ * @uiDefault ScrollBar.pressedTrackColor Color optional
+ * @uiDefault ScrollBar.pressedThumbColor Color optional
+ * @uiDefault ScrollBar.pressedThumbWithTrack boolean
* @uiDefault Component.arrowType String triangle (default) or chevron
* @uiDefault ScrollBar.showButtons boolean
* @uiDefault ScrollBar.buttonArrowColor Color
* @uiDefault ScrollBar.buttonDisabledArrowColor Color
+ * @uiDefault ScrollBar.hoverButtonBackground Color optional
+ * @uiDefault ScrollBar.pressedButtonBackground Color optional
*
* @author Karl Tauber
*/
@@ -79,11 +84,16 @@ public class FlatScrollBarUI
protected Color hoverTrackColor;
protected Color hoverThumbColor;
protected boolean hoverThumbWithTrack;
+ protected Color pressedTrackColor;
+ protected Color pressedThumbColor;
+ protected boolean pressedThumbWithTrack;
protected boolean showButtons;
protected String arrowType;
protected Color buttonArrowColor;
protected Color buttonDisabledArrowColor;
+ protected Color hoverButtonBackground;
+ protected Color pressedButtonBackground;
private MouseAdapter hoverListener;
protected boolean hoverTrack;
@@ -122,11 +132,16 @@ public class FlatScrollBarUI
hoverTrackColor = UIManager.getColor( "ScrollBar.hoverTrackColor" );
hoverThumbColor = UIManager.getColor( "ScrollBar.hoverThumbColor" );
hoverThumbWithTrack = UIManager.getBoolean( "ScrollBar.hoverThumbWithTrack" );
+ pressedTrackColor = UIManager.getColor( "ScrollBar.pressedTrackColor" );
+ pressedThumbColor = UIManager.getColor( "ScrollBar.pressedThumbColor" );
+ pressedThumbWithTrack = UIManager.getBoolean( "ScrollBar.pressedThumbWithTrack" );
showButtons = UIManager.getBoolean( "ScrollBar.showButtons" );
arrowType = UIManager.getString( "Component.arrowType" );
buttonArrowColor = UIManager.getColor( "ScrollBar.buttonArrowColor" );
buttonDisabledArrowColor = UIManager.getColor( "ScrollBar.buttonDisabledArrowColor" );
+ hoverButtonBackground = UIManager.getColor( "ScrollBar.hoverButtonBackground" );
+ pressedButtonBackground = UIManager.getColor( "ScrollBar.pressedButtonBackground" );
}
@Override
@@ -137,9 +152,13 @@ public class FlatScrollBarUI
thumbInsets = null;
hoverTrackColor = null;
hoverThumbColor = null;
+ pressedTrackColor = null;
+ pressedThumbColor = null;
buttonArrowColor = null;
buttonDisabledArrowColor = null;
+ hoverButtonBackground = null;
+ pressedButtonBackground = null;
}
@Override
@@ -188,12 +207,12 @@ public class FlatScrollBarUI
}
private JButton createArrowButton( int orientation ) {
- FlatArrowButton button = new FlatArrowButton( orientation,
- arrowType, buttonArrowColor, buttonDisabledArrowColor, null, hoverTrackColor )
+ FlatArrowButton button = new FlatArrowButton( orientation, arrowType, buttonArrowColor,
+ buttonDisabledArrowColor, null, hoverButtonBackground, pressedButtonBackground )
{
@Override
- protected Color deriveHoverBackground( Color hoverBackground ) {
- return getTrackColor( scrollbar, true ) ;
+ protected Color deriveBackground( Color background ) {
+ return FlatUIUtils.deriveColor( background, scrollbar.getBackground() );
}
@Override
@@ -221,7 +240,7 @@ public class FlatScrollBarUI
return button;
}
- private boolean isShowButtons() {
+ protected boolean isShowButtons() {
Object showButtons = scrollbar.getClientProperty( FlatClientProperties.SCROLL_BAR_SHOW_BUTTONS );
if( showButtons == null && scrollbar.getParent() instanceof JScrollPane )
showButtons = ((JScrollPane)scrollbar.getParent()).getClientProperty( FlatClientProperties.SCROLL_BAR_SHOW_BUTTONS );
@@ -236,7 +255,7 @@ public class FlatScrollBarUI
@Override
protected void paintTrack( Graphics g, JComponent c, Rectangle trackBounds ) {
- g.setColor( getTrackColor( c, hoverTrack ) );
+ g.setColor( getTrackColor( c, hoverTrack, isPressed && hoverTrack && !hoverThumb ) );
paintTrackOrThumb( g, c, trackBounds, trackInsets, trackArc );
}
@@ -245,7 +264,8 @@ public class FlatScrollBarUI
if( thumbBounds.isEmpty() || !scrollbar.isEnabled() )
return;
- g.setColor( getThumbColor( c, hoverThumb ) );
+ g.setColor( getThumbColor( c, hoverThumb || (hoverThumbWithTrack && hoverTrack),
+ isPressed && (hoverThumb || (pressedThumbWithTrack && hoverTrack)) ) );
paintTrackOrThumb( g, c, thumbBounds, thumbInsets, thumbArc );
}
@@ -277,15 +297,23 @@ public class FlatScrollBarUI
// do not paint
}
- protected Color getTrackColor( JComponent c, boolean hover ) {
+ protected Color getTrackColor( JComponent c, boolean hover, boolean pressed ) {
Color trackColor = FlatUIUtils.deriveColor( this.trackColor, c.getBackground() );
- return hover ? FlatUIUtils.deriveColor( hoverTrackColor, trackColor ) : trackColor;
+ return (pressed && pressedTrackColor != null)
+ ? FlatUIUtils.deriveColor( pressedTrackColor, trackColor )
+ : ((hover && hoverTrackColor != null)
+ ? FlatUIUtils.deriveColor( hoverTrackColor, trackColor )
+ : trackColor);
}
- protected Color getThumbColor( JComponent c, boolean hover ) {
+ protected Color getThumbColor( JComponent c, boolean hover, boolean pressed ) {
Color trackColor = FlatUIUtils.deriveColor( this.trackColor, c.getBackground() );
Color thumbColor = FlatUIUtils.deriveColor( this.thumbColor, trackColor );
- return hover ? FlatUIUtils.deriveColor( hoverThumbColor, thumbColor ) : thumbColor;
+ return (pressed && pressedThumbColor != null)
+ ? FlatUIUtils.deriveColor( pressedThumbColor, thumbColor )
+ : ((hover && hoverThumbColor != null)
+ ? FlatUIUtils.deriveColor( hoverThumbColor, thumbColor )
+ : thumbColor);
}
@Override
@@ -323,11 +351,14 @@ public class FlatScrollBarUI
@Override
public void mousePressed( MouseEvent e ) {
isPressed = true;
+ repaint();
}
@Override
public void mouseReleased( MouseEvent e ) {
isPressed = false;
+ repaint();
+
update( e.getX(), e.getY() );
}
@@ -336,7 +367,7 @@ public class FlatScrollBarUI
boolean inThumb = getThumbBounds().contains( x, y );
if( inTrack != hoverTrack || inThumb != hoverThumb ) {
hoverTrack = inTrack;
- hoverThumb = inThumb || (hoverThumbWithTrack && inTrack);
+ hoverThumb = inThumb;
repaint();
}
}
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatSpinnerUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatSpinnerUI.java
index 395534cc..c3626299 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatSpinnerUI.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatSpinnerUI.java
@@ -58,6 +58,7 @@ import com.formdev.flatlaf.FlatClientProperties;
*
*
* @uiDefault Component.minimumWidth int
+ * @uiDefault Spinner.buttonStyle String button (default) or none
* @uiDefault Component.arrowType String triangle (default) or chevron
* @uiDefault Component.isIntelliJTheme boolean
* @uiDefault Component.borderColor Color
@@ -78,6 +79,7 @@ public class FlatSpinnerUI
private Handler handler;
protected int minimumWidth;
+ protected String buttonStyle;
protected String arrowType;
protected boolean isIntelliJTheme;
protected Color borderColor;
@@ -101,6 +103,7 @@ public class FlatSpinnerUI
LookAndFeel.installProperty( spinner, "opaque", false );
minimumWidth = UIManager.getInt( "Component.minimumWidth" );
+ buttonStyle = UIManager.getString( "Spinner.buttonStyle" );
arrowType = UIManager.getString( "Component.arrowType" );
isIntelliJTheme = UIManager.getBoolean( "Component.isIntelliJTheme" );
borderColor = UIManager.getColor( "Component.borderColor" );
@@ -203,8 +206,8 @@ public class FlatSpinnerUI
// use non-UIResource colors because when SwingUtilities.updateComponentTreeUI()
// is used, then the text field is updated after the spinner and the
// colors are again replaced with default colors
- textField.setForeground( FlatUIUtils.nonUIResource( spinner.getForeground() ) );
- textField.setDisabledTextColor( FlatUIUtils.nonUIResource( disabledForeground ) );
+ textField.setForeground( FlatUIUtils.nonUIResource( getForeground( true ) ) );
+ textField.setDisabledTextColor( FlatUIUtils.nonUIResource( getForeground( false ) ) );
}
}
@@ -214,6 +217,16 @@ public class FlatSpinnerUI
: null;
}
+ protected Color getBackground( boolean enabled ) {
+ return enabled
+ ? spinner.getBackground()
+ : (isIntelliJTheme ? FlatUIUtils.getParentBackground( spinner ) : disabledBackground);
+ }
+
+ protected Color getForeground( boolean enabled ) {
+ return enabled ? spinner.getForeground() : disabledForeground;
+ }
+
@Override
protected LayoutManager createLayout() {
return getHandler();
@@ -258,17 +271,16 @@ public class FlatSpinnerUI
Component nextButton = getHandler().nextButton;
int arrowX = nextButton.getX();
int arrowWidth = nextButton.getWidth();
+ boolean paintButton = !"none".equals( buttonStyle );
boolean enabled = spinner.isEnabled();
boolean isLeftToRight = spinner.getComponentOrientation().isLeftToRight();
// paint background
- g2.setColor( enabled
- ? c.getBackground()
- : (isIntelliJTheme ? FlatUIUtils.getParentBackground( c ) : disabledBackground) );
+ g2.setColor( getBackground( enabled ) );
FlatUIUtils.paintComponentBackground( g2, 0, 0, width, height, focusWidth, arc );
// paint arrow buttons background
- if( enabled ) {
+ if( paintButton && enabled ) {
g2.setColor( buttonBackground );
Shape oldClip = g2.getClip();
if( isLeftToRight )
@@ -280,10 +292,12 @@ public class FlatSpinnerUI
}
// paint vertical line between value and arrow buttons
- g2.setColor( enabled ? borderColor : disabledBorderColor );
- float lw = scale( 1f );
- float lx = isLeftToRight ? arrowX : arrowX + arrowWidth - lw;
- g2.fill( new Rectangle2D.Float( lx, focusWidth, lw, height - 1 - (focusWidth * 2) ) );
+ if( paintButton ) {
+ g2.setColor( enabled ? borderColor : disabledBorderColor );
+ float lw = scale( 1f );
+ float lx = isLeftToRight ? arrowX : arrowX + arrowWidth - lw;
+ g2.fill( new Rectangle2D.Float( lx, focusWidth, lw, height - 1 - (focusWidth * 2) ) );
+ }
paint( g, c );
}
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTabbedPaneUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTabbedPaneUI.java
index 1a8cf0ca..2b5f26b8 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTabbedPaneUI.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTabbedPaneUI.java
@@ -333,28 +333,30 @@ public class FlatTabbedPaneUI
// paint tab separators
if( clientPropertyBoolean( tabPane, TABBED_PANE_SHOW_TAB_SEPARATORS, showTabSeparators ) &&
!isLastInRun( tabIndex ) )
- {
- float sepWidth = UIScale.scale( 1f );
- float offset = tabSeparatorsFullHeight ? 0 : UIScale.scale( 5f );
-
- g.setColor( (tabSeparatorColor != null) ? tabSeparatorColor : contentAreaColor );
- if( tabPlacement == LEFT || tabPlacement == RIGHT ) {
- // paint tab separator at bottom side
- ((Graphics2D)g).fill( new Rectangle2D.Float( x + offset, y + h - sepWidth, w - (offset * 2), sepWidth ) );
- } else if( tabPane.getComponentOrientation().isLeftToRight() ) {
- // paint tab separator at right side
- ((Graphics2D)g).fill( new Rectangle2D.Float( x + w - sepWidth, y + offset, sepWidth, h - (offset * 2) ) );
- } else {
- // paint tab separator at left side
- ((Graphics2D)g).fill( new Rectangle2D.Float( x, y + offset, sepWidth, h - (offset * 2) ) );
- }
- }
+ paintTabSeparator( g, tabPlacement, x, y, w, h );
if( isSelected )
paintTabSelection( g, tabPlacement, x, y, w, h );
}
- protected void paintTabSelection( Graphics g, int tabPlacement, int x, int y, int w, int h ) {
+ protected void paintTabSeparator( Graphics g, int tabPlacement, int x, int y, int w, int h ) {
+ float sepWidth = UIScale.scale( 1f );
+ float offset = tabSeparatorsFullHeight ? 0 : UIScale.scale( 5f );
+
+ g.setColor( (tabSeparatorColor != null) ? tabSeparatorColor : contentAreaColor );
+ if( tabPlacement == LEFT || tabPlacement == RIGHT ) {
+ // paint tab separator at bottom side
+ ((Graphics2D)g).fill( new Rectangle2D.Float( x + offset, y + h - sepWidth, w - (offset * 2), sepWidth ) );
+ } else if( tabPane.getComponentOrientation().isLeftToRight() ) {
+ // paint tab separator at right side
+ ((Graphics2D)g).fill( new Rectangle2D.Float( x + w - sepWidth, y + offset, sepWidth, h - (offset * 2) ) );
+ } else {
+ // paint tab separator at left side
+ ((Graphics2D)g).fill( new Rectangle2D.Float( x, y + offset, sepWidth, h - (offset * 2) ) );
+ }
+ }
+
+ protected void paintTabSelection( Graphics g, int tabPlacement, int x, int y, int w, int h ) {
// increase clip bounds in scroll-tab-layout to paint over the separator line
Rectangle clipBounds = isScrollTabLayout() ? g.getClipBounds() : null;
if( clipBounds != null ) {
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTableCellBorder.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTableCellBorder.java
index 05669edf..cd25abae 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTableCellBorder.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTableCellBorder.java
@@ -86,7 +86,7 @@ public class FlatTableCellBorder
/**
* Checks whether at least one selected cell is editable.
*/
- private boolean isSelectionEditable( JTable table ) {
+ protected boolean isSelectionEditable( JTable table ) {
if( table.getRowSelectionAllowed() ) {
int columnCount = table.getColumnCount();
int[] selectedRows = table.getSelectedRows();
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTableHeaderUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTableHeaderUI.java
index e5c7754e..227bb478 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTableHeaderUI.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTableHeaderUI.java
@@ -86,26 +86,12 @@ public class FlatTableHeaderUI
case "top": sortIconPosition = SwingConstants.TOP; break;
case "bottom": sortIconPosition = SwingConstants.BOTTOM; break;
}
-
- // use own renderer if necessary
- if( sortIconPosition != SwingConstants.RIGHT ) {
- TableCellRenderer defaultRenderer = header.getDefaultRenderer();
- if( defaultRenderer instanceof UIResource )
- header.setDefaultRenderer( new FlatTableCellHeaderRenderer( defaultRenderer ) );
- }
}
@Override
protected void uninstallDefaults() {
super.uninstallDefaults();
- // restore default renderer
- TableCellRenderer defaultRenderer = header.getDefaultRenderer();
- if( defaultRenderer instanceof FlatTableCellHeaderRenderer ) {
- ((FlatTableCellHeaderRenderer)defaultRenderer).reset();
- header.setDefaultRenderer( ((FlatTableCellHeaderRenderer)defaultRenderer).delegate );
- }
-
separatorColor = null;
bottomSeparatorColor = null;
}
@@ -125,8 +111,22 @@ public class FlatTableHeaderUI
if( paintBorders )
paintColumnBorders( g, c );
+ // temporary use own default renderer if necessary
+ FlatTableCellHeaderRenderer sortIconRenderer = null;
+ if( sortIconPosition != SwingConstants.RIGHT ) {
+ sortIconRenderer = new FlatTableCellHeaderRenderer( header.getDefaultRenderer() );
+ header.setDefaultRenderer( sortIconRenderer );
+ }
+
+ // paint header
super.paint( g, c );
+ // restore default renderer
+ if( sortIconRenderer != null ) {
+ sortIconRenderer.reset();
+ header.setDefaultRenderer( sortIconRenderer.delegate );
+ }
+
if( paintBorders )
paintDraggedColumnBorders( g, c );
}
@@ -257,6 +257,7 @@ public class FlatTableHeaderUI
{
private final TableCellRenderer delegate;
+ private JLabel l;
private int oldHorizontalTextPosition = -1;
private Border origBorder;
private Icon sortIcon;
@@ -273,7 +274,7 @@ public class FlatTableHeaderUI
if( !(c instanceof JLabel) )
return c;
- JLabel l = (JLabel) c;
+ l = (JLabel) c;
if( sortIconPosition == SwingConstants.LEFT ) {
if( oldHorizontalTextPosition < 0 )
@@ -291,11 +292,8 @@ public class FlatTableHeaderUI
}
void reset() {
- if( sortIconPosition == SwingConstants.LEFT && oldHorizontalTextPosition >= 0 ) {
- Component c = getTableCellRendererComponent( header.getTable(), "", false, false, -1, 0 );
- if( c instanceof JLabel && ((JLabel)c).getHorizontalTextPosition() == SwingConstants.RIGHT )
- ((JLabel)c).setHorizontalTextPosition( oldHorizontalTextPosition );
- }
+ if( l != null && sortIconPosition == SwingConstants.LEFT && oldHorizontalTextPosition >= 0 )
+ l.setHorizontalTextPosition( oldHorizontalTextPosition );
}
@Override
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTextAreaUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTextAreaUI.java
index 226e57e5..5d640192 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTextAreaUI.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTextAreaUI.java
@@ -19,6 +19,7 @@ package com.formdev.flatlaf.ui;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
+import java.awt.Graphics2D;
import java.beans.PropertyChangeEvent;
import javax.swing.JComponent;
import javax.swing.JTextArea;
@@ -27,6 +28,7 @@ import javax.swing.plaf.ComponentUI;
import javax.swing.plaf.UIResource;
import javax.swing.plaf.basic.BasicTextAreaUI;
import javax.swing.text.JTextComponent;
+import com.formdev.flatlaf.util.HiDPIUtils;
/**
* Provides the Flat LaF UI delegate for {@link javax.swing.JTextArea}.
@@ -89,6 +91,11 @@ public class FlatTextAreaUI
FlatEditorPaneUI.propertyChange( getComponent(), e );
}
+ @Override
+ protected void paintSafely( Graphics g ) {
+ super.paintSafely( HiDPIUtils.createGraphicsTextYCorrection( (Graphics2D) g ) );
+ }
+
@Override
protected void paintBackground( Graphics g ) {
JTextComponent c = getComponent();
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTextFieldUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTextFieldUI.java
index 07600998..edcc3c0b 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTextFieldUI.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTextFieldUI.java
@@ -38,6 +38,7 @@ import javax.swing.plaf.basic.BasicTextFieldUI;
import javax.swing.text.Caret;
import javax.swing.text.JTextComponent;
import com.formdev.flatlaf.FlatClientProperties;
+import com.formdev.flatlaf.util.HiDPIUtils;
/**
* Provides the Flat LaF UI delegate for {@link javax.swing.JTextField}.
@@ -146,7 +147,8 @@ public class FlatTextFieldUI
protected void paintSafely( Graphics g ) {
paintBackground( g, getComponent(), isIntelliJTheme );
paintPlaceholder( g, getComponent(), placeholderForeground );
- super.paintSafely( g );
+
+ super.paintSafely( HiDPIUtils.createGraphicsTextYCorrection( (Graphics2D) g ) );
}
@Override
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTextPaneUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTextPaneUI.java
index 9a8715c5..0def747f 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTextPaneUI.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTextPaneUI.java
@@ -18,6 +18,7 @@ package com.formdev.flatlaf.ui;
import java.awt.Dimension;
import java.awt.Graphics;
+import java.awt.Graphics2D;
import java.beans.PropertyChangeEvent;
import javax.swing.JComponent;
import javax.swing.JEditorPane;
@@ -26,6 +27,7 @@ import javax.swing.plaf.ComponentUI;
import javax.swing.plaf.UIResource;
import javax.swing.plaf.basic.BasicTextPaneUI;
import javax.swing.text.JTextComponent;
+import com.formdev.flatlaf.util.HiDPIUtils;
/**
* Provides the Flat LaF UI delegate for {@link javax.swing.JTextPane}.
@@ -99,6 +101,11 @@ public class FlatTextPaneUI
return FlatEditorPaneUI.applyMinimumWidth( c, super.getMinimumSize( c ), minimumWidth );
}
+ @Override
+ protected void paintSafely( Graphics g ) {
+ super.paintSafely( HiDPIUtils.createGraphicsTextYCorrection( (Graphics2D) g ) );
+ }
+
@Override
protected void paintBackground( Graphics g ) {
JTextComponent c = getComponent();
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatToggleButtonUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatToggleButtonUI.java
index 2fb12278..6eda8cc0 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatToggleButtonUI.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatToggleButtonUI.java
@@ -50,6 +50,7 @@ import com.formdev.flatlaf.util.UIScale;
* @uiDefault ToggleButton.startBackground Color optional; if set, a gradient paint is used and ToggleButton.background is ignored
* @uiDefault ToggleButton.endBackground Color optional; if set, a gradient paint is used
* @uiDefault ToggleButton.pressedBackground Color
+ * @uiDefault ToggleButton.disabledBackground Color optional
* @uiDefault ToggleButton.disabledText Color
* @uiDefault ToggleButton.toolbar.hoverBackground Color
* @uiDefault ToggleButton.toolbar.pressedBackground Color
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatToolTipUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatToolTipUI.java
index 2b9c1b57..e6a24c35 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatToolTipUI.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatToolTipUI.java
@@ -29,6 +29,7 @@ import javax.swing.SwingUtilities;
import javax.swing.plaf.ComponentUI;
import javax.swing.plaf.basic.BasicHTML;
import javax.swing.plaf.basic.BasicToolTipUI;
+import com.formdev.flatlaf.util.HiDPIUtils;
import com.formdev.flatlaf.util.StringUtils;
/**
@@ -130,7 +131,7 @@ public class FlatToolTipUI
FlatUIUtils.drawString( c, g, line, leftToRight ? x : x2 - SwingUtilities.computeStringWidth( fm, line ), y );
}
} else
- super.paint( g, c );
+ super.paint( HiDPIUtils.createGraphicsTextYCorrection( (Graphics2D) g ), c );
}
private boolean isMultiLine( JComponent c ) {
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatUIUtils.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatUIUtils.java
index 492f6ba3..8e977fba 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatUIUtils.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatUIUtils.java
@@ -46,7 +46,6 @@ import com.formdev.flatlaf.FlatClientProperties;
import com.formdev.flatlaf.util.DerivedColor;
import com.formdev.flatlaf.util.Graphics2DProxy;
import com.formdev.flatlaf.util.HiDPIUtils;
-import com.formdev.flatlaf.util.JavaCompatibility;
import com.formdev.flatlaf.util.UIScale;
/**
@@ -449,23 +448,24 @@ public class FlatUIUtils
}
/**
- * Draws the given string at the specified location using text properties
- * and anti-aliasing hints from the provided component.
- *
- * Use this method instead of Graphics.drawString() for correct anti-aliasing.
- *
- * Replacement for SwingUtilities2.drawString()
+ * Draws the given string at the specified location.
+ * The provided component is used to query text properties and anti-aliasing hints.
+ *
+ * Use this method instead of {@link Graphics#drawString(String, int, int)} for correct anti-aliasing.
+ *
+ * Replacement for {@code SwingUtilities2.drawString()}.
+ * Uses {@link HiDPIUtils#drawStringWithYCorrection(JComponent, Graphics2D, String, int, int)}.
*/
public static void drawString( JComponent c, Graphics g, String text, int x, int y ) {
- JavaCompatibility.drawStringUnderlineCharAt( c, g, text, -1, x, y );
+ HiDPIUtils.drawStringWithYCorrection( c, (Graphics2D) g, text, x, y );
}
/**
- * Draws the given string at the specified location underlining the specified
- * character. The provided component is used to query text properties and
- * anti-aliasing hints.
- *
- * Replacement for SwingUtilities2.drawStringUnderlineCharAt()
+ * Draws the given string at the specified location underlining the specified character.
+ * The provided component is used to query text properties and anti-aliasing hints.
+ *
+ * Replacement for {@code SwingUtilities2.drawStringUnderlineCharAt()}.
+ * Uses {@link HiDPIUtils#drawStringUnderlineCharAtWithYCorrection(JComponent, Graphics2D, String, int, int, int)}.
*/
public static void drawStringUnderlineCharAt( JComponent c, Graphics g,
String text, int underlinedIndex, int x, int y )
@@ -487,7 +487,7 @@ public class FlatUIUtils
};
}
- JavaCompatibility.drawStringUnderlineCharAt( c, g, text, underlinedIndex, x, y );
+ HiDPIUtils.drawStringUnderlineCharAtWithYCorrection( c, (Graphics2D) g, text, underlinedIndex, x, y );
}
public static boolean hasOpaqueBeenExplicitlySet( JComponent c ) {
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/util/ColorFunctions.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/util/ColorFunctions.java
index 9f0592a7..471dd7c0 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/util/ColorFunctions.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/util/ColorFunctions.java
@@ -35,7 +35,7 @@ public class ColorFunctions
return HSLColor.toRGB( hsl, alpha );
}
- private static float clamp( float value ) {
+ public static float clamp( float value ) {
return (value < 0)
? 0
: ((value > 100)
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/util/HiDPIUtils.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/util/HiDPIUtils.java
index c49048b2..93b417a6 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/util/HiDPIUtils.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/util/HiDPIUtils.java
@@ -16,9 +16,12 @@
package com.formdev.flatlaf.util;
+import java.awt.Graphics;
import java.awt.Graphics2D;
+import java.awt.font.GlyphVector;
import java.awt.geom.AffineTransform;
import java.awt.geom.Rectangle2D;
+import java.text.AttributedCharacterIterator;
import javax.swing.JComponent;
/**
@@ -95,4 +98,134 @@ public class HiDPIUtils
private static double normalize( double value ) {
return Math.floor( value + 0.25 ) + 0.25;
}
+
+
+ private static Boolean useTextYCorrection;
+
+ private static boolean useTextYCorrection() {
+ if( useTextYCorrection == null )
+ useTextYCorrection = Boolean.valueOf( System.getProperty( "flatlaf.useTextYCorrection", "true" ) );
+ return useTextYCorrection;
+ }
+
+ /**
+ * When painting text on HiDPI screens and the JRE scales, then the text is
+ * painted too far down on some operating systems.
+ * The higher the system scale factor is, the more.
+ *
+ * This methods computes a correction value for the Y position.
+ */
+ public static float computeTextYCorrection( Graphics2D g ) {
+ if( !useTextYCorrection() || !SystemInfo.IS_WINDOWS )
+ return 0;
+
+ if( !SystemInfo.IS_JAVA_9_OR_LATER )
+ return UIScale.getUserScaleFactor() > 1 ? -UIScale.scale( 0.625f ) : 0;
+
+ AffineTransform t = g.getTransform();
+ double scaleY = t.getScaleY();
+ if( scaleY < 1.25 )
+ return 0;
+
+ // Text is painted at slightly different Y positions depending on scale factor
+ // and Y position of component.
+ // The exact reason is not yet known (to me), but there are several factors:
+ // - fractional scale factors result in fractional component Y device coordinates
+ // - fractional text Y device coordinates are rounded for horizontal lines of characters
+ // - maybe different rounding methods for drawing primitives (e.g. rectangle) and text
+ // - Java adds 0.5 to X/Y positions in before drawing string in BufferedTextPipe.enqueueGlyphList()
+
+ // this is not the optimal solution, but works very good in most cases
+ // (tested with class FlatPaintingStringTest on Windows 10 with font "Segoe UI")
+ if( scaleY <= 1.25 )
+ return -0.875f;
+ if( scaleY <= 1.5 )
+ return -0.625f;
+ if( scaleY <= 1.75 )
+ return -0.875f;
+ if( scaleY <= 2.0 )
+ return -0.75f;
+ if( scaleY <= 2.25 )
+ return -0.875f;
+ if( scaleY <= 3.5 )
+ return -0.75f;
+ return -0.875f;
+ }
+
+ /**
+ * Applies Y correction and draws the given string at the specified location.
+ * The provided component is used to query text properties and anti-aliasing hints.
+ *
+ * Use this method instead of {@link Graphics#drawString(String, int, int)} for correct anti-aliasing.
+ *
+ * Replacement for {@code SwingUtilities2.drawString()}.
+ */
+ public static void drawStringWithYCorrection( JComponent c, Graphics2D g, String text, int x, int y ) {
+ drawStringUnderlineCharAtWithYCorrection( c, g, text, -1, x, y );
+ }
+
+ /**
+ * Applies Y correction and draws the given string at the specified location underlining the specified character.
+ * The provided component is used to query text properties and anti-aliasing hints.
+ *
+ * Replacement for {@code SwingUtilities2.drawStringUnderlineCharAt()}.
+ */
+ public static void drawStringUnderlineCharAtWithYCorrection( JComponent c,
+ Graphics2D g, String text, int underlinedIndex, int x, int y )
+ {
+ float yCorrection = computeTextYCorrection( g );
+ if( yCorrection != 0 ) {
+ g.translate( 0, yCorrection );
+ JavaCompatibility.drawStringUnderlineCharAt( c, g, text, underlinedIndex, x, y );
+ g.translate( 0, -yCorrection );
+ } else
+ JavaCompatibility.drawStringUnderlineCharAt( c, g, text, underlinedIndex, x, y );
+ }
+
+ /**
+ * Creates a graphics object and applies Y correction to string drawing methods.
+ * If no Y correction is necessary, the passed in graphics object is returned.
+ */
+ public static Graphics2D createGraphicsTextYCorrection( Graphics2D g ) {
+ float yCorrection = computeTextYCorrection( g );
+ if( yCorrection == 0 )
+ return g;
+
+ return new Graphics2DProxy( g ) {
+ @Override
+ public void drawString( String str, int x, int y ) {
+ super.drawString( str, x, y + yCorrection );
+ }
+
+ @Override
+ public void drawString( String str, float x, float y ) {
+ super.drawString( str, x, y + yCorrection );
+ }
+
+ @Override
+ public void drawString( AttributedCharacterIterator iterator, int x, int y ) {
+ super.drawString( iterator, x, y + yCorrection );
+ }
+
+ @Override
+ public void drawString( AttributedCharacterIterator iterator, float x, float y ) {
+ super.drawString( iterator, x, y + yCorrection );
+ }
+
+ @Override
+ public void drawChars( char[] data, int offset, int length, int x, int y ) {
+ super.drawChars( data, offset, length, x, Math.round( y + yCorrection ) );
+ }
+
+ @Override
+ public void drawBytes( byte[] data, int offset, int length, int x, int y ) {
+ super.drawBytes( data, offset, length, x, Math.round( y + yCorrection ) );
+ }
+
+ @Override
+ public void drawGlyphVector( GlyphVector g, float x, float y ) {
+ super.drawGlyphVector( g, x, y + yCorrection );
+ }
+ };
+ }
}
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/util/SystemInfo.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/util/SystemInfo.java
index 0ae20747..19f50696 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/util/SystemInfo.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/util/SystemInfo.java
@@ -78,7 +78,7 @@ public class SystemInfo
IS_KDE = (IS_LINUX && System.getenv( "KDE_FULL_SESSION" ) != null);
}
- private static long scanVersion( String version ) {
+ public static long scanVersion( String version ) {
int major = 1;
int minor = 0;
int micro = 0;
@@ -96,7 +96,7 @@ public class SystemInfo
return toVersion( major, minor, micro, patch );
}
- private static long toVersion( int major, int minor, int micro, int patch ) {
+ public static long toVersion( int major, int minor, int micro, int patch ) {
return ((long) major << 48) + ((long) minor << 32) + ((long) micro << 16) + patch;
}
}
diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties
index 99d7e083..5f28753a 100644
--- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties
+++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatDarkLaf.properties
@@ -96,20 +96,39 @@ Button.toolbar.pressedBackground=lighten($Button.background,4%,derived)
#---- CheckBox ----
+# enabled
CheckBox.icon.borderColor=#6B6B6B
-CheckBox.icon.disabledBorderColor=#545556
-CheckBox.icon.selectedBorderColor=#6B6B6B
-CheckBox.icon.focusedBorderColor=#466D94
-CheckBox.icon.hoverBorderColor=$CheckBox.icon.focusedBorderColor
-CheckBox.icon.selectedFocusedBorderColor=#466D94
CheckBox.icon.background=#43494A
-CheckBox.icon.disabledBackground=@background
-CheckBox.icon.hoverBackground=lighten($CheckBox.icon.background,3%,derived)
-CheckBox.icon.pressedBackground=lighten($CheckBox.icon.background,6%,derived)
-CheckBox.icon.selectedBackground=#43494A
+CheckBox.icon.selectedBorderColor=$CheckBox.icon.borderColor
+CheckBox.icon.selectedBackground=$CheckBox.icon.background
CheckBox.icon.checkmarkColor=#A7A7A7
+
+# disabled
+CheckBox.icon.disabledBorderColor=#545556
+CheckBox.icon.disabledBackground=@background
CheckBox.icon.disabledCheckmarkColor=#606060
+# focused
+CheckBox.icon.focusedBorderColor=#466D94
+CheckBox.icon.selectedFocusedBorderColor=#466D94
+
+# hover
+CheckBox.icon.hoverBorderColor=$CheckBox.icon.focusedBorderColor
+CheckBox.icon.hoverBackground=lighten($CheckBox.icon.background,3%,derived)
+
+# pressed
+CheckBox.icon.pressedBackground=lighten($CheckBox.icon.background,6%,derived)
+
+# used if CheckBox.icon.style=filled
+# enabled
+CheckBox.icon[filled].selectedBorderColor=$CheckBox.icon.checkmarkColor
+CheckBox.icon[filled].selectedBackground=$CheckBox.icon.checkmarkColor
+CheckBox.icon[filled].checkmarkColor=$CheckBox.icon.background
+# hover
+CheckBox.icon[filled].selectedHoverBackground=darken($CheckBox.icon[filled].selectedBackground,3%)
+# pressed
+CheckBox.icon[filled].selectedPressedBackground=darken($CheckBox.icon[filled].selectedBackground,6%)
+
#---- ComboBox ----
@@ -215,12 +234,20 @@ ProgressBar.selectionForeground=@foreground
ProgressBar.selectionBackground=@foreground
+#---- RadioButton ----
+
+RadioButton.icon[filled].centerDiameter=5
+
+
#---- ScrollBar ----
ScrollBar.track=lighten(@background,1%,derived noAutoInverse)
ScrollBar.thumb=lighten($ScrollBar.track,10%,derived noAutoInverse)
ScrollBar.hoverTrackColor=lighten($ScrollBar.track,4%,derived noAutoInverse)
ScrollBar.hoverThumbColor=lighten($ScrollBar.thumb,10%,derived noAutoInverse)
+ScrollBar.pressedThumbColor=lighten($ScrollBar.thumb,15%,derived noAutoInverse)
+ScrollBar.hoverButtonBackground=lighten(@background,5%,derived noAutoInverse)
+ScrollBar.pressedButtonBackground=lighten(@background,10%,derived noAutoInverse)
#---- Separator ----
diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatIntelliJLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatIntelliJLaf.properties
index 77fe04ce..d8e48e2f 100644
--- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatIntelliJLaf.properties
+++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatIntelliJLaf.properties
@@ -35,13 +35,8 @@ Button.default.borderWidth=1
#---- CheckBox ----
-CheckBox.icon.selectedBorderColor=#4B97D9
-CheckBox.icon.selectedFocusedBorderColor=#ACCFF7
-CheckBox.icon.selectedBackground=#4F9EE3
-CheckBox.icon.checkmarkColor=#FFFFFF
-
-CheckBox.icon.selectedHoverBackground=#5E94CE
-CheckBox.icon.selectedPressedBackground=#72A1D4
+CheckBox.icon.style=filled
+CheckBox.icon[filled].focusWidth=2
#---- Component ----
@@ -50,8 +45,3 @@ Component.focusWidth=2
Component.innerFocusWidth=0
Component.innerOutlineWidth=0
Component.arrowType=triangle
-
-
-#---- RadioButton ----
-
-RadioButton.icon.centerDiameter=5
diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties
index 3c63f90d..0ac57fae 100644
--- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties
+++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties
@@ -181,6 +181,7 @@ ComboBox.padding=2,6,2,6
ComboBox.minimumWidth=72
ComboBox.editorColumns=0
[mac]ComboBox.showPopupOnNavigation=true
+ComboBox.buttonStyle=auto
#---- Component ----
@@ -439,6 +440,7 @@ ScrollBar.thumbInsets=0,0,0,0
ScrollBar.trackArc=0
ScrollBar.thumbArc=0
ScrollBar.hoverThumbWithTrack=false
+ScrollBar.pressedThumbWithTrack=false
ScrollBar.showButtons=false
ScrollBar.squareButtons=false
ScrollBar.buttonArrowColor=$ComboBox.buttonArrowColor
@@ -485,6 +487,7 @@ Spinner.buttonDisabledArrowColor=$ComboBox.buttonDisabledArrowColor
Spinner.buttonHoverArrowColor=$ComboBox.buttonHoverArrowColor
Spinner.padding=@textComponentMargin
Spinner.editorBorderPainted=false
+Spinner.buttonStyle=button
#---- SplitPane ----
diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLightLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLightLaf.properties
index 7f759756..512b4da8 100644
--- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLightLaf.properties
+++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLightLaf.properties
@@ -98,20 +98,44 @@ Button.toolbar.pressedBackground=darken($Button.background,15%,derived)
#---- CheckBox ----
+# enabled
CheckBox.icon.borderColor=#b0b0b0
-CheckBox.icon.disabledBorderColor=#BDBDBD
-CheckBox.icon.selectedBorderColor=$CheckBox.icon.borderColor
-CheckBox.icon.focusedBorderColor=#7B9FC7
-CheckBox.icon.hoverBorderColor=$CheckBox.icon.focusedBorderColor
CheckBox.icon.background=#FFFFFF
-CheckBox.icon.disabledBackground=@background
-CheckBox.icon.focusedBackground=$Button.focusedBackground
-CheckBox.icon.hoverBackground=$Button.hoverBackground
-CheckBox.icon.pressedBackground=$Button.pressedBackground
-CheckBox.icon.selectedBackground=#FFFFFF
+CheckBox.icon.selectedBorderColor=$CheckBox.icon.borderColor
+CheckBox.icon.selectedBackground=$CheckBox.icon.background
CheckBox.icon.checkmarkColor=#4F9EE3
+
+# disabled
+CheckBox.icon.disabledBorderColor=#BDBDBD
+CheckBox.icon.disabledBackground=@background
CheckBox.icon.disabledCheckmarkColor=#ABABAB
+# focused
+CheckBox.icon.focusedBorderColor=#7B9FC7
+CheckBox.icon.focusedBackground=$Button.focusedBackground
+
+# hover
+CheckBox.icon.hoverBorderColor=$CheckBox.icon.focusedBorderColor
+CheckBox.icon.hoverBackground=$Button.hoverBackground
+
+# pressed
+CheckBox.icon.pressedBackground=$Button.pressedBackground
+
+
+# used if CheckBox.icon.style=filled
+# enabled
+CheckBox.icon[filled].selectedBorderColor=#4B97D9
+CheckBox.icon[filled].selectedBackground=#4F9EE3
+CheckBox.icon[filled].checkmarkColor=#FFFFFF
+# focused
+CheckBox.icon[filled].selectedFocusedBorderColor=#ACCFF7
+CheckBox.icon[filled].selectedFocusedBackground=$CheckBox.icon[filled].selectedBackground
+CheckBox.icon[filled].selectedFocusedCheckmarkColor=$CheckBox.icon.focusedBackground
+# hover
+CheckBox.icon[filled].selectedHoverBackground=#5E94CE
+# pressed
+CheckBox.icon[filled].selectedPressedBackground=#72A1D4
+
#---- ComboBox ----
@@ -222,12 +246,20 @@ ProgressBar.selectionForeground=@textComponentBackground
ProgressBar.selectionBackground=@foreground
+#---- RadioButton ----
+
+RadioButton.icon[filled].centerDiameter=5
+
+
#---- ScrollBar ----
ScrollBar.track=lighten(@background,1%,derived noAutoInverse)
ScrollBar.thumb=darken($ScrollBar.track,10%,derived noAutoInverse)
ScrollBar.hoverTrackColor=darken($ScrollBar.track,3%,derived noAutoInverse)
ScrollBar.hoverThumbColor=darken($ScrollBar.thumb,10%,derived noAutoInverse)
+ScrollBar.pressedThumbColor=darken($ScrollBar.thumb,20%,derived noAutoInverse)
+ScrollBar.hoverButtonBackground=darken(@background,5%,derived noAutoInverse)
+ScrollBar.pressedButtonBackground=darken(@background,10%,derived noAutoInverse)
#---- Separator ----
diff --git a/flatlaf-demo/.settings/org.eclipse.jdt.core.prefs b/flatlaf-demo/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000..4a19f363
--- /dev/null
+++ b/flatlaf-demo/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,377 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=48
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression_chain=0
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_record_components=16
+org.eclipse.jdt.core.formatter.alignment_for_relational_operator=0
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_shift_operator=0
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=33
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=33
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_record_declaration=33
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=33
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=32
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=32
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_last_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_abstract_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=0
+org.eclipse.jdt.core.formatter.blank_lines_between_statement_group_in_switch=0
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=next_line_on_wrap
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=next_line_on_wrap
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=next_line_on_wrap
+org.eclipse.jdt.core.formatter.brace_position_for_record_constructor=next_line_on_wrap
+org.eclipse.jdt.core.formatter.brace_position_for_record_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=next_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.indent_tag_description=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_between_different_tags=do not insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=1
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=1
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_record_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_record_components=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_switch_case_expressions=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_not_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_record_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
+org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_record_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_record_components=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_switch_case_expressions=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_constructor=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_record_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_code_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_method_body_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_record_constructor_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_record_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_after_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_before_code_block=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_record_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.text_block_indentation=0
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_relational_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_shift_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/flatlaf-demo/.settings/org.eclipse.jdt.ui.prefs b/flatlaf-demo/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000..ef990006
--- /dev/null
+++ b/flatlaf-demo/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+formatter_profile=_FlatLaf
+formatter_settings_version=19
diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/BasicComponentsPanel.java b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/BasicComponentsPanel.java
index 5f837ee2..6b22fe78 100644
--- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/BasicComponentsPanel.java
+++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/BasicComponentsPanel.java
@@ -158,12 +158,12 @@ class BasicComponentsPanel
add(labelLabel, "cell 0 0");
//---- label1 ----
- label1.setText("enabled");
+ label1.setText("Enabled");
label1.setDisplayedMnemonic('E');
add(label1, "cell 1 0");
//---- label2 ----
- label2.setText("disabled");
+ label2.setText("Disabled");
label2.setDisplayedMnemonic('D');
label2.setEnabled(false);
add(label2, "cell 2 0");
@@ -173,23 +173,23 @@ class BasicComponentsPanel
add(buttonLabel, "cell 0 1");
//---- button1 ----
- button1.setText("enabled");
+ button1.setText("Enabled");
button1.setDisplayedMnemonicIndex(0);
add(button1, "cell 1 1");
//---- button2 ----
- button2.setText("disabled");
+ button2.setText("Disabled");
button2.setDisplayedMnemonicIndex(0);
button2.setEnabled(false);
add(button2, "cell 2 1");
//---- button5 ----
- button5.setText("square");
+ button5.setText("Square");
button5.putClientProperty("JButton.buttonType", "square");
add(button5, "cell 3 1");
//---- button6 ----
- button6.setText("round");
+ button6.setText("Round");
button6.putClientProperty("JButton.buttonType", "roundRect");
add(button6, "cell 4 1");
@@ -225,23 +225,23 @@ class BasicComponentsPanel
add(checkBoxLabel, "cell 0 2");
//---- checkBox1 ----
- checkBox1.setText("enabled");
+ checkBox1.setText("Enabled");
checkBox1.setMnemonic('A');
add(checkBox1, "cell 1 2");
//---- checkBox2 ----
- checkBox2.setText("disabled");
+ checkBox2.setText("Disabled");
checkBox2.setEnabled(false);
checkBox2.setMnemonic('D');
add(checkBox2, "cell 2 2");
//---- checkBox3 ----
- checkBox3.setText("selected");
+ checkBox3.setText("Selected");
checkBox3.setSelected(true);
add(checkBox3, "cell 3 2");
//---- checkBox4 ----
- checkBox4.setText("selected disabled");
+ checkBox4.setText("Selected disabled");
checkBox4.setSelected(true);
checkBox4.setEnabled(false);
add(checkBox4, "cell 4 2");
@@ -251,23 +251,23 @@ class BasicComponentsPanel
add(radioButtonLabel, "cell 0 3");
//---- radioButton1 ----
- radioButton1.setText("enabled");
+ radioButton1.setText("Enabled");
radioButton1.setMnemonic('N');
add(radioButton1, "cell 1 3");
//---- radioButton2 ----
- radioButton2.setText("disabled");
+ radioButton2.setText("Disabled");
radioButton2.setEnabled(false);
radioButton2.setMnemonic('S');
add(radioButton2, "cell 2 3");
//---- radioButton3 ----
- radioButton3.setText("selected");
+ radioButton3.setText("Selected");
radioButton3.setSelected(true);
add(radioButton3, "cell 3 3");
//---- radioButton4 ----
- radioButton4.setText("selected disabled");
+ radioButton4.setText("Selected disabled");
radioButton4.setSelected(true);
radioButton4.setEnabled(false);
add(radioButton4, "cell 4 3");
@@ -281,7 +281,7 @@ class BasicComponentsPanel
//---- comboBox1 ----
comboBox1.setEditable(true);
comboBox1.setModel(new DefaultComboBoxModel<>(new String[] {
- "editable",
+ "Editable",
"a",
"bb",
"ccc"
@@ -292,7 +292,7 @@ class BasicComponentsPanel
comboBox2.setEditable(true);
comboBox2.setEnabled(false);
comboBox2.setModel(new DefaultComboBoxModel<>(new String[] {
- "disabled",
+ "Disabled",
"a",
"bb",
"ccc"
@@ -301,7 +301,7 @@ class BasicComponentsPanel
//---- comboBox3 ----
comboBox3.setModel(new DefaultComboBoxModel<>(new String[] {
- "not editable",
+ "Not editable",
"a",
"bb",
"ccc"
@@ -310,7 +310,7 @@ class BasicComponentsPanel
//---- comboBox4 ----
comboBox4.setModel(new DefaultComboBoxModel<>(new String[] {
- "not editable disabled",
+ "Not editable disabled",
"a",
"bb",
"ccc"
@@ -320,7 +320,7 @@ class BasicComponentsPanel
//---- comboBox5 ----
comboBox5.setModel(new DefaultComboBoxModel<>(new String[] {
- "wide popup if text is longer",
+ "Wide popup if text is longer",
"aa",
"bbb",
"cccc"
@@ -340,7 +340,7 @@ class BasicComponentsPanel
//---- comboBox6 ----
comboBox6.setEditable(true);
- comboBox6.putClientProperty("JTextField.placeholderText", "placeholder");
+ comboBox6.putClientProperty("JTextField.placeholderText", "Placeholder");
add(comboBox6, "cell 5 5,growx");
//---- textFieldLabel ----
@@ -350,28 +350,28 @@ class BasicComponentsPanel
add(textFieldLabel, "cell 0 6");
//---- textField1 ----
- textField1.setText("editable");
+ textField1.setText("Editable");
textField1.setComponentPopupMenu(popupMenu1);
add(textField1, "cell 1 6,growx");
//---- textField2 ----
- textField2.setText("disabled");
+ textField2.setText("Disabled");
textField2.setEnabled(false);
add(textField2, "cell 2 6,growx");
//---- textField3 ----
- textField3.setText("not editable");
+ textField3.setText("Not editable");
textField3.setEditable(false);
add(textField3, "cell 3 6,growx");
//---- textField4 ----
- textField4.setText("not editable disabled");
+ textField4.setText("Not editable disabled");
textField4.setEnabled(false);
textField4.setEditable(false);
add(textField4, "cell 4 6,growx");
//---- textField6 ----
- textField6.putClientProperty("JTextField.placeholderText", "placeholder");
+ textField6.putClientProperty("JTextField.placeholderText", "Placeholder");
add(textField6, "cell 5 6,growx");
//---- formattedTextFieldLabel ----
@@ -381,28 +381,28 @@ class BasicComponentsPanel
add(formattedTextFieldLabel, "cell 0 7");
//---- formattedTextField1 ----
- formattedTextField1.setText("editable");
+ formattedTextField1.setText("Editable");
formattedTextField1.setComponentPopupMenu(popupMenu1);
add(formattedTextField1, "cell 1 7,growx");
//---- formattedTextField2 ----
- formattedTextField2.setText("disabled");
+ formattedTextField2.setText("Disabled");
formattedTextField2.setEnabled(false);
add(formattedTextField2, "cell 2 7,growx");
//---- formattedTextField3 ----
- formattedTextField3.setText("not editable");
+ formattedTextField3.setText("Not editable");
formattedTextField3.setEditable(false);
add(formattedTextField3, "cell 3 7,growx");
//---- formattedTextField4 ----
- formattedTextField4.setText("not editable disabled");
+ formattedTextField4.setText("Not editable disabled");
formattedTextField4.setEnabled(false);
formattedTextField4.setEditable(false);
add(formattedTextField4, "cell 4 7,growx");
//---- formattedTextField5 ----
- formattedTextField5.putClientProperty("JTextField.placeholderText", "placeholder");
+ formattedTextField5.putClientProperty("JTextField.placeholderText", "Placeholder");
add(formattedTextField5, "cell 5 7,growx");
//---- passwordFieldLabel ----
@@ -410,27 +410,27 @@ class BasicComponentsPanel
add(passwordFieldLabel, "cell 0 8");
//---- passwordField1 ----
- passwordField1.setText("editable");
+ passwordField1.setText("Editable");
add(passwordField1, "cell 1 8,growx");
//---- passwordField2 ----
- passwordField2.setText("disabled");
+ passwordField2.setText("Disabled");
passwordField2.setEnabled(false);
add(passwordField2, "cell 2 8,growx");
//---- passwordField3 ----
- passwordField3.setText("not editable");
+ passwordField3.setText("Not editable");
passwordField3.setEditable(false);
add(passwordField3, "cell 3 8,growx");
//---- passwordField4 ----
- passwordField4.setText("not editable disabled");
+ passwordField4.setText("Not editable disabled");
passwordField4.setEnabled(false);
passwordField4.setEditable(false);
add(passwordField4, "cell 4 8,growx");
//---- passwordField5 ----
- passwordField5.putClientProperty("JTextField.placeholderText", "placeholder");
+ passwordField5.putClientProperty("JTextField.placeholderText", "Placeholder");
add(passwordField5, "cell 5 8,growx");
//---- textAreaLabel ----
@@ -443,7 +443,7 @@ class BasicComponentsPanel
scrollPane1.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
//---- textArea1 ----
- textArea1.setText("editable");
+ textArea1.setText("Editable");
textArea1.setRows(2);
scrollPane1.setViewportView(textArea1);
}
@@ -455,7 +455,7 @@ class BasicComponentsPanel
scrollPane2.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
//---- textArea2 ----
- textArea2.setText("disabled");
+ textArea2.setText("Disabled");
textArea2.setRows(2);
textArea2.setEnabled(false);
scrollPane2.setViewportView(textArea2);
@@ -468,7 +468,7 @@ class BasicComponentsPanel
scrollPane3.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
//---- textArea3 ----
- textArea3.setText("not editable");
+ textArea3.setText("Not editable");
textArea3.setRows(2);
textArea3.setEditable(false);
scrollPane3.setViewportView(textArea3);
@@ -481,7 +481,7 @@ class BasicComponentsPanel
scrollPane4.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
//---- textArea4 ----
- textArea4.setText("not editable disabled");
+ textArea4.setText("Not editable disabled");
textArea4.setRows(2);
textArea4.setEditable(false);
textArea4.setEnabled(false);
@@ -491,7 +491,7 @@ class BasicComponentsPanel
//---- textArea5 ----
textArea5.setRows(2);
- textArea5.setText("no scroll pane");
+ textArea5.setText("No scroll pane");
add(textArea5, "cell 5 9,growx");
//---- editorPaneLabel ----
@@ -504,7 +504,7 @@ class BasicComponentsPanel
scrollPane5.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
//---- editorPane1 ----
- editorPane1.setText("editable");
+ editorPane1.setText("Editable");
scrollPane5.setViewportView(editorPane1);
}
add(scrollPane5, "cell 1 10,growx");
@@ -515,7 +515,7 @@ class BasicComponentsPanel
scrollPane6.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
//---- editorPane2 ----
- editorPane2.setText("disabled");
+ editorPane2.setText("Disabled");
editorPane2.setEnabled(false);
scrollPane6.setViewportView(editorPane2);
}
@@ -527,7 +527,7 @@ class BasicComponentsPanel
scrollPane7.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
//---- editorPane3 ----
- editorPane3.setText("not editable");
+ editorPane3.setText("Not editable");
editorPane3.setEditable(false);
scrollPane7.setViewportView(editorPane3);
}
@@ -539,7 +539,7 @@ class BasicComponentsPanel
scrollPane8.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
//---- editorPane4 ----
- editorPane4.setText("not editable disabled");
+ editorPane4.setText("Not editable disabled");
editorPane4.setEditable(false);
editorPane4.setEnabled(false);
scrollPane8.setViewportView(editorPane4);
@@ -547,7 +547,7 @@ class BasicComponentsPanel
add(scrollPane8, "cell 4 10,growx");
//---- editorPane5 ----
- editorPane5.setText("no scroll pane");
+ editorPane5.setText("No scroll pane");
add(editorPane5, "cell 5 10,growx");
//---- textPaneLabel ----
@@ -560,7 +560,7 @@ class BasicComponentsPanel
scrollPane9.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
//---- textPane1 ----
- textPane1.setText("editable");
+ textPane1.setText("Editable");
scrollPane9.setViewportView(textPane1);
}
add(scrollPane9, "cell 1 11,growx");
@@ -571,7 +571,7 @@ class BasicComponentsPanel
scrollPane10.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
//---- textPane2 ----
- textPane2.setText("disabled");
+ textPane2.setText("Disabled");
textPane2.setEnabled(false);
scrollPane10.setViewportView(textPane2);
}
@@ -583,7 +583,7 @@ class BasicComponentsPanel
scrollPane11.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
//---- textPane3 ----
- textPane3.setText("not editable");
+ textPane3.setText("Not editable");
textPane3.setEditable(false);
scrollPane11.setViewportView(textPane3);
}
@@ -595,7 +595,7 @@ class BasicComponentsPanel
scrollPane12.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
//---- textPane4 ----
- textPane4.setText("not editable disabled");
+ textPane4.setText("Not editable disabled");
textPane4.setEditable(false);
textPane4.setEnabled(false);
scrollPane12.setViewportView(textPane4);
@@ -603,7 +603,7 @@ class BasicComponentsPanel
add(scrollPane12, "cell 4 11,growx");
//---- textPane5 ----
- textPane5.setText("no scroll pane");
+ textPane5.setText("No scroll pane");
add(textPane5, "cell 5 11,growx");
//---- label3 ----
@@ -617,7 +617,7 @@ class BasicComponentsPanel
//---- comboBox7 ----
comboBox7.putClientProperty("JComponent.outline", "error");
comboBox7.setModel(new DefaultComboBoxModel<>(new String[] {
- "editable"
+ "Editable"
}));
comboBox7.setEditable(true);
add(comboBox7, "cell 2 12,growx");
@@ -637,7 +637,7 @@ class BasicComponentsPanel
//---- comboBox8 ----
comboBox8.putClientProperty("JComponent.outline", "warning");
comboBox8.setModel(new DefaultComboBoxModel<>(new String[] {
- "not editable"
+ "Not editable"
}));
add(comboBox8, "cell 2 13,growx");
diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/BasicComponentsPanel.jfd b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/BasicComponentsPanel.jfd
index 00239b64..69f10cf8 100644
--- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/BasicComponentsPanel.jfd
+++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/BasicComponentsPanel.jfd
@@ -1,4 +1,4 @@
-JFDML JFormDesigner: "7.0.1.0.272" Java: "13.0.2" encoding: "UTF-8"
+JFDML JFormDesigner: "7.0.2.0.298" Java: "14" encoding: "UTF-8"
new FormModel {
contentType: "form/swing"
@@ -20,14 +20,14 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label1"
- "text": "enabled"
+ "text": "Enabled"
"displayedMnemonic": 69
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 0"
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label2"
- "text": "disabled"
+ "text": "Disabled"
"displayedMnemonic": 68
"enabled": false
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -41,14 +41,14 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JButton" ) {
name: "button1"
- "text": "enabled"
+ "text": "Enabled"
"displayedMnemonicIndex": 0
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 1"
} )
add( new FormComponent( "javax.swing.JButton" ) {
name: "button2"
- "text": "disabled"
+ "text": "Disabled"
"displayedMnemonicIndex": 0
"enabled": false
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -56,14 +56,14 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JButton" ) {
name: "button5"
- "text": "square"
+ "text": "Square"
"$client.JButton.buttonType": "square"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 3 1"
} )
add( new FormComponent( "javax.swing.JButton" ) {
name: "button6"
- "text": "round"
+ "text": "Round"
"$client.JButton.buttonType": "roundRect"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 4 1"
@@ -115,14 +115,14 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JCheckBox" ) {
name: "checkBox1"
- "text": "enabled"
+ "text": "Enabled"
"mnemonic": 65
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 2"
} )
add( new FormComponent( "javax.swing.JCheckBox" ) {
name: "checkBox2"
- "text": "disabled"
+ "text": "Disabled"
"enabled": false
"mnemonic": 68
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -130,14 +130,14 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JCheckBox" ) {
name: "checkBox3"
- "text": "selected"
+ "text": "Selected"
"selected": true
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 3 2"
} )
add( new FormComponent( "javax.swing.JCheckBox" ) {
name: "checkBox4"
- "text": "selected disabled"
+ "text": "Selected disabled"
"selected": true
"enabled": false
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -151,14 +151,14 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JRadioButton" ) {
name: "radioButton1"
- "text": "enabled"
+ "text": "Enabled"
"mnemonic": 78
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 3"
} )
add( new FormComponent( "javax.swing.JRadioButton" ) {
name: "radioButton2"
- "text": "disabled"
+ "text": "Disabled"
"enabled": false
"mnemonic": 83
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -166,14 +166,14 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JRadioButton" ) {
name: "radioButton3"
- "text": "selected"
+ "text": "Selected"
"selected": true
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 3 3"
} )
add( new FormComponent( "javax.swing.JRadioButton" ) {
name: "radioButton4"
- "text": "selected disabled"
+ "text": "Selected disabled"
"selected": true
"enabled": false
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -191,8 +191,8 @@ new FormModel {
name: "comboBox1"
"editable": true
"model": new javax.swing.DefaultComboBoxModel {
- selectedItem: "editable"
- addElement( "editable" )
+ selectedItem: "Editable"
+ addElement( "Editable" )
addElement( "a" )
addElement( "bb" )
addElement( "ccc" )
@@ -205,8 +205,8 @@ new FormModel {
"editable": true
"enabled": false
"model": new javax.swing.DefaultComboBoxModel {
- selectedItem: "disabled"
- addElement( "disabled" )
+ selectedItem: "Disabled"
+ addElement( "Disabled" )
addElement( "a" )
addElement( "bb" )
addElement( "ccc" )
@@ -217,8 +217,8 @@ new FormModel {
add( new FormComponent( "javax.swing.JComboBox" ) {
name: "comboBox3"
"model": new javax.swing.DefaultComboBoxModel {
- selectedItem: "not editable"
- addElement( "not editable" )
+ selectedItem: "Not editable"
+ addElement( "Not editable" )
addElement( "a" )
addElement( "bb" )
addElement( "ccc" )
@@ -229,8 +229,8 @@ new FormModel {
add( new FormComponent( "javax.swing.JComboBox" ) {
name: "comboBox4"
"model": new javax.swing.DefaultComboBoxModel {
- selectedItem: "not editable disabled"
- addElement( "not editable disabled" )
+ selectedItem: "Not editable disabled"
+ addElement( "Not editable disabled" )
addElement( "a" )
addElement( "bb" )
addElement( "ccc" )
@@ -242,8 +242,8 @@ new FormModel {
add( new FormComponent( "javax.swing.JComboBox" ) {
name: "comboBox5"
"model": new javax.swing.DefaultComboBoxModel {
- selectedItem: "wide popup if text is longer"
- addElement( "wide popup if text is longer" )
+ selectedItem: "Wide popup if text is longer"
+ addElement( "Wide popup if text is longer" )
addElement( "aa" )
addElement( "bbb" )
addElement( "cccc" )
@@ -273,7 +273,7 @@ new FormModel {
add( new FormComponent( "javax.swing.JComboBox" ) {
name: "comboBox6"
"editable": true
- "$client.JTextField.placeholderText": "placeholder"
+ "$client.JTextField.placeholderText": "Placeholder"
auxiliary() {
"JavaCodeGenerator.typeParameters": "String"
}
@@ -290,28 +290,28 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JTextField" ) {
name: "textField1"
- "text": "editable"
+ "text": "Editable"
"componentPopupMenu": &FormReference0 new FormReference( "popupMenu1" )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 6,growx"
} )
add( new FormComponent( "javax.swing.JTextField" ) {
name: "textField2"
- "text": "disabled"
+ "text": "Disabled"
"enabled": false
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 2 6,growx"
} )
add( new FormComponent( "javax.swing.JTextField" ) {
name: "textField3"
- "text": "not editable"
+ "text": "Not editable"
"editable": false
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 3 6,growx"
} )
add( new FormComponent( "javax.swing.JTextField" ) {
name: "textField4"
- "text": "not editable disabled"
+ "text": "Not editable disabled"
"enabled": false
"editable": false
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -319,7 +319,7 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JTextField" ) {
name: "textField6"
- "$client.JTextField.placeholderText": "placeholder"
+ "$client.JTextField.placeholderText": "Placeholder"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 5 6,growx"
} )
@@ -333,28 +333,28 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JFormattedTextField" ) {
name: "formattedTextField1"
- "text": "editable"
+ "text": "Editable"
"componentPopupMenu": #FormReference0
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 7,growx"
} )
add( new FormComponent( "javax.swing.JFormattedTextField" ) {
name: "formattedTextField2"
- "text": "disabled"
+ "text": "Disabled"
"enabled": false
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 2 7,growx"
} )
add( new FormComponent( "javax.swing.JFormattedTextField" ) {
name: "formattedTextField3"
- "text": "not editable"
+ "text": "Not editable"
"editable": false
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 3 7,growx"
} )
add( new FormComponent( "javax.swing.JFormattedTextField" ) {
name: "formattedTextField4"
- "text": "not editable disabled"
+ "text": "Not editable disabled"
"enabled": false
"editable": false
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -362,7 +362,7 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JFormattedTextField" ) {
name: "formattedTextField5"
- "$client.JTextField.placeholderText": "placeholder"
+ "$client.JTextField.placeholderText": "Placeholder"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 5 7,growx"
} )
@@ -374,27 +374,27 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JPasswordField" ) {
name: "passwordField1"
- "text": "editable"
+ "text": "Editable"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 8,growx"
} )
add( new FormComponent( "javax.swing.JPasswordField" ) {
name: "passwordField2"
- "text": "disabled"
+ "text": "Disabled"
"enabled": false
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 2 8,growx"
} )
add( new FormComponent( "javax.swing.JPasswordField" ) {
name: "passwordField3"
- "text": "not editable"
+ "text": "Not editable"
"editable": false
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 3 8,growx"
} )
add( new FormComponent( "javax.swing.JPasswordField" ) {
name: "passwordField4"
- "text": "not editable disabled"
+ "text": "Not editable disabled"
"enabled": false
"editable": false
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -402,7 +402,7 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JPasswordField" ) {
name: "passwordField5"
- "$client.JTextField.placeholderText": "placeholder"
+ "$client.JTextField.placeholderText": "Placeholder"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 5 8,growx"
} )
@@ -418,7 +418,7 @@ new FormModel {
"horizontalScrollBarPolicy": 31
add( new FormComponent( "javax.swing.JTextArea" ) {
name: "textArea1"
- "text": "editable"
+ "text": "Editable"
"rows": 2
} )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -430,7 +430,7 @@ new FormModel {
"horizontalScrollBarPolicy": 31
add( new FormComponent( "javax.swing.JTextArea" ) {
name: "textArea2"
- "text": "disabled"
+ "text": "Disabled"
"rows": 2
"enabled": false
} )
@@ -443,7 +443,7 @@ new FormModel {
"horizontalScrollBarPolicy": 31
add( new FormComponent( "javax.swing.JTextArea" ) {
name: "textArea3"
- "text": "not editable"
+ "text": "Not editable"
"rows": 2
"editable": false
} )
@@ -456,7 +456,7 @@ new FormModel {
"horizontalScrollBarPolicy": 31
add( new FormComponent( "javax.swing.JTextArea" ) {
name: "textArea4"
- "text": "not editable disabled"
+ "text": "Not editable disabled"
"rows": 2
"editable": false
"enabled": false
@@ -467,7 +467,7 @@ new FormModel {
add( new FormComponent( "javax.swing.JTextArea" ) {
name: "textArea5"
"rows": 2
- "text": "no scroll pane"
+ "text": "No scroll pane"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 5 9,growx"
} )
@@ -483,7 +483,7 @@ new FormModel {
"horizontalScrollBarPolicy": 31
add( new FormComponent( "javax.swing.JEditorPane" ) {
name: "editorPane1"
- "text": "editable"
+ "text": "Editable"
} )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 10,growx"
@@ -494,7 +494,7 @@ new FormModel {
"horizontalScrollBarPolicy": 31
add( new FormComponent( "javax.swing.JEditorPane" ) {
name: "editorPane2"
- "text": "disabled"
+ "text": "Disabled"
"enabled": false
} )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -506,7 +506,7 @@ new FormModel {
"horizontalScrollBarPolicy": 31
add( new FormComponent( "javax.swing.JEditorPane" ) {
name: "editorPane3"
- "text": "not editable"
+ "text": "Not editable"
"editable": false
} )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -518,7 +518,7 @@ new FormModel {
"horizontalScrollBarPolicy": 31
add( new FormComponent( "javax.swing.JEditorPane" ) {
name: "editorPane4"
- "text": "not editable disabled"
+ "text": "Not editable disabled"
"editable": false
"enabled": false
} )
@@ -527,7 +527,7 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JEditorPane" ) {
name: "editorPane5"
- "text": "no scroll pane"
+ "text": "No scroll pane"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 5 10,growx"
} )
@@ -543,7 +543,7 @@ new FormModel {
"horizontalScrollBarPolicy": 31
add( new FormComponent( "javax.swing.JTextPane" ) {
name: "textPane1"
- "text": "editable"
+ "text": "Editable"
} )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 11,growx"
@@ -554,7 +554,7 @@ new FormModel {
"horizontalScrollBarPolicy": 31
add( new FormComponent( "javax.swing.JTextPane" ) {
name: "textPane2"
- "text": "disabled"
+ "text": "Disabled"
"enabled": false
} )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -566,7 +566,7 @@ new FormModel {
"horizontalScrollBarPolicy": 31
add( new FormComponent( "javax.swing.JTextPane" ) {
name: "textPane3"
- "text": "not editable"
+ "text": "Not editable"
"editable": false
} )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -578,7 +578,7 @@ new FormModel {
"horizontalScrollBarPolicy": 31
add( new FormComponent( "javax.swing.JTextPane" ) {
name: "textPane4"
- "text": "not editable disabled"
+ "text": "Not editable disabled"
"editable": false
"enabled": false
} )
@@ -587,7 +587,7 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JTextPane" ) {
name: "textPane5"
- "text": "no scroll pane"
+ "text": "No scroll pane"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 5 11,growx"
} )
@@ -607,8 +607,8 @@ new FormModel {
name: "comboBox7"
"$client.JComponent.outline": "error"
"model": new javax.swing.DefaultComboBoxModel {
- selectedItem: "editable"
- addElement( "editable" )
+ selectedItem: "Editable"
+ addElement( "Editable" )
}
"editable": true
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -636,8 +636,8 @@ new FormModel {
name: "comboBox8"
"$client.JComponent.outline": "warning"
"model": new javax.swing.DefaultComboBoxModel {
- selectedItem: "not editable"
- addElement( "not editable" )
+ selectedItem: "Not editable"
+ addElement( "Not editable" )
}
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 2 13,growx"
diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/ControlBar.java b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/ControlBar.java
index ddc1dad8..cd6c07c1 100644
--- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/ControlBar.java
+++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/ControlBar.java
@@ -231,6 +231,9 @@ class ControlBar
private void enabledChanged() {
enabledDisable( tabbedPane, enabledCheckBox.isSelected() );
+
+ // repainting whole tabbed pane is faster than repainting many individual components
+ tabbedPane.repaint();
}
private void enabledDisable( Container container, boolean enabled ) {
diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/FlatLafDemo.java b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/FlatLafDemo.java
index 5a9b197c..5e5bb17e 100644
--- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/FlatLafDemo.java
+++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/FlatLafDemo.java
@@ -17,6 +17,7 @@
package com.formdev.flatlaf.demo;
import javax.swing.SwingUtilities;
+import com.formdev.flatlaf.extras.FlatInspector;
import com.formdev.flatlaf.util.SystemInfo;
/**
@@ -28,7 +29,8 @@ public class FlatLafDemo
static final String KEY_TAB = "tab";
public static void main( String[] args ) {
- if( SystemInfo.IS_MAC )
+ // on macOS enable screen menu bar
+ if( SystemInfo.IS_MAC && System.getProperty( "apple.laf.useScreenMenuBar" ) == null )
System.setProperty( "apple.laf.useScreenMenuBar", "true" );
SwingUtilities.invokeLater( () -> {
@@ -37,6 +39,9 @@ public class FlatLafDemo
// set look and feel
DemoPrefs.initLaf( args );
+ // install inspector
+ FlatInspector.install( "ctrl shift alt X" );
+
// create frame
DemoFrame frame = new DemoFrame();
diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/extras/ExtrasPanel.java b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/extras/ExtrasPanel.java
index b7f7426b..f8281660 100644
--- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/extras/ExtrasPanel.java
+++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/extras/ExtrasPanel.java
@@ -91,12 +91,13 @@ public class ExtrasPanel
add(label1, "cell 0 1");
//---- triStateCheckBox1 ----
- triStateCheckBox1.setText("three states");
+ triStateCheckBox1.setText("Three States");
triStateCheckBox1.addActionListener(e -> triStateCheckBox1Changed());
add(triStateCheckBox1, "cell 1 1");
//---- triStateLabel1 ----
triStateLabel1.setText("text");
+ triStateLabel1.setEnabled(false);
add(triStateLabel1, "cell 2 1");
//---- label2 ----
diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/extras/ExtrasPanel.jfd b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/extras/ExtrasPanel.jfd
index 2f8faff7..1a649f89 100644
--- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/extras/ExtrasPanel.jfd
+++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/extras/ExtrasPanel.jfd
@@ -1,4 +1,4 @@
-JFDML JFormDesigner: "7.0.1.0.272" Java: "13.0.2" encoding: "UTF-8"
+JFDML JFormDesigner: "7.0.2.0.298" Java: "14" encoding: "UTF-8"
new FormModel {
contentType: "form/swing"
@@ -23,7 +23,7 @@ new FormModel {
} )
add( new FormComponent( "com.formdev.flatlaf.extras.TriStateCheckBox" ) {
name: "triStateCheckBox1"
- "text": "three states"
+ "text": "Three States"
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "triStateCheckBox1Changed", false ) )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 1"
@@ -31,6 +31,7 @@ new FormModel {
add( new FormComponent( "javax.swing.JLabel" ) {
name: "triStateLabel1"
"text": "text"
+ "enabled": false
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 2 1"
} )
diff --git a/flatlaf-extras/.settings/org.eclipse.jdt.core.prefs b/flatlaf-extras/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000..4a19f363
--- /dev/null
+++ b/flatlaf-extras/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,377 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=48
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression_chain=0
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_record_components=16
+org.eclipse.jdt.core.formatter.alignment_for_relational_operator=0
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_shift_operator=0
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=33
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=33
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_record_declaration=33
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=33
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=32
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=32
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_last_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_abstract_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=0
+org.eclipse.jdt.core.formatter.blank_lines_between_statement_group_in_switch=0
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=next_line_on_wrap
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=next_line_on_wrap
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=next_line_on_wrap
+org.eclipse.jdt.core.formatter.brace_position_for_record_constructor=next_line_on_wrap
+org.eclipse.jdt.core.formatter.brace_position_for_record_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=next_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.indent_tag_description=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_between_different_tags=do not insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=1
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=1
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_record_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_record_components=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_switch_case_expressions=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_not_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_record_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
+org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_record_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_record_components=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_switch_case_expressions=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_constructor=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_record_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_code_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_method_body_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_record_constructor_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_record_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_after_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_before_code_block=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_record_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.text_block_indentation=0
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_relational_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_shift_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/flatlaf-extras/.settings/org.eclipse.jdt.ui.prefs b/flatlaf-extras/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000..ef990006
--- /dev/null
+++ b/flatlaf-extras/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+formatter_profile=_FlatLaf
+formatter_settings_version=19
diff --git a/flatlaf-extras/README.md b/flatlaf-extras/README.md
index 8d8d6988..6e6e5bcd 100644
--- a/flatlaf-extras/README.md
+++ b/flatlaf-extras/README.md
@@ -3,6 +3,9 @@ FlatLaf Extras
This sub-project provides some additional components and classes:
+- [FlatInspector](src/main/java/com/formdev/flatlaf/extras/FlatInspector.java):
+ A simple UI inspector that shows information about UI component at mouse
+ location in a tooltip.
- [FlatSVGIcon](src/main/java/com/formdev/flatlaf/extras/FlatSVGIcon.java): An
icon that displays SVG using
[svgSalamander](https://github.com/JFormDesigner/svgSalamander).
diff --git a/flatlaf-extras/build.gradle.kts b/flatlaf-extras/build.gradle.kts
index 6b7f89be..3812786a 100644
--- a/flatlaf-extras/build.gradle.kts
+++ b/flatlaf-extras/build.gradle.kts
@@ -38,6 +38,7 @@ tasks {
javadoc {
options {
this as StandardJavadocDocletOptions
+ use( true )
tags = listOf( "uiDefault", "clientProperty" )
}
isFailOnError = false
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatInspector.java b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/FlatInspector.java
similarity index 91%
rename from flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatInspector.java
rename to flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/FlatInspector.java
index d7f4edbb..334b5ece 100644
--- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatInspector.java
+++ b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/FlatInspector.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.formdev.flatlaf.testing;
+package com.formdev.flatlaf.extras;
import java.awt.AWTEvent;
import java.awt.Color;
@@ -61,6 +61,24 @@ import com.formdev.flatlaf.ui.FlatUIUtils;
import com.formdev.flatlaf.util.UIScale;
/**
+ * A simple UI inspector that shows information about UI component at mouse location
+ * in a tooltip.
+ *
+ * To use it in an application install it with:
+ *
+ * FlatInspector.install( "ctrl shift alt X" );
+ *
+ * This can be done e.g. in the main() method and allows enabling (and disabling)
+ * the UI inspector for the active window with the given keystroke.
+ *
+ * When the UI inspector is active some additional keys are available:
+ *
+ * - press Esc key to disable UI inspector
+ * - press Ctrl key to increase inspection level, which shows
+ * information about parent of UI component at mouse location
+ * - press Shift key to decrease inspection level
+ *
+ *
* @author Karl Tauber
*/
public class FlatInspector
@@ -80,6 +98,7 @@ public class FlatInspector
private int lastX;
private int lastY;
private int inspectParentLevel;
+ private boolean wasCtrlOrShiftKeyPressed;
private JComponent highlightFigure;
private JToolTip tip;
@@ -129,8 +148,14 @@ public class FlatInspector
keyListener = e -> {
KeyEvent keyEvent = (KeyEvent) e;
int keyCode = keyEvent.getKeyCode();
+ int id = e.getID();
- if( e.getID() == KeyEvent.KEY_RELEASED ) {
+ if( id == KeyEvent.KEY_PRESSED ) {
+ // this avoids that the inspection level is changed when UI inspector
+ // is enabled with keyboard shortcut (e.g. Ctrl+Shift+Alt+X)
+ if( keyCode == KeyEvent.VK_CONTROL || keyCode == KeyEvent.VK_SHIFT )
+ wasCtrlOrShiftKeyPressed = true;
+ } else if( id == KeyEvent.KEY_RELEASED && wasCtrlOrShiftKeyPressed ) {
if( keyCode == KeyEvent.VK_CONTROL ) {
inspectParentLevel++;
inspect( lastX, lastY );
@@ -144,7 +169,7 @@ public class FlatInspector
// consume pressed and released ESC key events to e.g. avoid that dialog is closed
keyEvent.consume();
- if( e.getID() == KeyEvent.KEY_PRESSED ) {
+ if( id == KeyEvent.KEY_PRESSED ) {
FlatInspector inspector = (FlatInspector) rootPane.getClientProperty( FlatInspector.class );
if( inspector == FlatInspector.this ) {
uninstall();
diff --git a/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/FlatSVGIcon.java b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/FlatSVGIcon.java
index ca354603..93945555 100644
--- a/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/FlatSVGIcon.java
+++ b/flatlaf-extras/src/main/java/com/formdev/flatlaf/extras/FlatSVGIcon.java
@@ -173,6 +173,7 @@ public class FlatSVGIcon
private static ColorFilter instance;
private final Map rgb2keyMap = new HashMap<>();
+ private final Map color2colorMap = new HashMap<>();
public static ColorFilter getInstance() {
if( instance == null )
@@ -185,12 +186,28 @@ public class FlatSVGIcon
rgb2keyMap.put( c.rgb, c.key );
}
+ public void addAll( Map from2toMap ) {
+ color2colorMap.putAll( from2toMap );
+ }
+
+ public void add( Color from, Color to ) {
+ color2colorMap.put( from, to );
+ }
+
+ public void remove( Color from ) {
+ color2colorMap.remove( from );
+ }
+
public Color filter( Color color ) {
+ Color newColor = color2colorMap.get( color );
+ if( newColor != null )
+ return newColor;
+
String colorKey = rgb2keyMap.get( color.getRGB() & 0xffffff );
if( colorKey == null )
return color;
- Color newColor = UIManager.getColor( colorKey );
+ newColor = UIManager.getColor( colorKey );
if( newColor == null )
return color;
diff --git a/flatlaf-intellij-themes/.settings/org.eclipse.jdt.core.prefs b/flatlaf-intellij-themes/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000..4a19f363
--- /dev/null
+++ b/flatlaf-intellij-themes/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,377 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=48
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression_chain=0
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_record_components=16
+org.eclipse.jdt.core.formatter.alignment_for_relational_operator=0
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_shift_operator=0
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=33
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=33
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_record_declaration=33
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=33
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=32
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=32
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_last_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_abstract_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=0
+org.eclipse.jdt.core.formatter.blank_lines_between_statement_group_in_switch=0
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=next_line_on_wrap
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=next_line_on_wrap
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=next_line_on_wrap
+org.eclipse.jdt.core.formatter.brace_position_for_record_constructor=next_line_on_wrap
+org.eclipse.jdt.core.formatter.brace_position_for_record_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=next_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.indent_tag_description=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_between_different_tags=do not insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=1
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=1
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_record_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_record_components=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_switch_case_expressions=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_not_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_record_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
+org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_record_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_record_components=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_switch_case_expressions=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_constructor=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_record_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_code_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_method_body_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_record_constructor_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_record_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_after_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_before_code_block=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_record_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.text_block_indentation=0
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_relational_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_shift_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/flatlaf-intellij-themes/.settings/org.eclipse.jdt.ui.prefs b/flatlaf-intellij-themes/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000..ef990006
--- /dev/null
+++ b/flatlaf-intellij-themes/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+formatter_profile=_FlatLaf
+formatter_settings_version=19
diff --git a/flatlaf-intellij-themes/build.gradle.kts b/flatlaf-intellij-themes/build.gradle.kts
index 87e3a2ab..66b77510 100644
--- a/flatlaf-intellij-themes/build.gradle.kts
+++ b/flatlaf-intellij-themes/build.gradle.kts
@@ -37,6 +37,7 @@ tasks {
javadoc {
options {
this as StandardJavadocDocletOptions
+ use( true )
tags = listOf( "uiDefault", "clientProperty" )
}
isFailOnError = false
diff --git a/flatlaf-jide-oss/.settings/org.eclipse.jdt.core.prefs b/flatlaf-jide-oss/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000..4a19f363
--- /dev/null
+++ b/flatlaf-jide-oss/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,377 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=48
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression_chain=0
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_record_components=16
+org.eclipse.jdt.core.formatter.alignment_for_relational_operator=0
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_shift_operator=0
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=33
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=33
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_record_declaration=33
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=33
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=32
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=32
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_last_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_abstract_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=0
+org.eclipse.jdt.core.formatter.blank_lines_between_statement_group_in_switch=0
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=next_line_on_wrap
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=next_line_on_wrap
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=next_line_on_wrap
+org.eclipse.jdt.core.formatter.brace_position_for_record_constructor=next_line_on_wrap
+org.eclipse.jdt.core.formatter.brace_position_for_record_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=next_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.indent_tag_description=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_between_different_tags=do not insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=1
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=1
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_record_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_record_components=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_switch_case_expressions=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_not_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_record_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
+org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_record_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_record_components=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_switch_case_expressions=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_constructor=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_record_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_code_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_method_body_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_record_constructor_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_record_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_after_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_before_code_block=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_record_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.text_block_indentation=0
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_relational_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_shift_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/flatlaf-jide-oss/.settings/org.eclipse.jdt.ui.prefs b/flatlaf-jide-oss/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000..ef990006
--- /dev/null
+++ b/flatlaf-jide-oss/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+formatter_profile=_FlatLaf
+formatter_settings_version=19
diff --git a/flatlaf-jide-oss/build.gradle.kts b/flatlaf-jide-oss/build.gradle.kts
index 09b929d3..faf975e4 100644
--- a/flatlaf-jide-oss/build.gradle.kts
+++ b/flatlaf-jide-oss/build.gradle.kts
@@ -33,6 +33,7 @@ tasks {
javadoc {
options {
this as StandardJavadocDocletOptions
+ use( true )
tags = listOf( "uiDefault", "clientProperty" )
}
isFailOnError = false
diff --git a/flatlaf-swingx/.settings/org.eclipse.jdt.core.prefs b/flatlaf-swingx/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000..4a19f363
--- /dev/null
+++ b/flatlaf-swingx/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,377 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=48
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression_chain=0
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_record_components=16
+org.eclipse.jdt.core.formatter.alignment_for_relational_operator=0
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_shift_operator=0
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=33
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=33
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_record_declaration=33
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=33
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=32
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=32
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_last_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_abstract_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=0
+org.eclipse.jdt.core.formatter.blank_lines_between_statement_group_in_switch=0
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=next_line_on_wrap
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=next_line_on_wrap
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=next_line_on_wrap
+org.eclipse.jdt.core.formatter.brace_position_for_record_constructor=next_line_on_wrap
+org.eclipse.jdt.core.formatter.brace_position_for_record_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=next_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.indent_tag_description=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_between_different_tags=do not insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=1
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=1
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_record_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_record_components=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_switch_case_expressions=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_not_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_record_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
+org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_record_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_record_components=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_switch_case_expressions=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_constructor=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_record_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_code_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_method_body_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_record_constructor_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_record_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_after_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_before_code_block=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_record_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.text_block_indentation=0
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_relational_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_shift_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/flatlaf-swingx/.settings/org.eclipse.jdt.ui.prefs b/flatlaf-swingx/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000..ef990006
--- /dev/null
+++ b/flatlaf-swingx/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+formatter_profile=_FlatLaf
+formatter_settings_version=19
diff --git a/flatlaf-swingx/build.gradle.kts b/flatlaf-swingx/build.gradle.kts
index bbe32652..90bd33b9 100644
--- a/flatlaf-swingx/build.gradle.kts
+++ b/flatlaf-swingx/build.gradle.kts
@@ -38,6 +38,7 @@ tasks {
javadoc {
options {
this as StandardJavadocDocletOptions
+ use( true )
tags = listOf( "uiDefault", "clientProperty" )
}
isFailOnError = false
diff --git a/flatlaf-testing/.settings/org.eclipse.jdt.core.prefs b/flatlaf-testing/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000..4a19f363
--- /dev/null
+++ b/flatlaf-testing/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,377 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=48
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression_chain=0
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_record_components=16
+org.eclipse.jdt.core.formatter.alignment_for_relational_operator=0
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_shift_operator=0
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=33
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=33
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_record_declaration=33
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=33
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=32
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=32
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_last_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_abstract_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=0
+org.eclipse.jdt.core.formatter.blank_lines_between_statement_group_in_switch=0
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=next_line_on_wrap
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=next_line_on_wrap
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=next_line_on_wrap
+org.eclipse.jdt.core.formatter.brace_position_for_record_constructor=next_line_on_wrap
+org.eclipse.jdt.core.formatter.brace_position_for_record_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=next_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.indent_tag_description=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_between_different_tags=do not insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=1
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=1
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_record_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_record_components=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_switch_case_expressions=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_not_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_record_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
+org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_record_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_record_components=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_switch_case_expressions=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_constructor=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_record_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_code_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_method_body_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_record_constructor_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_record_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_after_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_before_code_block=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_record_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.text_block_indentation=0
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_relational_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_shift_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/flatlaf-testing/.settings/org.eclipse.jdt.ui.prefs b/flatlaf-testing/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000..ef990006
--- /dev/null
+++ b/flatlaf-testing/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+formatter_profile=_FlatLaf
+formatter_settings_version=19
diff --git a/flatlaf-testing/build.gradle.kts b/flatlaf-testing/build.gradle.kts
index b17d94ab..9fc60aad 100644
--- a/flatlaf-testing/build.gradle.kts
+++ b/flatlaf-testing/build.gradle.kts
@@ -38,9 +38,10 @@ dependencies {
implementation( "org.swinglabs.swingx:swingx-all:1.6.5-1" )
implementation( "org.swinglabs.swingx:swingx-beaninfo:1.6.5-1" )
implementation( "com.jidesoft:jide-oss:3.6.18" )
+ implementation( "com.glazedlists:glazedlists:1.11.0" )
implementation( "org.netbeans.api:org-openide-awt:RELEASE112" )
-// implementation( "org.pushing-pixels:radiance-substance:2.5.1" )
-// implementation( "com.weblookandfeel:weblaf-ui:1.2.12" )
+// implementation( "org.pushing-pixels:radiance-substance:3.0.0" )
+// implementation( "com.weblookandfeel:weblaf-ui:1.2.13" )
// implementation( "com.jgoodies:jgoodies-looks:2.7.0" )
}
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatComponentsTest.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatComponentsTest.java
index 25039fdc..d6f592dd 100644
--- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatComponentsTest.java
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatComponentsTest.java
@@ -347,12 +347,12 @@ public class FlatComponentsTest
add(labelLabel, "cell 0 0");
//---- label1 ----
- label1.setText("enabled");
+ label1.setText("Enabled");
label1.setDisplayedMnemonic('E');
add(label1, "cell 1 0");
//---- label2 ----
- label2.setText("disabled");
+ label2.setText("Disabled");
label2.setDisplayedMnemonic('D');
label2.setEnabled(false);
add(label2, "cell 2 0");
@@ -362,46 +362,46 @@ public class FlatComponentsTest
add(buttonLabel, "cell 0 1");
//---- button1 ----
- button1.setText("enabled");
+ button1.setText("Enabled");
button1.setDisplayedMnemonicIndex(0);
button1.setToolTipText("This button is enabled.");
add(button1, "cell 1 1");
//---- button17 ----
- button17.setText("sq");
+ button17.setText("Sq");
button17.putClientProperty("JButton.buttonType", "square");
button17.putClientProperty("JComponent.minimumWidth", 0);
add(button17, "cell 1 1");
//---- button22 ----
- button22.setText("rd");
+ button22.setText("Rd");
button22.putClientProperty("JButton.buttonType", "roundRect");
button22.putClientProperty("JComponent.minimumWidth", 0);
add(button22, "cell 1 1");
//---- button2 ----
- button2.setText("disabled");
+ button2.setText("Disabled");
button2.setDisplayedMnemonicIndex(0);
button2.setEnabled(false);
button2.setToolTipText("This button is disabled.");
add(button2, "cell 2 1");
//---- button18 ----
- button18.setText("sq");
+ button18.setText("Sq");
button18.putClientProperty("JButton.buttonType", "square");
button18.setEnabled(false);
button18.putClientProperty("JComponent.minimumWidth", 0);
add(button18, "cell 2 1");
//---- button23 ----
- button23.setText("rd");
+ button23.setText("Rd");
button23.putClientProperty("JButton.buttonType", "roundRect");
button23.setEnabled(false);
button23.putClientProperty("JComponent.minimumWidth", 0);
add(button23, "cell 2 1");
//---- button5 ----
- button5.setText("default");
+ button5.setText("Default");
button5.setDisplayedMnemonicIndex(0);
button5.setToolTipText("Tool tip with\nmultiple\nlines.");
add(button5, "cell 3 1");
@@ -434,7 +434,7 @@ public class FlatComponentsTest
add(button16, "cell 5 1");
//---- button20 ----
- button20.setText("empty border");
+ button20.setText("Empty border");
button20.setBorder(BorderFactory.createEmptyBorder());
add(button20, "cell 6 1");
@@ -443,43 +443,43 @@ public class FlatComponentsTest
add(toggleButtonLabel, "cell 0 2");
//---- toggleButton1 ----
- toggleButton1.setText("enabled");
+ toggleButton1.setText("Enabled");
add(toggleButton1, "cell 1 2");
//---- toggleButton9 ----
- toggleButton9.setText("sq");
+ toggleButton9.setText("Sq");
toggleButton9.putClientProperty("JButton.buttonType", "square");
add(toggleButton9, "cell 1 2");
//---- toggleButton19 ----
- toggleButton19.setText("rd");
+ toggleButton19.setText("Rd");
toggleButton19.putClientProperty("JButton.buttonType", "roundRect");
add(toggleButton19, "cell 1 2");
//---- toggleButton2 ----
- toggleButton2.setText("disabled");
+ toggleButton2.setText("Disabled");
toggleButton2.setEnabled(false);
add(toggleButton2, "cell 2 2");
//---- toggleButton10 ----
- toggleButton10.setText("sq");
+ toggleButton10.setText("Sq");
toggleButton10.putClientProperty("JButton.buttonType", "square");
toggleButton10.setEnabled(false);
add(toggleButton10, "cell 2 2");
//---- toggleButton20 ----
- toggleButton20.setText("rd");
+ toggleButton20.setText("Rd");
toggleButton20.putClientProperty("JButton.buttonType", "roundRect");
toggleButton20.setEnabled(false);
add(toggleButton20, "cell 2 2");
//---- toggleButton3 ----
- toggleButton3.setText("selected");
+ toggleButton3.setText("Selected");
toggleButton3.setSelected(true);
add(toggleButton3, "cell 3 2");
//---- toggleButton4 ----
- toggleButton4.setText("selected disabled");
+ toggleButton4.setText("Selected disabled");
toggleButton4.setEnabled(false);
toggleButton4.setSelected(true);
add(toggleButton4, "cell 4 2");
@@ -505,7 +505,7 @@ public class FlatComponentsTest
add(toggleButton14, "cell 5 2");
//---- toggleButton18 ----
- toggleButton18.setText("empty border");
+ toggleButton18.setText("Empty border");
toggleButton18.setBorder(BorderFactory.createEmptyBorder());
add(toggleButton18, "cell 6 2");
@@ -514,35 +514,35 @@ public class FlatComponentsTest
add(checkBoxLabel, "cell 0 3");
//---- checkBox1 ----
- checkBox1.setText("enabled");
+ checkBox1.setText("Enabled");
checkBox1.setMnemonic('A');
add(checkBox1, "cell 1 3");
//---- checkBox2 ----
- checkBox2.setText("disabled");
+ checkBox2.setText("Disabled");
checkBox2.setEnabled(false);
checkBox2.setMnemonic('D');
add(checkBox2, "cell 2 3");
//---- checkBox3 ----
- checkBox3.setText("selected");
+ checkBox3.setText("Selected");
checkBox3.setSelected(true);
add(checkBox3, "cell 3 3");
//---- checkBox4 ----
- checkBox4.setText("selected disabled");
+ checkBox4.setText("Selected disabled");
checkBox4.setSelected(true);
checkBox4.setEnabled(false);
add(checkBox4, "cell 4 3");
//---- toggleButton5 ----
- toggleButton5.setText("tab");
+ toggleButton5.setText("Tab");
toggleButton5.putClientProperty("JButton.buttonType", "tab");
toggleButton5.setSelected(true);
add(toggleButton5, "cell 5 3");
//---- toggleButton8 ----
- toggleButton8.setText("tab");
+ toggleButton8.setText("Tab");
toggleButton8.putClientProperty("JButton.buttonType", "tab");
toggleButton8.setEnabled(false);
toggleButton8.setSelected(true);
@@ -553,23 +553,23 @@ public class FlatComponentsTest
add(radioButtonLabel, "cell 0 4");
//---- radioButton1 ----
- radioButton1.setText("enabled");
+ radioButton1.setText("Enabled");
radioButton1.setMnemonic('N');
add(radioButton1, "cell 1 4");
//---- radioButton2 ----
- radioButton2.setText("disabled");
+ radioButton2.setText("Disabled");
radioButton2.setEnabled(false);
radioButton2.setMnemonic('S');
add(radioButton2, "cell 2 4");
//---- radioButton3 ----
- radioButton3.setText("selected");
+ radioButton3.setText("Selected");
radioButton3.setSelected(true);
add(radioButton3, "cell 3 4");
//---- radioButton4 ----
- radioButton4.setText("selected disabled");
+ radioButton4.setText("Selected disabled");
radioButton4.setSelected(true);
radioButton4.setEnabled(false);
add(radioButton4, "cell 4 4");
@@ -581,7 +581,7 @@ public class FlatComponentsTest
//---- comboBox1 ----
comboBox1.setEditable(true);
comboBox1.setModel(new DefaultComboBoxModel<>(new String[] {
- "editable",
+ "Editable",
"a",
"bb",
"ccc",
@@ -600,7 +600,7 @@ public class FlatComponentsTest
comboBox2.setEditable(true);
comboBox2.setEnabled(false);
comboBox2.setModel(new DefaultComboBoxModel<>(new String[] {
- "disabled",
+ "Disabled",
"a",
"bb",
"ccc"
@@ -609,7 +609,7 @@ public class FlatComponentsTest
//---- comboBox3 ----
comboBox3.setModel(new DefaultComboBoxModel<>(new String[] {
- "not editable",
+ "Not editable",
"a",
"bb",
"ccc",
@@ -626,7 +626,7 @@ public class FlatComponentsTest
//---- comboBox4 ----
comboBox4.setModel(new DefaultComboBoxModel<>(new String[] {
- "not editable disabled",
+ "Not editable disabled",
"a",
"bb",
"ccc"
@@ -636,7 +636,7 @@ public class FlatComponentsTest
//---- comboBox5 ----
comboBox5.setModel(new DefaultComboBoxModel<>(new String[] {
- "wide popup if text is longer",
+ "Wide popup if text is longer",
"aa",
"bbb",
"cccc"
@@ -646,7 +646,7 @@ public class FlatComponentsTest
//---- comboBox6 ----
comboBox6.setBorder(BorderFactory.createEmptyBorder());
comboBox6.setModel(new DefaultComboBoxModel<>(new String[] {
- "empty border",
+ "Empty border",
"a",
"b",
"c"
@@ -664,7 +664,7 @@ public class FlatComponentsTest
//---- comboBox7 ----
comboBox7.setEditable(true);
- comboBox7.putClientProperty("JTextField.placeholderText", "placeholder");
+ comboBox7.putClientProperty("JTextField.placeholderText", "Placeholder");
add(comboBox7, "cell 5 6,growx");
//---- spinner3 ----
@@ -677,31 +677,31 @@ public class FlatComponentsTest
add(textFieldLabel, "cell 0 7");
//---- textField1 ----
- textField1.setText("editable");
+ textField1.setText("Editable");
add(textField1, "cell 1 7,growx");
//---- textField2 ----
- textField2.setText("disabled");
+ textField2.setText("Disabled");
textField2.setEnabled(false);
add(textField2, "cell 2 7,growx");
//---- textField3 ----
- textField3.setText("not editable");
+ textField3.setText("Not editable");
textField3.setEditable(false);
add(textField3, "cell 3 7,growx");
//---- textField4 ----
- textField4.setText("not editable disabled");
+ textField4.setText("Not editable disabled");
textField4.setEnabled(false);
textField4.setEditable(false);
add(textField4, "cell 4 7,growx");
//---- textField6 ----
- textField6.putClientProperty("JTextField.placeholderText", "placeholder");
+ textField6.putClientProperty("JTextField.placeholderText", "Placeholder");
add(textField6, "cell 5 7,growx");
//---- textField5 ----
- textField5.setText("empty border");
+ textField5.setText("Empty border");
textField5.setBorder(BorderFactory.createEmptyBorder());
add(textField5, "cell 6 7");
@@ -710,31 +710,31 @@ public class FlatComponentsTest
add(formattedTextFieldLabel, "cell 0 8");
//---- formattedTextField1 ----
- formattedTextField1.setText("editable");
+ formattedTextField1.setText("Editable");
add(formattedTextField1, "cell 1 8,growx");
//---- formattedTextField2 ----
- formattedTextField2.setText("disabled");
+ formattedTextField2.setText("Disabled");
formattedTextField2.setEnabled(false);
add(formattedTextField2, "cell 2 8,growx");
//---- formattedTextField3 ----
- formattedTextField3.setText("not editable");
+ formattedTextField3.setText("Not editable");
formattedTextField3.setEditable(false);
add(formattedTextField3, "cell 3 8,growx");
//---- formattedTextField4 ----
- formattedTextField4.setText("not editable disabled");
+ formattedTextField4.setText("Not editable disabled");
formattedTextField4.setEnabled(false);
formattedTextField4.setEditable(false);
add(formattedTextField4, "cell 4 8,growx");
//---- formattedTextField5 ----
- formattedTextField5.putClientProperty("JTextField.placeholderText", "placeholder");
+ formattedTextField5.putClientProperty("JTextField.placeholderText", "Placeholder");
add(formattedTextField5, "cell 5 8,growx");
//---- formattedTextField6 ----
- formattedTextField6.setText("empty border");
+ formattedTextField6.setText("Empty border");
formattedTextField6.setBorder(BorderFactory.createEmptyBorder());
add(formattedTextField6, "cell 6 8");
@@ -743,27 +743,27 @@ public class FlatComponentsTest
add(passwordFieldLabel, "cell 0 9");
//---- passwordField1 ----
- passwordField1.setText("editable");
+ passwordField1.setText("Editable");
add(passwordField1, "cell 1 9,growx");
//---- passwordField2 ----
- passwordField2.setText("disabled");
+ passwordField2.setText("Disabled");
passwordField2.setEnabled(false);
add(passwordField2, "cell 2 9,growx");
//---- passwordField3 ----
- passwordField3.setText("not editable");
+ passwordField3.setText("Not editable");
passwordField3.setEditable(false);
add(passwordField3, "cell 3 9,growx");
//---- passwordField4 ----
- passwordField4.setText("not editable disabled");
+ passwordField4.setText("Not editable disabled");
passwordField4.setEnabled(false);
passwordField4.setEditable(false);
add(passwordField4, "cell 4 9,growx");
//---- passwordField5 ----
- passwordField5.putClientProperty("JTextField.placeholderText", "placeholder");
+ passwordField5.putClientProperty("JTextField.placeholderText", "Placeholder");
add(passwordField5, "cell 5 9,growx");
//---- passwordField6 ----
@@ -781,7 +781,7 @@ public class FlatComponentsTest
scrollPane1.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
//---- textArea1 ----
- textArea1.setText("editable");
+ textArea1.setText("Editable");
textArea1.setRows(2);
scrollPane1.setViewportView(textArea1);
}
@@ -793,7 +793,7 @@ public class FlatComponentsTest
scrollPane2.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
//---- textArea2 ----
- textArea2.setText("disabled");
+ textArea2.setText("Disabled");
textArea2.setRows(2);
textArea2.setEnabled(false);
scrollPane2.setViewportView(textArea2);
@@ -806,7 +806,7 @@ public class FlatComponentsTest
scrollPane3.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
//---- textArea3 ----
- textArea3.setText("not editable");
+ textArea3.setText("Not editable");
textArea3.setRows(2);
textArea3.setEditable(false);
scrollPane3.setViewportView(textArea3);
@@ -819,7 +819,7 @@ public class FlatComponentsTest
scrollPane4.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
//---- textArea4 ----
- textArea4.setText("not editable disabled");
+ textArea4.setText("Not editable disabled");
textArea4.setRows(2);
textArea4.setEditable(false);
textArea4.setEnabled(false);
@@ -829,7 +829,7 @@ public class FlatComponentsTest
//---- textArea5 ----
textArea5.setRows(2);
- textArea5.setText("no scroll pane");
+ textArea5.setText("No scroll pane");
add(textArea5, "cell 5 10,growx");
//---- editorPaneLabel ----
@@ -842,7 +842,7 @@ public class FlatComponentsTest
scrollPane5.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
//---- editorPane1 ----
- editorPane1.setText("editable");
+ editorPane1.setText("Editable");
scrollPane5.setViewportView(editorPane1);
}
add(scrollPane5, "cell 1 11,growx");
@@ -853,7 +853,7 @@ public class FlatComponentsTest
scrollPane6.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
//---- editorPane2 ----
- editorPane2.setText("disabled");
+ editorPane2.setText("Disabled");
editorPane2.setEnabled(false);
scrollPane6.setViewportView(editorPane2);
}
@@ -865,7 +865,7 @@ public class FlatComponentsTest
scrollPane7.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
//---- editorPane3 ----
- editorPane3.setText("not editable");
+ editorPane3.setText("Not editable");
editorPane3.setEditable(false);
scrollPane7.setViewportView(editorPane3);
}
@@ -877,7 +877,7 @@ public class FlatComponentsTest
scrollPane8.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
//---- editorPane4 ----
- editorPane4.setText("not editable disabled");
+ editorPane4.setText("Not editable disabled");
editorPane4.setEditable(false);
editorPane4.setEnabled(false);
scrollPane8.setViewportView(editorPane4);
@@ -885,7 +885,7 @@ public class FlatComponentsTest
add(scrollPane8, "cell 4 11,growx");
//---- editorPane5 ----
- editorPane5.setText("no scroll pane");
+ editorPane5.setText("No scroll pane");
add(editorPane5, "cell 5 11,growx");
//---- textPaneLabel ----
@@ -898,7 +898,7 @@ public class FlatComponentsTest
scrollPane9.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
//---- textPane1 ----
- textPane1.setText("editable");
+ textPane1.setText("Editable");
scrollPane9.setViewportView(textPane1);
}
add(scrollPane9, "cell 1 12,growx");
@@ -909,7 +909,7 @@ public class FlatComponentsTest
scrollPane10.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
//---- textPane2 ----
- textPane2.setText("disabled");
+ textPane2.setText("Disabled");
textPane2.setEnabled(false);
scrollPane10.setViewportView(textPane2);
}
@@ -921,7 +921,7 @@ public class FlatComponentsTest
scrollPane11.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
//---- textPane3 ----
- textPane3.setText("not editable");
+ textPane3.setText("Not editable");
textPane3.setEditable(false);
scrollPane11.setViewportView(textPane3);
}
@@ -933,7 +933,7 @@ public class FlatComponentsTest
scrollPane12.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
//---- textPane4 ----
- textPane4.setText("not editable disabled");
+ textPane4.setText("Not editable disabled");
textPane4.setEditable(false);
textPane4.setEnabled(false);
scrollPane12.setViewportView(textPane4);
@@ -941,7 +941,7 @@ public class FlatComponentsTest
add(scrollPane12, "cell 4 12,growx");
//---- textPane5 ----
- textPane5.setText("no scroll pane");
+ textPane5.setText("No scroll pane");
add(textPane5, "cell 5 12,growx");
//---- scrollPaneLabel ----
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatComponentsTest.jfd b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatComponentsTest.jfd
index 2d34c7bc..3980a7d1 100644
--- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatComponentsTest.jfd
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatComponentsTest.jfd
@@ -1,4 +1,4 @@
-JFDML JFormDesigner: "7.0.1.0.272" Java: "13.0.2" encoding: "UTF-8"
+JFDML JFormDesigner: "7.0.2.0.298" Java: "14" encoding: "UTF-8"
new FormModel {
contentType: "form/swing"
@@ -20,14 +20,14 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label1"
- "text": "enabled"
+ "text": "Enabled"
"displayedMnemonic": 69
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 0"
} )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label2"
- "text": "disabled"
+ "text": "Disabled"
"displayedMnemonic": 68
"enabled": false
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -41,7 +41,7 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JButton" ) {
name: "button1"
- "text": "enabled"
+ "text": "Enabled"
"displayedMnemonicIndex": 0
"toolTipText": "This button is enabled."
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -49,7 +49,7 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JButton" ) {
name: "button17"
- "text": "sq"
+ "text": "Sq"
"$client.JButton.buttonType": "square"
"$client.JComponent.minimumWidth": 0
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -57,7 +57,7 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JButton" ) {
name: "button22"
- "text": "rd"
+ "text": "Rd"
"$client.JButton.buttonType": "roundRect"
"$client.JComponent.minimumWidth": 0
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -65,7 +65,7 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JButton" ) {
name: "button2"
- "text": "disabled"
+ "text": "Disabled"
"displayedMnemonicIndex": 0
"enabled": false
"toolTipText": "This button is disabled."
@@ -74,7 +74,7 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JButton" ) {
name: "button18"
- "text": "sq"
+ "text": "Sq"
"$client.JButton.buttonType": "square"
"enabled": false
"$client.JComponent.minimumWidth": 0
@@ -83,7 +83,7 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JButton" ) {
name: "button23"
- "text": "rd"
+ "text": "Rd"
"$client.JButton.buttonType": "roundRect"
"enabled": false
"$client.JComponent.minimumWidth": 0
@@ -92,7 +92,7 @@ new FormModel {
} )
add( new FormComponent( "com.formdev.flatlaf.testing.FlatComponentsTest$TestDefaultButton" ) {
name: "button5"
- "text": "default"
+ "text": "Default"
"displayedMnemonicIndex": 0
"toolTipText": "Tool tip with\nmultiple\nlines."
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -139,7 +139,7 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JButton" ) {
name: "button20"
- "text": "empty border"
+ "text": "Empty border"
"border": &EmptyBorder0 new javax.swing.border.EmptyBorder( 0, 0, 0, 0 )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 6 1"
@@ -152,34 +152,34 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JToggleButton" ) {
name: "toggleButton1"
- "text": "enabled"
+ "text": "Enabled"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 2"
} )
add( new FormComponent( "javax.swing.JToggleButton" ) {
name: "toggleButton9"
- "text": "sq"
+ "text": "Sq"
"$client.JButton.buttonType": "square"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 2"
} )
add( new FormComponent( "javax.swing.JToggleButton" ) {
name: "toggleButton19"
- "text": "rd"
+ "text": "Rd"
"$client.JButton.buttonType": "roundRect"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 2"
} )
add( new FormComponent( "javax.swing.JToggleButton" ) {
name: "toggleButton2"
- "text": "disabled"
+ "text": "Disabled"
"enabled": false
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 2 2"
} )
add( new FormComponent( "javax.swing.JToggleButton" ) {
name: "toggleButton10"
- "text": "sq"
+ "text": "Sq"
"$client.JButton.buttonType": "square"
"enabled": false
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -187,7 +187,7 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JToggleButton" ) {
name: "toggleButton20"
- "text": "rd"
+ "text": "Rd"
"$client.JButton.buttonType": "roundRect"
"enabled": false
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -195,14 +195,14 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JToggleButton" ) {
name: "toggleButton3"
- "text": "selected"
+ "text": "Selected"
"selected": true
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 3 2"
} )
add( new FormComponent( "javax.swing.JToggleButton" ) {
name: "toggleButton4"
- "text": "selected disabled"
+ "text": "Selected disabled"
"enabled": false
"selected": true
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -238,7 +238,7 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JToggleButton" ) {
name: "toggleButton18"
- "text": "empty border"
+ "text": "Empty border"
"border": #EmptyBorder0
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 6 2"
@@ -251,14 +251,14 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JCheckBox" ) {
name: "checkBox1"
- "text": "enabled"
+ "text": "Enabled"
"mnemonic": 65
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 3"
} )
add( new FormComponent( "javax.swing.JCheckBox" ) {
name: "checkBox2"
- "text": "disabled"
+ "text": "Disabled"
"enabled": false
"mnemonic": 68
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -266,14 +266,14 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JCheckBox" ) {
name: "checkBox3"
- "text": "selected"
+ "text": "Selected"
"selected": true
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 3 3"
} )
add( new FormComponent( "javax.swing.JCheckBox" ) {
name: "checkBox4"
- "text": "selected disabled"
+ "text": "Selected disabled"
"selected": true
"enabled": false
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -281,7 +281,7 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JToggleButton" ) {
name: "toggleButton5"
- "text": "tab"
+ "text": "Tab"
"$client.JButton.buttonType": "tab"
"selected": true
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -289,7 +289,7 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JToggleButton" ) {
name: "toggleButton8"
- "text": "tab"
+ "text": "Tab"
"$client.JButton.buttonType": "tab"
"enabled": false
"selected": true
@@ -304,14 +304,14 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JRadioButton" ) {
name: "radioButton1"
- "text": "enabled"
+ "text": "Enabled"
"mnemonic": 78
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 4"
} )
add( new FormComponent( "javax.swing.JRadioButton" ) {
name: "radioButton2"
- "text": "disabled"
+ "text": "Disabled"
"enabled": false
"mnemonic": 83
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -319,14 +319,14 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JRadioButton" ) {
name: "radioButton3"
- "text": "selected"
+ "text": "Selected"
"selected": true
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 3 4"
} )
add( new FormComponent( "javax.swing.JRadioButton" ) {
name: "radioButton4"
- "text": "selected disabled"
+ "text": "Selected disabled"
"selected": true
"enabled": false
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -342,8 +342,8 @@ new FormModel {
name: "comboBox1"
"editable": true
"model": new javax.swing.DefaultComboBoxModel {
- selectedItem: "editable"
- addElement( "editable" )
+ selectedItem: "Editable"
+ addElement( "Editable" )
addElement( "a" )
addElement( "bb" )
addElement( "ccc" )
@@ -364,8 +364,8 @@ new FormModel {
"editable": true
"enabled": false
"model": new javax.swing.DefaultComboBoxModel {
- selectedItem: "disabled"
- addElement( "disabled" )
+ selectedItem: "Disabled"
+ addElement( "Disabled" )
addElement( "a" )
addElement( "bb" )
addElement( "ccc" )
@@ -376,8 +376,8 @@ new FormModel {
add( new FormComponent( "javax.swing.JComboBox" ) {
name: "comboBox3"
"model": new javax.swing.DefaultComboBoxModel {
- selectedItem: "not editable"
- addElement( "not editable" )
+ selectedItem: "Not editable"
+ addElement( "Not editable" )
addElement( "a" )
addElement( "bb" )
addElement( "ccc" )
@@ -396,8 +396,8 @@ new FormModel {
add( new FormComponent( "javax.swing.JComboBox" ) {
name: "comboBox4"
"model": new javax.swing.DefaultComboBoxModel {
- selectedItem: "not editable disabled"
- addElement( "not editable disabled" )
+ selectedItem: "Not editable disabled"
+ addElement( "Not editable disabled" )
addElement( "a" )
addElement( "bb" )
addElement( "ccc" )
@@ -409,8 +409,8 @@ new FormModel {
add( new FormComponent( "javax.swing.JComboBox" ) {
name: "comboBox5"
"model": new javax.swing.DefaultComboBoxModel {
- selectedItem: "wide popup if text is longer"
- addElement( "wide popup if text is longer" )
+ selectedItem: "Wide popup if text is longer"
+ addElement( "Wide popup if text is longer" )
addElement( "aa" )
addElement( "bbb" )
addElement( "cccc" )
@@ -422,8 +422,8 @@ new FormModel {
name: "comboBox6"
"border": #EmptyBorder0
"model": new javax.swing.DefaultComboBoxModel {
- selectedItem: "empty border"
- addElement( "empty border" )
+ selectedItem: "Empty border"
+ addElement( "Empty border" )
addElement( "a" )
addElement( "b" )
addElement( "c" )
@@ -451,7 +451,7 @@ new FormModel {
add( new FormComponent( "javax.swing.JComboBox" ) {
name: "comboBox7"
"editable": true
- "$client.JTextField.placeholderText": "placeholder"
+ "$client.JTextField.placeholderText": "Placeholder"
auxiliary() {
"JavaCodeGenerator.typeParameters": "String"
}
@@ -475,7 +475,7 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JTextField" ) {
name: "textField1"
- "text": "editable"
+ "text": "Editable"
auxiliary() {
"JavaCodeGenerator.variableLocal": false
}
@@ -484,21 +484,21 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JTextField" ) {
name: "textField2"
- "text": "disabled"
+ "text": "Disabled"
"enabled": false
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 2 7,growx"
} )
add( new FormComponent( "javax.swing.JTextField" ) {
name: "textField3"
- "text": "not editable"
+ "text": "Not editable"
"editable": false
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 3 7,growx"
} )
add( new FormComponent( "javax.swing.JTextField" ) {
name: "textField4"
- "text": "not editable disabled"
+ "text": "Not editable disabled"
"enabled": false
"editable": false
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -506,13 +506,13 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JTextField" ) {
name: "textField6"
- "$client.JTextField.placeholderText": "placeholder"
+ "$client.JTextField.placeholderText": "Placeholder"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 5 7,growx"
} )
add( new FormComponent( "javax.swing.JTextField" ) {
name: "textField5"
- "text": "empty border"
+ "text": "Empty border"
"border": #EmptyBorder0
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 6 7"
@@ -525,27 +525,27 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JFormattedTextField" ) {
name: "formattedTextField1"
- "text": "editable"
+ "text": "Editable"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 8,growx"
} )
add( new FormComponent( "javax.swing.JFormattedTextField" ) {
name: "formattedTextField2"
- "text": "disabled"
+ "text": "Disabled"
"enabled": false
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 2 8,growx"
} )
add( new FormComponent( "javax.swing.JFormattedTextField" ) {
name: "formattedTextField3"
- "text": "not editable"
+ "text": "Not editable"
"editable": false
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 3 8,growx"
} )
add( new FormComponent( "javax.swing.JFormattedTextField" ) {
name: "formattedTextField4"
- "text": "not editable disabled"
+ "text": "Not editable disabled"
"enabled": false
"editable": false
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -553,13 +553,13 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JFormattedTextField" ) {
name: "formattedTextField5"
- "$client.JTextField.placeholderText": "placeholder"
+ "$client.JTextField.placeholderText": "Placeholder"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 5 8,growx"
} )
add( new FormComponent( "javax.swing.JFormattedTextField" ) {
name: "formattedTextField6"
- "text": "empty border"
+ "text": "Empty border"
"border": #EmptyBorder0
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 6 8"
@@ -572,27 +572,27 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JPasswordField" ) {
name: "passwordField1"
- "text": "editable"
+ "text": "Editable"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 9,growx"
} )
add( new FormComponent( "javax.swing.JPasswordField" ) {
name: "passwordField2"
- "text": "disabled"
+ "text": "Disabled"
"enabled": false
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 2 9,growx"
} )
add( new FormComponent( "javax.swing.JPasswordField" ) {
name: "passwordField3"
- "text": "not editable"
+ "text": "Not editable"
"editable": false
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 3 9,growx"
} )
add( new FormComponent( "javax.swing.JPasswordField" ) {
name: "passwordField4"
- "text": "not editable disabled"
+ "text": "Not editable disabled"
"enabled": false
"editable": false
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -600,7 +600,7 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JPasswordField" ) {
name: "passwordField5"
- "$client.JTextField.placeholderText": "placeholder"
+ "$client.JTextField.placeholderText": "Placeholder"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 5 9,growx"
} )
@@ -623,7 +623,7 @@ new FormModel {
"horizontalScrollBarPolicy": 31
add( new FormComponent( "javax.swing.JTextArea" ) {
name: "textArea1"
- "text": "editable"
+ "text": "Editable"
"rows": 2
} )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -635,7 +635,7 @@ new FormModel {
"horizontalScrollBarPolicy": 31
add( new FormComponent( "javax.swing.JTextArea" ) {
name: "textArea2"
- "text": "disabled"
+ "text": "Disabled"
"rows": 2
"enabled": false
} )
@@ -648,7 +648,7 @@ new FormModel {
"horizontalScrollBarPolicy": 31
add( new FormComponent( "javax.swing.JTextArea" ) {
name: "textArea3"
- "text": "not editable"
+ "text": "Not editable"
"rows": 2
"editable": false
} )
@@ -661,7 +661,7 @@ new FormModel {
"horizontalScrollBarPolicy": 31
add( new FormComponent( "javax.swing.JTextArea" ) {
name: "textArea4"
- "text": "not editable disabled"
+ "text": "Not editable disabled"
"rows": 2
"editable": false
"enabled": false
@@ -672,7 +672,7 @@ new FormModel {
add( new FormComponent( "javax.swing.JTextArea" ) {
name: "textArea5"
"rows": 2
- "text": "no scroll pane"
+ "text": "No scroll pane"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 5 10,growx"
} )
@@ -688,7 +688,7 @@ new FormModel {
"horizontalScrollBarPolicy": 31
add( new FormComponent( "javax.swing.JEditorPane" ) {
name: "editorPane1"
- "text": "editable"
+ "text": "Editable"
} )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 11,growx"
@@ -699,7 +699,7 @@ new FormModel {
"horizontalScrollBarPolicy": 31
add( new FormComponent( "javax.swing.JEditorPane" ) {
name: "editorPane2"
- "text": "disabled"
+ "text": "Disabled"
"enabled": false
} )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -711,7 +711,7 @@ new FormModel {
"horizontalScrollBarPolicy": 31
add( new FormComponent( "javax.swing.JEditorPane" ) {
name: "editorPane3"
- "text": "not editable"
+ "text": "Not editable"
"editable": false
} )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -723,7 +723,7 @@ new FormModel {
"horizontalScrollBarPolicy": 31
add( new FormComponent( "javax.swing.JEditorPane" ) {
name: "editorPane4"
- "text": "not editable disabled"
+ "text": "Not editable disabled"
"editable": false
"enabled": false
} )
@@ -732,7 +732,7 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JEditorPane" ) {
name: "editorPane5"
- "text": "no scroll pane"
+ "text": "No scroll pane"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 5 11,growx"
} )
@@ -748,7 +748,7 @@ new FormModel {
"horizontalScrollBarPolicy": 31
add( new FormComponent( "javax.swing.JTextPane" ) {
name: "textPane1"
- "text": "editable"
+ "text": "Editable"
} )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 1 12,growx"
@@ -759,7 +759,7 @@ new FormModel {
"horizontalScrollBarPolicy": 31
add( new FormComponent( "javax.swing.JTextPane" ) {
name: "textPane2"
- "text": "disabled"
+ "text": "Disabled"
"enabled": false
} )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -771,7 +771,7 @@ new FormModel {
"horizontalScrollBarPolicy": 31
add( new FormComponent( "javax.swing.JTextPane" ) {
name: "textPane3"
- "text": "not editable"
+ "text": "Not editable"
"editable": false
} )
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
@@ -783,7 +783,7 @@ new FormModel {
"horizontalScrollBarPolicy": 31
add( new FormComponent( "javax.swing.JTextPane" ) {
name: "textPane4"
- "text": "not editable disabled"
+ "text": "Not editable disabled"
"editable": false
"enabled": false
} )
@@ -792,7 +792,7 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JTextPane" ) {
name: "textPane5"
- "text": "no scroll pane"
+ "text": "No scroll pane"
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 5 12,growx"
} )
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatHtmlTest.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatHtmlTest.java
index 0c9e2144..f0c4cac7 100644
--- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatHtmlTest.java
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatHtmlTest.java
@@ -58,6 +58,34 @@ public class FlatHtmlTest
editorPaneLabel = new JLabel();
textPaneLabel = new JLabel();
toolTipLabel = new JLabel();
+ panel1 = new JPanel();
+ label5 = new JLabel();
+ label6 = new JLabel();
+ label7 = new JLabel();
+ label3 = new JLabel();
+ button1 = new JButton();
+ button2 = new JButton();
+ label11 = new JLabel();
+ toggleButton1 = new JToggleButton();
+ toggleButton2 = new JToggleButton();
+ label12 = new JLabel();
+ checkBox1 = new JCheckBox();
+ checkBox2 = new JCheckBox();
+ label13 = new JLabel();
+ radioButton1 = new JRadioButton();
+ radioButton2 = new JRadioButton();
+ label8 = new JLabel();
+ menu1 = new JMenu();
+ menu2 = new JMenu();
+ label4 = new JLabel();
+ menuItem1 = new JMenuItem();
+ menuItem2 = new JMenuItem();
+ label9 = new JLabel();
+ checkBoxMenuItem1 = new JCheckBoxMenuItem();
+ checkBoxMenuItem2 = new JCheckBoxMenuItem();
+ label10 = new JLabel();
+ radioButtonMenuItem1 = new JRadioButtonMenuItem();
+ radioButtonMenuItem2 = new JRadioButtonMenuItem();
label1 = new JLabel();
scrollPane15 = new JScrollPane();
editorPane1 = new JEditorPane();
@@ -78,6 +106,7 @@ public class FlatHtmlTest
"[fill]" +
"[fill]" +
"[fill]" +
+ "[fill]" +
"[fill]",
// rows
"[]" +
@@ -100,6 +129,145 @@ public class FlatHtmlTest
toolTipLabel.setText("JToolTip:");
add(toolTipLabel, "cell 3 0");
+ //======== panel1 ========
+ {
+ panel1.setLayout(new MigLayout(
+ "insets 0,hidemode 3",
+ // columns
+ "[fill]" +
+ "[fill]" +
+ "[fill]",
+ // rows
+ "[]" +
+ "[]" +
+ "[]" +
+ "[]" +
+ "[]" +
+ "[]" +
+ "[]" +
+ "[]" +
+ "[]"));
+
+ //---- label5 ----
+ label5.setText("JLabel:");
+ panel1.add(label5, "cell 0 0");
+
+ //---- label6 ----
+ label6.setText("Some Bold Text");
+ panel1.add(label6, "cell 1 0");
+
+ //---- label7 ----
+ label7.setText("Some text");
+ panel1.add(label7, "cell 2 0");
+
+ //---- label3 ----
+ label3.setText("JButon:");
+ panel1.add(label3, "cell 0 1");
+
+ //---- button1 ----
+ button1.setText("Some Bold Text");
+ panel1.add(button1, "cell 1 1");
+
+ //---- button2 ----
+ button2.setText("Some text");
+ panel1.add(button2, "cell 2 1");
+
+ //---- label11 ----
+ label11.setText("text");
+ panel1.add(label11, "cell 0 2");
+
+ //---- toggleButton1 ----
+ toggleButton1.setText("Some Bold Text");
+ toggleButton1.setSelected(true);
+ panel1.add(toggleButton1, "cell 1 2");
+
+ //---- toggleButton2 ----
+ toggleButton2.setText("Some text");
+ toggleButton2.setSelected(true);
+ panel1.add(toggleButton2, "cell 2 2");
+
+ //---- label12 ----
+ label12.setText("text");
+ panel1.add(label12, "cell 0 3");
+
+ //---- checkBox1 ----
+ checkBox1.setText("Some Bold Text");
+ panel1.add(checkBox1, "cell 1 3");
+
+ //---- checkBox2 ----
+ checkBox2.setText("Some text");
+ panel1.add(checkBox2, "cell 2 3");
+
+ //---- label13 ----
+ label13.setText("text");
+ panel1.add(label13, "cell 0 4");
+
+ //---- radioButton1 ----
+ radioButton1.setText("Some Bold Text");
+ panel1.add(radioButton1, "cell 1 4");
+
+ //---- radioButton2 ----
+ radioButton2.setText("Some text");
+ panel1.add(radioButton2, "cell 2 4");
+
+ //---- label8 ----
+ label8.setText("JMenu:");
+ panel1.add(label8, "cell 0 5");
+
+ //======== menu1 ========
+ {
+ menu1.setText("Some Bold Text");
+ }
+ panel1.add(menu1, "cell 1 5");
+
+ //======== menu2 ========
+ {
+ menu2.setText("Some text");
+ }
+ panel1.add(menu2, "cell 2 5");
+
+ //---- label4 ----
+ label4.setText("JMenuItem:");
+ panel1.add(label4, "cell 0 6");
+
+ //---- menuItem1 ----
+ menuItem1.setText("Some Bold Text");
+ panel1.add(menuItem1, "cell 1 6");
+
+ //---- menuItem2 ----
+ menuItem2.setText("Some text");
+ panel1.add(menuItem2, "cell 2 6");
+
+ //---- label9 ----
+ label9.setText("JCheckBoxMenuItem:");
+ panel1.add(label9, "cell 0 7");
+
+ //---- checkBoxMenuItem1 ----
+ checkBoxMenuItem1.setText("Some Bold Text");
+ checkBoxMenuItem1.setSelected(true);
+ panel1.add(checkBoxMenuItem1, "cell 1 7");
+
+ //---- checkBoxMenuItem2 ----
+ checkBoxMenuItem2.setText("Some text");
+ checkBoxMenuItem2.setSelected(true);
+ panel1.add(checkBoxMenuItem2, "cell 2 7");
+
+ //---- label10 ----
+ label10.setText("JRadioButtonMenuItem:");
+ panel1.add(label10, "cell 0 8");
+
+ //---- radioButtonMenuItem1 ----
+ radioButtonMenuItem1.setText("Some Bold Text");
+ radioButtonMenuItem1.setSelected(true);
+ panel1.add(radioButtonMenuItem1, "cell 1 8");
+
+ //---- radioButtonMenuItem2 ----
+ radioButtonMenuItem2.setText("Some text");
+ radioButtonMenuItem2.setSelected(true);
+ panel1.add(radioButtonMenuItem2, "cell 2 8");
+ }
+ add(panel1, "cell 4 0 1 3,aligny top,growy 0");
+
//---- label1 ----
label1.setText("HTML
Sample content
text with linkHeader 1
Header 2
Header 3
Header 4
Header 5
Header 6
Paragraph
");
add(label1, "cell 0 1");
@@ -183,6 +351,34 @@ public class FlatHtmlTest
private JLabel editorPaneLabel;
private JLabel textPaneLabel;
private JLabel toolTipLabel;
+ private JPanel panel1;
+ private JLabel label5;
+ private JLabel label6;
+ private JLabel label7;
+ private JLabel label3;
+ private JButton button1;
+ private JButton button2;
+ private JLabel label11;
+ private JToggleButton toggleButton1;
+ private JToggleButton toggleButton2;
+ private JLabel label12;
+ private JCheckBox checkBox1;
+ private JCheckBox checkBox2;
+ private JLabel label13;
+ private JRadioButton radioButton1;
+ private JRadioButton radioButton2;
+ private JLabel label8;
+ private JMenu menu1;
+ private JMenu menu2;
+ private JLabel label4;
+ private JMenuItem menuItem1;
+ private JMenuItem menuItem2;
+ private JLabel label9;
+ private JCheckBoxMenuItem checkBoxMenuItem1;
+ private JCheckBoxMenuItem checkBoxMenuItem2;
+ private JLabel label10;
+ private JRadioButtonMenuItem radioButtonMenuItem1;
+ private JRadioButtonMenuItem radioButtonMenuItem2;
private JLabel label1;
private JScrollPane scrollPane15;
private JEditorPane editorPane1;
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatHtmlTest.jfd b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatHtmlTest.jfd
index 006018f7..7ff2c3e3 100644
--- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatHtmlTest.jfd
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatHtmlTest.jfd
@@ -1,11 +1,11 @@
-JFDML JFormDesigner: "7.0.1.0.272" Java: "13.0.2" encoding: "UTF-8"
+JFDML JFormDesigner: "7.0.2.0.298" Java: "14" encoding: "UTF-8"
new FormModel {
contentType: "form/swing"
root: new FormRoot {
add( new FormContainer( "com.formdev.flatlaf.testing.FlatTestPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
"$layoutConstraints": "ltr,insets dialog,hidemode 3"
- "$columnConstraints": "[fill][fill][fill][fill]"
+ "$columnConstraints": "[fill][fill][fill][fill][fill]"
"$rowConstraints": "[][top][top]"
} ) {
name: "this"
@@ -33,6 +33,183 @@ new FormModel {
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 3 0"
} )
+ add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
+ "$layoutConstraints": "insets 0,hidemode 3"
+ "$columnConstraints": "[fill][fill][fill]"
+ "$rowConstraints": "[][][][][][][][][]"
+ } ) {
+ name: "panel1"
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label5"
+ "text": "JLabel:"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 0"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label6"
+ "text": "Some Bold Text"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 0"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label7"
+ "text": "Some text"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 2 0"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label3"
+ "text": "JButon:"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 1"
+ } )
+ add( new FormComponent( "javax.swing.JButton" ) {
+ name: "button1"
+ "text": "Some Bold Text"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 1"
+ } )
+ add( new FormComponent( "javax.swing.JButton" ) {
+ name: "button2"
+ "text": "Some text"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 2 1"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label11"
+ "text": "text"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 2"
+ } )
+ add( new FormComponent( "javax.swing.JToggleButton" ) {
+ name: "toggleButton1"
+ "text": "Some Bold Text"
+ "selected": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 2"
+ } )
+ add( new FormComponent( "javax.swing.JToggleButton" ) {
+ name: "toggleButton2"
+ "text": "Some text"
+ "selected": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 2 2"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label12"
+ "text": "text"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 3"
+ } )
+ add( new FormComponent( "javax.swing.JCheckBox" ) {
+ name: "checkBox1"
+ "text": "Some Bold Text"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 3"
+ } )
+ add( new FormComponent( "javax.swing.JCheckBox" ) {
+ name: "checkBox2"
+ "text": "Some text"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 2 3"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label13"
+ "text": "text"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 4"
+ } )
+ add( new FormComponent( "javax.swing.JRadioButton" ) {
+ name: "radioButton1"
+ "text": "Some Bold Text"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 4"
+ } )
+ add( new FormComponent( "javax.swing.JRadioButton" ) {
+ name: "radioButton2"
+ "text": "Some text"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 2 4"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label8"
+ "text": "JMenu:"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 5"
+ } )
+ add( new FormContainer( "javax.swing.JMenu", new FormLayoutManager( class javax.swing.JMenu ) ) {
+ name: "menu1"
+ "text": "Some Bold Text"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 5"
+ } )
+ add( new FormContainer( "javax.swing.JMenu", new FormLayoutManager( class javax.swing.JMenu ) ) {
+ name: "menu2"
+ "text": "Some text"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 2 5"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label4"
+ "text": "JMenuItem:"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 6"
+ } )
+ add( new FormComponent( "javax.swing.JMenuItem" ) {
+ name: "menuItem1"
+ "text": "Some Bold Text"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 6"
+ } )
+ add( new FormComponent( "javax.swing.JMenuItem" ) {
+ name: "menuItem2"
+ "text": "Some text"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 2 6"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label9"
+ "text": "JCheckBoxMenuItem:"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 7"
+ } )
+ add( new FormComponent( "javax.swing.JCheckBoxMenuItem" ) {
+ name: "checkBoxMenuItem1"
+ "text": "Some Bold Text"
+ "selected": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 7"
+ } )
+ add( new FormComponent( "javax.swing.JCheckBoxMenuItem" ) {
+ name: "checkBoxMenuItem2"
+ "text": "Some text"
+ "selected": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 2 7"
+ } )
+ add( new FormComponent( "javax.swing.JLabel" ) {
+ name: "label10"
+ "text": "JRadioButtonMenuItem:"
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 8"
+ } )
+ add( new FormComponent( "javax.swing.JRadioButtonMenuItem" ) {
+ name: "radioButtonMenuItem1"
+ "text": "Some Bold Text"
+ "selected": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 1 8"
+ } )
+ add( new FormComponent( "javax.swing.JRadioButtonMenuItem" ) {
+ name: "radioButtonMenuItem2"
+ "text": "Some text"
+ "selected": true
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 2 8"
+ } )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 4 0 1 3,aligny top,growy 0"
+ } )
add( new FormComponent( "javax.swing.JLabel" ) {
name: "label1"
"text": "HTML
Sample content
text with linkHeader 1
Header 2
Header 3
Header 4
Header 5
Header 6
Paragraph
"
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatPaintingStringTest.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatPaintingStringTest.java
new file mode 100644
index 00000000..60c6246b
--- /dev/null
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatPaintingStringTest.java
@@ -0,0 +1,249 @@
+/*
+ * Copyright 2020 FormDev Software GmbH
+ *
+ * Licensed 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
+ *
+ * https://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.
+ */
+
+package com.formdev.flatlaf.testing;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.FontMetrics;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.Insets;
+import java.awt.geom.AffineTransform;
+import javax.swing.*;
+import javax.swing.border.EmptyBorder;
+import com.formdev.flatlaf.ui.FlatUIUtils;
+import com.formdev.flatlaf.util.Graphics2DProxy;
+import com.formdev.flatlaf.util.HiDPIUtils;
+import com.formdev.flatlaf.util.JavaCompatibility;
+import com.formdev.flatlaf.util.SystemInfo;
+import net.miginfocom.swing.*;
+
+/**
+ * @author Karl Tauber
+ */
+public class FlatPaintingStringTest
+ extends JPanel
+{
+ public static void main( String[] args ) {
+ System.setProperty( "flatlaf.uiScale", "1x" );
+ System.setProperty( "sun.java2d.uiScale", "1x" );
+
+ SwingUtilities.invokeLater( () -> {
+ FlatTestFrame frame = FlatTestFrame.create( args, "FlatPaintingStringTest" );
+
+ ToolTipManager.sharedInstance().setInitialDelay( 0 );
+ ToolTipManager.sharedInstance().setDismissDelay( 10000 );
+
+ frame.showFrame( FlatPaintingStringTest::new );
+ } );
+ }
+
+ FlatPaintingStringTest() {
+ initComponents();
+
+ add( new JLabel() );
+ add( new JLabel( "none" ) );
+ add( new JLabel( "flatlaf" ) );
+ add( new JLabel( "0.25*scale" ) );
+ add( new JLabel( "0.5*scale" ) );
+ if( SystemInfo.IS_JAVA_9_OR_LATER ) {
+ add( new JLabel( "0.25" ) );
+ add( new JLabel( "0.5" ) );
+ add( new JLabel( "0.625" ) );
+ add( new JLabel( "0.75" ) );
+ add( new JLabel( "0.875" ) );
+ } else {
+ add( new JLabel( "0.625*scale" ) );
+ add( new JLabel( "0.75*scale" ) );
+ add( new JLabel( "0.875*scale" ) );
+ }
+
+ YCorrectionFunction none = (g, scaleFactor) -> 0;
+ YCorrectionFunction flatlaf = (g, scaleFactor) -> {
+ return SystemInfo.IS_JAVA_9_OR_LATER
+ ? HiDPIUtils.computeTextYCorrection( g )
+ : (scaleFactor > 1 ? -(0.625f * scaleFactor) : 0);
+ };
+ YCorrectionFunction oneQSysScale = (g, scaleFactor) -> -(0.25f * scaleFactor);
+ YCorrectionFunction halfSysScale = (g, scaleFactor) -> -(0.5f * scaleFactor);
+ YCorrectionFunction fiveEightsQSysScale = (g, scaleFactor) -> -(0.625f * scaleFactor);
+ YCorrectionFunction threeQSysScale = (g, scaleFactor) -> -(0.75f * scaleFactor);
+ YCorrectionFunction sevenEightsSysScale = (g, scaleFactor) -> -(0.875f * scaleFactor);
+ YCorrectionFunction oneQ = (g, scaleFactor) -> -0.25f;
+ YCorrectionFunction half = (g, scaleFactor) -> -0.5f;
+ YCorrectionFunction fiveEights = (g, scaleFactor) -> -0.625f;
+ YCorrectionFunction threeQ = (g, scaleFactor) -> -0.75f;
+ YCorrectionFunction sevenEights = (g, scaleFactor) -> -0.875f;
+
+ float[] scaleFactors = new float[] { 1f, 1.25f, 1.5f, 1.75f, 2f, 2.25f, 2.5f, 3f, 3.5f, 4f };
+
+ for( float scaleFactor : scaleFactors ) {
+ add( new JLabel( String.valueOf( scaleFactor ) ), "newLine" );
+
+ add( scaleFactor, none );
+ add( scaleFactor, flatlaf );
+ add( scaleFactor, oneQSysScale );
+ add( scaleFactor, halfSysScale );
+ if( SystemInfo.IS_JAVA_9_OR_LATER ) {
+ add( scaleFactor, oneQ );
+ add( scaleFactor, half );
+ add( scaleFactor, fiveEights );
+ add( scaleFactor, threeQ );
+ add( scaleFactor, sevenEights );
+ } else {
+ add( scaleFactor, fiveEightsQSysScale );
+ add( scaleFactor, threeQSysScale );
+ add( scaleFactor, sevenEightsSysScale );
+ }
+ }
+ }
+
+ private void add( float scaleFactor, YCorrectionFunction correctionFunction ) {
+ if( SystemInfo.IS_JAVA_9_OR_LATER ) {
+ add( new Painter( scaleFactor, correctionFunction, 0 ), "split 4, gapx 0 0" );
+ add( new Painter( scaleFactor, correctionFunction, 0.25f ), "gapx 0 0" );
+ add( new Painter( scaleFactor, correctionFunction, 0.5f ), "gapx 0 0" );
+ add( new Painter( scaleFactor, correctionFunction, 0.75f ), "gapx 0 0" );
+ } else
+ add( new Painter( scaleFactor, correctionFunction, 0 ) );
+ }
+
+ private void initComponents() {
+ // JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents
+
+ //======== this ========
+ setBorder(null);
+ setLayout(new MigLayout(
+ "insets dialog,hidemode 3",
+ // columns
+ "[fill]",
+ // rows
+ "[top]"));
+ // JFormDesigner - End of component initialization //GEN-END:initComponents
+ }
+
+ // JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables
+ // JFormDesigner - End of variables declaration //GEN-END:variables
+
+ private interface YCorrectionFunction {
+ float computeTextYCorrection( Graphics2D g, float scaleFactor );
+ }
+
+ //---- class Painter ------------------------------------------------------
+
+ public static class Painter
+ extends JLabel
+ {
+ private final float scaleFactor;
+ private final YCorrectionFunction correctionFunction;
+ private final float yOffset;
+
+ public Painter( float scaleFactor, YCorrectionFunction correctionFunction, float yOffset ) {
+ super( "E" );
+ this.scaleFactor = scaleFactor;
+ this.correctionFunction = correctionFunction;
+ this.yOffset = yOffset;
+ setBorder( new EmptyBorder( 2, 0, 2, 0 ) );
+
+ if( !SystemInfo.IS_JAVA_9_OR_LATER ) {
+ Font font = getFont();
+ setFont( font.deriveFont( (float) Math.round( font.getSize() * scaleFactor ) ) );
+ }
+ }
+
+ @Override
+ public Dimension getPreferredSize() {
+ Dimension size = super.getPreferredSize();
+ Insets insets = getInsets();
+ int leftRight = insets.left + insets.right;
+ return new Dimension(
+ scale( size.width -leftRight ) + leftRight,
+ scale( size.height ) );
+ }
+
+ @Override
+ protected void paintComponent( Graphics g ) {
+ Graphics2D g2 = (Graphics2D) g;
+ FlatUIUtils.setRenderingHints( g2 );
+
+ // simulate component y position at a fraction
+ if( scaleFactor > 1 && SystemInfo.IS_JAVA_9_OR_LATER )
+ g2.translate( 0, yOffset );
+
+ int width = getWidth();
+ int height = getHeight();
+ Insets insets = getInsets();
+ FontMetrics fm = getFontMetrics( getFont() );
+
+ // paint lines at 1x
+ HiDPIUtils.paintAtScale1x( g2, 0, 0, width, height,
+ (g2d, x2, y2, width2, height2, scaleFactor2) -> {
+// g.setColor( Color.blue );
+// g.drawLine( 0, 0, width2, 0 );
+// g.drawLine( 0, height2 - 1, width2, height2 - 1 );
+
+ int baseline = (int) Math.round( (insets.top + fm.getAscent()) * scaleFactor2
+ * (SystemInfo.IS_JAVA_9_OR_LATER ? scaleFactor : 1f) ) - 1;
+ int topline = height2 - baseline - 1;
+
+ g.setColor( Color.red );
+ g.drawLine( 0, baseline, width2, baseline );
+ g.drawLine( 0, topline, width2, topline );
+ } );
+
+ // move x before scaling to have same left inset at all scale factors
+ g.translate( insets.left, 0 );
+
+ // scale
+ if( SystemInfo.IS_JAVA_9_OR_LATER )
+ ((Graphics2D)g).scale( scaleFactor, scaleFactor );
+
+ // compute Y correction
+ float yCorrection = correctionFunction.computeTextYCorrection( g2, scaleFactor );
+
+ // create graphics that applies Y correction
+ Graphics2D cg = new Graphics2DProxy( g2 ) {
+ @Override
+ public void drawString( String str, int x, int y ) {
+ super.drawString( str, x, y + yCorrection );
+ }
+
+ @Override
+ public void drawString( String str, float x, float y ) {
+ super.drawString( str, x, y + yCorrection );
+ }
+ };
+
+ // draw string
+ g.setColor( getForeground() );
+ int y = insets.top + fm.getAscent();
+ JavaCompatibility.drawStringUnderlineCharAt( this, cg, "E", -1, 0, y );
+
+ // set tooltip text
+ if( getToolTipText() == null ) {
+ AffineTransform t = g2.getTransform();
+ double textY = t.getTranslateY() + (y * t.getScaleY());
+ setToolTipText( textY + " + " + yCorrection + " = " + (textY + yCorrection) );
+ }
+ }
+
+ private int scale( int value ) {
+ return SystemInfo.IS_JAVA_9_OR_LATER ? Math.round( value * scaleFactor ) : value;
+ }
+ }
+}
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatPaintingStringTest.jfd b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatPaintingStringTest.jfd
new file mode 100644
index 00000000..c5fb3d83
--- /dev/null
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatPaintingStringTest.jfd
@@ -0,0 +1,21 @@
+JFDML JFormDesigner: "7.0.2.0.298" Java: "14" encoding: "UTF-8"
+
+new FormModel {
+ contentType: "form/swing"
+ root: new FormRoot {
+ auxiliary() {
+ "JavaCodeGenerator.defaultVariableLocal": true
+ }
+ add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
+ "$layoutConstraints": "insets dialog,hidemode 3"
+ "$columnConstraints": "[fill]"
+ "$rowConstraints": "[top]"
+ } ) {
+ name: "this"
+ "border": sfield com.jformdesigner.model.FormObject NULL_VALUE
+ }, new FormLayoutConstraints( null ) {
+ "location": new java.awt.Point( 0, 0 )
+ "size": new java.awt.Dimension( 450, 300 )
+ } )
+ }
+}
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTestFrame.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTestFrame.java
index 4b7407e4..8998eedc 100644
--- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTestFrame.java
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTestFrame.java
@@ -287,7 +287,7 @@ public class FlatTestFrame
if( menuBarFactory != null )
setJMenuBar( menuBarFactory.apply( content ) );
- contentPanel.getContentPane().add( content );
+ contentPanel.add( content );
pack();
setLocationRelativeTo( null );
setVisible( true );
@@ -589,9 +589,9 @@ public class FlatTestFrame
}
private void recreateContent() {
- contentPanel.getContentPane().remove( content );
+ contentPanel.remove( content );
content = contentFactory.get();
- contentPanel.getContentPane().add( content );
+ contentPanel.add( content );
if( rightToLeftCheckBox.isSelected() )
rightToLeftChanged();
@@ -607,7 +607,7 @@ public class FlatTestFrame
private void initComponents() {
// JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents
dialogPane = new JPanel();
- contentPanel = new JRootPane();
+ contentPanel = new JPanel();
buttonBar = new JPanel();
lookAndFeelComboBox = new LookAndFeelsComboBox();
scaleFactorComboBox = new JComboBox<>();
@@ -633,8 +633,7 @@ public class FlatTestFrame
//======== contentPanel ========
{
- Container contentPanelContentPane = contentPanel.getContentPane();
- contentPanelContentPane.setLayout(new MigLayout(
+ contentPanel.setLayout(new MigLayout(
"insets 0,hidemode 3",
// columns
"[grow,fill]",
@@ -753,7 +752,7 @@ public class FlatTestFrame
// JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables
private JPanel dialogPane;
- private JRootPane contentPanel;
+ private JPanel contentPanel;
private JPanel buttonBar;
private LookAndFeelsComboBox lookAndFeelComboBox;
private JComboBox scaleFactorComboBox;
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTestFrame.jfd b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTestFrame.jfd
index 1dbbf02e..d8547776 100644
--- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTestFrame.jfd
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTestFrame.jfd
@@ -1,4 +1,4 @@
-JFDML JFormDesigner: "7.0.1.0.272" Java: "13.0.2" encoding: "UTF-8"
+JFDML JFormDesigner: "7.0.2.0.298" Java: "13.0.2" encoding: "UTF-8"
new FormModel {
contentType: "form/swing"
@@ -10,7 +10,7 @@ new FormModel {
"defaultCloseOperation": 2
add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class java.awt.BorderLayout ) ) {
name: "dialogPane"
- add( new FormContainer( "javax.swing.JRootPane", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
+ add( new FormContainer( "javax.swing.JPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
"$layoutConstraints": "insets 0,hidemode 3"
"$columnConstraints": "[grow,fill]"
"$rowConstraints": "[grow,fill]"
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/glazedlists/FlatGlazedListsTest.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/glazedlists/FlatGlazedListsTest.java
new file mode 100644
index 00000000..cc6c1414
--- /dev/null
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/glazedlists/FlatGlazedListsTest.java
@@ -0,0 +1,157 @@
+/*
+ * Copyright 2019 FormDev Software GmbH
+ *
+ * Licensed 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.
+ */
+
+package com.formdev.flatlaf.testing.glazedlists;
+
+import java.util.Comparator;
+import javax.swing.*;
+import com.formdev.flatlaf.testing.*;
+import com.formdev.flatlaf.testing.FlatTestFrame;
+import ca.odell.glazedlists.BasicEventList;
+import ca.odell.glazedlists.EventList;
+import ca.odell.glazedlists.SortedList;
+import ca.odell.glazedlists.gui.TableFormat;
+import ca.odell.glazedlists.swing.AdvancedTableModel;
+import ca.odell.glazedlists.swing.GlazedListsSwing;
+import ca.odell.glazedlists.swing.TableComparatorChooser;
+import net.miginfocom.swing.*;
+
+/**
+ * @author Karl Tauber
+ */
+public class FlatGlazedListsTest
+ extends FlatTestPanel
+{
+ public static void main( String[] args ) {
+ SwingUtilities.invokeLater( () -> {
+ FlatTestFrame frame = FlatTestFrame.create( args, "FlatGlazedListsTest" );
+ frame.showFrame( FlatGlazedListsTest::new );
+ } );
+ }
+
+ FlatGlazedListsTest() {
+ initComponents();
+
+ EventList- itemEventList = new BasicEventList<>();
+ itemEventList.add( new Item( "item 1", "item 1b", "January", 123, null ) );
+ itemEventList.add( new Item( "item 2", "item 2b", "February", 456, true ) );
+ itemEventList.add( new Item( "item 3", null, "March", null, false ) );
+ itemEventList.add( new Item( "item 4", null, "April", 234, true ) );
+ itemEventList.add( new Item( "item 5", null, "May", null, false ) );
+ itemEventList.add( new Item( "item 6", null, "June", null, null ) );
+ itemEventList.add( new Item( "item 7", null, "July", null, null ) );
+ itemEventList.add( new Item( "item 8", null, "August", null, null ) );
+ itemEventList.add( new Item( "item 9", null, "September", null, null ) );
+ itemEventList.add( new Item( "item 10", null, "October", null, null ) );
+ itemEventList.add( new Item( "item 11", null, "November", null, null ) );
+ itemEventList.add( new Item( "item 12", null, "December", null, null ) );
+
+ Comparator
- itemComparator = Comparator.comparing( Item::getName );
+ SortedList
- sortedItems = new SortedList<>( itemEventList, itemComparator );
+ AdvancedTableModel
- tableModel = GlazedListsSwing.eventTableModelWithThreadProxyList( sortedItems, new ItemTableFormat() );
+ itemsTable.setModel( tableModel );
+ TableComparatorChooser
- tableComparatorChooser = TableComparatorChooser.install(
+ itemsTable, sortedItems, TableComparatorChooser.MULTIPLE_COLUMN_MOUSE );
+ tableComparatorChooser.appendComparator( 0, 0, false );
+
+ TableComparatorChooser.setIconPath( "resources/windowsxp" );
+ }
+
+ private void initComponents() {
+ // JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents
+ scrollPane1 = new JScrollPane();
+ itemsTable = new JTable();
+
+ //======== this ========
+ setLayout(new MigLayout(
+ "insets dialog,hidemode 3",
+ // columns
+ "[grow,fill]",
+ // rows
+ "[grow,fill]"));
+
+ //======== scrollPane1 ========
+ {
+ scrollPane1.setViewportView(itemsTable);
+ }
+ add(scrollPane1, "cell 0 0,growx,width 300");
+ // JFormDesigner - End of component initialization //GEN-END:initComponents
+ }
+
+ // JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables
+ private JScrollPane scrollPane1;
+ private JTable itemsTable;
+ // JFormDesigner - End of variables declaration //GEN-END:variables
+
+ //---- class Item ---------------------------------------------------------
+
+ private static class Item
+ {
+ final String name;
+ final String desc;
+ final String month;
+ final Integer number;
+ final Boolean bool;
+
+ Item( String name, String desc, String month, Integer number, Boolean bool ) {
+ this.name = name;
+ this.desc = desc;
+ this.month = month;
+ this.number = number;
+ this.bool = bool;
+ }
+
+ String getName() {
+ return name;
+ }
+ }
+
+ //---- class ItemTableFormat ----------------------------------------------
+
+ private static class ItemTableFormat
+ implements TableFormat
-
+ {
+ private static String[] COLUMN_NAMES = {
+ "Name",
+ "Description",
+ "Month",
+ "Integer",
+ "Boolean",
+ };
+
+ @Override
+ public int getColumnCount() {
+ return COLUMN_NAMES.length;
+ }
+
+ @Override
+ public String getColumnName( int column ) {
+ return COLUMN_NAMES[column];
+ }
+
+ @Override
+ public Object getColumnValue( Item item, int column ) {
+ switch( column ) {
+ case 0: return item.name;
+ case 1: return item.desc;
+ case 2: return item.month;
+ case 3: return item.number;
+ case 4: return item.bool;
+ }
+ throw new IllegalStateException();
+ }
+ }
+}
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/glazedlists/FlatGlazedListsTest.jfd b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/glazedlists/FlatGlazedListsTest.jfd
new file mode 100644
index 00000000..02c995cf
--- /dev/null
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/glazedlists/FlatGlazedListsTest.jfd
@@ -0,0 +1,34 @@
+JFDML JFormDesigner: "7.0.2.0.298" Java: "13.0.2" encoding: "UTF-8"
+
+new FormModel {
+ contentType: "form/swing"
+ root: new FormRoot {
+ auxiliary() {
+ "JavaCodeGenerator.defaultVariableLocal": true
+ }
+ add( new FormContainer( "com.formdev.flatlaf.testing.FlatTestPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
+ "$layoutConstraints": "insets dialog,hidemode 3"
+ "$columnConstraints": "[grow,fill]"
+ "$rowConstraints": "[grow,fill]"
+ } ) {
+ name: "this"
+ add( new FormContainer( "javax.swing.JScrollPane", new FormLayoutManager( class javax.swing.JScrollPane ) ) {
+ name: "scrollPane1"
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ add( new FormComponent( "javax.swing.JTable" ) {
+ name: "itemsTable"
+ auxiliary() {
+ "JavaCodeGenerator.variableLocal": false
+ }
+ } )
+ }, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
+ "value": "cell 0 0,growx,width 300"
+ } )
+ }, new FormLayoutConstraints( null ) {
+ "location": new java.awt.Point( 0, 0 )
+ "size": new java.awt.Dimension( 500, 500 )
+ } )
+ }
+}
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsDump.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsDump.java
index c44ff61a..53a01ecf 100644
--- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsDump.java
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsDump.java
@@ -36,6 +36,8 @@ import java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
+import java.util.Objects;
+import java.util.TreeSet;
import java.util.function.Predicate;
import javax.swing.Icon;
import javax.swing.ImageIcon;
@@ -89,9 +91,11 @@ public class UIDefaultsDump
dump( FlatLightLaf.class.getName(), dir );
dump( FlatDarkLaf.class.getName(), dir );
-// dump( FlatIntelliJLaf.class.getName(), dir );
-// dump( FlatDarculaLaf.class.getName(), dir );
-//
+ if( SystemInfo.IS_WINDOWS ) {
+ dump( FlatIntelliJLaf.class.getName(), dir );
+ dump( FlatDarculaLaf.class.getName(), dir );
+ }
+
// dump( MyBasicLookAndFeel.class.getName(), dir );
// dump( MetalLookAndFeel.class.getName(), dir );
// dump( NimbusLookAndFeel.class.getName(), dir );
@@ -170,14 +174,20 @@ public class UIDefaultsDump
: ((SystemInfo.IS_LINUX && lookAndFeel instanceof FlatLaf)
? "-linux"
: "");
+ String javaVersion = System.getProperty( "java.version" );
File file = new File( dir, name + nameSuffix + "_"
- + System.getProperty( "java.version" ) + osSuffix + ".txt" );
+ + javaVersion + osSuffix + ".txt" );
// build differences
String content;
- if( !osSuffix.isEmpty() && nameSuffix.isEmpty() ) {
- File origFile = new File( dir, name + nameSuffix + "_"
- + System.getProperty( "java.version" ) + ".txt" );
+ File origFile = null;
+ if( !osSuffix.isEmpty() && nameSuffix.isEmpty() )
+ origFile = new File( dir, name + nameSuffix + "_" + javaVersion + ".txt" );
+ else if( lookAndFeel instanceof FlatIntelliJLaf && SystemInfo.IS_WINDOWS )
+ origFile = new File( dir, "FlatLightLaf_" + javaVersion + ".txt" );
+ else if( lookAndFeel instanceof FlatDarculaLaf && SystemInfo.IS_WINDOWS )
+ origFile = new File( dir, "FlatDarkLaf_" + javaVersion + ".txt" );
+ if( origFile != null ) {
try {
Map defaults1 = parse( new FileReader( origFile ) );
Map defaults2 = parse( new StringReader( stringWriter.toString() ) );
@@ -200,29 +210,33 @@ public class UIDefaultsDump
}
private static String diff( Map defaults1, Map defaults2 ) {
- defaults1 = new LinkedHashMap<>( defaults1 );
+ TreeSet keys = new TreeSet<>();
+ keys.addAll( defaults1.keySet() );
+ keys.addAll( defaults2.keySet() );
StringBuilder buf = new StringBuilder( 10000 );
- for( Map.Entry e : defaults2.entrySet() ) {
- String key = e.getKey();
- String value2 = e.getValue();
- String value1 = defaults1.remove( key );
- if( !value2.equals( value1 ) ) {
- if( value1 != null )
- buf.append( "- " ).append( key ).append( value1 ).append( '\n' );
- buf.append( "+ " ).append( key ).append( value2 ).append( '\n' );
- buf.append( '\n' );
- }
- }
- for( Map.Entry e : defaults1.entrySet() ) {
- buf.append( "- " ).append( e.getKey() ).append( e.getValue() ).append( '\n' );
- buf.append( '\n' );
- }
+ // diff header values
+ for( String key : new String[] { "Class", "ID", "Name", "Java", "OS" } )
+ diffValue( buf, key, defaults1.remove( key ), defaults2.remove( key ) );
+
+ // diff values
+ for( String key : keys )
+ diffValue( buf, key, defaults1.get( key ), defaults2.get( key ) );
return buf.toString();
}
+ private static void diffValue( StringBuilder buf, String key, String value1, String value2 ) {
+ if( !Objects.equals( value1, value2 ) ) {
+ if( value1 != null )
+ buf.append( "- " ).append( key ).append( value1 ).append( '\n' );
+ if( value2 != null )
+ buf.append( "+ " ).append( key ).append( value2 ).append( '\n' );
+ buf.append( '\n' );
+ }
+ }
+
private static Map parse( Reader in ) throws IOException {
Map defaults = new LinkedHashMap<>();
try( BufferedReader reader = new BufferedReader( in ) ) {
diff --git a/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/FlatTestLaf.properties b/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/FlatTestLaf.properties
index ae8aa809..70a76ca6 100644
--- a/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/FlatTestLaf.properties
+++ b/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/FlatTestLaf.properties
@@ -97,21 +97,30 @@ Button.toolbar.pressedBackground=#eeeeee
#---- CheckBox ----
+# enabled
CheckBox.icon.borderColor=#878787
-CheckBox.icon.disabledBorderColor=#BDBDBD
-CheckBox.icon.selectedBorderColor=#4982CC
-CheckBox.icon.focusedBorderColor=#7B9FC7
-CheckBox.icon.hoverBorderColor=#ff0000
-CheckBox.icon.selectedFocusedBorderColor=#ACCFF7
CheckBox.icon.background=#FFFFFF
-CheckBox.icon.disabledBackground=#F2F2F2
-CheckBox.icon.focusedBackground=#00ffff
-CheckBox.icon.hoverBackground=#ffff00
-CheckBox.icon.pressedBackground=#FFC800
+CheckBox.icon.selectedBorderColor=#4982CC
CheckBox.icon.selectedBackground=#4D89C9
CheckBox.icon.checkmarkColor=#FFFFFF
+
+# disabled
+CheckBox.icon.disabledBorderColor=#BDBDBD
+CheckBox.icon.disabledBackground=#F2F2F2
CheckBox.icon.disabledCheckmarkColor=#ABABAB
+# focused
+CheckBox.icon.focusedBorderColor=#7B9FC7
+CheckBox.icon.focusedBackground=#00ffff
+CheckBox.icon.selectedFocusedBorderColor=#ACCFF7
+
+# hover
+CheckBox.icon.hoverBorderColor=#ff0000
+CheckBox.icon.hoverBackground=#ffff00
+
+# pressed
+CheckBox.icon.pressedBackground=#FFC800
+
#---- ComboBox ----
diff --git a/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/uidefaults/FlatDarculaLaf_1.8.0_202.txt b/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/uidefaults/FlatDarculaLaf_1.8.0_202.txt
new file mode 100644
index 00000000..d4e91e74
--- /dev/null
+++ b/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/uidefaults/FlatDarculaLaf_1.8.0_202.txt
@@ -0,0 +1,63 @@
+- Class com.formdev.flatlaf.FlatDarkLaf
++ Class com.formdev.flatlaf.FlatDarculaLaf
+
+- ID FlatLaf - FlatLaf Dark
++ ID FlatLaf - FlatLaf Darcula
+
+- Name FlatLaf Dark
++ Name FlatLaf Darcula
+
+- Button.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatButtonBorder [UI]
++ Button.border [lazy] 3,3,3,3 false com.formdev.flatlaf.ui.FlatButtonBorder [UI]
+
+- ComboBox.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatRoundBorder [UI]
++ ComboBox.border [lazy] 3,3,3,3 false com.formdev.flatlaf.ui.FlatRoundBorder [UI]
+
+- Component.arrowType chevron
++ Component.arrowType triangle
+
+- Component.focusWidth 0
++ Component.focusWidth 2
+
+- Component.innerFocusWidth 0.5
++ Component.innerFocusWidth 0
+
+- Component.innerOutlineWidth 1.0
++ Component.innerOutlineWidth 0
+
+- FormattedTextField.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatTextBorder [UI]
++ FormattedTextField.border [lazy] 3,3,3,3 false com.formdev.flatlaf.ui.FlatTextBorder [UI]
+
+- HelpButton.icon [lazy] 22,22 com.formdev.flatlaf.icons.FlatHelpButtonIcon [UI]
++ HelpButton.icon [lazy] 26,26 com.formdev.flatlaf.icons.FlatHelpButtonIcon [UI]
+
+- JXDatePicker.border [lazy] 1,1,1,1 false com.formdev.flatlaf.swingx.ui.FlatDatePickerBorder [UI]
++ JXDatePicker.border [lazy] 3,3,3,3 false com.formdev.flatlaf.swingx.ui.FlatDatePickerBorder [UI]
+
+- PasswordField.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatTextBorder [UI]
++ PasswordField.border [lazy] 3,3,3,3 false com.formdev.flatlaf.ui.FlatTextBorder [UI]
+
+- ProgressBar.foreground #4a88c7 javax.swing.plaf.ColorUIResource [UI]
++ ProgressBar.foreground #a0a0a0 javax.swing.plaf.ColorUIResource [UI]
+
+- ProgressBar.selectionForeground #bbbbbb javax.swing.plaf.ColorUIResource [UI]
++ ProgressBar.selectionForeground #3c3f41 javax.swing.plaf.ColorUIResource [UI]
+
+- RadioButton.icon.centerDiameter 8
++ RadioButton.icon.centerDiameter 5
+
+- ScrollPane.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatBorder [UI]
++ ScrollPane.border [lazy] 3,3,3,3 false com.formdev.flatlaf.ui.FlatBorder [UI]
+
+- Spinner.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatRoundBorder [UI]
++ Spinner.border [lazy] 3,3,3,3 false com.formdev.flatlaf.ui.FlatRoundBorder [UI]
+
+- Table.scrollPaneBorder [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatBorder [UI]
++ Table.scrollPaneBorder [lazy] 3,3,3,3 false com.formdev.flatlaf.ui.FlatBorder [UI]
+
+- TextField.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatTextBorder [UI]
++ TextField.border [lazy] 3,3,3,3 false com.formdev.flatlaf.ui.FlatTextBorder [UI]
+
+- ToggleButton.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatButtonBorder [UI]
++ ToggleButton.border [lazy] 3,3,3,3 false com.formdev.flatlaf.ui.FlatButtonBorder [UI]
+
diff --git a/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/uidefaults/FlatDarkLaf_1.8.0_202.txt b/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/uidefaults/FlatDarkLaf_1.8.0_202.txt
index 13f547e7..2c0523a2 100644
--- a/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/uidefaults/FlatDarkLaf_1.8.0_202.txt
+++ b/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/uidefaults/FlatDarkLaf_1.8.0_202.txt
@@ -77,6 +77,7 @@ Button.default.hoverBackground #3b5f8b com.formdev.flatlaf.util.DerivedColor
Button.default.hoverBorderColor #537699 javax.swing.plaf.ColorUIResource [UI]
Button.default.pressedBackground #3f6796 com.formdev.flatlaf.util.DerivedColor [UI] lighten(6% autoInverse)
Button.defaultButtonFollowsFocus true
+Button.disabledBackground #3c3f41 javax.swing.plaf.ColorUIResource [UI]
Button.disabledBorderColor #5e6060 javax.swing.plaf.ColorUIResource [UI]
Button.disabledText #777777 javax.swing.plaf.ColorUIResource [UI]
Button.focusedBorderColor #466d94 javax.swing.plaf.ColorUIResource [UI]
@@ -129,6 +130,11 @@ CheckBox.icon.selectedBorderColor #6b6b6b javax.swing.plaf.ColorUIResource [U
CheckBox.icon.selectedFocusedBorderColor #466d94 javax.swing.plaf.ColorUIResource [UI]
CheckBox.icon [lazy] 15,15 com.formdev.flatlaf.icons.FlatCheckBoxIcon [UI]
CheckBox.iconTextGap 4
+CheckBox.icon[filled].checkmarkColor #43494a javax.swing.plaf.ColorUIResource [UI]
+CheckBox.icon[filled].selectedBackground #a7a7a7 javax.swing.plaf.ColorUIResource [UI]
+CheckBox.icon[filled].selectedBorderColor #a7a7a7 javax.swing.plaf.ColorUIResource [UI]
+CheckBox.icon[filled].selectedHoverBackground #9f9f9f javax.swing.plaf.ColorUIResource [UI]
+CheckBox.icon[filled].selectedPressedBackground #989898 javax.swing.plaf.ColorUIResource [UI]
CheckBox.margin 2,2,2,2 javax.swing.plaf.InsetsUIResource [UI]
CheckBox.rollover true
CheckBox.textIconGap 4
@@ -183,6 +189,7 @@ ComboBox.buttonEditableBackground #404445 javax.swing.plaf.ColorUIResource [U
ComboBox.buttonHighlight #242424 javax.swing.plaf.ColorUIResource [UI]
ComboBox.buttonHoverArrowColor #bbbbbb javax.swing.plaf.ColorUIResource [UI]
ComboBox.buttonShadow #646464 javax.swing.plaf.ColorUIResource [UI]
+ComboBox.buttonStyle auto
ComboBox.disabledBackground #3c3f41 javax.swing.plaf.ColorUIResource [UI]
ComboBox.disabledForeground #777777 javax.swing.plaf.ColorUIResource [UI]
ComboBox.editorColumns 0
@@ -703,6 +710,7 @@ RadioButton.highlight #242424 javax.swing.plaf.ColorUIResource [UI]
RadioButton.icon.centerDiameter 8
RadioButton.icon [lazy] 15,15 com.formdev.flatlaf.icons.FlatRadioButtonIcon [UI]
RadioButton.iconTextGap 4
+RadioButton.icon[filled].centerDiameter 5
RadioButton.light #313131 javax.swing.plaf.ColorUIResource [UI]
RadioButton.margin 2,2,2,2 javax.swing.plaf.InsetsUIResource [UI]
RadioButton.rollover true
@@ -766,11 +774,15 @@ ScrollBar.background #3c3f41 javax.swing.plaf.ColorUIResource [UI]
ScrollBar.buttonArrowColor #9a9da1 javax.swing.plaf.ColorUIResource [UI]
ScrollBar.buttonDisabledArrowColor #585858 javax.swing.plaf.ColorUIResource [UI]
ScrollBar.foreground #bbbbbb javax.swing.plaf.ColorUIResource [UI]
+ScrollBar.hoverButtonBackground #484c4e com.formdev.flatlaf.util.DerivedColor [UI] lighten(5%)
ScrollBar.hoverThumbColor #6e767a com.formdev.flatlaf.util.DerivedColor [UI] lighten(10%)
ScrollBar.hoverThumbWithTrack false
ScrollBar.hoverTrackColor #484c4f com.formdev.flatlaf.util.DerivedColor [UI] lighten(4%)
ScrollBar.maximumThumbSize 4096,4096 javax.swing.plaf.DimensionUIResource [UI]
ScrollBar.minimumThumbSize 8,8 javax.swing.plaf.DimensionUIResource [UI]
+ScrollBar.pressedButtonBackground #54595c com.formdev.flatlaf.util.DerivedColor [UI] lighten(10%)
+ScrollBar.pressedThumbColor #7a8387 com.formdev.flatlaf.util.DerivedColor [UI] lighten(15%)
+ScrollBar.pressedThumbWithTrack false
ScrollBar.showButtons false
ScrollBar.squareButtons false
ScrollBar.thumb #565c5f com.formdev.flatlaf.util.DerivedColor [UI] lighten(10%)
@@ -843,6 +855,7 @@ Spinner.buttonArrowColor #9a9da1 javax.swing.plaf.ColorUIResource [UI]
Spinner.buttonBackground #404445 javax.swing.plaf.ColorUIResource [UI]
Spinner.buttonDisabledArrowColor #585858 javax.swing.plaf.ColorUIResource [UI]
Spinner.buttonHoverArrowColor #bbbbbb javax.swing.plaf.ColorUIResource [UI]
+Spinner.buttonStyle button
Spinner.disabledBackground #3c3f41 javax.swing.plaf.ColorUIResource [UI]
Spinner.disabledForeground #777777 javax.swing.plaf.ColorUIResource [UI]
Spinner.editorAlignment 11
@@ -1085,6 +1098,7 @@ TitledPanelUI com.formdev.flatlaf.swingx.ui.FlatTitledPanelUI
ToggleButton.background #4c5052 javax.swing.plaf.ColorUIResource [UI]
ToggleButton.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatButtonBorder [UI]
ToggleButton.darkShadow #7e7e7e javax.swing.plaf.ColorUIResource [UI]
+ToggleButton.disabledBackground #3c3f41 javax.swing.plaf.ColorUIResource [UI]
ToggleButton.disabledSelectedBackground #53585a com.formdev.flatlaf.util.DerivedColor [UI] lighten(3% autoInverse)
ToggleButton.disabledText #777777 javax.swing.plaf.ColorUIResource [UI]
ToggleButton.font [active] $defaultFont [UI]
diff --git a/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/uidefaults/FlatIntelliJLaf_1.8.0_202.txt b/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/uidefaults/FlatIntelliJLaf_1.8.0_202.txt
new file mode 100644
index 00000000..e3d5921f
--- /dev/null
+++ b/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/uidefaults/FlatIntelliJLaf_1.8.0_202.txt
@@ -0,0 +1,88 @@
+- Class com.formdev.flatlaf.FlatLightLaf
++ Class com.formdev.flatlaf.FlatIntelliJLaf
+
+- ID FlatLaf - FlatLaf Light
++ ID FlatLaf - FlatLaf IntelliJ
+
+- Name FlatLaf Light
++ Name FlatLaf IntelliJ
+
+- Button.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatButtonBorder [UI]
++ Button.border [lazy] 3,3,3,3 false com.formdev.flatlaf.ui.FlatButtonBorder [UI]
+
+- Button.default.background #ffffff javax.swing.plaf.ColorUIResource [UI]
++ Button.default.background #4d8ac9 javax.swing.plaf.ColorUIResource [UI]
+
++ Button.default.boldText true
+
+- Button.default.borderColor #4f9ee3 javax.swing.plaf.ColorUIResource [UI]
++ Button.default.borderColor #3d75b2 javax.swing.plaf.ColorUIResource [UI]
+
+- Button.default.borderWidth 2
++ Button.default.borderWidth 1
+
+- Button.default.focusedBackground #e3f1fa javax.swing.plaf.ColorUIResource [UI]
+
+- Button.default.focusedBorderColor #87afda javax.swing.plaf.ColorUIResource [UI]
++ Button.default.focusedBorderColor #a9c9f5 javax.swing.plaf.ColorUIResource [UI]
+
+- Button.default.foreground #000000 javax.swing.plaf.ColorUIResource [UI]
++ Button.default.foreground #ffffff javax.swing.plaf.ColorUIResource [UI]
+
+- Button.default.hoverBorderColor #87afda javax.swing.plaf.ColorUIResource [UI]
++ Button.default.hoverBorderColor #a9c9f5 javax.swing.plaf.ColorUIResource [UI]
+
+- Button.focusedBackground #e3f1fa javax.swing.plaf.ColorUIResource [UI]
+
+- CheckBox.icon.focusedBackground #e3f1fa javax.swing.plaf.ColorUIResource [UI]
+
++ CheckBox.icon.style filled
+
++ CheckBox.icon[filled].focusWidth 2
+
+- CheckBox.icon[filled].selectedFocusedCheckmarkColor #e3f1fa javax.swing.plaf.ColorUIResource [UI]
+
+- ComboBox.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatRoundBorder [UI]
++ ComboBox.border [lazy] 3,3,3,3 false com.formdev.flatlaf.ui.FlatRoundBorder [UI]
+
+- Component.arrowType chevron
++ Component.arrowType triangle
+
+- Component.focusWidth 0
++ Component.focusWidth 2
+
+- Component.innerFocusWidth 0.5
++ Component.innerFocusWidth 0
+
+- Component.innerOutlineWidth 1.0
++ Component.innerOutlineWidth 0
+
+- FormattedTextField.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatTextBorder [UI]
++ FormattedTextField.border [lazy] 3,3,3,3 false com.formdev.flatlaf.ui.FlatTextBorder [UI]
+
+- HelpButton.focusedBackground #e3f1fa javax.swing.plaf.ColorUIResource [UI]
+
+- HelpButton.icon [lazy] 22,22 com.formdev.flatlaf.icons.FlatHelpButtonIcon [UI]
++ HelpButton.icon [lazy] 26,26 com.formdev.flatlaf.icons.FlatHelpButtonIcon [UI]
+
+- JXDatePicker.border [lazy] 1,1,1,1 false com.formdev.flatlaf.swingx.ui.FlatDatePickerBorder [UI]
++ JXDatePicker.border [lazy] 3,3,3,3 false com.formdev.flatlaf.swingx.ui.FlatDatePickerBorder [UI]
+
+- PasswordField.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatTextBorder [UI]
++ PasswordField.border [lazy] 3,3,3,3 false com.formdev.flatlaf.ui.FlatTextBorder [UI]
+
+- ScrollPane.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatBorder [UI]
++ ScrollPane.border [lazy] 3,3,3,3 false com.formdev.flatlaf.ui.FlatBorder [UI]
+
+- Spinner.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatRoundBorder [UI]
++ Spinner.border [lazy] 3,3,3,3 false com.formdev.flatlaf.ui.FlatRoundBorder [UI]
+
+- Table.scrollPaneBorder [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatBorder [UI]
++ Table.scrollPaneBorder [lazy] 3,3,3,3 false com.formdev.flatlaf.ui.FlatBorder [UI]
+
+- TextField.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatTextBorder [UI]
++ TextField.border [lazy] 3,3,3,3 false com.formdev.flatlaf.ui.FlatTextBorder [UI]
+
+- ToggleButton.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatButtonBorder [UI]
++ ToggleButton.border [lazy] 3,3,3,3 false com.formdev.flatlaf.ui.FlatButtonBorder [UI]
+
diff --git a/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/uidefaults/FlatLightLaf_1.8.0_202.txt b/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/uidefaults/FlatLightLaf_1.8.0_202.txt
index 9ed1bf26..66e42fde 100644
--- a/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/uidefaults/FlatLightLaf_1.8.0_202.txt
+++ b/flatlaf-testing/src/main/resources/com/formdev/flatlaf/testing/uidefaults/FlatLightLaf_1.8.0_202.txt
@@ -77,6 +77,7 @@ Button.default.hoverBackground #f7f7f7 com.formdev.flatlaf.util.DerivedColor
Button.default.hoverBorderColor #87afda javax.swing.plaf.ColorUIResource [UI]
Button.default.pressedBackground #e6e6e6 com.formdev.flatlaf.util.DerivedColor [UI] darken(10% autoInverse)
Button.defaultButtonFollowsFocus true
+Button.disabledBackground #f2f2f2 javax.swing.plaf.ColorUIResource [UI]
Button.disabledBorderColor #cfcfcf javax.swing.plaf.ColorUIResource [UI]
Button.disabledText #8c8c8c javax.swing.plaf.ColorUIResource [UI]
Button.focusedBackground #e3f1fa javax.swing.plaf.ColorUIResource [UI]
@@ -130,6 +131,14 @@ CheckBox.icon.selectedBackground #ffffff javax.swing.plaf.ColorUIResource [UI
CheckBox.icon.selectedBorderColor #b0b0b0 javax.swing.plaf.ColorUIResource [UI]
CheckBox.icon [lazy] 15,15 com.formdev.flatlaf.icons.FlatCheckBoxIcon [UI]
CheckBox.iconTextGap 4
+CheckBox.icon[filled].checkmarkColor #ffffff javax.swing.plaf.ColorUIResource [UI]
+CheckBox.icon[filled].selectedBackground #4f9ee3 javax.swing.plaf.ColorUIResource [UI]
+CheckBox.icon[filled].selectedBorderColor #4b97d9 javax.swing.plaf.ColorUIResource [UI]
+CheckBox.icon[filled].selectedFocusedBackground #4f9ee3 javax.swing.plaf.ColorUIResource [UI]
+CheckBox.icon[filled].selectedFocusedBorderColor #accff7 javax.swing.plaf.ColorUIResource [UI]
+CheckBox.icon[filled].selectedFocusedCheckmarkColor #e3f1fa javax.swing.plaf.ColorUIResource [UI]
+CheckBox.icon[filled].selectedHoverBackground #5e94ce javax.swing.plaf.ColorUIResource [UI]
+CheckBox.icon[filled].selectedPressedBackground #72a1d4 javax.swing.plaf.ColorUIResource [UI]
CheckBox.margin 2,2,2,2 javax.swing.plaf.InsetsUIResource [UI]
CheckBox.rollover true
CheckBox.textIconGap 4
@@ -184,6 +193,7 @@ ComboBox.buttonEditableBackground #fafafa javax.swing.plaf.ColorUIResource [U
ComboBox.buttonHighlight #ffffff javax.swing.plaf.ColorUIResource [UI]
ComboBox.buttonHoverArrowColor #999999 javax.swing.plaf.ColorUIResource [UI]
ComboBox.buttonShadow #c4c4c4 javax.swing.plaf.ColorUIResource [UI]
+ComboBox.buttonStyle auto
ComboBox.disabledBackground #f2f2f2 javax.swing.plaf.ColorUIResource [UI]
ComboBox.disabledForeground #8c8c8c javax.swing.plaf.ColorUIResource [UI]
ComboBox.editorColumns 0
@@ -705,6 +715,7 @@ RadioButton.highlight #ffffff javax.swing.plaf.ColorUIResource [UI]
RadioButton.icon.centerDiameter 8
RadioButton.icon [lazy] 15,15 com.formdev.flatlaf.icons.FlatRadioButtonIcon [UI]
RadioButton.iconTextGap 4
+RadioButton.icon[filled].centerDiameter 5
RadioButton.light #e3e3e3 javax.swing.plaf.ColorUIResource [UI]
RadioButton.margin 2,2,2,2 javax.swing.plaf.InsetsUIResource [UI]
RadioButton.rollover true
@@ -768,11 +779,15 @@ ScrollBar.background #f2f2f2 javax.swing.plaf.ColorUIResource [UI]
ScrollBar.buttonArrowColor #666666 javax.swing.plaf.ColorUIResource [UI]
ScrollBar.buttonDisabledArrowColor #ababab javax.swing.plaf.ColorUIResource [UI]
ScrollBar.foreground #000000 javax.swing.plaf.ColorUIResource [UI]
+ScrollBar.hoverButtonBackground #e5e5e5 com.formdev.flatlaf.util.DerivedColor [UI] darken(5%)
ScrollBar.hoverThumbColor #c3c3c3 com.formdev.flatlaf.util.DerivedColor [UI] darken(10%)
ScrollBar.hoverThumbWithTrack false
ScrollBar.hoverTrackColor #ededed com.formdev.flatlaf.util.DerivedColor [UI] darken(3%)
ScrollBar.maximumThumbSize 4096,4096 javax.swing.plaf.DimensionUIResource [UI]
ScrollBar.minimumThumbSize 8,8 javax.swing.plaf.DimensionUIResource [UI]
+ScrollBar.pressedButtonBackground #d9d9d9 com.formdev.flatlaf.util.DerivedColor [UI] darken(10%)
+ScrollBar.pressedThumbColor #a9a9a9 com.formdev.flatlaf.util.DerivedColor [UI] darken(20%)
+ScrollBar.pressedThumbWithTrack false
ScrollBar.showButtons false
ScrollBar.squareButtons false
ScrollBar.thumb #dcdcdc com.formdev.flatlaf.util.DerivedColor [UI] darken(10%)
@@ -845,6 +860,7 @@ Spinner.buttonArrowColor #666666 javax.swing.plaf.ColorUIResource [UI]
Spinner.buttonBackground #fafafa javax.swing.plaf.ColorUIResource [UI]
Spinner.buttonDisabledArrowColor #ababab javax.swing.plaf.ColorUIResource [UI]
Spinner.buttonHoverArrowColor #999999 javax.swing.plaf.ColorUIResource [UI]
+Spinner.buttonStyle button
Spinner.disabledBackground #f2f2f2 javax.swing.plaf.ColorUIResource [UI]
Spinner.disabledForeground #8c8c8c javax.swing.plaf.ColorUIResource [UI]
Spinner.editorAlignment 11
@@ -1087,6 +1103,7 @@ TitledPanelUI com.formdev.flatlaf.swingx.ui.FlatTitledPanelUI
ToggleButton.background #ffffff javax.swing.plaf.ColorUIResource [UI]
ToggleButton.border [lazy] 1,1,1,1 false com.formdev.flatlaf.ui.FlatButtonBorder [UI]
ToggleButton.darkShadow #9e9e9e javax.swing.plaf.ColorUIResource [UI]
+ToggleButton.disabledBackground #f2f2f2 javax.swing.plaf.ColorUIResource [UI]
ToggleButton.disabledSelectedBackground #dedede com.formdev.flatlaf.util.DerivedColor [UI] darken(13% autoInverse)
ToggleButton.disabledText #8c8c8c javax.swing.plaf.ColorUIResource [UI]
ToggleButton.font [active] $defaultFont [UI]
diff --git a/flatlaf-theme-editor/.settings/org.eclipse.jdt.core.prefs b/flatlaf-theme-editor/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000..4a19f363
--- /dev/null
+++ b/flatlaf-theme-editor/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,377 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false
+org.eclipse.jdt.core.formatter.align_with_spaces=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=48
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression_chain=0
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_record_components=16
+org.eclipse.jdt.core.formatter.alignment_for_relational_operator=0
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_shift_operator=0
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=33
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=33
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_record_declaration=33
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=33
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=32
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=32
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_last_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_abstract_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=0
+org.eclipse.jdt.core.formatter.blank_lines_between_statement_group_in_switch=0
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=next_line_on_wrap
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=next_line_on_wrap
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=next_line_on_wrap
+org.eclipse.jdt.core.formatter.brace_position_for_record_constructor=next_line_on_wrap
+org.eclipse.jdt.core.formatter.brace_position_for_record_declaration=next_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=next_line
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.indent_tag_description=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_between_different_tags=do not insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=80
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=1
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=1
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_record_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_record_components=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_switch_case_expressions=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_not_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_record_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert
+org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_record_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_record_components=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_switch_case_expressions=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_constructor=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_record_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_code_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_method_body_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_record_constructor_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_record_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line=one_line_never
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_after_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_code_block=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_blank_lines_before_code_block=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_record_declaration=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.text_block_indentation=0
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=false
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_relational_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_shift_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter
diff --git a/flatlaf-theme-editor/.settings/org.eclipse.jdt.ui.prefs b/flatlaf-theme-editor/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000..ef990006
--- /dev/null
+++ b/flatlaf-theme-editor/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1
+formatter_profile=_FlatLaf
+formatter_settings_version=19