Merge pull request #135 from informatik-ag-ngl/f/themes
Added CSS-based Theming Support + Basic ChatWindow Layout
This commit is contained in:
		@@ -128,3 +128,364 @@ org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
 | 
			
		||||
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
 | 
			
		||||
org.eclipse.jdt.core.compiler.release=disabled
 | 
			
		||||
org.eclipse.jdt.core.compiler.source=11
 | 
			
		||||
org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=true
 | 
			
		||||
org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=1
 | 
			
		||||
org.eclipse.jdt.core.formatter.align_type_members_on_columns=true
 | 
			
		||||
org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=true
 | 
			
		||||
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=84
 | 
			
		||||
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=80
 | 
			
		||||
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=20
 | 
			
		||||
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=80
 | 
			
		||||
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_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=84
 | 
			
		||||
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=16
 | 
			
		||||
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
 | 
			
		||||
org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
 | 
			
		||||
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
 | 
			
		||||
org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
 | 
			
		||||
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=1
 | 
			
		||||
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=1
 | 
			
		||||
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=end_of_line
 | 
			
		||||
org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
 | 
			
		||||
org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
 | 
			
		||||
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=end_of_line
 | 
			
		||||
org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
 | 
			
		||||
org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_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=true
 | 
			
		||||
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=2
 | 
			
		||||
org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
 | 
			
		||||
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=true
 | 
			
		||||
org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
 | 
			
		||||
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_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=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=do not 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=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_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=do not 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=do not insert
 | 
			
		||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
 | 
			
		||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
 | 
			
		||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
 | 
			
		||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
 | 
			
		||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
 | 
			
		||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not 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_switch=do not insert
 | 
			
		||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
 | 
			
		||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
 | 
			
		||||
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not 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=do not 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=do not 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=do not insert
 | 
			
		||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
 | 
			
		||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
 | 
			
		||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
 | 
			
		||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
 | 
			
		||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
 | 
			
		||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not 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_switch=do not insert
 | 
			
		||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
 | 
			
		||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
 | 
			
		||||
org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not 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_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_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=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=insert
 | 
			
		||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=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_switch=insert
 | 
			
		||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
 | 
			
		||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
 | 
			
		||||
org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=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=false
 | 
			
		||||
org.eclipse.jdt.core.formatter.join_wrapped_lines=true
 | 
			
		||||
org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line=one_line_if_single_item
 | 
			
		||||
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_if_empty
 | 
			
		||||
org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=true
 | 
			
		||||
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_if_single_item
 | 
			
		||||
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_always
 | 
			
		||||
org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line=one_line_if_empty
 | 
			
		||||
org.eclipse.jdt.core.formatter.keep_method_body_on_one_line=one_line_if_single_item
 | 
			
		||||
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=true
 | 
			
		||||
org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false
 | 
			
		||||
org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=true
 | 
			
		||||
org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line=one_line_never
 | 
			
		||||
org.eclipse.jdt.core.formatter.lineSplit=150
 | 
			
		||||
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=separate_lines_if_wrapped
 | 
			
		||||
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_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=true
 | 
			
		||||
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
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,6 @@
 | 
			
		||||
eclipse.preferences.version=1
 | 
			
		||||
formatter_profile=_KSKE
 | 
			
		||||
formatter_settings_version=18
 | 
			
		||||
org.eclipse.jdt.ui.ignorelowercasenames=true
 | 
			
		||||
org.eclipse.jdt.ui.importorder=java;javax;javafx;org;com;envoy;
 | 
			
		||||
org.eclipse.jdt.ui.javadoc=true
 | 
			
		||||
 
 | 
			
		||||
@@ -1,17 +0,0 @@
 | 
			
		||||
package envoy.client;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Project: <strong>envoy-client</strong><br>
 | 
			
		||||
 * File: <strong>DeveloperComments.java</strong><br>
 | 
			
		||||
 * Created: <strong>19 Apr 2020</strong><br>
 | 
			
		||||
 * 
 | 
			
		||||
 * @author Leon Hofmeister
 | 
			
		||||
 * @since Envoy Client v0.1-beta
 | 
			
		||||
 */
 | 
			
		||||
public class DeveloperComments {
 | 
			
		||||
 | 
			
		||||
	// "Schau, es hat sich behindert" - Kai, 2020
 | 
			
		||||
 | 
			
		||||
	// LEON: JFC <===> JAVA FRIED CHICKEN <=/=> Java Foundation Classes
 | 
			
		||||
	
 | 
			
		||||
}
 | 
			
		||||
@@ -46,8 +46,8 @@ public class Settings {
 | 
			
		||||
	private static Settings settings = new Settings();
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * The way to instantiate the settings.
 | 
			
		||||
	 * Is set to private to deny other instances of that object.
 | 
			
		||||
	 * The way to instantiate the settings. Is set to private to deny other
 | 
			
		||||
	 * instances of that object.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
@@ -134,6 +134,13 @@ public class Settings {
 | 
			
		||||
	 */
 | 
			
		||||
	public void setCurrentTheme(String themeName) { ((SettingsItem<String>) items.get("currentTheme")).set(themeName); }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return whether the current {@link Theme} is one of the default themes.
 | 
			
		||||
	 *         Currently checks for dark and light theme.
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public boolean isUsingDefaultTheme() { return getCurrentThemeName().equals("dark") || getCurrentThemeName().equals("light"); }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return {@code true}, if pressing the {@code Enter} key suffices to send a
 | 
			
		||||
	 *         message. Otherwise it has to be pressed in conjunction with the
 | 
			
		||||
 
 | 
			
		||||
@@ -1,12 +1,10 @@
 | 
			
		||||
package envoy.client.ui;
 | 
			
		||||
 | 
			
		||||
import java.awt.Image;
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.util.EnumMap;
 | 
			
		||||
import java.util.EnumSet;
 | 
			
		||||
 | 
			
		||||
import javax.imageio.ImageIO;
 | 
			
		||||
import javax.swing.ImageIcon;
 | 
			
		||||
import javafx.scene.image.Image;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Provides static utility methods for loading icons from the resource
 | 
			
		||||
@@ -24,7 +22,17 @@ public class IconUtil {
 | 
			
		||||
	private IconUtil() {}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Loads an icon from resource folder and scales it to a given size.
 | 
			
		||||
	 * Loads an icon from the resource folder.
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @param path the path to the icon inside the resource folder
 | 
			
		||||
	 * @return the icon
 | 
			
		||||
	 * @throws IOException if the loading process failed
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public static Image load(String path) throws IOException { return new Image(IconUtil.class.getResource(path).toExternalForm()); }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Loads an icon from the resource folder and scales it to a given size.
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @param path the path to the icon inside the resource folder
 | 
			
		||||
	 * @param size the size to scale the icon to
 | 
			
		||||
@@ -32,8 +40,8 @@ public class IconUtil {
 | 
			
		||||
	 * @throws IOException if the loading process failed
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public static ImageIcon load(String path, int size) throws IOException {
 | 
			
		||||
		return new ImageIcon(ImageIO.read(IconUtil.class.getResourceAsStream(path)).getScaledInstance(size, size, Image.SCALE_SMOOTH));
 | 
			
		||||
	public static Image load(String path, int size) throws IOException {
 | 
			
		||||
		return new Image(IconUtil.class.getResource(path).toExternalForm(), size, size, true, true);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
@@ -51,8 +59,8 @@ public class IconUtil {
 | 
			
		||||
	 * @throws IOException if the loading process failed
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public static <T extends Enum<T>> EnumMap<T, ImageIcon> loadByEnum(Class<T> enumClass, int size) throws IOException {
 | 
			
		||||
		var	icons	= new EnumMap<T, ImageIcon>(enumClass);
 | 
			
		||||
	public static <T extends Enum<T>> EnumMap<T, Image> loadByEnum(Class<T> enumClass, int size) throws IOException {
 | 
			
		||||
		var	icons	= new EnumMap<T, Image>(enumClass);
 | 
			
		||||
		var	path	= "/icons/" + enumClass.getSimpleName().toLowerCase() + "/";
 | 
			
		||||
		for (var e : EnumSet.allOf(enumClass))
 | 
			
		||||
			icons.put(e, load(path + e.toString().toLowerCase() + ".png", size));
 | 
			
		||||
 
 | 
			
		||||
@@ -10,6 +10,7 @@ import javafx.fxml.FXML;
 | 
			
		||||
import javafx.fxml.FXMLLoader;
 | 
			
		||||
import javafx.scene.control.*;
 | 
			
		||||
import javafx.scene.control.Alert.AlertType;
 | 
			
		||||
import javafx.stage.Stage;
 | 
			
		||||
 | 
			
		||||
import envoy.client.data.Cache;
 | 
			
		||||
import envoy.client.data.ClientConfig;
 | 
			
		||||
@@ -61,8 +62,8 @@ public final class LoginDialog extends Dialog<Void> {
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @param client               the client used to perform the handshake
 | 
			
		||||
	 * @param localDB              the local database used for offline login
 | 
			
		||||
	 * @param receivedMessageCache the cache storing messages received during the
 | 
			
		||||
	 *                             handshake
 | 
			
		||||
	 * @param receivedMessageCache the cache storing messages received during
 | 
			
		||||
	 *                             the handshake
 | 
			
		||||
	 * @throws IOException if an exception occurs during loading
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
@@ -75,6 +76,8 @@ public final class LoginDialog extends Dialog<Void> {
 | 
			
		||||
		loader.setController(this);
 | 
			
		||||
		final var dialogPane = loader.<DialogPane>load();
 | 
			
		||||
 | 
			
		||||
		((Stage) getDialogPane().getScene().getWindow()).getIcons().add(IconUtil.load("/icons/envoy_logo.png"));
 | 
			
		||||
		
 | 
			
		||||
		// Configure dialog buttons
 | 
			
		||||
		dialogPane.getButtonTypes().addAll(ButtonType.CLOSE, ButtonType.OK);
 | 
			
		||||
 | 
			
		||||
@@ -99,6 +102,9 @@ public final class LoginDialog extends Dialog<Void> {
 | 
			
		||||
		setOnShown(e -> { if (config.hasLoginCredentials()) performHandshake(config.getLoginCredentials()); });
 | 
			
		||||
 | 
			
		||||
		setDialogPane(dialogPane);
 | 
			
		||||
 | 
			
		||||
		// Set initial cursor
 | 
			
		||||
		Platform.runLater(userTextField::requestFocus);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@FXML
 | 
			
		||||
@@ -107,9 +113,6 @@ public final class LoginDialog extends Dialog<Void> {
 | 
			
		||||
		// Show an alert after an unsuccessful handshake
 | 
			
		||||
		eventBus.register(HandshakeRejectionEvent.class,
 | 
			
		||||
				e -> Platform.runLater(() -> { clearPasswordFields(); new Alert(AlertType.ERROR, e.get()).showAndWait(); }));
 | 
			
		||||
 | 
			
		||||
		// Set initial cursor
 | 
			
		||||
		userTextField.requestFocus();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@FXML
 | 
			
		||||
@@ -144,7 +147,8 @@ public final class LoginDialog extends Dialog<Void> {
 | 
			
		||||
				if (clientUser == null) throw new EnvoyException("Could not enter offline mode: user name unknown");
 | 
			
		||||
				client.setSender(clientUser);
 | 
			
		||||
				Platform.runLater(() -> {
 | 
			
		||||
					new Alert(AlertType.WARNING, "A connection to the server could not be established. Starting in offline mode.\n" + e)
 | 
			
		||||
					new Alert(AlertType.WARNING, "A connection to the server could not be established. Starting in offline mode.\n"
 | 
			
		||||
							+ e)
 | 
			
		||||
						.showAndWait();
 | 
			
		||||
					hide();
 | 
			
		||||
				});
 | 
			
		||||
 
 | 
			
		||||
@@ -13,17 +13,18 @@ import javafx.fxml.FXMLLoader;
 | 
			
		||||
import javafx.scene.Scene;
 | 
			
		||||
import javafx.scene.control.Alert;
 | 
			
		||||
import javafx.scene.control.Alert.AlertType;
 | 
			
		||||
import javafx.scene.image.Image;
 | 
			
		||||
import javafx.scene.layout.GridPane;
 | 
			
		||||
import javafx.scene.layout.Pane;
 | 
			
		||||
import javafx.stage.Stage;
 | 
			
		||||
 | 
			
		||||
import envoy.client.data.*;
 | 
			
		||||
import envoy.client.event.ThemeChangeEvent;
 | 
			
		||||
import envoy.client.net.Client;
 | 
			
		||||
import envoy.client.net.WriteProxy;
 | 
			
		||||
import envoy.data.Message;
 | 
			
		||||
import envoy.data.User;
 | 
			
		||||
import envoy.data.User.UserStatus;
 | 
			
		||||
import envoy.event.EventBus;
 | 
			
		||||
import envoy.exception.EnvoyException;
 | 
			
		||||
import envoy.util.EnvoyLog;
 | 
			
		||||
 | 
			
		||||
@@ -44,11 +45,11 @@ public final class Startup extends Application {
 | 
			
		||||
 | 
			
		||||
	private FXMLLoader	loader	= new FXMLLoader();
 | 
			
		||||
	private Stage		stage;
 | 
			
		||||
	private Scene		previousScene;
 | 
			
		||||
 | 
			
		||||
	private Scene previousScene;
 | 
			
		||||
 | 
			
		||||
	private static final ClientConfig	config	= ClientConfig.getInstance();
 | 
			
		||||
	private static final Logger			logger	= EnvoyLog.getLogger(Startup.class);
 | 
			
		||||
	private static final Settings		settings	= Settings.getInstance();
 | 
			
		||||
	private static final ClientConfig	config		= ClientConfig.getInstance();
 | 
			
		||||
	private static final Logger			logger		= EnvoyLog.getLogger(Startup.class);
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * {@inheritDoc}
 | 
			
		||||
@@ -58,17 +59,17 @@ public final class Startup extends Application {
 | 
			
		||||
		this.stage = stage;
 | 
			
		||||
		try {
 | 
			
		||||
			// Load the configuration from client.properties first
 | 
			
		||||
			Properties properties = new Properties();
 | 
			
		||||
			final Properties properties = new Properties();
 | 
			
		||||
			properties.load(Startup.class.getClassLoader().getResourceAsStream("client.properties"));
 | 
			
		||||
			config.load(properties);
 | 
			
		||||
 | 
			
		||||
			// Override configuration values with command line arguments
 | 
			
		||||
			String[] args = getParameters().getRaw().toArray(new String[0]);
 | 
			
		||||
			final String[] args = getParameters().getRaw().toArray(new String[0]);
 | 
			
		||||
			if (args.length > 0) config.load(args);
 | 
			
		||||
 | 
			
		||||
			// Check if all mandatory configuration values have been initialized
 | 
			
		||||
			if (!config.isInitialized()) throw new EnvoyException("Configuration is not fully initialized");
 | 
			
		||||
		} catch (Exception e) {
 | 
			
		||||
		} catch (final Exception e) {
 | 
			
		||||
			new Alert(AlertType.ERROR, "Error loading configuration values:\n" + e);
 | 
			
		||||
			e.printStackTrace();
 | 
			
		||||
			System.exit(1);
 | 
			
		||||
@@ -86,7 +87,7 @@ public final class Startup extends Application {
 | 
			
		||||
			new Alert(AlertType.WARNING, "Ignoring local database.\nMessages will not be saved!").showAndWait();
 | 
			
		||||
		} else try {
 | 
			
		||||
			localDB = new PersistentLocalDB(new File(config.getHomeDirectory(), config.getLocalDB().getPath()));
 | 
			
		||||
		} catch (IOException e3) {
 | 
			
		||||
		} catch (final IOException e3) {
 | 
			
		||||
			logger.log(Level.SEVERE, "Could not initialize local database", e3);
 | 
			
		||||
			new Alert(AlertType.ERROR, "Could not initialize local database!\n" + e3).showAndWait();
 | 
			
		||||
			System.exit(1);
 | 
			
		||||
@@ -107,9 +108,9 @@ public final class Startup extends Application {
 | 
			
		||||
		try {
 | 
			
		||||
			localDB.initializeUserStorage();
 | 
			
		||||
			localDB.loadUserData();
 | 
			
		||||
		} catch (FileNotFoundException e) {
 | 
			
		||||
		} catch (final FileNotFoundException e) {
 | 
			
		||||
			// The local database file has not yet been created, probably first login
 | 
			
		||||
		} catch (Exception e) {
 | 
			
		||||
		} catch (final Exception e) {
 | 
			
		||||
			e.printStackTrace();
 | 
			
		||||
			new Alert(AlertType.ERROR, "Error while loading local database: " + e + "\nChats will not be stored locally.").showAndWait();
 | 
			
		||||
		}
 | 
			
		||||
@@ -135,9 +136,11 @@ public final class Startup extends Application {
 | 
			
		||||
		changeScene("/fxml/ChatScene.fxml", new GridPane(), false);
 | 
			
		||||
		Platform.runLater(() -> { ((ChatSceneController) loader.getController()).initializeData(this, localDB, client, writeProxy); });
 | 
			
		||||
		stage.setTitle("Envoy");
 | 
			
		||||
		stage.getIcons().add(new Image(getClass().getResourceAsStream("/icons/envoy_logo.png")));
 | 
			
		||||
 | 
			
		||||
		stage.getIcons().add(IconUtil.load("/icons/envoy_logo.png"));
 | 
			
		||||
		stage.show();
 | 
			
		||||
		// TODO: Add capability to change custom CSS. In case of switching to a default
 | 
			
		||||
		// theme, no further action is required
 | 
			
		||||
		EventBus.getInstance().register(ThemeChangeEvent.class, theme -> applyCSS());
 | 
			
		||||
 | 
			
		||||
		// Relay unread messages from cache
 | 
			
		||||
		if (cache != null && client.isOnline()) cache.relay();
 | 
			
		||||
@@ -159,14 +162,16 @@ public final class Startup extends Application {
 | 
			
		||||
			try {
 | 
			
		||||
				// Clearing the loader so that a new Scene can be initialised
 | 
			
		||||
				loader = new FXMLLoader();
 | 
			
		||||
				var	rootNode	= loader.<T>load(getClass().getResourceAsStream(fxmlLocation));
 | 
			
		||||
				var	chatScene	= new Scene(rootNode);
 | 
			
		||||
				previousScene = (savePrevious) ? stage.getScene() : null;
 | 
			
		||||
				stage.setScene(chatScene);
 | 
			
		||||
				final var	rootNode	= loader.<T>load(getClass().getResourceAsStream(fxmlLocation));
 | 
			
		||||
				final var	scene		= new Scene(rootNode);
 | 
			
		||||
				previousScene = savePrevious ? stage.getScene() : null;
 | 
			
		||||
				// Setting the visual appearance
 | 
			
		||||
				stage.setScene(scene);
 | 
			
		||||
				applyCSS();
 | 
			
		||||
				stage.show();
 | 
			
		||||
				// return loader.getController();
 | 
			
		||||
			} catch (IOException e) {
 | 
			
		||||
			} catch (final IOException e) {
 | 
			
		||||
				new Alert(AlertType.ERROR, "The screen could not be updated due to reasons. (...bad programming...)");
 | 
			
		||||
				System.err.println("input: FXMLLocation: " + fxmlLocation);
 | 
			
		||||
				e.printStackTrace();
 | 
			
		||||
				logger.severe("Something happened (while loading the new scene from " + fxmlLocation + ")");
 | 
			
		||||
			}
 | 
			
		||||
@@ -175,7 +180,7 @@ public final class Startup extends Application {
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Changes the visual scene back to the saved value. The currently active scene
 | 
			
		||||
	 * can be saved.
 | 
			
		||||
	 * can be saved, but must not be.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param storeCurrent the old scene to store, if wanted. Can be null
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
@@ -185,8 +190,9 @@ public final class Startup extends Application {
 | 
			
		||||
			if (previousScene == null) throw new IllegalStateException("Someone tried restoring a null scene. (Something happened)");
 | 
			
		||||
			else {
 | 
			
		||||
				// switching previous and current
 | 
			
		||||
				var temp = (storeCurrent) ? stage.getScene() : null;
 | 
			
		||||
				final var temp = storeCurrent ? stage.getScene() : null;
 | 
			
		||||
				stage.setScene(previousScene);
 | 
			
		||||
				applyCSS();
 | 
			
		||||
				previousScene = temp;
 | 
			
		||||
				stage.show();
 | 
			
		||||
			}
 | 
			
		||||
@@ -199,7 +205,6 @@ public final class Startup extends Application {
 | 
			
		||||
	@Override
 | 
			
		||||
	public void stop() throws Exception {
 | 
			
		||||
		try {
 | 
			
		||||
 | 
			
		||||
			// Save Settings and PersistentLocalDB on shutdown
 | 
			
		||||
			logger.info("Closing connection...");
 | 
			
		||||
			client.close();
 | 
			
		||||
@@ -207,14 +212,11 @@ public final class Startup extends Application {
 | 
			
		||||
			logger.info("Saving local database and settings...");
 | 
			
		||||
			localDB.save();
 | 
			
		||||
			Settings.getInstance().save();
 | 
			
		||||
		} catch (Exception e) {
 | 
			
		||||
		} catch (final Exception e) {
 | 
			
		||||
			logger.log(Level.SEVERE, "Unable to save local files", e);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@SuppressWarnings("javadoc")
 | 
			
		||||
	public static void main(String[] args) { launch(args); }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return the controller of the current scene or a {@link NullPointerException}
 | 
			
		||||
	 *         if there is none
 | 
			
		||||
@@ -224,4 +226,21 @@ public final class Startup extends Application {
 | 
			
		||||
		if (loader.getController() == null) throw new NullPointerException("Cannot deliver current controller as its undefined (duh!)");
 | 
			
		||||
		else return loader.getController();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Sets the CSS files used for each scene. Should be called when the theme
 | 
			
		||||
	 * changes.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @since Envoy Client v0.1-beta
 | 
			
		||||
	 */
 | 
			
		||||
	public void applyCSS() {
 | 
			
		||||
		final var styleSheets = stage.getScene().getStylesheets();
 | 
			
		||||
		styleSheets.clear();
 | 
			
		||||
		styleSheets.add(getClass().getResource("/css/base.css").toExternalForm());
 | 
			
		||||
		styleSheets.add(getClass().getResource("/css/" + (settings.isUsingDefaultTheme() ? settings.getCurrentThemeName() : "custom") + ".css")
 | 
			
		||||
			.toExternalForm());
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@SuppressWarnings("javadoc")
 | 
			
		||||
	public static void main(String[] args) { launch(args); }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,3 @@
 | 
			
		||||
server=http://kske.feste-ip.net
 | 
			
		||||
port=43315
 | 
			
		||||
server=localhost
 | 
			
		||||
port=8080
 | 
			
		||||
localDB=.\\localDB
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								src/main/resources/css/base.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								src/main/resources/css/base.css
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
			
		||||
* {
 | 
			
		||||
	/* -fx-font: 14.0pt "Serif"; */
 | 
			
		||||
    /* -fx-background-color:#000000; */
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										0
									
								
								src/main/resources/css/custom.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								src/main/resources/css/custom.css
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										7
									
								
								src/main/resources/css/dark.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								src/main/resources/css/dark.css
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
.root{
 | 
			
		||||
	--background=#000000;
 | 
			
		||||
	background: var(--background);
 | 
			
		||||
}
 | 
			
		||||
.button{
 | 
			
		||||
	color: rgb(105,0,153);
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										0
									
								
								src/main/resources/css/light.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								src/main/resources/css/light.css
									
									
									
									
									
										Normal file
									
								
							@@ -8,41 +8,23 @@
 | 
			
		||||
<?import javafx.scene.layout.GridPane?>
 | 
			
		||||
<?import javafx.scene.layout.RowConstraints?>
 | 
			
		||||
 | 
			
		||||
<GridPane id="recipientLabel" maxHeight="-Infinity"
 | 
			
		||||
	maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity"
 | 
			
		||||
	prefHeight="400.0" prefWidth="600.0"
 | 
			
		||||
	xmlns="http://javafx.com/javafx/11.0.1"
 | 
			
		||||
	xmlns:fx="http://javafx.com/fxml/1"
 | 
			
		||||
	fx:controller="envoy.client.ui.ChatSceneController">
 | 
			
		||||
<GridPane id="recipientLabel" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="envoy.client.ui.ChatSceneController">
 | 
			
		||||
	<columnConstraints>
 | 
			
		||||
		<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0"
 | 
			
		||||
			prefWidth="100.0" />
 | 
			
		||||
		<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0"
 | 
			
		||||
			prefWidth="100.0" />
 | 
			
		||||
		<ColumnConstraints hgrow="SOMETIMES" maxWidth="161.0" minWidth="10.0" prefWidth="161.0" />
 | 
			
		||||
		<ColumnConstraints hgrow="SOMETIMES" maxWidth="393.7142639160156" minWidth="10.0" prefWidth="357.0" />
 | 
			
		||||
      <ColumnConstraints hgrow="SOMETIMES" maxWidth="195.4285888671875" minWidth="6.285736083984375" prefWidth="48.000030517578125" />
 | 
			
		||||
	</columnConstraints>
 | 
			
		||||
	<rowConstraints>
 | 
			
		||||
		<RowConstraints minHeight="10.0" prefHeight="30.0"
 | 
			
		||||
			vgrow="SOMETIMES" />
 | 
			
		||||
		<RowConstraints minHeight="10.0" prefHeight="30.0"
 | 
			
		||||
			vgrow="SOMETIMES" />
 | 
			
		||||
		<RowConstraints minHeight="10.0" prefHeight="30.0"
 | 
			
		||||
			vgrow="SOMETIMES" />
 | 
			
		||||
		<RowConstraints maxHeight="60.57145036969865" minHeight="10.0" prefHeight="18.857155936104903" vgrow="SOMETIMES" />
 | 
			
		||||
		<RowConstraints maxHeight="326.2857404436384" minHeight="10.0" prefHeight="326.2857404436384" vgrow="SOMETIMES" />
 | 
			
		||||
		<RowConstraints maxHeight="153.28569902692522" minHeight="10.0" prefHeight="36.428545270647305" vgrow="SOMETIMES" />
 | 
			
		||||
	</rowConstraints>
 | 
			
		||||
	<children>
 | 
			
		||||
		<ListView fx:id="userList" prefHeight="211.0"
 | 
			
		||||
			prefWidth="300.0" GridPane.rowIndex="1"
 | 
			
		||||
			onMouseClicked="#userListClicked" />
 | 
			
		||||
		<Label text="Select a contact to chat with" fx:id="contactLabel" />
 | 
			
		||||
		<Button fx:id="settingsButton" mnemonicParsing="false"
 | 
			
		||||
			text="Settings" GridPane.columnIndex="1"
 | 
			
		||||
			onAction="#settingsButtonClicked" />
 | 
			
		||||
		<ListView fx:id="messageList" prefHeight="257.0"
 | 
			
		||||
			prefWidth="300.0" GridPane.columnIndex="1" GridPane.rowIndex="1" />
 | 
			
		||||
		<Button fx:id="postButton" mnemonicParsing="false" text="Post"
 | 
			
		||||
			GridPane.columnIndex="1" GridPane.rowIndex="2"
 | 
			
		||||
			onAction="#postButtonClicked" disable="true" />
 | 
			
		||||
		<TextArea fx:id="messageTextArea" prefHeight="200.0"
 | 
			
		||||
			prefWidth="200.0" GridPane.rowIndex="2"
 | 
			
		||||
			onKeyReleased="#messageTextUpdated" />
 | 
			
		||||
		<ListView fx:id="userList" onMouseClicked="#userListClicked" prefHeight="211.0" prefWidth="300.0" GridPane.rowIndex="1" GridPane.rowSpan="2" />
 | 
			
		||||
		<Label fx:id="contactLabel" text="Select a contact to chat with" />
 | 
			
		||||
		<Button fx:id="settingsButton" mnemonicParsing="false" onAction="#settingsButtonClicked" text="Settings" GridPane.columnIndex="2" />
 | 
			
		||||
		<ListView fx:id="messageList" prefHeight="257.0" prefWidth="155.0" GridPane.columnIndex="1" GridPane.columnSpan="2" GridPane.rowIndex="1" />
 | 
			
		||||
		<Button fx:id="postButton" disable="true" mnemonicParsing="false" onAction="#postButtonClicked" text="Post" GridPane.columnIndex="2" GridPane.rowIndex="2" />
 | 
			
		||||
		<TextArea fx:id="messageTextArea" onKeyReleased="#messageTextUpdated" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="2" />
 | 
			
		||||
	</children>
 | 
			
		||||
</GridPane>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,5 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
 | 
			
		||||
<?import javafx.scene.control.Button?>
 | 
			
		||||
<?import javafx.scene.control.CheckBox?>
 | 
			
		||||
<?import javafx.scene.control.DialogPane?>
 | 
			
		||||
<?import javafx.scene.control.Label?>
 | 
			
		||||
@@ -8,18 +7,13 @@
 | 
			
		||||
<?import javafx.scene.control.TextField?>
 | 
			
		||||
<?import javafx.scene.layout.ColumnConstraints?>
 | 
			
		||||
<?import javafx.scene.layout.GridPane?>
 | 
			
		||||
<?import javafx.scene.layout.HBox?>
 | 
			
		||||
<?import javafx.scene.layout.RowConstraints?>
 | 
			
		||||
<?import javafx.scene.layout.VBox?>
 | 
			
		||||
<?import javafx.scene.text.Font?>
 | 
			
		||||
 | 
			
		||||
<DialogPane prefHeight="201.0" prefWidth="525.0"
 | 
			
		||||
	xmlns="http://javafx.com/javafx/11.0.1"
 | 
			
		||||
	xmlns:fx="http://javafx.com/fxml/1">
 | 
			
		||||
<DialogPane prefHeight="201.0" prefWidth="525.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1">
 | 
			
		||||
	<content>
 | 
			
		||||
		<VBox maxHeight="-Infinity" maxWidth="-Infinity"
 | 
			
		||||
			minHeight="-Infinity" minWidth="-Infinity" prefHeight="217.0"
 | 
			
		||||
			prefWidth="545.0">
 | 
			
		||||
		<VBox maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="217.0" prefWidth="545.0">
 | 
			
		||||
			<children>
 | 
			
		||||
				<Label text="User Login">
 | 
			
		||||
					<font>
 | 
			
		||||
@@ -28,34 +22,24 @@
 | 
			
		||||
				</Label>
 | 
			
		||||
				<GridPane>
 | 
			
		||||
					<columnConstraints>
 | 
			
		||||
						<ColumnConstraints hgrow="SOMETIMES"
 | 
			
		||||
							minWidth="10.0" percentWidth="40.0" prefWidth="100.0" />
 | 
			
		||||
						<ColumnConstraints hgrow="SOMETIMES"
 | 
			
		||||
							minWidth="10.0" prefWidth="100.0" />
 | 
			
		||||
						<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" percentWidth="40.0" prefWidth="100.0" />
 | 
			
		||||
						<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
 | 
			
		||||
					</columnConstraints>
 | 
			
		||||
					<rowConstraints>
 | 
			
		||||
						<RowConstraints minHeight="10.0" prefHeight="30.0"
 | 
			
		||||
							vgrow="SOMETIMES" />
 | 
			
		||||
						<RowConstraints minHeight="10.0" prefHeight="30.0"
 | 
			
		||||
							vgrow="SOMETIMES" />
 | 
			
		||||
						<RowConstraints minHeight="10.0" prefHeight="30.0"
 | 
			
		||||
							vgrow="SOMETIMES" />
 | 
			
		||||
						<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
 | 
			
		||||
						<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
 | 
			
		||||
						<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
 | 
			
		||||
					</rowConstraints>
 | 
			
		||||
					<children>
 | 
			
		||||
						<Label text="User Name:" />
 | 
			
		||||
						<Label text="Password" GridPane.rowIndex="1" />
 | 
			
		||||
						<Label fx:id="repeatPasswordLabel" text="Repeat Password:"
 | 
			
		||||
							visible="false" GridPane.rowIndex="2" />
 | 
			
		||||
						<TextField fx:id="userTextField"
 | 
			
		||||
							GridPane.columnIndex="1" />
 | 
			
		||||
						<PasswordField fx:id="passwordField"
 | 
			
		||||
							GridPane.columnIndex="1" GridPane.rowIndex="1" />
 | 
			
		||||
						<PasswordField fx:id="repeatPasswordField"
 | 
			
		||||
							visible="false" GridPane.columnIndex="1" GridPane.rowIndex="2" />
 | 
			
		||||
						<Label fx:id="repeatPasswordLabel" text="Repeat Password:" visible="false" GridPane.rowIndex="2" />
 | 
			
		||||
						<TextField fx:id="userTextField" GridPane.columnIndex="1" />
 | 
			
		||||
						<PasswordField fx:id="passwordField" GridPane.columnIndex="1" GridPane.rowIndex="1" />
 | 
			
		||||
						<PasswordField fx:id="repeatPasswordField" visible="false" GridPane.columnIndex="1" GridPane.rowIndex="2" />
 | 
			
		||||
					</children>
 | 
			
		||||
				</GridPane>
 | 
			
		||||
				<CheckBox fx:id="registerCheckBox" mnemonicParsing="false"
 | 
			
		||||
					onAction="#registerCheckboxChanged" text="Register" />
 | 
			
		||||
				<CheckBox fx:id="registerCheckBox" mnemonicParsing="false" onAction="#registerCheckboxChanged" prefHeight="17.0" prefWidth="181.0" text="Register" />
 | 
			
		||||
			</children>
 | 
			
		||||
		</VBox>
 | 
			
		||||
	</content>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user