diff --git a/features/org.eclipse.elk.algorithms.feature/feature.xml b/features/org.eclipse.elk.algorithms.feature/feature.xml index 58ce00b5f..3bf8f2b55 100644 --- a/features/org.eclipse.elk.algorithms.feature/feature.xml +++ b/features/org.eclipse.elk.algorithms.feature/feature.xml @@ -87,14 +87,14 @@ SPDX-License-Identifier: EPL-2.0 install-size="0" version="0.0.0" unpack="false"/> - + - + - + + + diff --git a/plugins/org.eclipse.elk.alg.indentedtree/.classpath b/plugins/org.eclipse.elk.alg.indentedtree/.classpath new file mode 100644 index 000000000..7359b62f7 --- /dev/null +++ b/plugins/org.eclipse.elk.alg.indentedtree/.classpath @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/plugins/org.eclipse.elk.alg.indentedtree/.project b/plugins/org.eclipse.elk.alg.indentedtree/.project new file mode 100644 index 000000000..ce21aecbc --- /dev/null +++ b/plugins/org.eclipse.elk.alg.indentedtree/.project @@ -0,0 +1,40 @@ + + + org.eclipse.elk.alg.indentedtree + + + + + + org.eclipse.xtext.ui.shared.xtextBuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.m2e.core.maven2Nature + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + org.eclipse.xtext.ui.shared.xtextNature + + diff --git a/plugins/org.eclipse.elk.alg.indentedtree/.settings/org.eclipse.core.resources.prefs b/plugins/org.eclipse.elk.alg.indentedtree/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 000000000..99f26c020 --- /dev/null +++ b/plugins/org.eclipse.elk.alg.indentedtree/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/plugins/org.eclipse.elk.alg.indentedtree/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.elk.alg.indentedtree/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 000000000..c230b7f71 --- /dev/null +++ b/plugins/org.eclipse.elk.alg.indentedtree/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,320 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=17 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=17 +org.eclipse.jdt.core.formatter.align_type_members_on_columns=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=16 +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_conditional_expression=80 +org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0 +org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 +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_multiple_fields=16 +org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16 +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_resources_in_try=80 +org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 +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_union_type_in_multicatch=16 +org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_after_package=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=1 +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.clear_blank_lines_in_block_comment=false +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false +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=true +org.eclipse.jdt.core.formatter.comment.indent_root_tags=true +org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert +org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert +org.eclipse.jdt.core.formatter.comment.line_length=120 +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=false +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=false +org.eclipse.jdt.core.formatter.indentation.size=4 +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_new_line_in_empty_annotation_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=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_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=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_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_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_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=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_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=true +org.eclipse.jdt.core.formatter.join_wrapped_lines=true +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_imple_if_on_one_line=false +org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false +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_at_beginning_of_method_body=0 +org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 +org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true +org.eclipse.jdt.core.formatter.tabulation.char=space +org.eclipse.jdt.core.formatter.tabulation.size=4 +org.eclipse.jdt.core.formatter.use_on_off_tags=true +org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=true +org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true +org.eclipse.jdt.core.formatter.wrap_before_bitwise_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_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/plugins/org.eclipse.elk.alg.indentedtree/.settings/org.eclipse.jdt.ui.prefs b/plugins/org.eclipse.elk.alg.indentedtree/.settings/org.eclipse.jdt.ui.prefs new file mode 100644 index 000000000..d529be02b --- /dev/null +++ b/plugins/org.eclipse.elk.alg.indentedtree/.settings/org.eclipse.jdt.ui.prefs @@ -0,0 +1,5 @@ +eclipse.preferences.version=1 +formatter_profile=_Elk +formatter_settings_version=12 +org.eclipse.jdt.ui.javadoc=true +org.eclipse.jdt.ui.text.custom_code_templates= diff --git a/plugins/org.eclipse.elk.alg.indentedtree/META-INF/MANIFEST.MF b/plugins/org.eclipse.elk.alg.indentedtree/META-INF/MANIFEST.MF new file mode 100644 index 000000000..be9e366aa --- /dev/null +++ b/plugins/org.eclipse.elk.alg.indentedtree/META-INF/MANIFEST.MF @@ -0,0 +1,13 @@ +Manifest-Version: 1.0 +Automatic-Module-Name: org.eclipse.elk.alg.indentedtree +Bundle-ManifestVersion: 2 +Bundle-Name: ELK Indented Tree Layout Algorithm +Bundle-SymbolicName: org.eclipse.elk.alg.indentedtree;singleton:=true +Bundle-Version: 0.11.0.qualifier +Bundle-Vendor: Eclipse Modeling Project +Bundle-RequiredExecutionEnvironment: JavaSE-17 +Require-Bundle: com.google.guava, + org.eclipse.elk.core, + org.eclipse.elk.graph, + org.eclipse.elk.alg.common, + org.eclipse.emf.common diff --git a/plugins/org.eclipse.elk.alg.indentedtree/about.html b/plugins/org.eclipse.elk.alg.indentedtree/about.html new file mode 100644 index 000000000..b54871a46 --- /dev/null +++ b/plugins/org.eclipse.elk.alg.indentedtree/about.html @@ -0,0 +1,36 @@ + + + + +About + + +

About This Content

+ +

August 20, 2025

+

License

+ +

+ The Eclipse Foundation makes available all content in this plug-in + ("Content"). Unless otherwise indicated below, the Content + is provided to you under the terms and conditions of the Eclipse + Public License Version 2.0 ("EPL"). A copy of the EPL is + available at http://www.eclipse.org/legal/epl-2.0. + For purposes of the EPL, "Program" will mean the Content. +

+ +

+ If you did not receive this Content directly from the Eclipse + Foundation, the Content is being redistributed by another party + ("Redistributor") and different terms and conditions may + apply to your use of any object code in the Content. Check the + Redistributor's license that was provided with the Content. If no such + license exists, contact the Redistributor. Unless otherwise indicated + below, the terms and conditions of the EPL still apply to any source + code in the Content and such source code may be obtained at http://www.eclipse.org. +

+ + + \ No newline at end of file diff --git a/plugins/org.eclipse.elk.alg.indentedtree/build.properties b/plugins/org.eclipse.elk.alg.indentedtree/build.properties new file mode 100644 index 000000000..1296c1c0e --- /dev/null +++ b/plugins/org.eclipse.elk.alg.indentedtree/build.properties @@ -0,0 +1,16 @@ +############################################################################### +# Copyright (c) 2025 Kiel University and others. +# +# This program and the accompanying materials are made available under the +# terms of the Eclipse Public License 2.0 which is available at +# http://www.eclipse.org/legal/epl-2.0. +# +# SPDX-License-Identifier: EPL-2.0 +############################################################################### +bin.includes = META-INF/,\ + .,\ + about.html +source.. = src/,\ + src-gen/ +src.includes = about.html +output.. = bin/ diff --git a/plugins/org.eclipse.elk.alg.indentedtree/docs/Spacings.svg b/plugins/org.eclipse.elk.alg.indentedtree/docs/Spacings.svg new file mode 100644 index 000000000..9c301e711 --- /dev/null +++ b/plugins/org.eclipse.elk.alg.indentedtree/docs/Spacings.svg @@ -0,0 +1,587 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Creator: FreeHEP Graphics2D Driver Producer: de.cau.cs.kieler.klighd.piccolo.freehep.SemanticSVGGraphics2D Revision Source: Date: Wednesday, December 11, 2024 at 4:19:31 PM Central European Standard Time + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Indented Tree Layout AlgorithmPurple: Horizontal Edge IndentationBlue: Relative IndentationGreen: Vertical Node Spacing + + + + diff --git a/plugins/org.eclipse.elk.alg.indentedtree/docs/indentedTree.md b/plugins/org.eclipse.elk.alg.indentedtree/docs/indentedTree.md new file mode 100644 index 000000000..ac64bc99a --- /dev/null +++ b/plugins/org.eclipse.elk.alg.indentedtree/docs/indentedTree.md @@ -0,0 +1,10 @@ +This algorithm takes a directed forest (a graph whose every component is a tree) and generates from it a layout reminiscient of the traditional representations of file systems. +I.e. the root of a tree is placed at the top left corner, and each node afterwards is placed in its own row, indented according to its position in the hierarchy. +If the graph has several components, the next tree is again placed on the first level, below the preceding tree. +Children of the same parent node (in the graph theory sense, not as in nodes contained by other nodes) are placed below one another, indented at least as much as the parent. +This algorithm allows the user to set three main parameters: +- horizontal Edge Indentation, which decides how far the outgoing edges of a parent (by design exiting that parent at the bottom) should be offset compared to the parent's left edge +- relative Indentation, which decides how far a should should be indented horizontally relative to the position of its incoming edge. +- vertical Node Spacing, which determines the vertical distance between a node and its immediate successor, independent of hierarchy. +The horizontal Edge Intentation of its parent and the relative Indentation add up to give the total indentation of a node. +![Interpretation of Properties](Spacings.svg) \ No newline at end of file diff --git a/plugins/org.eclipse.elk.alg.indentedtree/pom.xml b/plugins/org.eclipse.elk.alg.indentedtree/pom.xml new file mode 100644 index 000000000..c6bb1ae8b --- /dev/null +++ b/plugins/org.eclipse.elk.alg.indentedtree/pom.xml @@ -0,0 +1,47 @@ + + + + 4.0.0 + + org.eclipse.elk + parent + 0.11.0-SNAPSHOT + ../../build/pom.xml + + + org.eclipse.elk.alg.indentedtree + ELK Indented Tree Layout Algorithm + Algorithm that for tree file-system-like layout. + eclipse-plugin + + + + org.eclipse.elk + org.eclipse.elk.core + 0.11.0-SNAPSHOT + + + org.eclipse.elk + org.eclipse.elk.alg.common + 0.11.0-SNAPSHOT + + + + + + + + org.eclipse.xtext + xtext-maven-plugin + + + + diff --git a/plugins/org.eclipse.elk.alg.indentedtree/src/META-INF/services/org.eclipse.elk.core.data.ILayoutMetaDataProvider b/plugins/org.eclipse.elk.alg.indentedtree/src/META-INF/services/org.eclipse.elk.core.data.ILayoutMetaDataProvider new file mode 100644 index 000000000..25e3fde2e --- /dev/null +++ b/plugins/org.eclipse.elk.alg.indentedtree/src/META-INF/services/org.eclipse.elk.core.data.ILayoutMetaDataProvider @@ -0,0 +1 @@ +org.eclipse.elk.alg.indentedtree.IndentedtreeMetaDataProvider \ No newline at end of file diff --git a/plugins/org.eclipse.elk.alg.indentedtree/src/org/eclipse/elk/alg/indentedtree/IndentedtreeLayoutProvider.java b/plugins/org.eclipse.elk.alg.indentedtree/src/org/eclipse/elk/alg/indentedtree/IndentedtreeLayoutProvider.java new file mode 100644 index 000000000..63b1dd79f --- /dev/null +++ b/plugins/org.eclipse.elk.alg.indentedtree/src/org/eclipse/elk/alg/indentedtree/IndentedtreeLayoutProvider.java @@ -0,0 +1,192 @@ +/******************************************************************************* + * Copyright (c) 2024 Kiel University and others. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ +package org.eclipse.elk.alg.indentedtree; + +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; + +import org.eclipse.elk.core.AbstractLayoutProvider; +import org.eclipse.elk.core.UnsupportedGraphException; +import org.eclipse.elk.core.math.ElkPadding; +import org.eclipse.elk.core.util.IElkProgressMonitor; +import org.eclipse.elk.graph.ElkEdge; +import org.eclipse.elk.graph.ElkEdgeSection; +import org.eclipse.elk.graph.ElkNode; +import org.eclipse.elk.graph.util.ElkGraphUtil; +import org.eclipse.elk.alg.indentedtree.options.IndentedtreeOptions; +import org.eclipse.elk.alg.indentedtree.options.InternalProperties; + +/** + * A layout algorithm for creating a filesystem-like layout. This assumes that the graph is a tree + * and that no ports exist + * + */ +public class IndentedtreeLayoutProvider extends AbstractLayoutProvider { + + @Override + public void layout(ElkNode layoutGraph, IElkProgressMonitor progressMonitor) { + // Start progress monitor + progressMonitor.begin("org.eclipse.elk.alg.indentedtree", 2); + progressMonitor.log("Algorithm began"); + + // Retrieve padding + ElkPadding padding = layoutGraph.getProperty(IndentedtreeOptions.PADDING); + + // Get the list of nodes to lay out + List nodes = new ArrayList<>(layoutGraph.getChildren()); + + // Create a sub monitor for node placement + IElkProgressMonitor nodePlacingMonitor = progressMonitor.subTask(1); + nodePlacingMonitor.begin("Node Spacing", nodes.size()); + + // Positions + double currY = padding.top; + double maxX = 0.0; + + // Make an output to the debug log + nodePlacingMonitor.log("left padding: " + padding.getLeft()); + nodePlacingMonitor.log("top padding: " + padding.getTop()); + + nodePlacingMonitor.logGraph(layoutGraph, "No node placed yet"); + + // find sources + List sources = new LinkedList<>(); + for (ElkNode node : nodes) { + if (node.getIncomingEdges().isEmpty()) { + sources.add(node); + } + } + + // declare outside of loop for later use when setting graph bounds + double currentVerticalSpacing = 0.0; + + // iterate through every tree in the forest + for (ElkNode source : sources) { + List orderedNodes = new LinkedList<>(); + // find ordered list of nodes + dfs(source, orderedNodes, 0.0); + // iterate through a single tree in order, as determined by depth-first-search + for (ElkNode n : orderedNodes) { + double currentDepth = padding.getLeft() + n.getProperty(InternalProperties.DEPTH); + n.setX(currentDepth); + n.setY(currY); // currY increases monotonically + + // update maxX in order to know the real bounds of the graph + maxX = Math.max(maxX, currentDepth + n.getWidth()); + + currentVerticalSpacing = n.getProperty(IndentedtreeOptions.VERTICAL_NODE_SPACING); + // increase y counter by the node's height plus its vertical node spacing + currY += n.getHeight() + currentVerticalSpacing; + + nodePlacingMonitor.log("currX: " + n.getProperty(InternalProperties.DEPTH)); + nodePlacingMonitor.logGraph(layoutGraph, n.getIdentifier() + " placed"); + } + + } + + // Close the sub monitor + nodePlacingMonitor.done(); + progressMonitor.log("Node Placing done!"); + + // Create sub monitor for edge routing + IElkProgressMonitor edgeRoutingMonitor = progressMonitor.subTask(1); + edgeRoutingMonitor.begin("Edge Routing", layoutGraph.getContainedEdges().size()); + edgeRoutingMonitor.logGraph(layoutGraph, "No edge routed yet"); + + // Route the edges + if (!layoutGraph.getContainedEdges().isEmpty()) { + + // iterate through all edges in the graph + for (ElkEdge edge : layoutGraph.getContainedEdges()) { + // obtain source and target + ElkNode source = ElkGraphUtil.connectableShapeToNode(edge.getSources().get(0)); + ElkNode target = ElkGraphUtil.connectableShapeToNode(edge.getTargets().get(0)); + + // create one section for the new edge + ElkEdgeSection section = ElkGraphUtil.firstEdgeSection(edge, true, true); + + + + // if horizontal edge indentation is set, use that, otherwise, use half of the + // parent's width + double horizontalEdgeIndentation; + if (source.hasProperty(IndentedtreeOptions.HORIZONTAL_EDGE_INDENTATION)) { + horizontalEdgeIndentation = + source.getProperty(IndentedtreeOptions.HORIZONTAL_EDGE_INDENTATION); + } else { + horizontalEdgeIndentation = source.getWidth() / 2; + } + + // throw error if edge would have to be placed far away from the parent node + if (source.getWidth() < horizontalEdgeIndentation) { + throw new UnsupportedGraphException( + "Horizontal Edge Indentation is larger than its parent node's width"); + } + + // set starting location for new edge + section.setStartLocation(source.getX() + horizontalEdgeIndentation, + source.getY() + source.getHeight()); + + // end location: middle of left border of target + section.setEndLocation(target.getX(), target.getY() + target.getHeight() / 2); + + // create a bend point at "longitude" of start point and "latitude" of end point + ElkGraphUtil.createBendPoint(section, section.getStartX(), section.getEndY()); + + edgeRoutingMonitor.log("bendPoint created at y=" + currY); + edgeRoutingMonitor.logGraph(layoutGraph, + source.getIdentifier() + " -> " + target.getIdentifier()); + } + + } + + // Close the sub monitor + edgeRoutingMonitor.done(); + + progressMonitor.log("Edge Routing done!"); + + // Set the size of the final diagram + layoutGraph.setWidth(maxX + padding.right); // TODO should left/top padding be respected + // here? + layoutGraph.setHeight(currY + padding.bottom - currentVerticalSpacing); + + // End the progress monitor + progressMonitor.log("Algorithm executed"); + progressMonitor.logGraph(layoutGraph, "Final graph"); + progressMonitor.done(); + } + + /** + * Depth-first-search through a tree + * + * @param origin + * the root node of the current subtree + * @param list + * the list of all nodes already visited + * @param depth + * the accumulated horizontal indentation of the origin + * @return a list of all nodes in the (sub-)tree beginning with origin + */ + private List dfs(ElkNode origin, List list, Double depth) { + // add received depth to relativeIndentation and save to property + depth = depth + origin.getProperty(IndentedtreeOptions.RELATIVE_INDENTATION); + origin.setProperty(InternalProperties.DEPTH, depth); + + list.add(origin); + // iterate through origin's "children" + for (ElkEdge out : origin.getOutgoingEdges()) { + // recursion + dfs(ElkGraphUtil.connectableShapeToNode(out.getTargets().get(0)), list, + depth + (origin.hasProperty(IndentedtreeOptions.HORIZONTAL_EDGE_INDENTATION) ? origin.getProperty(IndentedtreeOptions.HORIZONTAL_EDGE_INDENTATION) : origin.getWidth()/2)); + } + return list; + } +} diff --git a/plugins/org.eclipse.elk.alg.indentedtree/src/org/eclipse/elk/alg/indentedtree/indentedtree.melk b/plugins/org.eclipse.elk.alg.indentedtree/src/org/eclipse/elk/alg/indentedtree/indentedtree.melk new file mode 100644 index 000000000..aba9dc89b --- /dev/null +++ b/plugins/org.eclipse.elk.alg.indentedtree/src/org/eclipse/elk/alg/indentedtree/indentedtree.melk @@ -0,0 +1,56 @@ +/******************************************************************************* + * Copyright (c) 2024 Kiel University and others. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ +package org.eclipse.elk.alg.indentedtree + +import org.eclipse.elk.alg.indentedtree.IndentedtreeLayoutProvider +import org.eclipse.elk.core.math.ElkPadding + +bundle { + metadataClass IndentedtreeMetaDataProvider + idPrefix org.eclipse.elk.alg.indentedtree +} + +algorithm indentedtree(IndentedtreeLayoutProvider) { + label "indentedtree" + description + "Create a filesystem-like layout for trees. Assume that the graph is a tree and that no ports exist." + metadataClass options.IndentedtreeOptions + supports org.eclipse.elk.padding = new ElkPadding(10) + supports verticalNodeSpacing + supports relativeIndentation + supports horizontalEdgeIndentation +} + +option relativeIndentation: double { + label "relativeIndentation" + description + "indentation relative to the vertical edge to the left of this node" + default = 5.0 + lowerBound = 0.0 + targets nodes +} + +option horizontalEdgeIndentation: double { + label "horizontalEdgeIndentation" + description + "horizontal indentation of the edge leading from a node to its children" + lowerBound = 0.0 + // no default value, as that is dynamically set to half the parent node's width if option is not set + targets nodes +} + +option verticalNodeSpacing: double { + label "verticalNodeSpacing" + description + "vertical spacing between a node and its successor" + default = 5.0 + lowerBound = 0.0 + targets nodes +} diff --git a/plugins/org.eclipse.elk.alg.indentedtree/src/org/eclipse/elk/alg/indentedtree/options/InternalProperties.java b/plugins/org.eclipse.elk.alg.indentedtree/src/org/eclipse/elk/alg/indentedtree/options/InternalProperties.java new file mode 100644 index 000000000..a1cc861dd --- /dev/null +++ b/plugins/org.eclipse.elk.alg.indentedtree/src/org/eclipse/elk/alg/indentedtree/options/InternalProperties.java @@ -0,0 +1,30 @@ +/******************************************************************************* + * Copyright (c) 2024 Kiel University and others. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ +package org.eclipse.elk.alg.indentedtree.options; + +import org.eclipse.elk.graph.properties.IProperty; +import org.eclipse.elk.graph.properties.Property; + +/** + * Internal Property definitions for the Indented Tree Layout Algorithm + */ +public final class InternalProperties { + + + /** + * the total indentation of a node, as calculated through a depth-first search + */ + public static final IProperty DEPTH = new Property("depth", 0.0); + + /** + * the indentation of the edge to the left of a node, inherited from its "parent" + */ + public static final IProperty EDGE_INDENTATION = new Property("edge_indentation", 0.0); +} diff --git a/plugins/pom.xml b/plugins/pom.xml index 879f649a6..a919e462a 100644 --- a/plugins/pom.xml +++ b/plugins/pom.xml @@ -28,6 +28,7 @@ org.eclipse.elk.alg.radial org.eclipse.elk.alg.graphviz.dot org.eclipse.elk.alg.graphviz.layouter + org.eclipse.elk.alg.indentedtree org.eclipse.elk.alg.layered org.eclipse.elk.alg.libavoid org.eclipse.elk.alg.mrtree