Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemi Schnekenburger2016-08-08 04:21:07 -0400
committerGerrit Code Review @ Eclipse.org2016-08-10 10:59:54 -0400
commitdbadd408d90974ea51bb433492db52eba20a2b34 (patch)
tree4cce8be6f1de97ed56606062504b443854940280
parent017b145bfc273a853e01d6ed086d0b49b4d83d4f (diff)
downloadorg.eclipse.papyrus-dbadd408d90974ea51bb433492db52eba20a2b34.tar.gz
org.eclipse.papyrus-dbadd408d90974ea51bb433492db52eba20a2b34.tar.xz
org.eclipse.papyrus-dbadd408d90974ea51bb433492db52eba20a2b34.zip
Bug 485342: [Layout] Integrate ELK with Papyrus
This contribution works on the release 0.1 from ELK. It provides JUnit tests on ELK integration (mainly based on an export of the diagram using SVG export facility from Papyrus, and compare with a reference diagram). Change-Id: Ife12dc26585091a8a5820e318e40011c173db479 Signed-off-by: Remi Schnekenburger <remi.schnekenburger@cea.fr>
-rw-r--r--extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/.classpath7
-rw-r--r--extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/.project28
-rw-r--r--extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/.settings/org.eclipse.jdt.core.prefs291
-rw-r--r--extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/.settings/org.eclipse.jdt.ui.prefs68
-rw-r--r--extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/.settings/org.eclipse.pde.api.tools.prefs98
-rw-r--r--extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/META-INF/MANIFEST.MF20
-rw-r--r--extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/about.html28
-rw-r--r--extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/build.properties8
-rw-r--r--extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/plugin.properties10
-rw-r--r--extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/plugin.xml12
-rw-r--r--extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/pom.xml14
-rw-r--r--extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/src/org/eclipse/papyrus/infra/gmfdiag/elk/Activator.java66
-rw-r--r--extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/src/org/eclipse/papyrus/infra/gmfdiag/elk/PapyrusDiagramLayoutConnector.java50
-rw-r--r--extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/src/org/eclipse/papyrus/infra/gmfdiag/elk/PapyrusLayoutSetup.java105
-rw-r--r--features/papyrus-extra-features/org.eclipse.papyrus.extra.feature/feature.xml4
-rw-r--r--features/papyrus-extra-features/org.eclipse.papyrus.infra.gmfdiag.elk.feature/.project17
-rw-r--r--features/papyrus-extra-features/org.eclipse.papyrus.infra.gmfdiag.elk.feature/build.properties4
-rw-r--r--features/papyrus-extra-features/org.eclipse.papyrus.infra.gmfdiag.elk.feature/epl-v10.html304
-rw-r--r--features/papyrus-extra-features/org.eclipse.papyrus.infra.gmfdiag.elk.feature/feature.properties138
-rw-r--r--features/papyrus-extra-features/org.eclipse.papyrus.infra.gmfdiag.elk.feature/feature.xml32
-rw-r--r--features/papyrus-extra-features/org.eclipse.papyrus.infra.gmfdiag.elk.feature/license.html107
-rw-r--r--features/papyrus-extra-features/org.eclipse.papyrus.infra.gmfdiag.elk.feature/pom.xml14
-rw-r--r--plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.export/META-INF/MANIFEST.MF8
-rw-r--r--plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.export/src/org/eclipse/papyrus/infra/gmfdiag/export/actions/ExportAllDiagramsParameter.java19
-rw-r--r--plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.export/src/org/eclipse/papyrus/infra/gmfdiag/export/engine/ExportAllDiagramsEngine.java2
-rwxr-xr-xreleng/extra-tests/pom.xml1
-rw-r--r--releng/extra-tests/targetPlatform/eclipse/org.eclipse.papyrus.extra.tests.eclipse.target.target8
-rw-r--r--releng/extra-tests/targetPlatform/portable/org.eclipse.papyrus.extra.tests.portable.target.target8
-rw-r--r--releng/extra/pom.xml4
-rw-r--r--releng/extra/targetPlatform/eclipse/org.eclipse.papyrus.extra.eclipse.target.target8
-rw-r--r--releng/extra/targetPlatform/portable/org.eclipse.papyrus.extra.portable.target.target8
-rw-r--r--releng/extra/targetPlatform/portable/org.eclipse.papyrus.extra.portable.target.tpd9
-rw-r--r--tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/.classpath7
-rw-r--r--tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/.project28
-rw-r--r--tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/.settings/org.eclipse.jdt.core.prefs291
-rw-r--r--tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/.settings/org.eclipse.jdt.ui.prefs68
-rw-r--r--tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/.settings/org.eclipse.pde.api.tools.prefs98
-rw-r--r--tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/META-INF/MANIFEST.MF46
-rw-r--r--tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/about.html28
-rw-r--r--tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/build.properties8
-rw-r--r--tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/org.eclipse.papyrus.infra.gmfdiag.elk.tests.launch41
-rw-r--r--tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/pom.xml15
-rw-r--r--tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/resource/simple-classdiag/expected/Advanced-expected.SVG85
-rw-r--r--tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/resource/simple-classdiag/expected/Basic-expected.SVG139
-rw-r--r--tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/resource/simple-classdiag/initial/Advanced-initial.svg85
-rw-r--r--tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/resource/simple-classdiag/initial/Basic-initial.svg139
-rw-r--r--tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/resource/simple-classdiag/model.di15
-rw-r--r--tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/resource/simple-classdiag/model.notation204
-rw-r--r--tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/resource/simple-classdiag/model.uml19
-rw-r--r--tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/src/org/eclipse/papyrus/infra/gmfdiag/elk/tests/classdiag/ClassDiagramLayoutTests.java183
-rw-r--r--tests/junit/plugins/junit/org.eclipse.papyrus.junit.utils/src/org/eclipse/papyrus/junit/utils/rules/UIThread.java31
-rw-r--r--tests/junit/plugins/junit/org.eclipse.papyrus.junit.utils/src/org/eclipse/papyrus/junit/utils/rules/UIThreadRule.java94
52 files changed, 3117 insertions, 7 deletions
diff --git a/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/.classpath b/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/.classpath
new file mode 100644
index 00000000000..eca7bdba8f0
--- /dev/null
+++ b/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/.project b/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/.project
new file mode 100644
index 00000000000..f51d7adf24f
--- /dev/null
+++ b/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.infra.gmfdiag.elk</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/.settings/org.eclipse.jdt.core.prefs b/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..b3aa6d60f94
--- /dev/null
+++ b/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,291 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=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_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=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_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=260
+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=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_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_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_binary_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_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_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_unary_operator=do not 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_binary_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_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_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_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=false
+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=260
+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=5
+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.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
diff --git a/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/.settings/org.eclipse.jdt.ui.prefs b/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..954281dbc31
--- /dev/null
+++ b/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,68 @@
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.correct_indentation=false
+cleanup.format_source_code=false
+cleanup.format_source_code_changes_only=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.organize_imports=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=true
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=true
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_blocks=true
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_type_arguments=false
+cleanup_profile=_Papyrus
+cleanup_settings_version=2
+eclipse.preferences.version=1
+formatter_profile=_Papyrus
+formatter_settings_version=12
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * @return the ${bare_field_name}\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * @param ${param} the ${bare_field_name} to set\n */</template><template autoinsert\="false" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * Constructor.\n *\n * ${tags}\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*****************************************************************************\n * Copyright (c) ${year} CEA LIST and others.\n * \n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\n *\n * Contributors\:\n * CEA LIST - Initial API and implementation\n * \n *****************************************************************************/\n</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n * @author ${user}\n *\n * ${tags}\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\n * \n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/**\n * ${see_to_overridden}\n *\n * ${tags}\n */</template><template autoinsert\="false" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${see_to_target}\n *\n * ${tags}\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
diff --git a/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/.settings/org.eclipse.pde.api.tools.prefs b/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..23fb95e120f
--- /dev/null
+++ b/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,98 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Ignore
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Ignore
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Ignore
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+MISSING_EE_DESCRIPTIONS=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=Enabled
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Warning
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/META-INF/MANIFEST.MF b/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..2861ac34bbf
--- /dev/null
+++ b/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/META-INF/MANIFEST.MF
@@ -0,0 +1,20 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Papyrus ELK Integration
+Bundle-SymbolicName: org.eclipse.papyrus.infra.gmfdiag.elk;singleton:=true
+Bundle-Version: 0.1.0.qualifier
+Bundle-Activator: org.eclipse.papyrus.infra.gmfdiag.elk.Activator
+Bundle-Vendor: Eclipse Modeling Project
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.gmf.runtime.diagram.ui;bundle-version="1.8.0",
+ org.eclipse.papyrus.infra.core;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.gmfdiag.common,
+ org.eclipse.papyrus.infra.ui;bundle-version="1.2.0",
+ org.eclipse.elk.graph;bundle-version="0.1.0",
+ org.eclipse.elk.core.service;bundle-version="0.1.0",
+ org.eclipse.elk.conn.gmf;bundle-version="0.1.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.papyrus.infra.gmfdiag.elk
+Bundle-Description: %pluginDescription
diff --git a/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/about.html b/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/about.html
new file mode 100644
index 00000000000..dd3c089a94c
--- /dev/null
+++ b/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 14, 2008</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) 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 <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/build.properties b/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/build.properties
new file mode 100644
index 00000000000..24c96521fc9
--- /dev/null
+++ b/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ about.html,\
+ build.properties,\
+ plugin.xml
+src.includes = about.html
diff --git a/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/plugin.properties b/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/plugin.properties
new file mode 100644
index 00000000000..b86e9a58e4a
--- /dev/null
+++ b/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/plugin.properties
@@ -0,0 +1,10 @@
+#################################################################################
+# Copyright (c) 2015 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+##################################################################################)
+
+pluginDescription=This plugin provides Eclipse Layout Kernel (ELK) inside Papyrus. \ No newline at end of file
diff --git a/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/plugin.xml b/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/plugin.xml
new file mode 100644
index 00000000000..9870c0240d0
--- /dev/null
+++ b/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/plugin.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.elk.core.service.layoutConnectors">
+ <setup
+ class="org.eclipse.papyrus.infra.gmfdiag.elk.PapyrusLayoutSetup"
+ priority="10">
+ </setup>
+ </extension>
+
+</plugin>
diff --git a/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/pom.xml b/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/pom.xml
new file mode 100644
index 00000000000..f8e70ad99b9
--- /dev/null
+++ b/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/pom.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>org.eclipse.papyrus.extra.releng</artifactId>
+ <groupId>org.eclipse.papyrus</groupId>
+ <version>1.2.0-SNAPSHOT</version>
+ <relativePath>../../../releng/extra</relativePath>
+ </parent>
+ <artifactId>org.eclipse.papyrus.infra.gmfdiag.elk</artifactId>
+ <groupId>org.eclipse.papyrus</groupId>
+ <version>0.1.0-SNAPSHOT</version>
+ <packaging>eclipse-plugin</packaging>
+</project> \ No newline at end of file
diff --git a/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/src/org/eclipse/papyrus/infra/gmfdiag/elk/Activator.java b/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/src/org/eclipse/papyrus/infra/gmfdiag/elk/Activator.java
new file mode 100644
index 00000000000..939f5a34498
--- /dev/null
+++ b/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/src/org/eclipse/papyrus/infra/gmfdiag/elk/Activator.java
@@ -0,0 +1,66 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Camille Letavernier (CEA LIST) camille.letavernier@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.infra.gmfdiag.elk;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.papyrus.infra.gmfdiag.elk"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/src/org/eclipse/papyrus/infra/gmfdiag/elk/PapyrusDiagramLayoutConnector.java b/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/src/org/eclipse/papyrus/infra/gmfdiag/elk/PapyrusDiagramLayoutConnector.java
new file mode 100644
index 00000000000..e807e83d9da
--- /dev/null
+++ b/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/src/org/eclipse/papyrus/infra/gmfdiag/elk/PapyrusDiagramLayoutConnector.java
@@ -0,0 +1,50 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.infra.gmfdiag.elk;
+
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.elk.conn.gmf.GmfDiagramLayoutConnector;
+import org.eclipse.gmf.runtime.diagram.ui.parts.DiagramEditor;
+import org.eclipse.papyrus.infra.ui.editor.IMultiDiagramEditor;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchPart;
+
+/**
+ * Override {@link GmfDiagramLayoutConnector} to access the diagram editor
+ */
+public class PapyrusDiagramLayoutConnector extends GmfDiagramLayoutConnector {
+
+ /**
+ * @see org.eclipse.elk.conn.gmf.GmfDiagramLayoutConnector#getDiagramEditor(org.eclipse.ui.IWorkbenchPart)
+ *
+ * @param workbenchPart
+ * @return
+ */
+ @Override
+ protected DiagramEditor getDiagramEditor(IWorkbenchPart workbenchPart) {
+ if (workbenchPart == null) {
+ return null;
+ }
+ IEditorPart activeEditor = Platform.getAdapterManager().getAdapter(workbenchPart, IEditorPart.class);
+ if (activeEditor instanceof IMultiDiagramEditor) {
+ activeEditor = ((IMultiDiagramEditor) activeEditor).getActiveEditor();
+ }
+
+ if (activeEditor instanceof DiagramEditor) {
+ return (DiagramEditor) activeEditor;
+ }
+
+ return null;
+ }
+}
diff --git a/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/src/org/eclipse/papyrus/infra/gmfdiag/elk/PapyrusLayoutSetup.java b/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/src/org/eclipse/papyrus/infra/gmfdiag/elk/PapyrusLayoutSetup.java
new file mode 100644
index 00000000000..0c77b0846c4
--- /dev/null
+++ b/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk/src/org/eclipse/papyrus/infra/gmfdiag/elk/PapyrusLayoutSetup.java
@@ -0,0 +1,105 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Camille Letavernier (CEA LIST) camille.letavernier@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.infra.gmfdiag.elk;
+
+import java.util.Collection;
+
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.elk.conn.gmf.GmfDiagramLayoutConnector;
+import org.eclipse.elk.conn.gmf.GmfLayoutConfigurationStore;
+import org.eclipse.elk.conn.gmf.GmfLayoutSetup;
+import org.eclipse.elk.conn.gmf.GmfLayoutSetup.GmfLayoutModule;
+import org.eclipse.elk.core.service.IDiagramLayoutConnector;
+import org.eclipse.elk.core.service.ILayoutConfigurationStore;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
+import org.eclipse.gmf.runtime.diagram.ui.parts.DiagramEditor;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.infra.gmfdiag.common.utils.ServiceUtilsForEditPart;
+import org.eclipse.papyrus.infra.ui.editor.IMultiDiagramEditor;
+import org.eclipse.ui.IEditorPart;
+
+import com.google.inject.Binder;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.Module;
+import com.google.inject.util.Modules;
+
+/**
+ * Specific Papyrus implementation to override the papyryus edit part support
+ */
+public class PapyrusLayoutSetup extends GmfLayoutSetup {
+
+ @Override
+ public boolean supports(Object object) {
+ if (object instanceof Collection) {
+ Collection<?> collection = (Collection<?>) object;
+ for (Object o : collection) {
+ if (isPapyrusEditPart(o)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ return getDiagramEditor(object) != null || isPapyrusEditPart(object);
+ }
+
+ protected boolean isPapyrusEditPart(Object o) {
+ if (o instanceof IGraphicalEditPart) {
+ try {
+ return ServiceUtilsForEditPart.getInstance().getServiceRegistry((IGraphicalEditPart) o) != null;
+ } catch (ServiceException ex) {
+ return false;
+ }
+ }
+ return false;
+ }
+
+ protected DiagramEditor getDiagramEditor(Object object) {
+ if (object == null) {
+ return null;
+ }
+ IEditorPart activeEditor = Platform.getAdapterManager().getAdapter(object, IEditorPart.class);
+ if (activeEditor instanceof IMultiDiagramEditor) {
+ activeEditor = ((IMultiDiagramEditor) activeEditor).getActiveEditor();
+ }
+
+ if (activeEditor instanceof DiagramEditor) {
+ return (DiagramEditor) activeEditor;
+ }
+
+ return null;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public Injector createInjector(final Module defaultModule) {
+ return Guice.createInjector(Modules.override(defaultModule).with(new PapyrusLayoutModule()));
+ }
+
+ /**
+ * Guice module for the generic GMF connector.
+ */
+ public static class PapyrusLayoutModule implements Module {
+
+ @Override
+ public void configure(final Binder binder) {
+ binder.bind(IDiagramLayoutConnector.class).to(PapyrusDiagramLayoutConnector.class);
+ binder.bind(ILayoutConfigurationStore.Provider.class).to(GmfLayoutConfigurationStore.Provider.class);
+ }
+
+ }
+
+}
diff --git a/features/papyrus-extra-features/org.eclipse.papyrus.extra.feature/feature.xml b/features/papyrus-extra-features/org.eclipse.papyrus.extra.feature/feature.xml
index 39b60619cd7..866e766a3ba 100644
--- a/features/papyrus-extra-features/org.eclipse.papyrus.extra.feature/feature.xml
+++ b/features/papyrus-extra-features/org.eclipse.papyrus.extra.feature/feature.xml
@@ -116,4 +116,8 @@ http://www.eclipse.org/legal/epl-v10.html
id="org.eclipse.papyrus.metrics.feature"
version="0.0.0"/>
+ <includes
+ id="org.eclipse.papyrus.infra.gmfdiag.elk.feature"
+ version="0.0.0"/>
+
</feature>
diff --git a/features/papyrus-extra-features/org.eclipse.papyrus.infra.gmfdiag.elk.feature/.project b/features/papyrus-extra-features/org.eclipse.papyrus.infra.gmfdiag.elk.feature/.project
new file mode 100644
index 00000000000..15d257b7cc6
--- /dev/null
+++ b/features/papyrus-extra-features/org.eclipse.papyrus.infra.gmfdiag.elk.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.infra.gmfdiag.elk.feature</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/features/papyrus-extra-features/org.eclipse.papyrus.infra.gmfdiag.elk.feature/build.properties b/features/papyrus-extra-features/org.eclipse.papyrus.infra.gmfdiag.elk.feature/build.properties
new file mode 100644
index 00000000000..b74af86fe4c
--- /dev/null
+++ b/features/papyrus-extra-features/org.eclipse.papyrus.infra.gmfdiag.elk.feature/build.properties
@@ -0,0 +1,4 @@
+bin.includes = feature.xml,\
+ feature.properties,\
+ epl-v10.html,\
+ license.html
diff --git a/features/papyrus-extra-features/org.eclipse.papyrus.infra.gmfdiag.elk.feature/epl-v10.html b/features/papyrus-extra-features/org.eclipse.papyrus.infra.gmfdiag.elk.feature/epl-v10.html
new file mode 100644
index 00000000000..cb1073a4bad
--- /dev/null
+++ b/features/papyrus-extra-features/org.eclipse.papyrus.infra.gmfdiag.elk.feature/epl-v10.html
@@ -0,0 +1,304 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:w="urn:schemas-microsoft-com:office:word"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<link rel=File-List
+href="./Eclipse%20EPL%202003_11_10%20Final_files/filelist.xml">
+<title>Eclipse Public License - Version 1.0</title>
+<style>
+<!--
+ /* Font Definitions */
+@font-face
+ {
+ panose-1:2 11 6 4 3 5 4 4 2 4;
+ mso-font-charset:0;
+ mso-font-pitch:variable;
+ mso-font-signature:553679495 -2147483648 8 0 66047 0;}
+ /* Style Definitions */
+p.MsoNormal, li.MsoNormal, div.MsoNormal
+ {mso-style-parent:"";
+ margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ }
+p
+ {margin-right:0in;
+ mso-margin-top-alt:auto;
+ mso-margin-bottom-alt:auto;
+ margin-left:0in;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ }
+p.BalloonText, li.BalloonText, div.BalloonText
+ {mso-style-name:"Balloon Text";
+ margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:8.0pt;
+
+ }
+@page Section1
+ {size:8.5in 11.0in;
+ margin:1.0in 1.25in 1.0in 1.25in;
+ mso-header-margin:.5in;
+ mso-footer-margin:.5in;
+ mso-paper-source:0;}
+div.Section1
+ {page:Section1;}
+-->
+</style>
+</head>
+
+<body lang="EN-US" style='tab-interval:.5in'>
+
+<div class=Section1>
+
+<p align=center style='text-align:center'><b>Eclipse Public License - v 1.0</b>
+</p>
+
+<p><span style='font-size:10.0pt'>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER
+THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE,
+REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE
+OF THIS AGREEMENT.</span> </p>
+
+<p><b><span style='font-size:10.0pt'>1. DEFINITIONS</span></b> </p>
+
+<p><span style='font-size:10.0pt'>&quot;Contribution&quot; means:</span> </p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
+in the case of the initial Contributor, the initial code and documentation
+distributed under this Agreement, and<br clear=left>
+b) in the case of each subsequent Contributor:</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
+changes to the Program, and</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
+additions to the Program;</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>where
+such changes and/or additions to the Program originate from and are distributed
+by that particular Contributor. A Contribution 'originates' from a Contributor
+if it was added to the Program by such Contributor itself or anyone acting on
+such Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in conjunction
+with the Program under their own license agreement, and (ii) are not derivative
+works of the Program. </span></p>
+
+<p><span style='font-size:10.0pt'>&quot;Contributor&quot; means any person or
+entity that distributes the Program.</span> </p>
+
+<p><span style='font-size:10.0pt'>&quot;Licensed Patents &quot; mean patent
+claims licensable by a Contributor which are necessarily infringed by the use
+or sale of its Contribution alone or when combined with the Program. </span></p>
+
+<p><span style='font-size:10.0pt'>&quot;Program&quot; means the Contributions
+distributed in accordance with this Agreement.</span> </p>
+
+<p><span style='font-size:10.0pt'>&quot;Recipient&quot; means anyone who
+receives the Program under this Agreement, including all Contributors.</span> </p>
+
+<p><b><span style='font-size:10.0pt'>2. GRANT OF RIGHTS</span></b> </p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
+Subject to the terms of this Agreement, each Contributor hereby grants Recipient
+a non-exclusive, worldwide, royalty-free copyright license to<span
+style='color:red'> </span>reproduce, prepare derivative works of, publicly
+display, publicly perform, distribute and sublicense the Contribution of such
+Contributor, if any, and such derivative works, in source code and object code
+form.</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
+Subject to the terms of this Agreement, each Contributor hereby grants
+Recipient a non-exclusive, worldwide,<span style='color:green'> </span>royalty-free
+patent license under Licensed Patents to make, use, sell, offer to sell, import
+and otherwise transfer the Contribution of such Contributor, if any, in source
+code and object code form. This patent license shall apply to the combination
+of the Contribution and the Program if, at the time the Contribution is added
+by the Contributor, such addition of the Contribution causes such combination
+to be covered by the Licensed Patents. The patent license shall not apply to
+any other combinations which include the Contribution. No hardware per se is
+licensed hereunder. </span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>c)
+Recipient understands that although each Contributor grants the licenses to its
+Contributions set forth herein, no assurances are provided by any Contributor
+that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient
+for claims brought by any other entity based on infringement of intellectual
+property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility
+to secure any other intellectual property rights needed, if any. For example,
+if a third party patent license is required to allow Recipient to distribute
+the Program, it is Recipient's responsibility to acquire that license before
+distributing the Program.</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>d)
+Each Contributor represents that to its knowledge it has sufficient copyright
+rights in its Contribution, if any, to grant the copyright license set forth in
+this Agreement. </span></p>
+
+<p><b><span style='font-size:10.0pt'>3. REQUIREMENTS</span></b> </p>
+
+<p><span style='font-size:10.0pt'>A Contributor may choose to distribute the
+Program in object code form under its own license agreement, provided that:</span>
+</p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
+it complies with the terms and conditions of this Agreement; and</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
+its license agreement:</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
+effectively disclaims on behalf of all Contributors all warranties and
+conditions, express and implied, including warranties or conditions of title
+and non-infringement, and implied warranties or conditions of merchantability
+and fitness for a particular purpose; </span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
+effectively excludes on behalf of all Contributors all liability for damages,
+including direct, indirect, special, incidental and consequential damages, such
+as lost profits; </span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iii)
+states that any provisions which differ from this Agreement are offered by that
+Contributor alone and not by any other party; and</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iv)
+states that source code for the Program is available from such Contributor, and
+informs licensees how to obtain it in a reasonable manner on or through a
+medium customarily used for software exchange.<span style='color:blue'> </span></span></p>
+
+<p><span style='font-size:10.0pt'>When the Program is made available in source
+code form:</span> </p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
+it must be made available under this Agreement; and </span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b) a
+copy of this Agreement must be included with each copy of the Program. </span></p>
+
+<p><span style='font-size:10.0pt'>Contributors may not remove or alter any
+copyright notices contained within the Program. </span></p>
+
+<p><span style='font-size:10.0pt'>Each Contributor must identify itself as the
+originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution. </span></p>
+
+<p><b><span style='font-size:10.0pt'>4. COMMERCIAL DISTRIBUTION</span></b> </p>
+
+<p><span style='font-size:10.0pt'>Commercial distributors of software may
+accept certain responsibilities with respect to end users, business partners
+and the like. While this license is intended to facilitate the commercial use
+of the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create potential
+liability for other Contributors. Therefore, if a Contributor includes the
+Program in a commercial product offering, such Contributor (&quot;Commercial
+Contributor&quot;) hereby agrees to defend and indemnify every other
+Contributor (&quot;Indemnified Contributor&quot;) against any losses, damages and
+costs (collectively &quot;Losses&quot;) arising from claims, lawsuits and other
+legal actions brought by a third party against the Indemnified Contributor to
+the extent caused by the acts or omissions of such Commercial Contributor in
+connection with its distribution of the Program in a commercial product
+offering. The obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In order
+to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor
+to control, and cooperate with the Commercial Contributor in, the defense and
+any related settlement negotiations. The Indemnified Contributor may participate
+in any such claim at its own expense.</span> </p>
+
+<p><span style='font-size:10.0pt'>For example, a Contributor might include the
+Program in a commercial product offering, Product X. That Contributor is then a
+Commercial Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance claims and
+warranties are such Commercial Contributor's responsibility alone. Under this
+section, the Commercial Contributor would have to defend claims against the
+other Contributors related to those performance claims and warranties, and if a
+court requires any other Contributor to pay any damages as a result, the
+Commercial Contributor must pay those damages.</span> </p>
+
+<p><b><span style='font-size:10.0pt'>5. NO WARRANTY</span></b> </p>
+
+<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
+AGREEMENT, THE PROGRAM IS PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT
+WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and distributing the
+Program and assumes all risks associated with its exercise of rights under this
+Agreement , including but not limited to the risks and costs of program errors,
+compliance with applicable laws, damage to or loss of data, programs or
+equipment, and unavailability or interruption of operations. </span></p>
+
+<p><b><span style='font-size:10.0pt'>6. DISCLAIMER OF LIABILITY</span></b> </p>
+
+<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
+AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF
+THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGES.</span> </p>
+
+<p><b><span style='font-size:10.0pt'>7. GENERAL</span></b> </p>
+
+<p><span style='font-size:10.0pt'>If any provision of this Agreement is invalid
+or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without
+further action by the parties hereto, such provision shall be reformed to the
+minimum extent necessary to make such provision valid and enforceable.</span> </p>
+
+<p><span style='font-size:10.0pt'>If Recipient institutes patent litigation
+against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with
+other software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the date
+such litigation is filed. </span></p>
+
+<p><span style='font-size:10.0pt'>All Recipient's rights under this Agreement
+shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable
+period of time after becoming aware of such noncompliance. If all Recipient's
+rights under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive. </span></p>
+
+<p><span style='font-size:10.0pt'>Everyone is permitted to copy and distribute
+copies of this Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The Agreement
+Steward reserves the right to publish new versions (including revisions) of
+this Agreement from time to time. No one other than the Agreement Steward has
+the right to modify this Agreement. The Eclipse Foundation is the initial
+Agreement Steward. The Eclipse Foundation may assign the responsibility to
+serve as the Agreement Steward to a suitable separate entity. Each new version
+of the Agreement will be given a distinguishing version number. The Program
+(including Contributions) may always be distributed subject to the version of
+the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program
+(including its Contributions) under the new version. Except as expressly stated
+in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether
+expressly, by implication, estoppel or otherwise. All rights in the Program not
+expressly granted under this Agreement are reserved.</span> </p>
+
+<p><span style='font-size:10.0pt'>This Agreement is governed by the laws of the
+State of New York and the intellectual property laws of the United States of
+America. No party to this Agreement will bring a legal action under this
+Agreement more than one year after the cause of action arose. Each party waives
+its rights to a jury trial in any resulting litigation.</span> </p>
+
+<p class=MsoNormal></p>
+
+</div>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/features/papyrus-extra-features/org.eclipse.papyrus.infra.gmfdiag.elk.feature/feature.properties b/features/papyrus-extra-features/org.eclipse.papyrus.infra.gmfdiag.elk.feature/feature.properties
new file mode 100644
index 00000000000..c9080c928a6
--- /dev/null
+++ b/features/papyrus-extra-features/org.eclipse.papyrus.infra.gmfdiag.elk.feature/feature.properties
@@ -0,0 +1,138 @@
+# NLS_MESSAGEFORMAT_VAR
+
+# "featureName" property - name of the feature
+featureName=ELK Integration In Papyrus Extra Feature
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse Modeling Project
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+April 9, 2014\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/features/papyrus-extra-features/org.eclipse.papyrus.infra.gmfdiag.elk.feature/feature.xml b/features/papyrus-extra-features/org.eclipse.papyrus.infra.gmfdiag.elk.feature/feature.xml
new file mode 100644
index 00000000000..bce4d84877e
--- /dev/null
+++ b/features/papyrus-extra-features/org.eclipse.papyrus.infra.gmfdiag.elk.feature/feature.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+ id="org.eclipse.papyrus.infra.gmfdiag.elk.feature"
+ label="%featureName"
+ version="0.1.0.qualifier"
+ provider-name="%providerName">
+
+ <description>
+ This feature provides the integration of the ELK project inside Papyrus
+ </description>
+
+ <copyright url="http://www.eclipse.org/legal/epl-v10.html">
+ Copyright (c) 2016 CEA LIST
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Eclipse Public License
+v1.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/epl-v10.html
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <plugin
+ id="org.eclipse.papyrus.infra.gmfdiag.elk"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/features/papyrus-extra-features/org.eclipse.papyrus.infra.gmfdiag.elk.feature/license.html b/features/papyrus-extra-features/org.eclipse.papyrus.infra.gmfdiag.elk.feature/license.html
new file mode 100644
index 00000000000..c3d34c3c21e
--- /dev/null
+++ b/features/papyrus-extra-features/org.eclipse.papyrus.infra.gmfdiag.elk.feature/license.html
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>April 9, 2014</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+ (COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+ CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+ OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+ NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+ CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
+ (&quot;EPL&quot;). A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+ repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
+<ul>
+ <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content. Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+ <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material. Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;. Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+ and/or Fragments associated with that Feature.</li>
+ <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+ <li>The top-level (root) directory</li>
+ <li>Plug-in and Fragment directories</li>
+ <li>Inside Plug-ins and Fragments packaged as JARs</li>
+ <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+ <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
+installation process. If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them. Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+ <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+ <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+ <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+ <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+ <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+ Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+ other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+ install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+ href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+ (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+ applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+ in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+ Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+ <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+ on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+ product.</li>
+ <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+ accessed and copied to the Target Machine.</li>
+ <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+ Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+ Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+ the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+ indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+ another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+ possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+</body>
+</html>
diff --git a/features/papyrus-extra-features/org.eclipse.papyrus.infra.gmfdiag.elk.feature/pom.xml b/features/papyrus-extra-features/org.eclipse.papyrus.infra.gmfdiag.elk.feature/pom.xml
new file mode 100644
index 00000000000..ab5369e0b98
--- /dev/null
+++ b/features/papyrus-extra-features/org.eclipse.papyrus.infra.gmfdiag.elk.feature/pom.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>org.eclipse.papyrus.extra.releng</artifactId>
+ <groupId>org.eclipse.papyrus</groupId>
+ <version>1.2.0-SNAPSHOT</version>
+ <relativePath>../../../releng/extra</relativePath>
+ </parent>
+ <artifactId>org.eclipse.papyrus.infra.gmfdiag.elk.feature</artifactId>
+ <groupId>org.eclipse.papyrus</groupId>
+ <version>0.1.0-SNAPSHOT</version>
+ <packaging>eclipse-feature</packaging>
+</project> \ No newline at end of file
diff --git a/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.export/META-INF/MANIFEST.MF b/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.export/META-INF/MANIFEST.MF
index 73b50bdf6ab..81b81099c9a 100644
--- a/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.export/META-INF/MANIFEST.MF
+++ b/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.export/META-INF/MANIFEST.MF
@@ -1,5 +1,11 @@
Manifest-Version: 1.0
-Export-Package: org.eclipse.papyrus.infra.gmfdiag.export
+Export-Package: org.eclipse.papyrus.infra.gmfdiag.export,
+ org.eclipse.papyrus.infra.gmfdiag.export.actions,
+ org.eclipse.papyrus.infra.gmfdiag.export.engine,
+ org.eclipse.papyrus.infra.gmfdiag.export.messages,
+ org.eclipse.papyrus.infra.gmfdiag.export.propertytester,
+ org.eclipse.papyrus.infra.gmfdiag.export.utils,
+ org.eclipse.papyrus.infra.gmfdiag.export.wizard
Require-Bundle: org.eclipse.gmf.runtime.diagram.ui.render;bundle-version="[1.7.0,2.0.0)",
org.eclipse.papyrus.infra.gmfdiag.css;bundle-version="[1.2.0,2.0.0)",
org.eclipse.papyrus.infra.services.validation;bundle-version="[2.0.0,3.0.0)",
diff --git a/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.export/src/org/eclipse/papyrus/infra/gmfdiag/export/actions/ExportAllDiagramsParameter.java b/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.export/src/org/eclipse/papyrus/infra/gmfdiag/export/actions/ExportAllDiagramsParameter.java
index a0afd5959a7..fde0be01716 100644
--- a/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.export/src/org/eclipse/papyrus/infra/gmfdiag/export/actions/ExportAllDiagramsParameter.java
+++ b/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.export/src/org/eclipse/papyrus/infra/gmfdiag/export/actions/ExportAllDiagramsParameter.java
@@ -42,6 +42,9 @@ public class ExportAllDiagramsParameter {
/** The model set. */
private ModelSet modelSet = null;
+ /** boolean to check if the result of the generation has to be displayed */
+ private boolean isDisplayStatus = true;
+
/**
* Constructor.
*
@@ -165,6 +168,20 @@ public class ExportAllDiagramsParameter {
this.modelSet = modelSet;
}
-
+ /**
+ * Returns <code>true</code> if the status has to be displayed at the end of the export.
+ * @return <code>true</code> if the status has to be displayed at the end of the export
+ */
+ public boolean isDisplayStatus() {
+ return isDisplayStatus;
+ }
+
+ /**
+ * Indicates if the status has to be displayed at the end of the export
+ * @param isDisplayStatus <code>true</code> if the status has to be displayed at the end of the export.
+ */
+ public void setDisplayStatus(boolean isDisplayStatus) {
+ this.isDisplayStatus = isDisplayStatus;
+ }
}
diff --git a/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.export/src/org/eclipse/papyrus/infra/gmfdiag/export/engine/ExportAllDiagramsEngine.java b/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.export/src/org/eclipse/papyrus/infra/gmfdiag/export/engine/ExportAllDiagramsEngine.java
index d7022d60cd9..a2299d6fb42 100644
--- a/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.export/src/org/eclipse/papyrus/infra/gmfdiag/export/engine/ExportAllDiagramsEngine.java
+++ b/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.export/src/org/eclipse/papyrus/infra/gmfdiag/export/engine/ExportAllDiagramsEngine.java
@@ -459,7 +459,7 @@ public class ExportAllDiagramsEngine {
}
// Display dialog to validate export
- if (workbenchWindow != null && workbenchWindow.getShell() != null) {
+ if (workbenchWindow != null && workbenchWindow.getShell() != null && exportParameter.isDisplayStatus()) {
Display.getDefault().syncExec(new Runnable() {
@Override
diff --git a/releng/extra-tests/pom.xml b/releng/extra-tests/pom.xml
index 93f51f1780f..c5317cfe15c 100755
--- a/releng/extra-tests/pom.xml
+++ b/releng/extra-tests/pom.xml
@@ -40,6 +40,7 @@
<module>../../tests/junit/plugins/sysml/org.eclipse.papyrus.sysml.service.types.tests</module>
<module>../../tests/junit/plugins/sysml/org.eclipse.papyrus.sysml.tests</module>
+ <module>../../tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests</module>
<module>targetPlatform</module>
</modules>
diff --git a/releng/extra-tests/targetPlatform/eclipse/org.eclipse.papyrus.extra.tests.eclipse.target.target b/releng/extra-tests/targetPlatform/eclipse/org.eclipse.papyrus.extra.tests.eclipse.target.target
index bde4d0d2942..c5ba590f2a2 100644
--- a/releng/extra-tests/targetPlatform/eclipse/org.eclipse.papyrus.extra.tests.eclipse.target.target
+++ b/releng/extra-tests/targetPlatform/eclipse/org.eclipse.papyrus.extra.tests.eclipse.target.target
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde?>
<!-- generated with https://github.com/mbarbero/fr.obeo.releng.targetplatform -->
-<target name="Papyrus Extra Tests" sequenceNumber="1468954016">
+<target name="Papyrus Extra Tests" sequenceNumber="1470823031">
<locations>
<location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
<unit id="org.eclipse.b3.aggregator.editor.source.feature.feature.group" version="0.3.0.v20140928-0617"/>
@@ -177,6 +177,12 @@
<repository id="gef" location="file:/home/data/httpd/download.eclipse.org/tools/gef/updates/legacy/releases/4.0.0_gef-master_1952"/>
</location>
<location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+ <unit id="org.eclipse.elk.feature.feature.group" version="0.1.0.201607121925"/>
+ <unit id="org.eclipse.elk.ui.feature.feature.group" version="0.1.0.201607121925"/>
+ <unit id="org.eclipse.elk.gmf.feature.feature.group" version="0.1.0.201607121925"/>
+ <repository id="elk" location="file:/home/data/httpd/download.eclipse.org/elk/updates/releases/0.1.0/"/>
+ </location>
+ <location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
<repository id="graphiti" location="file:/home/data/httpd/download.eclipse.org/graphiti/updates/0.13.0/"/>
</location>
<location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
diff --git a/releng/extra-tests/targetPlatform/portable/org.eclipse.papyrus.extra.tests.portable.target.target b/releng/extra-tests/targetPlatform/portable/org.eclipse.papyrus.extra.tests.portable.target.target
index d8d5cca10b7..9e28bb473d2 100644
--- a/releng/extra-tests/targetPlatform/portable/org.eclipse.papyrus.extra.tests.portable.target.target
+++ b/releng/extra-tests/targetPlatform/portable/org.eclipse.papyrus.extra.tests.portable.target.target
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde?>
<!-- generated with https://github.com/mbarbero/fr.obeo.releng.targetplatform -->
-<target name="Papyrus Extra Tests" sequenceNumber="1468954016">
+<target name="Papyrus Extra Tests" sequenceNumber="1470823031">
<locations>
<location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
<unit id="org.eclipse.b3.aggregator.editor.source.feature.feature.group" version="0.3.0.v20140928-0617"/>
@@ -177,6 +177,12 @@
<repository id="gef" location="http://download.eclipse.org/tools/gef/updates/legacy/releases/4.0.0_gef-master_1952"/>
</location>
<location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+ <unit id="org.eclipse.elk.feature.feature.group" version="0.1.0.201607121925"/>
+ <unit id="org.eclipse.elk.ui.feature.feature.group" version="0.1.0.201607121925"/>
+ <unit id="org.eclipse.elk.gmf.feature.feature.group" version="0.1.0.201607121925"/>
+ <repository id="elk" location="http://download.eclipse.org/elk/updates/releases/0.1.0/"/>
+ </location>
+ <location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
<repository id="graphiti" location="http://download.eclipse.org/graphiti/updates/0.13.0/"/>
</location>
<location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
diff --git a/releng/extra/pom.xml b/releng/extra/pom.xml
index 012e427212b..cd7f4cff6f9 100644
--- a/releng/extra/pom.xml
+++ b/releng/extra/pom.xml
@@ -226,6 +226,10 @@
<module>../../features/papyrus-main-features/org.eclipse.papyrus.sysml.nattable.feature</module>
<module>../../features/papyrus-main-features/org.eclipse.papyrus.sysml.properties.feature</module>
+ <!-- ELK Integration -->
+ <module>../../extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk</module>
+ <module>../../features/papyrus-extra-features/org.eclipse.papyrus.infra.gmfdiag.elk.feature</module>
+
<module>site</module>
<module>targetPlatform</module>
</modules>
diff --git a/releng/extra/targetPlatform/eclipse/org.eclipse.papyrus.extra.eclipse.target.target b/releng/extra/targetPlatform/eclipse/org.eclipse.papyrus.extra.eclipse.target.target
index 2c99c6df208..dceda78d253 100644
--- a/releng/extra/targetPlatform/eclipse/org.eclipse.papyrus.extra.eclipse.target.target
+++ b/releng/extra/targetPlatform/eclipse/org.eclipse.papyrus.extra.eclipse.target.target
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde?>
<!-- generated with https://github.com/mbarbero/fr.obeo.releng.targetplatform -->
-<target name="Papyrus Extra" sequenceNumber="1468954016">
+<target name="Papyrus Extra" sequenceNumber="1470822727">
<locations>
<location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
<repository id="orbit" location="file:/home/data/httpd/download.eclipse.org/tools/orbit/downloads/drops/R20160520211859/repository"/>
@@ -142,6 +142,12 @@
<repository id="gef" location="file:/home/data/httpd/download.eclipse.org/tools/gef/updates/legacy/releases/4.0.0_gef-master_1952"/>
</location>
<location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+ <unit id="org.eclipse.elk.feature.feature.group" version="0.1.0.201607121925"/>
+ <unit id="org.eclipse.elk.ui.feature.feature.group" version="0.1.0.201607121925"/>
+ <unit id="org.eclipse.elk.gmf.feature.feature.group" version="0.1.0.201607121925"/>
+ <repository id="elk" location="file:/home/data/httpd/download.eclipse.org/elk/updates/releases/0.1.0/"/>
+ </location>
+ <location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
<repository id="graphiti" location="file:/home/data/httpd/download.eclipse.org/graphiti/updates/0.13.0/"/>
</location>
<location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
diff --git a/releng/extra/targetPlatform/portable/org.eclipse.papyrus.extra.portable.target.target b/releng/extra/targetPlatform/portable/org.eclipse.papyrus.extra.portable.target.target
index 9bf8994ddef..610d46254ec 100644
--- a/releng/extra/targetPlatform/portable/org.eclipse.papyrus.extra.portable.target.target
+++ b/releng/extra/targetPlatform/portable/org.eclipse.papyrus.extra.portable.target.target
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde?>
<!-- generated with https://github.com/mbarbero/fr.obeo.releng.targetplatform -->
-<target name="Papyrus Extra" sequenceNumber="1468954016">
+<target name="Papyrus Extra" sequenceNumber="1470822727">
<locations>
<location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
<repository id="orbit" location="http://download.eclipse.org/tools/orbit/downloads/drops/R20160520211859/repository"/>
@@ -142,6 +142,12 @@
<repository id="gef" location="http://download.eclipse.org/tools/gef/updates/legacy/releases/4.0.0_gef-master_1952"/>
</location>
<location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+ <unit id="org.eclipse.elk.feature.feature.group" version="0.1.0.201607121925"/>
+ <unit id="org.eclipse.elk.ui.feature.feature.group" version="0.1.0.201607121925"/>
+ <unit id="org.eclipse.elk.gmf.feature.feature.group" version="0.1.0.201607121925"/>
+ <repository id="elk" location="http://download.eclipse.org/elk/updates/releases/0.1.0/"/>
+ </location>
+ <location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
<repository id="graphiti" location="http://download.eclipse.org/graphiti/updates/0.13.0/"/>
</location>
<location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
diff --git a/releng/extra/targetPlatform/portable/org.eclipse.papyrus.extra.portable.target.tpd b/releng/extra/targetPlatform/portable/org.eclipse.papyrus.extra.portable.target.tpd
index afe17d3cbdb..c9fc32e2ec4 100644
--- a/releng/extra/targetPlatform/portable/org.eclipse.papyrus.extra.portable.target.tpd
+++ b/releng/extra/targetPlatform/portable/org.eclipse.papyrus.extra.portable.target.tpd
@@ -60,6 +60,15 @@ location gef "http://download.eclipse.org/tools/gef/updates/legacy/releases/4.0.
org.eclipse.zest.layouts
}
+//manualUpdate
+
+location elk "http://download.eclipse.org/elk/updates/releases/0.1.0/" {
+ org.eclipse.elk.feature.feature.group
+ org.eclipse.elk.ui.feature.feature.group
+ org.eclipse.elk.gmf.feature.feature.group
+}
+
+
//Transitive dependencies
//updateFrom("Graphiti",0)
diff --git a/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/.classpath b/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/.classpath
new file mode 100644
index 00000000000..eca7bdba8f0
--- /dev/null
+++ b/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/.project b/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/.project
new file mode 100644
index 00000000000..e45d5f6f3d8
--- /dev/null
+++ b/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.infra.gmfdiag.elk.tests</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/.settings/org.eclipse.jdt.core.prefs b/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..b3aa6d60f94
--- /dev/null
+++ b/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,291 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=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_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=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_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=260
+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=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_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_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_binary_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_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_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_unary_operator=do not 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_binary_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_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_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_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=false
+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=260
+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=5
+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.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
diff --git a/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/.settings/org.eclipse.jdt.ui.prefs b/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..954281dbc31
--- /dev/null
+++ b/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,68 @@
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.correct_indentation=false
+cleanup.format_source_code=false
+cleanup.format_source_code_changes_only=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.organize_imports=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=true
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=true
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_blocks=true
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_type_arguments=false
+cleanup_profile=_Papyrus
+cleanup_settings_version=2
+eclipse.preferences.version=1
+formatter_profile=_Papyrus
+formatter_settings_version=12
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * @return the ${bare_field_name}\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * @param ${param} the ${bare_field_name} to set\n */</template><template autoinsert\="false" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * Constructor.\n *\n * ${tags}\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*****************************************************************************\n * Copyright (c) ${year} CEA LIST and others.\n * \n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\n *\n * Contributors\:\n * CEA LIST - Initial API and implementation\n * \n *****************************************************************************/\n</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n * @author ${user}\n *\n * ${tags}\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\n * \n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/**\n * ${see_to_overridden}\n *\n * ${tags}\n */</template><template autoinsert\="false" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${see_to_target}\n *\n * ${tags}\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
diff --git a/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/.settings/org.eclipse.pde.api.tools.prefs b/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..23fb95e120f
--- /dev/null
+++ b/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,98 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Ignore
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Ignore
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Ignore
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+MISSING_EE_DESCRIPTIONS=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=Enabled
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Warning
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/META-INF/MANIFEST.MF b/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..1f9bb328361
--- /dev/null
+++ b/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,46 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: ELK Integration in Papyrus Tests (Incubation)
+Bundle-SymbolicName: org.eclipse.papyrus.infra.gmfdiag.elk.tests
+Bundle-Version: 0.1.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.papyrus.infra.core;bundle-version="1.2.0",
+ org.eclipse.papyrus.editor;bundle-version="1.2.0",
+ org.eclipse.papyrus.uml.diagram.clazz;bundle-version="1.2.0",
+ org.eclipse.gmf.runtime.diagram.ui.resources.editor;bundle-version="1.2.0",
+ org.eclipse.papyrus.uml.diagram.common;bundle-version="1.2.0",
+ org.eclipse.gmf.runtime.diagram.ui;bundle-version="1.5.0",
+ org.eclipse.papyrus.infra.gmfdiag.common;bundle-version="1.2.0",
+ org.eclipse.uml2.uml;bundle-version="4.0.0",
+ org.eclipse.papyrus.infra.gmfdiag.commands;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.core.sasheditor;bundle-version="1.2.0",
+ org.junit;bundle-version="4.10.0",
+ org.eclipse.papyrus.junit.framework;bundle-version="1.2.0",
+ org.eclipse.gmf.tooling.runtime;bundle-version="[3.3.0,4.0.0)",
+ org.eclipse.ui.ide;bundle-version="3.10.0",
+ org.eclipse.emf.common.ui;bundle-version="2.9.0",
+ org.eclipse.papyrus.infra.widgets;bundle-version="1.2.0",
+ org.eclipse.papyrus.junit.utils;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.services.edit;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.emf;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.services.openelement;bundle-version="1.2.0",
+ org.eclipse.core.expressions,
+ org.eclipse.papyrus.uml.tools.utils;bundle-version="1.2.0",
+ org.eclipse.xtend.lib;bundle-version="2.8.3",
+ com.google.guava;bundle-version="11.0.0",
+ org.eclipse.xtext.xbase.lib;bundle-version="2.8.3",
+ org.eclipse.papyrus.tests.framework;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.ui;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.core.sashwindows.di;bundle-version="1.2.0",
+ org.eclipse.papyrus.junit.utils;bundle-version="2.0.100",
+ org.eclipse.papyrus.tests.framework;bundle-version="1.2.0",
+ org.eclipse.elk.core;bundle-version="0.1.0",
+ org.eclipse.elk.core.service;bundle-version="0.1.0",
+ org.eclipse.elk.core.ui;bundle-version="0.1.0",
+ org.eclipse.papyrus.infra.gmfdiag.export;bundle-version="1.2.0",
+ org.eclipse.compare.core;bundle-version="3.6.0",
+ org.eclipse.compare;bundle-version="3.6.0",
+ org.eclipse.elk.conn.gmf;bundle-version="0.1.0"
+Bundle-Vendor: Eclipse Modeling Project
diff --git a/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/about.html b/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/about.html
new file mode 100644
index 00000000000..dd3c089a94c
--- /dev/null
+++ b/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 14, 2008</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) 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 <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/build.properties b/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/build.properties
new file mode 100644
index 00000000000..8f9ff93e37b
--- /dev/null
+++ b/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = bin/
+bin.includes = .,\
+ resource/,\
+ about.html,\
+ META-INF/
+src.includes = org.eclipse.papyrus.infra.gmfdiag.elk.tests.launch,\
+ pom.xml
diff --git a/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/org.eclipse.papyrus.infra.gmfdiag.elk.tests.launch b/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/org.eclipse.papyrus.infra.gmfdiag.elk.tests.launch
new file mode 100644
index 00000000000..b7578866831
--- /dev/null
+++ b/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/org.eclipse.papyrus.infra.gmfdiag.elk.tests.launch
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.pde.ui.JunitLaunchConfig">
+<booleanAttribute key="append.args" value="true"/>
+<booleanAttribute key="askclear" value="false"/>
+<booleanAttribute key="automaticAdd" value="true"/>
+<booleanAttribute key="automaticValidate" value="false"/>
+<stringAttribute key="bootstrap" value=""/>
+<stringAttribute key="checked" value="[NONE]"/>
+<booleanAttribute key="clearConfig" value="true"/>
+<booleanAttribute key="clearws" value="true"/>
+<booleanAttribute key="clearwslog" value="false"/>
+<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/pde-junit"/>
+<booleanAttribute key="default" value="true"/>
+<booleanAttribute key="includeOptional" value="true"/>
+<stringAttribute key="location" value="${workspace_loc}/../junit-workspace"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.papyrus.infra.gmfdiag.elk.tests"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="4"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value="=org.eclipse.papyrus.infra.gmfdiag.elk.tests"/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
+<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value=""/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.papyrus.infra.gmfdiag.elk.tests"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-ea"/>
+<stringAttribute key="pde.version" value="3.3"/>
+<stringAttribute key="product" value="org.eclipse.platform.ide"/>
+<booleanAttribute key="run_in_ui_thread" value="false"/>
+<booleanAttribute key="show_selected_only" value="false"/>
+<booleanAttribute key="tracing" value="false"/>
+<booleanAttribute key="useCustomFeatures" value="false"/>
+<booleanAttribute key="useDefaultConfig" value="true"/>
+<booleanAttribute key="useDefaultConfigArea" value="false"/>
+<booleanAttribute key="useProduct" value="true"/>
+</launchConfiguration>
diff --git a/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/pom.xml b/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/pom.xml
new file mode 100644
index 00000000000..794b3dc51c5
--- /dev/null
+++ b/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/pom.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.papyrus</groupId>
+ <artifactId>org.eclipse.papyrus.extra.tests.releng</artifactId>
+ <version>1.2.0-SNAPSHOT</version>
+ <relativePath>../../../../../releng/extra-tests</relativePath>
+ </parent>
+ <groupId>org.eclipse.papyrus</groupId>
+ <artifactId>org.eclipse.papyrus.infra.gmfdiag.elk.tests</artifactId>
+ <version>0.1.0-SNAPSHOT</version>
+ <packaging>eclipse-test-plugin</packaging>
+</project>
diff --git a/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/resource/simple-classdiag/expected/Advanced-expected.SVG b/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/resource/simple-classdiag/expected/Advanced-expected.SVG
new file mode 100644
index 00000000000..7261da6f564
--- /dev/null
+++ b/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/resource/simple-classdiag/expected/Advanced-expected.SVG
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-dasharray="none" shape-rendering="auto" font-family="'Dialog'" width="120" text-rendering="auto" fill-opacity="1" contentScriptType="text/ecmascript" color-interpolation="auto" color-rendering="auto" preserveAspectRatio="xMidYMid meet" font-size="12" viewBox="0 0 120 240" fill="black" stroke="black" image-rendering="auto" stroke-miterlimit="10" zoomAndPan="magnify" version="1.0" stroke-linecap="square" stroke-linejoin="miter" contentStyleType="text/css" font-style="normal" height="240" stroke-width="1" stroke-dashoffset="0" font-weight="normal" stroke-opacity="1">
+<!--Generated by the Batik Graphics2D SVG Generator-->
+<defs id="genericDefs"/>
+<g>
+<defs id="defs1">
+<linearGradient x1="10" x2="10" y1="130" gradientUnits="userSpaceOnUse" y2="230" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient1" xlink:show="other" spreadMethod="pad">
+<stop stop-opacity="1" stop-color="white" offset="0%"/>
+<stop stop-opacity="1" stop-color="rgb(195,215,221)" offset="100%"/>
+</linearGradient>
+<linearGradient x1="10" x2="10" y1="10" gradientUnits="userSpaceOnUse" y2="110" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient2" xlink:show="other" spreadMethod="pad">
+<stop stop-opacity="1" stop-color="white" offset="0%"/>
+<stop stop-opacity="1" stop-color="rgb(195,215,221)" offset="100%"/>
+</linearGradient>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath1">
+<path d="M10 130 L10 229 L109 229 L109 130 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath2">
+<path d="M10 132 L111 132 L111 154 L10 154 L10 132 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3">
+<path d="M48 132 L92 132 L92 154 L48 154 L48 132 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4">
+<path d="M10 153 L111 153 L111 179 L10 179 L10 153 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath5">
+<path d="M10 178 L111 178 L111 204 L10 204 L10 178 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath6">
+<path d="M10 203 L111 203 L111 229 L10 229 L10 203 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath7">
+<path d="M9 129 L111 129 L111 231 L9 231 L9 129 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath8">
+<path d="M10 10 L10 109 L109 109 L109 10 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath9">
+<path d="M10 12 L111 12 L111 34 L10 34 L10 12 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath10">
+<path d="M48 12 L92 12 L92 34 L48 34 L48 12 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath11">
+<path d="M10 33 L111 33 L111 59 L10 59 L10 33 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath12">
+<path d="M10 58 L111 58 L111 84 L10 84 L10 58 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath13">
+<path d="M10 83 L111 83 L111 109 L10 109 L10 83 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath14">
+<path d="M9 9 L111 9 L111 111 L9 111 L9 9 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath15">
+<path d="M-1 -1 L121 -1 L121 241 L-1 241 L-1 -1 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath16">
+<path d="M51 109 L70 109 L70 122 L51 122 L51 109 Z"/>
+</clipPath>
+</defs>
+<g font-size="15" fill="url(#linearGradient1)" font-family="'Segoe UI'" stroke-linejoin="round" stroke="url(#linearGradient1)" stroke-width="0" stroke-miterlimit="0">
+<rect x="10" y="130" clip-path="url(#clipPath1)" width="100" height="100" stroke="none"/>
+<image stroke="black" width="16" xlink:show="embed" xlink:type="simple" fill="black" clip-path="url(#clipPath2)" preserveAspectRatio="none" height="16" x="30" y="135" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAr0lEQVR42mNkgIKC&#13;&#10;BUf+P3jyCchiBOL/QMgIYTFCREDg/38GOFCU4WWYkGDDyAITuP/4E8OkNDsGYkHu&#13;&#10;rINgGm7Av7//GNjZmIk2gOHff1QDwBxmJgZSAZoBjJQZwEqRC4BBzEqCC/6hh8H/&#13;&#10;//8YmJmIN+D/fyyB6NewCZwO/qORMIBIIUA2IyOmAUsrvIh2QUzndjBNeqjhiwWY&#13;&#10;qWQbsKTccwC9oKIkTJIXQOqpAgBzFjJ6SnHW0gAAAABJRU5ErkJggg==" xlink:actuate="onLoad"/>
+<text x="49" y="150" clip-path="url(#clipPath3)" fill="black" stroke="none" xml:space="preserve">Class1</text>
+</g>
+<g stroke-width="1.1" font-size="15" font-family="'Segoe UI'" stroke-linecap="butt">
+<line clip-path="url(#clipPath4)" fill="none" x1="10" x2="110" y1="154" y2="154"/>
+<line clip-path="url(#clipPath5)" fill="none" x1="10" x2="110" y1="179" y2="179"/>
+<line clip-path="url(#clipPath6)" fill="none" x1="10" x2="110" y1="204" y2="204"/>
+<rect x="10" y="130" clip-path="url(#clipPath7)" fill="none" width="99" rx="0" ry="0" height="99"/>
+<rect x="10" y="10" clip-path="url(#clipPath8)" fill="url(#linearGradient2)" width="100" height="100" stroke="none"/>
+<image x="30" y="15" clip-path="url(#clipPath9)" width="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAr0lEQVR42mNkgIKC&#13;&#10;BUf+P3jyCchiBOL/QMgIYTFCREDg/38GOFCU4WWYkGDDyAITuP/4E8OkNDsGYkHu&#13;&#10;rINgGm7Av7//GNjZmIk2gOHff1QDwBxmJgZSAZoBjJQZwEqRC4BBzEqCC/6hh8H/&#13;&#10;//8YmJmIN+D/fyyB6NewCZwO/qORMIBIIUA2IyOmAUsrvIh2QUzndjBNeqjhiwWY&#13;&#10;qWQbsKTccwC9oKIkTJIXQOqpAgBzFjJ6SnHW0gAAAABJRU5ErkJggg==" xlink:type="simple" xlink:actuate="onLoad" height="16" preserveAspectRatio="none" xlink:show="embed"/>
+<text xml:space="preserve" x="49" y="30" clip-path="url(#clipPath10)" stroke="none">Class2</text>
+<line clip-path="url(#clipPath11)" fill="none" x1="10" x2="110" y1="34" y2="34"/>
+<line clip-path="url(#clipPath12)" fill="none" x1="10" x2="110" y1="59" y2="59"/>
+<line clip-path="url(#clipPath13)" fill="none" x1="10" x2="110" y1="84" y2="84"/>
+<rect x="10" y="10" clip-path="url(#clipPath14)" fill="none" width="99" rx="0" ry="0" height="99"/>
+<line clip-path="url(#clipPath15)" fill="none" text-rendering="optimizeLegibility" x1="60" x2="60" y1="130" y2="110"/>
+<polygon fill="white" text-rendering="optimizeLegibility" clip-path="url(#clipPath16)" points=" 60 110 68 120 52 120" stroke="none"/>
+<polygon text-rendering="optimizeLegibility" fill="none" clip-path="url(#clipPath16)" points=" 60 110 68 120 52 120"/>
+</g>
+</g>
+</svg>
diff --git a/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/resource/simple-classdiag/expected/Basic-expected.SVG b/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/resource/simple-classdiag/expected/Basic-expected.SVG
new file mode 100644
index 00000000000..036f3dacc3f
--- /dev/null
+++ b/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/resource/simple-classdiag/expected/Basic-expected.SVG
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-dasharray="none" shape-rendering="auto" font-family="'Dialog'" width="765" text-rendering="auto" fill-opacity="1" contentScriptType="text/ecmascript" color-interpolation="auto" color-rendering="auto" preserveAspectRatio="xMidYMid meet" font-size="12" viewBox="0 0 765 218" fill="black" stroke="black" image-rendering="auto" stroke-miterlimit="10" zoomAndPan="magnify" version="1.0" stroke-linecap="square" stroke-linejoin="miter" contentStyleType="text/css" font-style="normal" height="218" stroke-width="1" stroke-dashoffset="0" font-weight="normal" stroke-opacity="1">
+<!--Generated by the Batik Graphics2D SVG Generator-->
+<defs id="genericDefs"/>
+<g>
+<defs id="defs1">
+<linearGradient x1="10" x2="10" y1="19" gradientUnits="userSpaceOnUse" y2="198" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient1" xlink:show="other" spreadMethod="pad">
+<stop stop-opacity="1" stop-color="white" offset="0%"/>
+<stop stop-opacity="1" stop-color="rgb(195,215,221)" offset="100%"/>
+</linearGradient>
+<linearGradient x1="232" x2="232" y1="10" gradientUnits="userSpaceOnUse" y2="208" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient2" xlink:show="other" spreadMethod="pad">
+<stop stop-opacity="1" stop-color="white" offset="0%"/>
+<stop stop-opacity="1" stop-color="rgb(195,215,221)" offset="100%"/>
+</linearGradient>
+<linearGradient x1="575" x2="575" y1="29" gradientUnits="userSpaceOnUse" y2="188" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient3" xlink:show="other" spreadMethod="pad">
+<stop stop-opacity="1" stop-color="white" offset="0%"/>
+<stop stop-opacity="1" stop-color="rgb(195,215,221)" offset="100%"/>
+</linearGradient>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath1">
+<path d="M10 19 L10 197 L211 197 L211 19 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath2">
+<path d="M10 21 L213 21 L213 43 L10 43 L10 21 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3">
+<path d="M99 21 L143 21 L143 43 L99 43 L99 21 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4">
+<path d="M10 42 L213 42 L213 95 L10 95 L10 42 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath5">
+<path d="M10 94 L213 94 L213 147 L10 147 L10 94 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath6">
+<path d="M10 146 L213 146 L213 199 L10 199 L10 146 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath7">
+<path d="M9 18 L213 18 L213 199 L9 199 L9 18 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath8">
+<path d="M232 10 L232 207 L438 207 L438 10 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath9">
+<path d="M232 12 L440 12 L440 34 L232 34 L232 12 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath10">
+<path d="M324 12 L368 12 L368 34 L324 34 L324 12 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath11">
+<path d="M232 33 L440 33 L440 92 L232 92 L232 33 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath12">
+<path d="M232 91 L440 91 L440 150 L232 150 L232 91 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath13">
+<path d="M232 149 L440 149 L440 208 L232 208 L232 149 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath14">
+<path d="M231 9 L440 9 L440 209 L231 209 L231 9 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath15">
+<path d="M575 29 L575 187 L754 187 L754 29 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath16">
+<path d="M575 31 L756 31 L756 53 L575 53 L575 31 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath17">
+<path d="M653 31 L697 31 L697 53 L653 53 L653 31 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath18">
+<path d="M575 52 L756 52 L756 98 L575 98 L575 52 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath19">
+<path d="M575 97 L756 97 L756 143 L575 143 L575 97 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath20">
+<path d="M575 142 L756 142 L756 188 L575 188 L575 142 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath21">
+<path d="M574 28 L756 28 L756 189 L574 189 L574 28 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath22">
+<path d="M-1 -1 L766 -1 L766 219 L-1 219 L-1 -1 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath23">
+<path d="M221 100 L234 100 L234 118 L221 118 L221 100 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath24">
+<path d="M467 107 L527 107 L527 129 L467 129 L467 107 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath25">
+<path d="M546 107 L606 107 L606 129 L546 129 L546 107 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath26">
+<path d="M445 108 L460 108 L460 130 L445 130 L445 108 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath27">
+<path d="M567 106 L582 106 L582 128 L567 128 L567 106 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath28">
+<path d="M556 101 L577 101 L577 116 L556 116 L556 101 Z"/>
+</clipPath>
+</defs>
+<g font-size="15" fill="url(#linearGradient1)" font-family="'Segoe UI'" stroke-linejoin="round" stroke="url(#linearGradient1)" stroke-width="0" stroke-miterlimit="0">
+<rect x="10" y="19" clip-path="url(#clipPath1)" width="202" height="179" stroke="none"/>
+<image stroke="black" width="16" xlink:show="embed" xlink:type="simple" fill="black" clip-path="url(#clipPath2)" preserveAspectRatio="none" height="16" x="81" y="24" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAr0lEQVR42mNkgIKC&#13;&#10;BUf+P3jyCchiBOL/QMgIYTFCREDg/38GOFCU4WWYkGDDyAITuP/4E8OkNDsGYkHu&#13;&#10;rINgGm7Av7//GNjZmIk2gOHff1QDwBxmJgZSAZoBjJQZwEqRC4BBzEqCC/6hh8H/&#13;&#10;//8YmJmIN+D/fyyB6NewCZwO/qORMIBIIUA2IyOmAUsrvIh2QUzndjBNeqjhiwWY&#13;&#10;qWQbsKTccwC9oKIkTJIXQOqpAgBzFjJ6SnHW0gAAAABJRU5ErkJggg==" xlink:actuate="onLoad"/>
+<text x="100" y="39" clip-path="url(#clipPath3)" fill="black" stroke="none" xml:space="preserve">Class1</text>
+</g>
+<g stroke-width="1.1" font-size="15" font-family="'Segoe UI'" stroke-linecap="butt">
+<line clip-path="url(#clipPath4)" fill="none" x1="10" x2="212" y1="43" y2="43"/>
+<line clip-path="url(#clipPath5)" fill="none" x1="10" x2="212" y1="95" y2="95"/>
+<line clip-path="url(#clipPath6)" fill="none" x1="10" x2="212" y1="147" y2="147"/>
+<rect x="10" y="19" clip-path="url(#clipPath7)" fill="none" width="201" rx="0" ry="0" height="178"/>
+<rect x="232" y="10" clip-path="url(#clipPath8)" fill="url(#linearGradient2)" width="207" height="198" stroke="none"/>
+<image x="306" y="15" clip-path="url(#clipPath9)" width="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAr0lEQVR42mNkgIKC&#13;&#10;BUf+P3jyCchiBOL/QMgIYTFCREDg/38GOFCU4WWYkGDDyAITuP/4E8OkNDsGYkHu&#13;&#10;rINgGm7Av7//GNjZmIk2gOHff1QDwBxmJgZSAZoBjJQZwEqRC4BBzEqCC/6hh8H/&#13;&#10;//8YmJmIN+D/fyyB6NewCZwO/qORMIBIIUA2IyOmAUsrvIh2QUzndjBNeqjhiwWY&#13;&#10;qWQbsKTccwC9oKIkTJIXQOqpAgBzFjJ6SnHW0gAAAABJRU5ErkJggg==" xlink:type="simple" xlink:actuate="onLoad" height="16" preserveAspectRatio="none" xlink:show="embed"/>
+<text xml:space="preserve" x="325" y="30" clip-path="url(#clipPath10)" stroke="none">Class2</text>
+<line clip-path="url(#clipPath11)" fill="none" x1="232" x2="439" y1="34" y2="34"/>
+<line clip-path="url(#clipPath12)" fill="none" x1="232" x2="439" y1="92" y2="92"/>
+<line clip-path="url(#clipPath13)" fill="none" x1="232" x2="439" y1="150" y2="150"/>
+<rect x="232" y="10" clip-path="url(#clipPath14)" fill="none" width="206" rx="0" ry="0" height="197"/>
+<rect x="575" y="29" clip-path="url(#clipPath15)" fill="url(#linearGradient3)" width="180" height="159" stroke="none"/>
+<image x="635" y="34" clip-path="url(#clipPath16)" width="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAr0lEQVR42mNkgIKC&#13;&#10;BUf+P3jyCchiBOL/QMgIYTFCREDg/38GOFCU4WWYkGDDyAITuP/4E8OkNDsGYkHu&#13;&#10;rINgGm7Av7//GNjZmIk2gOHff1QDwBxmJgZSAZoBjJQZwEqRC4BBzEqCC/6hh8H/&#13;&#10;//8YmJmIN+D/fyyB6NewCZwO/qORMIBIIUA2IyOmAUsrvIh2QUzndjBNeqjhiwWY&#13;&#10;qWQbsKTccwC9oKIkTJIXQOqpAgBzFjJ6SnHW0gAAAABJRU5ErkJggg==" xlink:type="simple" xlink:actuate="onLoad" height="16" preserveAspectRatio="none" xlink:show="embed"/>
+<text xml:space="preserve" x="654" y="49" clip-path="url(#clipPath17)" stroke="none">Class3</text>
+<line clip-path="url(#clipPath18)" fill="none" x1="575" x2="755" y1="53" y2="53"/>
+<line clip-path="url(#clipPath19)" fill="none" x1="575" x2="755" y1="98" y2="98"/>
+<line clip-path="url(#clipPath20)" fill="none" x1="575" x2="755" y1="143" y2="143"/>
+<rect x="575" y="29" clip-path="url(#clipPath21)" fill="none" width="179" rx="0" ry="0" height="158"/>
+<line clip-path="url(#clipPath22)" fill="none" text-rendering="optimizeLegibility" x1="212" x2="232" y1="108" y2="109"/>
+<polygon fill="white" text-rendering="optimizeLegibility" clip-path="url(#clipPath23)" points=" 232 109 222 116 222 101" stroke="none"/>
+<polygon text-rendering="optimizeLegibility" fill="none" clip-path="url(#clipPath23)" points=" 232 109 222 116 222 101"/>
+<line clip-path="url(#clipPath22)" fill="none" text-rendering="optimizeLegibility" x1="439" x2="575" y1="109" y2="108"/>
+<text x="468" y="125" clip-path="url(#clipPath24)" text-rendering="optimizeLegibility" stroke="none" xml:space="preserve"> + class2</text>
+<text x="547" y="125" clip-path="url(#clipPath25)" text-rendering="optimizeLegibility" stroke="none" xml:space="preserve"> + class3</text>
+<text x="446" y="126" clip-path="url(#clipPath26)" text-rendering="optimizeLegibility" stroke="none" xml:space="preserve"> 1</text>
+<text x="568" y="124" clip-path="url(#clipPath27)" text-rendering="optimizeLegibility" stroke="none" xml:space="preserve"> 1</text>
+<polygon text-rendering="optimizeLegibility" clip-path="url(#clipPath28)" points=" 575 109 573 111 571 111 569 109 569 108 557 114 569 108 557 102 569 108 569 107 571 105 573 105 575 107" stroke="none"/>
+<polygon text-rendering="optimizeLegibility" fill="none" clip-path="url(#clipPath28)" points=" 575 109 573 111 571 111 569 109 569 108 557 114 569 108 557 102 569 108 569 107 571 105 573 105 575 107"/>
+</g>
+</g>
+</svg>
diff --git a/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/resource/simple-classdiag/initial/Advanced-initial.svg b/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/resource/simple-classdiag/initial/Advanced-initial.svg
new file mode 100644
index 00000000000..1bddb71c31a
--- /dev/null
+++ b/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/resource/simple-classdiag/initial/Advanced-initial.svg
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-dasharray="none" shape-rendering="auto" font-family="'Dialog'" width="308" text-rendering="auto" fill-opacity="1" contentScriptType="text/ecmascript" color-interpolation="auto" color-rendering="auto" preserveAspectRatio="xMidYMid meet" font-size="12" viewBox="0 0 308 249" fill="black" stroke="black" image-rendering="auto" stroke-miterlimit="10" zoomAndPan="magnify" version="1.0" stroke-linecap="square" stroke-linejoin="miter" contentStyleType="text/css" font-style="normal" height="249" stroke-width="1" stroke-dashoffset="0" font-weight="normal" stroke-opacity="1">
+<!--Generated by the Batik Graphics2D SVG Generator-->
+<defs id="genericDefs"/>
+<g>
+<defs id="defs1">
+<linearGradient x1="198" x2="198" y1="10" gradientUnits="userSpaceOnUse" y2="110" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient1" xlink:show="other" spreadMethod="pad">
+<stop stop-opacity="1" stop-color="white" offset="0%"/>
+<stop stop-opacity="1" stop-color="rgb(195,215,221)" offset="100%"/>
+</linearGradient>
+<linearGradient x1="10" x2="10" y1="139" gradientUnits="userSpaceOnUse" y2="239" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient2" xlink:show="other" spreadMethod="pad">
+<stop stop-opacity="1" stop-color="white" offset="0%"/>
+<stop stop-opacity="1" stop-color="rgb(195,215,221)" offset="100%"/>
+</linearGradient>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath1">
+<path d="M198 10 L198 109 L297 109 L297 10 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath2">
+<path d="M198 12 L299 12 L299 34 L198 34 L198 12 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3">
+<path d="M236 12 L280 12 L280 34 L236 34 L236 12 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4">
+<path d="M198 33 L299 33 L299 59 L198 59 L198 33 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath5">
+<path d="M198 58 L299 58 L299 84 L198 84 L198 58 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath6">
+<path d="M198 83 L299 83 L299 109 L198 109 L198 83 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath7">
+<path d="M197 9 L299 9 L299 111 L197 111 L197 9 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath8">
+<path d="M10 139 L10 238 L109 238 L109 139 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath9">
+<path d="M10 141 L111 141 L111 163 L10 163 L10 141 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath10">
+<path d="M48 141 L92 141 L92 163 L48 163 L48 141 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath11">
+<path d="M10 162 L111 162 L111 188 L10 188 L10 162 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath12">
+<path d="M10 187 L111 187 L111 213 L10 213 L10 187 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath13">
+<path d="M10 212 L111 212 L111 238 L10 238 L10 212 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath14">
+<path d="M9 138 L111 138 L111 240 L9 240 L9 138 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath15">
+<path d="M-1 -1 L309 -1 L309 250 L-1 250 L-1 -1 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath16">
+<path d="M109 163 L125 163 L125 179 L109 179 L109 163 Z"/>
+</clipPath>
+</defs>
+<g font-size="15" fill="url(#linearGradient1)" font-family="'Segoe UI'" stroke-linejoin="round" stroke="url(#linearGradient1)" stroke-width="0" stroke-miterlimit="0">
+<rect x="198" y="10" clip-path="url(#clipPath1)" width="100" height="100" stroke="none"/>
+<image stroke="black" width="16" xlink:show="embed" xlink:type="simple" fill="black" clip-path="url(#clipPath2)" preserveAspectRatio="none" height="16" x="218" y="15" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAr0lEQVR42mNkgIKC&#13;&#10;BUf+P3jyCchiBOL/QMgIYTFCREDg/38GOFCU4WWYkGDDyAITuP/4E8OkNDsGYkHu&#13;&#10;rINgGm7Av7//GNjZmIk2gOHff1QDwBxmJgZSAZoBjJQZwEqRC4BBzEqCC/6hh8H/&#13;&#10;//8YmJmIN+D/fyyB6NewCZwO/qORMIBIIUA2IyOmAUsrvIh2QUzndjBNeqjhiwWY&#13;&#10;qWQbsKTccwC9oKIkTJIXQOqpAgBzFjJ6SnHW0gAAAABJRU5ErkJggg==" xlink:actuate="onLoad"/>
+<text x="237" y="30" clip-path="url(#clipPath3)" fill="black" stroke="none" xml:space="preserve">Class1</text>
+</g>
+<g stroke-width="1.1" font-size="15" font-family="'Segoe UI'" stroke-linecap="butt">
+<line clip-path="url(#clipPath4)" fill="none" x1="198" x2="298" y1="34" y2="34"/>
+<line clip-path="url(#clipPath5)" fill="none" x1="198" x2="298" y1="59" y2="59"/>
+<line clip-path="url(#clipPath6)" fill="none" x1="198" x2="298" y1="84" y2="84"/>
+<rect x="198" y="10" clip-path="url(#clipPath7)" fill="none" width="99" rx="0" ry="0" height="99"/>
+<rect x="10" y="139" clip-path="url(#clipPath8)" fill="url(#linearGradient2)" width="100" height="100" stroke="none"/>
+<image x="30" y="144" clip-path="url(#clipPath9)" width="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAr0lEQVR42mNkgIKC&#13;&#10;BUf+P3jyCchiBOL/QMgIYTFCREDg/38GOFCU4WWYkGDDyAITuP/4E8OkNDsGYkHu&#13;&#10;rINgGm7Av7//GNjZmIk2gOHff1QDwBxmJgZSAZoBjJQZwEqRC4BBzEqCC/6hh8H/&#13;&#10;//8YmJmIN+D/fyyB6NewCZwO/qORMIBIIUA2IyOmAUsrvIh2QUzndjBNeqjhiwWY&#13;&#10;qWQbsKTccwC9oKIkTJIXQOqpAgBzFjJ6SnHW0gAAAABJRU5ErkJggg==" xlink:type="simple" xlink:actuate="onLoad" height="16" preserveAspectRatio="none" xlink:show="embed"/>
+<text xml:space="preserve" x="49" y="159" clip-path="url(#clipPath10)" stroke="none">Class2</text>
+<line clip-path="url(#clipPath11)" fill="none" x1="10" x2="110" y1="163" y2="163"/>
+<line clip-path="url(#clipPath12)" fill="none" x1="10" x2="110" y1="188" y2="188"/>
+<line clip-path="url(#clipPath13)" fill="none" x1="10" x2="110" y1="213" y2="213"/>
+<rect x="10" y="139" clip-path="url(#clipPath14)" fill="none" width="99" rx="0" ry="0" height="99"/>
+<line clip-path="url(#clipPath15)" fill="none" text-rendering="optimizeLegibility" x1="198" x2="110" y1="70" y2="177"/>
+<polygon fill="white" text-rendering="optimizeLegibility" clip-path="url(#clipPath16)" points=" 110 177 110 164 123 174" stroke="none"/>
+<polygon text-rendering="optimizeLegibility" fill="none" clip-path="url(#clipPath16)" points=" 110 177 110 164 123 174"/>
+</g>
+</g>
+</svg>
diff --git a/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/resource/simple-classdiag/initial/Basic-initial.svg b/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/resource/simple-classdiag/initial/Basic-initial.svg
new file mode 100644
index 00000000000..8e145bd9f71
--- /dev/null
+++ b/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/resource/simple-classdiag/initial/Basic-initial.svg
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-dasharray="none" shape-rendering="auto" font-family="'Dialog'" width="1004" text-rendering="auto" fill-opacity="1" contentScriptType="text/ecmascript" color-interpolation="auto" color-rendering="auto" preserveAspectRatio="xMidYMid meet" font-size="12" viewBox="0 0 1004 346" fill="black" stroke="black" image-rendering="auto" stroke-miterlimit="10" zoomAndPan="magnify" version="1.0" stroke-linecap="square" stroke-linejoin="miter" contentStyleType="text/css" font-style="normal" height="346" stroke-width="1" stroke-dashoffset="0" font-weight="normal" stroke-opacity="1">
+<!--Generated by the Batik Graphics2D SVG Generator-->
+<defs id="genericDefs"/>
+<g>
+<defs id="defs1">
+<linearGradient x1="10" x2="10" y1="157" gradientUnits="userSpaceOnUse" y2="336" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient1" xlink:show="other" spreadMethod="pad">
+<stop stop-opacity="1" stop-color="white" offset="0%"/>
+<stop stop-opacity="1" stop-color="rgb(195,215,221)" offset="100%"/>
+</linearGradient>
+<linearGradient x1="451" x2="451" y1="10" gradientUnits="userSpaceOnUse" y2="208" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient2" xlink:show="other" spreadMethod="pad">
+<stop stop-opacity="1" stop-color="white" offset="0%"/>
+<stop stop-opacity="1" stop-color="rgb(195,215,221)" offset="100%"/>
+</linearGradient>
+<linearGradient x1="814" x2="814" y1="148" gradientUnits="userSpaceOnUse" y2="307" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient3" xlink:show="other" spreadMethod="pad">
+<stop stop-opacity="1" stop-color="white" offset="0%"/>
+<stop stop-opacity="1" stop-color="rgb(195,215,221)" offset="100%"/>
+</linearGradient>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath1">
+<path d="M10 157 L10 335 L211 335 L211 157 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath2">
+<path d="M10 159 L213 159 L213 181 L10 181 L10 159 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3">
+<path d="M99 159 L143 159 L143 181 L99 181 L99 159 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4">
+<path d="M10 180 L213 180 L213 233 L10 233 L10 180 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath5">
+<path d="M10 232 L213 232 L213 285 L10 285 L10 232 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath6">
+<path d="M10 284 L213 284 L213 337 L10 337 L10 284 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath7">
+<path d="M9 156 L213 156 L213 337 L9 337 L9 156 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath8">
+<path d="M451 10 L451 207 L657 207 L657 10 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath9">
+<path d="M451 12 L659 12 L659 34 L451 34 L451 12 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath10">
+<path d="M543 12 L587 12 L587 34 L543 34 L543 12 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath11">
+<path d="M451 33 L659 33 L659 92 L451 92 L451 33 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath12">
+<path d="M451 91 L659 91 L659 150 L451 150 L451 91 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath13">
+<path d="M451 149 L659 149 L659 208 L451 208 L451 149 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath14">
+<path d="M450 9 L659 9 L659 209 L450 209 L450 9 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath15">
+<path d="M814 148 L814 306 L993 306 L993 148 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath16">
+<path d="M814 150 L995 150 L995 172 L814 172 L814 150 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath17">
+<path d="M892 150 L936 150 L936 172 L892 172 L892 150 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath18">
+<path d="M814 171 L995 171 L995 217 L814 217 L814 171 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath19">
+<path d="M814 216 L995 216 L995 262 L814 262 L814 216 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath20">
+<path d="M814 261 L995 261 L995 307 L814 307 L814 261 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath21">
+<path d="M813 147 L995 147 L995 308 L813 308 L813 147 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath22">
+<path d="M-1 -1 L1005 -1 L1005 347 L-1 347 L-1 -1 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath23">
+<path d="M438 110 L453 110 L453 127 L438 127 L438 110 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath24">
+<path d="M666 132 L726 132 L726 154 L666 154 L666 132 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath25">
+<path d="M783 212 L843 212 L843 234 L783 234 L783 212 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath26">
+<path d="M673 166 L688 166 L688 188 L673 188 L673 166 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath27">
+<path d="M797 176 L812 176 L812 198 L797 198 L797 176 Z"/>
+</clipPath>
+<clipPath clipPathUnits="userSpaceOnUse" id="clipPath28">
+<path d="M794 201 L816 201 L816 219 L794 219 L794 201 Z"/>
+</clipPath>
+</defs>
+<g font-size="15" fill="url(#linearGradient1)" font-family="'Segoe UI'" stroke-linejoin="round" stroke="url(#linearGradient1)" stroke-width="0" stroke-miterlimit="0">
+<rect x="10" y="157" clip-path="url(#clipPath1)" width="202" height="179" stroke="none"/>
+<image stroke="black" width="16" xlink:show="embed" xlink:type="simple" fill="black" clip-path="url(#clipPath2)" preserveAspectRatio="none" height="16" x="81" y="162" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAr0lEQVR42mNkgIKC&#13;&#10;BUf+P3jyCchiBOL/QMgIYTFCREDg/38GOFCU4WWYkGDDyAITuP/4E8OkNDsGYkHu&#13;&#10;rINgGm7Av7//GNjZmIk2gOHff1QDwBxmJgZSAZoBjJQZwEqRC4BBzEqCC/6hh8H/&#13;&#10;//8YmJmIN+D/fyyB6NewCZwO/qORMIBIIUA2IyOmAUsrvIh2QUzndjBNeqjhiwWY&#13;&#10;qWQbsKTccwC9oKIkTJIXQOqpAgBzFjJ6SnHW0gAAAABJRU5ErkJggg==" xlink:actuate="onLoad"/>
+<text x="100" y="177" clip-path="url(#clipPath3)" fill="black" stroke="none" xml:space="preserve">Class1</text>
+</g>
+<g stroke-width="1.1" font-size="15" font-family="'Segoe UI'" stroke-linecap="butt">
+<line clip-path="url(#clipPath4)" fill="none" x1="10" x2="212" y1="181" y2="181"/>
+<line clip-path="url(#clipPath5)" fill="none" x1="10" x2="212" y1="233" y2="233"/>
+<line clip-path="url(#clipPath6)" fill="none" x1="10" x2="212" y1="285" y2="285"/>
+<rect x="10" y="157" clip-path="url(#clipPath7)" fill="none" width="201" rx="0" ry="0" height="178"/>
+<rect x="451" y="10" clip-path="url(#clipPath8)" fill="url(#linearGradient2)" width="207" height="198" stroke="none"/>
+<image x="525" y="15" clip-path="url(#clipPath9)" width="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAr0lEQVR42mNkgIKC&#13;&#10;BUf+P3jyCchiBOL/QMgIYTFCREDg/38GOFCU4WWYkGDDyAITuP/4E8OkNDsGYkHu&#13;&#10;rINgGm7Av7//GNjZmIk2gOHff1QDwBxmJgZSAZoBjJQZwEqRC4BBzEqCC/6hh8H/&#13;&#10;//8YmJmIN+D/fyyB6NewCZwO/qORMIBIIUA2IyOmAUsrvIh2QUzndjBNeqjhiwWY&#13;&#10;qWQbsKTccwC9oKIkTJIXQOqpAgBzFjJ6SnHW0gAAAABJRU5ErkJggg==" xlink:type="simple" xlink:actuate="onLoad" height="16" preserveAspectRatio="none" xlink:show="embed"/>
+<text xml:space="preserve" x="544" y="30" clip-path="url(#clipPath10)" stroke="none">Class2</text>
+<line clip-path="url(#clipPath11)" fill="none" x1="451" x2="658" y1="34" y2="34"/>
+<line clip-path="url(#clipPath12)" fill="none" x1="451" x2="658" y1="92" y2="92"/>
+<line clip-path="url(#clipPath13)" fill="none" x1="451" x2="658" y1="150" y2="150"/>
+<rect x="451" y="10" clip-path="url(#clipPath14)" fill="none" width="206" rx="0" ry="0" height="197"/>
+<rect x="814" y="148" clip-path="url(#clipPath15)" fill="url(#linearGradient3)" width="180" height="159" stroke="none"/>
+<image x="874" y="153" clip-path="url(#clipPath16)" width="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAr0lEQVR42mNkgIKC&#13;&#10;BUf+P3jyCchiBOL/QMgIYTFCREDg/38GOFCU4WWYkGDDyAITuP/4E8OkNDsGYkHu&#13;&#10;rINgGm7Av7//GNjZmIk2gOHff1QDwBxmJgZSAZoBjJQZwEqRC4BBzEqCC/6hh8H/&#13;&#10;//8YmJmIN+D/fyyB6NewCZwO/qORMIBIIUA2IyOmAUsrvIh2QUzndjBNeqjhiwWY&#13;&#10;qWQbsKTccwC9oKIkTJIXQOqpAgBzFjJ6SnHW0gAAAABJRU5ErkJggg==" xlink:type="simple" xlink:actuate="onLoad" height="16" preserveAspectRatio="none" xlink:show="embed"/>
+<text xml:space="preserve" x="893" y="168" clip-path="url(#clipPath17)" stroke="none">Class3</text>
+<line clip-path="url(#clipPath18)" fill="none" x1="814" x2="994" y1="172" y2="172"/>
+<line clip-path="url(#clipPath19)" fill="none" x1="814" x2="994" y1="217" y2="217"/>
+<line clip-path="url(#clipPath20)" fill="none" x1="814" x2="994" y1="262" y2="262"/>
+<rect x="814" y="148" clip-path="url(#clipPath21)" fill="none" width="179" rx="0" ry="0" height="158"/>
+<line clip-path="url(#clipPath22)" fill="none" text-rendering="optimizeLegibility" x1="212" x2="451" y1="217" y2="114"/>
+<polygon fill="white" text-rendering="optimizeLegibility" clip-path="url(#clipPath23)" points=" 451 114 445 125 439 111" stroke="none"/>
+<polygon text-rendering="optimizeLegibility" fill="none" clip-path="url(#clipPath23)" points=" 451 114 445 125 439 111"/>
+<line clip-path="url(#clipPath22)" fill="none" text-rendering="optimizeLegibility" x1="658" x2="814" y1="149" y2="215"/>
+<text x="667" y="150" clip-path="url(#clipPath24)" text-rendering="optimizeLegibility" stroke="none" xml:space="preserve"> + class2</text>
+<text x="784" y="230" clip-path="url(#clipPath25)" text-rendering="optimizeLegibility" stroke="none" xml:space="preserve"> + class3</text>
+<text x="674" y="184" clip-path="url(#clipPath26)" text-rendering="optimizeLegibility" stroke="none" xml:space="preserve"> 1</text>
+<text x="798" y="194" clip-path="url(#clipPath27)" text-rendering="optimizeLegibility" stroke="none" xml:space="preserve"> 1</text>
+<polygon text-rendering="optimizeLegibility" clip-path="url(#clipPath28)" points=" 814 216 811 217 809 216 808 214 808 213 795 214 808 213 800 202 808 213 809 212 811 211 813 211 814 214" stroke="none"/>
+<polygon text-rendering="optimizeLegibility" fill="none" clip-path="url(#clipPath28)" points=" 814 216 811 217 809 216 808 214 808 213 795 214 808 213 800 202 808 213 809 212 811 211 813 211 814 214"/>
+</g>
+</g>
+</svg>
diff --git a/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/resource/simple-classdiag/model.di b/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/resource/simple-classdiag/model.di
new file mode 100644
index 00000000000..2ca86ace07f
--- /dev/null
+++ b/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/resource/simple-classdiag/model.di
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<di:SashWindowsMngr xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.eclipse.org/papyrus/0.7.0/sashdi">
+ <sashModel currentSelection="//@sashModel/@windows.0/@children.0">
+ <windows>
+ <children xsi:type="di:TabFolder">
+ <children>
+ <emfPageIdentifier href="model.notation#_xEXsQFonEea4wdu_aWZnHA"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="model.notation#_Cr8DMFsVEea4wdu_aWZnHA"/>
+ </children>
+ </children>
+ </windows>
+ </sashModel>
+</di:SashWindowsMngr>
diff --git a/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/resource/simple-classdiag/model.notation b/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/resource/simple-classdiag/model.notation
new file mode 100644
index 00000000000..c12d4ef3481
--- /dev/null
+++ b/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/resource/simple-classdiag/model.notation
@@ -0,0 +1,204 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
+ <notation:Diagram xmi:id="_xEXsQFonEea4wdu_aWZnHA" type="PapyrusUMLClassDiagram" name="Basic" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_jAvkAFooEea4wdu_aWZnHA" type="Class_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_jBDtEFooEea4wdu_aWZnHA" type="Class_NameLabel"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jBDtEVooEea4wdu_aWZnHA" type="Class_FloatingNameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jBDtElooEea4wdu_aWZnHA" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_jBJzsFooEea4wdu_aWZnHA" type="Class_AttributeCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_jBKawFooEea4wdu_aWZnHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_jBKawVooEea4wdu_aWZnHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_jBKawlooEea4wdu_aWZnHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jBKaw1ooEea4wdu_aWZnHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_jBLB0FooEea4wdu_aWZnHA" type="Class_OperationCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_jBLB0VooEea4wdu_aWZnHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_jBLB0looEea4wdu_aWZnHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_jBLB01ooEea4wdu_aWZnHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jBLB1FooEea4wdu_aWZnHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_jBLB1VooEea4wdu_aWZnHA" type="Class_NestedClassifierCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_jBLB1looEea4wdu_aWZnHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_jBLB11ooEea4wdu_aWZnHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_jBLB2FooEea4wdu_aWZnHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jBLB2VooEea4wdu_aWZnHA"/>
+ </children>
+ <element xmi:type="uml:Class" href="model.uml#_jAY-sFooEea4wdu_aWZnHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jAvkAVooEea4wdu_aWZnHA" x="104" y="307" width="202" height="179"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_jYumMFooEea4wdu_aWZnHA" type="Class_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_jYv0UFooEea4wdu_aWZnHA" type="Class_NameLabel"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jYv0UVooEea4wdu_aWZnHA" type="Class_FloatingNameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jYv0UlooEea4wdu_aWZnHA" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_jYv0U1ooEea4wdu_aWZnHA" type="Class_AttributeCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_jYv0VFooEea4wdu_aWZnHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_jYv0VVooEea4wdu_aWZnHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_jYv0VlooEea4wdu_aWZnHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jYv0V1ooEea4wdu_aWZnHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_jYv0WFooEea4wdu_aWZnHA" type="Class_OperationCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_jYv0WVooEea4wdu_aWZnHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_jYv0WlooEea4wdu_aWZnHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_jYv0W1ooEea4wdu_aWZnHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jYv0XFooEea4wdu_aWZnHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_jYv0XVooEea4wdu_aWZnHA" type="Class_NestedClassifierCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_jYv0XlooEea4wdu_aWZnHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_jYv0X1ooEea4wdu_aWZnHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_jYv0YFooEea4wdu_aWZnHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jYv0YVooEea4wdu_aWZnHA"/>
+ </children>
+ <element xmi:type="uml:Class" href="model.uml#_jYsJ8FooEea4wdu_aWZnHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jYumMVooEea4wdu_aWZnHA" x="545" y="160" width="207" height="198"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_k7VBYFooEea4wdu_aWZnHA" type="Class_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_k7VBYlooEea4wdu_aWZnHA" type="Class_NameLabel"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_k7VocFooEea4wdu_aWZnHA" type="Class_FloatingNameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_k7VocVooEea4wdu_aWZnHA" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_k7VoclooEea4wdu_aWZnHA" type="Class_AttributeCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_k7Voc1ooEea4wdu_aWZnHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_k7VodFooEea4wdu_aWZnHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_k7VodVooEea4wdu_aWZnHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_k7VodlooEea4wdu_aWZnHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_k7Vod1ooEea4wdu_aWZnHA" type="Class_OperationCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_k7VoeFooEea4wdu_aWZnHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_k7VoeVooEea4wdu_aWZnHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_k7VoelooEea4wdu_aWZnHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_k7Voe1ooEea4wdu_aWZnHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_k7WPgFooEea4wdu_aWZnHA" type="Class_NestedClassifierCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_k7WPgVooEea4wdu_aWZnHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_k7WPglooEea4wdu_aWZnHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_k7WPg1ooEea4wdu_aWZnHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_k7WPhFooEea4wdu_aWZnHA"/>
+ </children>
+ <element xmi:type="uml:Class" href="model.uml#_k7TMMFooEea4wdu_aWZnHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_k7VBYVooEea4wdu_aWZnHA" x="908" y="298" width="180" height="159"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_xEYTUFonEea4wdu_aWZnHA" name="diagram_compatibility_version" stringValue="1.2.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_xEYTUVonEea4wdu_aWZnHA"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_xEYTUlonEea4wdu_aWZnHA">
+ <owner xmi:type="uml:Model" href="model.uml#_xBILAFonEea4wdu_aWZnHA"/>
+ </styles>
+ <element xmi:type="uml:Model" href="model.uml#_xBILAFonEea4wdu_aWZnHA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_kXD2sFooEea4wdu_aWZnHA" type="Generalization_Edge" source="_jAvkAFooEea4wdu_aWZnHA" target="_jYumMFooEea4wdu_aWZnHA">
+ <children xmi:type="notation:DecorationNode" xmi:id="_kXEdwFooEea4wdu_aWZnHA" type="Generalization_StereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kXEdwVooEea4wdu_aWZnHA" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_kXD2sVooEea4wdu_aWZnHA"/>
+ <element xmi:type="uml:Generalization" href="model.uml#_kWhEIFooEea4wdu_aWZnHA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kXD2slooEea4wdu_aWZnHA" points="[306, 367, -643984, -643984]$[545, 264, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kYahkFooEea4wdu_aWZnHA" id="(1.0,0.33519553072625696)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kYahkVooEea4wdu_aWZnHA" id="(0.0,0.5252525252525253)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_lMdNoFooEea4wdu_aWZnHA" type="Association_Edge" source="_jYumMFooEea4wdu_aWZnHA" target="_k7VBYFooEea4wdu_aWZnHA">
+ <children xmi:type="notation:DecorationNode" xmi:id="_lMd0sFooEea4wdu_aWZnHA" type="Association_StereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_lMd0sVooEea4wdu_aWZnHA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_lMd0slooEea4wdu_aWZnHA" type="Association_NameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_lMd0s1ooEea4wdu_aWZnHA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_lMd0tFooEea4wdu_aWZnHA" type="Association_TargetRoleLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_lMd0tVooEea4wdu_aWZnHA" x="-20" y="-9"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_lMd0tlooEea4wdu_aWZnHA" type="Association_SourceRoleLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_lMd0t1ooEea4wdu_aWZnHA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_lMebwFooEea4wdu_aWZnHA" type="Association_SourceMultiplicityLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_lMebwVooEea4wdu_aWZnHA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_lMebwlooEea4wdu_aWZnHA" type="Association_TargetMultiplicityLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_lMebw1ooEea4wdu_aWZnHA" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_lMdNoVooEea4wdu_aWZnHA"/>
+ <element xmi:type="uml:Association" href="model.uml#_lMFaMFooEea4wdu_aWZnHA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_lMdNolooEea4wdu_aWZnHA" points="[752, 299, -643984, -643984]$[908, 365, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_lN4xAFooEea4wdu_aWZnHA" id="(1.0,0.702020202020202)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_lN4xAVooEea4wdu_aWZnHA" id="(0.0,0.42138364779874216)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_Cr8DMFsVEea4wdu_aWZnHA" type="PapyrusUMLClassDiagram" name="Advanced" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_EflLEFsVEea4wdu_aWZnHA" type="Class_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_EfnnUFsVEea4wdu_aWZnHA" type="Class_NameLabel"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_EfnnUVsVEea4wdu_aWZnHA" type="Class_FloatingNameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_EfnnUlsVEea4wdu_aWZnHA" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_EfnnU1sVEea4wdu_aWZnHA" type="Class_AttributeCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_EfoOYFsVEea4wdu_aWZnHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_EfoOYVsVEea4wdu_aWZnHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_EfoOYlsVEea4wdu_aWZnHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EfoOY1sVEea4wdu_aWZnHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_EfoOZFsVEea4wdu_aWZnHA" type="Class_OperationCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_EfoOZVsVEea4wdu_aWZnHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_EfoOZlsVEea4wdu_aWZnHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_EfoOZ1sVEea4wdu_aWZnHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EfoOaFsVEea4wdu_aWZnHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_EfoOaVsVEea4wdu_aWZnHA" type="Class_NestedClassifierCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_EfoOalsVEea4wdu_aWZnHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_EfoOa1sVEea4wdu_aWZnHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_EfoObFsVEea4wdu_aWZnHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EfoObVsVEea4wdu_aWZnHA"/>
+ </children>
+ <element xmi:type="uml:Class" href="model.uml#_jAY-sFooEea4wdu_aWZnHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EflLEVsVEea4wdu_aWZnHA" x="280" y="153" width="100" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Ef6iQFsVEea4wdu_aWZnHA" type="Class_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Ef6iQlsVEea4wdu_aWZnHA" type="Class_NameLabel"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Ef6iQ1sVEea4wdu_aWZnHA" type="Class_FloatingNameLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Ef6iRFsVEea4wdu_aWZnHA" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Ef7JUFsVEea4wdu_aWZnHA" type="Class_AttributeCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Ef7JUVsVEea4wdu_aWZnHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Ef7JUlsVEea4wdu_aWZnHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Ef7JU1sVEea4wdu_aWZnHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ef7JVFsVEea4wdu_aWZnHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Ef7JVVsVEea4wdu_aWZnHA" type="Class_OperationCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Ef7JVlsVEea4wdu_aWZnHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Ef7JV1sVEea4wdu_aWZnHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Ef7JWFsVEea4wdu_aWZnHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ef7JWVsVEea4wdu_aWZnHA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Ef7JWlsVEea4wdu_aWZnHA" type="Class_NestedClassifierCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Ef7JW1sVEea4wdu_aWZnHA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Ef7JXFsVEea4wdu_aWZnHA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Ef7JXVsVEea4wdu_aWZnHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ef7JXlsVEea4wdu_aWZnHA"/>
+ </children>
+ <element xmi:type="uml:Class" href="model.uml#_jYsJ8FooEea4wdu_aWZnHA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ef6iQVsVEea4wdu_aWZnHA" x="92" y="282" width="100" height="100"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_Cr8DMVsVEea4wdu_aWZnHA" name="diagram_compatibility_version" stringValue="1.2.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_Cr8DMlsVEea4wdu_aWZnHA"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_Cr8DM1sVEea4wdu_aWZnHA">
+ <owner xmi:type="uml:Model" href="model.uml#_xBILAFonEea4wdu_aWZnHA"/>
+ </styles>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_GmPqsFsXEea57_bwVzzcjA" name="layout:org.eclipse.elk.borderSpacing" stringValue="5.0"/>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_HfMr8FsXEea57_bwVzzcjA" name="layout:org.eclipse.elk.direction" stringValue="UP"/>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_IQpXAFsXEea57_bwVzzcjA" name="layout:org.eclipse.elk.spacing" stringValue="40.0"/>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_W2dJ0FsXEea57_bwVzzcjA" name="layout:org.eclipse.elk.algorithm" stringValue="org.eclipse.elk.layered"/>
+ <element xmi:type="uml:Model" href="model.uml#_xBILAFonEea4wdu_aWZnHA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_FVbN8FsVEea4wdu_aWZnHA" type="Generalization_Edge" source="_EflLEFsVEea4wdu_aWZnHA" target="_Ef6iQFsVEea4wdu_aWZnHA">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XIO2UFsXEea57_bwVzzcjA" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XIO2UVsXEea57_bwVzzcjA" key="routing" value="true"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XIO2UlsXEea57_bwVzzcjA" key="smoothness" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_FVb1AFsVEea4wdu_aWZnHA" visible="false" type="Generalization_StereotypeLabel">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GHmRwFsVEea4wdu_aWZnHA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FVb1AVsVEea4wdu_aWZnHA" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_FVbN8VsVEea4wdu_aWZnHA"/>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_XIOPRFsXEea57_bwVzzcjA" name="junctionPoints" stringValue="()"/>
+ <element xmi:type="uml:Generalization" href="model.uml#_kWhEIFooEea4wdu_aWZnHA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_FVbN8lsVEea4wdu_aWZnHA" points="[0, 0, 0, 40]$[0, -40, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GH2wcVsVEea4wdu_aWZnHA" id="(0.0,0.6)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GH2wclsVEea4wdu_aWZnHA" id="(1.0,0.38)"/>
+ </edges>
+ </notation:Diagram>
+</xmi:XMI>
diff --git a/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/resource/simple-classdiag/model.uml b/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/resource/simple-classdiag/model.uml
new file mode 100644
index 00000000000..8fc1afdd8e6
--- /dev/null
+++ b/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/resource/simple-classdiag/model.uml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_xBILAFonEea4wdu_aWZnHA" name="simple-classdiag">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_xI_tkFonEea4wdu_aWZnHA">
+ <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Class" xmi:id="_jAY-sFooEea4wdu_aWZnHA" name="Class1">
+ <generalization xmi:type="uml:Generalization" xmi:id="_kWhEIFooEea4wdu_aWZnHA" general="_jYsJ8FooEea4wdu_aWZnHA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_jYsJ8FooEea4wdu_aWZnHA" name="Class2">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_lMLg0FooEea4wdu_aWZnHA" name="class3" type="_k7TMMFooEea4wdu_aWZnHA" association="_lMFaMFooEea4wdu_aWZnHA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_k7TMMFooEea4wdu_aWZnHA" name="Class3"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_lMFaMFooEea4wdu_aWZnHA" memberEnd="_lMLg0FooEea4wdu_aWZnHA _lMLg0VooEea4wdu_aWZnHA">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lMJroFooEea4wdu_aWZnHA" source="org.eclipse.papyrus">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lMKSsFooEea4wdu_aWZnHA" key="nature" value="UML_Nature"/>
+ </eAnnotations>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_lMLg0VooEea4wdu_aWZnHA" name="class2" type="_jYsJ8FooEea4wdu_aWZnHA" association="_lMFaMFooEea4wdu_aWZnHA"/>
+ </packagedElement>
+</uml:Model>
diff --git a/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/src/org/eclipse/papyrus/infra/gmfdiag/elk/tests/classdiag/ClassDiagramLayoutTests.java b/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/src/org/eclipse/papyrus/infra/gmfdiag/elk/tests/classdiag/ClassDiagramLayoutTests.java
new file mode 100644
index 00000000000..be2a4a5c01e
--- /dev/null
+++ b/tests/junit/extraplugins/elk/org.eclipse.papyrus.infra.gmfdiag.elk.tests/src/org/eclipse/papyrus/infra/gmfdiag/elk/tests/classdiag/ClassDiagramLayoutTests.java
@@ -0,0 +1,183 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.infra.gmfdiag.elk.tests.classdiag;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.instanceOf;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.stream.Collectors;
+
+import org.eclipse.compare.contentmergeviewer.TokenComparator;
+import org.eclipse.compare.rangedifferencer.IRangeComparator;
+import org.eclipse.compare.rangedifferencer.RangeDifference;
+import org.eclipse.compare.rangedifferencer.RangeDifferencer;
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.IHandler;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.elk.core.service.DiagramLayoutEngine;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.common.util.WrappedException;
+import org.eclipse.gef.EditPart;
+import org.eclipse.gef.GraphicalEditPart;
+import org.eclipse.papyrus.infra.gmfdiag.export.actions.ExportAllDiagramsParameter;
+import org.eclipse.papyrus.infra.gmfdiag.export.engine.ExportAllDiagramsEngine;
+import org.eclipse.papyrus.junit.framework.classification.tests.AbstractPapyrusTest;
+import org.eclipse.papyrus.junit.utils.rules.ActiveDiagram;
+import org.eclipse.papyrus.junit.utils.rules.PapyrusEditorFixture;
+import org.eclipse.papyrus.junit.utils.rules.PluginResource;
+import org.eclipse.papyrus.junit.utils.rules.UIThreadRule;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.commands.ICommandService;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.ClassRule;
+import org.junit.Test;
+import org.junit.rules.TestRule;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.FrameworkUtil;
+
+/**
+ * Basic tests for Class diagram layout by ELK
+ */
+@PluginResource(ClassDiagramLayoutTests.SOURCE_FOLDER+"model.di")
+public class ClassDiagramLayoutTests extends AbstractPapyrusTest {
+
+ static final String SOURCE_FOLDER = "/resource/simple-classdiag/";
+
+ public static final String BASIC_DIAGRAM_NAME = "Basic";
+ public static final String ADVANCED_DIAGRAM_NAME = "Advanced";
+
+ @ClassRule
+ public static final TestRule uiThread = new UIThreadRule();
+
+ @ClassRule
+ public static final PapyrusEditorFixture editor = new PapyrusEditorFixture();
+
+ private static final int TOLERANCE = 1;
+
+ private final Rectangle class1Bounds = new Rectangle(104, 307, 202, 179);
+
+ private final Rectangle class1BoundsAfterLayout = new Rectangle(12, 21, 202, 179);
+
+ /**
+ * Creates a new {@link ClassDiagramLayoutTests}
+ */
+ public ClassDiagramLayoutTests() {
+ // Empty constructor.
+ }
+
+ @Test
+ public void testELKAdvancedLayout() {
+ editor.openDiagram(ADVANCED_DIAGRAM_NAME);
+ assertThat("Active diagram is not the one expected" , editor.getActiveDiagram().getDiagramView().getName(), equalTo(ADVANCED_DIAGRAM_NAME));
+ runLayout(editor.getEditor().getSite().getPart());
+ IFile currentFile = exportDiagramToFile();
+ IFile expectedFile = retrieveReferenceFile(editor.getActiveDiagram().getDiagramView().getName());
+ compareResult(expectedFile, currentFile);
+ editor.undo();
+ }
+
+ @Test
+ public void testELKBasicLayout() {
+ editor.openDiagram(BASIC_DIAGRAM_NAME);
+ assertThat("Active diagram is not the one expected" , editor.getActiveDiagram().getDiagramView().getName(), equalTo(BASIC_DIAGRAM_NAME));
+ runLayout(editor.getEditor().getSite().getPart());
+ EditPart class1EditPart = editor.requireEditPart(editor.getActiveDiagram().getChildBySemanticHint("Class_Shape"), editor.getModel().getPackagedElement("Class1"));
+ Rectangle class1NewBounds = ((GraphicalEditPart)class1EditPart).getFigure().getBounds();
+ assertThat("Class position after layout is not the expected one", class1NewBounds, equalTo(this.class1BoundsAfterLayout));
+ IFile currentFile = exportDiagramToFile();
+ IFile expectedFile = retrieveReferenceFile(editor.getActiveDiagram().getDiagramView().getName());
+ compareResult(expectedFile, currentFile);
+ editor.undo();
+ }
+
+ @Test
+ public void checkInitialConditions() {
+ EditPart class1EditPart = editor.requireEditPart(editor.getActiveDiagram().getChildBySemanticHint("Class_Shape"), editor.getModel().getPackagedElement("Class1"));
+ assertThat("Impossible to find Class1 edit part or is not a GraphicalEditPart", class1EditPart, instanceOf(GraphicalEditPart.class));
+ // get class1 position (no layout yet)
+ Rectangle class1Bounds = ((GraphicalEditPart)class1EditPart).getFigure().getBounds();
+ assertThat("Initial condition does not match test configuration", class1Bounds, equalTo(this.class1Bounds));
+ // check status of the ELK layout handler
+ ICommandService commandService = PlatformUI.getWorkbench().getService(ICommandService.class);
+ org.eclipse.core.commands.Command cmd = commandService.getCommand("org.eclipse.elk.core.ui.command.layout"); //$NON-NLS-1$
+ IHandler handler = cmd.getHandler();
+ ((AbstractHandler)handler).setEnabled("org.eclipse.elk.core.ui.command.layout"); //$NON-NLS-1$
+ boolean res = handler.isEnabled();
+ assertTrue("Layout must be enable", res); //$NON-NLS-1$
+ }
+
+ private IFile retrieveReferenceFile(String diagramName) {
+ Bundle bundle = FrameworkUtil.getBundle(ClassDiagramLayoutTests.class);
+ URL url = bundle.getResource(SOURCE_FOLDER+"expected/"+diagramName+"-expected.SVG");
+ try (InputStream contents = url.openStream()) {
+ IFile expectedFile = editor.getProject().getProject().getFile(URI.createURI(url.toExternalForm()).lastSegment());
+ expectedFile.create(contents, false, null);
+ } catch (Exception e) {
+ throw new WrappedException(e);
+ }
+ return editor.getProject().getProject().getFile(diagramName+"-expected.SVG"); }
+
+ private IFile exportDiagramToFile() {
+ ExportAllDiagramsEngine engine = new ExportAllDiagramsEngine();
+ ExportAllDiagramsParameter parameter = new ExportAllDiagramsParameter(editor.getModelSet());
+ parameter.setExportFormat("SVG");
+ parameter.setOutputDirectory(editor.getProject().getProject());
+ parameter.setDisplayStatus(false); // avoid popup at the end of the export
+ engine.initialise(parameter);
+ engine.export(new NullProgressMonitor(), Arrays.asList(editor.getActiveDiagram().getDiagramView()));
+ return editor.getProject().getProject().getFile(editor.getActiveDiagram().getDiagramView().getName() + "." + parameter.getExportFormat());
+ }
+
+ public void runLayout(IWorkbenchPart part) {
+ DiagramLayoutEngine.invokeLayout(part, null, false, false, false, false);
+ editor.flushDisplayEvents();
+ }
+
+ public void compareResult(IFile expected, IFile current) {
+ IRangeComparator expectedContent = new TokenComparator(readFile(expected));
+ IRangeComparator currentContent = new TokenComparator(readFile(current));
+ RangeDifference[] diffs = RangeDifferencer.findDifferences(expectedContent, currentContent);
+ for(int i = 0; i < diffs.length; i++) {
+ System.err.println(i + " -> " + diffs[i].toString());
+ }
+ assertThat("There should not be any difference, but some diffs were found.", diffs.length, equalTo(0));
+ }
+
+ private static String readFile(IFile file) {
+ try (BufferedReader buffer = new BufferedReader(new InputStreamReader(file.getContents()))) {
+ return buffer.lines().collect(Collectors.joining("\n"));
+ } catch (IOException e) {
+ fail(e.getMessage());
+ e.printStackTrace();
+ } catch (CoreException e) {
+ fail(e.getMessage());
+ e.printStackTrace();
+ }
+ return "ERROR";
+ }
+}
diff --git a/tests/junit/plugins/junit/org.eclipse.papyrus.junit.utils/src/org/eclipse/papyrus/junit/utils/rules/UIThread.java b/tests/junit/plugins/junit/org.eclipse.papyrus.junit.utils/src/org/eclipse/papyrus/junit/utils/rules/UIThread.java
new file mode 100644
index 00000000000..4f7a1bd9d25
--- /dev/null
+++ b/tests/junit/plugins/junit/org.eclipse.papyrus.junit.utils/src/org/eclipse/papyrus/junit/utils/rules/UIThread.java
@@ -0,0 +1,31 @@
+/*****************************************************************************
+ * Copyright (c) 2016 Christian W. Damus and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Christian W. Damus - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.junit.utils.rules;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Used with the {@link UIThreadRule} to annotated a test that requires the UI
+ * thread, where perhaps others in the same scope do not.
+ */
+@Target({ ElementType.METHOD, ElementType.TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+@Inherited
+public @interface UIThread {
+ // Empty annotation
+}
diff --git a/tests/junit/plugins/junit/org.eclipse.papyrus.junit.utils/src/org/eclipse/papyrus/junit/utils/rules/UIThreadRule.java b/tests/junit/plugins/junit/org.eclipse.papyrus.junit.utils/src/org/eclipse/papyrus/junit/utils/rules/UIThreadRule.java
new file mode 100644
index 00000000000..a22f6652263
--- /dev/null
+++ b/tests/junit/plugins/junit/org.eclipse.papyrus.junit.utils/src/org/eclipse/papyrus/junit/utils/rules/UIThreadRule.java
@@ -0,0 +1,94 @@
+/*****************************************************************************
+ * Copyright (c) 2016 Christian W. Damus and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Christian W. Damus - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.junit.utils.rules;
+
+import org.eclipse.papyrus.junit.utils.JUnitUtils;
+import org.eclipse.swt.widgets.Display;
+import org.junit.rules.TestRule;
+import org.junit.runner.Description;
+import org.junit.runners.model.Statement;
+
+/**
+ * A JUnit rule that runs its test synchronously on the UI thread.
+ * This should be used only when the test manipulates API that
+ * require the current thread to be the UI thread.
+ */
+public class UIThreadRule implements TestRule {
+
+ private final boolean requireAnnotation;
+
+ /**
+ * Initializes me without the requirement for any annotation: all tests
+ * in my scope will run on the UI thread.
+ */
+ public UIThreadRule() {
+ this(false);
+ }
+
+ /**
+ * Initializes me with the requirement that individual tests needin the UI
+ * thread be annotated with {@link UIThread @UIThread}.
+ *
+ * @param requireAnnotation
+ */
+ public UIThreadRule(boolean requireAnnotation) {
+ super();
+
+ this.requireAnnotation = requireAnnotation;
+ }
+
+ @Override
+ public Statement apply(final Statement base, Description description) {
+ if (!requiresUIThread(description)) {
+ return base; // Nothing to do for this test
+ } else {
+ return new Statement() {
+
+ @Override
+ public void evaluate() throws Throwable {
+ final Throwable[] caught = { null };
+
+ final Runnable runTest = new Runnable() {
+
+ @Override
+ public void run() {
+ try {
+ base.evaluate();
+ } catch (Throwable t) {
+ caught[0] = t;
+ }
+ }
+ };
+
+ if (Display.getCurrent() != null) {
+ // Just run it
+ runTest.run();
+ } else {
+ // Run it on the UI thread
+ Display.getDefault().syncExec(runTest);
+ }
+
+ if (caught[0] != null) {
+ throw caught[0];
+ }
+ }
+ };
+ }
+ }
+
+ private boolean requiresUIThread(Description description) {
+ return !requireAnnotation
+ || JUnitUtils.getAnnotation(description, UIThread.class) != null;
+ }
+}

Back to the top