diff options
author | Martin Fluegge | 2010-06-05 19:28:18 +0000 |
---|---|---|
committer | Martin Fluegge | 2010-06-05 19:28:18 +0000 |
commit | 7693663e85bf22ae381526853648358bedb87a13 (patch) | |
tree | 41772694f69a483500ee8693b96e322ca566e4f9 | |
parent | 2ef4689f1ced4900910e87eadfb6b5049de29a50 (diff) | |
download | cdo-7693663e85bf22ae381526853648358bedb87a13.tar.gz cdo-7693663e85bf22ae381526853648358bedb87a13.tar.xz cdo-7693663e85bf22ae381526853648358bedb87a13.zip |
[308232] [Dawn] Develop collaborative support for GMF on CDO
https://bugs.eclipse.org/bugs/show_bug.cgi?id=308232
238 files changed, 34424 insertions, 0 deletions
diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/.classpath b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/.classpath new file mode 100644 index 0000000000..64c5e31b7a --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/.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/J2SE-1.5"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/.cvsignore b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/.cvsignore new file mode 100644 index 0000000000..6ffb221cca --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/.cvsignore @@ -0,0 +1,3 @@ +bin +doc +text diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/.project b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/.project new file mode 100644 index 0000000000..5b88bca9b7 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn</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/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/.settings/org.eclipse.core.resources.prefs b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000000..a1cef9a448 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,3 @@ +#Thu Dec 18 13:30:26 CET 2008 +eclipse.preferences.version=1 +encoding//model/org.eclipse.emf.cdo.defs.ecorediag=UTF-8 diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000..e6d94e03c0 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,360 @@ +#Mon Apr 12 14:00:12 CEST 2010 +eclipse.preferences.version=1 +org.eclipse.jdt.core.codeComplete.argumentPrefixes= +org.eclipse.jdt.core.codeComplete.argumentSuffixes= +org.eclipse.jdt.core.codeComplete.fieldPrefixes= +org.eclipse.jdt.core.codeComplete.fieldSuffixes= +org.eclipse.jdt.core.codeComplete.localPrefixes= +org.eclipse.jdt.core.codeComplete.localSuffixes= +org.eclipse.jdt.core.codeComplete.staticFieldPrefixes= +org.eclipse.jdt.core.codeComplete.staticFieldSuffixes= +org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes= +org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes= +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.doc.comment.support=enabled +org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.autoboxing=ignore +org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning +org.eclipse.jdt.core.compiler.problem.deadCode=warning +org.eclipse.jdt.core.compiler.problem.deprecation=warning +org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled +org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled +org.eclipse.jdt.core.compiler.problem.discouragedReference=warning +org.eclipse.jdt.core.compiler.problem.emptyStatement=warning +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning +org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled +org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore +org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning +org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning +org.eclipse.jdt.core.compiler.problem.forbiddenReference=error +org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning +org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning +org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore +org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore +org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning +org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled +org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled +org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled +org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=public +org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore +org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning +org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore +org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning +org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore +org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled +org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public +org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag +org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore +org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled +org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled +org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning +org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=warning +org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning +org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning +org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore +org.eclipse.jdt.core.compiler.problem.nullReference=warning +org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning +org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore +org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning +org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore +org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning +org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning +org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning +org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled +org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning +org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled +org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore +org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning +org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning +org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore +org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning +org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning +org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning +org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled +org.eclipse.jdt.core.compiler.problem.unusedImport=warning +org.eclipse.jdt.core.compiler.problem.unusedLabel=warning +org.eclipse.jdt.core.compiler.problem.unusedLocal=warning +org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore +org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore +org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled +org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled +org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled +org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning +org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning +org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning +org.eclipse.jdt.core.compiler.source=1.5 +org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled +org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,HIGH,LOW,LOW,LOW,LOW,LOW +org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX,PERF,MEM,POLISH,@generated NOT,@ADDED +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_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_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_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.blank_lines_after_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_after_package=1 +org.eclipse.jdt.core.formatter.blank_lines_before_field=1 +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=next_line +org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_block=next_line +org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=next_line +org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=next_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_switch=next_line +org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=next_line +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true +org.eclipse.jdt.core.formatter.comment.format_block_comments=true +org.eclipse.jdt.core.formatter.comment.format_header=false +org.eclipse.jdt.core.formatter.comment.format_html=true +org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true +org.eclipse.jdt.core.formatter.comment.format_line_comments=true +org.eclipse.jdt.core.formatter.comment.format_source_code=true +org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true +org.eclipse.jdt.core.formatter.comment.indent_root_tags=true +org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert +org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert +org.eclipse.jdt.core.formatter.comment.line_length=120 +org.eclipse.jdt.core.formatter.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.format_guardian_clause_on_one_line=false +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_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=2 +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_member=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_opening_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=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=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=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=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_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_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_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_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_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_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_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_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.join_lines_in_comments=true +org.eclipse.jdt.core.formatter.join_wrapped_lines=true +org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false +org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false +org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false +org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false +org.eclipse.jdt.core.formatter.lineSplit=120 +org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false +org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false +org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 +org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 +org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true +org.eclipse.jdt.core.formatter.tabulation.char=space +org.eclipse.jdt.core.formatter.tabulation.size=2 +org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false +org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/.settings/org.eclipse.jdt.ui.prefs b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/.settings/org.eclipse.jdt.ui.prefs new file mode 100644 index 0000000000..5b95c33f76 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/.settings/org.eclipse.jdt.ui.prefs @@ -0,0 +1,120 @@ +#Thu Feb 04 09:44:24 CET 2010 +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=true +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_to_enhanced_for_loop=false +cleanup.correct_indentation=true +cleanup.format_source_code=true +cleanup.format_source_code_changes_only=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=true +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=false +cleanup.qualify_static_method_accesses_with_declaring_class=false +cleanup.remove_private_constructors=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_blocks=true +cleanup.use_blocks_only_for_return_and_throw=false +cleanup.use_parentheses_in_expressions=true +cleanup.use_this_for_non_static_field_access=true +cleanup.use_this_for_non_static_field_access_only_if_necessary=true +cleanup.use_this_for_non_static_method_access=true +cleanup.use_this_for_non_static_method_access_only_if_necessary=true +cleanup_profile=_EMFT +cleanup_settings_version=2 +eclipse.preferences.version=1 +editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true +formatter_profile=_EMFT +formatter_settings_version=11 +org.eclipse.jdt.ui.exception.name=ex +org.eclipse.jdt.ui.gettersetter.use.is=true +org.eclipse.jdt.ui.ignorelowercasenames=true +org.eclipse.jdt.ui.importorder=org.eclipse.emf.cdo;org.eclipse.emf.internal.cdo;org.eclipse.net4j;org.eclipse.internal.net4j;org.eclipse.emf;org.eclipse;com;org;javax;java; +org.eclipse.jdt.ui.javadoc=true +org.eclipse.jdt.ui.keywordthis=false +org.eclipse.jdt.ui.ondemandthreshold=99 +org.eclipse.jdt.ui.overrideannotation=true +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\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><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"/><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">/**\r\n * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany) and others.\r\n * All rights reserved. This program and the accompanying materials\r\n * are made available under the terms of the Eclipse Public License v1.0\r\n * which accompanies this distribution, and is available at\r\n * http\://www.eclipse.org/legal/epl-v10.html\r\n * \r\n * Contributors\:\r\n * Martin Fluegge - initial API and implementation\r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author Martin Fluegge\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment"/><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"/><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"/><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}\r\n${package_declaration}\r\n\r\n${typecomment}\r\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">\r\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">\r\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">\r\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">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" 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}</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> +sp_cleanup.add_default_serial_version_id=true +sp_cleanup.add_generated_serial_version_id=false +sp_cleanup.add_missing_annotations=true +sp_cleanup.add_missing_deprecated_annotations=true +sp_cleanup.add_missing_methods=false +sp_cleanup.add_missing_nls_tags=false +sp_cleanup.add_missing_override_annotations=true +sp_cleanup.add_missing_override_annotations_interface_methods=false +sp_cleanup.add_serial_version_id=false +sp_cleanup.always_use_blocks=true +sp_cleanup.always_use_parentheses_in_expressions=false +sp_cleanup.always_use_this_for_non_static_field_access=false +sp_cleanup.always_use_this_for_non_static_method_access=false +sp_cleanup.convert_to_enhanced_for_loop=false +sp_cleanup.correct_indentation=true +sp_cleanup.format_source_code=true +sp_cleanup.format_source_code_changes_only=false +sp_cleanup.make_local_variable_final=false +sp_cleanup.make_parameters_final=false +sp_cleanup.make_private_fields_final=true +sp_cleanup.make_type_abstract_if_missing_method=false +sp_cleanup.make_variable_declarations_final=false +sp_cleanup.never_use_blocks=false +sp_cleanup.never_use_parentheses_in_expressions=true +sp_cleanup.on_save_use_additional_actions=true +sp_cleanup.organize_imports=true +sp_cleanup.qualify_static_field_accesses_with_declaring_class=false +sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true +sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true +sp_cleanup.qualify_static_member_accesses_with_declaring_class=false +sp_cleanup.qualify_static_method_accesses_with_declaring_class=false +sp_cleanup.remove_private_constructors=true +sp_cleanup.remove_trailing_whitespaces=true +sp_cleanup.remove_trailing_whitespaces_all=true +sp_cleanup.remove_trailing_whitespaces_ignore_empty=false +sp_cleanup.remove_unnecessary_casts=true +sp_cleanup.remove_unnecessary_nls_tags=true +sp_cleanup.remove_unused_imports=true +sp_cleanup.remove_unused_local_variables=false +sp_cleanup.remove_unused_private_fields=true +sp_cleanup.remove_unused_private_members=false +sp_cleanup.remove_unused_private_methods=true +sp_cleanup.remove_unused_private_types=true +sp_cleanup.sort_members=false +sp_cleanup.sort_members_all=false +sp_cleanup.use_blocks=true +sp_cleanup.use_blocks_only_for_return_and_throw=false +sp_cleanup.use_parentheses_in_expressions=true +sp_cleanup.use_this_for_non_static_field_access=true +sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true +sp_cleanup.use_this_for_non_static_method_access=true +sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/.settings/org.eclipse.ltk.core.refactoring.prefs b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/.settings/org.eclipse.ltk.core.refactoring.prefs new file mode 100644 index 0000000000..864e30fe5d --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/.settings/org.eclipse.ltk.core.refactoring.prefs @@ -0,0 +1,3 @@ +#Thu Feb 04 09:44:24 CET 2010 +eclipse.preferences.version=1 +org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/.settings/org.eclipse.mylyn.tasks.ui.prefs b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/.settings/org.eclipse.mylyn.tasks.ui.prefs new file mode 100644 index 0000000000..b050639a54 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/.settings/org.eclipse.mylyn.tasks.ui.prefs @@ -0,0 +1,4 @@ +#Thu Feb 04 09:44:24 CET 2010 +eclipse.preferences.version=1 +project.repository.kind=bugzilla +project.repository.url=https\://bugs.eclipse.org/bugs diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/.settings/org.eclipse.mylyn.team.ui.prefs b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/.settings/org.eclipse.mylyn.team.ui.prefs new file mode 100644 index 0000000000..2f50f36c0c --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/.settings/org.eclipse.mylyn.team.ui.prefs @@ -0,0 +1,3 @@ +#Thu Feb 04 09:44:24 CET 2010 +commit.comment.template=[${task.id}] ${task.description} \r\n${task.url} +eclipse.preferences.version=1 diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/.settings/org.eclipse.pde.api.tools.prefs b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/.settings/org.eclipse.pde.api.tools.prefs new file mode 100644 index 0000000000..bf3053a36e --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/.settings/org.eclipse.pde.api.tools.prefs @@ -0,0 +1,94 @@ +#Thu Feb 04 09:44:24 CET 2010 +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 +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=Error +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_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 +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=Error +report_api_breakage_when_major_version_incremented=Disabled +report_resolution_errors_api_component=Warning diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/.settings/org.eclipse.pde.prefs b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/.settings/org.eclipse.pde.prefs new file mode 100644 index 0000000000..c6b96bb45e --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/.settings/org.eclipse.pde.prefs @@ -0,0 +1,31 @@ +#Thu Feb 04 09:44:24 CET 2010 +compilers.f.unresolved-features=1 +compilers.f.unresolved-plugins=1 +compilers.incompatible-environment=1 +compilers.p.build=1 +compilers.p.build.bin.includes=1 +compilers.p.build.java.compliance=1 +compilers.p.build.missing.output=2 +compilers.p.build.output.library=1 +compilers.p.build.source.library=1 +compilers.p.build.src.includes=1 +compilers.p.deprecated=1 +compilers.p.discouraged-class=1 +compilers.p.internal=1 +compilers.p.missing-packages=1 +compilers.p.missing-version-export-package=1 +compilers.p.missing-version-import-package=1 +compilers.p.missing-version-require-bundle=1 +compilers.p.no-required-att=0 +compilers.p.not-externalized-att=2 +compilers.p.unknown-attribute=1 +compilers.p.unknown-class=1 +compilers.p.unknown-element=1 +compilers.p.unknown-identifier=1 +compilers.p.unknown-resource=1 +compilers.p.unresolved-ex-points=0 +compilers.p.unresolved-import=0 +compilers.s.create-docs=false +compilers.s.doc-folder=doc +compilers.s.open-tags=1 +eclipse.preferences.version=1 diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/META-INF/MANIFEST.MF new file mode 100644 index 0000000000..5e5494a640 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/META-INF/MANIFEST.MF @@ -0,0 +1,17 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn;singleton:=true +Bundle-Version: 0.2.0.qualifier +Fragment-Host: org.eclipse.emf.cdo.dawn.examples.acore.diagram;bundle-version="0.2.0.qualifier" +Bundle-RequiredExecutionEnvironment: J2SE-1.5 +Bundle-Localization: plugin +Require-Bundle: org.eclipse.emf.cdo.dawn;bundle-version="[0.2.0,1.0.0)", + org.eclipse.emf.cdo.dawn.util;bundle-version="[0.2.0,1.0.0)", + org.eclipse.emf.cdo.ui;bundle-version="[3.0.0,4.0.0)", + org.eclipse.emf.cdo.dawn.ui;bundle-version="[0.2.0,1.0.0)" +Export-Package: org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts;version="0.2.0", + org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies;version="0.2.0", + org.eclipse.emf.cdo.dawn.examples.acore.diagram.part;version="0.2.0", + org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers;version="0.2.0" +Bundle-Vendor: %providerName diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/about.html b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/about.html new file mode 100644 index 0000000000..d35d5aed64 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/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>June 5, 2007</p> +<h3>License</h3> + +<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise +indicated below, the Content is provided to you under the terms and conditions of the +Eclipse Public License Version 1.0 ("EPL"). 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, "Program" 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 ("Redistributor") and different terms and conditions may +apply to your use of any object code in the Content. Check the Redistributor's license that was +provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise +indicated below, the terms and conditions of the EPL still apply to any source code in the Content +and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p> + +</body> +</html> diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/build.properties b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/build.properties new file mode 100644 index 0000000000..69488bb0b7 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/build.properties @@ -0,0 +1,20 @@ +# Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany) 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: +# Martin Fluegge - initial API and implementation + +# NLS_MESSAGEFORMAT_VAR +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + about.html,\ + copyright.txt,\ + plugin.properties,\ + fragment.xml +src.includes = about.html,\ + copyright.txt diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/copyright.txt b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/copyright.txt new file mode 100644 index 0000000000..9134dfaf00 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/copyright.txt @@ -0,0 +1,8 @@ +Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany) 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: + Martin Fluegge - initial API and implementation
\ No newline at end of file diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/fragment.xml b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/fragment.xml new file mode 100644 index 0000000000..599e5f57ec --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/fragment.xml @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.4"?> +<!-- + Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany) 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: + Martin Fluegge - initial API and implementation +--> +<fragment> +<extension + point="org.eclipse.ui.editors"> + <editor + class="org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.DawnAcoreDiagramEditor" + contributorClass="org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreDiagramActionBarContributor" + default="true" + extensions="acore_diagram" + icon="platform:/plugin/org.eclipse.emf.cdo.dawn.examples.acore.diagram/icons/obj16/AcoreDiagramFile.gif" + id="org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.DawnAcoreDiagramEditor" + matchingStrategy="org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreMatchingStrategy" + name="Dawn Acore Diagram"> + </editor> + </extension> + <extension + point="org.eclipse.ui.newWizards"> + <wizard + category="org.eclipse.emf.cdo.dawn.ui.category.examples" + class="org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.DawnAcoreCreationWizard" + icon="platform:/plugin/org.eclipse.emf.cdo.dawn.examples.acore.diagram/icons/obj16/AcoreDiagramFile.gif" + id="org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn.part.AcoreCreationWizardID" + name="Dawn Acore Diagram"> + <description> + description body text + </description> + </wizard> + + </extension> + <extension + point="org.eclipse.gmf.runtime.diagram.ui.resources.editor.documentProviders"> + <provider + class="org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.DawnAcoreDocumentProvider" + documentType="org.eclipse.gmf.runtime.diagram.ui.editor.IDocument" + id="org.eclipse.emf.cdo.dawn.examples.acore.diagram.part" + inputTypes="org.eclipse.emf.common.ui .URIEditorInput"> + </provider> + </extension> + <extension + point="org.eclipse.gmf.runtime.diagram.ui.editpolicyProviders"> + <editpolicyProvider + class="org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.DawnAcoreEditPolicyProvider"> + <Priority + name="Low"> + </Priority> + </editpolicyProvider> + </extension> + <extension + point="org.eclipse.emf.cdo.dawn.listeners"> + <DawnTransactionListener + class="org.eclipse.emf.cdo.dawn.notifications.DawnGMFTransactionListener"> + </DawnTransactionListener> + </extension> + <extension + point="org.eclipse.emf.cdo.dawn.editpartstylizers"> + <DawnEditPartStylizers + editpart="org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AClassEditPart" + stylizer="org.eclipse.emf.cdo.dawn.appearance.impl.DawnBasicNodeEditPartStylizerImpl"> + </DawnEditPartStylizers> + </extension> + <extension point="org.eclipse.gmf.runtime.diagram.ui.editpartProviders" id="ep-provider"> + <?gmfgen generated="true"?> + <editpartProvider class="org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.DawnAcoreEditPartProvider"> + <Priority name="Medium"/> + <object class="org.eclipse.gmf.runtime.notation.Diagram" id="generated-diagram"> + <method name="getType()" value="Acore"/> + </object> + <object class="org.eclipse.gmf.runtime.notation.Node" id="generated-nodes"> + <method name="getType()" value="2001,2002,3001,3002,3003,3004"/> + </object> + <object class="org.eclipse.gmf.runtime.notation.Edge" id="generated-links"> + <method name="getType()" value="4001,4002,4003,4004,4005"/> + </object> + <object class="org.eclipse.gmf.runtime.notation.Node" id="generated-labels"> + <method name="getType()" value="5001,5002"/> + </object> + <object class="org.eclipse.gmf.runtime.notation.Node" id="generated-compartments"> + <method name="getType()" value="7001,7002,7003,7004"/> + </object> + <context views="generated-diagram,generated-nodes,generated-links,generated-labels,generated-compartments"/> + </editpartProvider> + </extension> +</fragment> diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/plugin.properties b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/plugin.properties new file mode 100644 index 0000000000..abe6751d1b --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/plugin.properties @@ -0,0 +1,11 @@ +# Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany) 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: +# Martin Fluegge - initial API and implementation + +pluginName = CDO Dawn Examples Acore Editor Extension +providerName = Eclipse Modeling Project diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/DawnACoreRootEditPart.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/DawnACoreRootEditPart.java new file mode 100644 index 0000000000..1bcd307a98 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/DawnACoreRootEditPart.java @@ -0,0 +1,55 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + ******************************************************************************/ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts; + +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreDiagramEditorPlugin; +import org.eclipse.emf.cdo.dawn.synchronize.DawnConflictHelper; + +import org.eclipse.emf.ecore.EObject; + +import org.eclipse.gef.EditPart; +import org.eclipse.gmf.runtime.notation.View; + +/** + * @author Martin Fluegge + */ +public class DawnACoreRootEditPart extends ACoreRootEditPart +{ + + // /** + // * @generated + // */ + // public final static String MODEL_ID = "Acore"; //$NON-NLS-1$ + // + // /** + // * @generated + // */ + // public static final int VISUAL_ID = 1000; + + /** + * @generated + */ + public DawnACoreRootEditPart(View view) + { + super(view); + AcoreDiagramEditorPlugin.getInstance().logInfo("Using DawnACoreRootEditPart instead of the original one"); + } + + @Override + protected void removeChild(EditPart child) + { + if (DawnConflictHelper.isConflicted((EObject)child.getModel())) + { + return; + } + super.removeChild(child); + } +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/DawnAcoreEditPartFactory.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/DawnAcoreEditPartFactory.java new file mode 100644 index 0000000000..de83b927b3 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/DawnAcoreEditPartFactory.java @@ -0,0 +1,42 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + ******************************************************************************/ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts; + +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreDiagramEditorPlugin; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreVisualIDRegistry; + +import org.eclipse.gef.EditPart; +import org.eclipse.gmf.runtime.notation.View; + +public class DawnAcoreEditPartFactory extends AcoreEditPartFactory +{ + public DawnAcoreEditPartFactory() + { + super(); + AcoreDiagramEditorPlugin.getInstance().logInfo("Using DawnAcoreEditPartFactory instead of the original one"); + } + + @Override + public EditPart createEditPart(EditPart context, Object model) + { + if (model instanceof View) + { + View view = (View)model; + switch (AcoreVisualIDRegistry.getVisualID(view)) + { + case DawnACoreRootEditPart.VISUAL_ID: + return new DawnACoreRootEditPart(view); + } + } + + return super.createEditPart(context, model); + } +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/DawnACoreRootCanonicalEditPolicy.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/DawnACoreRootCanonicalEditPolicy.java new file mode 100644 index 0000000000..f1011b2eb6 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/DawnACoreRootCanonicalEditPolicy.java @@ -0,0 +1,61 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + ******************************************************************************/ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies; + +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreDiagramEditorPlugin; + +/** + * @author Martin Fluegge + */ +public class DawnACoreRootCanonicalEditPolicy extends ACoreRootCanonicalEditPolicy +{ + + public DawnACoreRootCanonicalEditPolicy() + { + super(); + AcoreDiagramEditorPlugin.getInstance().logInfo("Running DawnAcoreCanonicalEditPolicy instead of original one"); + } + + // @Override + // protected List getSemanticChildrenList() + // { + // List semanticChildren = super.getSemanticChildrenList(); + // List<View> viewChildren = getViewChildren(); + // + // //remove all semantic children that do not have a view because the have one in another resource, + // //or the child should not have one + // semanticChildren.removeAll(cleanCanonicalSemanticChildren(viewChildren, semanticChildren)); + // return semanticChildren; + // } + + // /** + // * @generated + // */ + // @Override + // public void refreshSemantic() + // { + // List createdViews = new LinkedList(); + // // createdViews.addAll(refreshSemanticChildren()); + // List createdConnectionViews = new LinkedList(); + // createdConnectionViews.addAll(refreshSemanticConnections()); + // createdConnectionViews.addAll(refreshConnections()); + // + // if (createdViews.size() > 1) + // { + // // perform a layout of the container + // DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host().getEditingDomain(), createdViews, host()); + // executeCommand(new ICommandProxy(layoutCmd)); + // } + // + // createdViews.addAll(createdConnectionViews); + // makeViewsImmutable(createdViews); + // } +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/part/DawnAcoreCreationWizard.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/part/DawnAcoreCreationWizard.java new file mode 100644 index 0000000000..21bd369a14 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/part/DawnAcoreCreationWizard.java @@ -0,0 +1,147 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + ******************************************************************************/ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.part; + +import org.eclipse.emf.cdo.dawn.preferences.PreferenceConstants; +import org.eclipse.emf.cdo.dawn.ui.wizards.DawnCreateNewDiagramResourceWizardPage; +import org.eclipse.emf.cdo.dawn.ui.wizards.DawnCreateNewResourceWizardPage; +import org.eclipse.emf.cdo.dawn.util.connection.CDOConnectionUtil; +import org.eclipse.emf.cdo.session.CDOSession; +import org.eclipse.emf.cdo.view.CDOView; + +import org.eclipse.emf.common.util.URI; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.jface.dialogs.ErrorDialog; +import org.eclipse.jface.operation.IRunnableWithProgress; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.actions.WorkspaceModifyOperation; + +import java.lang.reflect.InvocationTargetException; + +/** + * @author Martin Fluegge + */ +public class DawnAcoreCreationWizard extends AcoreCreationWizard +{ + private CDOView view; + + private DawnCreateNewDiagramResourceWizardPage dawnDiagramModelFilePage; + + private DawnCreateNewResourceWizardPage dawnDomainModelFilePage; + + public DawnAcoreCreationWizard() + { + super(); + // CDOConnectionUtil.instance.init("repo1", "tcp", "localhost"); + CDOConnectionUtil.instance.init(PreferenceConstants.getRepositoryName(), PreferenceConstants.getProtocol(), + PreferenceConstants.getServerName()); + CDOSession session = CDOConnectionUtil.instance.openSession(); + view = CDOConnectionUtil.instance.openView(session); + } + + @Override + public boolean performFinish() + { + AcoreDiagramEditorPlugin.getInstance().logInfo( + "Notational Model: " + dawnDiagramModelFilePage.getURI().lastSegment()); + AcoreDiagramEditorPlugin.getInstance().logInfo("Notational Model URI: " + dawnDiagramModelFilePage.getURI()); + AcoreDiagramEditorPlugin.getInstance().logInfo("Domain Model: " + dawnDomainModelFilePage.getURI().lastSegment()); + AcoreDiagramEditorPlugin.getInstance().logInfo("Domain Model URI: " + dawnDomainModelFilePage.getURI()); + IRunnableWithProgress op = new WorkspaceModifyOperation(null) + { + @Override + protected void execute(IProgressMonitor monitor) throws CoreException, InterruptedException + { + URI diagramResourceURI = dawnDiagramModelFilePage.getURI(); + URI domainModelResourceURI = dawnDomainModelFilePage.getURI(); + + diagram = DawnAcoreDiagramEditorUtil.createDiagram(diagramResourceURI, domainModelResourceURI, monitor); + + if (isOpenNewlyCreatedDiagramEditor() && diagram != null) + { + try + { + DawnAcoreDiagramEditorUtil.openDiagram(diagram); + } + catch (PartInitException e) + { + ErrorDialog.openError(getContainer().getShell(), Messages.AcoreCreationWizardOpenEditorError, null, e + .getStatus()); + } + } + } + }; + try + { + getContainer().run(false, true, op); + } + catch (InterruptedException e) + { + return false; + } + catch (InvocationTargetException e) + { + if (e.getTargetException() instanceof CoreException) + { + ErrorDialog.openError(getContainer().getShell(), Messages.AcoreCreationWizardCreationError, null, + ((CoreException)e.getTargetException()).getStatus()); + } + else + { + AcoreDiagramEditorPlugin.getInstance().logError("Error creating diagram", e.getTargetException()); //$NON-NLS-1$ + } + return false; + } + return diagram != null; + } + + @Override + public void addPages() + { + dawnDiagramModelFilePage = new DawnCreateNewDiagramResourceWizardPage("acore_diagram", false, view); + dawnDiagramModelFilePage.setTitle(Messages.AcoreCreationWizard_DiagramModelFilePageTitle); + dawnDiagramModelFilePage.setDescription(Messages.AcoreCreationWizard_DiagramModelFilePageDescription); + dawnDiagramModelFilePage.setCreateAutomaticResourceName(true); + addPage(dawnDiagramModelFilePage); + + dawnDomainModelFilePage = new DawnCreateNewResourceWizardPage("", true, view) + { + @Override + public void setVisible(boolean visible) + { + if (visible) + { + URI uri = dawnDiagramModelFilePage.getURI(); + String fileName = uri.lastSegment(); + fileName = fileName.substring(0, fileName.length() - ".acore_diagram".length()); //$NON-NLS-1$ + fileName += ".acore"; + dawnDomainModelFilePage.setResourceNamePrefix(fileName); + dawnDomainModelFilePage.setResourcePath(dawnDiagramModelFilePage.getResourcePath()); + } + super.setVisible(visible); + } + }; + dawnDomainModelFilePage.setTitle(Messages.AcoreCreationWizard_DomainModelFilePageTitle); + dawnDomainModelFilePage.setDescription(Messages.AcoreCreationWizard_DomainModelFilePageDescription); + + // allows to connect to an existing resource + dawnDomainModelFilePage.setResourceValidationType(DawnCreateNewResourceWizardPage.VALIDATION_WARN); + addPage(dawnDomainModelFilePage); + } + + @Override + public void dispose() + { + view.close(); + } +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/part/DawnAcoreDiagramEditor.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/part/DawnAcoreDiagramEditor.java new file mode 100644 index 0000000000..4b395417a7 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/part/DawnAcoreDiagramEditor.java @@ -0,0 +1,164 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + ******************************************************************************/ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.part; + +import org.eclipse.emf.cdo.dawn.diagram.part.IDawnDiagramEditor; +import org.eclipse.emf.cdo.dawn.notifications.DawnNotificationUtil; +import org.eclipse.emf.cdo.dawn.ui.DawnEditorInput; +import org.eclipse.emf.cdo.transaction.CDOTransaction; +import org.eclipse.emf.cdo.ui.CDOEditorInput; +import org.eclipse.emf.cdo.view.CDOView; + +import org.eclipse.net4j.util.transaction.TransactionException; + +import org.eclipse.emf.common.ui.URIEditorInput; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.AbstractDocumentProvider; +import org.eclipse.jface.dialogs.ErrorDialog; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.IFileEditorInput; + +/** + * @author Martin Fluegge + */ +public class DawnAcoreDiagramEditor extends AcoreDiagramEditor implements IDawnDiagramEditor +{ + + private CDOTransaction transaction; + + private boolean dirty; + + public static String ID = "org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.DawnAcoreDiagramEditor"; + + public DawnAcoreDiagramEditor() + { + super(); + AcoreDiagramEditorPlugin.getInstance().logInfo("CDO Editor ist starting"); + setDocumentProvider(new DawnAcoreDocumentProvider()); + } + + @Override + public void setInput(IEditorInput input) + { + AcoreDiagramEditorPlugin.getInstance().logInfo("Setting input for DawnAcoreDiagramEditor (" + input + ")"); + + try + { + doSetInput(input, true); + } + catch (CoreException x) + { + x.printStackTrace(System.err); + String title = x.getMessage(); + String msg = x.getMessage(); + Shell shell = getSite().getShell(); + ErrorDialog.openError(shell, title, msg, x.getStatus()); + } + transaction = (CDOTransaction)((DawnEditorInput)input).getView(); + + DawnNotificationUtil.registerResourceListeners(getEditingDomain().getResourceSet(), this); + DawnNotificationUtil.registerTransactionListeners(transaction, this); + DawnNotificationUtil.setChangeSubscriptionPolicy(transaction); + } + + @Override + protected void initializeGraphicalViewer() + { + super.initializeGraphicalViewer(); + } + + @Override + public void doSave(IProgressMonitor monitor) + { + try + { + dirty = false; + updateState(getEditorInput()); + validateState(getEditorInput()); + performSave(false, monitor); + } + catch (TransactionException e) + { + if (e.getMessage().contains("conflict")) + { + MessageDialog.openError(Display.getDefault().getActiveShell(), "conflict", + "Your Resource is in conflict and cannot be committed"); + } + else + { + throw e; + } + } + } + + @Override + public boolean isDirty() + { + // return super.isDirty() | transaction.isDirty(); + // return transaction.isDirty(); + // return super.isDirty() ; + return dirty; + } + + public String getContributorID() + { + return null; + } + + /** + * Have to override this method to change the the DocuemtnProvider behavior. + */ + @Override + protected void setDocumentProvider(IEditorInput input) + { + if (input instanceof IFileEditorInput || input instanceof URIEditorInput || input instanceof CDOEditorInput) + { + setDocumentProvider(getDocumentProvider()); + } + else + { + super.setDocumentProvider(input); + } + } + + @Override + public void dispose() + { + try + { + super.dispose(); + } + finally + { + if (transaction != null && !transaction.isClosed()) + { + transaction.close(); + } + } + } + + public CDOView getView() + { + // TODO Auto-generated method stub + return transaction; + } + + public void setDirty() + { + dirty = true; + ((AbstractDocumentProvider)getDocumentProvider()).changed(getEditorInput()); + } +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/part/DawnAcoreDiagramEditorUtil.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/part/DawnAcoreDiagramEditorUtil.java new file mode 100644 index 0000000000..204afea424 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/part/DawnAcoreDiagramEditorUtil.java @@ -0,0 +1,390 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + ******************************************************************************/ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.part; + +import org.eclipse.emf.cdo.dawn.commands.CreateSemanticResourceRecordingCommand; +import org.eclipse.emf.cdo.dawn.examples.acore.AcoreFactory; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.DawnACoreRootEditPart; +import org.eclipse.emf.cdo.dawn.preferences.PreferenceConstants; +import org.eclipse.emf.cdo.dawn.transaction.DawnGMFEditingDomainFactory; +import org.eclipse.emf.cdo.dawn.ui.DawnEditorInput; +import org.eclipse.emf.cdo.dawn.util.connection.CDOConnectionUtil; +import org.eclipse.emf.cdo.transaction.CDOTransaction; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.transaction.TransactionalEditingDomain; +import org.eclipse.emf.workspace.util.WorkspaceSynchronizer; + +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.commands.operations.OperationHistoryFactory; +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.SubProgressMonitor; +import org.eclipse.gmf.runtime.common.core.command.CommandResult; +import org.eclipse.gmf.runtime.diagram.core.services.ViewService; +import org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand; +import org.eclipse.gmf.runtime.notation.Diagram; +import org.eclipse.jface.dialogs.IDialogSettings; +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.jface.wizard.WizardDialog; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.PlatformUI; + +import java.io.IOException; +import java.util.Collections; + +/** + * @author Martin Fluegge + */ +public class DawnAcoreDiagramEditorUtil extends AcoreDiagramEditorUtil +{ + + // static CDOSession session; + + /** + * @generated + */ + public static boolean openDiagram(Resource diagram) throws PartInitException + { + IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); + return null != page.openEditor(new DawnEditorInput(diagram.getURI()), DawnAcoreDiagramEditor.ID); + } + + /** + * Runs the wizard in a dialog. + * + * @generated + */ + public static void runWizard(Shell shell, Wizard wizard, String settingsKey) + { + IDialogSettings pluginDialogSettings = AcoreDiagramEditorPlugin.getInstance().getDialogSettings(); + IDialogSettings wizardDialogSettings = pluginDialogSettings.getSection(settingsKey); + if (wizardDialogSettings == null) + { + wizardDialogSettings = pluginDialogSettings.addNewSection(settingsKey); + } + wizard.setDialogSettings(wizardDialogSettings); + WizardDialog dialog = new WizardDialog(shell, wizard); + dialog.create(); + dialog.getShell().setSize(Math.max(500, dialog.getShell().getSize().x), 500); + dialog.open(); + } + + public static Resource createDiagram(URI diagramURI, URI modelURI, IProgressMonitor progressMonitor) + { + TransactionalEditingDomain editingDomain = DawnGMFEditingDomainFactory.getInstance().createEditingDomain(); + + progressMonitor.beginTask(Messages.AcoreDiagramEditorUtil_CreateDiagramProgressTask, 3); + + CDOConnectionUtil.instance.init(PreferenceConstants.getRepositoryName(), PreferenceConstants.getProtocol(), + PreferenceConstants.getServerName()); + CDOConnectionUtil.instance.openSession(); + ResourceSet resourceSet = editingDomain.getResourceSet(); + + AcoreDiagramEditorPlugin.getInstance().logInfo("URI toString: " + diagramURI.toString()); + AcoreDiagramEditorPlugin.getInstance().logInfo("URI authority: " + diagramURI.authority()); + + CDOTransaction transaction = CDOConnectionUtil.instance.openCurrentTransaction(resourceSet, diagramURI.toString()); + + final Resource diagramResource = resourceSet.createResource(diagramURI); + + AcoreDiagramEditorPlugin.getInstance().logInfo("Diagram URI: " + diagramURI); + AcoreDiagramEditorPlugin.getInstance().logInfo("Diagram Resource: " + diagramResource); + + CreateSemanticResourceRecordingCommand createSemanticResourceCommand = new CreateSemanticResourceRecordingCommand( + editingDomain, transaction, modelURI.toString()); + + editingDomain.getCommandStack().execute(createSemanticResourceCommand); + final Resource modelResource = createSemanticResourceCommand.getResource(); + AcoreDiagramEditorPlugin.getInstance().logInfo("Model URI: " + modelURI); + AcoreDiagramEditorPlugin.getInstance().logInfo("Model Resource: " + modelResource); + + final String diagramName = diagramURI.lastSegment(); + AbstractTransactionalCommand command = new AbstractTransactionalCommand(editingDomain, + Messages.AcoreDiagramEditorUtil_CreateDiagramCommandLabel, Collections.EMPTY_LIST) + { + @Override + protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException + { + EObject model = null; + if (modelResource.getContents().size() > 0) + { + model = modelResource.getContents().get(0); + } + else + { + model = createInitialModel(); + attachModelToResource(model, modelResource); + } + + Diagram diagram = ViewService.createDiagram(model, DawnACoreRootEditPart.MODEL_ID, + AcoreDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT); + if (diagram != null) + { + diagramResource.getContents().add(diagram); + diagram.setName(diagramName); + diagram.setElement(model); + } + + try + { + modelResource.save(Collections.EMPTY_MAP); + diagramResource.save(Collections.EMPTY_MAP); + } + catch (IOException e) + { + AcoreDiagramEditorPlugin.getInstance().logError("Unable to store model and diagram resources", e); //$NON-NLS-1$ + } + + return CommandResult.newOKCommandResult(); + } + }; + try + { + OperationHistoryFactory.getOperationHistory().execute(command, new SubProgressMonitor(progressMonitor, 1), null); + } + catch (ExecutionException e) + { + AcoreDiagramEditorPlugin.getInstance().logError("Unable to create model and diagram", e); //$NON-NLS-1$ + } + setCharset(WorkspaceSynchronizer.getFile(modelResource)); + setCharset(WorkspaceSynchronizer.getFile(diagramResource)); + return diagramResource; + } + + /** + * Create a new instance of domain element associated with canvas. <!-- begin-user-doc --> <!-- end-user-doc --> + * + * @generated + */ + private static EObject createInitialModel() + { + return AcoreFactory.eINSTANCE.createACoreRoot(); + } + + /** + * Store model element in the resource. <!-- begin-user-doc --> <!-- end-user-doc --> + * + * @generated + */ + private static void attachModelToResource(EObject model, Resource resource) + { + resource.getContents().add(model); + } + + // /** + // * @generated + // */ + // public static void selectElementsInDiagram(IDiagramWorkbenchPart diagramPart, List/* EditPart */editParts) + // { + // diagramPart.getDiagramGraphicalViewer().deselectAll(); + // + // EditPart firstPrimary = null; + // for (Iterator it = editParts.iterator(); it.hasNext();) + // { + // EditPart nextPart = (EditPart)it.next(); + // diagramPart.getDiagramGraphicalViewer().appendSelection(nextPart); + // if (firstPrimary == null && nextPart instanceof IPrimaryEditPart) + // { + // firstPrimary = nextPart; + // } + // } + // + // if (!editParts.isEmpty()) + // { + // diagramPart.getDiagramGraphicalViewer().reveal(firstPrimary != null ? firstPrimary : (EditPart)editParts.get(0)); + // } + // } + + // /** + // * @generated + // */ + // private static int findElementsInDiagramByID(DiagramEditPart diagramPart, EObject element, List editPartCollector) + // { + // IDiagramGraphicalViewer viewer = (IDiagramGraphicalViewer)diagramPart.getViewer(); + // final int intialNumOfEditParts = editPartCollector.size(); + // + // if (element instanceof View) + // { // support notation element lookup + // EditPart editPart = (EditPart)viewer.getEditPartRegistry().get(element); + // if (editPart != null) + // { + // editPartCollector.add(editPart); + // return 1; + // } + // } + // + // String elementID = EMFCoreUtil.getProxyID(element); + // List associatedParts = viewer.findEditPartsForElement(elementID, IGraphicalEditPart.class); + // // perform the possible hierarchy disjoint -> take the top-most parts only + // for (Iterator editPartIt = associatedParts.iterator(); editPartIt.hasNext();) + // { + // EditPart nextPart = (EditPart)editPartIt.next(); + // EditPart parentPart = nextPart.getParent(); + // while (parentPart != null && !associatedParts.contains(parentPart)) + // { + // parentPart = parentPart.getParent(); + // } + // if (parentPart == null) + // { + // editPartCollector.add(nextPart); + // } + // } + // + // if (intialNumOfEditParts == editPartCollector.size()) + // { + // if (!associatedParts.isEmpty()) + // { + // editPartCollector.add(associatedParts.iterator().next()); + // } + // else + // { + // if (element.eContainer() != null) + // { + // return findElementsInDiagramByID(diagramPart, element.eContainer(), editPartCollector); + // } + // } + // } + // return editPartCollector.size() - intialNumOfEditParts; + // } + + // /** + // * @generated + // */ + // public static View findView(DiagramEditPart diagramEditPart, EObject targetElement, + // LazyElement2ViewMap lazyElement2ViewMap) + // { + // boolean hasStructuralURI = false; + // if (targetElement.eResource() instanceof XMLResource) + // { + // hasStructuralURI = ((XMLResource)targetElement.eResource()).getID(targetElement) == null; + // } + // + // View view = null; + // if (hasStructuralURI && !lazyElement2ViewMap.getElement2ViewMap().isEmpty()) + // { + // view = (View)lazyElement2ViewMap.getElement2ViewMap().get(targetElement); + // } + // else if (findElementsInDiagramByID(diagramEditPart, targetElement, lazyElement2ViewMap.editPartTmpHolder) > 0) + // { + // EditPart editPart = (EditPart)lazyElement2ViewMap.editPartTmpHolder.get(0); + // lazyElement2ViewMap.editPartTmpHolder.clear(); + // view = editPart.getModel() instanceof View ? (View)editPart.getModel() : null; + // } + // + // return (view == null) ? diagramEditPart.getDiagramView() : view; + // } + + // /** + // * @generated + // */ + // public static class LazyElement2ViewMap + // { + // /** + // * @generated + // */ + // private Map element2ViewMap; + // + // /** + // * @generated + // */ + // private View scope; + // + // /** + // * @generated + // */ + // private Set elementSet; + // + // /** + // * @generated + // */ + // public final List editPartTmpHolder = new ArrayList(); + // + // /** + // * @generated + // */ + // public LazyElement2ViewMap(View scope, Set elements) + // { + // this.scope = scope; + // this.elementSet = elements; + // } + // + // /** + // * @generated + // */ + // public final Map getElement2ViewMap() + // { + // if (element2ViewMap == null) + // { + // element2ViewMap = new HashMap(); + // // map possible notation elements to itself as these can't be found by view.getElement() + // for (Iterator it = elementSet.iterator(); it.hasNext();) + // { + // EObject element = (EObject)it.next(); + // if (element instanceof View) + // { + // View view = (View)element; + // if (view.getDiagram() == scope.getDiagram()) + // { + // element2ViewMap.put(element, element); // take only those that part of our diagram + // } + // } + // } + // + // buildElement2ViewMap(scope, element2ViewMap, elementSet); + // } + // return element2ViewMap; + // } + // + // /** + // * @generated + // */ + // static Map buildElement2ViewMap(View parentView, Map element2ViewMap, Set elements) + // { + // if (elements.size() == element2ViewMap.size()) + // return element2ViewMap; + // + // if (parentView.isSetElement() && !element2ViewMap.containsKey(parentView.getElement()) + // && elements.contains(parentView.getElement())) + // { + // element2ViewMap.put(parentView.getElement(), parentView); + // if (elements.size() == element2ViewMap.size()) + // return element2ViewMap; + // } + // + // for (Iterator it = parentView.getChildren().iterator(); it.hasNext();) + // { + // buildElement2ViewMap((View)it.next(), element2ViewMap, elements); + // if (elements.size() == element2ViewMap.size()) + // return element2ViewMap; + // } + // for (Iterator it = parentView.getSourceEdges().iterator(); it.hasNext();) + // { + // buildElement2ViewMap((View)it.next(), element2ViewMap, elements); + // if (elements.size() == element2ViewMap.size()) + // return element2ViewMap; + // } + // for (Iterator it = parentView.getSourceEdges().iterator(); it.hasNext();) + // { + // buildElement2ViewMap((View)it.next(), element2ViewMap, elements); + // if (elements.size() == element2ViewMap.size()) + // return element2ViewMap; + // } + // return element2ViewMap; + // } + // } // LazyElement2ViewMap + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/part/DawnAcoreDocumentProvider.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/part/DawnAcoreDocumentProvider.java new file mode 100644 index 0000000000..d270712868 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/part/DawnAcoreDocumentProvider.java @@ -0,0 +1,227 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + ******************************************************************************/ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.part; + +import org.eclipse.emf.cdo.dawn.transaction.DawnDiagramEditingDomainFactory; +import org.eclipse.emf.cdo.dawn.ui.DawnEditorInput; +import org.eclipse.emf.cdo.dawn.util.DawnDiagramUpdater; +import org.eclipse.emf.cdo.eresource.CDOResource; + +import org.eclipse.emf.common.notify.Adapter; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.Notifier; +import org.eclipse.emf.common.ui.URIEditorInput; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.transaction.NotificationFilter; +import org.eclipse.emf.transaction.TransactionalEditingDomain; + +import org.eclipse.core.resources.IStorage; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; +import org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.DiagramDocument; +import org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.IDiagramDocument; +import org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.IDocument; +import org.eclipse.gmf.runtime.diagram.ui.resources.editor.internal.util.DiagramIOUtil; +import org.eclipse.gmf.runtime.emf.core.resources.GMFResourceFactory; +import org.eclipse.gmf.runtime.notation.Diagram; +import org.eclipse.osgi.util.NLS; +import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.part.FileEditorInput; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +/** + * @author Martin Fluegge + */ +@SuppressWarnings("restriction") +public class DawnAcoreDocumentProvider extends AcoreDocumentProvider +{ + + public DawnAcoreDocumentProvider() + { + super(); + AcoreDiagramEditorPlugin.getInstance().logInfo("Using DawnAcoreDocumentProvider instead of the original one"); + } + + /** + * override to change creation of editingdomain + */ + @Override + protected IDocument createEmptyDocument() + { + DiagramDocument document = new DiagramDocument(); + document.setEditingDomain(createEditingDomain()); + return document; + } + + /** + * override to change the EditingDomain + */ + private TransactionalEditingDomain createEditingDomain() + { + TransactionalEditingDomain editingDomain = DawnDiagramEditingDomainFactory.getInstance().createEditingDomain(); + editingDomain.setID("org.eclipse.emf.cdo.dawn.examples.acore.diagram.EditingDomain"); //$NON-NLS-1$ + final NotificationFilter diagramResourceModifiedFilter = NotificationFilter.createNotifierFilter( + editingDomain.getResourceSet()).and(NotificationFilter.createEventTypeFilter(Notification.ADD)).and( + NotificationFilter.createFeatureFilter(ResourceSet.class, ResourceSet.RESOURCE_SET__RESOURCES)); + editingDomain.getResourceSet().eAdapters().add(new Adapter() + { + private Notifier myTarger; + + public Notifier getTarget() + { + return myTarger; + } + + public boolean isAdapterForType(Object type) + { + return false; + } + + public void notifyChanged(Notification notification) + { + if (diagramResourceModifiedFilter.matches(notification)) + { + Object value = notification.getNewValue(); + if (value instanceof Resource) + { + ((Resource)value).setTrackingModification(true); + } + } + } + + public void setTarget(Notifier newTarget) + { + myTarger = newTarget; + } + }); + + return editingDomain; + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + @Override + protected void setDocumentContent(IDocument document, IEditorInput element) throws CoreException + { + AcoreDiagramEditorPlugin.getInstance().logInfo("Editor Input: " + element.getName()); + + IDiagramDocument diagramDocument = (IDiagramDocument)document; + TransactionalEditingDomain domain = diagramDocument.getEditingDomain(); + if (element instanceof FileEditorInput) + { + IStorage storage = ((FileEditorInput)element).getStorage(); + Diagram diagram = DiagramIOUtil.load(domain, storage, true, getProgressMonitor()); + document.setContent(diagram); + } + else if (element instanceof URIEditorInput) + { + URIEditorInput editorInput = (URIEditorInput)element; + + URI uri = editorInput.getURI(); + Resource resource = null; + try + { + // TODO change this fake!! + URI dawnURI = URI.createURI(uri.toString().replace("cdo", "dawn")); + resource = domain.getResourceSet().getResource(dawnURI, false); + if (resource == null) + { + // TODO clarify with Eike why here a transaction will be opended?? + resource = domain.getResourceSet().getResource(dawnURI, true); + } + + if (editorInput instanceof DawnEditorInput) + { + ((DawnEditorInput)editorInput).setResource((CDOResource)resource); + } + if (!resource.isLoaded()) + { + try + { + Map options = new HashMap(GMFResourceFactory.getDefaultLoadOptions()); + resource.load(options); + } + catch (IOException e) + { + resource.unload(); + throw e; + } + } + if (uri.fragment() != null) + { + EObject rootElement = resource.getEObject(uri.fragment()); + if (rootElement instanceof Diagram) + { + Diagram diagram = (Diagram)rootElement; + DawnDiagramUpdater.initializeElement(diagram); + document.setContent(diagram); + + return; + } + } + else + { + for (Iterator<?> it = resource.getContents().iterator(); it.hasNext();) + { + Object rootElement = it.next(); + if (rootElement instanceof Diagram) + { + Diagram diagram = (Diagram)rootElement; + DawnDiagramUpdater.initializeElement(diagram); + document.setContent(diagram); + + return; + } + } + } + throw new RuntimeException(Messages.AcoreDocumentProvider_NoDiagramInResourceError); + } + catch (Exception e) + { + CoreException thrownExcp = null; + if (e instanceof CoreException) + { + thrownExcp = (CoreException)e; + } + else + { + String msg = e.getLocalizedMessage(); + thrownExcp = new CoreException(new Status(IStatus.ERROR, AcoreDiagramEditorPlugin.ID, 0, msg != null ? msg + : Messages.AcoreDocumentProvider_DiagramLoadingError, e)); + } + throw thrownExcp; + } + } + else + { + throw new CoreException(new Status(IStatus.ERROR, AcoreDiagramEditorPlugin.ID, 0, NLS.bind( + Messages.AcoreDocumentProvider_IncorrectInputError, new Object[] { element, + "org.eclipse.ui.part.FileEditorInput", "org.eclipse.emf.common.ui.URIEditorInput" }), //$NON-NLS-1$ //$NON-NLS-2$ + null)); + } + } + + @Override + public void changed(Object element) + { + if (element instanceof IEditorInput) + { + fireElementDirtyStateChanged(element, true); + } + } +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/providers/DawnAcoreEditPartProvider.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/providers/DawnAcoreEditPartProvider.java new file mode 100644 index 0000000000..b772872491 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/providers/DawnAcoreEditPartProvider.java @@ -0,0 +1,32 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + ******************************************************************************/ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers; + +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.DawnAcoreEditPartFactory; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreDiagramEditorPlugin; + +/** + * @author Martin Fluegge + */ +public class DawnAcoreEditPartProvider extends AcoreEditPartProvider +{ + /** + * This class is currently not needed because the change of the EditPolicy is done by changing the EditPart but by + * using an own EditPartPolicyProvider. The class is left to have the chance to influence the behavior of the + * EditParts from the generated fragment. + */ + public DawnAcoreEditPartProvider() + { + super(); + AcoreDiagramEditorPlugin.getInstance().logInfo("Using DawnAcoreEditPartProvider instead of the original one."); + setFactory(new DawnAcoreEditPartFactory()); + } +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/providers/DawnAcoreEditPolicyProvider.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/providers/DawnAcoreEditPolicyProvider.java new file mode 100644 index 0000000000..521f9e294e --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram.dawn/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/providers/DawnAcoreEditPolicyProvider.java @@ -0,0 +1,52 @@ +/******************************************************************************* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + ******************************************************************************/ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers; + +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.ACoreRootEditPart; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.DawnACoreRootCanonicalEditPolicy; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreDiagramEditorPlugin; + +import org.eclipse.gef.EditPart; +import org.eclipse.gmf.runtime.common.core.service.AbstractProvider; +import org.eclipse.gmf.runtime.common.core.service.IOperation; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; +import org.eclipse.gmf.runtime.diagram.ui.services.editpolicy.CreateEditPoliciesOperation; +import org.eclipse.gmf.runtime.diagram.ui.services.editpolicy.IEditPolicyProvider; + +/** + * @author Martin Fluegge + */ +public class DawnAcoreEditPolicyProvider extends AbstractProvider implements IEditPolicyProvider +{ + public static String ID = "org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.DawnAcoreEditPolicyProvider"; + + public boolean provides(IOperation operation) + { + if (operation instanceof CreateEditPoliciesOperation) + { + CreateEditPoliciesOperation editPoliciesOperation = (CreateEditPoliciesOperation)operation; + if (editPoliciesOperation.getEditPart() instanceof ACoreRootEditPart) + { + return true; + } + } + return false; + } + + public void createEditPolicies(EditPart editPart) + { + if (editPart instanceof ACoreRootEditPart) + { + AcoreDiagramEditorPlugin.getInstance().logInfo("Overwriting CANONICAL EDITING POLICY in " + editPart); + editPart.installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new DawnACoreRootCanonicalEditPolicy()); + } + } +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/.classpath b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/.classpath new file mode 100644 index 0000000000..304e86186a --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/.options b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/.options new file mode 100644 index 0000000000..ded22b4370 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/.options @@ -0,0 +1,7 @@ +# Tracing options for the org.eclipse.emf.cdo.dawn.examples.acore.diagram plug-in + +# Common issues +org.eclipse.emf.cdo.dawn.examples.acore.diagram/debug=false + +# Visual IDs +org.eclipse.emf.cdo.dawn.examples.acore.diagram/debug/visualID=false diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/.project b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/.project new file mode 100644 index 0000000000..baf08eb51b --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/.project @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>org.eclipse.emf.cdo.dawn.examples.acore.diagram</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.jdt.core.javanature</nature> + <nature>org.eclipse.pde.PluginNature</nature> + </natures> +</projectDescription> diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000..73fe0bd48b --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,12 @@ +#Sat Jun 05 21:13:40 CEST 2010 +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.5 diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/META-INF/MANIFEST.MF new file mode 100644 index 0000000000..e96020a08c --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/META-INF/MANIFEST.MF @@ -0,0 +1,40 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: org.eclipse.emf.cdo.dawn.examples.acore.diagram; singleton:=true +Bundle-Version: 0.2.0.qualifier +Bundle-ClassPath: . +Bundle-Activator: org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreDiagramEditorPlugin +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Export-Package: org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts, + org.eclipse.emf.cdo.dawn.examples.acore.diagram.part, + org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers +Require-Bundle: org.eclipse.core.runtime, + org.eclipse.core.resources, + org.eclipse.core.expressions, + org.eclipse.jface, + org.eclipse.ui.ide, + org.eclipse.ui.views, + org.eclipse.ui.navigator, + org.eclipse.ui.navigator.resources, + org.eclipse.emf.ecore, + org.eclipse.emf.ecore.xmi, + org.eclipse.emf.edit.ui, + org.eclipse.gmf.runtime.emf.core, + org.eclipse.gmf.runtime.emf.commands.core, + org.eclipse.gmf.runtime.emf.ui.properties, + org.eclipse.gmf.runtime.diagram.ui, + org.eclipse.gmf.runtime.diagram.ui.properties, + org.eclipse.gmf.runtime.diagram.ui.providers, + org.eclipse.gmf.runtime.diagram.ui.providers.ide, + org.eclipse.gmf.runtime.diagram.ui.render, + org.eclipse.gmf.runtime.diagram.ui.resources.editor, + org.eclipse.gmf.runtime.diagram.ui.resources.editor.ide, + org.eclipse.draw2d;visibility:=reexport, + org.eclipse.gmf.runtime.draw2d.ui;visibility:=reexport, + org.eclipse.emf.cdo.dawn.examples.acore;visibility:=reexport, + org.eclipse.emf.cdo.dawn.examples.acore.edit;visibility:=reexport, + org.eclipse.gef;visibility:=reexport +Bundle-ActivationPolicy: lazy +Bundle-RequiredExecutionEnvironment: J2SE-1.5 diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/build.properties b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/build.properties new file mode 100644 index 0000000000..162d13adf7 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/build.properties @@ -0,0 +1,10 @@ +bin.includes = .,\ + icons/,\ + META-INF/,\ + plugin.xml,\ + plugin.properties,\ + messages.properties,\ + .options +jars.compile.order = . +source.. = src/ +output.. = bin/ diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/icons/incomingLinksNavigatorGroup.gif b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/icons/incomingLinksNavigatorGroup.gif Binary files differnew file mode 100644 index 0000000000..fca9c53e62 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/icons/incomingLinksNavigatorGroup.gif diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/icons/linkSourceNavigatorGroup.gif b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/icons/linkSourceNavigatorGroup.gif Binary files differnew file mode 100644 index 0000000000..fca9c53e62 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/icons/linkSourceNavigatorGroup.gif diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/icons/linkTargetNavigatorGroup.gif b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/icons/linkTargetNavigatorGroup.gif Binary files differnew file mode 100644 index 0000000000..fca9c53e62 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/icons/linkTargetNavigatorGroup.gif diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/icons/linksNavigatorGroup.gif b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/icons/linksNavigatorGroup.gif Binary files differnew file mode 100644 index 0000000000..fca9c53e62 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/icons/linksNavigatorGroup.gif diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/icons/obj16/AcoreDiagramFile.gif b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/icons/obj16/AcoreDiagramFile.gif Binary files differnew file mode 100644 index 0000000000..043fc30550 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/icons/obj16/AcoreDiagramFile.gif diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/icons/outgoingLinksNavigatorGroup.gif b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/icons/outgoingLinksNavigatorGroup.gif Binary files differnew file mode 100644 index 0000000000..fca9c53e62 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/icons/outgoingLinksNavigatorGroup.gif diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/icons/wizban/NewAcoreWizard.gif b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/icons/wizban/NewAcoreWizard.gif Binary files differnew file mode 100644 index 0000000000..38e746ff3c --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/icons/wizban/NewAcoreWizard.gif diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/messages.properties b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/messages.properties new file mode 100644 index 0000000000..32781b6ffe --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/messages.properties @@ -0,0 +1,94 @@ + +# TODO: manually put keys and values +AcoreCreationWizardTitle=New Acore Diagram +AcoreCreationWizard_DiagramModelFilePageTitle=Create Acore Diagram +AcoreCreationWizard_DiagramModelFilePageDescription=Select file that will contain diagram model. +AcoreCreationWizard_DomainModelFilePageTitle=Create Acore Domain Model +AcoreCreationWizard_DomainModelFilePageDescription=Select file that will contain domain model. +AcoreCreationWizardOpenEditorError=Error opening diagram editor +AcoreCreationWizardCreationError=Creation Problems +AcoreCreationWizardPageExtensionError=File name should have {0} extension. +AcoreDiagramEditorUtil_OpenModelResourceErrorDialogTitle=Error +AcoreDiagramEditorUtil_OpenModelResourceErrorDialogMessage=Failed to load model file {0} +AcoreDiagramEditorUtil_CreateDiagramProgressTask=Creating diagram and model files +AcoreDiagramEditorUtil_CreateDiagramCommandLabel=Creating diagram and model +AcoreDocumentProvider_isModifiable=Updating cache failed +AcoreDocumentProvider_handleElementContentChanged=Failed to refresh hierarchy for changed resource +AcoreDocumentProvider_IncorrectInputError={1} +AcoreDocumentProvider_NoDiagramInResourceError=Diagram is not present in resource +AcoreDocumentProvider_DiagramLoadingError=Error loading diagram +AcoreDocumentProvider_UnsynchronizedFileSaveError=The file has been changed on the file system +AcoreDocumentProvider_SaveDiagramTask=Saving diagram +AcoreDocumentProvider_SaveNextResourceTask=Saving {0} +AcoreDocumentProvider_SaveAsOperation=Saving {0} diagram as +InitDiagramFile_ResourceErrorDialogTitle=Error +InitDiagramFile_ResourceErrorDialogMessage=Model file loading failed +InitDiagramFile_WizardTitle=Initialize new {0} diagram file +InitDiagramFile_OpenModelFileDialogTitle=Select domain model +AcoreNewDiagramFileWizard_CreationPageName=Initialize new diagram file +AcoreNewDiagramFileWizard_CreationPageTitle=Diagram file +AcoreNewDiagramFileWizard_CreationPageDescription=Create new diagram based on {0} model content +AcoreNewDiagramFileWizard_RootSelectionPageName=Select diagram root element +AcoreNewDiagramFileWizard_RootSelectionPageTitle=Diagram root element +AcoreNewDiagramFileWizard_RootSelectionPageDescription=Select semantic model element to be depicted on diagram +AcoreNewDiagramFileWizard_RootSelectionPageSelectionTitle=Select diagram root element: +AcoreNewDiagramFileWizard_RootSelectionPageNoSelectionMessage=Diagram root element is not selected +AcoreNewDiagramFileWizard_RootSelectionPageInvalidSelectionMessage=Invalid diagram root element is selected +AcoreNewDiagramFileWizard_InitDiagramCommand=Initializing diagram contents +AcoreNewDiagramFileWizard_IncorrectRootError=Incorrect model object stored as a root resource object +AcoreDiagramEditor_SavingDeletedFile=The original file "{0}" has been deleted. +AcoreDiagramEditor_SaveAsErrorTitle=Problem During Save As... +AcoreDiagramEditor_SaveAsErrorMessage=Save could not be completed. Target file is already open in another editor. +AcoreDiagramEditor_SaveErrorTitle=Save Problems +AcoreDiagramEditor_SaveErrorMessage=Could not save file. +AcoreElementChooserDialog_SelectModelElementTitle=Select model element +ModelElementSelectionPageMessage=Select model element: +ValidateActionMessage=Validate +Node1Group_title=Node +Connections2Group_title=Connections +AClass1CreationTool_title=AClass +AClass1CreationTool_desc=Create new AClass +AInterface2CreationTool_title=AInterface +AInterface2CreationTool_desc=Create new AInterface +AAttribute3CreationTool_title=AAttribute +AAttribute3CreationTool_desc=Create an Attribute +AOperation4CreationTool_title=AOperation +AOperation4CreationTool_desc=Create an Operation +Inherits1CreationTool_title=inherits +Inherits1CreationTool_desc=Create new AClassSubClasses +Implements2CreationTool_title=implements +Implements2CreationTool_desc=Create new AClassImplementedInterfaces +Association3CreationTool_title=association +Association3CreationTool_desc=Create new AClassSubClasses +Aggregation4CreationTool_title=aggregation +Aggregation4CreationTool_desc=Create new AClassSubClasses +Composition5CreationTool_title=composition +Composition5CreationTool_desc=Create new AClassSubClasses +AInterfaceAAttributeInterfaceCompartmentEditPart_title=AAttributeInterfaceCompartment +AInterfaceAOperationInterfaceCompartmentEditPart_title=AOperationInterfaceCompartment +AClassAAttributeCompartmentEditPart_title=AAttributeCompartment +AClassAOperationClassCompartmentEditPart_title=AOperationClassCompartment + +CommandName_OpenDiagram=Open Diagram +NavigatorGroupName_AClassSubClasses_4001_target=target +NavigatorGroupName_AClassSubClasses_4001_source=source +NavigatorGroupName_AClassCompositions_4005_target=target +NavigatorGroupName_AClassCompositions_4005_source=source +NavigatorGroupName_AInterface_2001_incominglinks=incoming links +NavigatorGroupName_AClassAggregations_4004_target=target +NavigatorGroupName_AClassAggregations_4004_source=source +NavigatorGroupName_AClassImplementedInterfaces_4002_target=target +NavigatorGroupName_AClassImplementedInterfaces_4002_source=source +NavigatorGroupName_AClass_2002_incominglinks=incoming links +NavigatorGroupName_AClass_2002_outgoinglinks=outgoing links +NavigatorGroupName_ACoreRoot_1000_links=links +NavigatorGroupName_AClassAssociations_4003_target=target +NavigatorGroupName_AClassAssociations_4003_source=source +NavigatorActionProvider_OpenDiagramActionName=Open Diagram +AbstractParser_UnexpectedValueType=Value of type {0} is expected +AbstractParser_WrongStringConversion=String value does not convert to {0} value +AbstractParser_UnknownLiteral=Unknown literal: {0} + +MessageFormatParser_InvalidInputError=Invalid input at {0} +AcoreModelingAssistantProviderTitle=Select domain model element +AcoreModelingAssistantProviderMessage=Available domain model elements: diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/plugin.properties b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/plugin.properties new file mode 100644 index 0000000000..f598fc4bad --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/plugin.properties @@ -0,0 +1,49 @@ +pluginName=Acore Plugin +providerName=Sample Plugin Provider, Inc + +editorName=Acore Diagram Editing +context.description=Acore Diagram Editing +context.name=In Acore Diagram Editor +newWizardName=Acore Diagram +newWizardDesc=Creates Acore diagram. + +initDiagramActionLabel=Initialize acore_diagram diagram file + + +navigatorContentName=*.acore_diagram diagram contents +domainNavigatorContentName=*.acore model contents +update.diagram.name=Update Acore diagram +update.diagram.description=Perform Acore diagram update + + +# Property Sheet +tab.appearance=Appearance +tab.diagram=Rulers & Grid +tab.domain=Core + +# Preferences +prefpage.org.eclipse.emf.cdo.dawn.examples.acore.diagram.general=Acore Diagram +prefpage.org.eclipse.emf.cdo.dawn.examples.acore.diagram.appearance=Appearance +prefpage.org.eclipse.emf.cdo.dawn.examples.acore.diagram.connections=Connections +prefpage.org.eclipse.emf.cdo.dawn.examples.acore.diagram.printing=Printing +prefpage.org.eclipse.emf.cdo.dawn.examples.acore.diagram.rulersAndGrid=Rulers And Grid + + +# Providers +metatype.name.ACoreRoot_1000=Undefined +metatype.name.AInterface_2001=AInterface +metatype.name.AClass_2002=AClass +metatype.name.AAttribute_3001=AAttribute +metatype.name.AOperation_3002=AOperation +metatype.name.AAttribute_3003=AAttribute +metatype.name.AOperation_3004=AOperation +metatype.name.AClassSubClasses_4001=Undefined +metatype.name.AClassImplementedInterfaces_4002=Undefined +metatype.name.AClassAssociations_4003=Undefined +metatype.name.AClassAggregations_4004=Undefined +metatype.name.AClassCompositions_4005=Undefined + +# Commands and menu actions +cmdcategory.name=Acore Editor Commands +cmdcategory.desc=Acore Editor Commands + diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/plugin.xml b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/plugin.xml new file mode 100644 index 0000000000..bd80742217 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/plugin.xml @@ -0,0 +1,588 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.0"?> +<!-- +Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). +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: + Martin Fluegge - initial API and implementation + +--> +<plugin> + + <extension point="org.eclipse.team.core.fileTypes" id="repo-ftype"> + <?gmfgen generated="true"?> + <fileTypes type="text" extension="acore_diagram"/> + </extension> + + <extension point="org.eclipse.emf.ecore.extension_parser" id="resource-factory"> + <?gmfgen generated="true"?> + <parser + type="acore_diagram" + class="org.eclipse.gmf.runtime.emf.core.resources.GMFResourceFactory"> + </parser> + </extension> + + <extension point="org.eclipse.ui.editors" id="gmf-editor"> + <?gmfgen generated="true"?> + <editor + id="org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreDiagramEditorID" + name="%editorName" + icon="icons/obj16/AcoreDiagramFile.gif" + extensions="acore_diagram" + default="true" + class="org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreDiagramEditor" + matchingStrategy="org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreMatchingStrategy" + contributorClass="org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreDiagramActionBarContributor"> + </editor> + </extension> + + <extension point="org.eclipse.ui.contexts" id="ui-context"> + <?gmfgen generated="true"?> + <context + description="%context.description" + id="org.eclipse.emf.cdo.dawn.examples.acore.diagram.ui.diagramContext" + name="%context.name" + parentId="org.eclipse.gmf.runtime.diagram.ui.diagramContext"> + </context> + </extension> + + <extension point="org.eclipse.ui.newWizards" id="creation-wizard"> + <?gmfgen generated="true"?> + <wizard + name="%newWizardName" + icon="icons/obj16/AcoreDiagramFile.gif" + category="org.eclipse.ui.Examples" + class="org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreCreationWizard" + id="org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreCreationWizardID"> + <description>%newWizardDesc</description> + </wizard> + </extension> + + <extension point="org.eclipse.ui.popupMenus" id="init-diagram-action"> + <?gmfgen generated="true"?> + <objectContribution + id="org.eclipse.emf.cdo.dawn.examples.acore.diagram.InitDiagram" + nameFilter="*.acore" + objectClass="org.eclipse.core.resources.IFile"> + <action + label="%initDiagramActionLabel" + class="org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreInitDiagramFileAction" + menubarPath="additions" + enablesFor="1" + id="org.eclipse.emf.cdo.dawn.examples.acore.diagram.InitDiagramAction"> + </action> + </objectContribution> + </extension> + + <extension point="org.eclipse.gmf.runtime.common.ui.services.action.globalActionHandlerProviders" id="global-actions"> + <?gmfgen generated="true"?> + <GlobalActionHandlerProvider + class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramGlobalActionHandlerProvider" + id="AcorePresentation"> + <Priority name="Lowest"/> + <ViewId id="org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreDiagramEditorID"> + <ElementType class="org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart"> + <GlobalActionId actionId="delete"/> + </ElementType> + <ElementType class="org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart"> + <GlobalActionId actionId="save"/> + </ElementType> + </ViewId> + </GlobalActionHandlerProvider> + <GlobalActionHandlerProvider + class="org.eclipse.gmf.runtime.diagram.ui.providers.ide.providers.DiagramIDEGlobalActionHandlerProvider" + id="AcorePresentationIDE"> + <Priority name="Lowest"/> + <ViewId id="org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreDiagramEditorID"> + <ElementType class="org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart"> + <GlobalActionId actionId="bookmark"/> + </ElementType> + </ViewId> + </GlobalActionHandlerProvider> + <GlobalActionHandlerProvider + class="org.eclipse.gmf.runtime.diagram.ui.render.providers.DiagramUIRenderGlobalActionHandlerProvider" + id="AcoreRender"> + <Priority name="Lowest"/> + <ViewId id="org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreDiagramEditorID"> + <ElementType class="org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart"> + <GlobalActionId actionId="cut"/> + <GlobalActionId actionId="copy"/> + <GlobalActionId actionId="paste"/> + </ElementType> + </ViewId> + </GlobalActionHandlerProvider> + </extension> + + + <extension point="org.eclipse.core.runtime.preferences" id="prefs"> + <?gmfgen generated="true"?> + <initializer class="org.eclipse.emf.cdo.dawn.examples.acore.diagram.preferences.DiagramPreferenceInitializer"/> + </extension> + + <extension point="org.eclipse.ui.preferencePages" id="prefpages"> + <?gmfgen generated="true"?> + <page + id="org.eclipse.emf.cdo.dawn.examples.acore.diagram.general" + name="%prefpage.org.eclipse.emf.cdo.dawn.examples.acore.diagram.general" + class="org.eclipse.emf.cdo.dawn.examples.acore.diagram.preferences.DiagramGeneralPreferencePage"> + </page> + <page + id="org.eclipse.emf.cdo.dawn.examples.acore.diagram.appearance" + name="%prefpage.org.eclipse.emf.cdo.dawn.examples.acore.diagram.appearance" + category="org.eclipse.emf.cdo.dawn.examples.acore.diagram.general" + class="org.eclipse.emf.cdo.dawn.examples.acore.diagram.preferences.DiagramAppearancePreferencePage"> + </page> + <page + id="org.eclipse.emf.cdo.dawn.examples.acore.diagram.connections" + name="%prefpage.org.eclipse.emf.cdo.dawn.examples.acore.diagram.connections" + category="org.eclipse.emf.cdo.dawn.examples.acore.diagram.general" + class="org.eclipse.emf.cdo.dawn.examples.acore.diagram.preferences.DiagramConnectionsPreferencePage"> + </page> + <page + id="org.eclipse.emf.cdo.dawn.examples.acore.diagram.printing" + name="%prefpage.org.eclipse.emf.cdo.dawn.examples.acore.diagram.printing" + category="org.eclipse.emf.cdo.dawn.examples.acore.diagram.general" + class="org.eclipse.emf.cdo.dawn.examples.acore.diagram.preferences.DiagramPrintingPreferencePage"> + </page> + <page + id="org.eclipse.emf.cdo.dawn.examples.acore.diagram.rulersAndGrid" + name="%prefpage.org.eclipse.emf.cdo.dawn.examples.acore.diagram.rulersAndGrid" + category="org.eclipse.emf.cdo.dawn.examples.acore.diagram.general" + class="org.eclipse.emf.cdo.dawn.examples.acore.diagram.preferences.DiagramRulersAndGridPreferencePage"> + </page> + </extension> + + <extension point="org.eclipse.ui.views.properties.tabbed.propertyContributor" id="prop-contrib"> + <?gmfgen generated="true"?> + <propertyContributor + contributorId="org.eclipse.emf.cdo.dawn.examples.acore.diagram" + labelProvider="org.eclipse.emf.cdo.dawn.examples.acore.diagram.sheet.AcoreSheetLabelProvider"> + <propertyCategory category="domain"/> + <propertyCategory category="visual"/> + <propertyCategory category="extra"/> + </propertyContributor> + </extension> + + <extension point="org.eclipse.ui.views.properties.tabbed.propertyTabs" id="proptabs"> + <?gmfgen generated="true"?> + <propertyTabs contributorId="org.eclipse.emf.cdo.dawn.examples.acore.diagram"> + <propertyTab + category="visual" + id="property.tab.AppearancePropertySection" + label="%tab.appearance"/> + <propertyTab + category="visual" + id="property.tab.DiagramPropertySection" + label="%tab.diagram"/> + <propertyTab + category="domain" + id="property.tab.domain" + label="%tab.domain"/> + </propertyTabs> + </extension> + + <extension point="org.eclipse.ui.views.properties.tabbed.propertySections" id="propsections"> + <?gmfgen generated="true"?> + <propertySections contributorId="org.eclipse.emf.cdo.dawn.examples.acore.diagram"> + <propertySection id="property.section.ConnectorAppearancePropertySection" + filter="org.eclipse.gmf.runtime.diagram.ui.properties.filters.ConnectionEditPartPropertySectionFilter" + class="org.eclipse.gmf.runtime.diagram.ui.properties.sections.appearance.ConnectionAppearancePropertySection" + tab="property.tab.AppearancePropertySection"> + </propertySection> + <propertySection id="property.section.ShapeColorAndFontPropertySection" + filter="org.eclipse.gmf.runtime.diagram.ui.properties.filters.ShapeEditPartPropertySectionFilter" + class="org.eclipse.gmf.runtime.diagram.ui.properties.sections.appearance.ShapeColorsAndFontsPropertySection" + tab="property.tab.AppearancePropertySection"> + </propertySection> + <propertySection id="property.section.DiagramColorsAndFontsPropertySection" + filter="org.eclipse.gmf.runtime.diagram.ui.properties.filters.DiagramEditPartPropertySectionFilter" + class="org.eclipse.gmf.runtime.diagram.ui.properties.sections.appearance.DiagramColorsAndFontsPropertySection" + tab="property.tab.AppearancePropertySection"> + </propertySection> + <propertySection id="property.section.RulerGridPropertySection" + filter="org.eclipse.gmf.runtime.diagram.ui.properties.filters.DiagramEditPartPropertySectionFilter" + class="org.eclipse.gmf.runtime.diagram.ui.properties.sections.grid.RulerGridPropertySection" + tab="property.tab.DiagramPropertySection"> + </propertySection> + <propertySection + id="property.section.domain" + tab="property.tab.domain" + class="org.eclipse.emf.cdo.dawn.examples.acore.diagram.sheet.AcorePropertySection"> + <input type="org.eclipse.gmf.runtime.notation.View"/> + <input type="org.eclipse.gef.EditPart"/> + <input type="org.eclipse.emf.cdo.dawn.examples.acore.diagram.navigator.AcoreAbstractNavigatorItem"/> + </propertySection> + </propertySections> + </extension> + + <extension point="org.eclipse.gmf.runtime.diagram.core.viewProviders" id="view-provider"> + <?gmfgen generated="true"?> + <viewProvider class="org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.AcoreViewProvider"> + <Priority name="Lowest"/> + <context viewClass="org.eclipse.gmf.runtime.notation.Diagram" semanticHints="Acore"/> + <context viewClass="org.eclipse.gmf.runtime.notation.Node" semanticHints="2001,2002,3001,3002,3003,3004"/> + <context viewClass="org.eclipse.gmf.runtime.notation.Edge" semanticHints="4001,4002,4003,4004,4005"/> + </viewProvider> + </extension> + + <extension point="org.eclipse.gmf.runtime.diagram.ui.editpartProviders" id="ep-provider"> + <?gmfgen generated="true"?> + <editpartProvider class="org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.AcoreEditPartProvider"> + <Priority name="Lowest"/> + <object class="org.eclipse.gmf.runtime.notation.Diagram" id="generated-diagram"> + <method name="getType()" value="Acore"/> + </object> + <object class="org.eclipse.gmf.runtime.notation.Node" id="generated-nodes"> + <method name="getType()" value="2001,2002,3001,3002,3003,3004"/> + </object> + <object class="org.eclipse.gmf.runtime.notation.Edge" id="generated-links"> + <method name="getType()" value="4001,4002,4003,4004,4005"/> + </object> + <object class="org.eclipse.gmf.runtime.notation.Node" id="generated-labels"> + <method name="getType()" value="5001,5002"/> + </object> + <object class="org.eclipse.gmf.runtime.notation.Node" id="generated-compartments"> + <method name="getType()" value="7001,7002,7003,7004"/> + </object> + <context views="generated-diagram,generated-nodes,generated-links,generated-labels,generated-compartments"/> + </editpartProvider> + </extension> + + <extension point="org.eclipse.gmf.runtime.emf.ui.modelingAssistantProviders" id="modelassist-provider"> + <?gmfgen generated="true"?> + <modelingAssistantProvider class="org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.AcoreModelingAssistantProvider"> + <Priority name="Lowest"/> + <object class="org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.ACoreRootEditPart" id="ACoreRoot_1000"/> + <object class="org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AInterfaceEditPart" id="AInterface_2001"/> + <object class="org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AClassEditPart" id="AClass_2002"/> + <context elements="ACoreRoot_1000,AInterface_2001,AClass_2002"/> + </modelingAssistantProvider> + </extension> + + <extension point="org.eclipse.gmf.runtime.common.ui.services.iconProviders" id="icon-provider"> + <?gmfgen generated="true"?> + <IconProvider class="org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.AcoreIconProvider"> + <Priority name="Low"/> + </IconProvider> + </extension> + + <extension point="org.eclipse.gmf.runtime.common.ui.services.parserProviders" id="parser-provider"> + <?gmfgen generated="true"?> + <ParserProvider class="org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.AcoreParserProvider"> + <Priority name="Lowest"/> + </ParserProvider> + </extension> + + <extension point="org.eclipse.gmf.runtime.emf.type.core.elementTypes" id="element-types"> + <?gmfgen generated="true"?> + <metamodel nsURI="http://www.eclipse.org/emf/cdo/dawn/examples/2010/ACore"> + <metamodelType + id="org.eclipse.emf.cdo.dawn.examples.acore.diagram.ACoreRoot_1000" + name="%metatype.name.ACoreRoot_1000" + kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType" + eclass="ACoreRoot" + edithelper="org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.helpers.ACoreRootEditHelper"> + <param name="semanticHint" value="1000"/> + </metamodelType> + </metamodel> + <metamodel nsURI="http://www.eclipse.org/emf/cdo/dawn/examples/2010/ACore"> + <metamodelType + id="org.eclipse.emf.cdo.dawn.examples.acore.diagram.AInterface_2001" + name="%metatype.name.AInterface_2001" + kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType" + eclass="AInterface" + edithelper="org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.helpers.AInterfaceEditHelper"> + <param name="semanticHint" value="2001"/> + </metamodelType> + </metamodel> + <metamodel nsURI="http://www.eclipse.org/emf/cdo/dawn/examples/2010/ACore"> + <metamodelType + id="org.eclipse.emf.cdo.dawn.examples.acore.diagram.AClass_2002" + name="%metatype.name.AClass_2002" + kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType" + eclass="AClass" + edithelper="org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.helpers.AClassEditHelper"> + <param name="semanticHint" value="2002"/> + </metamodelType> + </metamodel> + <metamodel nsURI="http://www.eclipse.org/emf/cdo/dawn/examples/2010/ACore"> + <metamodelType + id="org.eclipse.emf.cdo.dawn.examples.acore.diagram.AAttribute_3001" + name="%metatype.name.AAttribute_3001" + kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType" + eclass="AAttribute" + edithelper="org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.helpers.AAttributeEditHelper"> + <param name="semanticHint" value="3001"/> + </metamodelType> + </metamodel> + <metamodel nsURI="http://www.eclipse.org/emf/cdo/dawn/examples/2010/ACore"> + <metamodelType + id="org.eclipse.emf.cdo.dawn.examples.acore.diagram.AOperation_3002" + name="%metatype.name.AOperation_3002" + kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType" + eclass="AOperation" + edithelper="org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.helpers.AOperationEditHelper"> + <param name="semanticHint" value="3002"/> + </metamodelType> + </metamodel> + <metamodel nsURI="http://www.eclipse.org/emf/cdo/dawn/examples/2010/ACore"> + <specializationType + id="org.eclipse.emf.cdo.dawn.examples.acore.diagram.AAttribute_3003" + name="%metatype.name.AAttribute_3003" + kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType"> + <specializes id="org.eclipse.emf.cdo.dawn.examples.acore.diagram.AAttribute_3001"/> + <param name="semanticHint" value="3003"/> + </specializationType> + </metamodel> + <metamodel nsURI="http://www.eclipse.org/emf/cdo/dawn/examples/2010/ACore"> + <specializationType + id="org.eclipse.emf.cdo.dawn.examples.acore.diagram.AOperation_3004" + name="%metatype.name.AOperation_3004" + kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType"> + <specializes id="org.eclipse.emf.cdo.dawn.examples.acore.diagram.AOperation_3002"/> + <param name="semanticHint" value="3004"/> + </specializationType> + </metamodel> + <metamodel nsURI="http://www.eclipse.org/emf/cdo/dawn/examples/2010/ACore"> + <specializationType + id="org.eclipse.emf.cdo.dawn.examples.acore.diagram.AClassSubClasses_4001" + name="%metatype.name.AClassSubClasses_4001" + kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType"> + <specializes id="org.eclipse.gmf.runtime.emf.type.core.null"/> + <param name="semanticHint" value="4001"/> + </specializationType> + </metamodel> + <metamodel nsURI="http://www.eclipse.org/emf/cdo/dawn/examples/2010/ACore"> + <specializationType + id="org.eclipse.emf.cdo.dawn.examples.acore.diagram.AClassImplementedInterfaces_4002" + name="%metatype.name.AClassImplementedInterfaces_4002" + kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType"> + <specializes id="org.eclipse.gmf.runtime.emf.type.core.null"/> + <param name="semanticHint" value="4002"/> + </specializationType> + </metamodel> + <metamodel nsURI="http://www.eclipse.org/emf/cdo/dawn/examples/2010/ACore"> + <specializationType + id="org.eclipse.emf.cdo.dawn.examples.acore.diagram.AClassAssociations_4003" + name="%metatype.name.AClassAssociations_4003" + kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType"> + <specializes id="org.eclipse.gmf.runtime.emf.type.core.null"/> + <param name="semanticHint" value="4003"/> + </specializationType> + </metamodel> + <metamodel nsURI="http://www.eclipse.org/emf/cdo/dawn/examples/2010/ACore"> + <specializationType + id="org.eclipse.emf.cdo.dawn.examples.acore.diagram.AClassAggregations_4004" + name="%metatype.name.AClassAggregations_4004" + kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType"> + <specializes id="org.eclipse.gmf.runtime.emf.type.core.null"/> + <param name="semanticHint" value="4004"/> + </specializationType> + </metamodel> + <metamodel nsURI="http://www.eclipse.org/emf/cdo/dawn/examples/2010/ACore"> + <specializationType + id="org.eclipse.emf.cdo.dawn.examples.acore.diagram.AClassCompositions_4005" + name="%metatype.name.AClassCompositions_4005" + kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType"> + <specializes id="org.eclipse.gmf.runtime.emf.type.core.null"/> + <param name="semanticHint" value="4005"/> + </specializationType> + </metamodel> + </extension> + + <extension point="org.eclipse.gmf.runtime.emf.type.core.elementTypeBindings" id="element-types-bindings"> + <?gmfgen generated="true"?> + <clientContext id="org.eclipse.emf.cdo.dawn.examples.acore.diagram.TypeContext"> + <enablement> + <test + property="org.eclipse.gmf.runtime.emf.core.editingDomain" + value="org.eclipse.emf.cdo.dawn.examples.acore.diagram.EditingDomain"/> + </enablement> + </clientContext> + <binding context="org.eclipse.emf.cdo.dawn.examples.acore.diagram.TypeContext"> + <elementType ref="org.eclipse.emf.cdo.dawn.examples.acore.diagram.ACoreRoot_1000"/> + <elementType ref="org.eclipse.emf.cdo.dawn.examples.acore.diagram.AInterface_2001"/> + <elementType ref="org.eclipse.emf.cdo.dawn.examples.acore.diagram.AClass_2002"/> + <elementType ref="org.eclipse.emf.cdo.dawn.examples.acore.diagram.AAttribute_3001"/> + <elementType ref="org.eclipse.emf.cdo.dawn.examples.acore.diagram.AOperation_3002"/> + <elementType ref="org.eclipse.emf.cdo.dawn.examples.acore.diagram.AAttribute_3003"/> + <elementType ref="org.eclipse.emf.cdo.dawn.examples.acore.diagram.AOperation_3004"/> + <elementType ref="org.eclipse.emf.cdo.dawn.examples.acore.diagram.AClassSubClasses_4001"/> + <elementType ref="org.eclipse.emf.cdo.dawn.examples.acore.diagram.AClassImplementedInterfaces_4002"/> + <elementType ref="org.eclipse.emf.cdo.dawn.examples.acore.diagram.AClassAssociations_4003"/> + <elementType ref="org.eclipse.emf.cdo.dawn.examples.acore.diagram.AClassAggregations_4004"/> + <elementType ref="org.eclipse.emf.cdo.dawn.examples.acore.diagram.AClassCompositions_4005"/> + <advice ref="org.eclipse.gmf.runtime.diagram.core.advice.notationDepdendents"/> + </binding> + </extension> + <extension point="org.eclipse.core.expressions.propertyTesters" id="navigator-proptest.isURIEditorInput"> + <?gmfgen generated="true"?> + <propertyTester + id="org.eclipse.emf.cdo.dawn.examples.acore.diagram.URIEditorInputPropertyTester" + type="org.eclipse.emf.common.ui.URIEditorInput" + namespace="org.eclipse.emf.cdo.dawn.examples.acore.diagram" + properties="isURIEditorInput" + class="org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreUriEditorInputTester"> + </propertyTester> + </extension> + + <extension point="org.eclipse.ui.navigator.viewer" id="navigator-viewbinding"> + <?gmfgen generated="true"?> + <viewerContentBinding viewerId="org.eclipse.ui.navigator.ProjectExplorer"> + <includes> + <contentExtension pattern="org.eclipse.emf.cdo.dawn.examples.acore.diagram.resourceContent"/> + <contentExtension pattern="org.eclipse.emf.cdo.dawn.examples.acore.diagram.domainResourceContent"/> + <contentExtension pattern="org.eclipse.emf.cdo.dawn.examples.acore.diagram.navigatorLinkHelper"/> + </includes> + </viewerContentBinding> + <viewerActionBinding viewerId="org.eclipse.ui.navigator.ProjectExplorer"> + <includes> + <actionExtension pattern="org.eclipse.emf.cdo.dawn.examples.acore.diagram.navigatorActionProvider"/> + </includes> + </viewerActionBinding> + </extension> + + <extension point="org.eclipse.ui.navigator.navigatorContent" id="navigator-content"> + <?gmfgen generated="true"?> + <navigatorContent + id="org.eclipse.emf.cdo.dawn.examples.acore.diagram.resourceContent" + name="%navigatorContentName" + priority="normal" + contentProvider="org.eclipse.emf.cdo.dawn.examples.acore.diagram.navigator.AcoreNavigatorContentProvider" + labelProvider="org.eclipse.emf.cdo.dawn.examples.acore.diagram.navigator.AcoreNavigatorLabelProvider" + icon="icons/obj16/AcoreDiagramFile.gif" + activeByDefault="true"> + <triggerPoints> + <or> + <and> + <instanceof value="org.eclipse.core.resources.IFile"/> + <test property="org.eclipse.core.resources.extension" value="acore_diagram"/> + </and> + <instanceof value="org.eclipse.emf.cdo.dawn.examples.acore.diagram.navigator.AcoreAbstractNavigatorItem"/> + </or> + </triggerPoints> + <possibleChildren> + <or> + <instanceof value="org.eclipse.emf.cdo.dawn.examples.acore.diagram.navigator.AcoreAbstractNavigatorItem"/> + </or> + </possibleChildren> + <commonSorter + id="org.eclipse.emf.cdo.dawn.examples.acore.diagram.navigatorSorter" + class="org.eclipse.emf.cdo.dawn.examples.acore.diagram.navigator.AcoreNavigatorSorter"> + <parentExpression> + <or> + <and> + <instanceof value="org.eclipse.core.resources.IFile"/> + <test property="org.eclipse.core.resources.extension" value="acore_diagram"/> + </and> + <instanceof value="org.eclipse.emf.cdo.dawn.examples.acore.diagram.navigator.AcoreAbstractNavigatorItem"/> + </or> + </parentExpression> + </commonSorter> + </navigatorContent> + <navigatorContent + id="org.eclipse.emf.cdo.dawn.examples.acore.diagram.domainResourceContent" + name="%domainNavigatorContentName" + priority="normal" + contentProvider="org.eclipse.emf.cdo.dawn.examples.acore.diagram.navigator.AcoreDomainNavigatorContentProvider" + labelProvider="org.eclipse.emf.cdo.dawn.examples.acore.diagram.navigator.AcoreDomainNavigatorLabelProvider" + icon="icons/obj16/AcoreDiagramFile.gif" + activeByDefault="true"> + <triggerPoints> + <or> + <and> + <instanceof value="org.eclipse.core.resources.IFile"/> + <test property="org.eclipse.core.resources.extension" value="acore"/> + </and> + <instanceof value="org.eclipse.emf.cdo.dawn.examples.acore.diagram.navigator.AcoreDomainNavigatorItem"/> + </or> + </triggerPoints> + <possibleChildren> + <instanceof value="org.eclipse.emf.cdo.dawn.examples.acore.diagram.navigator.AcoreDomainNavigatorItem"/> + </possibleChildren> + </navigatorContent> + <actionProvider + id="org.eclipse.emf.cdo.dawn.examples.acore.diagram.navigatorActionProvider" + class="org.eclipse.emf.cdo.dawn.examples.acore.diagram.navigator.AcoreNavigatorActionProvider"> + <enablement> + <or> + <instanceof value="org.eclipse.emf.cdo.dawn.examples.acore.diagram.navigator.AcoreAbstractNavigatorItem"/> + </or> + </enablement> + </actionProvider> + </extension> + + <extension point="org.eclipse.ui.navigator.linkHelper" id="navigator-linkhelper"> + <?gmfgen generated="true"?> + <linkHelper + id="org.eclipse.emf.cdo.dawn.examples.acore.diagram.navigatorLinkHelper" + class="org.eclipse.emf.cdo.dawn.examples.acore.diagram.navigator.AcoreNavigatorLinkHelper"> + <editorInputEnablement> + <and> + <instanceof value="org.eclipse.emf.common.ui.URIEditorInput"/> + <test property="org.eclipse.emf.cdo.dawn.examples.acore.diagram.isURIEditorInput"/> + </and> + </editorInputEnablement> + <selectionEnablement> + <instanceof value="org.eclipse.emf.cdo.dawn.examples.acore.diagram.navigator.AcoreAbstractNavigatorItem"/> + </selectionEnablement> + </linkHelper> + </extension> + <extension point="org.eclipse.ui.commands" id="update-cmd"> + <?gmfgen generated="true"?> + <command + categoryId="org.eclipse.ui.category.edit" + defaultHandler="org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreDiagramUpdateCommand" + description="%update.diagram.description" + id="org.eclipse.emf.cdo.dawn.examples.acore.diagram.updateDiagram" + name="%update.diagram.name"/> + </extension> + + <extension point="org.eclipse.ui.bindings" id="update-cmd-binding"> + <?gmfgen generated="true"?> + <key + commandId="org.eclipse.emf.cdo.dawn.examples.acore.diagram.updateDiagram" + contextId="org.eclipse.emf.cdo.dawn.examples.acore.diagram.ui.diagramContext" + schemeId="org.eclipse.ui.defaultAcceleratorConfiguration" + sequence="F5"/> + </extension> + + <extension point="org.eclipse.ui.menus" id="context-menus"> + <?gmfgen generated="true"?> + <!-- menuContribution locationURI="menu:org.eclipse.ui.main.menu?after="> + </menuContribution> + <menuContribution locationURI="toolbar:org.eclipse.ui.main.toolbar?after="> + </menuContribution --> + <menuContribution locationURI="popup:org.eclipse.gmf.runtime.diagram.ui.DiagramEditorContextMenu"> + <command commandId="org.eclipse.emf.cdo.dawn.examples.acore.diagram.LoadResourceAction"> + <visibleWhen> + <and> + <with variable="activePartId"><equals value="org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreDiagramEditorID"/></with> + <with variable="selection"><iterate ifEmpty="false"> + <instanceof value="org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.ACoreRootEditPart"/> + </iterate></with> + </and> + </visibleWhen> + </command> + </menuContribution> + </extension> + + <extension point="org.eclipse.ui.commands" id="menu-commands"> + <?gmfgen generated="true"?> + <category id="org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreDiagramEditorID" name="%cmdcategory.name" description="%cmdcategory.desc"/> + <command id="org.eclipse.emf.cdo.dawn.examples.acore.diagram.LoadResourceAction" + name="Load Resource" + categoryId="org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreDiagramEditorID" + defaultHandler="org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.LoadResourceAction"/> + </extension> + + <extension point="org.eclipse.ui.handlers" id="menu-handlers"> + <?gmfgen generated="true"?> + </extension> + + <!-- optionally, specify keybindings --> +</plugin> diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AAttribute2CreateCommand.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AAttribute2CreateCommand.java new file mode 100644 index 0000000000..1b7d24f852 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AAttribute2CreateCommand.java @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.commands; + +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.emf.cdo.dawn.examples.acore.AAttribute; +import org.eclipse.emf.cdo.dawn.examples.acore.ABasicClass; +import org.eclipse.emf.cdo.dawn.examples.acore.AcoreFactory; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.gmf.runtime.common.core.command.CommandResult; +import org.eclipse.gmf.runtime.common.core.command.ICommand; +import org.eclipse.gmf.runtime.emf.type.core.IElementType; +import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand; +import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; +import org.eclipse.gmf.runtime.notation.View; + +/** + * @generated + */ +public class AAttribute2CreateCommand extends EditElementCommand +{ + + /** + * @generated + */ + public AAttribute2CreateCommand(CreateElementRequest req) + { + super(req.getLabel(), null, req); + } + + /** + * FIXME: replace with setElementToEdit() + * @generated + */ + protected EObject getElementToEdit() + { + EObject container = ((CreateElementRequest)getRequest()).getContainer(); + if (container instanceof View) + { + container = ((View)container).getElement(); + } + return container; + } + + /** + * @generated + */ + public boolean canExecute() + { + return true; + + } + + /** + * @generated + */ + protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException + { + AAttribute newElement = AcoreFactory.eINSTANCE.createAAttribute(); + + ABasicClass owner = (ABasicClass)getElementToEdit(); + owner.getAttributes().add(newElement); + + doConfigure(newElement, monitor, info); + + ((CreateElementRequest)getRequest()).setNewElement(newElement); + return CommandResult.newOKCommandResult(newElement); + } + + /** + * @generated + */ + protected void doConfigure(AAttribute newElement, IProgressMonitor monitor, IAdaptable info) + throws ExecutionException + { + IElementType elementType = ((CreateElementRequest)getRequest()).getElementType(); + ConfigureRequest configureRequest = new ConfigureRequest(getEditingDomain(), newElement, elementType); + configureRequest.setClientContext(((CreateElementRequest)getRequest()).getClientContext()); + configureRequest.addParameters(getRequest().getParameters()); + ICommand configureCommand = elementType.getEditCommand(configureRequest); + if (configureCommand != null && configureCommand.canExecute()) + { + configureCommand.execute(monitor, info); + } + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AAttributeCreateCommand.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AAttributeCreateCommand.java new file mode 100644 index 0000000000..ff60d8441e --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AAttributeCreateCommand.java @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.commands; + +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.emf.cdo.dawn.examples.acore.AAttribute; +import org.eclipse.emf.cdo.dawn.examples.acore.ABasicClass; +import org.eclipse.emf.cdo.dawn.examples.acore.AcoreFactory; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.gmf.runtime.common.core.command.CommandResult; +import org.eclipse.gmf.runtime.common.core.command.ICommand; +import org.eclipse.gmf.runtime.emf.type.core.IElementType; +import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand; +import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; +import org.eclipse.gmf.runtime.notation.View; + +/** + * @generated + */ +public class AAttributeCreateCommand extends EditElementCommand +{ + + /** + * @generated + */ + public AAttributeCreateCommand(CreateElementRequest req) + { + super(req.getLabel(), null, req); + } + + /** + * FIXME: replace with setElementToEdit() + * @generated + */ + protected EObject getElementToEdit() + { + EObject container = ((CreateElementRequest)getRequest()).getContainer(); + if (container instanceof View) + { + container = ((View)container).getElement(); + } + return container; + } + + /** + * @generated + */ + public boolean canExecute() + { + return true; + + } + + /** + * @generated + */ + protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException + { + AAttribute newElement = AcoreFactory.eINSTANCE.createAAttribute(); + + ABasicClass owner = (ABasicClass)getElementToEdit(); + owner.getAttributes().add(newElement); + + doConfigure(newElement, monitor, info); + + ((CreateElementRequest)getRequest()).setNewElement(newElement); + return CommandResult.newOKCommandResult(newElement); + } + + /** + * @generated + */ + protected void doConfigure(AAttribute newElement, IProgressMonitor monitor, IAdaptable info) + throws ExecutionException + { + IElementType elementType = ((CreateElementRequest)getRequest()).getElementType(); + ConfigureRequest configureRequest = new ConfigureRequest(getEditingDomain(), newElement, elementType); + configureRequest.setClientContext(((CreateElementRequest)getRequest()).getClientContext()); + configureRequest.addParameters(getRequest().getParameters()); + ICommand configureCommand = elementType.getEditCommand(configureRequest); + if (configureCommand != null && configureCommand.canExecute()) + { + configureCommand.execute(monitor, info); + } + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AClassAggregationsCreateCommand.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AClassAggregationsCreateCommand.java new file mode 100644 index 0000000000..229259b719 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AClassAggregationsCreateCommand.java @@ -0,0 +1,116 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.commands; + +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.emf.cdo.dawn.examples.acore.AClass; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AcoreBaseItemSemanticEditPolicy; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.gmf.runtime.common.core.command.CommandResult; +import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand; +import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; + +/** + * @generated + */ +public class AClassAggregationsCreateCommand extends EditElementCommand +{ + + /** + * @generated + */ + private final EObject source; + + /** + * @generated + */ + private final EObject target; + + /** + * @generated + */ + public AClassAggregationsCreateCommand(CreateRelationshipRequest request, EObject source, EObject target) + { + super(request.getLabel(), null, request); + this.source = source; + this.target = target; + } + + /** + * @generated + */ + public boolean canExecute() + { + if (source == null && target == null) + { + return false; + } + if (source != null && false == source instanceof AClass) + { + return false; + } + if (target != null && false == target instanceof AClass) + { + return false; + } + if (getSource() == null) + { + return true; // link creation is in progress; source is not defined yet + } + // target may be null here but it's possible to check constraint + return AcoreBaseItemSemanticEditPolicy.LinkConstraints.canCreateAClassAggregations_4004(getSource(), getTarget()); + } + + /** + * @generated + */ + protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException + { + if (!canExecute()) + { + throw new ExecutionException("Invalid arguments in create link command"); //$NON-NLS-1$ + } + + if (getSource() != null && getTarget() != null) + { + getSource().getAggregations().add(getTarget()); + } + return CommandResult.newOKCommandResult(); + + } + + /** + * @generated + */ + protected void setElementToEdit(EObject element) + { + throw new UnsupportedOperationException(); + } + + /** + * @generated + */ + protected AClass getSource() + { + return (AClass)source; + } + + /** + * @generated + */ + protected AClass getTarget() + { + return (AClass)target; + } +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AClassAggregationsReorientCommand.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AClassAggregationsReorientCommand.java new file mode 100644 index 0000000000..c0e2177bbb --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AClassAggregationsReorientCommand.java @@ -0,0 +1,180 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.commands; + +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.emf.cdo.dawn.examples.acore.AClass; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AcoreBaseItemSemanticEditPolicy; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.gmf.runtime.common.core.command.CommandResult; +import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand; +import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientReferenceRelationshipRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest; + +/** + * @generated + */ +public class AClassAggregationsReorientCommand extends EditElementCommand +{ + + /** + * @generated + */ + private final int reorientDirection; + + /** + * @generated + */ + private final EObject referenceOwner; + + /** + * @generated + */ + private final EObject oldEnd; + + /** + * @generated + */ + private final EObject newEnd; + + /** + * @generated + */ + public AClassAggregationsReorientCommand(ReorientReferenceRelationshipRequest request) + { + super(request.getLabel(), null, request); + reorientDirection = request.getDirection(); + referenceOwner = request.getReferenceOwner(); + oldEnd = request.getOldRelationshipEnd(); + newEnd = request.getNewRelationshipEnd(); + } + + /** + * @generated + */ + public boolean canExecute() + { + if (false == referenceOwner instanceof AClass) + { + return false; + } + if (reorientDirection == ReorientRelationshipRequest.REORIENT_SOURCE) + { + return canReorientSource(); + } + if (reorientDirection == ReorientRelationshipRequest.REORIENT_TARGET) + { + return canReorientTarget(); + } + return false; + } + + /** + * @generated + */ + protected boolean canReorientSource() + { + if (!(oldEnd instanceof AClass && newEnd instanceof AClass)) + { + return false; + } + return AcoreBaseItemSemanticEditPolicy.LinkConstraints.canExistAClassAggregations_4004(getNewSource(), + getOldTarget()); + } + + /** + * @generated + */ + protected boolean canReorientTarget() + { + if (!(oldEnd instanceof AClass && newEnd instanceof AClass)) + { + return false; + } + return AcoreBaseItemSemanticEditPolicy.LinkConstraints.canExistAClassAggregations_4004(getOldSource(), + getNewTarget()); + } + + /** + * @generated + */ + protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException + { + if (!canExecute()) + { + throw new ExecutionException("Invalid arguments in reorient link command"); //$NON-NLS-1$ + } + if (reorientDirection == ReorientRelationshipRequest.REORIENT_SOURCE) + { + return reorientSource(); + } + if (reorientDirection == ReorientRelationshipRequest.REORIENT_TARGET) + { + return reorientTarget(); + } + throw new IllegalStateException(); + } + + /** + * @generated + */ + protected CommandResult reorientSource() throws ExecutionException + { + getOldSource().getAggregations().remove(getOldTarget()); + getNewSource().getAggregations().add(getOldTarget()); + return CommandResult.newOKCommandResult(referenceOwner); + } + + /** + * @generated + */ + protected CommandResult reorientTarget() throws ExecutionException + { + getOldSource().getAggregations().remove(getOldTarget()); + getOldSource().getAggregations().add(getNewTarget()); + return CommandResult.newOKCommandResult(referenceOwner); + } + + /** + * @generated + */ + protected AClass getOldSource() + { + return (AClass)referenceOwner; + } + + /** + * @generated + */ + protected AClass getNewSource() + { + return (AClass)newEnd; + } + + /** + * @generated + */ + protected AClass getOldTarget() + { + return (AClass)oldEnd; + } + + /** + * @generated + */ + protected AClass getNewTarget() + { + return (AClass)newEnd; + } +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AClassAssociationsCreateCommand.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AClassAssociationsCreateCommand.java new file mode 100644 index 0000000000..4f345f37ee --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AClassAssociationsCreateCommand.java @@ -0,0 +1,116 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.commands; + +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.emf.cdo.dawn.examples.acore.AClass; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AcoreBaseItemSemanticEditPolicy; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.gmf.runtime.common.core.command.CommandResult; +import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand; +import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; + +/** + * @generated + */ +public class AClassAssociationsCreateCommand extends EditElementCommand +{ + + /** + * @generated + */ + private final EObject source; + + /** + * @generated + */ + private final EObject target; + + /** + * @generated + */ + public AClassAssociationsCreateCommand(CreateRelationshipRequest request, EObject source, EObject target) + { + super(request.getLabel(), null, request); + this.source = source; + this.target = target; + } + + /** + * @generated + */ + public boolean canExecute() + { + if (source == null && target == null) + { + return false; + } + if (source != null && false == source instanceof AClass) + { + return false; + } + if (target != null && false == target instanceof AClass) + { + return false; + } + if (getSource() == null) + { + return true; // link creation is in progress; source is not defined yet + } + // target may be null here but it's possible to check constraint + return AcoreBaseItemSemanticEditPolicy.LinkConstraints.canCreateAClassAssociations_4003(getSource(), getTarget()); + } + + /** + * @generated + */ + protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException + { + if (!canExecute()) + { + throw new ExecutionException("Invalid arguments in create link command"); //$NON-NLS-1$ + } + + if (getSource() != null && getTarget() != null) + { + getSource().getAssociations().add(getTarget()); + } + return CommandResult.newOKCommandResult(); + + } + + /** + * @generated + */ + protected void setElementToEdit(EObject element) + { + throw new UnsupportedOperationException(); + } + + /** + * @generated + */ + protected AClass getSource() + { + return (AClass)source; + } + + /** + * @generated + */ + protected AClass getTarget() + { + return (AClass)target; + } +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AClassAssociationsReorientCommand.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AClassAssociationsReorientCommand.java new file mode 100644 index 0000000000..a45ad2f9cf --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AClassAssociationsReorientCommand.java @@ -0,0 +1,180 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.commands; + +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.emf.cdo.dawn.examples.acore.AClass; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AcoreBaseItemSemanticEditPolicy; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.gmf.runtime.common.core.command.CommandResult; +import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand; +import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientReferenceRelationshipRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest; + +/** + * @generated + */ +public class AClassAssociationsReorientCommand extends EditElementCommand +{ + + /** + * @generated + */ + private final int reorientDirection; + + /** + * @generated + */ + private final EObject referenceOwner; + + /** + * @generated + */ + private final EObject oldEnd; + + /** + * @generated + */ + private final EObject newEnd; + + /** + * @generated + */ + public AClassAssociationsReorientCommand(ReorientReferenceRelationshipRequest request) + { + super(request.getLabel(), null, request); + reorientDirection = request.getDirection(); + referenceOwner = request.getReferenceOwner(); + oldEnd = request.getOldRelationshipEnd(); + newEnd = request.getNewRelationshipEnd(); + } + + /** + * @generated + */ + public boolean canExecute() + { + if (false == referenceOwner instanceof AClass) + { + return false; + } + if (reorientDirection == ReorientRelationshipRequest.REORIENT_SOURCE) + { + return canReorientSource(); + } + if (reorientDirection == ReorientRelationshipRequest.REORIENT_TARGET) + { + return canReorientTarget(); + } + return false; + } + + /** + * @generated + */ + protected boolean canReorientSource() + { + if (!(oldEnd instanceof AClass && newEnd instanceof AClass)) + { + return false; + } + return AcoreBaseItemSemanticEditPolicy.LinkConstraints.canExistAClassAssociations_4003(getNewSource(), + getOldTarget()); + } + + /** + * @generated + */ + protected boolean canReorientTarget() + { + if (!(oldEnd instanceof AClass && newEnd instanceof AClass)) + { + return false; + } + return AcoreBaseItemSemanticEditPolicy.LinkConstraints.canExistAClassAssociations_4003(getOldSource(), + getNewTarget()); + } + + /** + * @generated + */ + protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException + { + if (!canExecute()) + { + throw new ExecutionException("Invalid arguments in reorient link command"); //$NON-NLS-1$ + } + if (reorientDirection == ReorientRelationshipRequest.REORIENT_SOURCE) + { + return reorientSource(); + } + if (reorientDirection == ReorientRelationshipRequest.REORIENT_TARGET) + { + return reorientTarget(); + } + throw new IllegalStateException(); + } + + /** + * @generated + */ + protected CommandResult reorientSource() throws ExecutionException + { + getOldSource().getAssociations().remove(getOldTarget()); + getNewSource().getAssociations().add(getOldTarget()); + return CommandResult.newOKCommandResult(referenceOwner); + } + + /** + * @generated + */ + protected CommandResult reorientTarget() throws ExecutionException + { + getOldSource().getAssociations().remove(getOldTarget()); + getOldSource().getAssociations().add(getNewTarget()); + return CommandResult.newOKCommandResult(referenceOwner); + } + + /** + * @generated + */ + protected AClass getOldSource() + { + return (AClass)referenceOwner; + } + + /** + * @generated + */ + protected AClass getNewSource() + { + return (AClass)newEnd; + } + + /** + * @generated + */ + protected AClass getOldTarget() + { + return (AClass)oldEnd; + } + + /** + * @generated + */ + protected AClass getNewTarget() + { + return (AClass)newEnd; + } +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AClassCompositionsCreateCommand.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AClassCompositionsCreateCommand.java new file mode 100644 index 0000000000..484b1b89a7 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AClassCompositionsCreateCommand.java @@ -0,0 +1,116 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.commands; + +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.emf.cdo.dawn.examples.acore.AClass; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AcoreBaseItemSemanticEditPolicy; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.gmf.runtime.common.core.command.CommandResult; +import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand; +import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; + +/** + * @generated + */ +public class AClassCompositionsCreateCommand extends EditElementCommand +{ + + /** + * @generated + */ + private final EObject source; + + /** + * @generated + */ + private final EObject target; + + /** + * @generated + */ + public AClassCompositionsCreateCommand(CreateRelationshipRequest request, EObject source, EObject target) + { + super(request.getLabel(), null, request); + this.source = source; + this.target = target; + } + + /** + * @generated + */ + public boolean canExecute() + { + if (source == null && target == null) + { + return false; + } + if (source != null && false == source instanceof AClass) + { + return false; + } + if (target != null && false == target instanceof AClass) + { + return false; + } + if (getSource() == null) + { + return true; // link creation is in progress; source is not defined yet + } + // target may be null here but it's possible to check constraint + return AcoreBaseItemSemanticEditPolicy.LinkConstraints.canCreateAClassCompositions_4005(getSource(), getTarget()); + } + + /** + * @generated + */ + protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException + { + if (!canExecute()) + { + throw new ExecutionException("Invalid arguments in create link command"); //$NON-NLS-1$ + } + + if (getSource() != null && getTarget() != null) + { + getSource().getCompositions().add(getTarget()); + } + return CommandResult.newOKCommandResult(); + + } + + /** + * @generated + */ + protected void setElementToEdit(EObject element) + { + throw new UnsupportedOperationException(); + } + + /** + * @generated + */ + protected AClass getSource() + { + return (AClass)source; + } + + /** + * @generated + */ + protected AClass getTarget() + { + return (AClass)target; + } +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AClassCompositionsReorientCommand.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AClassCompositionsReorientCommand.java new file mode 100644 index 0000000000..3b7295dfc2 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AClassCompositionsReorientCommand.java @@ -0,0 +1,180 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.commands; + +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.emf.cdo.dawn.examples.acore.AClass; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AcoreBaseItemSemanticEditPolicy; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.gmf.runtime.common.core.command.CommandResult; +import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand; +import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientReferenceRelationshipRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest; + +/** + * @generated + */ +public class AClassCompositionsReorientCommand extends EditElementCommand +{ + + /** + * @generated + */ + private final int reorientDirection; + + /** + * @generated + */ + private final EObject referenceOwner; + + /** + * @generated + */ + private final EObject oldEnd; + + /** + * @generated + */ + private final EObject newEnd; + + /** + * @generated + */ + public AClassCompositionsReorientCommand(ReorientReferenceRelationshipRequest request) + { + super(request.getLabel(), null, request); + reorientDirection = request.getDirection(); + referenceOwner = request.getReferenceOwner(); + oldEnd = request.getOldRelationshipEnd(); + newEnd = request.getNewRelationshipEnd(); + } + + /** + * @generated + */ + public boolean canExecute() + { + if (false == referenceOwner instanceof AClass) + { + return false; + } + if (reorientDirection == ReorientRelationshipRequest.REORIENT_SOURCE) + { + return canReorientSource(); + } + if (reorientDirection == ReorientRelationshipRequest.REORIENT_TARGET) + { + return canReorientTarget(); + } + return false; + } + + /** + * @generated + */ + protected boolean canReorientSource() + { + if (!(oldEnd instanceof AClass && newEnd instanceof AClass)) + { + return false; + } + return AcoreBaseItemSemanticEditPolicy.LinkConstraints.canExistAClassCompositions_4005(getNewSource(), + getOldTarget()); + } + + /** + * @generated + */ + protected boolean canReorientTarget() + { + if (!(oldEnd instanceof AClass && newEnd instanceof AClass)) + { + return false; + } + return AcoreBaseItemSemanticEditPolicy.LinkConstraints.canExistAClassCompositions_4005(getOldSource(), + getNewTarget()); + } + + /** + * @generated + */ + protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException + { + if (!canExecute()) + { + throw new ExecutionException("Invalid arguments in reorient link command"); //$NON-NLS-1$ + } + if (reorientDirection == ReorientRelationshipRequest.REORIENT_SOURCE) + { + return reorientSource(); + } + if (reorientDirection == ReorientRelationshipRequest.REORIENT_TARGET) + { + return reorientTarget(); + } + throw new IllegalStateException(); + } + + /** + * @generated + */ + protected CommandResult reorientSource() throws ExecutionException + { + getOldSource().getCompositions().remove(getOldTarget()); + getNewSource().getCompositions().add(getOldTarget()); + return CommandResult.newOKCommandResult(referenceOwner); + } + + /** + * @generated + */ + protected CommandResult reorientTarget() throws ExecutionException + { + getOldSource().getCompositions().remove(getOldTarget()); + getOldSource().getCompositions().add(getNewTarget()); + return CommandResult.newOKCommandResult(referenceOwner); + } + + /** + * @generated + */ + protected AClass getOldSource() + { + return (AClass)referenceOwner; + } + + /** + * @generated + */ + protected AClass getNewSource() + { + return (AClass)newEnd; + } + + /** + * @generated + */ + protected AClass getOldTarget() + { + return (AClass)oldEnd; + } + + /** + * @generated + */ + protected AClass getNewTarget() + { + return (AClass)newEnd; + } +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AClassCreateCommand.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AClassCreateCommand.java new file mode 100644 index 0000000000..5ab6039916 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AClassCreateCommand.java @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.commands; + +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.emf.cdo.dawn.examples.acore.AClass; +import org.eclipse.emf.cdo.dawn.examples.acore.ACoreRoot; +import org.eclipse.emf.cdo.dawn.examples.acore.AcoreFactory; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.gmf.runtime.common.core.command.CommandResult; +import org.eclipse.gmf.runtime.common.core.command.ICommand; +import org.eclipse.gmf.runtime.emf.type.core.IElementType; +import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand; +import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; +import org.eclipse.gmf.runtime.notation.View; + +/** + * @generated + */ +public class AClassCreateCommand extends EditElementCommand +{ + + /** + * @generated + */ + public AClassCreateCommand(CreateElementRequest req) + { + super(req.getLabel(), null, req); + } + + /** + * FIXME: replace with setElementToEdit() + * @generated + */ + protected EObject getElementToEdit() + { + EObject container = ((CreateElementRequest)getRequest()).getContainer(); + if (container instanceof View) + { + container = ((View)container).getElement(); + } + return container; + } + + /** + * @generated + */ + public boolean canExecute() + { + return true; + + } + + /** + * @generated + */ + protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException + { + AClass newElement = AcoreFactory.eINSTANCE.createAClass(); + + ACoreRoot owner = (ACoreRoot)getElementToEdit(); + owner.getClasses().add(newElement); + + doConfigure(newElement, monitor, info); + + ((CreateElementRequest)getRequest()).setNewElement(newElement); + return CommandResult.newOKCommandResult(newElement); + } + + /** + * @generated + */ + protected void doConfigure(AClass newElement, IProgressMonitor monitor, IAdaptable info) throws ExecutionException + { + IElementType elementType = ((CreateElementRequest)getRequest()).getElementType(); + ConfigureRequest configureRequest = new ConfigureRequest(getEditingDomain(), newElement, elementType); + configureRequest.setClientContext(((CreateElementRequest)getRequest()).getClientContext()); + configureRequest.addParameters(getRequest().getParameters()); + ICommand configureCommand = elementType.getEditCommand(configureRequest); + if (configureCommand != null && configureCommand.canExecute()) + { + configureCommand.execute(monitor, info); + } + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AClassImplementedInterfacesCreateCommand.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AClassImplementedInterfacesCreateCommand.java new file mode 100644 index 0000000000..fe4db5f33f --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AClassImplementedInterfacesCreateCommand.java @@ -0,0 +1,118 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.commands; + +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.emf.cdo.dawn.examples.acore.AClass; +import org.eclipse.emf.cdo.dawn.examples.acore.AInterface; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AcoreBaseItemSemanticEditPolicy; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.gmf.runtime.common.core.command.CommandResult; +import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand; +import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; + +/** + * @generated + */ +public class AClassImplementedInterfacesCreateCommand extends EditElementCommand +{ + + /** + * @generated + */ + private final EObject source; + + /** + * @generated + */ + private final EObject target; + + /** + * @generated + */ + public AClassImplementedInterfacesCreateCommand(CreateRelationshipRequest request, EObject source, EObject target) + { + super(request.getLabel(), null, request); + this.source = source; + this.target = target; + } + + /** + * @generated + */ + public boolean canExecute() + { + if (source == null && target == null) + { + return false; + } + if (source != null && false == source instanceof AClass) + { + return false; + } + if (target != null && false == target instanceof AInterface) + { + return false; + } + if (getSource() == null) + { + return true; // link creation is in progress; source is not defined yet + } + // target may be null here but it's possible to check constraint + return AcoreBaseItemSemanticEditPolicy.LinkConstraints.canCreateAClassImplementedInterfaces_4002(getSource(), + getTarget()); + } + + /** + * @generated + */ + protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException + { + if (!canExecute()) + { + throw new ExecutionException("Invalid arguments in create link command"); //$NON-NLS-1$ + } + + if (getSource() != null && getTarget() != null) + { + getSource().getImplementedInterfaces().add(getTarget()); + } + return CommandResult.newOKCommandResult(); + + } + + /** + * @generated + */ + protected void setElementToEdit(EObject element) + { + throw new UnsupportedOperationException(); + } + + /** + * @generated + */ + protected AClass getSource() + { + return (AClass)source; + } + + /** + * @generated + */ + protected AInterface getTarget() + { + return (AInterface)target; + } +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AClassImplementedInterfacesReorientCommand.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AClassImplementedInterfacesReorientCommand.java new file mode 100644 index 0000000000..f31e1300d4 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AClassImplementedInterfacesReorientCommand.java @@ -0,0 +1,181 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.commands; + +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.emf.cdo.dawn.examples.acore.AClass; +import org.eclipse.emf.cdo.dawn.examples.acore.AInterface; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AcoreBaseItemSemanticEditPolicy; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.gmf.runtime.common.core.command.CommandResult; +import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand; +import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientReferenceRelationshipRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest; + +/** + * @generated + */ +public class AClassImplementedInterfacesReorientCommand extends EditElementCommand +{ + + /** + * @generated + */ + private final int reorientDirection; + + /** + * @generated + */ + private final EObject referenceOwner; + + /** + * @generated + */ + private final EObject oldEnd; + + /** + * @generated + */ + private final EObject newEnd; + + /** + * @generated + */ + public AClassImplementedInterfacesReorientCommand(ReorientReferenceRelationshipRequest request) + { + super(request.getLabel(), null, request); + reorientDirection = request.getDirection(); + referenceOwner = request.getReferenceOwner(); + oldEnd = request.getOldRelationshipEnd(); + newEnd = request.getNewRelationshipEnd(); + } + + /** + * @generated + */ + public boolean canExecute() + { + if (false == referenceOwner instanceof AClass) + { + return false; + } + if (reorientDirection == ReorientRelationshipRequest.REORIENT_SOURCE) + { + return canReorientSource(); + } + if (reorientDirection == ReorientRelationshipRequest.REORIENT_TARGET) + { + return canReorientTarget(); + } + return false; + } + + /** + * @generated + */ + protected boolean canReorientSource() + { + if (!(oldEnd instanceof AInterface && newEnd instanceof AClass)) + { + return false; + } + return AcoreBaseItemSemanticEditPolicy.LinkConstraints.canExistAClassImplementedInterfaces_4002(getNewSource(), + getOldTarget()); + } + + /** + * @generated + */ + protected boolean canReorientTarget() + { + if (!(oldEnd instanceof AInterface && newEnd instanceof AInterface)) + { + return false; + } + return AcoreBaseItemSemanticEditPolicy.LinkConstraints.canExistAClassImplementedInterfaces_4002(getOldSource(), + getNewTarget()); + } + + /** + * @generated + */ + protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException + { + if (!canExecute()) + { + throw new ExecutionException("Invalid arguments in reorient link command"); //$NON-NLS-1$ + } + if (reorientDirection == ReorientRelationshipRequest.REORIENT_SOURCE) + { + return reorientSource(); + } + if (reorientDirection == ReorientRelationshipRequest.REORIENT_TARGET) + { + return reorientTarget(); + } + throw new IllegalStateException(); + } + + /** + * @generated + */ + protected CommandResult reorientSource() throws ExecutionException + { + getOldSource().getImplementedInterfaces().remove(getOldTarget()); + getNewSource().getImplementedInterfaces().add(getOldTarget()); + return CommandResult.newOKCommandResult(referenceOwner); + } + + /** + * @generated + */ + protected CommandResult reorientTarget() throws ExecutionException + { + getOldSource().getImplementedInterfaces().remove(getOldTarget()); + getOldSource().getImplementedInterfaces().add(getNewTarget()); + return CommandResult.newOKCommandResult(referenceOwner); + } + + /** + * @generated + */ + protected AClass getOldSource() + { + return (AClass)referenceOwner; + } + + /** + * @generated + */ + protected AClass getNewSource() + { + return (AClass)newEnd; + } + + /** + * @generated + */ + protected AInterface getOldTarget() + { + return (AInterface)oldEnd; + } + + /** + * @generated + */ + protected AInterface getNewTarget() + { + return (AInterface)newEnd; + } +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AClassSubClassesCreateCommand.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AClassSubClassesCreateCommand.java new file mode 100644 index 0000000000..72695224fb --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AClassSubClassesCreateCommand.java @@ -0,0 +1,116 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.commands; + +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.emf.cdo.dawn.examples.acore.AClass; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AcoreBaseItemSemanticEditPolicy; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.gmf.runtime.common.core.command.CommandResult; +import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand; +import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; + +/** + * @generated + */ +public class AClassSubClassesCreateCommand extends EditElementCommand +{ + + /** + * @generated + */ + private final EObject source; + + /** + * @generated + */ + private final EObject target; + + /** + * @generated + */ + public AClassSubClassesCreateCommand(CreateRelationshipRequest request, EObject source, EObject target) + { + super(request.getLabel(), null, request); + this.source = source; + this.target = target; + } + + /** + * @generated + */ + public boolean canExecute() + { + if (source == null && target == null) + { + return false; + } + if (source != null && false == source instanceof AClass) + { + return false; + } + if (target != null && false == target instanceof AClass) + { + return false; + } + if (getSource() == null) + { + return true; // link creation is in progress; source is not defined yet + } + // target may be null here but it's possible to check constraint + return AcoreBaseItemSemanticEditPolicy.LinkConstraints.canCreateAClassSubClasses_4001(getSource(), getTarget()); + } + + /** + * @generated + */ + protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException + { + if (!canExecute()) + { + throw new ExecutionException("Invalid arguments in create link command"); //$NON-NLS-1$ + } + + if (getSource() != null && getTarget() != null) + { + getSource().getSubClasses().add(getTarget()); + } + return CommandResult.newOKCommandResult(); + + } + + /** + * @generated + */ + protected void setElementToEdit(EObject element) + { + throw new UnsupportedOperationException(); + } + + /** + * @generated + */ + protected AClass getSource() + { + return (AClass)source; + } + + /** + * @generated + */ + protected AClass getTarget() + { + return (AClass)target; + } +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AClassSubClassesReorientCommand.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AClassSubClassesReorientCommand.java new file mode 100644 index 0000000000..cf8a305ad4 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AClassSubClassesReorientCommand.java @@ -0,0 +1,180 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.commands; + +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.emf.cdo.dawn.examples.acore.AClass; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AcoreBaseItemSemanticEditPolicy; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.gmf.runtime.common.core.command.CommandResult; +import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand; +import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientReferenceRelationshipRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest; + +/** + * @generated + */ +public class AClassSubClassesReorientCommand extends EditElementCommand +{ + + /** + * @generated + */ + private final int reorientDirection; + + /** + * @generated + */ + private final EObject referenceOwner; + + /** + * @generated + */ + private final EObject oldEnd; + + /** + * @generated + */ + private final EObject newEnd; + + /** + * @generated + */ + public AClassSubClassesReorientCommand(ReorientReferenceRelationshipRequest request) + { + super(request.getLabel(), null, request); + reorientDirection = request.getDirection(); + referenceOwner = request.getReferenceOwner(); + oldEnd = request.getOldRelationshipEnd(); + newEnd = request.getNewRelationshipEnd(); + } + + /** + * @generated + */ + public boolean canExecute() + { + if (false == referenceOwner instanceof AClass) + { + return false; + } + if (reorientDirection == ReorientRelationshipRequest.REORIENT_SOURCE) + { + return canReorientSource(); + } + if (reorientDirection == ReorientRelationshipRequest.REORIENT_TARGET) + { + return canReorientTarget(); + } + return false; + } + + /** + * @generated + */ + protected boolean canReorientSource() + { + if (!(oldEnd instanceof AClass && newEnd instanceof AClass)) + { + return false; + } + return AcoreBaseItemSemanticEditPolicy.LinkConstraints + .canExistAClassSubClasses_4001(getNewSource(), getOldTarget()); + } + + /** + * @generated + */ + protected boolean canReorientTarget() + { + if (!(oldEnd instanceof AClass && newEnd instanceof AClass)) + { + return false; + } + return AcoreBaseItemSemanticEditPolicy.LinkConstraints + .canExistAClassSubClasses_4001(getOldSource(), getNewTarget()); + } + + /** + * @generated + */ + protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException + { + if (!canExecute()) + { + throw new ExecutionException("Invalid arguments in reorient link command"); //$NON-NLS-1$ + } + if (reorientDirection == ReorientRelationshipRequest.REORIENT_SOURCE) + { + return reorientSource(); + } + if (reorientDirection == ReorientRelationshipRequest.REORIENT_TARGET) + { + return reorientTarget(); + } + throw new IllegalStateException(); + } + + /** + * @generated + */ + protected CommandResult reorientSource() throws ExecutionException + { + getOldSource().getSubClasses().remove(getOldTarget()); + getNewSource().getSubClasses().add(getOldTarget()); + return CommandResult.newOKCommandResult(referenceOwner); + } + + /** + * @generated + */ + protected CommandResult reorientTarget() throws ExecutionException + { + getOldSource().getSubClasses().remove(getOldTarget()); + getOldSource().getSubClasses().add(getNewTarget()); + return CommandResult.newOKCommandResult(referenceOwner); + } + + /** + * @generated + */ + protected AClass getOldSource() + { + return (AClass)referenceOwner; + } + + /** + * @generated + */ + protected AClass getNewSource() + { + return (AClass)newEnd; + } + + /** + * @generated + */ + protected AClass getOldTarget() + { + return (AClass)oldEnd; + } + + /** + * @generated + */ + protected AClass getNewTarget() + { + return (AClass)newEnd; + } +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AInterfaceCreateCommand.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AInterfaceCreateCommand.java new file mode 100644 index 0000000000..ed80a8ede0 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AInterfaceCreateCommand.java @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.commands; + +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.emf.cdo.dawn.examples.acore.ACoreRoot; +import org.eclipse.emf.cdo.dawn.examples.acore.AInterface; +import org.eclipse.emf.cdo.dawn.examples.acore.AcoreFactory; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.gmf.runtime.common.core.command.CommandResult; +import org.eclipse.gmf.runtime.common.core.command.ICommand; +import org.eclipse.gmf.runtime.emf.type.core.IElementType; +import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand; +import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; +import org.eclipse.gmf.runtime.notation.View; + +/** + * @generated + */ +public class AInterfaceCreateCommand extends EditElementCommand +{ + + /** + * @generated + */ + public AInterfaceCreateCommand(CreateElementRequest req) + { + super(req.getLabel(), null, req); + } + + /** + * FIXME: replace with setElementToEdit() + * @generated + */ + protected EObject getElementToEdit() + { + EObject container = ((CreateElementRequest)getRequest()).getContainer(); + if (container instanceof View) + { + container = ((View)container).getElement(); + } + return container; + } + + /** + * @generated + */ + public boolean canExecute() + { + return true; + + } + + /** + * @generated + */ + protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException + { + AInterface newElement = AcoreFactory.eINSTANCE.createAInterface(); + + ACoreRoot owner = (ACoreRoot)getElementToEdit(); + owner.getInterfaces().add(newElement); + + doConfigure(newElement, monitor, info); + + ((CreateElementRequest)getRequest()).setNewElement(newElement); + return CommandResult.newOKCommandResult(newElement); + } + + /** + * @generated + */ + protected void doConfigure(AInterface newElement, IProgressMonitor monitor, IAdaptable info) + throws ExecutionException + { + IElementType elementType = ((CreateElementRequest)getRequest()).getElementType(); + ConfigureRequest configureRequest = new ConfigureRequest(getEditingDomain(), newElement, elementType); + configureRequest.setClientContext(((CreateElementRequest)getRequest()).getClientContext()); + configureRequest.addParameters(getRequest().getParameters()); + ICommand configureCommand = elementType.getEditCommand(configureRequest); + if (configureCommand != null && configureCommand.canExecute()) + { + configureCommand.execute(monitor, info); + } + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AOperation2CreateCommand.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AOperation2CreateCommand.java new file mode 100644 index 0000000000..4ce577867b --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AOperation2CreateCommand.java @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.commands; + +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.emf.cdo.dawn.examples.acore.ABasicClass; +import org.eclipse.emf.cdo.dawn.examples.acore.AOperation; +import org.eclipse.emf.cdo.dawn.examples.acore.AcoreFactory; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.gmf.runtime.common.core.command.CommandResult; +import org.eclipse.gmf.runtime.common.core.command.ICommand; +import org.eclipse.gmf.runtime.emf.type.core.IElementType; +import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand; +import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; +import org.eclipse.gmf.runtime.notation.View; + +/** + * @generated + */ +public class AOperation2CreateCommand extends EditElementCommand +{ + + /** + * @generated + */ + public AOperation2CreateCommand(CreateElementRequest req) + { + super(req.getLabel(), null, req); + } + + /** + * FIXME: replace with setElementToEdit() + * @generated + */ + protected EObject getElementToEdit() + { + EObject container = ((CreateElementRequest)getRequest()).getContainer(); + if (container instanceof View) + { + container = ((View)container).getElement(); + } + return container; + } + + /** + * @generated + */ + public boolean canExecute() + { + return true; + + } + + /** + * @generated + */ + protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException + { + AOperation newElement = AcoreFactory.eINSTANCE.createAOperation(); + + ABasicClass owner = (ABasicClass)getElementToEdit(); + owner.getOperations().add(newElement); + + doConfigure(newElement, monitor, info); + + ((CreateElementRequest)getRequest()).setNewElement(newElement); + return CommandResult.newOKCommandResult(newElement); + } + + /** + * @generated + */ + protected void doConfigure(AOperation newElement, IProgressMonitor monitor, IAdaptable info) + throws ExecutionException + { + IElementType elementType = ((CreateElementRequest)getRequest()).getElementType(); + ConfigureRequest configureRequest = new ConfigureRequest(getEditingDomain(), newElement, elementType); + configureRequest.setClientContext(((CreateElementRequest)getRequest()).getClientContext()); + configureRequest.addParameters(getRequest().getParameters()); + ICommand configureCommand = elementType.getEditCommand(configureRequest); + if (configureCommand != null && configureCommand.canExecute()) + { + configureCommand.execute(monitor, info); + } + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AOperationCreateCommand.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AOperationCreateCommand.java new file mode 100644 index 0000000000..76d30326fe --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/commands/AOperationCreateCommand.java @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.commands; + +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.emf.cdo.dawn.examples.acore.ABasicClass; +import org.eclipse.emf.cdo.dawn.examples.acore.AOperation; +import org.eclipse.emf.cdo.dawn.examples.acore.AcoreFactory; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.gmf.runtime.common.core.command.CommandResult; +import org.eclipse.gmf.runtime.common.core.command.ICommand; +import org.eclipse.gmf.runtime.emf.type.core.IElementType; +import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand; +import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; +import org.eclipse.gmf.runtime.notation.View; + +/** + * @generated + */ +public class AOperationCreateCommand extends EditElementCommand +{ + + /** + * @generated + */ + public AOperationCreateCommand(CreateElementRequest req) + { + super(req.getLabel(), null, req); + } + + /** + * FIXME: replace with setElementToEdit() + * @generated + */ + protected EObject getElementToEdit() + { + EObject container = ((CreateElementRequest)getRequest()).getContainer(); + if (container instanceof View) + { + container = ((View)container).getElement(); + } + return container; + } + + /** + * @generated + */ + public boolean canExecute() + { + return true; + + } + + /** + * @generated + */ + protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException + { + AOperation newElement = AcoreFactory.eINSTANCE.createAOperation(); + + ABasicClass owner = (ABasicClass)getElementToEdit(); + owner.getOperations().add(newElement); + + doConfigure(newElement, monitor, info); + + ((CreateElementRequest)getRequest()).setNewElement(newElement); + return CommandResult.newOKCommandResult(newElement); + } + + /** + * @generated + */ + protected void doConfigure(AOperation newElement, IProgressMonitor monitor, IAdaptable info) + throws ExecutionException + { + IElementType elementType = ((CreateElementRequest)getRequest()).getElementType(); + ConfigureRequest configureRequest = new ConfigureRequest(getEditingDomain(), newElement, elementType); + configureRequest.setClientContext(((CreateElementRequest)getRequest()).getClientContext()); + configureRequest.addParameters(getRequest().getParameters()); + ICommand configureCommand = elementType.getEditCommand(configureRequest); + if (configureCommand != null && configureCommand.canExecute()) + { + configureCommand.execute(monitor, info); + } + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/helpers/AAttributeEditHelper.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/helpers/AAttributeEditHelper.java new file mode 100644 index 0000000000..c7dab08b2e --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/helpers/AAttributeEditHelper.java @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.helpers; + +/** + * @generated + */ +public class AAttributeEditHelper extends AcoreBaseEditHelper +{ +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/helpers/AClassEditHelper.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/helpers/AClassEditHelper.java new file mode 100644 index 0000000000..1e124eef34 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/helpers/AClassEditHelper.java @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.helpers; + +/** + * @generated + */ +public class AClassEditHelper extends AcoreBaseEditHelper +{ +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/helpers/ACoreRootEditHelper.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/helpers/ACoreRootEditHelper.java new file mode 100644 index 0000000000..a45b515032 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/helpers/ACoreRootEditHelper.java @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.helpers; + +/** + * @generated + */ +public class ACoreRootEditHelper extends AcoreBaseEditHelper +{ +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/helpers/AInterfaceEditHelper.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/helpers/AInterfaceEditHelper.java new file mode 100644 index 0000000000..e1edb854e0 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/helpers/AInterfaceEditHelper.java @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.helpers; + +/** + * @generated + */ +public class AInterfaceEditHelper extends AcoreBaseEditHelper +{ +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/helpers/AOperationEditHelper.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/helpers/AOperationEditHelper.java new file mode 100644 index 0000000000..7600f1dade --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/helpers/AOperationEditHelper.java @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.helpers; + +/** + * @generated + */ +public class AOperationEditHelper extends AcoreBaseEditHelper +{ +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/helpers/AcoreBaseEditHelper.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/helpers/AcoreBaseEditHelper.java new file mode 100644 index 0000000000..ce4a1fcf01 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/helpers/AcoreBaseEditHelper.java @@ -0,0 +1,108 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.helpers; + +import org.eclipse.gmf.runtime.common.core.command.CompositeCommand; +import org.eclipse.gmf.runtime.common.core.command.ICommand; +import org.eclipse.gmf.runtime.emf.type.core.ElementTypeRegistry; +import org.eclipse.gmf.runtime.emf.type.core.IElementType; +import org.eclipse.gmf.runtime.emf.type.core.edithelper.AbstractEditHelper; +import org.eclipse.gmf.runtime.emf.type.core.edithelper.IEditHelperAdvice; +import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyReferenceRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.IEditCommandRequest; + +/** + * @generated + */ +public class AcoreBaseEditHelper extends AbstractEditHelper +{ + + /** + * @generated + */ + public static final String EDIT_POLICY_COMMAND = "edit policy command"; //$NON-NLS-1$ + + /** + * @generated + */ + public static final String CONTEXT_ELEMENT_TYPE = "context element type"; //$NON-NLS-1$ + + /** + * @generated + */ + protected IEditHelperAdvice[] getEditHelperAdvice(IEditCommandRequest req) + { + if (req.getParameter(CONTEXT_ELEMENT_TYPE) instanceof IElementType) + { + return ElementTypeRegistry.getInstance() + .getEditHelperAdvice((IElementType)req.getParameter(CONTEXT_ELEMENT_TYPE)); + } + return super.getEditHelperAdvice(req); + } + + /** + * @generated + */ + protected ICommand getInsteadCommand(IEditCommandRequest req) + { + ICommand epCommand = (ICommand)req.getParameter(EDIT_POLICY_COMMAND); + req.setParameter(EDIT_POLICY_COMMAND, null); + ICommand ehCommand = super.getInsteadCommand(req); + if (epCommand == null) + { + return ehCommand; + } + if (ehCommand == null) + { + return epCommand; + } + CompositeCommand command = new CompositeCommand(null); + command.add(epCommand); + command.add(ehCommand); + return command; + } + + /** + * @generated + */ + protected ICommand getCreateCommand(CreateElementRequest req) + { + return null; + } + + /** + * @generated + */ + protected ICommand getCreateRelationshipCommand(CreateRelationshipRequest req) + { + return null; + } + + /** + * @generated + */ + protected ICommand getDestroyElementCommand(DestroyElementRequest req) + { + return null; + } + + /** + * @generated + */ + protected ICommand getDestroyReferenceCommand(DestroyReferenceRequest req) + { + return null; + } +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AAttribute2EditPart.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AAttribute2EditPart.java new file mode 100644 index 0000000000..3fa23a04ea --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AAttribute2EditPart.java @@ -0,0 +1,683 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts; + +import java.util.Collections; +import java.util.List; + +import org.eclipse.draw2d.IFigure; +import org.eclipse.draw2d.Label; +import org.eclipse.draw2d.geometry.Point; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AAttribute2ItemSemanticEditPolicy; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AcoreTextNonResizableEditPolicy; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AcoreTextSelectionEditPolicy; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreVisualIDRegistry; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.AcoreElementTypes; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.AcoreParserProvider; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.transaction.RunnableWithResult; +import org.eclipse.gef.AccessibleEditPart; +import org.eclipse.gef.DragTracker; +import org.eclipse.gef.EditPolicy; +import org.eclipse.gef.Request; +import org.eclipse.gef.requests.DirectEditRequest; +import org.eclipse.gef.requests.SelectionRequest; +import org.eclipse.gef.tools.DirectEditManager; +import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; +import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; +import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; +import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; +import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ListItemComponentEditPolicy; +import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; +import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; +import org.eclipse.gmf.runtime.diagram.ui.tools.DragEditPartsTrackerEx; +import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; +import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel; +import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; +import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; +import org.eclipse.gmf.runtime.notation.FontStyle; +import org.eclipse.gmf.runtime.notation.NotationPackage; +import org.eclipse.gmf.runtime.notation.View; +import org.eclipse.jface.text.contentassist.IContentAssistProcessor; +import org.eclipse.jface.viewers.ICellEditorValidator; +import org.eclipse.swt.SWT; +import org.eclipse.swt.accessibility.AccessibleEvent; +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.FontData; +import org.eclipse.swt.graphics.Image; + +/** + * @generated + */ +public class AAttribute2EditPart extends CompartmentEditPart implements ITextAwareEditPart +{ + + /** + * @generated + */ + public static final int VISUAL_ID = 3003; + + /** + * @generated + */ + private DirectEditManager manager; + + /** + * @generated + */ + private IParser parser; + + /** + * @generated + */ + private List parserElements; + + /** + * @generated + */ + private String defaultText; + + /** + * @generated + */ + public AAttribute2EditPart(View view) + { + super(view); + } + + /** + * @generated + */ + public DragTracker getDragTracker(Request request) + { + if (request instanceof SelectionRequest && ((SelectionRequest)request).getLastButtonPressed() == 3) + { + return null; + } + return new DragEditPartsTrackerEx(this); + } + + /** + * @generated + */ + protected void createDefaultEditPolicies() + { + super.createDefaultEditPolicies(); + installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new AAttribute2ItemSemanticEditPolicy()); + installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new AcoreTextNonResizableEditPolicy()); + installEditPolicy(EditPolicy.COMPONENT_ROLE, new ListItemComponentEditPolicy()); + installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); + } + + /** + * @generated + */ + protected String getLabelTextHelper(IFigure figure) + { + if (figure instanceof WrappingLabel) + { + return ((WrappingLabel)figure).getText(); + } + else + { + return ((Label)figure).getText(); + } + } + + /** + * @generated + */ + protected void setLabelTextHelper(IFigure figure, String text) + { + if (figure instanceof WrappingLabel) + { + ((WrappingLabel)figure).setText(text); + } + else + { + ((Label)figure).setText(text); + } + } + + /** + * @generated + */ + protected Image getLabelIconHelper(IFigure figure) + { + if (figure instanceof WrappingLabel) + { + return ((WrappingLabel)figure).getIcon(); + } + else + { + return ((Label)figure).getIcon(); + } + } + + /** + * @generated + */ + protected void setLabelIconHelper(IFigure figure, Image icon) + { + if (figure instanceof WrappingLabel) + { + ((WrappingLabel)figure).setIcon(icon); + } + else + { + ((Label)figure).setIcon(icon); + } + } + + /** + * @generated + */ + public void setLabel(IFigure figure) + { + unregisterVisuals(); + setFigure(figure); + defaultText = getLabelTextHelper(figure); + registerVisuals(); + refreshVisuals(); + } + + /** + * @generated + */ + protected List getModelChildren() + { + return Collections.EMPTY_LIST; + } + + /** + * @generated + */ + public IGraphicalEditPart getChildBySemanticHint(String semanticHint) + { + return null; + } + + /** + * @generated + */ + protected EObject getParserElement() + { + return resolveSemanticElement(); + } + + /** + * @generated + */ + protected Image getLabelIcon() + { + return null; + } + + /** + * @generated + */ + protected String getLabelText() + { + String text = null; + EObject parserElement = getParserElement(); + if (parserElement != null && getParser() != null) + { + text = getParser().getPrintString(new EObjectAdapter(parserElement), getParserOptions().intValue()); + } + if (text == null || text.length() == 0) + { + text = defaultText; + } + return text; + } + + /** + * @generated + */ + public void setLabelText(String text) + { + setLabelTextHelper(getFigure(), text); + Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); + if (pdEditPolicy instanceof AcoreTextSelectionEditPolicy) + { + ((AcoreTextSelectionEditPolicy)pdEditPolicy).refreshFeedback(); + } + Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE); + if (sfEditPolicy instanceof AcoreTextSelectionEditPolicy) + { + ((AcoreTextSelectionEditPolicy)sfEditPolicy).refreshFeedback(); + } + } + + /** + * @generated + */ + public String getEditText() + { + if (getParserElement() == null || getParser() == null) + { + return ""; //$NON-NLS-1$ + } + return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); + } + + /** + * @generated + */ + protected boolean isEditable() + { + return getParser() != null; + } + + /** + * @generated + */ + public ICellEditorValidator getEditTextValidator() + { + return new ICellEditorValidator() + { + + public String isValid(final Object value) + { + if (value instanceof String) + { + final EObject element = getParserElement(); + final IParser parser = getParser(); + try + { + IParserEditStatus valid = (IParserEditStatus)getEditingDomain().runExclusive(new RunnableWithResult.Impl() + { + + public void run() + { + setResult(parser.isValidEditString(new EObjectAdapter(element), (String)value)); + } + }); + return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); + } + catch (InterruptedException ie) + { + ie.printStackTrace(); + } + } + + // shouldn't get here + return null; + } + }; + } + + /** + * @generated + */ + public IContentAssistProcessor getCompletionProcessor() + { + if (getParserElement() == null || getParser() == null) + { + return null; + } + return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); + } + + /** + * @generated + */ + public ParserOptions getParserOptions() + { + return ParserOptions.NONE; + } + + /** + * @generated + */ + public IParser getParser() + { + if (parser == null) + { + parser = AcoreParserProvider.getParser(AcoreElementTypes.AAttribute_3003, getParserElement(), + AcoreVisualIDRegistry + .getType(org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AAttribute2EditPart.VISUAL_ID)); + } + return parser; + } + + /** + * @generated + */ + protected DirectEditManager getManager() + { + if (manager == null) + { + setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), + AcoreEditPartFactory.getTextCellEditorLocator(this))); + } + return manager; + } + + /** + * @generated + */ + protected void setManager(DirectEditManager manager) + { + this.manager = manager; + } + + /** + * @generated + */ + protected void performDirectEdit() + { + getManager().show(); + } + + /** + * @generated + */ + protected void performDirectEdit(Point eventLocation) + { + if (getManager().getClass() == TextDirectEditManager.class) + { + ((TextDirectEditManager)getManager()).show(eventLocation.getSWTPoint()); + } + } + + /** + * @generated + */ + private void performDirectEdit(char initialCharacter) + { + if (getManager() instanceof TextDirectEditManager) + { + ((TextDirectEditManager)getManager()).show(initialCharacter); + } + else + { + performDirectEdit(); + } + } + + /** + * @generated + */ + protected void performDirectEditRequest(Request request) + { + final Request theRequest = request; + try + { + getEditingDomain().runExclusive(new Runnable() + { + + public void run() + { + if (isActive() && isEditable()) + { + if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) + { + Character initialChar = (Character)theRequest.getExtendedData().get( + RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); + performDirectEdit(initialChar.charValue()); + } + else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) + { + DirectEditRequest editRequest = (DirectEditRequest)theRequest; + performDirectEdit(editRequest.getLocation()); + } + else + { + performDirectEdit(); + } + } + } + }); + } + catch (InterruptedException e) + { + e.printStackTrace(); + } + } + + /** + * @generated + */ + protected void refreshVisuals() + { + super.refreshVisuals(); + refreshLabel(); + refreshFont(); + refreshFontColor(); + refreshUnderline(); + refreshStrikeThrough(); + } + + /** + * @generated + */ + protected void refreshLabel() + { + setLabelTextHelper(getFigure(), getLabelText()); + setLabelIconHelper(getFigure(), getLabelIcon()); + Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); + if (pdEditPolicy instanceof AcoreTextSelectionEditPolicy) + { + ((AcoreTextSelectionEditPolicy)pdEditPolicy).refreshFeedback(); + } + Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE); + if (sfEditPolicy instanceof AcoreTextSelectionEditPolicy) + { + ((AcoreTextSelectionEditPolicy)sfEditPolicy).refreshFeedback(); + } + } + + /** + * @generated + */ + protected void refreshUnderline() + { + FontStyle style = (FontStyle)getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); + if (style != null && getFigure() instanceof WrappingLabel) + { + ((WrappingLabel)getFigure()).setTextUnderline(style.isUnderline()); + } + } + + /** + * @generated + */ + protected void refreshStrikeThrough() + { + FontStyle style = (FontStyle)getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); + if (style != null && getFigure() instanceof WrappingLabel) + { + ((WrappingLabel)getFigure()).setTextStrikeThrough(style.isStrikeThrough()); + } + } + + /** + * @generated + */ + protected void refreshFont() + { + FontStyle style = (FontStyle)getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); + if (style != null) + { + FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD + : SWT.NORMAL) + | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); + setFont(fontData); + } + } + + /** + * @generated + */ + protected void setFontColor(Color color) + { + getFigure().setForegroundColor(color); + } + + /** + * @generated + */ + protected void addSemanticListeners() + { + if (getParser() instanceof ISemanticParser) + { + EObject element = resolveSemanticElement(); + parserElements = ((ISemanticParser)getParser()).getSemanticElementsBeingParsed(element); + for (int i = 0; i < parserElements.size(); i++) + { + addListenerFilter("SemanticModel" + i, this, (EObject)parserElements.get(i)); //$NON-NLS-1$ + } + } + else + { + super.addSemanticListeners(); + } + } + + /** + * @generated + */ + protected void removeSemanticListeners() + { + if (parserElements != null) + { + for (int i = 0; i < parserElements.size(); i++) + { + removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ + } + } + else + { + super.removeSemanticListeners(); + } + } + + /** + * @generated + */ + protected AccessibleEditPart getAccessibleEditPart() + { + if (accessibleEP == null) + { + accessibleEP = new AccessibleGraphicalEditPart() + { + + public void getName(AccessibleEvent e) + { + e.result = getLabelTextHelper(getFigure()); + } + }; + } + return accessibleEP; + } + + /** + * @generated + */ + private View getFontStyleOwnerView() + { + return getPrimaryView(); + } + + /** + * @generated + */ + protected void addNotationalListeners() + { + super.addNotationalListeners(); + addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ + } + + /** + * @generated + */ + protected void removeNotationalListeners() + { + super.removeNotationalListeners(); + removeListenerFilter("PrimaryView"); //$NON-NLS-1$ + } + + /** + * @generated + */ + protected void handleNotificationEvent(Notification event) + { + Object feature = event.getFeature(); + if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) + { + Integer c = (Integer)event.getNewValue(); + setFontColor(DiagramColorRegistry.getInstance().getColor(c)); + } + else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) + { + refreshUnderline(); + } + else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) + { + refreshStrikeThrough(); + } + else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) + || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) + || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) + || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) + { + refreshFont(); + } + else + { + if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) + { + refreshLabel(); + } + if (getParser() instanceof ISemanticParser) + { + ISemanticParser modelParser = (ISemanticParser)getParser(); + if (modelParser.areSemanticElementsAffected(null, event)) + { + removeSemanticListeners(); + if (resolveSemanticElement() != null) + { + addSemanticListeners(); + } + refreshLabel(); + } + } + } + super.handleNotificationEvent(event); + } + + /** + * @generated + */ + protected IFigure createFigure() + { + IFigure label = createFigurePrim(); + defaultText = getLabelTextHelper(label); + return label; + } + + /** + * @generated + */ + protected IFigure createFigurePrim() + { + return new WrappingLabel(); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AAttributeEditPart.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AAttributeEditPart.java new file mode 100644 index 0000000000..1924adca79 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AAttributeEditPart.java @@ -0,0 +1,683 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts; + +import java.util.Collections; +import java.util.List; + +import org.eclipse.draw2d.IFigure; +import org.eclipse.draw2d.Label; +import org.eclipse.draw2d.geometry.Point; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AAttributeItemSemanticEditPolicy; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AcoreTextNonResizableEditPolicy; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AcoreTextSelectionEditPolicy; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreVisualIDRegistry; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.AcoreElementTypes; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.AcoreParserProvider; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.transaction.RunnableWithResult; +import org.eclipse.gef.AccessibleEditPart; +import org.eclipse.gef.DragTracker; +import org.eclipse.gef.EditPolicy; +import org.eclipse.gef.Request; +import org.eclipse.gef.requests.DirectEditRequest; +import org.eclipse.gef.requests.SelectionRequest; +import org.eclipse.gef.tools.DirectEditManager; +import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; +import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; +import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; +import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; +import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ListItemComponentEditPolicy; +import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; +import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; +import org.eclipse.gmf.runtime.diagram.ui.tools.DragEditPartsTrackerEx; +import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; +import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel; +import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; +import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; +import org.eclipse.gmf.runtime.notation.FontStyle; +import org.eclipse.gmf.runtime.notation.NotationPackage; +import org.eclipse.gmf.runtime.notation.View; +import org.eclipse.jface.text.contentassist.IContentAssistProcessor; +import org.eclipse.jface.viewers.ICellEditorValidator; +import org.eclipse.swt.SWT; +import org.eclipse.swt.accessibility.AccessibleEvent; +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.FontData; +import org.eclipse.swt.graphics.Image; + +/** + * @generated + */ +public class AAttributeEditPart extends CompartmentEditPart implements ITextAwareEditPart +{ + + /** + * @generated + */ + public static final int VISUAL_ID = 3001; + + /** + * @generated + */ + private DirectEditManager manager; + + /** + * @generated + */ + private IParser parser; + + /** + * @generated + */ + private List parserElements; + + /** + * @generated + */ + private String defaultText; + + /** + * @generated + */ + public AAttributeEditPart(View view) + { + super(view); + } + + /** + * @generated + */ + public DragTracker getDragTracker(Request request) + { + if (request instanceof SelectionRequest && ((SelectionRequest)request).getLastButtonPressed() == 3) + { + return null; + } + return new DragEditPartsTrackerEx(this); + } + + /** + * @generated + */ + protected void createDefaultEditPolicies() + { + super.createDefaultEditPolicies(); + installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new AAttributeItemSemanticEditPolicy()); + installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new AcoreTextNonResizableEditPolicy()); + installEditPolicy(EditPolicy.COMPONENT_ROLE, new ListItemComponentEditPolicy()); + installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); + } + + /** + * @generated + */ + protected String getLabelTextHelper(IFigure figure) + { + if (figure instanceof WrappingLabel) + { + return ((WrappingLabel)figure).getText(); + } + else + { + return ((Label)figure).getText(); + } + } + + /** + * @generated + */ + protected void setLabelTextHelper(IFigure figure, String text) + { + if (figure instanceof WrappingLabel) + { + ((WrappingLabel)figure).setText(text); + } + else + { + ((Label)figure).setText(text); + } + } + + /** + * @generated + */ + protected Image getLabelIconHelper(IFigure figure) + { + if (figure instanceof WrappingLabel) + { + return ((WrappingLabel)figure).getIcon(); + } + else + { + return ((Label)figure).getIcon(); + } + } + + /** + * @generated + */ + protected void setLabelIconHelper(IFigure figure, Image icon) + { + if (figure instanceof WrappingLabel) + { + ((WrappingLabel)figure).setIcon(icon); + } + else + { + ((Label)figure).setIcon(icon); + } + } + + /** + * @generated + */ + public void setLabel(IFigure figure) + { + unregisterVisuals(); + setFigure(figure); + defaultText = getLabelTextHelper(figure); + registerVisuals(); + refreshVisuals(); + } + + /** + * @generated + */ + protected List getModelChildren() + { + return Collections.EMPTY_LIST; + } + + /** + * @generated + */ + public IGraphicalEditPart getChildBySemanticHint(String semanticHint) + { + return null; + } + + /** + * @generated + */ + protected EObject getParserElement() + { + return resolveSemanticElement(); + } + + /** + * @generated + */ + protected Image getLabelIcon() + { + return null; + } + + /** + * @generated + */ + protected String getLabelText() + { + String text = null; + EObject parserElement = getParserElement(); + if (parserElement != null && getParser() != null) + { + text = getParser().getPrintString(new EObjectAdapter(parserElement), getParserOptions().intValue()); + } + if (text == null || text.length() == 0) + { + text = defaultText; + } + return text; + } + + /** + * @generated + */ + public void setLabelText(String text) + { + setLabelTextHelper(getFigure(), text); + Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); + if (pdEditPolicy instanceof AcoreTextSelectionEditPolicy) + { + ((AcoreTextSelectionEditPolicy)pdEditPolicy).refreshFeedback(); + } + Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE); + if (sfEditPolicy instanceof AcoreTextSelectionEditPolicy) + { + ((AcoreTextSelectionEditPolicy)sfEditPolicy).refreshFeedback(); + } + } + + /** + * @generated + */ + public String getEditText() + { + if (getParserElement() == null || getParser() == null) + { + return ""; //$NON-NLS-1$ + } + return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); + } + + /** + * @generated + */ + protected boolean isEditable() + { + return getParser() != null; + } + + /** + * @generated + */ + public ICellEditorValidator getEditTextValidator() + { + return new ICellEditorValidator() + { + + public String isValid(final Object value) + { + if (value instanceof String) + { + final EObject element = getParserElement(); + final IParser parser = getParser(); + try + { + IParserEditStatus valid = (IParserEditStatus)getEditingDomain().runExclusive(new RunnableWithResult.Impl() + { + + public void run() + { + setResult(parser.isValidEditString(new EObjectAdapter(element), (String)value)); + } + }); + return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); + } + catch (InterruptedException ie) + { + ie.printStackTrace(); + } + } + + // shouldn't get here + return null; + } + }; + } + + /** + * @generated + */ + public IContentAssistProcessor getCompletionProcessor() + { + if (getParserElement() == null || getParser() == null) + { + return null; + } + return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); + } + + /** + * @generated + */ + public ParserOptions getParserOptions() + { + return ParserOptions.NONE; + } + + /** + * @generated + */ + public IParser getParser() + { + if (parser == null) + { + parser = AcoreParserProvider.getParser(AcoreElementTypes.AAttribute_3001, getParserElement(), + AcoreVisualIDRegistry + .getType(org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AAttributeEditPart.VISUAL_ID)); + } + return parser; + } + + /** + * @generated + */ + protected DirectEditManager getManager() + { + if (manager == null) + { + setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), + AcoreEditPartFactory.getTextCellEditorLocator(this))); + } + return manager; + } + + /** + * @generated + */ + protected void setManager(DirectEditManager manager) + { + this.manager = manager; + } + + /** + * @generated + */ + protected void performDirectEdit() + { + getManager().show(); + } + + /** + * @generated + */ + protected void performDirectEdit(Point eventLocation) + { + if (getManager().getClass() == TextDirectEditManager.class) + { + ((TextDirectEditManager)getManager()).show(eventLocation.getSWTPoint()); + } + } + + /** + * @generated + */ + private void performDirectEdit(char initialCharacter) + { + if (getManager() instanceof TextDirectEditManager) + { + ((TextDirectEditManager)getManager()).show(initialCharacter); + } + else + { + performDirectEdit(); + } + } + + /** + * @generated + */ + protected void performDirectEditRequest(Request request) + { + final Request theRequest = request; + try + { + getEditingDomain().runExclusive(new Runnable() + { + + public void run() + { + if (isActive() && isEditable()) + { + if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) + { + Character initialChar = (Character)theRequest.getExtendedData().get( + RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); + performDirectEdit(initialChar.charValue()); + } + else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) + { + DirectEditRequest editRequest = (DirectEditRequest)theRequest; + performDirectEdit(editRequest.getLocation()); + } + else + { + performDirectEdit(); + } + } + } + }); + } + catch (InterruptedException e) + { + e.printStackTrace(); + } + } + + /** + * @generated + */ + protected void refreshVisuals() + { + super.refreshVisuals(); + refreshLabel(); + refreshFont(); + refreshFontColor(); + refreshUnderline(); + refreshStrikeThrough(); + } + + /** + * @generated + */ + protected void refreshLabel() + { + setLabelTextHelper(getFigure(), getLabelText()); + setLabelIconHelper(getFigure(), getLabelIcon()); + Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); + if (pdEditPolicy instanceof AcoreTextSelectionEditPolicy) + { + ((AcoreTextSelectionEditPolicy)pdEditPolicy).refreshFeedback(); + } + Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE); + if (sfEditPolicy instanceof AcoreTextSelectionEditPolicy) + { + ((AcoreTextSelectionEditPolicy)sfEditPolicy).refreshFeedback(); + } + } + + /** + * @generated + */ + protected void refreshUnderline() + { + FontStyle style = (FontStyle)getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); + if (style != null && getFigure() instanceof WrappingLabel) + { + ((WrappingLabel)getFigure()).setTextUnderline(style.isUnderline()); + } + } + + /** + * @generated + */ + protected void refreshStrikeThrough() + { + FontStyle style = (FontStyle)getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); + if (style != null && getFigure() instanceof WrappingLabel) + { + ((WrappingLabel)getFigure()).setTextStrikeThrough(style.isStrikeThrough()); + } + } + + /** + * @generated + */ + protected void refreshFont() + { + FontStyle style = (FontStyle)getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); + if (style != null) + { + FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD + : SWT.NORMAL) + | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); + setFont(fontData); + } + } + + /** + * @generated + */ + protected void setFontColor(Color color) + { + getFigure().setForegroundColor(color); + } + + /** + * @generated + */ + protected void addSemanticListeners() + { + if (getParser() instanceof ISemanticParser) + { + EObject element = resolveSemanticElement(); + parserElements = ((ISemanticParser)getParser()).getSemanticElementsBeingParsed(element); + for (int i = 0; i < parserElements.size(); i++) + { + addListenerFilter("SemanticModel" + i, this, (EObject)parserElements.get(i)); //$NON-NLS-1$ + } + } + else + { + super.addSemanticListeners(); + } + } + + /** + * @generated + */ + protected void removeSemanticListeners() + { + if (parserElements != null) + { + for (int i = 0; i < parserElements.size(); i++) + { + removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ + } + } + else + { + super.removeSemanticListeners(); + } + } + + /** + * @generated + */ + protected AccessibleEditPart getAccessibleEditPart() + { + if (accessibleEP == null) + { + accessibleEP = new AccessibleGraphicalEditPart() + { + + public void getName(AccessibleEvent e) + { + e.result = getLabelTextHelper(getFigure()); + } + }; + } + return accessibleEP; + } + + /** + * @generated + */ + private View getFontStyleOwnerView() + { + return getPrimaryView(); + } + + /** + * @generated + */ + protected void addNotationalListeners() + { + super.addNotationalListeners(); + addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ + } + + /** + * @generated + */ + protected void removeNotationalListeners() + { + super.removeNotationalListeners(); + removeListenerFilter("PrimaryView"); //$NON-NLS-1$ + } + + /** + * @generated + */ + protected void handleNotificationEvent(Notification event) + { + Object feature = event.getFeature(); + if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) + { + Integer c = (Integer)event.getNewValue(); + setFontColor(DiagramColorRegistry.getInstance().getColor(c)); + } + else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) + { + refreshUnderline(); + } + else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) + { + refreshStrikeThrough(); + } + else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) + || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) + || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) + || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) + { + refreshFont(); + } + else + { + if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) + { + refreshLabel(); + } + if (getParser() instanceof ISemanticParser) + { + ISemanticParser modelParser = (ISemanticParser)getParser(); + if (modelParser.areSemanticElementsAffected(null, event)) + { + removeSemanticListeners(); + if (resolveSemanticElement() != null) + { + addSemanticListeners(); + } + refreshLabel(); + } + } + } + super.handleNotificationEvent(event); + } + + /** + * @generated + */ + protected IFigure createFigure() + { + IFigure label = createFigurePrim(); + defaultText = getLabelTextHelper(label); + return label; + } + + /** + * @generated + */ + protected IFigure createFigurePrim() + { + return new WrappingLabel(); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AClassAAttributeCompartmentEditPart.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AClassAAttributeCompartmentEditPart.java new file mode 100644 index 0000000000..3440e62958 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AClassAAttributeCompartmentEditPart.java @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts; + +import org.eclipse.draw2d.IFigure; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AClassAAttributeCompartmentCanonicalEditPolicy; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AClassAAttributeCompartmentItemSemanticEditPolicy; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.Messages; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.gmf.runtime.diagram.ui.editparts.ListCompartmentEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; +import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure; +import org.eclipse.gmf.runtime.notation.View; + +/** + * @generated + */ +public class AClassAAttributeCompartmentEditPart extends ListCompartmentEditPart +{ + + /** + * @generated + */ + public static final int VISUAL_ID = 7003; + + /** + * @generated + */ + public AClassAAttributeCompartmentEditPart(View view) + { + super(view); + } + + /** + * @generated + */ + protected boolean hasModelChildrenChanged(Notification evt) + { + return false; + } + + /** + * @generated + */ + public String getCompartmentName() + { + return Messages.AClassAAttributeCompartmentEditPart_title; + } + + /** + * @generated + */ + public IFigure createFigure() + { + ResizableCompartmentFigure result = (ResizableCompartmentFigure)super.createFigure(); + result.setTitleVisibility(false); + return result; + } + + /** + * @generated + */ + protected void createDefaultEditPolicies() + { + super.createDefaultEditPolicies(); + installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new AClassAAttributeCompartmentItemSemanticEditPolicy()); + installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy()); + installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new DragDropEditPolicy()); + installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new AClassAAttributeCompartmentCanonicalEditPolicy()); + } + + /** + * @generated + */ + protected void setRatio(Double ratio) + { + // nothing to do -- parent layout does not accept Double constraints as ratio + // super.setRatio(ratio); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AClassAOperationClassCompartmentEditPart.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AClassAOperationClassCompartmentEditPart.java new file mode 100644 index 0000000000..a2c524c4e9 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AClassAOperationClassCompartmentEditPart.java @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts; + +import org.eclipse.draw2d.IFigure; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AClassAOperationClassCompartmentCanonicalEditPolicy; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AClassAOperationClassCompartmentItemSemanticEditPolicy; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.Messages; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.gmf.runtime.diagram.ui.editparts.ListCompartmentEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; +import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure; +import org.eclipse.gmf.runtime.notation.View; + +/** + * @generated + */ +public class AClassAOperationClassCompartmentEditPart extends ListCompartmentEditPart +{ + + /** + * @generated + */ + public static final int VISUAL_ID = 7004; + + /** + * @generated + */ + public AClassAOperationClassCompartmentEditPart(View view) + { + super(view); + } + + /** + * @generated + */ + protected boolean hasModelChildrenChanged(Notification evt) + { + return false; + } + + /** + * @generated + */ + public String getCompartmentName() + { + return Messages.AClassAOperationClassCompartmentEditPart_title; + } + + /** + * @generated + */ + public IFigure createFigure() + { + ResizableCompartmentFigure result = (ResizableCompartmentFigure)super.createFigure(); + result.setTitleVisibility(false); + return result; + } + + /** + * @generated + */ + protected void createDefaultEditPolicies() + { + super.createDefaultEditPolicies(); + installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new AClassAOperationClassCompartmentItemSemanticEditPolicy()); + installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy()); + installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new DragDropEditPolicy()); + installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new AClassAOperationClassCompartmentCanonicalEditPolicy()); + } + + /** + * @generated + */ + protected void setRatio(Double ratio) + { + // nothing to do -- parent layout does not accept Double constraints as ratio + // super.setRatio(ratio); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AClassAggregationsEditPart.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AClassAggregationsEditPart.java new file mode 100644 index 0000000000..22402cf228 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AClassAggregationsEditPart.java @@ -0,0 +1,119 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts; + +import org.eclipse.draw2d.Connection; +import org.eclipse.draw2d.PolygonDecoration; +import org.eclipse.draw2d.RotatableDecoration; +import org.eclipse.draw2d.geometry.PointList; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AClassAggregationsItemSemanticEditPolicy; +import org.eclipse.gmf.runtime.diagram.ui.editparts.ConnectionNodeEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editparts.ITreeBranchEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; +import org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx; +import org.eclipse.gmf.runtime.notation.View; +import org.eclipse.swt.graphics.Color; + +/** + * @generated + */ +public class AClassAggregationsEditPart extends ConnectionNodeEditPart implements ITreeBranchEditPart +{ + + /** + * @generated + */ + public static final int VISUAL_ID = 4004; + + /** + * @generated + */ + public AClassAggregationsEditPart(View view) + { + super(view); + } + + /** + * @generated + */ + protected void createDefaultEditPolicies() + { + super.createDefaultEditPolicies(); + installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new AClassAggregationsItemSemanticEditPolicy()); + } + + /** + * Creates figure for this edit part. + * + * Body of this method does not depend on settings in generation model + * so you may safely remove <i>generated</i> tag and modify it. + * + * @generated + */ + + protected Connection createConnectionFigure() + { + return new AClassAggregationClassesFigure(); + } + + /** + * @generated + */ + public AClassAggregationClassesFigure getPrimaryShape() + { + return (AClassAggregationClassesFigure)getFigure(); + } + + /** + * @generated + */ + public class AClassAggregationClassesFigure extends PolylineConnectionEx + { + + /** + * @generated + */ + public AClassAggregationClassesFigure() + { + this.setLineWidth(1); + + setTargetDecoration(createTargetDecoration()); + } + + /** + * @generated + */ + private RotatableDecoration createTargetDecoration() + { + PolygonDecoration df = new PolygonDecoration(); + df.setFill(true); + df.setLineWidth(1); + df.setBackgroundColor(DF_BACK); + PointList pl = new PointList(); + pl.addPoint(getMapMode().DPtoLP(-2), getMapMode().DPtoLP(2)); + pl.addPoint(getMapMode().DPtoLP(0), getMapMode().DPtoLP(0)); + pl.addPoint(getMapMode().DPtoLP(-2), getMapMode().DPtoLP(-2)); + pl.addPoint(getMapMode().DPtoLP(-4), getMapMode().DPtoLP(0)); + pl.addPoint(getMapMode().DPtoLP(-2), getMapMode().DPtoLP(2)); + df.setTemplate(pl); + df.setScale(getMapMode().DPtoLP(7), getMapMode().DPtoLP(3)); + return df; + } + + } + + /** + * @generated + */ + static final Color DF_BACK = new Color(null, 255, 255, 255); + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AClassAssociationsEditPart.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AClassAssociationsEditPart.java new file mode 100644 index 0000000000..395daea6bd --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AClassAssociationsEditPart.java @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts; + +import org.eclipse.draw2d.Connection; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AClassAssociationsItemSemanticEditPolicy; +import org.eclipse.gmf.runtime.diagram.ui.editparts.ConnectionNodeEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editparts.ITreeBranchEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; +import org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx; +import org.eclipse.gmf.runtime.notation.View; + +/** + * @generated + */ +public class AClassAssociationsEditPart extends ConnectionNodeEditPart implements ITreeBranchEditPart +{ + + /** + * @generated + */ + public static final int VISUAL_ID = 4003; + + /** + * @generated + */ + public AClassAssociationsEditPart(View view) + { + super(view); + } + + /** + * @generated + */ + protected void createDefaultEditPolicies() + { + super.createDefaultEditPolicies(); + installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new AClassAssociationsItemSemanticEditPolicy()); + } + + /** + * Creates figure for this edit part. + * + * Body of this method does not depend on settings in generation model + * so you may safely remove <i>generated</i> tag and modify it. + * + * @generated + */ + protected Connection createConnectionFigure() + { + return new PolylineConnectionEx(); + } + + /** + * @generated + */ + public PolylineConnectionEx getPrimaryShape() + { + return (PolylineConnectionEx)getFigure(); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AClassCompositionsEditPart.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AClassCompositionsEditPart.java new file mode 100644 index 0000000000..c572398f54 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AClassCompositionsEditPart.java @@ -0,0 +1,119 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts; + +import org.eclipse.draw2d.Connection; +import org.eclipse.draw2d.PolygonDecoration; +import org.eclipse.draw2d.RotatableDecoration; +import org.eclipse.draw2d.geometry.PointList; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AClassCompositionsItemSemanticEditPolicy; +import org.eclipse.gmf.runtime.diagram.ui.editparts.ConnectionNodeEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editparts.ITreeBranchEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; +import org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx; +import org.eclipse.gmf.runtime.notation.View; +import org.eclipse.swt.graphics.Color; + +/** + * @generated + */ +public class AClassCompositionsEditPart extends ConnectionNodeEditPart implements ITreeBranchEditPart +{ + + /** + * @generated + */ + public static final int VISUAL_ID = 4005; + + /** + * @generated + */ + public AClassCompositionsEditPart(View view) + { + super(view); + } + + /** + * @generated + */ + protected void createDefaultEditPolicies() + { + super.createDefaultEditPolicies(); + installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new AClassCompositionsItemSemanticEditPolicy()); + } + + /** + * Creates figure for this edit part. + * + * Body of this method does not depend on settings in generation model + * so you may safely remove <i>generated</i> tag and modify it. + * + * @generated + */ + + protected Connection createConnectionFigure() + { + return new AClassCompositionClassesFigure(); + } + + /** + * @generated + */ + public AClassCompositionClassesFigure getPrimaryShape() + { + return (AClassCompositionClassesFigure)getFigure(); + } + + /** + * @generated + */ + public class AClassCompositionClassesFigure extends PolylineConnectionEx + { + + /** + * @generated + */ + public AClassCompositionClassesFigure() + { + this.setLineWidth(1); + + setTargetDecoration(createTargetDecoration()); + } + + /** + * @generated + */ + private RotatableDecoration createTargetDecoration() + { + PolygonDecoration df = new PolygonDecoration(); + df.setFill(true); + df.setLineWidth(1); + df.setBackgroundColor(DF_BACK); + PointList pl = new PointList(); + pl.addPoint(getMapMode().DPtoLP(-2), getMapMode().DPtoLP(2)); + pl.addPoint(getMapMode().DPtoLP(0), getMapMode().DPtoLP(0)); + pl.addPoint(getMapMode().DPtoLP(-2), getMapMode().DPtoLP(-2)); + pl.addPoint(getMapMode().DPtoLP(-4), getMapMode().DPtoLP(0)); + pl.addPoint(getMapMode().DPtoLP(-2), getMapMode().DPtoLP(2)); + df.setTemplate(pl); + df.setScale(getMapMode().DPtoLP(7), getMapMode().DPtoLP(3)); + return df; + } + + } + + /** + * @generated + */ + static final Color DF_BACK = new Color(null, 0, 0, 0); + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AClassEditPart.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AClassEditPart.java new file mode 100644 index 0000000000..a71cfd13f5 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AClassEditPart.java @@ -0,0 +1,581 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts; + +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; + +import org.eclipse.draw2d.IFigure; +import org.eclipse.draw2d.RectangleFigure; +import org.eclipse.draw2d.Shape; +import org.eclipse.draw2d.StackLayout; +import org.eclipse.draw2d.ToolbarLayout; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AClassItemSemanticEditPolicy; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AcoreTextSelectionEditPolicy; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreVisualIDRegistry; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.AcoreElementTypes; +import org.eclipse.gef.EditPart; +import org.eclipse.gef.EditPolicy; +import org.eclipse.gef.Request; +import org.eclipse.gef.editpolicies.LayoutEditPolicy; +import org.eclipse.gmf.runtime.diagram.core.edithelpers.CreateElementRequestAdapter; +import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeNodeEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ConstrainedToolbarLayoutEditPolicy; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; +import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewAndElementRequest; +import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; +import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel; +import org.eclipse.gmf.runtime.emf.type.core.IElementType; +import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure; +import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure; +import org.eclipse.gmf.runtime.notation.View; +import org.eclipse.swt.graphics.Color; + +/** + * @generated + */ +public class AClassEditPart extends ShapeNodeEditPart +{ + + /** + * @generated + */ + public static final int VISUAL_ID = 2002; + + /** + * @generated + */ + protected IFigure contentPane; + + /** + * @generated + */ + protected IFigure primaryShape; + + /** + * @generated + */ + public AClassEditPart(View view) + { + super(view); + } + + /** + * @generated + */ + protected void createDefaultEditPolicies() + { + installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy()); + super.createDefaultEditPolicies(); + installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new AClassItemSemanticEditPolicy()); + installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy()); + // XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies + // removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE); + } + + /** + * @generated + */ + protected LayoutEditPolicy createLayoutEditPolicy() + { + + ConstrainedToolbarLayoutEditPolicy lep = new ConstrainedToolbarLayoutEditPolicy() + { + + protected EditPolicy createChildEditPolicy(EditPart child) + { + if (child.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE) == null) + { + if (child instanceof ITextAwareEditPart) + { + return new AcoreTextSelectionEditPolicy(); + } + } + return super.createChildEditPolicy(child); + } + }; + return lep; + } + + /** + * @generated + */ + protected IFigure createNodeShape() + { + AClassFigure figure = new AClassFigure(); + return primaryShape = figure; + } + + /** + * @generated + */ + public AClassFigure getPrimaryShape() + { + return (AClassFigure)primaryShape; + } + + /** + * @generated + */ + protected boolean addFixedChild(EditPart childEditPart) + { + if (childEditPart instanceof AClassNameEditPart) + { + ((AClassNameEditPart)childEditPart).setLabel(getPrimaryShape().getFigureAClassNameFigure()); + return true; + } + if (childEditPart instanceof AClassAAttributeCompartmentEditPart) + { + IFigure pane = getPrimaryShape().getFigureClassAttributes(); + setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way + pane.add(((AClassAAttributeCompartmentEditPart)childEditPart).getFigure()); + return true; + } + if (childEditPart instanceof AClassAOperationClassCompartmentEditPart) + { + IFigure pane = getPrimaryShape().getFigureClassOperations(); + setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way + pane.add(((AClassAOperationClassCompartmentEditPart)childEditPart).getFigure()); + return true; + } + return false; + } + + /** + * @generated + */ + protected boolean removeFixedChild(EditPart childEditPart) + { + if (childEditPart instanceof AClassNameEditPart) + { + return true; + } + if (childEditPart instanceof AClassAAttributeCompartmentEditPart) + { + IFigure pane = getPrimaryShape().getFigureClassAttributes(); + setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way + pane.remove(((AClassAAttributeCompartmentEditPart)childEditPart).getFigure()); + return true; + } + if (childEditPart instanceof AClassAOperationClassCompartmentEditPart) + { + IFigure pane = getPrimaryShape().getFigureClassOperations(); + setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way + pane.remove(((AClassAOperationClassCompartmentEditPart)childEditPart).getFigure()); + return true; + } + return false; + } + + /** + * @generated + */ + protected void addChildVisual(EditPart childEditPart, int index) + { + if (addFixedChild(childEditPart)) + { + return; + } + super.addChildVisual(childEditPart, -1); + } + + /** + * @generated + */ + protected void removeChildVisual(EditPart childEditPart) + { + if (removeFixedChild(childEditPart)) + { + return; + } + super.removeChildVisual(childEditPart); + } + + /** + * @generated + */ + protected IFigure getContentPaneFor(IGraphicalEditPart editPart) + { + if (editPart instanceof AClassAAttributeCompartmentEditPart) + { + return getPrimaryShape().getFigureClassAttributes(); + } + if (editPart instanceof AClassAOperationClassCompartmentEditPart) + { + return getPrimaryShape().getFigureClassOperations(); + } + return getContentPane(); + } + + /** + * @generated + */ + protected NodeFigure createNodePlate() + { + DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40); + return result; + } + + /** + * Creates figure for this edit part. + * + * Body of this method does not depend on settings in generation model + * so you may safely remove <i>generated</i> tag and modify it. + * + * @generated + */ + protected NodeFigure createNodeFigure() + { + NodeFigure figure = createNodePlate(); + figure.setLayoutManager(new StackLayout()); + IFigure shape = createNodeShape(); + figure.add(shape); + contentPane = setupContentPane(shape); + return figure; + } + + /** + * Default implementation treats passed figure as content pane. + * Respects layout one may have set for generated figure. + * @param nodeShape instance of generated figure class + * @generated + */ + protected IFigure setupContentPane(IFigure nodeShape) + { + if (nodeShape.getLayoutManager() == null) + { + ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout(); + layout.setSpacing(5); + nodeShape.setLayoutManager(layout); + } + return nodeShape; // use nodeShape itself as contentPane + } + + /** + * @generated + */ + public IFigure getContentPane() + { + if (contentPane != null) + { + return contentPane; + } + return super.getContentPane(); + } + + /** + * @generated + */ + protected void setForegroundColor(Color color) + { + if (primaryShape != null) + { + primaryShape.setForegroundColor(color); + } + } + + /** + * @generated + */ + protected void setBackgroundColor(Color color) + { + if (primaryShape != null) + { + primaryShape.setBackgroundColor(color); + } + } + + /** + * @generated + */ + protected void setLineWidth(int width) + { + if (primaryShape instanceof Shape) + { + ((Shape)primaryShape).setLineWidth(width); + } + } + + /** + * @generated + */ + protected void setLineType(int style) + { + if (primaryShape instanceof Shape) + { + ((Shape)primaryShape).setLineStyle(style); + } + } + + /** + * @generated + */ + public EditPart getPrimaryChildEditPart() + { + return getChildBySemanticHint(AcoreVisualIDRegistry.getType(AClassNameEditPart.VISUAL_ID)); + } + + /** + * @generated + */ + public List<IElementType> getMARelTypesOnSource() + { + ArrayList<IElementType> types = new ArrayList<IElementType>(5); + types.add(AcoreElementTypes.AClassSubClasses_4001); + types.add(AcoreElementTypes.AClassImplementedInterfaces_4002); + types.add(AcoreElementTypes.AClassAssociations_4003); + types.add(AcoreElementTypes.AClassAggregations_4004); + types.add(AcoreElementTypes.AClassCompositions_4005); + return types; + } + + /** + * @generated + */ + public List<IElementType> getMARelTypesOnSourceAndTarget(IGraphicalEditPart targetEditPart) + { + LinkedList<IElementType> types = new LinkedList<IElementType>(); + if (targetEditPart instanceof org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AClassEditPart) + { + types.add(AcoreElementTypes.AClassSubClasses_4001); + } + if (targetEditPart instanceof AInterfaceEditPart) + { + types.add(AcoreElementTypes.AClassImplementedInterfaces_4002); + } + if (targetEditPart instanceof org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AClassEditPart) + { + types.add(AcoreElementTypes.AClassAssociations_4003); + } + if (targetEditPart instanceof org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AClassEditPart) + { + types.add(AcoreElementTypes.AClassAggregations_4004); + } + if (targetEditPart instanceof org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AClassEditPart) + { + types.add(AcoreElementTypes.AClassCompositions_4005); + } + return types; + } + + /** + * @generated + */ + public List<IElementType> getMATypesForTarget(IElementType relationshipType) + { + LinkedList<IElementType> types = new LinkedList<IElementType>(); + if (relationshipType == AcoreElementTypes.AClassSubClasses_4001) + { + types.add(AcoreElementTypes.AClass_2002); + } + else if (relationshipType == AcoreElementTypes.AClassImplementedInterfaces_4002) + { + types.add(AcoreElementTypes.AInterface_2001); + } + else if (relationshipType == AcoreElementTypes.AClassAssociations_4003) + { + types.add(AcoreElementTypes.AClass_2002); + } + else if (relationshipType == AcoreElementTypes.AClassAggregations_4004) + { + types.add(AcoreElementTypes.AClass_2002); + } + else if (relationshipType == AcoreElementTypes.AClassCompositions_4005) + { + types.add(AcoreElementTypes.AClass_2002); + } + return types; + } + + /** + * @generated + */ + public List<IElementType> getMARelTypesOnTarget() + { + ArrayList<IElementType> types = new ArrayList<IElementType>(4); + types.add(AcoreElementTypes.AClassSubClasses_4001); + types.add(AcoreElementTypes.AClassAssociations_4003); + types.add(AcoreElementTypes.AClassAggregations_4004); + types.add(AcoreElementTypes.AClassCompositions_4005); + return types; + } + + /** + * @generated + */ + public List<IElementType> getMATypesForSource(IElementType relationshipType) + { + LinkedList<IElementType> types = new LinkedList<IElementType>(); + if (relationshipType == AcoreElementTypes.AClassSubClasses_4001) + { + types.add(AcoreElementTypes.AClass_2002); + } + else if (relationshipType == AcoreElementTypes.AClassAssociations_4003) + { + types.add(AcoreElementTypes.AClass_2002); + } + else if (relationshipType == AcoreElementTypes.AClassAggregations_4004) + { + types.add(AcoreElementTypes.AClass_2002); + } + else if (relationshipType == AcoreElementTypes.AClassCompositions_4005) + { + types.add(AcoreElementTypes.AClass_2002); + } + return types; + } + + /** + * @generated + */ + public EditPart getTargetEditPart(Request request) + { + if (request instanceof CreateViewAndElementRequest) + { + CreateElementRequestAdapter adapter = ((CreateViewAndElementRequest)request).getViewAndElementDescriptor() + .getCreateElementRequestAdapter(); + IElementType type = (IElementType)adapter.getAdapter(IElementType.class); + if (type == AcoreElementTypes.AAttribute_3003) + { + return getChildBySemanticHint(AcoreVisualIDRegistry.getType(AClassAAttributeCompartmentEditPart.VISUAL_ID)); + } + if (type == AcoreElementTypes.AOperation_3004) + { + return getChildBySemanticHint(AcoreVisualIDRegistry.getType(AClassAOperationClassCompartmentEditPart.VISUAL_ID)); + } + } + return super.getTargetEditPart(request); + } + + /** + * @generated + */ + public class AClassFigure extends RectangleFigure + { + + /** + * @generated + */ + private RectangleFigure fFigureClassAttributes; + + /** + * @generated + */ + private WrappingLabel fFigureAClassNameFigure; + + /** + * @generated + */ + private RectangleFigure fFigureClassOperations; + + /** + * @generated + */ + public AClassFigure() + { + + ToolbarLayout layoutThis = new ToolbarLayout(); + layoutThis.setStretchMinorAxis(true); + layoutThis.setMinorAlignment(ToolbarLayout.ALIGN_CENTER); + + layoutThis.setSpacing(0); + layoutThis.setVertical(true); + + this.setLayoutManager(layoutThis); + + this.setLineWidth(1); + this.setBackgroundColor(THIS_BACK); + createContents(); + } + + /** + * @generated + */ + private void createContents() + { + + fFigureAClassNameFigure = new WrappingLabel(); + fFigureAClassNameFigure.setText("<...>"); + + this.add(fFigureAClassNameFigure); + + fFigureClassAttributes = new RectangleFigure(); + fFigureClassAttributes.setLineWidth(1); + + this.add(fFigureClassAttributes); + fFigureClassAttributes.setLayoutManager(new StackLayout()); + + fFigureClassOperations = new RectangleFigure(); + fFigureClassOperations.setLineWidth(1); + + this.add(fFigureClassOperations); + fFigureClassOperations.setLayoutManager(new StackLayout()); + + } + + /** + * @generated + */ + private boolean myUseLocalCoordinates = false; + + /** + * @generated + */ + protected boolean useLocalCoordinates() + { + return myUseLocalCoordinates; + } + + /** + * @generated + */ + protected void setUseLocalCoordinates(boolean useLocalCoordinates) + { + myUseLocalCoordinates = useLocalCoordinates; + } + + /** + * @generated + */ + public RectangleFigure getFigureClassAttributes() + { + return fFigureClassAttributes; + } + + /** + * @generated + */ + public WrappingLabel getFigureAClassNameFigure() + { + return fFigureAClassNameFigure; + } + + /** + * @generated + */ + public RectangleFigure getFigureClassOperations() + { + return fFigureClassOperations; + } + + } + + /** + * @generated + */ + static final Color THIS_BACK = new Color(null, 230, 230, 255); + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AClassImplementedInterfacesEditPart.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AClassImplementedInterfacesEditPart.java new file mode 100644 index 0000000000..cadb28c77a --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AClassImplementedInterfacesEditPart.java @@ -0,0 +1,104 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts; + +import org.eclipse.draw2d.Connection; +import org.eclipse.draw2d.Graphics; +import org.eclipse.draw2d.PolylineDecoration; +import org.eclipse.draw2d.RotatableDecoration; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AClassImplementedInterfacesItemSemanticEditPolicy; +import org.eclipse.gmf.runtime.diagram.ui.editparts.ConnectionNodeEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editparts.ITreeBranchEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; +import org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx; +import org.eclipse.gmf.runtime.notation.View; + +/** + * @generated + */ +public class AClassImplementedInterfacesEditPart extends ConnectionNodeEditPart implements ITreeBranchEditPart +{ + + /** + * @generated + */ + public static final int VISUAL_ID = 4002; + + /** + * @generated + */ + public AClassImplementedInterfacesEditPart(View view) + { + super(view); + } + + /** + * @generated + */ + protected void createDefaultEditPolicies() + { + super.createDefaultEditPolicies(); + installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new AClassImplementedInterfacesItemSemanticEditPolicy()); + } + + /** + * Creates figure for this edit part. + * + * Body of this method does not depend on settings in generation model + * so you may safely remove <i>generated</i> tag and modify it. + * + * @generated + */ + + protected Connection createConnectionFigure() + { + return new AClassImplementedInterfacesFigure(); + } + + /** + * @generated + */ + public AClassImplementedInterfacesFigure getPrimaryShape() + { + return (AClassImplementedInterfacesFigure)getFigure(); + } + + /** + * @generated + */ + public class AClassImplementedInterfacesFigure extends PolylineConnectionEx + { + + /** + * @generated + */ + public AClassImplementedInterfacesFigure() + { + this.setLineWidth(1); + this.setLineStyle(Graphics.LINE_DASH); + + setTargetDecoration(createTargetDecoration()); + } + + /** + * @generated + */ + private RotatableDecoration createTargetDecoration() + { + PolylineDecoration df = new PolylineDecoration(); + df.setLineWidth(1); + return df; + } + + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AClassNameEditPart.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AClassNameEditPart.java new file mode 100644 index 0000000000..83952baae5 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AClassNameEditPart.java @@ -0,0 +1,684 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import org.eclipse.draw2d.IFigure; +import org.eclipse.draw2d.Label; +import org.eclipse.draw2d.geometry.Point; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AcoreTextSelectionEditPolicy; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreVisualIDRegistry; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.AcoreElementTypes; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.AcoreParserProvider; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.transaction.RunnableWithResult; +import org.eclipse.gef.AccessibleEditPart; +import org.eclipse.gef.EditPolicy; +import org.eclipse.gef.GraphicalEditPart; +import org.eclipse.gef.Request; +import org.eclipse.gef.commands.Command; +import org.eclipse.gef.editpolicies.NonResizableEditPolicy; +import org.eclipse.gef.handles.MoveHandle; +import org.eclipse.gef.handles.NonResizableHandleKit; +import org.eclipse.gef.requests.DirectEditRequest; +import org.eclipse.gef.tools.DirectEditManager; +import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; +import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; +import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; +import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; +import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; +import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; +import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; +import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; +import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel; +import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; +import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; +import org.eclipse.gmf.runtime.notation.FontStyle; +import org.eclipse.gmf.runtime.notation.NotationPackage; +import org.eclipse.gmf.runtime.notation.View; +import org.eclipse.jface.text.contentassist.IContentAssistProcessor; +import org.eclipse.jface.viewers.ICellEditorValidator; +import org.eclipse.swt.SWT; +import org.eclipse.swt.accessibility.AccessibleEvent; +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.FontData; +import org.eclipse.swt.graphics.Image; + +/** + * @generated + */ +public class AClassNameEditPart extends CompartmentEditPart implements ITextAwareEditPart +{ + + /** + * @generated + */ + public static final int VISUAL_ID = 5002; + + /** + * @generated + */ + private DirectEditManager manager; + + /** + * @generated + */ + private IParser parser; + + /** + * @generated + */ + private List parserElements; + + /** + * @generated + */ + private String defaultText; + + /** + * @generated + */ + public AClassNameEditPart(View view) + { + super(view); + } + + /** + * @generated + */ + protected void createDefaultEditPolicies() + { + super.createDefaultEditPolicies(); + installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, new AcoreTextSelectionEditPolicy()); + installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); + installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new NonResizableEditPolicy() + { + + protected List createSelectionHandles() + { + List handles = new ArrayList(); + NonResizableHandleKit.addMoveHandle((GraphicalEditPart)getHost(), handles); + ((MoveHandle)handles.get(0)).setBorder(null); + return handles; + } + + public Command getCommand(Request request) + { + return null; + } + + public boolean understandsRequest(Request request) + { + return false; + } + }); + } + + /** + * @generated + */ + protected String getLabelTextHelper(IFigure figure) + { + if (figure instanceof WrappingLabel) + { + return ((WrappingLabel)figure).getText(); + } + else + { + return ((Label)figure).getText(); + } + } + + /** + * @generated + */ + protected void setLabelTextHelper(IFigure figure, String text) + { + if (figure instanceof WrappingLabel) + { + ((WrappingLabel)figure).setText(text); + } + else + { + ((Label)figure).setText(text); + } + } + + /** + * @generated + */ + protected Image getLabelIconHelper(IFigure figure) + { + if (figure instanceof WrappingLabel) + { + return ((WrappingLabel)figure).getIcon(); + } + else + { + return ((Label)figure).getIcon(); + } + } + + /** + * @generated + */ + protected void setLabelIconHelper(IFigure figure, Image icon) + { + if (figure instanceof WrappingLabel) + { + ((WrappingLabel)figure).setIcon(icon); + } + else + { + ((Label)figure).setIcon(icon); + } + } + + /** + * @generated + */ + public void setLabel(WrappingLabel figure) + { + unregisterVisuals(); + setFigure(figure); + defaultText = getLabelTextHelper(figure); + registerVisuals(); + refreshVisuals(); + } + + /** + * @generated + */ + protected List getModelChildren() + { + return Collections.EMPTY_LIST; + } + + /** + * @generated + */ + public IGraphicalEditPart getChildBySemanticHint(String semanticHint) + { + return null; + } + + /** + * @generated + */ + protected EObject getParserElement() + { + return resolveSemanticElement(); + } + + /** + * @generated + */ + protected Image getLabelIcon() + { + EObject parserElement = getParserElement(); + if (parserElement == null) + { + return null; + } + return AcoreElementTypes.getImage(parserElement.eClass()); + } + + /** + * @generated + */ + protected String getLabelText() + { + String text = null; + EObject parserElement = getParserElement(); + if (parserElement != null && getParser() != null) + { + text = getParser().getPrintString(new EObjectAdapter(parserElement), getParserOptions().intValue()); + } + if (text == null || text.length() == 0) + { + text = defaultText; + } + return text; + } + + /** + * @generated + */ + public void setLabelText(String text) + { + setLabelTextHelper(getFigure(), text); + Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); + if (pdEditPolicy instanceof AcoreTextSelectionEditPolicy) + { + ((AcoreTextSelectionEditPolicy)pdEditPolicy).refreshFeedback(); + } + Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE); + if (sfEditPolicy instanceof AcoreTextSelectionEditPolicy) + { + ((AcoreTextSelectionEditPolicy)sfEditPolicy).refreshFeedback(); + } + } + + /** + * @generated + */ + public String getEditText() + { + if (getParserElement() == null || getParser() == null) + { + return ""; //$NON-NLS-1$ + } + return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); + } + + /** + * @generated + */ + protected boolean isEditable() + { + return getParser() != null; + } + + /** + * @generated + */ + public ICellEditorValidator getEditTextValidator() + { + return new ICellEditorValidator() + { + + public String isValid(final Object value) + { + if (value instanceof String) + { + final EObject element = getParserElement(); + final IParser parser = getParser(); + try + { + IParserEditStatus valid = (IParserEditStatus)getEditingDomain().runExclusive(new RunnableWithResult.Impl() + { + + public void run() + { + setResult(parser.isValidEditString(new EObjectAdapter(element), (String)value)); + } + }); + return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); + } + catch (InterruptedException ie) + { + ie.printStackTrace(); + } + } + + // shouldn't get here + return null; + } + }; + } + + /** + * @generated + */ + public IContentAssistProcessor getCompletionProcessor() + { + if (getParserElement() == null || getParser() == null) + { + return null; + } + return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); + } + + /** + * @generated + */ + public ParserOptions getParserOptions() + { + return ParserOptions.NONE; + } + + /** + * @generated + */ + public IParser getParser() + { + if (parser == null) + { + parser = AcoreParserProvider.getParser(AcoreElementTypes.AClass_2002, getParserElement(), AcoreVisualIDRegistry + .getType(org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AClassNameEditPart.VISUAL_ID)); + } + return parser; + } + + /** + * @generated + */ + protected DirectEditManager getManager() + { + if (manager == null) + { + setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), + AcoreEditPartFactory.getTextCellEditorLocator(this))); + } + return manager; + } + + /** + * @generated + */ + protected void setManager(DirectEditManager manager) + { + this.manager = manager; + } + + /** + * @generated + */ + protected void performDirectEdit() + { + getManager().show(); + } + + /** + * @generated + */ + protected void performDirectEdit(Point eventLocation) + { + if (getManager().getClass() == TextDirectEditManager.class) + { + ((TextDirectEditManager)getManager()).show(eventLocation.getSWTPoint()); + } + } + + /** + * @generated + */ + private void performDirectEdit(char initialCharacter) + { + if (getManager() instanceof TextDirectEditManager) + { + ((TextDirectEditManager)getManager()).show(initialCharacter); + } + else + { + performDirectEdit(); + } + } + + /** + * @generated + */ + protected void performDirectEditRequest(Request request) + { + final Request theRequest = request; + try + { + getEditingDomain().runExclusive(new Runnable() + { + + public void run() + { + if (isActive() && isEditable()) + { + if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) + { + Character initialChar = (Character)theRequest.getExtendedData().get( + RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); + performDirectEdit(initialChar.charValue()); + } + else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) + { + DirectEditRequest editRequest = (DirectEditRequest)theRequest; + performDirectEdit(editRequest.getLocation()); + } + else + { + performDirectEdit(); + } + } + } + }); + } + catch (InterruptedException e) + { + e.printStackTrace(); + } + } + + /** + * @generated + */ + protected void refreshVisuals() + { + super.refreshVisuals(); + refreshLabel(); + refreshFont(); + refreshFontColor(); + refreshUnderline(); + refreshStrikeThrough(); + } + + /** + * @generated + */ + protected void refreshLabel() + { + setLabelTextHelper(getFigure(), getLabelText()); + setLabelIconHelper(getFigure(), getLabelIcon()); + Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); + if (pdEditPolicy instanceof AcoreTextSelectionEditPolicy) + { + ((AcoreTextSelectionEditPolicy)pdEditPolicy).refreshFeedback(); + } + Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE); + if (sfEditPolicy instanceof AcoreTextSelectionEditPolicy) + { + ((AcoreTextSelectionEditPolicy)sfEditPolicy).refreshFeedback(); + } + } + + /** + * @generated + */ + protected void refreshUnderline() + { + FontStyle style = (FontStyle)getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); + if (style != null && getFigure() instanceof WrappingLabel) + { + ((WrappingLabel)getFigure()).setTextUnderline(style.isUnderline()); + } + } + + /** + * @generated + */ + protected void refreshStrikeThrough() + { + FontStyle style = (FontStyle)getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); + if (style != null && getFigure() instanceof WrappingLabel) + { + ((WrappingLabel)getFigure()).setTextStrikeThrough(style.isStrikeThrough()); + } + } + + /** + * @generated + */ + protected void refreshFont() + { + FontStyle style = (FontStyle)getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); + if (style != null) + { + FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD + : SWT.NORMAL) + | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); + setFont(fontData); + } + } + + /** + * @generated + */ + protected void setFontColor(Color color) + { + getFigure().setForegroundColor(color); + } + + /** + * @generated + */ + protected void addSemanticListeners() + { + if (getParser() instanceof ISemanticParser) + { + EObject element = resolveSemanticElement(); + parserElements = ((ISemanticParser)getParser()).getSemanticElementsBeingParsed(element); + for (int i = 0; i < parserElements.size(); i++) + { + addListenerFilter("SemanticModel" + i, this, (EObject)parserElements.get(i)); //$NON-NLS-1$ + } + } + else + { + super.addSemanticListeners(); + } + } + + /** + * @generated + */ + protected void removeSemanticListeners() + { + if (parserElements != null) + { + for (int i = 0; i < parserElements.size(); i++) + { + removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ + } + } + else + { + super.removeSemanticListeners(); + } + } + + /** + * @generated + */ + protected AccessibleEditPart getAccessibleEditPart() + { + if (accessibleEP == null) + { + accessibleEP = new AccessibleGraphicalEditPart() + { + + public void getName(AccessibleEvent e) + { + e.result = getLabelTextHelper(getFigure()); + } + }; + } + return accessibleEP; + } + + /** + * @generated + */ + private View getFontStyleOwnerView() + { + return getPrimaryView(); + } + + /** + * @generated + */ + protected void addNotationalListeners() + { + super.addNotationalListeners(); + addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ + } + + /** + * @generated + */ + protected void removeNotationalListeners() + { + super.removeNotationalListeners(); + removeListenerFilter("PrimaryView"); //$NON-NLS-1$ + } + + /** + * @generated + */ + protected void handleNotificationEvent(Notification event) + { + Object feature = event.getFeature(); + if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) + { + Integer c = (Integer)event.getNewValue(); + setFontColor(DiagramColorRegistry.getInstance().getColor(c)); + } + else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) + { + refreshUnderline(); + } + else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) + { + refreshStrikeThrough(); + } + else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) + || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) + || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) + || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) + { + refreshFont(); + } + else + { + if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) + { + refreshLabel(); + } + if (getParser() instanceof ISemanticParser) + { + ISemanticParser modelParser = (ISemanticParser)getParser(); + if (modelParser.areSemanticElementsAffected(null, event)) + { + removeSemanticListeners(); + if (resolveSemanticElement() != null) + { + addSemanticListeners(); + } + refreshLabel(); + } + } + } + super.handleNotificationEvent(event); + } + + /** + * @generated + */ + protected IFigure createFigure() + { + // Parent should assign one using setLabel() method + return null; + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AClassSubClassesEditPart.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AClassSubClassesEditPart.java new file mode 100644 index 0000000000..34c9a55e73 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AClassSubClassesEditPart.java @@ -0,0 +1,118 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts; + +import org.eclipse.draw2d.Connection; +import org.eclipse.draw2d.PolygonDecoration; +import org.eclipse.draw2d.RotatableDecoration; +import org.eclipse.draw2d.geometry.PointList; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AClassSubClassesItemSemanticEditPolicy; +import org.eclipse.gmf.runtime.diagram.ui.editparts.ConnectionNodeEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editparts.ITreeBranchEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; +import org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx; +import org.eclipse.gmf.runtime.notation.View; +import org.eclipse.swt.graphics.Color; + +/** + * @generated + */ +public class AClassSubClassesEditPart extends ConnectionNodeEditPart implements ITreeBranchEditPart +{ + + /** + * @generated + */ + public static final int VISUAL_ID = 4001; + + /** + * @generated + */ + public AClassSubClassesEditPart(View view) + { + super(view); + } + + /** + * @generated + */ + protected void createDefaultEditPolicies() + { + super.createDefaultEditPolicies(); + installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new AClassSubClassesItemSemanticEditPolicy()); + } + + /** + * Creates figure for this edit part. + * + * Body of this method does not depend on settings in generation model + * so you may safely remove <i>generated</i> tag and modify it. + * + * @generated + */ + + protected Connection createConnectionFigure() + { + return new AClassSubClassesFigure(); + } + + /** + * @generated + */ + public AClassSubClassesFigure getPrimaryShape() + { + return (AClassSubClassesFigure)getFigure(); + } + + /** + * @generated + */ + public class AClassSubClassesFigure extends PolylineConnectionEx + { + + /** + * @generated + */ + public AClassSubClassesFigure() + { + this.setLineWidth(1); + + setTargetDecoration(createTargetDecoration()); + } + + /** + * @generated + */ + private RotatableDecoration createTargetDecoration() + { + PolygonDecoration df = new PolygonDecoration(); + df.setFill(true); + df.setLineWidth(1); + df.setBackgroundColor(DF_BACK); + PointList pl = new PointList(); + pl.addPoint(getMapMode().DPtoLP(-2), getMapMode().DPtoLP(2)); + pl.addPoint(getMapMode().DPtoLP(0), getMapMode().DPtoLP(0)); + pl.addPoint(getMapMode().DPtoLP(-2), getMapMode().DPtoLP(-2)); + pl.addPoint(getMapMode().DPtoLP(-2), getMapMode().DPtoLP(2)); + df.setTemplate(pl); + df.setScale(getMapMode().DPtoLP(7), getMapMode().DPtoLP(3)); + return df; + } + + } + + /** + * @generated + */ + static final Color DF_BACK = new Color(null, 255, 255, 255); + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/ACoreRootEditPart.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/ACoreRootEditPart.java new file mode 100644 index 0000000000..0d4438da6a --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/ACoreRootEditPart.java @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts; + +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.ACoreRootCanonicalEditPolicy; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.ACoreRootItemSemanticEditPolicy; +import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; +import org.eclipse.gmf.runtime.notation.View; + +/** + * @generated + */ +public class ACoreRootEditPart extends DiagramEditPart +{ + + /** + * @generated + */ + public final static String MODEL_ID = "Acore"; //$NON-NLS-1$ + + /** + * @generated + */ + public static final int VISUAL_ID = 1000; + + /** + * @generated + */ + public ACoreRootEditPart(View view) + { + super(view); + } + + /** + * @generated + */ + protected void createDefaultEditPolicies() + { + super.createDefaultEditPolicies(); + installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new ACoreRootItemSemanticEditPolicy()); + installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new ACoreRootCanonicalEditPolicy()); + // removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.POPUPBAR_ROLE); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AInterfaceAAttributeInterfaceCompartmentEditPart.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AInterfaceAAttributeInterfaceCompartmentEditPart.java new file mode 100644 index 0000000000..aa8a2a2326 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AInterfaceAAttributeInterfaceCompartmentEditPart.java @@ -0,0 +1,93 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts; + +import org.eclipse.draw2d.IFigure; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AInterfaceAAttributeInterfaceCompartmentCanonicalEditPolicy; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AInterfaceAAttributeInterfaceCompartmentItemSemanticEditPolicy; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.Messages; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.gmf.runtime.diagram.ui.editparts.ListCompartmentEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; +import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure; +import org.eclipse.gmf.runtime.notation.View; + +/** + * @generated + */ +public class AInterfaceAAttributeInterfaceCompartmentEditPart extends ListCompartmentEditPart +{ + + /** + * @generated + */ + public static final int VISUAL_ID = 7001; + + /** + * @generated + */ + public AInterfaceAAttributeInterfaceCompartmentEditPart(View view) + { + super(view); + } + + /** + * @generated + */ + protected boolean hasModelChildrenChanged(Notification evt) + { + return false; + } + + /** + * @generated + */ + public String getCompartmentName() + { + return Messages.AInterfaceAAttributeInterfaceCompartmentEditPart_title; + } + + /** + * @generated + */ + public IFigure createFigure() + { + ResizableCompartmentFigure result = (ResizableCompartmentFigure)super.createFigure(); + result.setTitleVisibility(false); + return result; + } + + /** + * @generated + */ + protected void createDefaultEditPolicies() + { + super.createDefaultEditPolicies(); + installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, + new AInterfaceAAttributeInterfaceCompartmentItemSemanticEditPolicy()); + installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy()); + installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new DragDropEditPolicy()); + installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new AInterfaceAAttributeInterfaceCompartmentCanonicalEditPolicy()); + } + + /** + * @generated + */ + protected void setRatio(Double ratio) + { + // nothing to do -- parent layout does not accept Double constraints as ratio + // super.setRatio(ratio); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AInterfaceAOperationInterfaceCompartmentEditPart.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AInterfaceAOperationInterfaceCompartmentEditPart.java new file mode 100644 index 0000000000..f21ee2ede3 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AInterfaceAOperationInterfaceCompartmentEditPart.java @@ -0,0 +1,93 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts; + +import org.eclipse.draw2d.IFigure; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AInterfaceAOperationInterfaceCompartmentCanonicalEditPolicy; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AInterfaceAOperationInterfaceCompartmentItemSemanticEditPolicy; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.Messages; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.gmf.runtime.diagram.ui.editparts.ListCompartmentEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.DragDropEditPolicy; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; +import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure; +import org.eclipse.gmf.runtime.notation.View; + +/** + * @generated + */ +public class AInterfaceAOperationInterfaceCompartmentEditPart extends ListCompartmentEditPart +{ + + /** + * @generated + */ + public static final int VISUAL_ID = 7002; + + /** + * @generated + */ + public AInterfaceAOperationInterfaceCompartmentEditPart(View view) + { + super(view); + } + + /** + * @generated + */ + protected boolean hasModelChildrenChanged(Notification evt) + { + return false; + } + + /** + * @generated + */ + public String getCompartmentName() + { + return Messages.AInterfaceAOperationInterfaceCompartmentEditPart_title; + } + + /** + * @generated + */ + public IFigure createFigure() + { + ResizableCompartmentFigure result = (ResizableCompartmentFigure)super.createFigure(); + result.setTitleVisibility(false); + return result; + } + + /** + * @generated + */ + protected void createDefaultEditPolicies() + { + super.createDefaultEditPolicies(); + installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, + new AInterfaceAOperationInterfaceCompartmentItemSemanticEditPolicy()); + installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy()); + installEditPolicy(EditPolicyRoles.DRAG_DROP_ROLE, new DragDropEditPolicy()); + installEditPolicy(EditPolicyRoles.CANONICAL_ROLE, new AInterfaceAOperationInterfaceCompartmentCanonicalEditPolicy()); + } + + /** + * @generated + */ + protected void setRatio(Double ratio) + { + // nothing to do -- parent layout does not accept Double constraints as ratio + // super.setRatio(ratio); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AInterfaceEditPart.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AInterfaceEditPart.java new file mode 100644 index 0000000000..9575419a06 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AInterfaceEditPart.java @@ -0,0 +1,504 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts; + +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; + +import org.eclipse.draw2d.IFigure; +import org.eclipse.draw2d.RectangleFigure; +import org.eclipse.draw2d.RoundedRectangle; +import org.eclipse.draw2d.Shape; +import org.eclipse.draw2d.StackLayout; +import org.eclipse.draw2d.ToolbarLayout; +import org.eclipse.draw2d.geometry.Dimension; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AInterfaceItemSemanticEditPolicy; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AcoreTextSelectionEditPolicy; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreVisualIDRegistry; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.AcoreElementTypes; +import org.eclipse.gef.EditPart; +import org.eclipse.gef.EditPolicy; +import org.eclipse.gef.Request; +import org.eclipse.gef.editpolicies.LayoutEditPolicy; +import org.eclipse.gmf.runtime.diagram.core.edithelpers.CreateElementRequestAdapter; +import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeNodeEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ConstrainedToolbarLayoutEditPolicy; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CreationEditPolicy; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; +import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewAndElementRequest; +import org.eclipse.gmf.runtime.draw2d.ui.figures.ConstrainedToolbarLayout; +import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel; +import org.eclipse.gmf.runtime.emf.type.core.IElementType; +import org.eclipse.gmf.runtime.gef.ui.figures.DefaultSizeNodeFigure; +import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure; +import org.eclipse.gmf.runtime.notation.View; +import org.eclipse.swt.graphics.Color; + +/** + * @generated + */ +public class AInterfaceEditPart extends ShapeNodeEditPart +{ + + /** + * @generated + */ + public static final int VISUAL_ID = 2001; + + /** + * @generated + */ + protected IFigure contentPane; + + /** + * @generated + */ + protected IFigure primaryShape; + + /** + * @generated + */ + public AInterfaceEditPart(View view) + { + super(view); + } + + /** + * @generated + */ + protected void createDefaultEditPolicies() + { + installEditPolicy(EditPolicyRoles.CREATION_ROLE, new CreationEditPolicy()); + super.createDefaultEditPolicies(); + installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new AInterfaceItemSemanticEditPolicy()); + installEditPolicy(EditPolicy.LAYOUT_ROLE, createLayoutEditPolicy()); + // XXX need an SCR to runtime to have another abstract superclass that would let children add reasonable editpolicies + // removeEditPolicy(org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles.CONNECTION_HANDLES_ROLE); + } + + /** + * @generated + */ + protected LayoutEditPolicy createLayoutEditPolicy() + { + + ConstrainedToolbarLayoutEditPolicy lep = new ConstrainedToolbarLayoutEditPolicy() + { + + protected EditPolicy createChildEditPolicy(EditPart child) + { + if (child.getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE) == null) + { + if (child instanceof ITextAwareEditPart) + { + return new AcoreTextSelectionEditPolicy(); + } + } + return super.createChildEditPolicy(child); + } + }; + return lep; + } + + /** + * @generated + */ + protected IFigure createNodeShape() + { + AInterfaceFigure figure = new AInterfaceFigure(); + return primaryShape = figure; + } + + /** + * @generated + */ + public AInterfaceFigure getPrimaryShape() + { + return (AInterfaceFigure)primaryShape; + } + + /** + * @generated + */ + protected boolean addFixedChild(EditPart childEditPart) + { + if (childEditPart instanceof AInterfaceNameEditPart) + { + ((AInterfaceNameEditPart)childEditPart).setLabel(getPrimaryShape().getFigureAInterfaceNameFigure()); + return true; + } + if (childEditPart instanceof AInterfaceAAttributeInterfaceCompartmentEditPart) + { + IFigure pane = getPrimaryShape().getFigureInterfaceAttributes(); + setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way + pane.add(((AInterfaceAAttributeInterfaceCompartmentEditPart)childEditPart).getFigure()); + return true; + } + if (childEditPart instanceof AInterfaceAOperationInterfaceCompartmentEditPart) + { + IFigure pane = getPrimaryShape().getFigureInterfaceOperations(); + setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way + pane.add(((AInterfaceAOperationInterfaceCompartmentEditPart)childEditPart).getFigure()); + return true; + } + return false; + } + + /** + * @generated + */ + protected boolean removeFixedChild(EditPart childEditPart) + { + if (childEditPart instanceof AInterfaceNameEditPart) + { + return true; + } + if (childEditPart instanceof AInterfaceAAttributeInterfaceCompartmentEditPart) + { + IFigure pane = getPrimaryShape().getFigureInterfaceAttributes(); + setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way + pane.remove(((AInterfaceAAttributeInterfaceCompartmentEditPart)childEditPart).getFigure()); + return true; + } + if (childEditPart instanceof AInterfaceAOperationInterfaceCompartmentEditPart) + { + IFigure pane = getPrimaryShape().getFigureInterfaceOperations(); + setupContentPane(pane); // FIXME each comparment should handle his content pane in his own way + pane.remove(((AInterfaceAOperationInterfaceCompartmentEditPart)childEditPart).getFigure()); + return true; + } + return false; + } + + /** + * @generated + */ + protected void addChildVisual(EditPart childEditPart, int index) + { + if (addFixedChild(childEditPart)) + { + return; + } + super.addChildVisual(childEditPart, -1); + } + + /** + * @generated + */ + protected void removeChildVisual(EditPart childEditPart) + { + if (removeFixedChild(childEditPart)) + { + return; + } + super.removeChildVisual(childEditPart); + } + + /** + * @generated + */ + protected IFigure getContentPaneFor(IGraphicalEditPart editPart) + { + if (editPart instanceof AInterfaceAAttributeInterfaceCompartmentEditPart) + { + return getPrimaryShape().getFigureInterfaceAttributes(); + } + if (editPart instanceof AInterfaceAOperationInterfaceCompartmentEditPart) + { + return getPrimaryShape().getFigureInterfaceOperations(); + } + return getContentPane(); + } + + /** + * @generated + */ + protected NodeFigure createNodePlate() + { + DefaultSizeNodeFigure result = new DefaultSizeNodeFigure(40, 40); + return result; + } + + /** + * Creates figure for this edit part. + * + * Body of this method does not depend on settings in generation model + * so you may safely remove <i>generated</i> tag and modify it. + * + * @generated + */ + protected NodeFigure createNodeFigure() + { + NodeFigure figure = createNodePlate(); + figure.setLayoutManager(new StackLayout()); + IFigure shape = createNodeShape(); + figure.add(shape); + contentPane = setupContentPane(shape); + return figure; + } + + /** + * Default implementation treats passed figure as content pane. + * Respects layout one may have set for generated figure. + * @param nodeShape instance of generated figure class + * @generated + */ + protected IFigure setupContentPane(IFigure nodeShape) + { + if (nodeShape.getLayoutManager() == null) + { + ConstrainedToolbarLayout layout = new ConstrainedToolbarLayout(); + layout.setSpacing(5); + nodeShape.setLayoutManager(layout); + } + return nodeShape; // use nodeShape itself as contentPane + } + + /** + * @generated + */ + public IFigure getContentPane() + { + if (contentPane != null) + { + return contentPane; + } + return super.getContentPane(); + } + + /** + * @generated + */ + protected void setForegroundColor(Color color) + { + if (primaryShape != null) + { + primaryShape.setForegroundColor(color); + } + } + + /** + * @generated + */ + protected void setBackgroundColor(Color color) + { + if (primaryShape != null) + { + primaryShape.setBackgroundColor(color); + } + } + + /** + * @generated + */ + protected void setLineWidth(int width) + { + if (primaryShape instanceof Shape) + { + ((Shape)primaryShape).setLineWidth(width); + } + } + + /** + * @generated + */ + protected void setLineType(int style) + { + if (primaryShape instanceof Shape) + { + ((Shape)primaryShape).setLineStyle(style); + } + } + + /** + * @generated + */ + public EditPart getPrimaryChildEditPart() + { + return getChildBySemanticHint(AcoreVisualIDRegistry.getType(AInterfaceNameEditPart.VISUAL_ID)); + } + + /** + * @generated + */ + public List<IElementType> getMARelTypesOnTarget() + { + ArrayList<IElementType> types = new ArrayList<IElementType>(1); + types.add(AcoreElementTypes.AClassImplementedInterfaces_4002); + return types; + } + + /** + * @generated + */ + public List<IElementType> getMATypesForSource(IElementType relationshipType) + { + LinkedList<IElementType> types = new LinkedList<IElementType>(); + if (relationshipType == AcoreElementTypes.AClassImplementedInterfaces_4002) + { + types.add(AcoreElementTypes.AClass_2002); + } + return types; + } + + /** + * @generated + */ + public EditPart getTargetEditPart(Request request) + { + if (request instanceof CreateViewAndElementRequest) + { + CreateElementRequestAdapter adapter = ((CreateViewAndElementRequest)request).getViewAndElementDescriptor() + .getCreateElementRequestAdapter(); + IElementType type = (IElementType)adapter.getAdapter(IElementType.class); + if (type == AcoreElementTypes.AAttribute_3001) + { + return getChildBySemanticHint(AcoreVisualIDRegistry + .getType(AInterfaceAAttributeInterfaceCompartmentEditPart.VISUAL_ID)); + } + if (type == AcoreElementTypes.AOperation_3002) + { + return getChildBySemanticHint(AcoreVisualIDRegistry + .getType(AInterfaceAOperationInterfaceCompartmentEditPart.VISUAL_ID)); + } + } + return super.getTargetEditPart(request); + } + + /** + * @generated + */ + public class AInterfaceFigure extends RoundedRectangle + { + + /** + * @generated + */ + private WrappingLabel fFigureAInterfaceNameFigure; + + /** + * @generated + */ + private RectangleFigure fFigureInterfaceAttributes; + + /** + * @generated + */ + private RectangleFigure fFigureInterfaceOperations; + + /** + * @generated + */ + public AInterfaceFigure() + { + + ToolbarLayout layoutThis = new ToolbarLayout(); + layoutThis.setStretchMinorAxis(true); + layoutThis.setMinorAlignment(ToolbarLayout.ALIGN_CENTER); + + layoutThis.setSpacing(0); + layoutThis.setVertical(true); + + this.setLayoutManager(layoutThis); + + this.setCornerDimensions(new Dimension(getMapMode().DPtoLP(12), getMapMode().DPtoLP(12))); + this.setLineWidth(1); + this.setBackgroundColor(THIS_BACK); + createContents(); + } + + /** + * @generated + */ + private void createContents() + { + + WrappingLabel aInterfaceTypeLabelFigure0 = new WrappingLabel(); + aInterfaceTypeLabelFigure0.setText("«Interface»"); + + this.add(aInterfaceTypeLabelFigure0); + + fFigureAInterfaceNameFigure = new WrappingLabel(); + fFigureAInterfaceNameFigure.setText("<...>"); + + this.add(fFigureAInterfaceNameFigure); + + fFigureInterfaceAttributes = new RectangleFigure(); + fFigureInterfaceAttributes.setLineWidth(1); + + this.add(fFigureInterfaceAttributes); + fFigureInterfaceAttributes.setLayoutManager(new StackLayout()); + + fFigureInterfaceOperations = new RectangleFigure(); + fFigureInterfaceOperations.setLineWidth(1); + + this.add(fFigureInterfaceOperations); + fFigureInterfaceOperations.setLayoutManager(new StackLayout()); + + } + + /** + * @generated + */ + private boolean myUseLocalCoordinates = false; + + /** + * @generated + */ + protected boolean useLocalCoordinates() + { + return myUseLocalCoordinates; + } + + /** + * @generated + */ + protected void setUseLocalCoordinates(boolean useLocalCoordinates) + { + myUseLocalCoordinates = useLocalCoordinates; + } + + /** + * @generated + */ + public WrappingLabel getFigureAInterfaceNameFigure() + { + return fFigureAInterfaceNameFigure; + } + + /** + * @generated + */ + public RectangleFigure getFigureInterfaceAttributes() + { + return fFigureInterfaceAttributes; + } + + /** + * @generated + */ + public RectangleFigure getFigureInterfaceOperations() + { + return fFigureInterfaceOperations; + } + + } + + /** + * @generated + */ + static final Color THIS_BACK = new Color(null, 250, 250, 190); + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AInterfaceNameEditPart.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AInterfaceNameEditPart.java new file mode 100644 index 0000000000..d0b51f33b9 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AInterfaceNameEditPart.java @@ -0,0 +1,685 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import org.eclipse.draw2d.IFigure; +import org.eclipse.draw2d.Label; +import org.eclipse.draw2d.geometry.Point; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AcoreTextSelectionEditPolicy; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreVisualIDRegistry; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.AcoreElementTypes; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.AcoreParserProvider; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.transaction.RunnableWithResult; +import org.eclipse.gef.AccessibleEditPart; +import org.eclipse.gef.EditPolicy; +import org.eclipse.gef.GraphicalEditPart; +import org.eclipse.gef.Request; +import org.eclipse.gef.commands.Command; +import org.eclipse.gef.editpolicies.NonResizableEditPolicy; +import org.eclipse.gef.handles.MoveHandle; +import org.eclipse.gef.handles.NonResizableHandleKit; +import org.eclipse.gef.requests.DirectEditRequest; +import org.eclipse.gef.tools.DirectEditManager; +import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; +import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; +import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; +import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; +import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; +import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; +import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; +import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; +import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel; +import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; +import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; +import org.eclipse.gmf.runtime.notation.FontStyle; +import org.eclipse.gmf.runtime.notation.NotationPackage; +import org.eclipse.gmf.runtime.notation.View; +import org.eclipse.jface.text.contentassist.IContentAssistProcessor; +import org.eclipse.jface.viewers.ICellEditorValidator; +import org.eclipse.swt.SWT; +import org.eclipse.swt.accessibility.AccessibleEvent; +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.FontData; +import org.eclipse.swt.graphics.Image; + +/** + * @generated + */ +public class AInterfaceNameEditPart extends CompartmentEditPart implements ITextAwareEditPart +{ + + /** + * @generated + */ + public static final int VISUAL_ID = 5001; + + /** + * @generated + */ + private DirectEditManager manager; + + /** + * @generated + */ + private IParser parser; + + /** + * @generated + */ + private List parserElements; + + /** + * @generated + */ + private String defaultText; + + /** + * @generated + */ + public AInterfaceNameEditPart(View view) + { + super(view); + } + + /** + * @generated + */ + protected void createDefaultEditPolicies() + { + super.createDefaultEditPolicies(); + installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, new AcoreTextSelectionEditPolicy()); + installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); + installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new NonResizableEditPolicy() + { + + protected List createSelectionHandles() + { + List handles = new ArrayList(); + NonResizableHandleKit.addMoveHandle((GraphicalEditPart)getHost(), handles); + ((MoveHandle)handles.get(0)).setBorder(null); + return handles; + } + + public Command getCommand(Request request) + { + return null; + } + + public boolean understandsRequest(Request request) + { + return false; + } + }); + } + + /** + * @generated + */ + protected String getLabelTextHelper(IFigure figure) + { + if (figure instanceof WrappingLabel) + { + return ((WrappingLabel)figure).getText(); + } + else + { + return ((Label)figure).getText(); + } + } + + /** + * @generated + */ + protected void setLabelTextHelper(IFigure figure, String text) + { + if (figure instanceof WrappingLabel) + { + ((WrappingLabel)figure).setText(text); + } + else + { + ((Label)figure).setText(text); + } + } + + /** + * @generated + */ + protected Image getLabelIconHelper(IFigure figure) + { + if (figure instanceof WrappingLabel) + { + return ((WrappingLabel)figure).getIcon(); + } + else + { + return ((Label)figure).getIcon(); + } + } + + /** + * @generated + */ + protected void setLabelIconHelper(IFigure figure, Image icon) + { + if (figure instanceof WrappingLabel) + { + ((WrappingLabel)figure).setIcon(icon); + } + else + { + ((Label)figure).setIcon(icon); + } + } + + /** + * @generated + */ + public void setLabel(WrappingLabel figure) + { + unregisterVisuals(); + setFigure(figure); + defaultText = getLabelTextHelper(figure); + registerVisuals(); + refreshVisuals(); + } + + /** + * @generated + */ + protected List getModelChildren() + { + return Collections.EMPTY_LIST; + } + + /** + * @generated + */ + public IGraphicalEditPart getChildBySemanticHint(String semanticHint) + { + return null; + } + + /** + * @generated + */ + protected EObject getParserElement() + { + return resolveSemanticElement(); + } + + /** + * @generated + */ + protected Image getLabelIcon() + { + EObject parserElement = getParserElement(); + if (parserElement == null) + { + return null; + } + return AcoreElementTypes.getImage(parserElement.eClass()); + } + + /** + * @generated + */ + protected String getLabelText() + { + String text = null; + EObject parserElement = getParserElement(); + if (parserElement != null && getParser() != null) + { + text = getParser().getPrintString(new EObjectAdapter(parserElement), getParserOptions().intValue()); + } + if (text == null || text.length() == 0) + { + text = defaultText; + } + return text; + } + + /** + * @generated + */ + public void setLabelText(String text) + { + setLabelTextHelper(getFigure(), text); + Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); + if (pdEditPolicy instanceof AcoreTextSelectionEditPolicy) + { + ((AcoreTextSelectionEditPolicy)pdEditPolicy).refreshFeedback(); + } + Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE); + if (sfEditPolicy instanceof AcoreTextSelectionEditPolicy) + { + ((AcoreTextSelectionEditPolicy)sfEditPolicy).refreshFeedback(); + } + } + + /** + * @generated + */ + public String getEditText() + { + if (getParserElement() == null || getParser() == null) + { + return ""; //$NON-NLS-1$ + } + return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); + } + + /** + * @generated + */ + protected boolean isEditable() + { + return getParser() != null; + } + + /** + * @generated + */ + public ICellEditorValidator getEditTextValidator() + { + return new ICellEditorValidator() + { + + public String isValid(final Object value) + { + if (value instanceof String) + { + final EObject element = getParserElement(); + final IParser parser = getParser(); + try + { + IParserEditStatus valid = (IParserEditStatus)getEditingDomain().runExclusive(new RunnableWithResult.Impl() + { + + public void run() + { + setResult(parser.isValidEditString(new EObjectAdapter(element), (String)value)); + } + }); + return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); + } + catch (InterruptedException ie) + { + ie.printStackTrace(); + } + } + + // shouldn't get here + return null; + } + }; + } + + /** + * @generated + */ + public IContentAssistProcessor getCompletionProcessor() + { + if (getParserElement() == null || getParser() == null) + { + return null; + } + return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); + } + + /** + * @generated + */ + public ParserOptions getParserOptions() + { + return ParserOptions.NONE; + } + + /** + * @generated + */ + public IParser getParser() + { + if (parser == null) + { + parser = AcoreParserProvider.getParser(AcoreElementTypes.AInterface_2001, getParserElement(), + AcoreVisualIDRegistry + .getType(org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AInterfaceNameEditPart.VISUAL_ID)); + } + return parser; + } + + /** + * @generated + */ + protected DirectEditManager getManager() + { + if (manager == null) + { + setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), + AcoreEditPartFactory.getTextCellEditorLocator(this))); + } + return manager; + } + + /** + * @generated + */ + protected void setManager(DirectEditManager manager) + { + this.manager = manager; + } + + /** + * @generated + */ + protected void performDirectEdit() + { + getManager().show(); + } + + /** + * @generated + */ + protected void performDirectEdit(Point eventLocation) + { + if (getManager().getClass() == TextDirectEditManager.class) + { + ((TextDirectEditManager)getManager()).show(eventLocation.getSWTPoint()); + } + } + + /** + * @generated + */ + private void performDirectEdit(char initialCharacter) + { + if (getManager() instanceof TextDirectEditManager) + { + ((TextDirectEditManager)getManager()).show(initialCharacter); + } + else + { + performDirectEdit(); + } + } + + /** + * @generated + */ + protected void performDirectEditRequest(Request request) + { + final Request theRequest = request; + try + { + getEditingDomain().runExclusive(new Runnable() + { + + public void run() + { + if (isActive() && isEditable()) + { + if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) + { + Character initialChar = (Character)theRequest.getExtendedData().get( + RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); + performDirectEdit(initialChar.charValue()); + } + else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) + { + DirectEditRequest editRequest = (DirectEditRequest)theRequest; + performDirectEdit(editRequest.getLocation()); + } + else + { + performDirectEdit(); + } + } + } + }); + } + catch (InterruptedException e) + { + e.printStackTrace(); + } + } + + /** + * @generated + */ + protected void refreshVisuals() + { + super.refreshVisuals(); + refreshLabel(); + refreshFont(); + refreshFontColor(); + refreshUnderline(); + refreshStrikeThrough(); + } + + /** + * @generated + */ + protected void refreshLabel() + { + setLabelTextHelper(getFigure(), getLabelText()); + setLabelIconHelper(getFigure(), getLabelIcon()); + Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); + if (pdEditPolicy instanceof AcoreTextSelectionEditPolicy) + { + ((AcoreTextSelectionEditPolicy)pdEditPolicy).refreshFeedback(); + } + Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE); + if (sfEditPolicy instanceof AcoreTextSelectionEditPolicy) + { + ((AcoreTextSelectionEditPolicy)sfEditPolicy).refreshFeedback(); + } + } + + /** + * @generated + */ + protected void refreshUnderline() + { + FontStyle style = (FontStyle)getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); + if (style != null && getFigure() instanceof WrappingLabel) + { + ((WrappingLabel)getFigure()).setTextUnderline(style.isUnderline()); + } + } + + /** + * @generated + */ + protected void refreshStrikeThrough() + { + FontStyle style = (FontStyle)getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); + if (style != null && getFigure() instanceof WrappingLabel) + { + ((WrappingLabel)getFigure()).setTextStrikeThrough(style.isStrikeThrough()); + } + } + + /** + * @generated + */ + protected void refreshFont() + { + FontStyle style = (FontStyle)getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); + if (style != null) + { + FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD + : SWT.NORMAL) + | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); + setFont(fontData); + } + } + + /** + * @generated + */ + protected void setFontColor(Color color) + { + getFigure().setForegroundColor(color); + } + + /** + * @generated + */ + protected void addSemanticListeners() + { + if (getParser() instanceof ISemanticParser) + { + EObject element = resolveSemanticElement(); + parserElements = ((ISemanticParser)getParser()).getSemanticElementsBeingParsed(element); + for (int i = 0; i < parserElements.size(); i++) + { + addListenerFilter("SemanticModel" + i, this, (EObject)parserElements.get(i)); //$NON-NLS-1$ + } + } + else + { + super.addSemanticListeners(); + } + } + + /** + * @generated + */ + protected void removeSemanticListeners() + { + if (parserElements != null) + { + for (int i = 0; i < parserElements.size(); i++) + { + removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ + } + } + else + { + super.removeSemanticListeners(); + } + } + + /** + * @generated + */ + protected AccessibleEditPart getAccessibleEditPart() + { + if (accessibleEP == null) + { + accessibleEP = new AccessibleGraphicalEditPart() + { + + public void getName(AccessibleEvent e) + { + e.result = getLabelTextHelper(getFigure()); + } + }; + } + return accessibleEP; + } + + /** + * @generated + */ + private View getFontStyleOwnerView() + { + return getPrimaryView(); + } + + /** + * @generated + */ + protected void addNotationalListeners() + { + super.addNotationalListeners(); + addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ + } + + /** + * @generated + */ + protected void removeNotationalListeners() + { + super.removeNotationalListeners(); + removeListenerFilter("PrimaryView"); //$NON-NLS-1$ + } + + /** + * @generated + */ + protected void handleNotificationEvent(Notification event) + { + Object feature = event.getFeature(); + if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) + { + Integer c = (Integer)event.getNewValue(); + setFontColor(DiagramColorRegistry.getInstance().getColor(c)); + } + else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) + { + refreshUnderline(); + } + else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) + { + refreshStrikeThrough(); + } + else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) + || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) + || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) + || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) + { + refreshFont(); + } + else + { + if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) + { + refreshLabel(); + } + if (getParser() instanceof ISemanticParser) + { + ISemanticParser modelParser = (ISemanticParser)getParser(); + if (modelParser.areSemanticElementsAffected(null, event)) + { + removeSemanticListeners(); + if (resolveSemanticElement() != null) + { + addSemanticListeners(); + } + refreshLabel(); + } + } + } + super.handleNotificationEvent(event); + } + + /** + * @generated + */ + protected IFigure createFigure() + { + // Parent should assign one using setLabel() method + return null; + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AOperation2EditPart.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AOperation2EditPart.java new file mode 100644 index 0000000000..07e8c0b2d5 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AOperation2EditPart.java @@ -0,0 +1,683 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts; + +import java.util.Collections; +import java.util.List; + +import org.eclipse.draw2d.IFigure; +import org.eclipse.draw2d.Label; +import org.eclipse.draw2d.geometry.Point; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AOperation2ItemSemanticEditPolicy; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AcoreTextNonResizableEditPolicy; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AcoreTextSelectionEditPolicy; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreVisualIDRegistry; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.AcoreElementTypes; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.AcoreParserProvider; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.transaction.RunnableWithResult; +import org.eclipse.gef.AccessibleEditPart; +import org.eclipse.gef.DragTracker; +import org.eclipse.gef.EditPolicy; +import org.eclipse.gef.Request; +import org.eclipse.gef.requests.DirectEditRequest; +import org.eclipse.gef.requests.SelectionRequest; +import org.eclipse.gef.tools.DirectEditManager; +import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; +import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; +import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; +import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; +import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ListItemComponentEditPolicy; +import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; +import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; +import org.eclipse.gmf.runtime.diagram.ui.tools.DragEditPartsTrackerEx; +import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; +import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel; +import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; +import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; +import org.eclipse.gmf.runtime.notation.FontStyle; +import org.eclipse.gmf.runtime.notation.NotationPackage; +import org.eclipse.gmf.runtime.notation.View; +import org.eclipse.jface.text.contentassist.IContentAssistProcessor; +import org.eclipse.jface.viewers.ICellEditorValidator; +import org.eclipse.swt.SWT; +import org.eclipse.swt.accessibility.AccessibleEvent; +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.FontData; +import org.eclipse.swt.graphics.Image; + +/** + * @generated + */ +public class AOperation2EditPart extends CompartmentEditPart implements ITextAwareEditPart +{ + + /** + * @generated + */ + public static final int VISUAL_ID = 3004; + + /** + * @generated + */ + private DirectEditManager manager; + + /** + * @generated + */ + private IParser parser; + + /** + * @generated + */ + private List parserElements; + + /** + * @generated + */ + private String defaultText; + + /** + * @generated + */ + public AOperation2EditPart(View view) + { + super(view); + } + + /** + * @generated + */ + public DragTracker getDragTracker(Request request) + { + if (request instanceof SelectionRequest && ((SelectionRequest)request).getLastButtonPressed() == 3) + { + return null; + } + return new DragEditPartsTrackerEx(this); + } + + /** + * @generated + */ + protected void createDefaultEditPolicies() + { + super.createDefaultEditPolicies(); + installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new AOperation2ItemSemanticEditPolicy()); + installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new AcoreTextNonResizableEditPolicy()); + installEditPolicy(EditPolicy.COMPONENT_ROLE, new ListItemComponentEditPolicy()); + installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); + } + + /** + * @generated + */ + protected String getLabelTextHelper(IFigure figure) + { + if (figure instanceof WrappingLabel) + { + return ((WrappingLabel)figure).getText(); + } + else + { + return ((Label)figure).getText(); + } + } + + /** + * @generated + */ + protected void setLabelTextHelper(IFigure figure, String text) + { + if (figure instanceof WrappingLabel) + { + ((WrappingLabel)figure).setText(text); + } + else + { + ((Label)figure).setText(text); + } + } + + /** + * @generated + */ + protected Image getLabelIconHelper(IFigure figure) + { + if (figure instanceof WrappingLabel) + { + return ((WrappingLabel)figure).getIcon(); + } + else + { + return ((Label)figure).getIcon(); + } + } + + /** + * @generated + */ + protected void setLabelIconHelper(IFigure figure, Image icon) + { + if (figure instanceof WrappingLabel) + { + ((WrappingLabel)figure).setIcon(icon); + } + else + { + ((Label)figure).setIcon(icon); + } + } + + /** + * @generated + */ + public void setLabel(IFigure figure) + { + unregisterVisuals(); + setFigure(figure); + defaultText = getLabelTextHelper(figure); + registerVisuals(); + refreshVisuals(); + } + + /** + * @generated + */ + protected List getModelChildren() + { + return Collections.EMPTY_LIST; + } + + /** + * @generated + */ + public IGraphicalEditPart getChildBySemanticHint(String semanticHint) + { + return null; + } + + /** + * @generated + */ + protected EObject getParserElement() + { + return resolveSemanticElement(); + } + + /** + * @generated + */ + protected Image getLabelIcon() + { + return null; + } + + /** + * @generated + */ + protected String getLabelText() + { + String text = null; + EObject parserElement = getParserElement(); + if (parserElement != null && getParser() != null) + { + text = getParser().getPrintString(new EObjectAdapter(parserElement), getParserOptions().intValue()); + } + if (text == null || text.length() == 0) + { + text = defaultText; + } + return text; + } + + /** + * @generated + */ + public void setLabelText(String text) + { + setLabelTextHelper(getFigure(), text); + Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); + if (pdEditPolicy instanceof AcoreTextSelectionEditPolicy) + { + ((AcoreTextSelectionEditPolicy)pdEditPolicy).refreshFeedback(); + } + Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE); + if (sfEditPolicy instanceof AcoreTextSelectionEditPolicy) + { + ((AcoreTextSelectionEditPolicy)sfEditPolicy).refreshFeedback(); + } + } + + /** + * @generated + */ + public String getEditText() + { + if (getParserElement() == null || getParser() == null) + { + return ""; //$NON-NLS-1$ + } + return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); + } + + /** + * @generated + */ + protected boolean isEditable() + { + return getParser() != null; + } + + /** + * @generated + */ + public ICellEditorValidator getEditTextValidator() + { + return new ICellEditorValidator() + { + + public String isValid(final Object value) + { + if (value instanceof String) + { + final EObject element = getParserElement(); + final IParser parser = getParser(); + try + { + IParserEditStatus valid = (IParserEditStatus)getEditingDomain().runExclusive(new RunnableWithResult.Impl() + { + + public void run() + { + setResult(parser.isValidEditString(new EObjectAdapter(element), (String)value)); + } + }); + return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); + } + catch (InterruptedException ie) + { + ie.printStackTrace(); + } + } + + // shouldn't get here + return null; + } + }; + } + + /** + * @generated + */ + public IContentAssistProcessor getCompletionProcessor() + { + if (getParserElement() == null || getParser() == null) + { + return null; + } + return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); + } + + /** + * @generated + */ + public ParserOptions getParserOptions() + { + return ParserOptions.NONE; + } + + /** + * @generated + */ + public IParser getParser() + { + if (parser == null) + { + parser = AcoreParserProvider.getParser(AcoreElementTypes.AOperation_3004, getParserElement(), + AcoreVisualIDRegistry + .getType(org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AOperation2EditPart.VISUAL_ID)); + } + return parser; + } + + /** + * @generated + */ + protected DirectEditManager getManager() + { + if (manager == null) + { + setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), + AcoreEditPartFactory.getTextCellEditorLocator(this))); + } + return manager; + } + + /** + * @generated + */ + protected void setManager(DirectEditManager manager) + { + this.manager = manager; + } + + /** + * @generated + */ + protected void performDirectEdit() + { + getManager().show(); + } + + /** + * @generated + */ + protected void performDirectEdit(Point eventLocation) + { + if (getManager().getClass() == TextDirectEditManager.class) + { + ((TextDirectEditManager)getManager()).show(eventLocation.getSWTPoint()); + } + } + + /** + * @generated + */ + private void performDirectEdit(char initialCharacter) + { + if (getManager() instanceof TextDirectEditManager) + { + ((TextDirectEditManager)getManager()).show(initialCharacter); + } + else + { + performDirectEdit(); + } + } + + /** + * @generated + */ + protected void performDirectEditRequest(Request request) + { + final Request theRequest = request; + try + { + getEditingDomain().runExclusive(new Runnable() + { + + public void run() + { + if (isActive() && isEditable()) + { + if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) + { + Character initialChar = (Character)theRequest.getExtendedData().get( + RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); + performDirectEdit(initialChar.charValue()); + } + else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) + { + DirectEditRequest editRequest = (DirectEditRequest)theRequest; + performDirectEdit(editRequest.getLocation()); + } + else + { + performDirectEdit(); + } + } + } + }); + } + catch (InterruptedException e) + { + e.printStackTrace(); + } + } + + /** + * @generated + */ + protected void refreshVisuals() + { + super.refreshVisuals(); + refreshLabel(); + refreshFont(); + refreshFontColor(); + refreshUnderline(); + refreshStrikeThrough(); + } + + /** + * @generated + */ + protected void refreshLabel() + { + setLabelTextHelper(getFigure(), getLabelText()); + setLabelIconHelper(getFigure(), getLabelIcon()); + Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); + if (pdEditPolicy instanceof AcoreTextSelectionEditPolicy) + { + ((AcoreTextSelectionEditPolicy)pdEditPolicy).refreshFeedback(); + } + Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE); + if (sfEditPolicy instanceof AcoreTextSelectionEditPolicy) + { + ((AcoreTextSelectionEditPolicy)sfEditPolicy).refreshFeedback(); + } + } + + /** + * @generated + */ + protected void refreshUnderline() + { + FontStyle style = (FontStyle)getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); + if (style != null && getFigure() instanceof WrappingLabel) + { + ((WrappingLabel)getFigure()).setTextUnderline(style.isUnderline()); + } + } + + /** + * @generated + */ + protected void refreshStrikeThrough() + { + FontStyle style = (FontStyle)getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); + if (style != null && getFigure() instanceof WrappingLabel) + { + ((WrappingLabel)getFigure()).setTextStrikeThrough(style.isStrikeThrough()); + } + } + + /** + * @generated + */ + protected void refreshFont() + { + FontStyle style = (FontStyle)getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); + if (style != null) + { + FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD + : SWT.NORMAL) + | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); + setFont(fontData); + } + } + + /** + * @generated + */ + protected void setFontColor(Color color) + { + getFigure().setForegroundColor(color); + } + + /** + * @generated + */ + protected void addSemanticListeners() + { + if (getParser() instanceof ISemanticParser) + { + EObject element = resolveSemanticElement(); + parserElements = ((ISemanticParser)getParser()).getSemanticElementsBeingParsed(element); + for (int i = 0; i < parserElements.size(); i++) + { + addListenerFilter("SemanticModel" + i, this, (EObject)parserElements.get(i)); //$NON-NLS-1$ + } + } + else + { + super.addSemanticListeners(); + } + } + + /** + * @generated + */ + protected void removeSemanticListeners() + { + if (parserElements != null) + { + for (int i = 0; i < parserElements.size(); i++) + { + removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ + } + } + else + { + super.removeSemanticListeners(); + } + } + + /** + * @generated + */ + protected AccessibleEditPart getAccessibleEditPart() + { + if (accessibleEP == null) + { + accessibleEP = new AccessibleGraphicalEditPart() + { + + public void getName(AccessibleEvent e) + { + e.result = getLabelTextHelper(getFigure()); + } + }; + } + return accessibleEP; + } + + /** + * @generated + */ + private View getFontStyleOwnerView() + { + return getPrimaryView(); + } + + /** + * @generated + */ + protected void addNotationalListeners() + { + super.addNotationalListeners(); + addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ + } + + /** + * @generated + */ + protected void removeNotationalListeners() + { + super.removeNotationalListeners(); + removeListenerFilter("PrimaryView"); //$NON-NLS-1$ + } + + /** + * @generated + */ + protected void handleNotificationEvent(Notification event) + { + Object feature = event.getFeature(); + if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) + { + Integer c = (Integer)event.getNewValue(); + setFontColor(DiagramColorRegistry.getInstance().getColor(c)); + } + else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) + { + refreshUnderline(); + } + else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) + { + refreshStrikeThrough(); + } + else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) + || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) + || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) + || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) + { + refreshFont(); + } + else + { + if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) + { + refreshLabel(); + } + if (getParser() instanceof ISemanticParser) + { + ISemanticParser modelParser = (ISemanticParser)getParser(); + if (modelParser.areSemanticElementsAffected(null, event)) + { + removeSemanticListeners(); + if (resolveSemanticElement() != null) + { + addSemanticListeners(); + } + refreshLabel(); + } + } + } + super.handleNotificationEvent(event); + } + + /** + * @generated + */ + protected IFigure createFigure() + { + IFigure label = createFigurePrim(); + defaultText = getLabelTextHelper(label); + return label; + } + + /** + * @generated + */ + protected IFigure createFigurePrim() + { + return new WrappingLabel(); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AOperationEditPart.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AOperationEditPart.java new file mode 100644 index 0000000000..a25cf5b4be --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AOperationEditPart.java @@ -0,0 +1,683 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts; + +import java.util.Collections; +import java.util.List; + +import org.eclipse.draw2d.IFigure; +import org.eclipse.draw2d.Label; +import org.eclipse.draw2d.geometry.Point; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AOperationItemSemanticEditPolicy; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AcoreTextNonResizableEditPolicy; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies.AcoreTextSelectionEditPolicy; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreVisualIDRegistry; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.AcoreElementTypes; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.AcoreParserProvider; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.transaction.RunnableWithResult; +import org.eclipse.gef.AccessibleEditPart; +import org.eclipse.gef.DragTracker; +import org.eclipse.gef.EditPolicy; +import org.eclipse.gef.Request; +import org.eclipse.gef.requests.DirectEditRequest; +import org.eclipse.gef.requests.SelectionRequest; +import org.eclipse.gef.tools.DirectEditManager; +import org.eclipse.gmf.runtime.common.ui.services.parser.IParser; +import org.eclipse.gmf.runtime.common.ui.services.parser.IParserEditStatus; +import org.eclipse.gmf.runtime.common.ui.services.parser.ParserEditStatus; +import org.eclipse.gmf.runtime.common.ui.services.parser.ParserOptions; +import org.eclipse.gmf.runtime.diagram.ui.editparts.CompartmentEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.LabelDirectEditPolicy; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ListItemComponentEditPolicy; +import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramColorRegistry; +import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; +import org.eclipse.gmf.runtime.diagram.ui.tools.DragEditPartsTrackerEx; +import org.eclipse.gmf.runtime.diagram.ui.tools.TextDirectEditManager; +import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel; +import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; +import org.eclipse.gmf.runtime.emf.ui.services.parser.ISemanticParser; +import org.eclipse.gmf.runtime.notation.FontStyle; +import org.eclipse.gmf.runtime.notation.NotationPackage; +import org.eclipse.gmf.runtime.notation.View; +import org.eclipse.jface.text.contentassist.IContentAssistProcessor; +import org.eclipse.jface.viewers.ICellEditorValidator; +import org.eclipse.swt.SWT; +import org.eclipse.swt.accessibility.AccessibleEvent; +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.FontData; +import org.eclipse.swt.graphics.Image; + +/** + * @generated + */ +public class AOperationEditPart extends CompartmentEditPart implements ITextAwareEditPart +{ + + /** + * @generated + */ + public static final int VISUAL_ID = 3002; + + /** + * @generated + */ + private DirectEditManager manager; + + /** + * @generated + */ + private IParser parser; + + /** + * @generated + */ + private List parserElements; + + /** + * @generated + */ + private String defaultText; + + /** + * @generated + */ + public AOperationEditPart(View view) + { + super(view); + } + + /** + * @generated + */ + public DragTracker getDragTracker(Request request) + { + if (request instanceof SelectionRequest && ((SelectionRequest)request).getLastButtonPressed() == 3) + { + return null; + } + return new DragEditPartsTrackerEx(this); + } + + /** + * @generated + */ + protected void createDefaultEditPolicies() + { + super.createDefaultEditPolicies(); + installEditPolicy(EditPolicyRoles.SEMANTIC_ROLE, new AOperationItemSemanticEditPolicy()); + installEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE, new AcoreTextNonResizableEditPolicy()); + installEditPolicy(EditPolicy.COMPONENT_ROLE, new ListItemComponentEditPolicy()); + installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new LabelDirectEditPolicy()); + } + + /** + * @generated + */ + protected String getLabelTextHelper(IFigure figure) + { + if (figure instanceof WrappingLabel) + { + return ((WrappingLabel)figure).getText(); + } + else + { + return ((Label)figure).getText(); + } + } + + /** + * @generated + */ + protected void setLabelTextHelper(IFigure figure, String text) + { + if (figure instanceof WrappingLabel) + { + ((WrappingLabel)figure).setText(text); + } + else + { + ((Label)figure).setText(text); + } + } + + /** + * @generated + */ + protected Image getLabelIconHelper(IFigure figure) + { + if (figure instanceof WrappingLabel) + { + return ((WrappingLabel)figure).getIcon(); + } + else + { + return ((Label)figure).getIcon(); + } + } + + /** + * @generated + */ + protected void setLabelIconHelper(IFigure figure, Image icon) + { + if (figure instanceof WrappingLabel) + { + ((WrappingLabel)figure).setIcon(icon); + } + else + { + ((Label)figure).setIcon(icon); + } + } + + /** + * @generated + */ + public void setLabel(IFigure figure) + { + unregisterVisuals(); + setFigure(figure); + defaultText = getLabelTextHelper(figure); + registerVisuals(); + refreshVisuals(); + } + + /** + * @generated + */ + protected List getModelChildren() + { + return Collections.EMPTY_LIST; + } + + /** + * @generated + */ + public IGraphicalEditPart getChildBySemanticHint(String semanticHint) + { + return null; + } + + /** + * @generated + */ + protected EObject getParserElement() + { + return resolveSemanticElement(); + } + + /** + * @generated + */ + protected Image getLabelIcon() + { + return null; + } + + /** + * @generated + */ + protected String getLabelText() + { + String text = null; + EObject parserElement = getParserElement(); + if (parserElement != null && getParser() != null) + { + text = getParser().getPrintString(new EObjectAdapter(parserElement), getParserOptions().intValue()); + } + if (text == null || text.length() == 0) + { + text = defaultText; + } + return text; + } + + /** + * @generated + */ + public void setLabelText(String text) + { + setLabelTextHelper(getFigure(), text); + Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); + if (pdEditPolicy instanceof AcoreTextSelectionEditPolicy) + { + ((AcoreTextSelectionEditPolicy)pdEditPolicy).refreshFeedback(); + } + Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE); + if (sfEditPolicy instanceof AcoreTextSelectionEditPolicy) + { + ((AcoreTextSelectionEditPolicy)sfEditPolicy).refreshFeedback(); + } + } + + /** + * @generated + */ + public String getEditText() + { + if (getParserElement() == null || getParser() == null) + { + return ""; //$NON-NLS-1$ + } + return getParser().getEditString(new EObjectAdapter(getParserElement()), getParserOptions().intValue()); + } + + /** + * @generated + */ + protected boolean isEditable() + { + return getParser() != null; + } + + /** + * @generated + */ + public ICellEditorValidator getEditTextValidator() + { + return new ICellEditorValidator() + { + + public String isValid(final Object value) + { + if (value instanceof String) + { + final EObject element = getParserElement(); + final IParser parser = getParser(); + try + { + IParserEditStatus valid = (IParserEditStatus)getEditingDomain().runExclusive(new RunnableWithResult.Impl() + { + + public void run() + { + setResult(parser.isValidEditString(new EObjectAdapter(element), (String)value)); + } + }); + return valid.getCode() == ParserEditStatus.EDITABLE ? null : valid.getMessage(); + } + catch (InterruptedException ie) + { + ie.printStackTrace(); + } + } + + // shouldn't get here + return null; + } + }; + } + + /** + * @generated + */ + public IContentAssistProcessor getCompletionProcessor() + { + if (getParserElement() == null || getParser() == null) + { + return null; + } + return getParser().getCompletionProcessor(new EObjectAdapter(getParserElement())); + } + + /** + * @generated + */ + public ParserOptions getParserOptions() + { + return ParserOptions.NONE; + } + + /** + * @generated + */ + public IParser getParser() + { + if (parser == null) + { + parser = AcoreParserProvider.getParser(AcoreElementTypes.AOperation_3002, getParserElement(), + AcoreVisualIDRegistry + .getType(org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AOperationEditPart.VISUAL_ID)); + } + return parser; + } + + /** + * @generated + */ + protected DirectEditManager getManager() + { + if (manager == null) + { + setManager(new TextDirectEditManager(this, TextDirectEditManager.getTextCellEditorClass(this), + AcoreEditPartFactory.getTextCellEditorLocator(this))); + } + return manager; + } + + /** + * @generated + */ + protected void setManager(DirectEditManager manager) + { + this.manager = manager; + } + + /** + * @generated + */ + protected void performDirectEdit() + { + getManager().show(); + } + + /** + * @generated + */ + protected void performDirectEdit(Point eventLocation) + { + if (getManager().getClass() == TextDirectEditManager.class) + { + ((TextDirectEditManager)getManager()).show(eventLocation.getSWTPoint()); + } + } + + /** + * @generated + */ + private void performDirectEdit(char initialCharacter) + { + if (getManager() instanceof TextDirectEditManager) + { + ((TextDirectEditManager)getManager()).show(initialCharacter); + } + else + { + performDirectEdit(); + } + } + + /** + * @generated + */ + protected void performDirectEditRequest(Request request) + { + final Request theRequest = request; + try + { + getEditingDomain().runExclusive(new Runnable() + { + + public void run() + { + if (isActive() && isEditable()) + { + if (theRequest.getExtendedData().get(RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR) instanceof Character) + { + Character initialChar = (Character)theRequest.getExtendedData().get( + RequestConstants.REQ_DIRECTEDIT_EXTENDEDDATA_INITIAL_CHAR); + performDirectEdit(initialChar.charValue()); + } + else if ((theRequest instanceof DirectEditRequest) && (getEditText().equals(getLabelText()))) + { + DirectEditRequest editRequest = (DirectEditRequest)theRequest; + performDirectEdit(editRequest.getLocation()); + } + else + { + performDirectEdit(); + } + } + } + }); + } + catch (InterruptedException e) + { + e.printStackTrace(); + } + } + + /** + * @generated + */ + protected void refreshVisuals() + { + super.refreshVisuals(); + refreshLabel(); + refreshFont(); + refreshFontColor(); + refreshUnderline(); + refreshStrikeThrough(); + } + + /** + * @generated + */ + protected void refreshLabel() + { + setLabelTextHelper(getFigure(), getLabelText()); + setLabelIconHelper(getFigure(), getLabelIcon()); + Object pdEditPolicy = getEditPolicy(EditPolicy.PRIMARY_DRAG_ROLE); + if (pdEditPolicy instanceof AcoreTextSelectionEditPolicy) + { + ((AcoreTextSelectionEditPolicy)pdEditPolicy).refreshFeedback(); + } + Object sfEditPolicy = getEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE); + if (sfEditPolicy instanceof AcoreTextSelectionEditPolicy) + { + ((AcoreTextSelectionEditPolicy)sfEditPolicy).refreshFeedback(); + } + } + + /** + * @generated + */ + protected void refreshUnderline() + { + FontStyle style = (FontStyle)getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); + if (style != null && getFigure() instanceof WrappingLabel) + { + ((WrappingLabel)getFigure()).setTextUnderline(style.isUnderline()); + } + } + + /** + * @generated + */ + protected void refreshStrikeThrough() + { + FontStyle style = (FontStyle)getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); + if (style != null && getFigure() instanceof WrappingLabel) + { + ((WrappingLabel)getFigure()).setTextStrikeThrough(style.isStrikeThrough()); + } + } + + /** + * @generated + */ + protected void refreshFont() + { + FontStyle style = (FontStyle)getFontStyleOwnerView().getStyle(NotationPackage.eINSTANCE.getFontStyle()); + if (style != null) + { + FontData fontData = new FontData(style.getFontName(), style.getFontHeight(), (style.isBold() ? SWT.BOLD + : SWT.NORMAL) + | (style.isItalic() ? SWT.ITALIC : SWT.NORMAL)); + setFont(fontData); + } + } + + /** + * @generated + */ + protected void setFontColor(Color color) + { + getFigure().setForegroundColor(color); + } + + /** + * @generated + */ + protected void addSemanticListeners() + { + if (getParser() instanceof ISemanticParser) + { + EObject element = resolveSemanticElement(); + parserElements = ((ISemanticParser)getParser()).getSemanticElementsBeingParsed(element); + for (int i = 0; i < parserElements.size(); i++) + { + addListenerFilter("SemanticModel" + i, this, (EObject)parserElements.get(i)); //$NON-NLS-1$ + } + } + else + { + super.addSemanticListeners(); + } + } + + /** + * @generated + */ + protected void removeSemanticListeners() + { + if (parserElements != null) + { + for (int i = 0; i < parserElements.size(); i++) + { + removeListenerFilter("SemanticModel" + i); //$NON-NLS-1$ + } + } + else + { + super.removeSemanticListeners(); + } + } + + /** + * @generated + */ + protected AccessibleEditPart getAccessibleEditPart() + { + if (accessibleEP == null) + { + accessibleEP = new AccessibleGraphicalEditPart() + { + + public void getName(AccessibleEvent e) + { + e.result = getLabelTextHelper(getFigure()); + } + }; + } + return accessibleEP; + } + + /** + * @generated + */ + private View getFontStyleOwnerView() + { + return getPrimaryView(); + } + + /** + * @generated + */ + protected void addNotationalListeners() + { + super.addNotationalListeners(); + addListenerFilter("PrimaryView", this, getPrimaryView()); //$NON-NLS-1$ + } + + /** + * @generated + */ + protected void removeNotationalListeners() + { + super.removeNotationalListeners(); + removeListenerFilter("PrimaryView"); //$NON-NLS-1$ + } + + /** + * @generated + */ + protected void handleNotificationEvent(Notification event) + { + Object feature = event.getFeature(); + if (NotationPackage.eINSTANCE.getFontStyle_FontColor().equals(feature)) + { + Integer c = (Integer)event.getNewValue(); + setFontColor(DiagramColorRegistry.getInstance().getColor(c)); + } + else if (NotationPackage.eINSTANCE.getFontStyle_Underline().equals(feature)) + { + refreshUnderline(); + } + else if (NotationPackage.eINSTANCE.getFontStyle_StrikeThrough().equals(feature)) + { + refreshStrikeThrough(); + } + else if (NotationPackage.eINSTANCE.getFontStyle_FontHeight().equals(feature) + || NotationPackage.eINSTANCE.getFontStyle_FontName().equals(feature) + || NotationPackage.eINSTANCE.getFontStyle_Bold().equals(feature) + || NotationPackage.eINSTANCE.getFontStyle_Italic().equals(feature)) + { + refreshFont(); + } + else + { + if (getParser() != null && getParser().isAffectingEvent(event, getParserOptions().intValue())) + { + refreshLabel(); + } + if (getParser() instanceof ISemanticParser) + { + ISemanticParser modelParser = (ISemanticParser)getParser(); + if (modelParser.areSemanticElementsAffected(null, event)) + { + removeSemanticListeners(); + if (resolveSemanticElement() != null) + { + addSemanticListeners(); + } + refreshLabel(); + } + } + } + super.handleNotificationEvent(event); + } + + /** + * @generated + */ + protected IFigure createFigure() + { + IFigure label = createFigurePrim(); + defaultText = getLabelTextHelper(label); + return label; + } + + /** + * @generated + */ + protected IFigure createFigurePrim() + { + return new WrappingLabel(); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AcoreEditPartFactory.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AcoreEditPartFactory.java new file mode 100644 index 0000000000..d240cbde7c --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/parts/AcoreEditPartFactory.java @@ -0,0 +1,227 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts; + +import org.eclipse.draw2d.FigureUtilities; +import org.eclipse.draw2d.Label; +import org.eclipse.draw2d.geometry.Dimension; +import org.eclipse.draw2d.geometry.Rectangle; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreVisualIDRegistry; +import org.eclipse.gef.EditPart; +import org.eclipse.gef.EditPartFactory; +import org.eclipse.gef.tools.CellEditorLocator; +import org.eclipse.gmf.runtime.diagram.ui.editparts.ITextAwareEditPart; +import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel; +import org.eclipse.gmf.runtime.notation.View; +import org.eclipse.jface.viewers.CellEditor; +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Text; + +/** + * @generated + */ +public class AcoreEditPartFactory implements EditPartFactory +{ + + /** + * @generated + */ + public EditPart createEditPart(EditPart context, Object model) + { + if (model instanceof View) + { + View view = (View)model; + switch (AcoreVisualIDRegistry.getVisualID(view)) + { + + case ACoreRootEditPart.VISUAL_ID: + return new ACoreRootEditPart(view); + + case AInterfaceEditPart.VISUAL_ID: + return new AInterfaceEditPart(view); + + case AInterfaceNameEditPart.VISUAL_ID: + return new AInterfaceNameEditPart(view); + + case AClassEditPart.VISUAL_ID: + return new AClassEditPart(view); + + case AClassNameEditPart.VISUAL_ID: + return new AClassNameEditPart(view); + + case AAttributeEditPart.VISUAL_ID: + return new AAttributeEditPart(view); + + case AOperationEditPart.VISUAL_ID: + return new AOperationEditPart(view); + + case AAttribute2EditPart.VISUAL_ID: + return new AAttribute2EditPart(view); + + case AOperation2EditPart.VISUAL_ID: + return new AOperation2EditPart(view); + + case AInterfaceAAttributeInterfaceCompartmentEditPart.VISUAL_ID: + return new AInterfaceAAttributeInterfaceCompartmentEditPart(view); + + case AInterfaceAOperationInterfaceCompartmentEditPart.VISUAL_ID: + return new AInterfaceAOperationInterfaceCompartmentEditPart(view); + + case AClassAAttributeCompartmentEditPart.VISUAL_ID: + return new AClassAAttributeCompartmentEditPart(view); + + case AClassAOperationClassCompartmentEditPart.VISUAL_ID: + return new AClassAOperationClassCompartmentEditPart(view); + + case AClassSubClassesEditPart.VISUAL_ID: + return new AClassSubClassesEditPart(view); + + case AClassImplementedInterfacesEditPart.VISUAL_ID: + return new AClassImplementedInterfacesEditPart(view); + + case AClassAssociationsEditPart.VISUAL_ID: + return new AClassAssociationsEditPart(view); + + case AClassAggregationsEditPart.VISUAL_ID: + return new AClassAggregationsEditPart(view); + + case AClassCompositionsEditPart.VISUAL_ID: + return new AClassCompositionsEditPart(view); + + } + } + return createUnrecognizedEditPart(context, model); + } + + /** + * @generated + */ + private EditPart createUnrecognizedEditPart(EditPart context, Object model) + { + // Handle creation of unrecognized child node EditParts here + return null; + } + + /** + * @generated + */ + public static CellEditorLocator getTextCellEditorLocator(ITextAwareEditPart source) + { + if (source.getFigure() instanceof WrappingLabel) + return new TextCellEditorLocator((WrappingLabel)source.getFigure()); + else + { + return new LabelCellEditorLocator((Label)source.getFigure()); + } + } + + /** + * @generated + */ + static private class TextCellEditorLocator implements CellEditorLocator + { + + /** + * @generated + */ + private WrappingLabel wrapLabel; + + /** + * @generated + */ + public TextCellEditorLocator(WrappingLabel wrapLabel) + { + this.wrapLabel = wrapLabel; + } + + /** + * @generated + */ + public WrappingLabel getWrapLabel() + { + return wrapLabel; + } + + /** + * @generated + */ + public void relocate(CellEditor celleditor) + { + Text text = (Text)celleditor.getControl(); + Rectangle rect = getWrapLabel().getTextBounds().getCopy(); + getWrapLabel().translateToAbsolute(rect); + if (!text.getFont().isDisposed()) + { + if (getWrapLabel().isTextWrapOn() && getWrapLabel().getText().length() > 0) + { + rect.setSize(new Dimension(text.computeSize(rect.width, SWT.DEFAULT))); + } + else + { + int avr = FigureUtilities.getFontMetrics(text.getFont()).getAverageCharWidth(); + rect.setSize(new Dimension(text.computeSize(SWT.DEFAULT, SWT.DEFAULT)).expand(avr * 2, 0)); + } + } + if (!rect.equals(new Rectangle(text.getBounds()))) + { + text.setBounds(rect.x, rect.y, rect.width, rect.height); + } + } + } + + /** + * @generated + */ + private static class LabelCellEditorLocator implements CellEditorLocator + { + + /** + * @generated + */ + private Label label; + + /** + * @generated + */ + public LabelCellEditorLocator(Label label) + { + this.label = label; + } + + /** + * @generated + */ + public Label getLabel() + { + return label; + } + + /** + * @generated + */ + public void relocate(CellEditor celleditor) + { + Text text = (Text)celleditor.getControl(); + Rectangle rect = getLabel().getTextBounds().getCopy(); + getLabel().translateToAbsolute(rect); + if (!text.getFont().isDisposed()) + { + int avr = FigureUtilities.getFontMetrics(text.getFont()).getAverageCharWidth(); + rect.setSize(new Dimension(text.computeSize(SWT.DEFAULT, SWT.DEFAULT)).expand(avr * 2, 0)); + } + if (!rect.equals(new Rectangle(text.getBounds()))) + { + text.setBounds(rect.x, rect.y, rect.width, rect.height); + } + } + } +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AAttribute2ItemSemanticEditPolicy.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AAttribute2ItemSemanticEditPolicy.java new file mode 100644 index 0000000000..90490b4ec4 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AAttribute2ItemSemanticEditPolicy.java @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies; + +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.AcoreElementTypes; +import org.eclipse.emf.ecore.EAnnotation; +import org.eclipse.gef.commands.Command; +import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand; +import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand; +import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; +import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; +import org.eclipse.gmf.runtime.notation.View; + +/** + * @generated + */ +public class AAttribute2ItemSemanticEditPolicy extends AcoreBaseItemSemanticEditPolicy +{ + + /** + * @generated + */ + public AAttribute2ItemSemanticEditPolicy() + { + super(AcoreElementTypes.AAttribute_3003); + } + + /** + * @generated + */ + protected Command getDestroyElementCommand(DestroyElementRequest req) + { + View view = (View)getHost().getModel(); + CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(getEditingDomain(), null); + cmd.setTransactionNestingEnabled(false); + EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ + if (annotation == null) + { + // there are indirectly referenced children, need extra commands: false + addDestroyShortcutsCommand(cmd, view); + // delete host element + cmd.add(new DestroyElementCommand(req)); + } + else + { + cmd.add(new DeleteCommand(getEditingDomain(), view)); + } + return getGEFWrapper(cmd.reduce()); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AAttributeItemSemanticEditPolicy.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AAttributeItemSemanticEditPolicy.java new file mode 100644 index 0000000000..7ec9f46b97 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AAttributeItemSemanticEditPolicy.java @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies; + +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.AcoreElementTypes; +import org.eclipse.emf.ecore.EAnnotation; +import org.eclipse.gef.commands.Command; +import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand; +import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand; +import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; +import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; +import org.eclipse.gmf.runtime.notation.View; + +/** + * @generated + */ +public class AAttributeItemSemanticEditPolicy extends AcoreBaseItemSemanticEditPolicy +{ + + /** + * @generated + */ + public AAttributeItemSemanticEditPolicy() + { + super(AcoreElementTypes.AAttribute_3001); + } + + /** + * @generated + */ + protected Command getDestroyElementCommand(DestroyElementRequest req) + { + View view = (View)getHost().getModel(); + CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(getEditingDomain(), null); + cmd.setTransactionNestingEnabled(false); + EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ + if (annotation == null) + { + // there are indirectly referenced children, need extra commands: false + addDestroyShortcutsCommand(cmd, view); + // delete host element + cmd.add(new DestroyElementCommand(req)); + } + else + { + cmd.add(new DeleteCommand(getEditingDomain(), view)); + } + return getGEFWrapper(cmd.reduce()); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AClassAAttributeCompartmentCanonicalEditPolicy.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AClassAAttributeCompartmentCanonicalEditPolicy.java new file mode 100644 index 0000000000..76d83d3cd3 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AClassAAttributeCompartmentCanonicalEditPolicy.java @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies; + +import java.util.Collection; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + +import org.eclipse.emf.cdo.dawn.examples.acore.AcorePackage; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AAttribute2EditPart; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreDiagramUpdater; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreNodeDescriptor; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreVisualIDRegistry; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy; +import org.eclipse.gmf.runtime.notation.View; + +/** + * @generated + */ +public class AClassAAttributeCompartmentCanonicalEditPolicy extends CanonicalEditPolicy +{ + + /** + * @generated + */ + protected List getSemanticChildrenList() + { + View viewObject = (View)getHost().getModel(); + LinkedList<EObject> result = new LinkedList<EObject>(); + List<AcoreNodeDescriptor> childDescriptors = AcoreDiagramUpdater + .getAClassAAttributeCompartment_7003SemanticChildren(viewObject); + for (Iterator<AcoreNodeDescriptor> it = childDescriptors.iterator(); it.hasNext();) + { + AcoreNodeDescriptor d = it.next(); + result.add(d.getModelElement()); + } + return result; + } + + /** + * @generated + */ + protected boolean isOrphaned(Collection semanticChildren, final View view) + { + int visualID = AcoreVisualIDRegistry.getVisualID(view); + switch (visualID) + { + case AAttribute2EditPart.VISUAL_ID: + if (!semanticChildren.contains(view.getElement())) + { + return true; + } + } + return false; + } + + /** + * @generated + */ + protected EStructuralFeature getFeatureToSynchronize() + { + return AcorePackage.eINSTANCE.getABasicClass_Attributes(); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AClassAAttributeCompartmentItemSemanticEditPolicy.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AClassAAttributeCompartmentItemSemanticEditPolicy.java new file mode 100644 index 0000000000..e853931e52 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AClassAAttributeCompartmentItemSemanticEditPolicy.java @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies; + +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.commands.AAttribute2CreateCommand; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.AcoreElementTypes; +import org.eclipse.gef.commands.Command; +import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; + +/** + * @generated + */ +public class AClassAAttributeCompartmentItemSemanticEditPolicy extends AcoreBaseItemSemanticEditPolicy +{ + + /** + * @generated + */ + public AClassAAttributeCompartmentItemSemanticEditPolicy() + { + super(AcoreElementTypes.AClass_2002); + } + + /** + * @generated + */ + protected Command getCreateCommand(CreateElementRequest req) + { + if (AcoreElementTypes.AAttribute_3003 == req.getElementType()) + { + return getGEFWrapper(new AAttribute2CreateCommand(req)); + } + return super.getCreateCommand(req); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AClassAOperationClassCompartmentCanonicalEditPolicy.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AClassAOperationClassCompartmentCanonicalEditPolicy.java new file mode 100644 index 0000000000..5228fce162 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AClassAOperationClassCompartmentCanonicalEditPolicy.java @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies; + +import java.util.Collection; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + +import org.eclipse.emf.cdo.dawn.examples.acore.AcorePackage; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AOperation2EditPart; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreDiagramUpdater; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreNodeDescriptor; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreVisualIDRegistry; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy; +import org.eclipse.gmf.runtime.notation.View; + +/** + * @generated + */ +public class AClassAOperationClassCompartmentCanonicalEditPolicy extends CanonicalEditPolicy +{ + + /** + * @generated + */ + protected List getSemanticChildrenList() + { + View viewObject = (View)getHost().getModel(); + LinkedList<EObject> result = new LinkedList<EObject>(); + List<AcoreNodeDescriptor> childDescriptors = AcoreDiagramUpdater + .getAClassAOperationClassCompartment_7004SemanticChildren(viewObject); + for (Iterator<AcoreNodeDescriptor> it = childDescriptors.iterator(); it.hasNext();) + { + AcoreNodeDescriptor d = it.next(); + result.add(d.getModelElement()); + } + return result; + } + + /** + * @generated + */ + protected boolean isOrphaned(Collection semanticChildren, final View view) + { + int visualID = AcoreVisualIDRegistry.getVisualID(view); + switch (visualID) + { + case AOperation2EditPart.VISUAL_ID: + if (!semanticChildren.contains(view.getElement())) + { + return true; + } + } + return false; + } + + /** + * @generated + */ + protected EStructuralFeature getFeatureToSynchronize() + { + return AcorePackage.eINSTANCE.getABasicClass_Operations(); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AClassAOperationClassCompartmentItemSemanticEditPolicy.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AClassAOperationClassCompartmentItemSemanticEditPolicy.java new file mode 100644 index 0000000000..5d7724dbe8 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AClassAOperationClassCompartmentItemSemanticEditPolicy.java @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies; + +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.commands.AOperation2CreateCommand; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.AcoreElementTypes; +import org.eclipse.gef.commands.Command; +import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; + +/** + * @generated + */ +public class AClassAOperationClassCompartmentItemSemanticEditPolicy extends AcoreBaseItemSemanticEditPolicy +{ + + /** + * @generated + */ + public AClassAOperationClassCompartmentItemSemanticEditPolicy() + { + super(AcoreElementTypes.AClass_2002); + } + + /** + * @generated + */ + protected Command getCreateCommand(CreateElementRequest req) + { + if (AcoreElementTypes.AOperation_3004 == req.getElementType()) + { + return getGEFWrapper(new AOperation2CreateCommand(req)); + } + return super.getCreateCommand(req); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AClassAggregationsItemSemanticEditPolicy.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AClassAggregationsItemSemanticEditPolicy.java new file mode 100644 index 0000000000..0d369a3d4f --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AClassAggregationsItemSemanticEditPolicy.java @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies; + +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.AcoreElementTypes; +import org.eclipse.gef.commands.Command; +import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyReferenceCommand; +import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyReferenceRequest; + +/** + * @generated + */ +public class AClassAggregationsItemSemanticEditPolicy extends AcoreBaseItemSemanticEditPolicy +{ + + /** + * @generated + */ + public AClassAggregationsItemSemanticEditPolicy() + { + super(AcoreElementTypes.AClassAggregations_4004); + } + + /** + * @generated + */ + protected Command getDestroyReferenceCommand(DestroyReferenceRequest req) + { + return getGEFWrapper(new DestroyReferenceCommand(req)); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AClassAssociationsItemSemanticEditPolicy.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AClassAssociationsItemSemanticEditPolicy.java new file mode 100644 index 0000000000..10e99c61df --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AClassAssociationsItemSemanticEditPolicy.java @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies; + +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.AcoreElementTypes; +import org.eclipse.gef.commands.Command; +import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyReferenceCommand; +import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyReferenceRequest; + +/** + * @generated + */ +public class AClassAssociationsItemSemanticEditPolicy extends AcoreBaseItemSemanticEditPolicy +{ + + /** + * @generated + */ + public AClassAssociationsItemSemanticEditPolicy() + { + super(AcoreElementTypes.AClassAssociations_4003); + } + + /** + * @generated + */ + protected Command getDestroyReferenceCommand(DestroyReferenceRequest req) + { + return getGEFWrapper(new DestroyReferenceCommand(req)); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AClassCompositionsItemSemanticEditPolicy.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AClassCompositionsItemSemanticEditPolicy.java new file mode 100644 index 0000000000..8acc83b591 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AClassCompositionsItemSemanticEditPolicy.java @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies; + +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.AcoreElementTypes; +import org.eclipse.gef.commands.Command; +import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyReferenceCommand; +import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyReferenceRequest; + +/** + * @generated + */ +public class AClassCompositionsItemSemanticEditPolicy extends AcoreBaseItemSemanticEditPolicy +{ + + /** + * @generated + */ + public AClassCompositionsItemSemanticEditPolicy() + { + super(AcoreElementTypes.AClassCompositions_4005); + } + + /** + * @generated + */ + protected Command getDestroyReferenceCommand(DestroyReferenceRequest req) + { + return getGEFWrapper(new DestroyReferenceCommand(req)); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AClassImplementedInterfacesItemSemanticEditPolicy.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AClassImplementedInterfacesItemSemanticEditPolicy.java new file mode 100644 index 0000000000..0655263a3e --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AClassImplementedInterfacesItemSemanticEditPolicy.java @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies; + +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.AcoreElementTypes; +import org.eclipse.gef.commands.Command; +import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyReferenceCommand; +import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyReferenceRequest; + +/** + * @generated + */ +public class AClassImplementedInterfacesItemSemanticEditPolicy extends AcoreBaseItemSemanticEditPolicy +{ + + /** + * @generated + */ + public AClassImplementedInterfacesItemSemanticEditPolicy() + { + super(AcoreElementTypes.AClassImplementedInterfaces_4002); + } + + /** + * @generated + */ + protected Command getDestroyReferenceCommand(DestroyReferenceRequest req) + { + return getGEFWrapper(new DestroyReferenceCommand(req)); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AClassItemSemanticEditPolicy.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AClassItemSemanticEditPolicy.java new file mode 100644 index 0000000000..7c9ec3575c --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AClassItemSemanticEditPolicy.java @@ -0,0 +1,303 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies; + +import java.util.Iterator; + +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.commands.AClassAggregationsCreateCommand; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.commands.AClassAggregationsReorientCommand; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.commands.AClassAssociationsCreateCommand; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.commands.AClassAssociationsReorientCommand; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.commands.AClassCompositionsCreateCommand; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.commands.AClassCompositionsReorientCommand; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.commands.AClassImplementedInterfacesCreateCommand; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.commands.AClassImplementedInterfacesReorientCommand; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.commands.AClassSubClassesCreateCommand; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.commands.AClassSubClassesReorientCommand; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AAttribute2EditPart; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AClassAAttributeCompartmentEditPart; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AClassAOperationClassCompartmentEditPart; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AClassAggregationsEditPart; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AClassAssociationsEditPart; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AClassCompositionsEditPart; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AClassImplementedInterfacesEditPart; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AClassSubClassesEditPart; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AOperation2EditPart; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreVisualIDRegistry; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.AcoreElementTypes; +import org.eclipse.emf.ecore.EAnnotation; +import org.eclipse.gef.commands.Command; +import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand; +import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand; +import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand; +import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; +import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyReferenceCommand; +import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyReferenceRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientReferenceRelationshipRequest; +import org.eclipse.gmf.runtime.notation.Edge; +import org.eclipse.gmf.runtime.notation.Node; +import org.eclipse.gmf.runtime.notation.View; + +/** + * @generated + */ +public class AClassItemSemanticEditPolicy extends AcoreBaseItemSemanticEditPolicy +{ + + /** + * @generated + */ + public AClassItemSemanticEditPolicy() + { + super(AcoreElementTypes.AClass_2002); + } + + /** + * @generated + */ + protected Command getDestroyElementCommand(DestroyElementRequest req) + { + View view = (View)getHost().getModel(); + CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(getEditingDomain(), null); + cmd.setTransactionNestingEnabled(false); + for (Iterator it = view.getTargetEdges().iterator(); it.hasNext();) + { + Edge incomingLink = (Edge)it.next(); + if (AcoreVisualIDRegistry.getVisualID(incomingLink) == AClassSubClassesEditPart.VISUAL_ID) + { + DestroyReferenceRequest r = new DestroyReferenceRequest(incomingLink.getSource().getElement(), null, + incomingLink.getTarget().getElement(), false); + cmd.add(new DestroyReferenceCommand(r)); + cmd.add(new DeleteCommand(getEditingDomain(), incomingLink)); + continue; + } + if (AcoreVisualIDRegistry.getVisualID(incomingLink) == AClassAssociationsEditPart.VISUAL_ID) + { + DestroyReferenceRequest r = new DestroyReferenceRequest(incomingLink.getSource().getElement(), null, + incomingLink.getTarget().getElement(), false); + cmd.add(new DestroyReferenceCommand(r)); + cmd.add(new DeleteCommand(getEditingDomain(), incomingLink)); + continue; + } + if (AcoreVisualIDRegistry.getVisualID(incomingLink) == AClassAggregationsEditPart.VISUAL_ID) + { + DestroyReferenceRequest r = new DestroyReferenceRequest(incomingLink.getSource().getElement(), null, + incomingLink.getTarget().getElement(), false); + cmd.add(new DestroyReferenceCommand(r)); + cmd.add(new DeleteCommand(getEditingDomain(), incomingLink)); + continue; + } + if (AcoreVisualIDRegistry.getVisualID(incomingLink) == AClassCompositionsEditPart.VISUAL_ID) + { + DestroyReferenceRequest r = new DestroyReferenceRequest(incomingLink.getSource().getElement(), null, + incomingLink.getTarget().getElement(), false); + cmd.add(new DestroyReferenceCommand(r)); + cmd.add(new DeleteCommand(getEditingDomain(), incomingLink)); + continue; + } + } + for (Iterator it = view.getSourceEdges().iterator(); it.hasNext();) + { + Edge outgoingLink = (Edge)it.next(); + if (AcoreVisualIDRegistry.getVisualID(outgoingLink) == AClassSubClassesEditPart.VISUAL_ID) + { + DestroyReferenceRequest r = new DestroyReferenceRequest(outgoingLink.getSource().getElement(), null, + outgoingLink.getTarget().getElement(), false); + cmd.add(new DestroyReferenceCommand(r)); + cmd.add(new DeleteCommand(getEditingDomain(), outgoingLink)); + continue; + } + if (AcoreVisualIDRegistry.getVisualID(outgoingLink) == AClassImplementedInterfacesEditPart.VISUAL_ID) + { + DestroyReferenceRequest r = new DestroyReferenceRequest(outgoingLink.getSource().getElement(), null, + outgoingLink.getTarget().getElement(), false); + cmd.add(new DestroyReferenceCommand(r)); + cmd.add(new DeleteCommand(getEditingDomain(), outgoingLink)); + continue; + } + if (AcoreVisualIDRegistry.getVisualID(outgoingLink) == AClassAssociationsEditPart.VISUAL_ID) + { + DestroyReferenceRequest r = new DestroyReferenceRequest(outgoingLink.getSource().getElement(), null, + outgoingLink.getTarget().getElement(), false); + cmd.add(new DestroyReferenceCommand(r)); + cmd.add(new DeleteCommand(getEditingDomain(), outgoingLink)); + continue; + } + if (AcoreVisualIDRegistry.getVisualID(outgoingLink) == AClassAggregationsEditPart.VISUAL_ID) + { + DestroyReferenceRequest r = new DestroyReferenceRequest(outgoingLink.getSource().getElement(), null, + outgoingLink.getTarget().getElement(), false); + cmd.add(new DestroyReferenceCommand(r)); + cmd.add(new DeleteCommand(getEditingDomain(), outgoingLink)); + continue; + } + if (AcoreVisualIDRegistry.getVisualID(outgoingLink) == AClassCompositionsEditPart.VISUAL_ID) + { + DestroyReferenceRequest r = new DestroyReferenceRequest(outgoingLink.getSource().getElement(), null, + outgoingLink.getTarget().getElement(), false); + cmd.add(new DestroyReferenceCommand(r)); + cmd.add(new DeleteCommand(getEditingDomain(), outgoingLink)); + continue; + } + } + EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ + if (annotation == null) + { + // there are indirectly referenced children, need extra commands: false + addDestroyChildNodesCommand(cmd); + addDestroyShortcutsCommand(cmd, view); + // delete host element + cmd.add(new DestroyElementCommand(req)); + } + else + { + cmd.add(new DeleteCommand(getEditingDomain(), view)); + } + return getGEFWrapper(cmd.reduce()); + } + + /** + * @generated + */ + private void addDestroyChildNodesCommand(ICompositeCommand cmd) + { + View view = (View)getHost().getModel(); + for (Iterator nit = view.getChildren().iterator(); nit.hasNext();) + { + Node node = (Node)nit.next(); + switch (AcoreVisualIDRegistry.getVisualID(node)) + { + case AClassAAttributeCompartmentEditPart.VISUAL_ID: + for (Iterator cit = node.getChildren().iterator(); cit.hasNext();) + { + Node cnode = (Node)cit.next(); + switch (AcoreVisualIDRegistry.getVisualID(cnode)) + { + case AAttribute2EditPart.VISUAL_ID: + cmd.add(new DestroyElementCommand(new DestroyElementRequest(getEditingDomain(), cnode.getElement(), false))); // directlyOwned: true + // don't need explicit deletion of cnode as parent's view deletion would clean child views as well + // cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode)); + break; + } + } + break; + case AClassAOperationClassCompartmentEditPart.VISUAL_ID: + for (Iterator cit = node.getChildren().iterator(); cit.hasNext();) + { + Node cnode = (Node)cit.next(); + switch (AcoreVisualIDRegistry.getVisualID(cnode)) + { + case AOperation2EditPart.VISUAL_ID: + cmd.add(new DestroyElementCommand(new DestroyElementRequest(getEditingDomain(), cnode.getElement(), false))); // directlyOwned: true + // don't need explicit deletion of cnode as parent's view deletion would clean child views as well + // cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode)); + break; + } + } + break; + } + } + } + + /** + * @generated + */ + protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) + { + Command command = req.getTarget() == null ? getStartCreateRelationshipCommand(req) + : getCompleteCreateRelationshipCommand(req); + return command != null ? command : super.getCreateRelationshipCommand(req); + } + + /** + * @generated + */ + protected Command getStartCreateRelationshipCommand(CreateRelationshipRequest req) + { + if (AcoreElementTypes.AClassSubClasses_4001 == req.getElementType()) + { + return getGEFWrapper(new AClassSubClassesCreateCommand(req, req.getSource(), req.getTarget())); + } + if (AcoreElementTypes.AClassImplementedInterfaces_4002 == req.getElementType()) + { + return getGEFWrapper(new AClassImplementedInterfacesCreateCommand(req, req.getSource(), req.getTarget())); + } + if (AcoreElementTypes.AClassAssociations_4003 == req.getElementType()) + { + return getGEFWrapper(new AClassAssociationsCreateCommand(req, req.getSource(), req.getTarget())); + } + if (AcoreElementTypes.AClassAggregations_4004 == req.getElementType()) + { + return getGEFWrapper(new AClassAggregationsCreateCommand(req, req.getSource(), req.getTarget())); + } + if (AcoreElementTypes.AClassCompositions_4005 == req.getElementType()) + { + return getGEFWrapper(new AClassCompositionsCreateCommand(req, req.getSource(), req.getTarget())); + } + return null; + } + + /** + * @generated + */ + protected Command getCompleteCreateRelationshipCommand(CreateRelationshipRequest req) + { + if (AcoreElementTypes.AClassSubClasses_4001 == req.getElementType()) + { + return getGEFWrapper(new AClassSubClassesCreateCommand(req, req.getSource(), req.getTarget())); + } + if (AcoreElementTypes.AClassImplementedInterfaces_4002 == req.getElementType()) + { + return null; + } + if (AcoreElementTypes.AClassAssociations_4003 == req.getElementType()) + { + return getGEFWrapper(new AClassAssociationsCreateCommand(req, req.getSource(), req.getTarget())); + } + if (AcoreElementTypes.AClassAggregations_4004 == req.getElementType()) + { + return getGEFWrapper(new AClassAggregationsCreateCommand(req, req.getSource(), req.getTarget())); + } + if (AcoreElementTypes.AClassCompositions_4005 == req.getElementType()) + { + return getGEFWrapper(new AClassCompositionsCreateCommand(req, req.getSource(), req.getTarget())); + } + return null; + } + + /** + * Returns command to reorient EReference based link. New link target or source + * should be the domain model element associated with this node. + * + * @generated + */ + protected Command getReorientReferenceRelationshipCommand(ReorientReferenceRelationshipRequest req) + { + switch (getVisualID(req)) + { + case AClassSubClassesEditPart.VISUAL_ID: + return getGEFWrapper(new AClassSubClassesReorientCommand(req)); + case AClassImplementedInterfacesEditPart.VISUAL_ID: + return getGEFWrapper(new AClassImplementedInterfacesReorientCommand(req)); + case AClassAssociationsEditPart.VISUAL_ID: + return getGEFWrapper(new AClassAssociationsReorientCommand(req)); + case AClassAggregationsEditPart.VISUAL_ID: + return getGEFWrapper(new AClassAggregationsReorientCommand(req)); + case AClassCompositionsEditPart.VISUAL_ID: + return getGEFWrapper(new AClassCompositionsReorientCommand(req)); + } + return super.getReorientReferenceRelationshipCommand(req); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AClassSubClassesItemSemanticEditPolicy.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AClassSubClassesItemSemanticEditPolicy.java new file mode 100644 index 0000000000..bec87f03ef --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AClassSubClassesItemSemanticEditPolicy.java @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies; + +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.AcoreElementTypes; +import org.eclipse.gef.commands.Command; +import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyReferenceCommand; +import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyReferenceRequest; + +/** + * @generated + */ +public class AClassSubClassesItemSemanticEditPolicy extends AcoreBaseItemSemanticEditPolicy +{ + + /** + * @generated + */ + public AClassSubClassesItemSemanticEditPolicy() + { + super(AcoreElementTypes.AClassSubClasses_4001); + } + + /** + * @generated + */ + protected Command getDestroyReferenceCommand(DestroyReferenceRequest req) + { + return getGEFWrapper(new DestroyReferenceCommand(req)); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/ACoreRootCanonicalEditPolicy.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/ACoreRootCanonicalEditPolicy.java new file mode 100644 index 0000000000..fa983769ad --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/ACoreRootCanonicalEditPolicy.java @@ -0,0 +1,345 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.emf.cdo.dawn.examples.acore.AcorePackage; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AClassEditPart; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.ACoreRootEditPart; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AInterfaceEditPart; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreDiagramUpdater; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreLinkDescriptor; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreNodeDescriptor; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreVisualIDRegistry; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.gef.EditPart; +import org.eclipse.gef.commands.Command; +import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil; +import org.eclipse.gmf.runtime.diagram.ui.commands.DeferredLayoutCommand; +import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy; +import org.eclipse.gmf.runtime.diagram.ui.commands.SetViewMutabilityCommand; +import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy; +import org.eclipse.gmf.runtime.diagram.ui.requests.CreateConnectionViewRequest; +import org.eclipse.gmf.runtime.diagram.ui.requests.CreateViewRequest; +import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; +import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; +import org.eclipse.gmf.runtime.notation.Diagram; +import org.eclipse.gmf.runtime.notation.Edge; +import org.eclipse.gmf.runtime.notation.Node; +import org.eclipse.gmf.runtime.notation.View; + +/** + * @generated + */ +public class ACoreRootCanonicalEditPolicy extends CanonicalEditPolicy +{ + + /** + * @generated + */ + Set<EStructuralFeature> myFeaturesToSynchronize; + + /** + * @generated + */ + protected List getSemanticChildrenList() + { + View viewObject = (View)getHost().getModel(); + LinkedList<EObject> result = new LinkedList<EObject>(); + List<AcoreNodeDescriptor> childDescriptors = AcoreDiagramUpdater.getACoreRoot_1000SemanticChildren(viewObject); + for (Iterator<AcoreNodeDescriptor> it = childDescriptors.iterator(); it.hasNext();) + { + AcoreNodeDescriptor d = it.next(); + result.add(d.getModelElement()); + } + return result; + } + + /** + * @generated + */ + protected boolean shouldDeleteView(View view) + { + return true; + } + + /** + * @generated + */ + protected boolean isOrphaned(Collection semanticChildren, final View view) + { + int visualID = AcoreVisualIDRegistry.getVisualID(view); + switch (visualID) + { + case AInterfaceEditPart.VISUAL_ID: + case AClassEditPart.VISUAL_ID: + if (!semanticChildren.contains(view.getElement())) + { + return true; + } + } + return false; + } + + /** + * @generated + */ + protected Set getFeaturesToSynchronize() + { + if (myFeaturesToSynchronize == null) + { + myFeaturesToSynchronize = new HashSet<EStructuralFeature>(); + myFeaturesToSynchronize.add(AcorePackage.eINSTANCE.getACoreRoot_Interfaces()); + myFeaturesToSynchronize.add(AcorePackage.eINSTANCE.getACoreRoot_Classes()); + } + return myFeaturesToSynchronize; + } + + /** + * @generated + */ + protected void refreshSemantic() + { + if (resolveSemanticElement() == null) + { + return; + } + LinkedList<IAdaptable> createdViews = new LinkedList<IAdaptable>(); + // refreshSemanticChildren() alternative + List<AcoreNodeDescriptor> childDescriptors = AcoreDiagramUpdater.getACoreRoot_1000SemanticChildren((View)getHost() + .getModel()); + ArrayList<EObject> semanticChildren = new ArrayList<EObject>(childDescriptors.size()); + for (Iterator<AcoreNodeDescriptor> it = childDescriptors.iterator(); it.hasNext();) + { + AcoreNodeDescriptor next = it.next(); + semanticChildren.add(next.getModelElement()); + } + List<View> orphaned = cleanCanonicalSemanticChildren(getViewChildren(), semanticChildren); + boolean changed = deleteViews(orphaned.iterator()); + // leave descriptors that reference survived semanticChildren. + // NOTE, we may want to stop using cleanCanonicalSemanticChildren() here, replacing with own code, that respects NodeDescriptors + for (Iterator<AcoreNodeDescriptor> it = childDescriptors.iterator(); it.hasNext();) + { + AcoreNodeDescriptor next = it.next(); + if (!semanticChildren.contains(next.getModelElement())) + { + it.remove(); + } + } + ArrayList<CreateViewRequest.ViewDescriptor> viewDescriptors = new ArrayList<CreateViewRequest.ViewDescriptor>( + childDescriptors.size()); + for (Iterator<AcoreNodeDescriptor> it = childDescriptors.iterator(); it.hasNext();) + { + AcoreNodeDescriptor next = it.next(); + String hint = AcoreVisualIDRegistry.getType(next.getVisualID()); + IAdaptable elementAdapter = new CanonicalElementAdapter(next.getModelElement(), hint); + viewDescriptors.add(new CreateViewRequest.ViewDescriptor(elementAdapter, Node.class, hint, ViewUtil.APPEND, + false, host().getDiagramPreferencesHint())); + } + // + CreateViewRequest request = getCreateViewRequest(viewDescriptors); + Command cmd = getCreateViewCommand(request); + if (cmd != null && cmd.canExecute()) + { + SetViewMutabilityCommand.makeMutable(new EObjectAdapter(host().getNotationView())).execute(); + executeCommand(cmd); + createdViews.addAll((List<IAdaptable>)request.getNewObject()); + } + if (changed || createdViews.size() > 0) + { + postProcessRefreshSemantic(createdViews); + } + Collection<IAdaptable> createdConnectionViews = refreshConnections(); + + if (createdViews.size() > 1) + { + // perform a layout of the container + DeferredLayoutCommand layoutCmd = new DeferredLayoutCommand(host().getEditingDomain(), createdViews, host()); + executeCommand(new ICommandProxy(layoutCmd)); + } + + createdViews.addAll(createdConnectionViews); + makeViewsImmutable(createdViews); + } + + /** + * @generated + */ + private Diagram getDiagram() + { + return ((View)getHost().getModel()).getDiagram(); + } + + /** + * @generated + */ + private Collection<IAdaptable> refreshConnections() + { + Map<EObject, View> domain2NotationMap = new HashMap<EObject, View>(); + Collection<AcoreLinkDescriptor> linkDescriptors = collectAllLinks(getDiagram(), domain2NotationMap); + Collection existingLinks = new LinkedList(getDiagram().getEdges()); + for (Iterator linksIterator = existingLinks.iterator(); linksIterator.hasNext();) + { + Edge nextDiagramLink = (Edge)linksIterator.next(); + int diagramLinkVisualID = AcoreVisualIDRegistry.getVisualID(nextDiagramLink); + if (diagramLinkVisualID == -1) + { + if (nextDiagramLink.getSource() != null && nextDiagramLink.getTarget() != null) + { + linksIterator.remove(); + } + continue; + } + EObject diagramLinkObject = nextDiagramLink.getElement(); + EObject diagramLinkSrc = nextDiagramLink.getSource().getElement(); + EObject diagramLinkDst = nextDiagramLink.getTarget().getElement(); + for (Iterator<AcoreLinkDescriptor> linkDescriptorsIterator = linkDescriptors.iterator(); linkDescriptorsIterator + .hasNext();) + { + AcoreLinkDescriptor nextLinkDescriptor = linkDescriptorsIterator.next(); + if (diagramLinkObject == nextLinkDescriptor.getModelElement() + && diagramLinkSrc == nextLinkDescriptor.getSource() + && diagramLinkDst == nextLinkDescriptor.getDestination() + && diagramLinkVisualID == nextLinkDescriptor.getVisualID()) + { + linksIterator.remove(); + linkDescriptorsIterator.remove(); + break; + } + } + } + deleteViews(existingLinks.iterator()); + return createConnections(linkDescriptors, domain2NotationMap); + } + + /** + * @generated + */ + private Collection<AcoreLinkDescriptor> collectAllLinks(View view, Map<EObject, View> domain2NotationMap) + { + if (!ACoreRootEditPart.MODEL_ID.equals(AcoreVisualIDRegistry.getModelID(view))) + { + return Collections.emptyList(); + } + LinkedList<AcoreLinkDescriptor> result = new LinkedList<AcoreLinkDescriptor>(); + switch (AcoreVisualIDRegistry.getVisualID(view)) + { + case ACoreRootEditPart.VISUAL_ID: + { + if (!domain2NotationMap.containsKey(view.getElement())) + { + result.addAll(AcoreDiagramUpdater.getACoreRoot_1000ContainedLinks(view)); + } + if (!domain2NotationMap.containsKey(view.getElement()) || view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$ + domain2NotationMap.put(view.getElement(), view); + } + break; + } + case AInterfaceEditPart.VISUAL_ID: + { + if (!domain2NotationMap.containsKey(view.getElement())) + { + result.addAll(AcoreDiagramUpdater.getAInterface_2001ContainedLinks(view)); + } + if (!domain2NotationMap.containsKey(view.getElement()) || view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$ + domain2NotationMap.put(view.getElement(), view); + } + break; + } + case AClassEditPart.VISUAL_ID: + { + if (!domain2NotationMap.containsKey(view.getElement())) + { + result.addAll(AcoreDiagramUpdater.getAClass_2002ContainedLinks(view)); + } + if (!domain2NotationMap.containsKey(view.getElement()) || view.getEAnnotation("Shortcut") == null) { //$NON-NLS-1$ + domain2NotationMap.put(view.getElement(), view); + } + break; + } + } + for (Iterator children = view.getChildren().iterator(); children.hasNext();) + { + result.addAll(collectAllLinks((View)children.next(), domain2NotationMap)); + } + for (Iterator edges = view.getSourceEdges().iterator(); edges.hasNext();) + { + result.addAll(collectAllLinks((View)edges.next(), domain2NotationMap)); + } + return result; + } + + /** + * @generated + */ + private Collection<IAdaptable> createConnections(Collection<AcoreLinkDescriptor> linkDescriptors, + Map<EObject, View> domain2NotationMap) + { + LinkedList<IAdaptable> adapters = new LinkedList<IAdaptable>(); + for (Iterator<AcoreLinkDescriptor> it = linkDescriptors.iterator(); it.hasNext();) + { + AcoreLinkDescriptor nextLinkDescriptor = it.next(); + EditPart sourceEditPart = getEditPart(nextLinkDescriptor.getSource(), domain2NotationMap); + EditPart targetEditPart = getEditPart(nextLinkDescriptor.getDestination(), domain2NotationMap); + if (sourceEditPart == null || targetEditPart == null) + { + continue; + } + CreateConnectionViewRequest.ConnectionViewDescriptor descriptor = new CreateConnectionViewRequest.ConnectionViewDescriptor( + nextLinkDescriptor.getSemanticAdapter(), String.valueOf(nextLinkDescriptor.getVisualID()), ViewUtil.APPEND, + false, ((IGraphicalEditPart)getHost()).getDiagramPreferencesHint()); + CreateConnectionViewRequest ccr = new CreateConnectionViewRequest(descriptor); + ccr.setType(RequestConstants.REQ_CONNECTION_START); + ccr.setSourceEditPart(sourceEditPart); + sourceEditPart.getCommand(ccr); + ccr.setTargetEditPart(targetEditPart); + ccr.setType(RequestConstants.REQ_CONNECTION_END); + Command cmd = targetEditPart.getCommand(ccr); + if (cmd != null && cmd.canExecute()) + { + executeCommand(cmd); + IAdaptable viewAdapter = (IAdaptable)ccr.getNewObject(); + if (viewAdapter != null) + { + adapters.add(viewAdapter); + } + } + } + return adapters; + } + + /** + * @generated + */ + private EditPart getEditPart(EObject domainModelElement, Map<EObject, View> domain2NotationMap) + { + View view = (View)domain2NotationMap.get(domainModelElement); + if (view != null) + { + return (EditPart)getHost().getViewer().getEditPartRegistry().get(view); + } + return null; + } +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/ACoreRootItemSemanticEditPolicy.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/ACoreRootItemSemanticEditPolicy.java new file mode 100644 index 0000000000..b9527ecdc5 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/ACoreRootItemSemanticEditPolicy.java @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies; + +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.commands.AClassCreateCommand; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.commands.AInterfaceCreateCommand; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.AcoreElementTypes; +import org.eclipse.emf.transaction.TransactionalEditingDomain; +import org.eclipse.gef.commands.Command; +import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; +import org.eclipse.gmf.runtime.emf.commands.core.commands.DuplicateEObjectsCommand; +import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.DuplicateElementsRequest; + +/** + * @generated + */ +public class ACoreRootItemSemanticEditPolicy extends AcoreBaseItemSemanticEditPolicy +{ + + /** + * @generated + */ + public ACoreRootItemSemanticEditPolicy() + { + super(AcoreElementTypes.ACoreRoot_1000); + } + + /** + * @generated + */ + protected Command getCreateCommand(CreateElementRequest req) + { + if (AcoreElementTypes.AInterface_2001 == req.getElementType()) + { + return getGEFWrapper(new AInterfaceCreateCommand(req)); + } + if (AcoreElementTypes.AClass_2002 == req.getElementType()) + { + return getGEFWrapper(new AClassCreateCommand(req)); + } + return super.getCreateCommand(req); + } + + /** + * @generated + */ + protected Command getDuplicateCommand(DuplicateElementsRequest req) + { + TransactionalEditingDomain editingDomain = ((IGraphicalEditPart)getHost()).getEditingDomain(); + return getGEFWrapper(new DuplicateAnythingCommand(editingDomain, req)); + } + + /** + * @generated + */ + private static class DuplicateAnythingCommand extends DuplicateEObjectsCommand + { + + /** + * @generated + */ + public DuplicateAnythingCommand(TransactionalEditingDomain editingDomain, DuplicateElementsRequest req) + { + super(editingDomain, req.getLabel(), req.getElementsToBeDuplicated(), req.getAllDuplicatedElementsMap()); + } + + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AInterfaceAAttributeInterfaceCompartmentCanonicalEditPolicy.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AInterfaceAAttributeInterfaceCompartmentCanonicalEditPolicy.java new file mode 100644 index 0000000000..141a755943 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AInterfaceAAttributeInterfaceCompartmentCanonicalEditPolicy.java @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies; + +import java.util.Collection; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + +import org.eclipse.emf.cdo.dawn.examples.acore.AcorePackage; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AAttributeEditPart; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreDiagramUpdater; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreNodeDescriptor; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreVisualIDRegistry; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy; +import org.eclipse.gmf.runtime.notation.View; + +/** + * @generated + */ +public class AInterfaceAAttributeInterfaceCompartmentCanonicalEditPolicy extends CanonicalEditPolicy +{ + + /** + * @generated + */ + protected List getSemanticChildrenList() + { + View viewObject = (View)getHost().getModel(); + LinkedList<EObject> result = new LinkedList<EObject>(); + List<AcoreNodeDescriptor> childDescriptors = AcoreDiagramUpdater + .getAInterfaceAAttributeInterfaceCompartment_7001SemanticChildren(viewObject); + for (Iterator<AcoreNodeDescriptor> it = childDescriptors.iterator(); it.hasNext();) + { + AcoreNodeDescriptor d = it.next(); + result.add(d.getModelElement()); + } + return result; + } + + /** + * @generated + */ + protected boolean isOrphaned(Collection semanticChildren, final View view) + { + int visualID = AcoreVisualIDRegistry.getVisualID(view); + switch (visualID) + { + case AAttributeEditPart.VISUAL_ID: + if (!semanticChildren.contains(view.getElement())) + { + return true; + } + } + return false; + } + + /** + * @generated + */ + protected EStructuralFeature getFeatureToSynchronize() + { + return AcorePackage.eINSTANCE.getABasicClass_Attributes(); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AInterfaceAAttributeInterfaceCompartmentItemSemanticEditPolicy.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AInterfaceAAttributeInterfaceCompartmentItemSemanticEditPolicy.java new file mode 100644 index 0000000000..4e45637021 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AInterfaceAAttributeInterfaceCompartmentItemSemanticEditPolicy.java @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies; + +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.commands.AAttributeCreateCommand; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.AcoreElementTypes; +import org.eclipse.gef.commands.Command; +import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; + +/** + * @generated + */ +public class AInterfaceAAttributeInterfaceCompartmentItemSemanticEditPolicy extends AcoreBaseItemSemanticEditPolicy +{ + + /** + * @generated + */ + public AInterfaceAAttributeInterfaceCompartmentItemSemanticEditPolicy() + { + super(AcoreElementTypes.AInterface_2001); + } + + /** + * @generated + */ + protected Command getCreateCommand(CreateElementRequest req) + { + if (AcoreElementTypes.AAttribute_3001 == req.getElementType()) + { + return getGEFWrapper(new AAttributeCreateCommand(req)); + } + return super.getCreateCommand(req); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AInterfaceAOperationInterfaceCompartmentCanonicalEditPolicy.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AInterfaceAOperationInterfaceCompartmentCanonicalEditPolicy.java new file mode 100644 index 0000000000..e4662c9fdb --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AInterfaceAOperationInterfaceCompartmentCanonicalEditPolicy.java @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies; + +import java.util.Collection; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + +import org.eclipse.emf.cdo.dawn.examples.acore.AcorePackage; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AOperationEditPart; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreDiagramUpdater; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreNodeDescriptor; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreVisualIDRegistry; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.CanonicalEditPolicy; +import org.eclipse.gmf.runtime.notation.View; + +/** + * @generated + */ +public class AInterfaceAOperationInterfaceCompartmentCanonicalEditPolicy extends CanonicalEditPolicy +{ + + /** + * @generated + */ + protected List getSemanticChildrenList() + { + View viewObject = (View)getHost().getModel(); + LinkedList<EObject> result = new LinkedList<EObject>(); + List<AcoreNodeDescriptor> childDescriptors = AcoreDiagramUpdater + .getAInterfaceAOperationInterfaceCompartment_7002SemanticChildren(viewObject); + for (Iterator<AcoreNodeDescriptor> it = childDescriptors.iterator(); it.hasNext();) + { + AcoreNodeDescriptor d = it.next(); + result.add(d.getModelElement()); + } + return result; + } + + /** + * @generated + */ + protected boolean isOrphaned(Collection semanticChildren, final View view) + { + int visualID = AcoreVisualIDRegistry.getVisualID(view); + switch (visualID) + { + case AOperationEditPart.VISUAL_ID: + if (!semanticChildren.contains(view.getElement())) + { + return true; + } + } + return false; + } + + /** + * @generated + */ + protected EStructuralFeature getFeatureToSynchronize() + { + return AcorePackage.eINSTANCE.getABasicClass_Operations(); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AInterfaceAOperationInterfaceCompartmentItemSemanticEditPolicy.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AInterfaceAOperationInterfaceCompartmentItemSemanticEditPolicy.java new file mode 100644 index 0000000000..678a84f06b --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AInterfaceAOperationInterfaceCompartmentItemSemanticEditPolicy.java @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies; + +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.commands.AOperationCreateCommand; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.AcoreElementTypes; +import org.eclipse.gef.commands.Command; +import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; + +/** + * @generated + */ +public class AInterfaceAOperationInterfaceCompartmentItemSemanticEditPolicy extends AcoreBaseItemSemanticEditPolicy +{ + + /** + * @generated + */ + public AInterfaceAOperationInterfaceCompartmentItemSemanticEditPolicy() + { + super(AcoreElementTypes.AInterface_2001); + } + + /** + * @generated + */ + protected Command getCreateCommand(CreateElementRequest req) + { + if (AcoreElementTypes.AOperation_3002 == req.getElementType()) + { + return getGEFWrapper(new AOperationCreateCommand(req)); + } + return super.getCreateCommand(req); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AInterfaceItemSemanticEditPolicy.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AInterfaceItemSemanticEditPolicy.java new file mode 100644 index 0000000000..6669573eba --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AInterfaceItemSemanticEditPolicy.java @@ -0,0 +1,183 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies; + +import java.util.Iterator; + +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.commands.AClassImplementedInterfacesCreateCommand; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.commands.AClassImplementedInterfacesReorientCommand; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AAttributeEditPart; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AClassImplementedInterfacesEditPart; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AInterfaceAAttributeInterfaceCompartmentEditPart; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AInterfaceAOperationInterfaceCompartmentEditPart; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.parts.AOperationEditPart; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreVisualIDRegistry; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.AcoreElementTypes; +import org.eclipse.emf.ecore.EAnnotation; +import org.eclipse.gef.commands.Command; +import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand; +import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand; +import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand; +import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; +import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyReferenceCommand; +import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyReferenceRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientReferenceRelationshipRequest; +import org.eclipse.gmf.runtime.notation.Edge; +import org.eclipse.gmf.runtime.notation.Node; +import org.eclipse.gmf.runtime.notation.View; + +/** + * @generated + */ +public class AInterfaceItemSemanticEditPolicy extends AcoreBaseItemSemanticEditPolicy +{ + + /** + * @generated + */ + public AInterfaceItemSemanticEditPolicy() + { + super(AcoreElementTypes.AInterface_2001); + } + + /** + * @generated + */ + protected Command getDestroyElementCommand(DestroyElementRequest req) + { + View view = (View)getHost().getModel(); + CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(getEditingDomain(), null); + cmd.setTransactionNestingEnabled(false); + for (Iterator it = view.getTargetEdges().iterator(); it.hasNext();) + { + Edge incomingLink = (Edge)it.next(); + if (AcoreVisualIDRegistry.getVisualID(incomingLink) == AClassImplementedInterfacesEditPart.VISUAL_ID) + { + DestroyReferenceRequest r = new DestroyReferenceRequest(incomingLink.getSource().getElement(), null, + incomingLink.getTarget().getElement(), false); + cmd.add(new DestroyReferenceCommand(r)); + cmd.add(new DeleteCommand(getEditingDomain(), incomingLink)); + continue; + } + } + EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ + if (annotation == null) + { + // there are indirectly referenced children, need extra commands: false + addDestroyChildNodesCommand(cmd); + addDestroyShortcutsCommand(cmd, view); + // delete host element + cmd.add(new DestroyElementCommand(req)); + } + else + { + cmd.add(new DeleteCommand(getEditingDomain(), view)); + } + return getGEFWrapper(cmd.reduce()); + } + + /** + * @generated + */ + private void addDestroyChildNodesCommand(ICompositeCommand cmd) + { + View view = (View)getHost().getModel(); + for (Iterator nit = view.getChildren().iterator(); nit.hasNext();) + { + Node node = (Node)nit.next(); + switch (AcoreVisualIDRegistry.getVisualID(node)) + { + case AInterfaceAAttributeInterfaceCompartmentEditPart.VISUAL_ID: + for (Iterator cit = node.getChildren().iterator(); cit.hasNext();) + { + Node cnode = (Node)cit.next(); + switch (AcoreVisualIDRegistry.getVisualID(cnode)) + { + case AAttributeEditPart.VISUAL_ID: + cmd.add(new DestroyElementCommand(new DestroyElementRequest(getEditingDomain(), cnode.getElement(), false))); // directlyOwned: true + // don't need explicit deletion of cnode as parent's view deletion would clean child views as well + // cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode)); + break; + } + } + break; + case AInterfaceAOperationInterfaceCompartmentEditPart.VISUAL_ID: + for (Iterator cit = node.getChildren().iterator(); cit.hasNext();) + { + Node cnode = (Node)cit.next(); + switch (AcoreVisualIDRegistry.getVisualID(cnode)) + { + case AOperationEditPart.VISUAL_ID: + cmd.add(new DestroyElementCommand(new DestroyElementRequest(getEditingDomain(), cnode.getElement(), false))); // directlyOwned: true + // don't need explicit deletion of cnode as parent's view deletion would clean child views as well + // cmd.add(new org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand(getEditingDomain(), cnode)); + break; + } + } + break; + } + } + } + + /** + * @generated + */ + protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) + { + Command command = req.getTarget() == null ? getStartCreateRelationshipCommand(req) + : getCompleteCreateRelationshipCommand(req); + return command != null ? command : super.getCreateRelationshipCommand(req); + } + + /** + * @generated + */ + protected Command getStartCreateRelationshipCommand(CreateRelationshipRequest req) + { + if (AcoreElementTypes.AClassImplementedInterfaces_4002 == req.getElementType()) + { + return null; + } + return null; + } + + /** + * @generated + */ + protected Command getCompleteCreateRelationshipCommand(CreateRelationshipRequest req) + { + if (AcoreElementTypes.AClassImplementedInterfaces_4002 == req.getElementType()) + { + return getGEFWrapper(new AClassImplementedInterfacesCreateCommand(req, req.getSource(), req.getTarget())); + } + return null; + } + + /** + * Returns command to reorient EReference based link. New link target or source + * should be the domain model element associated with this node. + * + * @generated + */ + protected Command getReorientReferenceRelationshipCommand(ReorientReferenceRelationshipRequest req) + { + switch (getVisualID(req)) + { + case AClassImplementedInterfacesEditPart.VISUAL_ID: + return getGEFWrapper(new AClassImplementedInterfacesReorientCommand(req)); + } + return super.getReorientReferenceRelationshipCommand(req); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AOperation2ItemSemanticEditPolicy.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AOperation2ItemSemanticEditPolicy.java new file mode 100644 index 0000000000..d0921cadb0 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AOperation2ItemSemanticEditPolicy.java @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies; + +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.AcoreElementTypes; +import org.eclipse.emf.ecore.EAnnotation; +import org.eclipse.gef.commands.Command; +import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand; +import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand; +import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; +import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; +import org.eclipse.gmf.runtime.notation.View; + +/** + * @generated + */ +public class AOperation2ItemSemanticEditPolicy extends AcoreBaseItemSemanticEditPolicy +{ + + /** + * @generated + */ + public AOperation2ItemSemanticEditPolicy() + { + super(AcoreElementTypes.AOperation_3004); + } + + /** + * @generated + */ + protected Command getDestroyElementCommand(DestroyElementRequest req) + { + View view = (View)getHost().getModel(); + CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(getEditingDomain(), null); + cmd.setTransactionNestingEnabled(false); + EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ + if (annotation == null) + { + // there are indirectly referenced children, need extra commands: false + addDestroyShortcutsCommand(cmd, view); + // delete host element + cmd.add(new DestroyElementCommand(req)); + } + else + { + cmd.add(new DeleteCommand(getEditingDomain(), view)); + } + return getGEFWrapper(cmd.reduce()); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AOperationItemSemanticEditPolicy.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AOperationItemSemanticEditPolicy.java new file mode 100644 index 0000000000..e78cdc177b --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AOperationItemSemanticEditPolicy.java @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies; + +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.AcoreElementTypes; +import org.eclipse.emf.ecore.EAnnotation; +import org.eclipse.gef.commands.Command; +import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand; +import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand; +import org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand; +import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; +import org.eclipse.gmf.runtime.notation.View; + +/** + * @generated + */ +public class AOperationItemSemanticEditPolicy extends AcoreBaseItemSemanticEditPolicy +{ + + /** + * @generated + */ + public AOperationItemSemanticEditPolicy() + { + super(AcoreElementTypes.AOperation_3002); + } + + /** + * @generated + */ + protected Command getDestroyElementCommand(DestroyElementRequest req) + { + View view = (View)getHost().getModel(); + CompositeTransactionalCommand cmd = new CompositeTransactionalCommand(getEditingDomain(), null); + cmd.setTransactionNestingEnabled(false); + EAnnotation annotation = view.getEAnnotation("Shortcut"); //$NON-NLS-1$ + if (annotation == null) + { + // there are indirectly referenced children, need extra commands: false + addDestroyShortcutsCommand(cmd, view); + // delete host element + cmd.add(new DestroyElementCommand(req)); + } + else + { + cmd.add(new DeleteCommand(getEditingDomain(), view)); + } + return getGEFWrapper(cmd.reduce()); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AcoreBaseItemSemanticEditPolicy.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AcoreBaseItemSemanticEditPolicy.java new file mode 100644 index 0000000000..94789ea680 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AcoreBaseItemSemanticEditPolicy.java @@ -0,0 +1,470 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies; + +import java.util.Iterator; + +import org.eclipse.emf.cdo.dawn.examples.acore.AClass; +import org.eclipse.emf.cdo.dawn.examples.acore.AInterface; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.helpers.AcoreBaseEditHelper; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreVisualIDRegistry; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.providers.AcoreElementTypes; +import org.eclipse.emf.transaction.TransactionalEditingDomain; +import org.eclipse.gef.Request; +import org.eclipse.gef.commands.Command; +import org.eclipse.gef.commands.UnexecutableCommand; +import org.eclipse.gef.requests.ReconnectRequest; +import org.eclipse.gmf.runtime.common.core.command.ICommand; +import org.eclipse.gmf.runtime.common.core.command.ICompositeCommand; +import org.eclipse.gmf.runtime.diagram.core.commands.DeleteCommand; +import org.eclipse.gmf.runtime.diagram.ui.commands.CommandProxy; +import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy; +import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.SemanticEditPolicy; +import org.eclipse.gmf.runtime.emf.commands.core.command.CompositeTransactionalCommand; +import org.eclipse.gmf.runtime.emf.type.core.IElementType; +import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.CreateRelationshipRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyReferenceRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.DuplicateElementsRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.GetEditContextRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.IEditCommandRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.MoveRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientReferenceRelationshipRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.ReorientRelationshipRequest; +import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest; +import org.eclipse.gmf.runtime.notation.View; + +/** + * @generated + */ +public class AcoreBaseItemSemanticEditPolicy extends SemanticEditPolicy +{ + + /** + * Extended request data key to hold editpart visual id. + * @generated + */ + public static final String VISUAL_ID_KEY = "visual_id"; //$NON-NLS-1$ + + /** + * @generated + */ + private final IElementType myElementType; + + /** + * @generated + */ + protected AcoreBaseItemSemanticEditPolicy(IElementType elementType) + { + myElementType = elementType; + } + + /** + * Extended request data key to hold editpart visual id. + * Add visual id of edited editpart to extended data of the request + * so command switch can decide what kind of diagram element is being edited. + * It is done in those cases when it's not possible to deduce diagram + * element kind from domain element. + * + * @generated + */ + public Command getCommand(Request request) + { + if (request instanceof ReconnectRequest) + { + Object view = ((ReconnectRequest)request).getConnectionEditPart().getModel(); + if (view instanceof View) + { + Integer id = new Integer(AcoreVisualIDRegistry.getVisualID((View)view)); + request.getExtendedData().put(VISUAL_ID_KEY, id); + } + } + return super.getCommand(request); + } + + /** + * Returns visual id from request parameters. + * @generated + */ + protected int getVisualID(IEditCommandRequest request) + { + Object id = request.getParameter(VISUAL_ID_KEY); + return id instanceof Integer ? ((Integer)id).intValue() : -1; + } + + /** + * @generated + */ + protected Command getSemanticCommand(IEditCommandRequest request) + { + IEditCommandRequest completedRequest = completeRequest(request); + Command semanticCommand = getSemanticCommandSwitch(completedRequest); + semanticCommand = getEditHelperCommand(completedRequest, semanticCommand); + if (completedRequest instanceof DestroyRequest) + { + DestroyRequest destroyRequest = (DestroyRequest)completedRequest; + return shouldProceed(destroyRequest) ? addDeleteViewCommand(semanticCommand, destroyRequest) : null; + } + return semanticCommand; + } + + /** + * @generated + */ + protected Command addDeleteViewCommand(Command mainCommand, DestroyRequest completedRequest) + { + Command deleteViewCommand = getGEFWrapper(new DeleteCommand(getEditingDomain(), (View)getHost().getModel())); + return mainCommand == null ? deleteViewCommand : mainCommand.chain(deleteViewCommand); + } + + /** + * @generated + */ + private Command getEditHelperCommand(IEditCommandRequest request, Command editPolicyCommand) + { + if (editPolicyCommand != null) + { + ICommand command = editPolicyCommand instanceof ICommandProxy ? ((ICommandProxy)editPolicyCommand).getICommand() + : new CommandProxy(editPolicyCommand); + request.setParameter(AcoreBaseEditHelper.EDIT_POLICY_COMMAND, command); + } + IElementType requestContextElementType = getContextElementType(request); + request.setParameter(AcoreBaseEditHelper.CONTEXT_ELEMENT_TYPE, requestContextElementType); + ICommand command = requestContextElementType.getEditCommand(request); + request.setParameter(AcoreBaseEditHelper.EDIT_POLICY_COMMAND, null); + request.setParameter(AcoreBaseEditHelper.CONTEXT_ELEMENT_TYPE, null); + if (command != null) + { + if (!(command instanceof CompositeTransactionalCommand)) + { + command = new CompositeTransactionalCommand(getEditingDomain(), command.getLabel()).compose(command); + } + return new ICommandProxy(command); + } + return editPolicyCommand; + } + + /** + * @generated + */ + private IElementType getContextElementType(IEditCommandRequest request) + { + IElementType requestContextElementType = AcoreElementTypes.getElementType(getVisualID(request)); + return requestContextElementType != null ? requestContextElementType : myElementType; + } + + /** + * @generated + */ + protected Command getSemanticCommandSwitch(IEditCommandRequest req) + { + if (req instanceof CreateRelationshipRequest) + { + return getCreateRelationshipCommand((CreateRelationshipRequest)req); + } + else if (req instanceof CreateElementRequest) + { + return getCreateCommand((CreateElementRequest)req); + } + else if (req instanceof ConfigureRequest) + { + return getConfigureCommand((ConfigureRequest)req); + } + else if (req instanceof DestroyElementRequest) + { + return getDestroyElementCommand((DestroyElementRequest)req); + } + else if (req instanceof DestroyReferenceRequest) + { + return getDestroyReferenceCommand((DestroyReferenceRequest)req); + } + else if (req instanceof DuplicateElementsRequest) + { + return getDuplicateCommand((DuplicateElementsRequest)req); + } + else if (req instanceof GetEditContextRequest) + { + return getEditContextCommand((GetEditContextRequest)req); + } + else if (req instanceof MoveRequest) + { + return getMoveCommand((MoveRequest)req); + } + else if (req instanceof ReorientReferenceRelationshipRequest) + { + return getReorientReferenceRelationshipCommand((ReorientReferenceRelationshipRequest)req); + } + else if (req instanceof ReorientRelationshipRequest) + { + return getReorientRelationshipCommand((ReorientRelationshipRequest)req); + } + else if (req instanceof SetRequest) + { + return getSetCommand((SetRequest)req); + } + return null; + } + + /** + * @generated + */ + protected Command getConfigureCommand(ConfigureRequest req) + { + return null; + } + + /** + * @generated + */ + protected Command getCreateRelationshipCommand(CreateRelationshipRequest req) + { + return null; + } + + /** + * @generated + */ + protected Command getCreateCommand(CreateElementRequest req) + { + return null; + } + + /** + * @generated + */ + protected Command getSetCommand(SetRequest req) + { + return null; + } + + /** + * @generated + */ + protected Command getEditContextCommand(GetEditContextRequest req) + { + return null; + } + + /** + * @generated + */ + protected Command getDestroyElementCommand(DestroyElementRequest req) + { + return null; + } + + /** + * @generated + */ + protected Command getDestroyReferenceCommand(DestroyReferenceRequest req) + { + return null; + } + + /** + * @generated + */ + protected Command getDuplicateCommand(DuplicateElementsRequest req) + { + return null; + } + + /** + * @generated + */ + protected Command getMoveCommand(MoveRequest req) + { + return null; + } + + /** + * @generated + */ + protected Command getReorientReferenceRelationshipCommand(ReorientReferenceRelationshipRequest req) + { + return UnexecutableCommand.INSTANCE; + } + + /** + * @generated + */ + protected Command getReorientRelationshipCommand(ReorientRelationshipRequest req) + { + return UnexecutableCommand.INSTANCE; + } + + /** + * @generated + */ + protected final Command getGEFWrapper(ICommand cmd) + { + return new ICommandProxy(cmd); + } + + /** + * Returns editing domain from the host edit part. + * @generated + */ + protected TransactionalEditingDomain getEditingDomain() + { + return ((IGraphicalEditPart)getHost()).getEditingDomain(); + } + + /** + * Clean all shortcuts to the host element from the same diagram + * @generated + */ + protected void addDestroyShortcutsCommand(ICompositeCommand cmd, View view) + { + assert view.getEAnnotation("Shortcut") == null; //$NON-NLS-1$ + for (Iterator it = view.getDiagram().getChildren().iterator(); it.hasNext();) + { + View nextView = (View)it.next(); + if (nextView.getEAnnotation("Shortcut") == null || !nextView.isSetElement() || nextView.getElement() != view.getElement()) { //$NON-NLS-1$ + continue; + } + cmd.add(new DeleteCommand(getEditingDomain(), nextView)); + } + } + + /** + * @generated + */ + public static class LinkConstraints + { + + /** + * @generated + */ + public static boolean canCreateAClassSubClasses_4001(AClass source, AClass target) + { + if (source != null) + { + if (source.getSubClasses().contains(target)) + { + return false; + } + } + + return canExistAClassSubClasses_4001(source, target); + } + + /** + * @generated + */ + public static boolean canCreateAClassImplementedInterfaces_4002(AClass source, AInterface target) + { + if (source != null) + { + if (source.getImplementedInterfaces().contains(target)) + { + return false; + } + } + + return canExistAClassImplementedInterfaces_4002(source, target); + } + + /** + * @generated + */ + public static boolean canCreateAClassAssociations_4003(AClass source, AClass target) + { + if (source != null) + { + if (source.getAssociations().contains(target)) + { + return false; + } + } + + return canExistAClassAssociations_4003(source, target); + } + + /** + * @generated + */ + public static boolean canCreateAClassAggregations_4004(AClass source, AClass target) + { + if (source != null) + { + if (source.getAggregations().contains(target)) + { + return false; + } + } + + return canExistAClassAggregations_4004(source, target); + } + + /** + * @generated + */ + public static boolean canCreateAClassCompositions_4005(AClass source, AClass target) + { + if (source != null) + { + if (source.getCompositions().contains(target)) + { + return false; + } + } + + return canExistAClassCompositions_4005(source, target); + } + + /** + * @generated + */ + public static boolean canExistAClassSubClasses_4001(AClass source, AClass target) + { + return true; + } + + /** + * @generated + */ + public static boolean canExistAClassImplementedInterfaces_4002(AClass source, AInterface target) + { + return true; + } + + /** + * @generated + */ + public static boolean canExistAClassAssociations_4003(AClass source, AClass target) + { + return true; + } + + /** + * @generated + */ + public static boolean canExistAClassAggregations_4004(AClass source, AClass target) + { + return true; + } + + /** + * @generated + */ + public static boolean canExistAClassCompositions_4005(AClass source, AClass target) + { + return true; + } + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AcoreTextNonResizableEditPolicy.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AcoreTextNonResizableEditPolicy.java new file mode 100644 index 0000000000..9c76be610b --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AcoreTextNonResizableEditPolicy.java @@ -0,0 +1,281 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies; + +import java.util.Collections; +import java.util.List; + +import org.eclipse.draw2d.ColorConstants; +import org.eclipse.draw2d.Figure; +import org.eclipse.draw2d.FigureListener; +import org.eclipse.draw2d.Graphics; +import org.eclipse.draw2d.IFigure; +import org.eclipse.draw2d.Label; +import org.eclipse.draw2d.RectangleFigure; +import org.eclipse.draw2d.geometry.Rectangle; +import org.eclipse.gef.GraphicalEditPart; +import org.eclipse.gef.handles.MoveHandle; +import org.eclipse.gmf.runtime.diagram.ui.editpolicies.NonResizableEditPolicyEx; +import org.eclipse.gmf.runtime.diagram.ui.tools.DragEditPartsTrackerEx; +import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel; + +/** + * @generated + */ +public class AcoreTextNonResizableEditPolicy extends NonResizableEditPolicyEx +{ + + /** + * @generated + */ + private IFigure selectionFeedbackFigure; + + /** + * @generated + */ + private IFigure focusFeedbackFigure; + + /** + * @generated + */ + private FigureListener hostPositionListener; + + /** + * @generated + */ + protected void showPrimarySelection() + { + if (getHostFigure() instanceof WrappingLabel) + { + ((WrappingLabel)getHostFigure()).setSelected(true); + ((WrappingLabel)getHostFigure()).setFocus(true); + } + else + { + showSelection(); + showFocus(); + } + } + + /** + * @generated + */ + protected void showSelection() + { + if (getHostFigure() instanceof WrappingLabel) + { + ((WrappingLabel)getHostFigure()).setSelected(true); + ((WrappingLabel)getHostFigure()).setFocus(false); + } + else + { + hideSelection(); + addFeedback(selectionFeedbackFigure = createSelectionFeedbackFigure()); + getHostFigure().addFigureListener(getHostPositionListener()); + refreshSelectionFeedback(); + hideFocus(); + } + } + + /** + * @generated + */ + protected void hideSelection() + { + if (getHostFigure() instanceof WrappingLabel) + { + ((WrappingLabel)getHostFigure()).setSelected(false); + ((WrappingLabel)getHostFigure()).setFocus(false); + } + else + { + if (selectionFeedbackFigure != null) + { + removeFeedback(selectionFeedbackFigure); + getHostFigure().removeFigureListener(getHostPositionListener()); + selectionFeedbackFigure = null; + } + hideFocus(); + } + } + + /** + * @generated + */ + protected void showFocus() + { + if (getHostFigure() instanceof WrappingLabel) + { + ((WrappingLabel)getHostFigure()).setFocus(true); + } + else + { + hideFocus(); + addFeedback(focusFeedbackFigure = createFocusFeedbackFigure()); + refreshFocusFeedback(); + } + } + + /** + * @generated + */ + protected void hideFocus() + { + if (getHostFigure() instanceof WrappingLabel) + { + ((WrappingLabel)getHostFigure()).setFocus(false); + } + else + { + if (focusFeedbackFigure != null) + { + removeFeedback(focusFeedbackFigure); + focusFeedbackFigure = null; + } + } + } + + /** + * @generated + */ + protected Rectangle getFeedbackBounds() + { + Rectangle bounds; + if (getHostFigure() instanceof Label) + { + bounds = ((Label)getHostFigure()).getTextBounds(); + bounds.intersect(getHostFigure().getBounds()); + } + else + { + bounds = getHostFigure().getBounds().getCopy(); + } + getHostFigure().getParent().translateToAbsolute(bounds); + getFeedbackLayer().translateToRelative(bounds); + return bounds; + } + + /** + * @generated + */ + protected IFigure createSelectionFeedbackFigure() + { + if (getHostFigure() instanceof Label) + { + Label feedbackFigure = new Label(); + feedbackFigure.setOpaque(true); + feedbackFigure.setBackgroundColor(ColorConstants.menuBackgroundSelected); + feedbackFigure.setForegroundColor(ColorConstants.menuForegroundSelected); + return feedbackFigure; + } + else + { + RectangleFigure feedbackFigure = new RectangleFigure(); + feedbackFigure.setFill(false); + return feedbackFigure; + } + } + + /** + * @generated + */ + protected IFigure createFocusFeedbackFigure() + { + return new Figure() + { + + protected void paintFigure(Graphics graphics) + { + graphics.drawFocus(getBounds().getResized(-1, -1)); + } + }; + } + + /** + * @generated + */ + protected void updateLabel(Label target) + { + Label source = (Label)getHostFigure(); + target.setText(source.getText()); + target.setTextAlignment(source.getTextAlignment()); + target.setFont(source.getFont()); + } + + /** + * @generated + */ + protected void refreshSelectionFeedback() + { + if (selectionFeedbackFigure != null) + { + if (selectionFeedbackFigure instanceof Label) + { + updateLabel((Label)selectionFeedbackFigure); + selectionFeedbackFigure.setBounds(getFeedbackBounds()); + } + else + { + selectionFeedbackFigure.setBounds(getFeedbackBounds().expand(5, 5)); + } + } + } + + /** + * @generated + */ + protected void refreshFocusFeedback() + { + if (focusFeedbackFigure != null) + { + focusFeedbackFigure.setBounds(getFeedbackBounds()); + } + } + + /** + * @generated + */ + public void refreshFeedback() + { + refreshSelectionFeedback(); + refreshFocusFeedback(); + } + + /** + * @generated + */ + private FigureListener getHostPositionListener() + { + if (hostPositionListener == null) + { + hostPositionListener = new FigureListener() + { + public void figureMoved(IFigure source) + { + refreshFeedback(); + } + }; + } + return hostPositionListener; + } + + /** + * @generated + */ + protected List createSelectionHandles() + { + MoveHandle moveHandle = new MoveHandle((GraphicalEditPart)getHost()); + moveHandle.setBorder(null); + moveHandle.setDragTracker(new DragEditPartsTrackerEx(getHost())); + return Collections.singletonList(moveHandle); + } +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AcoreTextSelectionEditPolicy.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AcoreTextSelectionEditPolicy.java new file mode 100644 index 0000000000..cf7715cb84 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/edit/policies/AcoreTextSelectionEditPolicy.java @@ -0,0 +1,264 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.edit.policies; + +import org.eclipse.draw2d.ColorConstants; +import org.eclipse.draw2d.Figure; +import org.eclipse.draw2d.FigureListener; +import org.eclipse.draw2d.Graphics; +import org.eclipse.draw2d.IFigure; +import org.eclipse.draw2d.Label; +import org.eclipse.draw2d.RectangleFigure; +import org.eclipse.draw2d.geometry.Rectangle; +import org.eclipse.gef.editpolicies.SelectionEditPolicy; +import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel; + +/** + * @generated + */ +public class AcoreTextSelectionEditPolicy extends SelectionEditPolicy +{ + + /** + * @generated + */ + private IFigure selectionFeedbackFigure; + + /** + * @generated + */ + private IFigure focusFeedbackFigure; + + /** + * @generated + */ + private FigureListener hostPositionListener; + + /** + * @generated + */ + protected void showPrimarySelection() + { + if (getHostFigure() instanceof WrappingLabel) + { + ((WrappingLabel)getHostFigure()).setSelected(true); + ((WrappingLabel)getHostFigure()).setFocus(true); + } + else + { + showSelection(); + showFocus(); + } + } + + /** + * @generated + */ + protected void showSelection() + { + if (getHostFigure() instanceof WrappingLabel) + { + ((WrappingLabel)getHostFigure()).setSelected(true); + ((WrappingLabel)getHostFigure()).setFocus(false); + } + else + { + hideSelection(); + addFeedback(selectionFeedbackFigure = createSelectionFeedbackFigure()); + getHostFigure().addFigureListener(getHostPositionListener()); + refreshSelectionFeedback(); + hideFocus(); + } + } + + /** + * @generated + */ + protected void hideSelection() + { + if (getHostFigure() instanceof WrappingLabel) + { + ((WrappingLabel)getHostFigure()).setSelected(false); + ((WrappingLabel)getHostFigure()).setFocus(false); + } + else + { + if (selectionFeedbackFigure != null) + { + removeFeedback(selectionFeedbackFigure); + getHostFigure().removeFigureListener(getHostPositionListener()); + selectionFeedbackFigure = null; + } + hideFocus(); + } + } + + /** + * @generated + */ + protected void showFocus() + { + if (getHostFigure() instanceof WrappingLabel) + { + ((WrappingLabel)getHostFigure()).setFocus(true); + } + else + { + hideFocus(); + addFeedback(focusFeedbackFigure = createFocusFeedbackFigure()); + refreshFocusFeedback(); + } + } + + /** + * @generated + */ + protected void hideFocus() + { + if (getHostFigure() instanceof WrappingLabel) + { + ((WrappingLabel)getHostFigure()).setFocus(false); + } + else + { + if (focusFeedbackFigure != null) + { + removeFeedback(focusFeedbackFigure); + focusFeedbackFigure = null; + } + } + } + + /** + * @generated + */ + protected Rectangle getFeedbackBounds() + { + Rectangle bounds; + if (getHostFigure() instanceof Label) + { + bounds = ((Label)getHostFigure()).getTextBounds(); + bounds.intersect(getHostFigure().getBounds()); + } + else + { + bounds = getHostFigure().getBounds().getCopy(); + } + getHostFigure().getParent().translateToAbsolute(bounds); + getFeedbackLayer().translateToRelative(bounds); + return bounds; + } + + /** + * @generated + */ + protected IFigure createSelectionFeedbackFigure() + { + if (getHostFigure() instanceof Label) + { + Label feedbackFigure = new Label(); + feedbackFigure.setOpaque(true); + feedbackFigure.setBackgroundColor(ColorConstants.menuBackgroundSelected); + feedbackFigure.setForegroundColor(ColorConstants.menuForegroundSelected); + return feedbackFigure; + } + else + { + RectangleFigure feedbackFigure = new RectangleFigure(); + feedbackFigure.setFill(false); + return feedbackFigure; + } + } + + /** + * @generated + */ + protected IFigure createFocusFeedbackFigure() + { + return new Figure() + { + + protected void paintFigure(Graphics graphics) + { + graphics.drawFocus(getBounds().getResized(-1, -1)); + } + }; + } + + /** + * @generated + */ + protected void updateLabel(Label target) + { + Label source = (Label)getHostFigure(); + target.setText(source.getText()); + target.setTextAlignment(source.getTextAlignment()); + target.setFont(source.getFont()); + } + + /** + * @generated + */ + protected void refreshSelectionFeedback() + { + if (selectionFeedbackFigure != null) + { + if (selectionFeedbackFigure instanceof Label) + { + updateLabel((Label)selectionFeedbackFigure); + selectionFeedbackFigure.setBounds(getFeedbackBounds()); + } + else + { + selectionFeedbackFigure.setBounds(getFeedbackBounds().expand(5, 5)); + } + } + } + + /** + * @generated + */ + protected void refreshFocusFeedback() + { + if (focusFeedbackFigure != null) + { + focusFeedbackFigure.setBounds(getFeedbackBounds()); + } + } + + /** + * @generated + */ + public void refreshFeedback() + { + refreshSelectionFeedback(); + refreshFocusFeedback(); + } + + /** + * @generated + */ + private FigureListener getHostPositionListener() + { + if (hostPositionListener == null) + { + hostPositionListener = new FigureListener() + { + public void figureMoved(IFigure source) + { + refreshFeedback(); + } + }; + } + return hostPositionListener; + } +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/navigator/AcoreAbstractNavigatorItem.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/navigator/AcoreAbstractNavigatorItem.java new file mode 100644 index 0000000000..78db1dd7c5 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/navigator/AcoreAbstractNavigatorItem.java @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.navigator; + +import org.eclipse.core.runtime.IAdapterFactory; +import org.eclipse.core.runtime.Platform; +import org.eclipse.core.runtime.PlatformObject; +import org.eclipse.ui.views.properties.tabbed.ITabbedPropertySheetPageContributor; + +/** + * @generated + */ +public abstract class AcoreAbstractNavigatorItem extends PlatformObject +{ + + /** + * @generated + */ + static + { + final Class[] supportedTypes = new Class[] { ITabbedPropertySheetPageContributor.class }; + final ITabbedPropertySheetPageContributor propertySheetPageContributor = new ITabbedPropertySheetPageContributor() + { + public String getContributorId() + { + return "org.eclipse.emf.cdo.dawn.examples.acore.diagram"; //$NON-NLS-1$ + } + }; + Platform.getAdapterManager().registerAdapters(new IAdapterFactory() + { + + public Object getAdapter(Object adaptableObject, Class adapterType) + { + if (adaptableObject instanceof org.eclipse.emf.cdo.dawn.examples.acore.diagram.navigator.AcoreAbstractNavigatorItem + && adapterType == ITabbedPropertySheetPageContributor.class) + { + return propertySheetPageContributor; + } + return null; + } + + public Class[] getAdapterList() + { + return supportedTypes; + } + }, org.eclipse.emf.cdo.dawn.examples.acore.diagram.navigator.AcoreAbstractNavigatorItem.class); + } + + /** + * @generated + */ + private Object myParent; + + /** + * @generated + */ + protected AcoreAbstractNavigatorItem(Object parent) + { + myParent = parent; + } + + /** + * @generated + */ + public Object getParent() + { + return myParent; + } + +} diff --git a/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/navigator/AcoreDomainNavigatorContentProvider.java b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/navigator/AcoreDomainNavigatorContentProvider.java new file mode 100644 index 0000000000..94aefec247 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.dawn.examples.acore.diagram/src/org/eclipse/emf/cdo/dawn/examples/acore/diagram/navigator/AcoreDomainNavigatorContentProvider.java @@ -0,0 +1,262 @@ +/* + * Copyright (c) 2004 - 2010 Eike Stepper (Berlin, Germany). + * 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: + * Martin Fluegge - initial API and implementation + * + */ +package org.eclipse.emf.cdo.dawn.examples.acore.diagram.navigator; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Iterator; + +import org.eclipse.core.resources.IFile; +import org.eclipse.emf.cdo.dawn.examples.acore.diagram.part.AcoreDiagramEditorPlugin; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; +import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider; +import org.eclipse.emf.transaction.TransactionalEditingDomain; +import org.eclipse.emf.workspace.util.WorkspaceSynchronizer; +import org.eclipse.gmf.runtime.emf.core.GMFEditingDomainFactory; +import org.eclipse.jface.viewers.Viewer; +import org.eclipse.ui.IMemento; +import org.eclipse.ui.navigator.ICommonContentExtensionSite; +import org.eclipse.ui.navigator.ICommonContentProvider; + +/** + * @generated + */ +public class AcoreDomainNavigatorContentProvider implements ICommonContentProvider +{ + + /** + * @generated + */ + private AdapterFactoryContentProvider myAdapterFctoryContentProvier; + + /** + * @generated + */ + private static final Object[] EMPTY_ARRAY = new Object[0]; + + /** + * @generated + */ + private Viewer myViewer; + + /** + * @generated + */ + private AdapterFactoryEditingDomain myEditingDomain; + + /** + * @generated + */ + private WorkspaceSynchronizer myWorkspaceS |