diff options
author | Eike Stepper | 2018-09-14 06:29:37 +0000 |
---|---|---|
committer | Eike Stepper | 2018-09-14 06:29:37 +0000 |
commit | 6f6c0b41df2414715db4a345a11fa352c51ca641 (patch) | |
tree | cf5e247e2e731bb0c97de9306c42e6d984db0153 | |
parent | 75dbe9847542d67cbe8d74fcc86ea433481058ca (diff) | |
download | cdo-committers/estepper/model-evolution2.tar.gz cdo-committers/estepper/model-evolution2.tar.xz cdo-committers/estepper/model-evolution2.zip |
[256856] Support model evolutioncommitters/estepper/model-evolution2
https://bugs.eclipse.org/bugs/show_bug.cgi?id=256856
Change-Id: I79cdebb2e7d53caf833466128ad3210d5d2da42e
145 files changed, 25561 insertions, 56 deletions
diff --git a/features/org.eclipse.emf.cdo-feature/feature.xml b/features/org.eclipse.emf.cdo-feature/feature.xml index 5d77738c13..a4ec54f056 100644 --- a/features/org.eclipse.emf.cdo-feature/feature.xml +++ b/features/org.eclipse.emf.cdo-feature/feature.xml @@ -13,7 +13,7 @@ <feature id="org.eclipse.emf.cdo" label="%featureName" - version="4.7.100.qualifier" + version="4.8.0.qualifier" provider-name="%providerName" license-feature="org.eclipse.emf.cdo.license" license-feature-version="0.0.0"> @@ -210,4 +210,25 @@ version="0.0.0" unpack="false"/> + <plugin + id="org.eclipse.emf.cdo.evolution" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.emf.cdo.evolution.edit" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.emf.cdo.evolution.editor" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + </feature> diff --git a/features/org.eclipse.emf.cdo-feature/pom.xml b/features/org.eclipse.emf.cdo-feature/pom.xml index 8d4c20dfd6..7f5062d8b2 100644 --- a/features/org.eclipse.emf.cdo-feature/pom.xml +++ b/features/org.eclipse.emf.cdo-feature/pom.xml @@ -25,7 +25,7 @@ <groupId>org.eclipse.emf.cdo.features</groupId> <artifactId>org.eclipse.emf.cdo</artifactId> - <version>4.7.100-SNAPSHOT</version> + <version>4.8.0-SNAPSHOT</version> <packaging>eclipse-feature</packaging> </project> diff --git a/features/org.eclipse.emf.cdo.all-feature/feature.xml b/features/org.eclipse.emf.cdo.all-feature/feature.xml index 75799dea2d..bfc244a224 100644 --- a/features/org.eclipse.emf.cdo.all-feature/feature.xml +++ b/features/org.eclipse.emf.cdo.all-feature/feature.xml @@ -13,7 +13,7 @@ <feature id="org.eclipse.emf.cdo.all" label="%featureName" - version="4.7.100.qualifier" + version="4.8.0.qualifier" provider-name="%providerName" license-feature="org.eclipse.emf.cdo.license" license-feature-version="0.0.0"> diff --git a/features/org.eclipse.emf.cdo.all-feature/pom.xml b/features/org.eclipse.emf.cdo.all-feature/pom.xml index b6666f2f50..739a80ef75 100644 --- a/features/org.eclipse.emf.cdo.all-feature/pom.xml +++ b/features/org.eclipse.emf.cdo.all-feature/pom.xml @@ -25,7 +25,7 @@ <groupId>org.eclipse.emf.cdo.features</groupId> <artifactId>org.eclipse.emf.cdo.all</artifactId> - <version>4.7.100-SNAPSHOT</version> + <version>4.8.0-SNAPSHOT</version> <packaging>eclipse-feature</packaging> </project> diff --git a/features/org.eclipse.emf.cdo.epp-feature/feature.xml b/features/org.eclipse.emf.cdo.epp-feature/feature.xml index 141597f128..0e1442a523 100644 --- a/features/org.eclipse.emf.cdo.epp-feature/feature.xml +++ b/features/org.eclipse.emf.cdo.epp-feature/feature.xml @@ -12,7 +12,7 @@ <feature id="org.eclipse.emf.cdo.epp" label="%featureName" - version="4.7.100.qualifier" + version="4.8.0.qualifier" provider-name="%providerName" license-feature="org.eclipse.emf.cdo.license" license-feature-version="0.0.0"> diff --git a/features/org.eclipse.emf.cdo.epp-feature/pom.xml b/features/org.eclipse.emf.cdo.epp-feature/pom.xml index c269393855..61d88df4c3 100644 --- a/features/org.eclipse.emf.cdo.epp-feature/pom.xml +++ b/features/org.eclipse.emf.cdo.epp-feature/pom.xml @@ -25,7 +25,7 @@ <groupId>org.eclipse.emf.cdo.features</groupId> <artifactId>org.eclipse.emf.cdo.epp</artifactId> - <version>4.7.100-SNAPSHOT</version> + <version>4.8.0-SNAPSHOT</version> <packaging>eclipse-feature</packaging> </project> diff --git a/features/org.eclipse.emf.cdo.sdk-feature/feature.xml b/features/org.eclipse.emf.cdo.sdk-feature/feature.xml index d8c4b0f462..46031e6b41 100644 --- a/features/org.eclipse.emf.cdo.sdk-feature/feature.xml +++ b/features/org.eclipse.emf.cdo.sdk-feature/feature.xml @@ -12,7 +12,7 @@ <feature id="org.eclipse.emf.cdo.sdk" label="%featureName" - version="5.0.100.qualifier" + version="5.1.0.qualifier" provider-name="%providerName" image="eclipse_update_120.jpg" license-feature="org.eclipse.emf.cdo.license" diff --git a/features/org.eclipse.emf.cdo.sdk-feature/pom.xml b/features/org.eclipse.emf.cdo.sdk-feature/pom.xml index d75aa0cd0c..b9ad5214af 100644 --- a/features/org.eclipse.emf.cdo.sdk-feature/pom.xml +++ b/features/org.eclipse.emf.cdo.sdk-feature/pom.xml @@ -25,7 +25,7 @@ <groupId>org.eclipse.emf.cdo.features</groupId> <artifactId>org.eclipse.emf.cdo.sdk</artifactId> - <version>5.0.100-SNAPSHOT</version> + <version>5.1.0-SNAPSHOT</version> <packaging>eclipse-feature</packaging> </project> diff --git a/features/org.eclipse.emf.cdo.server.embedded-feature/feature.xml b/features/org.eclipse.emf.cdo.server.embedded-feature/feature.xml index a6c80258d6..dfbd13339c 100644 --- a/features/org.eclipse.emf.cdo.server.embedded-feature/feature.xml +++ b/features/org.eclipse.emf.cdo.server.embedded-feature/feature.xml @@ -12,7 +12,7 @@ <feature id="org.eclipse.emf.cdo.server.embedded" label="%featureName" - version="4.7.100.qualifier" + version="4.8.0.qualifier" provider-name="%providerName" image="eclipse_update_120.jpg" license-feature="org.eclipse.emf.cdo.license" diff --git a/features/org.eclipse.emf.cdo.server.embedded-feature/pom.xml b/features/org.eclipse.emf.cdo.server.embedded-feature/pom.xml index b13684a8d3..4b597ea1b2 100644 --- a/features/org.eclipse.emf.cdo.server.embedded-feature/pom.xml +++ b/features/org.eclipse.emf.cdo.server.embedded-feature/pom.xml @@ -25,7 +25,7 @@ <groupId>org.eclipse.emf.cdo.features</groupId> <artifactId>org.eclipse.emf.cdo.server.embedded</artifactId> - <version>4.7.100-SNAPSHOT</version> + <version>4.8.0-SNAPSHOT</version> <packaging>eclipse-feature</packaging> </project> diff --git a/features/org.eclipse.net4j-feature/feature.xml b/features/org.eclipse.net4j-feature/feature.xml index 6f40db799f..b856b933fc 100644 --- a/features/org.eclipse.net4j-feature/feature.xml +++ b/features/org.eclipse.net4j-feature/feature.xml @@ -12,7 +12,7 @@ <feature id="org.eclipse.net4j" label="%featureName" - version="4.7.0.qualifier" + version="4.8.0.qualifier" provider-name="%providerName" image="eclipse_update_120.jpg" license-feature="org.eclipse.emf.cdo.license" diff --git a/features/org.eclipse.net4j-feature/pom.xml b/features/org.eclipse.net4j-feature/pom.xml index 80e2745a34..a5667f7034 100644 --- a/features/org.eclipse.net4j-feature/pom.xml +++ b/features/org.eclipse.net4j-feature/pom.xml @@ -25,7 +25,7 @@ <groupId>org.eclipse.emf.cdo.features</groupId> <artifactId>org.eclipse.net4j</artifactId> - <version>4.7.0-SNAPSHOT</version> + <version>4.8.0-SNAPSHOT</version> <packaging>eclipse-feature</packaging> </project> diff --git a/features/org.eclipse.net4j.db-feature/feature.xml b/features/org.eclipse.net4j.db-feature/feature.xml index f960055b96..76569d2a4e 100644 --- a/features/org.eclipse.net4j.db-feature/feature.xml +++ b/features/org.eclipse.net4j.db-feature/feature.xml @@ -12,7 +12,7 @@ <feature id="org.eclipse.net4j.db" label="%featureName" - version="4.7.0.qualifier" + version="4.8.0.qualifier" provider-name="%providerName" license-feature="org.eclipse.emf.cdo.license" license-feature-version="0.0.0"> diff --git a/features/org.eclipse.net4j.db-feature/pom.xml b/features/org.eclipse.net4j.db-feature/pom.xml index 230e5a205d..b13d62102c 100644 --- a/features/org.eclipse.net4j.db-feature/pom.xml +++ b/features/org.eclipse.net4j.db-feature/pom.xml @@ -25,7 +25,7 @@ <groupId>org.eclipse.emf.cdo.features</groupId> <artifactId>org.eclipse.net4j.db</artifactId> - <version>4.7.0-SNAPSHOT</version> + <version>4.8.0-SNAPSHOT</version> <packaging>eclipse-feature</packaging> </project> diff --git a/features/org.eclipse.net4j.sdk-feature/feature.xml b/features/org.eclipse.net4j.sdk-feature/feature.xml index aa8ac68352..7c297fc80c 100644 --- a/features/org.eclipse.net4j.sdk-feature/feature.xml +++ b/features/org.eclipse.net4j.sdk-feature/feature.xml @@ -12,7 +12,7 @@ <feature id="org.eclipse.net4j.sdk" label="%featureName" - version="4.7.0.qualifier" + version="4.8.0.qualifier" provider-name="%providerName" image="eclipse_update_120.jpg" license-feature="org.eclipse.emf.cdo.license" diff --git a/features/org.eclipse.net4j.sdk-feature/pom.xml b/features/org.eclipse.net4j.sdk-feature/pom.xml index 77651a635f..be36e4988b 100644 --- a/features/org.eclipse.net4j.sdk-feature/pom.xml +++ b/features/org.eclipse.net4j.sdk-feature/pom.xml @@ -25,7 +25,7 @@ <groupId>org.eclipse.emf.cdo.features</groupId> <artifactId>org.eclipse.net4j.sdk</artifactId> - <version>4.7.0-SNAPSHOT</version> + <version>4.8.0-SNAPSHOT</version> <packaging>eclipse-feature</packaging> </project> diff --git a/features/org.eclipse.net4j.util-feature/feature.xml b/features/org.eclipse.net4j.util-feature/feature.xml index 820f7858c7..07d9807891 100644 --- a/features/org.eclipse.net4j.util-feature/feature.xml +++ b/features/org.eclipse.net4j.util-feature/feature.xml @@ -12,7 +12,7 @@ <feature id="org.eclipse.net4j.util" label="%featureName" - version="4.7.0.qualifier" + version="4.8.0.qualifier" provider-name="%providerName" image="eclipse_update_120.jpg" license-feature="org.eclipse.emf.cdo.license" diff --git a/features/org.eclipse.net4j.util-feature/pom.xml b/features/org.eclipse.net4j.util-feature/pom.xml index b52ebfeefe..8b19a4219e 100644 --- a/features/org.eclipse.net4j.util-feature/pom.xml +++ b/features/org.eclipse.net4j.util-feature/pom.xml @@ -25,7 +25,7 @@ <groupId>org.eclipse.emf.cdo.features</groupId> <artifactId>org.eclipse.net4j.util</artifactId> - <version>4.7.0-SNAPSHOT</version> + <version>4.8.0-SNAPSHOT</version> <packaging>eclipse-feature</packaging> </project> diff --git a/features/org.eclipse.net4j.util.ui-feature/feature.xml b/features/org.eclipse.net4j.util.ui-feature/feature.xml index 22e6c16fa3..b3a96a7219 100644 --- a/features/org.eclipse.net4j.util.ui-feature/feature.xml +++ b/features/org.eclipse.net4j.util.ui-feature/feature.xml @@ -12,7 +12,7 @@ <feature id="org.eclipse.net4j.util.ui" label="%featureName" - version="4.7.0.qualifier" + version="4.8.0.qualifier" provider-name="%providerName" image="eclipse_update_120.jpg" license-feature="org.eclipse.emf.cdo.license" diff --git a/features/org.eclipse.net4j.util.ui-feature/pom.xml b/features/org.eclipse.net4j.util.ui-feature/pom.xml index 6e2eabd23c..f1ae447402 100644 --- a/features/org.eclipse.net4j.util.ui-feature/pom.xml +++ b/features/org.eclipse.net4j.util.ui-feature/pom.xml @@ -25,7 +25,7 @@ <groupId>org.eclipse.emf.cdo.features</groupId> <artifactId>org.eclipse.net4j.util.ui</artifactId> - <version>4.7.0-SNAPSHOT</version> + <version>4.8.0-SNAPSHOT</version> <packaging>eclipse-feature</packaging> </project> diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/.classpath b/plugins/org.eclipse.emf.cdo.evolution.edit/.classpath new file mode 100644 index 0000000000..64c5e31b7a --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/.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.evolution.edit/.project b/plugins/org.eclipse.emf.cdo.evolution.edit/.project new file mode 100644 index 0000000000..4ead2df722 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/.project @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>org.eclipse.emf.cdo.evolution.edit</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.api.tools.apiAnalysisBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.oomph.version.VersionBuilder</name> + <arguments> + <dictionary> + <key>check.maven.pom</key> + <value>true</value> + </dictionary> + <dictionary> + <key>ignore.lower.bound.dependency.ranges</key> + <value>true</value> + </dictionary> + <dictionary> + <key>release.path</key> + <value>/org.eclipse.emf.cdo.releng/versions/release.xml</value> + </dictionary> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature> + <nature>org.eclipse.oomph.version.VersionNature</nature> + </natures> + <filteredResources> + <filter> + <id>1396938000000</id> + <name></name> + <type>10</type> + <matcher> + <id>org.eclipse.ui.ide.multiFilter</id> + <arguments>1.0-projectRelativePath-matches-true-false-target</arguments> + </matcher> + </filter> + </filteredResources> +</projectDescription> diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.emf.cdo.evolution.edit/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000..b03b9db471 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,427 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.builder.cleanOutputFolder=clean +org.eclipse.jdt.core.builder.duplicateResourceTask=warning +org.eclipse.jdt.core.builder.invalidClasspath=abort +org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore +org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch,*.ucls,doc-files/,package.html,package-info.java +org.eclipse.jdt.core.circularClasspath=error +org.eclipse.jdt.core.classpath.exclusionPatterns=enabled +org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled +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.annotation.inheritNullAnnotations=disabled +org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore +org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull +org.eclipse.jdt.core.compiler.annotation.nonnull.secondary= +org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault +org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary= +org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable +org.eclipse.jdt.core.compiler.annotation.nullable.secondary= +org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled +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.maxProblemPerUnit=100 +org.eclipse.jdt.core.compiler.problem.APILeak=warning +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=enabled +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.explicitlyClosedAutoCloseable=ignore +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.includeNullInfoFromAsserts=disabled +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.missingDefaultCase=ignore +org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning +org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled +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.nonnullParameterAnnotationDropped=warning +org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning +org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error +org.eclipse.jdt.core.compiler.problem.nullReference=warning +org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error +org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning +org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning +org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore +org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning +org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning +org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore +org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore +org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning +org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning +org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning +org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore +org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore +org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore +org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore +org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled +org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning +org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled +org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled +org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled +org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore +org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning +org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning +org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled +org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning +org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning +org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore +org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning +org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=ignore +org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled +org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=ignore +org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore +org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore +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.unusedExceptionParameter=ignore +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.unusedTypeParameter=ignore +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_annotation=0 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_assignment=0 +org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 +org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 +org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0 +org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 +org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0 +org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80 +org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 +org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16 +org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_after_package=1 +org.eclipse.jdt.core.formatter.blank_lines_before_field=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=false +org.eclipse.jdt.core.formatter.comment.format_line_comments=true +org.eclipse.jdt.core.formatter.comment.format_source_code=true +org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true +org.eclipse.jdt.core.formatter.comment.indent_root_tags=true +org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert +org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert +org.eclipse.jdt.core.formatter.comment.line_length=120 +org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true +org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true +org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false +org.eclipse.jdt.core.formatter.compact_else_if=true +org.eclipse.jdt.core.formatter.continuation_indentation=2 +org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 +org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off +org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on +org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false +org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true +org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_empty_lines=false +org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true +org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false +org.eclipse.jdt.core.formatter.indentation.size=2 +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_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_try=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert +org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert +org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.join_lines_in_comments=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=160 +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_on_off_tags=false +org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false +org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true +org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true +org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true +org.eclipse.jdt.core.incompatibleJDKLevel=ignore +org.eclipse.jdt.core.incompleteClasspath=error diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/.settings/org.eclipse.jdt.launching.prefs b/plugins/org.eclipse.emf.cdo.evolution.edit/.settings/org.eclipse.jdt.launching.prefs new file mode 100644 index 0000000000..556ed07a3c --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/.settings/org.eclipse.jdt.launching.prefs @@ -0,0 +1,3 @@ +#Fri Sep 02 05:38:34 CEST 2011 +eclipse.preferences.version=1 +org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=ignore diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/.settings/org.eclipse.jdt.ui.prefs b/plugins/org.eclipse.emf.cdo.evolution.edit/.settings/org.eclipse.jdt.ui.prefs new file mode 100644 index 0000000000..222aec0421 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/.settings/org.eclipse.jdt.ui.prefs @@ -0,0 +1,119 @@ +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=12 +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-2018 Eike Stepper (Loehne, 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 * Eike Stepper - 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 Eike Stepper\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=false +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.evolution.edit/.settings/org.eclipse.ltk.core.refactoring.prefs b/plugins/org.eclipse.emf.cdo.evolution.edit/.settings/org.eclipse.ltk.core.refactoring.prefs new file mode 100644 index 0000000000..864e30fe5d --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/.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.evolution.edit/.settings/org.eclipse.mylyn.tasks.ui.prefs b/plugins/org.eclipse.emf.cdo.evolution.edit/.settings/org.eclipse.mylyn.tasks.ui.prefs new file mode 100644 index 0000000000..b050639a54 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/.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.evolution.edit/.settings/org.eclipse.mylyn.team.ui.prefs b/plugins/org.eclipse.emf.cdo.evolution.edit/.settings/org.eclipse.mylyn.team.ui.prefs new file mode 100644 index 0000000000..97c11e6725 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/.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\r\n${task.url} +eclipse.preferences.version=1 diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/.settings/org.eclipse.pde.api.tools.prefs b/plugins/org.eclipse.emf.cdo.evolution.edit/.settings/org.eclipse.pde.api.tools.prefs new file mode 100644 index 0000000000..0c17d59e45 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/.settings/org.eclipse.pde.api.tools.prefs @@ -0,0 +1,95 @@ +#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=Error +MISSING_EE_DESCRIPTIONS=Warning +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=Ignore +automatically_removed_unused_problem_filters=Disabled +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.evolution.edit/.settings/org.eclipse.pde.prefs b/plugins/org.eclipse.emf.cdo.evolution.edit/.settings/org.eclipse.pde.prefs new file mode 100644 index 0000000000..fe01bb701d --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/.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=2 +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.evolution.edit/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.evolution.edit/META-INF/MANIFEST.MF new file mode 100644 index 0000000000..eea0f2d76d --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/META-INF/MANIFEST.MF @@ -0,0 +1,19 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: org.eclipse.emf.cdo.evolution.edit;singleton:=true +Automatic-Module-Name: org.eclipse.emf.cdo.evolution.edit +Bundle-Version: 1.0.0.qualifier +Bundle-ClassPath: . +Bundle-Activator: org.eclipse.emf.cdo.evolution.provider.EvolutionEditPlugin$Implementation +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: J2SE-1.5 +Export-Package: org.eclipse.emf.cdo.evolution.provider;version="1.0.0" +Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)";visibility:=reexport, + org.eclipse.emf.cdo.evolution;bundle-version="[1.0.0,2.0.0)";visibility:=reexport, + org.eclipse.emf.edit;bundle-version="[2.5.0,3.0.0)";visibility:=reexport, + org.eclipse.emf.ecore;bundle-version="[2.5.0,3.0.0)";visibility:=reexport, + org.eclipse.emf.ecore.edit;bundle-version="[2.5.0,3.0.0)";visibility:=reexport, + org.eclipse.emf.cdo.edit;bundle-version="[4.0.0,5.0.0)" +Bundle-ActivationPolicy: lazy diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/build.properties b/plugins/org.eclipse.emf.cdo.evolution.edit/build.properties new file mode 100644 index 0000000000..6e3e902e80 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/build.properties @@ -0,0 +1,10 @@ +# + +bin.includes = .,\ + icons/,\ + META-INF/,\ + plugin.xml,\ + plugin.properties +jars.compile.order = . +source.. = src/ +output.. = bin/ diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/Evolution.gif b/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/Evolution.gif Binary files differnew file mode 100644 index 0000000000..df2990f5c2 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/Evolution.gif diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/FeaturePathMigration.gif b/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/FeaturePathMigration.gif Binary files differnew file mode 100644 index 0000000000..d92f34c8ae --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/FeaturePathMigration.gif diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/Model.gif b/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/Model.gif Binary files differnew file mode 100644 index 0000000000..0b60dcc395 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/Model.gif diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/ModelSetChange.gif b/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/ModelSetChange.gif Binary files differnew file mode 100644 index 0000000000..f988003212 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/ModelSetChange.gif diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/Package.gif b/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/Package.gif Binary files differnew file mode 100644 index 0000000000..d931a97fcc --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/Package.gif diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/PropertyChange.gif b/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/PropertyChange.gif Binary files differnew file mode 100644 index 0000000000..ce8bdb99b7 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/PropertyChange.gif diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/Release.gif b/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/Release.gif Binary files differnew file mode 100644 index 0000000000..ce096aafbc --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/Release.gif diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/plugin.properties b/plugins/org.eclipse.emf.cdo.evolution.edit/plugin.properties new file mode 100644 index 0000000000..eb5cb8ea7b --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/plugin.properties @@ -0,0 +1,85 @@ +# + +pluginName = CDO Model Repository Evolution Edit Support +providerName = Eclipse Modeling Project + +_UI_CreateChild_text = {0} +_UI_CreateChild_text2 = {1} {0} +_UI_CreateChild_text3 = {1} +_UI_CreateChild_tooltip = Create New {0} Under {1} Feature +_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}. +_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent. + +_UI_PropertyDescriptor_description = The {0} of the {1} + +##### Sorted: + +_UI_ChangeKind_ADDED_literal = ADDED +_UI_ChangeKind_CHANGED_literal = CHANGED +_UI_ChangeKind_COPIED_literal = COPIED +_UI_ChangeKind_MOVED_literal = MOVED +_UI_ChangeKind_NONE_literal = NONE +_UI_ChangeKind_REMOVED_literal = REMOVED +_UI_Change_children_feature = Children +_UI_Change_parent_feature = Parent +_UI_Change_type = Change +_UI_ElementChange_kind_feature = Kind +_UI_ElementChange_newElement_feature = New Element +_UI_ElementChange_oldElement_feature = Old Element +_UI_ElementChange_type = Element Change +_UI_Evolution_allPackages_feature = All Packages +_UI_Evolution_latestRelease_feature = Latest Release +_UI_Evolution_missingPackages_feature = Missing Packages +_UI_Evolution_models_feature = Models +_UI_Evolution_orderedReleases_feature = Ordered Releases +_UI_Evolution_releases_feature = Releases +_UI_Evolution_rootPackages_feature = Root Packages +_UI_Evolution_type = Evolution +_UI_Evolution_useEcorePackage_feature = Use Ecore Package +_UI_Evolution_useEresourcePackage_feature = Use Eresource Package +_UI_Evolution_useEtypesPackage_feature = Use Etypes Package +_UI_FeaturePathMigration_featurePath_feature = Feature Path +_UI_FeaturePathMigration_fromClass_feature = From Class +_UI_FeaturePathMigration_toClass_feature = To Class +_UI_FeaturePathMigration_type = Feature Path Migration +_UI_Migration_diagnosticID_feature = Diagnostic ID +_UI_Migration_modelSet_feature = Model Set +_UI_Migration_type = Migration +_UI_ModelSetChange_newModelSet_feature = New Model Set +_UI_ModelSetChange_oldModelSet_feature = Old Model Set +_UI_ModelSetChange_type = Changes +_UI_ModelSet_allPackages_feature = All Packages +_UI_ModelSet_change_feature = Change +_UI_ModelSet_migrations_feature = Migrations +_UI_ModelSet_missingPackages_feature = Missing Packages +_UI_ModelSet_models_feature = Models +_UI_ModelSet_rootPackages_feature = Root Packages +_UI_ModelSet_type = Model Set +_UI_Model_allPackages_feature = All Packages +_UI_Model_evolution_feature = Evolution +_UI_Model_missingPackages_feature = Missing Packages +_UI_Model_modelSet_feature = Model Set +_UI_Model_referencedPackages_feature = Referenced Packages +_UI_Model_rootPackage_feature = Root Package +_UI_Model_type = Model +_UI_Model_uRI_feature = URI +_UI_PropertyChange_feature_feature = Feature +_UI_PropertyChange_kind_feature = Kind +_UI_PropertyChange_newValue_feature = New Value +_UI_PropertyChange_oldValue_feature = Old Value +_UI_PropertyChange_type = Property Change +_UI_Release_allPackages_feature = All Packages +_UI_Release_date_feature = Date +_UI_Release_evolution_feature = Evolution +_UI_Release_migrations_feature = Migrations +_UI_Release_nextRelease_feature = Next Release +_UI_Release_previousRelease_feature = Previous Release +_UI_Release_rootPackages_feature = Root Packages +_UI_Release_type = Release +_UI_Release_version_feature = Version +_UI_Unknown_datatype= Value +_UI_Unknown_feature = Unspecified +_UI_Unknown_type = Object +_UI_Evolution_uniqueNamespaceURIs_feature = Unique Namespace UR Is +_UI_Evolution_uniqueNamespaces_feature = Unique Namespaces +_UI_Evolution_nextReleaseVersion_feature = Next Release Version diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/plugin.xml b/plugins/org.eclipse.emf.cdo.evolution.edit/plugin.xml new file mode 100644 index 0000000000..04468135cc --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/plugin.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.0"?> + +<!-- +--> + +<plugin> + + <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories"> + <!-- @generated evolution --> + <factory + uri="http://www.eclipse.org/emf/CDO/evolution/1.0.0" + class="org.eclipse.emf.cdo.evolution.provider.EvolutionItemProviderAdapterFactory" + supportedTypes= + "org.eclipse.emf.edit.provider.IEditingDomainItemProvider + org.eclipse.emf.edit.provider.IStructuredItemContentProvider + org.eclipse.emf.edit.provider.ITreeItemContentProvider + org.eclipse.emf.edit.provider.IItemLabelProvider + org.eclipse.emf.edit.provider.IItemPropertySource + org.eclipse.emf.edit.provider.IItemColorProvider + org.eclipse.emf.edit.provider.IItemFontProvider + org.eclipse.emf.edit.provider.IItemStyledLabelProvider"/> + </extension> + +</plugin> diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ChangeItemProvider.java b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ChangeItemProvider.java new file mode 100644 index 0000000000..ae805298d6 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ChangeItemProvider.java @@ -0,0 +1,191 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.provider; + +import org.eclipse.emf.cdo.evolution.Change; +import org.eclipse.emf.cdo.evolution.EvolutionPackage; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.util.ResourceLocator; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.edit.provider.IChildCreationExtender; +import org.eclipse.emf.edit.provider.IEditingDomainItemProvider; +import org.eclipse.emf.edit.provider.IItemColorProvider; +import org.eclipse.emf.edit.provider.IItemFontProvider; +import org.eclipse.emf.edit.provider.IItemLabelProvider; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.IItemPropertySource; +import org.eclipse.emf.edit.provider.IItemStyledLabelProvider; +import org.eclipse.emf.edit.provider.IStructuredItemContentProvider; +import org.eclipse.emf.edit.provider.ITreeItemContentProvider; +import org.eclipse.emf.edit.provider.ItemProviderAdapter; +import org.eclipse.emf.edit.provider.StyledString; +import org.eclipse.emf.edit.provider.ViewerNotification; + +import java.util.Collection; +import java.util.List; + +/** + * This is the item provider adapter for a {@link org.eclipse.emf.cdo.evolution.Change} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ChangeItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, + IItemLabelProvider, IItemPropertySource, IItemColorProvider, IItemFontProvider, IItemStyledLabelProvider +{ + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ChangeItemProvider(AdapterFactory adapterFactory) + { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) + { + if (itemPropertyDescriptors == null) + { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an + * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or + * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) + { + if (childrenFeatures == null) + { + super.getChildrenFeatures(object); + childrenFeatures.add(EvolutionPackage.Literals.CHANGE__CHILDREN); + } + return childrenFeatures; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EStructuralFeature getChildFeature(Object object, Object child) + { + // Check the type of the specified child object and return the proper feature to use for + // adding (see {@link AddCommand}) it as a child. + + return super.getChildFeature(object, child); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean hasChildren(Object object) + { + return hasChildren(object, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean shouldComposeCreationImage() + { + return true; + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) + { + return ((StyledString)getStyledText(object)).getString(); + } + + /** + * This returns the label styled text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getStyledText(Object object) + { + return new StyledString(getString("_UI_Change_type")); + } + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void notifyChanged(Notification notification) + { + updateChildren(notification); + + switch (notification.getFeatureID(Change.class)) + { + case EvolutionPackage.CHANGE__CHILDREN: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) + { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() + { + return ((IChildCreationExtender)adapterFactory).getResourceLocator(); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ElementChangeItemProvider.java b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ElementChangeItemProvider.java new file mode 100644 index 0000000000..138670dacb --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ElementChangeItemProvider.java @@ -0,0 +1,234 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.provider; + +import org.eclipse.emf.cdo.evolution.ChangeKind; +import org.eclipse.emf.cdo.evolution.ElementChange; +import org.eclipse.emf.cdo.evolution.EvolutionPackage; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EModelElement; +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemLabelProvider; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.StyledString; +import org.eclipse.emf.edit.provider.StyledString.Style; +import org.eclipse.emf.edit.provider.ViewerNotification; + +import java.util.Collection; +import java.util.List; + +/** + * This is the item provider adapter for a {@link org.eclipse.emf.cdo.evolution.ElementChange} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ElementChangeItemProvider extends ChangeItemProvider +{ + private static final URI RED = URI.createURI("color://rgb/200/0/0"); //$NON-NLS-1$ + + private static final URI GREEN = URI.createURI("color://rgb/0/160/0"); //$NON-NLS-1$ + + static final Style REMOVAL_STYLER = Style.newBuilder().setForegroundColor(RED).toStyle(); + + static final Style ADDITION_STYLER = Style.newBuilder().setForegroundColor(GREEN).toStyle(); + + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ElementChangeItemProvider(AdapterFactory adapterFactory) + { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) + { + if (itemPropertyDescriptors == null) + { + super.getPropertyDescriptors(object); + + addOldElementPropertyDescriptor(object); + addNewElementPropertyDescriptor(object); + addKindPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Old Element feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addOldElementPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_ElementChange_oldElement_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ElementChange_oldElement_feature", "_UI_ElementChange_type"), + EvolutionPackage.Literals.ELEMENT_CHANGE__OLD_ELEMENT, true, false, true, null, null, null)); + } + + /** + * This adds a property descriptor for the New Element feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addNewElementPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_ElementChange_newElement_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ElementChange_newElement_feature", "_UI_ElementChange_type"), + EvolutionPackage.Literals.ELEMENT_CHANGE__NEW_ELEMENT, true, false, true, null, null, null)); + } + + /** + * This adds a property descriptor for the Kind feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addKindPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_ElementChange_kind_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ElementChange_kind_feature", "_UI_ElementChange_type"), + EvolutionPackage.Literals.ELEMENT_CHANGE__KIND, true, false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean shouldComposeCreationImage() + { + return true; + } + + @Override + public Object getImage(Object object) + { + ElementChange elementChange = (ElementChange)object; + EModelElement element = elementChange.getElement(); + + if (element != null) + { + IItemLabelProvider labelProvider = (IItemLabelProvider)getRootAdapterFactory().adapt(element, IItemLabelProvider.class); + if (labelProvider != null) + { + return labelProvider.getImage(element); + } + } + + return null; + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) + { + return ((StyledString)getStyledText(object)).getString(); + } + + /** + * This returns the label styled text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + @Override + public Object getStyledText(Object object) + { + ElementChange elementChange = (ElementChange)object; + EModelElement element = elementChange.getElement(); + + StyledString styledLabel = new StyledString(); + ChangeKind kind = elementChange.getKind(); + + IItemLabelProvider labelProvider = (IItemLabelProvider)getRootAdapterFactory().adapt(element, IItemLabelProvider.class); + if (labelProvider != null) + { + String text = labelProvider.getText(element); + if (kind == ChangeKind.ADDED || kind == ChangeKind.COPIED || kind == ChangeKind.MOVED) + { + styledLabel.append(text, ADDITION_STYLER); + } + else if (kind == ChangeKind.REMOVED) + { + styledLabel.append(text, REMOVAL_STYLER); + } + else + { + styledLabel.append(text); + } + } + else + { + styledLabel.append(getString("_UI_ElementChange_type")); + } + + String label = kind == null || kind == ChangeKind.NONE ? null : kind.toString(); + if (label != null) + { + styledLabel.append(" " + label, StyledString.Style.DECORATIONS_STYLER); + } + + return styledLabel; + } + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void notifyChanged(Notification notification) + { + updateChildren(notification); + + switch (notification.getFeatureID(ElementChange.class)) + { + case EvolutionPackage.ELEMENT_CHANGE__KIND: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) + { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/EvolutionEditPlugin.java b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/EvolutionEditPlugin.java new file mode 100644 index 0000000000..d3b8f2a27b --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/EvolutionEditPlugin.java @@ -0,0 +1,99 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.provider; + +import org.eclipse.emf.common.EMFPlugin; + +import org.eclipse.emf.common.util.ResourceLocator; + +import org.eclipse.emf.ecore.provider.EcoreEditPlugin; + +/** + * This is the central singleton for the Evolution edit plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public final class EvolutionEditPlugin extends EMFPlugin +{ + /** + * Keep track of the singleton. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final EvolutionEditPlugin INSTANCE = new EvolutionEditPlugin(); + + /** + * Keep track of the singleton. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static Implementation plugin; + + /** + * Create the instance. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EvolutionEditPlugin() + { + super + (new ResourceLocator [] + { + EcoreEditPlugin.INSTANCE, + }); + } + + /** + * Returns the singleton instance of the Eclipse plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the singleton instance. + * @generated + */ + @Override + public ResourceLocator getPluginResourceLocator() + { + return plugin; + } + + /** + * Returns the singleton instance of the Eclipse plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the singleton instance. + * @generated + */ + public static Implementation getPlugin() + { + return plugin; + } + + /** + * The actual implementation of the Eclipse <b>Plugin</b>. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static class Implementation extends EclipsePlugin + { + /** + * Creates an instance. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Implementation() + { + super(); + + // Remember the static instance. + // + plugin = this; + } + } + +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/EvolutionItemProvider.java b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/EvolutionItemProvider.java new file mode 100644 index 0000000000..ceac47f72e --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/EvolutionItemProvider.java @@ -0,0 +1,359 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.provider; + +import org.eclipse.emf.cdo.evolution.Evolution; +import org.eclipse.emf.cdo.evolution.EvolutionFactory; +import org.eclipse.emf.cdo.evolution.EvolutionPackage; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.StyledString; +import org.eclipse.emf.edit.provider.ViewerNotification; + +import java.util.Collection; +import java.util.List; + +/** + * This is the item provider adapter for a {@link org.eclipse.emf.cdo.evolution.Evolution} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class EvolutionItemProvider extends ModelSetItemProvider +{ + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EvolutionItemProvider(AdapterFactory adapterFactory) + { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) + { + if (itemPropertyDescriptors == null) + { + super.getPropertyDescriptors(object); + + addUseEcorePackagePropertyDescriptor(object); + addUseEresourcePackagePropertyDescriptor(object); + addUseEtypesPackagePropertyDescriptor(object); + addUniqueNamespacesPropertyDescriptor(object); + addRootPackagesPropertyDescriptor(object); + addAllPackagesPropertyDescriptor(object); + addMissingPackagesPropertyDescriptor(object); + addOrderedReleasesPropertyDescriptor(object); + addLatestReleasePropertyDescriptor(object); + addNextReleaseVersionPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Use Ecore Package feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addUseEcorePackagePropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Evolution_useEcorePackage_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Evolution_useEcorePackage_feature", "_UI_Evolution_type"), + EvolutionPackage.Literals.EVOLUTION__USE_ECORE_PACKAGE, true, false, false, ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE, null, null)); + } + + /** + * This adds a property descriptor for the Use Eresource Package feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addUseEresourcePackagePropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Evolution_useEresourcePackage_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Evolution_useEresourcePackage_feature", "_UI_Evolution_type"), + EvolutionPackage.Literals.EVOLUTION__USE_ERESOURCE_PACKAGE, true, false, false, ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE, null, null)); + } + + /** + * This adds a property descriptor for the Use Etypes Package feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addUseEtypesPackagePropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Evolution_useEtypesPackage_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Evolution_useEtypesPackage_feature", "_UI_Evolution_type"), + EvolutionPackage.Literals.EVOLUTION__USE_ETYPES_PACKAGE, true, false, false, ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE, null, null)); + } + + /** + * This adds a property descriptor for the Unique Namespaces feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addUniqueNamespacesPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Evolution_uniqueNamespaces_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Evolution_uniqueNamespaces_feature", "_UI_Evolution_type"), + EvolutionPackage.Literals.EVOLUTION__UNIQUE_NAMESPACES, true, false, false, ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE, null, null)); + } + + /** + * This adds a property descriptor for the Root Packages feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addRootPackagesPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Evolution_rootPackages_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Evolution_rootPackages_feature", "_UI_Evolution_type"), + EvolutionPackage.Literals.EVOLUTION__ROOT_PACKAGES, false, false, false, null, null, null)); + } + + /** + * This adds a property descriptor for the All Packages feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addAllPackagesPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Evolution_allPackages_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Evolution_allPackages_feature", "_UI_Evolution_type"), + EvolutionPackage.Literals.EVOLUTION__ALL_PACKAGES, false, false, false, null, null, null)); + } + + /** + * This adds a property descriptor for the Ordered Releases feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addOrderedReleasesPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Evolution_orderedReleases_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Evolution_orderedReleases_feature", "_UI_Evolution_type"), + EvolutionPackage.Literals.EVOLUTION__ORDERED_RELEASES, false, false, false, null, null, null)); + } + + /** + * This adds a property descriptor for the Latest Release feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addLatestReleasePropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Evolution_latestRelease_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Evolution_latestRelease_feature", "_UI_Evolution_type"), + EvolutionPackage.Literals.EVOLUTION__LATEST_RELEASE, false, false, false, null, null, null)); + } + + /** + * This adds a property descriptor for the Next Release Version feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addNextReleaseVersionPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Evolution_nextReleaseVersion_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Evolution_nextReleaseVersion_feature", "_UI_Evolution_type"), + EvolutionPackage.Literals.EVOLUTION__NEXT_RELEASE_VERSION, false, false, false, ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null)); + } + + /** + * This adds a property descriptor for the Missing Packages feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addMissingPackagesPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Evolution_missingPackages_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Evolution_missingPackages_feature", "_UI_Evolution_type"), + EvolutionPackage.Literals.EVOLUTION__MISSING_PACKAGES, false, false, false, null, null, null)); + } + + /** + * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an + * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or + * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Collection<? extends EStructuralFeature> getChildrenFeaturesGen(Object object) + { + if (childrenFeatures == null) + { + super.getChildrenFeatures(object); + childrenFeatures.add(EvolutionPackage.Literals.EVOLUTION__MODELS); + childrenFeatures.add(EvolutionPackage.Literals.EVOLUTION__ORDERED_RELEASES); + } + return childrenFeatures; + } + + /** + * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an + * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or + * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + @Override + public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) + { + @SuppressWarnings("unchecked") + List<EStructuralFeature> childrenFeatures = (List<EStructuralFeature>)getChildrenFeaturesGen(object); + + childrenFeatures.remove(EvolutionPackage.Literals.EVOLUTION__MODELS); + childrenFeatures.add(0, EvolutionPackage.Literals.EVOLUTION__MODELS); + + return childrenFeatures; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EStructuralFeature getChildFeature(Object object, Object child) + { + // Check the type of the specified child object and return the proper feature to use for + // adding (see {@link AddCommand}) it as a child. + + return super.getChildFeature(object, child); + } + + @Override + protected boolean hasChildren(Object object, boolean optimized) + { + Evolution evolution = (Evolution)object; + return !(evolution.getModels().isEmpty() && evolution.getReleases().isEmpty()); + } + + /** + * This returns Evolution.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) + { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Evolution")); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean shouldComposeCreationImage() + { + return true; + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) + { + return ((StyledString)getStyledText(object)).getString(); + } + + /** + * This returns the label styled text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + @Override + public Object getStyledText(Object object) + { + return new StyledString(getString("_UI_Evolution_type")); + } + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void notifyChanged(Notification notification) + { + updateChildren(notification); + + switch (notification.getFeatureID(Evolution.class)) + { + case EvolutionPackage.EVOLUTION__USE_ECORE_PACKAGE: + case EvolutionPackage.EVOLUTION__USE_ERESOURCE_PACKAGE: + case EvolutionPackage.EVOLUTION__USE_ETYPES_PACKAGE: + case EvolutionPackage.EVOLUTION__UNIQUE_NAMESPACES: + case EvolutionPackage.EVOLUTION__RELEASES: + case EvolutionPackage.EVOLUTION__NEXT_RELEASE_VERSION: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + case EvolutionPackage.EVOLUTION__MODELS: + case EvolutionPackage.EVOLUTION__ORDERED_RELEASES: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) + { + super.collectNewChildDescriptors(newChildDescriptors, object); + + newChildDescriptors.add(createChildParameter(EvolutionPackage.Literals.EVOLUTION__MODELS, EvolutionFactory.eINSTANCE.createModel())); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/EvolutionItemProviderAdapterFactory.java b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/EvolutionItemProviderAdapterFactory.java new file mode 100644 index 0000000000..9560a78d5f --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/EvolutionItemProviderAdapterFactory.java @@ -0,0 +1,443 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.provider; + +import org.eclipse.emf.cdo.evolution.EvolutionPackage; +import org.eclipse.emf.cdo.evolution.util.EvolutionAdapterFactory; + +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.util.ResourceLocator; +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.provider.ChangeNotifier; +import org.eclipse.emf.edit.provider.ChildCreationExtenderManager; +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.ComposedAdapterFactory; +import org.eclipse.emf.edit.provider.IChangeNotifier; +import org.eclipse.emf.edit.provider.IChildCreationExtender; +import org.eclipse.emf.edit.provider.IDisposable; +import org.eclipse.emf.edit.provider.IEditingDomainItemProvider; +import org.eclipse.emf.edit.provider.IItemColorProvider; +import org.eclipse.emf.edit.provider.IItemFontProvider; +import org.eclipse.emf.edit.provider.IItemLabelProvider; +import org.eclipse.emf.edit.provider.IItemPropertySource; +import org.eclipse.emf.edit.provider.IItemStyledLabelProvider; +import org.eclipse.emf.edit.provider.INotifyChangedListener; +import org.eclipse.emf.edit.provider.IStructuredItemContentProvider; +import org.eclipse.emf.edit.provider.ITreeItemContentProvider; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +/** + * This is the factory that is used to provide the interfaces needed to support Viewers. + * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}. + * The adapters also support Eclipse property sheets. + * Note that most of the adapters are shared among multiple instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class EvolutionItemProviderAdapterFactory extends EvolutionAdapterFactory + implements ComposeableAdapterFactory, IChangeNotifier, IDisposable, IChildCreationExtender +{ + /** + * This keeps track of the root adapter factory that delegates to this adapter factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ComposedAdapterFactory parentAdapterFactory; + + /** + * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IChangeNotifier changeNotifier = new ChangeNotifier(); + + /** + * This helps manage the child creation extenders. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ChildCreationExtenderManager childCreationExtenderManager = new ChildCreationExtenderManager(EvolutionEditPlugin.INSTANCE, + EvolutionPackage.eNS_URI); + + /** + * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Object> supportedTypes = new ArrayList<Object>(); + + /** + * This constructs an instance. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EvolutionItemProviderAdapterFactory() + { + supportedTypes.add(IEditingDomainItemProvider.class); + supportedTypes.add(IStructuredItemContentProvider.class); + supportedTypes.add(ITreeItemContentProvider.class); + supportedTypes.add(IItemLabelProvider.class); + supportedTypes.add(IItemPropertySource.class); + supportedTypes.add(IItemColorProvider.class); + supportedTypes.add(IItemFontProvider.class); + supportedTypes.add(IItemStyledLabelProvider.class); + } + + /** + * This keeps track of the one adapter used for all {@link org.eclipse.emf.cdo.evolution.Model} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ModelItemProvider modelItemProvider; + + /** + * This creates an adapter for a {@link org.eclipse.emf.cdo.evolution.Model}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createModelAdapter() + { + if (modelItemProvider == null) + { + modelItemProvider = new ModelItemProvider(this); + } + + return modelItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link org.eclipse.emf.cdo.evolution.Evolution} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EvolutionItemProvider evolutionItemProvider; + + /** + * This creates an adapter for a {@link org.eclipse.emf.cdo.evolution.Evolution}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createEvolutionAdapter() + { + if (evolutionItemProvider == null) + { + evolutionItemProvider = new EvolutionItemProvider(this); + } + + return evolutionItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link org.eclipse.emf.cdo.evolution.Release} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ReleaseItemProvider releaseItemProvider; + + /** + * This creates an adapter for a {@link org.eclipse.emf.cdo.evolution.Release}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createReleaseAdapter() + { + if (releaseItemProvider == null) + { + releaseItemProvider = new ReleaseItemProvider(this); + } + + return releaseItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link org.eclipse.emf.cdo.evolution.ModelSetChange} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ModelSetChangeItemProvider modelSetChangeItemProvider; + + /** + * This creates an adapter for a {@link org.eclipse.emf.cdo.evolution.ModelSetChange}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createModelSetChangeAdapter() + { + if (modelSetChangeItemProvider == null) + { + modelSetChangeItemProvider = new ModelSetChangeItemProvider(this); + } + + return modelSetChangeItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link org.eclipse.emf.cdo.evolution.ElementChange} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ElementChangeItemProvider elementChangeItemProvider; + + /** + * This creates an adapter for a {@link org.eclipse.emf.cdo.evolution.ElementChange}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createElementChangeAdapter() + { + if (elementChangeItemProvider == null) + { + elementChangeItemProvider = new ElementChangeItemProvider(this); + } + + return elementChangeItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link org.eclipse.emf.cdo.evolution.PropertyChange} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected PropertyChangeItemProvider propertyChangeItemProvider; + + /** + * This creates an adapter for a {@link org.eclipse.emf.cdo.evolution.PropertyChange}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createPropertyChangeAdapter() + { + if (propertyChangeItemProvider == null) + { + propertyChangeItemProvider = new PropertyChangeItemProvider(this); + } + + return propertyChangeItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link org.eclipse.emf.cdo.evolution.FeaturePathMigration} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected FeaturePathMigrationItemProvider featurePathMigrationItemProvider; + + /** + * This creates an adapter for a {@link org.eclipse.emf.cdo.evolution.FeaturePathMigration}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createFeaturePathMigrationAdapter() + { + if (featurePathMigrationItemProvider == null) + { + featurePathMigrationItemProvider = new FeaturePathMigrationItemProvider(this); + } + + return featurePathMigrationItemProvider; + } + + /** + * This returns the root adapter factory that contains this factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ComposeableAdapterFactory getRootAdapterFactory() + { + return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory(); + } + + /** + * This sets the composed adapter factory that contains this factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) + { + this.parentAdapterFactory = parentAdapterFactory; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean isFactoryForType(Object type) + { + return supportedTypes.contains(type) || super.isFactoryForType(type); + } + + /** + * This implementation substitutes the factory itself as the key for the adapter. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter adapt(Notifier notifier, Object type) + { + return super.adapt(notifier, this); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object adapt(Object object, Object type) + { + if (isFactoryForType(type)) + { + Object adapter = super.adapt(object, type); + if (!(type instanceof Class<?>) || ((Class<?>)type).isInstance(adapter)) + { + return adapter; + } + } + + return null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public List<IChildCreationExtender> getChildCreationExtenders() + { + return childCreationExtenderManager.getChildCreationExtenders(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Collection<?> getNewChildDescriptors(Object object, EditingDomain editingDomain) + { + return childCreationExtenderManager.getNewChildDescriptors(object, editingDomain); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ResourceLocator getResourceLocator() + { + return childCreationExtenderManager; + } + + /** + * This adds a listener. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void addListener(INotifyChangedListener notifyChangedListener) + { + changeNotifier.addListener(notifyChangedListener); + } + + /** + * This removes a listener. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void removeListener(INotifyChangedListener notifyChangedListener) + { + changeNotifier.removeListener(notifyChangedListener); + } + + /** + * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void fireNotifyChanged(Notification notification) + { + changeNotifier.fireNotifyChanged(notification); + + if (parentAdapterFactory != null) + { + parentAdapterFactory.fireNotifyChanged(notification); + } + } + + /** + * This disposes all of the item providers created by this factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void dispose() + { + if (modelItemProvider != null) + { + modelItemProvider.dispose(); + } + if (evolutionItemProvider != null) + { + evolutionItemProvider.dispose(); + } + if (releaseItemProvider != null) + { + releaseItemProvider.dispose(); + } + if (modelSetChangeItemProvider != null) + { + modelSetChangeItemProvider.dispose(); + } + if (elementChangeItemProvider != null) + { + elementChangeItemProvider.dispose(); + } + if (propertyChangeItemProvider != null) + { + propertyChangeItemProvider.dispose(); + } + if (featurePathMigrationItemProvider != null) + { + featurePathMigrationItemProvider.dispose(); + } + } + +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/FeaturePathMigrationItemProvider.java b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/FeaturePathMigrationItemProvider.java new file mode 100644 index 0000000000..f2b38b4f86 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/FeaturePathMigrationItemProvider.java @@ -0,0 +1,182 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.provider; + +import org.eclipse.emf.cdo.evolution.EvolutionPackage; +import org.eclipse.emf.cdo.evolution.FeaturePathMigration; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.StyledString; + +import java.util.Collection; +import java.util.List; + +/** + * This is the item provider adapter for a {@link org.eclipse.emf.cdo.evolution.FeaturePathMigration} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class FeaturePathMigrationItemProvider extends MigrationItemProvider +{ + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public FeaturePathMigrationItemProvider(AdapterFactory adapterFactory) + { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) + { + if (itemPropertyDescriptors == null) + { + super.getPropertyDescriptors(object); + + addFromClassPropertyDescriptor(object); + addToClassPropertyDescriptor(object); + addFeaturePathPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the From Class feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addFromClassPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_FeaturePathMigration_fromClass_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_FeaturePathMigration_fromClass_feature", "_UI_FeaturePathMigration_type"), + EvolutionPackage.Literals.FEATURE_PATH_MIGRATION__FROM_CLASS, true, false, true, null, null, null)); + } + + /** + * This adds a property descriptor for the To Class feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addToClassPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_FeaturePathMigration_toClass_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_FeaturePathMigration_toClass_feature", "_UI_FeaturePathMigration_type"), + EvolutionPackage.Literals.FEATURE_PATH_MIGRATION__TO_CLASS, true, false, true, null, null, null)); + } + + /** + * This adds a property descriptor for the Feature Path feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addFeaturePathPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_FeaturePathMigration_featurePath_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_FeaturePathMigration_featurePath_feature", "_UI_FeaturePathMigration_type"), + EvolutionPackage.Literals.FEATURE_PATH_MIGRATION__FEATURE_PATH, true, false, true, null, null, null)); + } + + /** + * This returns FeaturePathMigration.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) + { + return overlayImage(object, getResourceLocator().getImage("full/obj16/FeaturePathMigration")); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean shouldComposeCreationImage() + { + return true; + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) + { + return ((StyledString)getStyledText(object)).getString(); + } + + /** + * This returns the label styled text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getStyledText(Object object) + { + String label = ((FeaturePathMigration)object).getDiagnosticID(); + StyledString styledLabel = new StyledString(); + if (label == null || label.length() == 0) + { + styledLabel.append(getString("_UI_FeaturePathMigration_type"), StyledString.Style.QUALIFIER_STYLER); + } + else + { + styledLabel.append(getString("_UI_FeaturePathMigration_type"), StyledString.Style.QUALIFIER_STYLER).append(" " + label); + } + return styledLabel; + } + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void notifyChanged(Notification notification) + { + updateChildren(notification); + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) + { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/MigrationItemProvider.java b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/MigrationItemProvider.java new file mode 100644 index 0000000000..0577be42e5 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/MigrationItemProvider.java @@ -0,0 +1,167 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.provider; + +import org.eclipse.emf.cdo.evolution.EvolutionPackage; +import org.eclipse.emf.cdo.evolution.Migration; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.util.ResourceLocator; +import org.eclipse.emf.edit.provider.IChildCreationExtender; +import org.eclipse.emf.edit.provider.IEditingDomainItemProvider; +import org.eclipse.emf.edit.provider.IItemColorProvider; +import org.eclipse.emf.edit.provider.IItemFontProvider; +import org.eclipse.emf.edit.provider.IItemLabelProvider; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.IItemPropertySource; +import org.eclipse.emf.edit.provider.IItemStyledLabelProvider; +import org.eclipse.emf.edit.provider.IStructuredItemContentProvider; +import org.eclipse.emf.edit.provider.ITreeItemContentProvider; +import org.eclipse.emf.edit.provider.ItemProviderAdapter; +import org.eclipse.emf.edit.provider.StyledString; +import org.eclipse.emf.edit.provider.ViewerNotification; + +import java.util.Collection; +import java.util.List; + +/** + * This is the item provider adapter for a {@link org.eclipse.emf.cdo.evolution.Migration} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class MigrationItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, + IItemLabelProvider, IItemPropertySource, IItemColorProvider, IItemFontProvider, IItemStyledLabelProvider +{ + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public MigrationItemProvider(AdapterFactory adapterFactory) + { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) + { + if (itemPropertyDescriptors == null) + { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean hasChildren(Object object) + { + return hasChildren(object, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean shouldComposeCreationImage() + { + return true; + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) + { + return ((StyledString)getStyledText(object)).getString(); + } + + /** + * This returns the label styled text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getStyledText(Object object) + { + String label = ((Migration)object).getDiagnosticID(); + StyledString styledLabel = new StyledString(); + if (label == null || label.length() == 0) + { + styledLabel.append(getString("_UI_Migration_type"), StyledString.Style.QUALIFIER_STYLER); + } + else + { + styledLabel.append(getString("_UI_Migration_type"), StyledString.Style.QUALIFIER_STYLER).append(" " + label); + } + return styledLabel; + } + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void notifyChanged(Notification notification) + { + updateChildren(notification); + + switch (notification.getFeatureID(Migration.class)) + { + case EvolutionPackage.MIGRATION__DIAGNOSTIC_ID: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) + { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() + { + return ((IChildCreationExtender)adapterFactory).getResourceLocator(); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ModelItemProvider.java b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ModelItemProvider.java new file mode 100644 index 0000000000..bf209fec5a --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ModelItemProvider.java @@ -0,0 +1,331 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.provider; + +import org.eclipse.emf.cdo.evolution.EvolutionPackage; +import org.eclipse.emf.cdo.evolution.Model; + +import org.eclipse.emf.common.command.Command; +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.util.ResourceLocator; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.edit.command.CommandParameter; +import org.eclipse.emf.edit.command.DragAndDropCommand; +import org.eclipse.emf.edit.command.SetCommand; +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IChildCreationExtender; +import org.eclipse.emf.edit.provider.IEditingDomainItemProvider; +import org.eclipse.emf.edit.provider.IItemColorProvider; +import org.eclipse.emf.edit.provider.IItemFontProvider; +import org.eclipse.emf.edit.provider.IItemLabelProvider; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.IItemPropertySource; +import org.eclipse.emf.edit.provider.IItemStyledLabelProvider; +import org.eclipse.emf.edit.provider.IStructuredItemContentProvider; +import org.eclipse.emf.edit.provider.ITreeItemContentProvider; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemProviderAdapter; +import org.eclipse.emf.edit.provider.StyledString; +import org.eclipse.emf.edit.provider.ViewerNotification; + +import java.util.Collection; +import java.util.List; + +/** + * This is the item provider adapter for a {@link org.eclipse.emf.cdo.evolution.Model} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ModelItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, + IItemLabelProvider, IItemPropertySource, IItemColorProvider, IItemFontProvider, IItemStyledLabelProvider +{ + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ModelItemProvider(AdapterFactory adapterFactory) + { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) + { + if (itemPropertyDescriptors == null) + { + super.getPropertyDescriptors(object); + + addURIPropertyDescriptor(object); + addRootPackagePropertyDescriptor(object); + addAllPackagesPropertyDescriptor(object); + addReferencedPackagesPropertyDescriptor(object); + addMissingPackagesPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the URI feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addURIPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Model_uRI_feature"), getString("_UI_PropertyDescriptor_description", "_UI_Model_uRI_feature", "_UI_Model_type"), + EvolutionPackage.Literals.MODEL__URI, true, false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null)); + } + + /** + * This adds a property descriptor for the Root Package feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addRootPackagePropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Model_rootPackage_feature"), getString("_UI_PropertyDescriptor_description", "_UI_Model_rootPackage_feature", "_UI_Model_type"), + EvolutionPackage.Literals.MODEL__ROOT_PACKAGE, false, false, false, null, null, null)); + } + + /** + * This adds a property descriptor for the All Packages feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addAllPackagesPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Model_allPackages_feature"), getString("_UI_PropertyDescriptor_description", "_UI_Model_allPackages_feature", "_UI_Model_type"), + EvolutionPackage.Literals.MODEL__ALL_PACKAGES, false, false, false, null, null, null)); + } + + /** + * This adds a property descriptor for the Referenced Packages feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addReferencedPackagesPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Model_referencedPackages_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Model_referencedPackages_feature", "_UI_Model_type"), + EvolutionPackage.Literals.MODEL__REFERENCED_PACKAGES, false, false, false, null, null, null)); + } + + /** + * This adds a property descriptor for the Missing Packages feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addMissingPackagesPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Model_missingPackages_feature"), getString("_UI_PropertyDescriptor_description", "_UI_Model_missingPackages_feature", "_UI_Model_type"), + EvolutionPackage.Literals.MODEL__MISSING_PACKAGES, false, false, false, null, null, null)); + } + + /** + * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an + * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or + * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) + { + if (childrenFeatures == null) + { + super.getChildrenFeatures(object); + childrenFeatures.add(EvolutionPackage.Literals.MODEL__ROOT_PACKAGE); + } + return childrenFeatures; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EStructuralFeature getChildFeature(Object object, Object child) + { + // Check the type of the specified child object and return the proper feature to use for + // adding (see {@link AddCommand}) it as a child. + + return super.getChildFeature(object, child); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean hasChildren(Object object) + { + return hasChildren(object, true); + } + + /** + * This returns Model.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) + { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Model")); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean shouldComposeCreationImage() + { + return true; + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) + { + return ((StyledString)getStyledText(object)).getString(); + } + + /** + * This returns the label styled text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getStyledText(Object object) + { + URI labelValue = ((Model)object).getURI(); + String label = labelValue == null ? null : labelValue.toString(); + StyledString styledLabel = new StyledString(); + if (label == null || label.length() == 0) + { + styledLabel.append(getString("_UI_Model_type"), StyledString.Style.QUALIFIER_STYLER); + } + else + { + styledLabel.append(getString("_UI_Model_type"), StyledString.Style.QUALIFIER_STYLER).append(" " + label); + } + return styledLabel; + } + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void notifyChanged(Notification notification) + { + updateChildren(notification); + + switch (notification.getFeatureID(Model.class)) + { + case EvolutionPackage.MODEL__URI: + case EvolutionPackage.MODEL__ALL_PACKAGES: + case EvolutionPackage.MODEL__REFERENCED_PACKAGES: + case EvolutionPackage.MODEL__MISSING_PACKAGES: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + case EvolutionPackage.MODEL__ROOT_PACKAGE: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) + { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() + { + return ((IChildCreationExtender)adapterFactory).getResourceLocator(); + } + + @Override + public Command createCommand(Object owner, EditingDomain domain, Class<? extends Command> commandClass, CommandParameter commandParameter) + { + if (commandClass == DragAndDropCommand.class) + { + // DragAndDropCommand.Detail detail = (DragAndDropCommand.Detail)commandParameter.getFeature(); + Collection<?> collection = commandParameter.getCollection(); + if (domain != null && collection.size() == 1 && commandParameter.getOwner() != domain.getResourceSet()) + { + Object element = collection.iterator().next(); + if (element instanceof URI) + { + URI uri = (URI)element; + return SetCommand.create(domain, owner, EvolutionPackage.Literals.MODEL__URI, uri); + } + + // return createDragAndDropCommand(domain, commandParameter.getOwner(), detail.location, detail.operations, + // detail.operation, + // commandParameter.getCollection()); + } + } + + return super.createCommand(owner, domain, commandClass, commandParameter); + } + + @Override + protected boolean isWrappingNeeded(Object object) + { + // Wrapping is always needed because of the derived cross reference 'rootPackage', which is shown as children. + return true; + } + +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ModelSetChangeItemProvider.java b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ModelSetChangeItemProvider.java new file mode 100644 index 0000000000..c0746ec255 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ModelSetChangeItemProvider.java @@ -0,0 +1,156 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.provider; + +import org.eclipse.emf.cdo.evolution.EvolutionPackage; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.StyledString; + +import java.util.Collection; +import java.util.List; + +/** + * This is the item provider adapter for a {@link org.eclipse.emf.cdo.evolution.ModelSetChange} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ModelSetChangeItemProvider extends ChangeItemProvider +{ + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ModelSetChangeItemProvider(AdapterFactory adapterFactory) + { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) + { + if (itemPropertyDescriptors == null) + { + super.getPropertyDescriptors(object); + + addOldModelSetPropertyDescriptor(object); + addNewModelSetPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Old Model Set feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addOldModelSetPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_ModelSetChange_oldModelSet_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ModelSetChange_oldModelSet_feature", "_UI_ModelSetChange_type"), + EvolutionPackage.Literals.MODEL_SET_CHANGE__OLD_MODEL_SET, true, false, true, null, null, null)); + } + + /** + * This adds a property descriptor for the New Model Set feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addNewModelSetPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_ModelSetChange_newModelSet_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ModelSetChange_newModelSet_feature", "_UI_ModelSetChange_type"), + EvolutionPackage.Literals.MODEL_SET_CHANGE__NEW_MODEL_SET, true, false, true, null, null, null)); + } + + /** + * This returns ModelSetChange.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) + { + return overlayImage(object, getResourceLocator().getImage("full/obj16/ModelSetChange")); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean shouldComposeCreationImage() + { + return true; + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) + { + return ((StyledString)getStyledText(object)).getString(); + } + + /** + * This returns the label styled text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getStyledText(Object object) + { + return new StyledString(getString("_UI_ModelSetChange_type")); + } + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void notifyChanged(Notification notification) + { + updateChildren(notification); + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) + { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ModelSetItemProvider.java b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ModelSetItemProvider.java new file mode 100644 index 0000000000..7969d8e777 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ModelSetItemProvider.java @@ -0,0 +1,196 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.provider; + +import org.eclipse.emf.cdo.evolution.EvolutionFactory; +import org.eclipse.emf.cdo.evolution.EvolutionPackage; +import org.eclipse.emf.cdo.evolution.ModelSet; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.util.ResourceLocator; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.edit.provider.IChildCreationExtender; +import org.eclipse.emf.edit.provider.IEditingDomainItemProvider; +import org.eclipse.emf.edit.provider.IItemColorProvider; +import org.eclipse.emf.edit.provider.IItemFontProvider; +import org.eclipse.emf.edit.provider.IItemLabelProvider; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.IItemPropertySource; +import org.eclipse.emf.edit.provider.IItemStyledLabelProvider; +import org.eclipse.emf.edit.provider.IStructuredItemContentProvider; +import org.eclipse.emf.edit.provider.ITreeItemContentProvider; +import org.eclipse.emf.edit.provider.ItemProviderAdapter; +import org.eclipse.emf.edit.provider.StyledString; +import org.eclipse.emf.edit.provider.ViewerNotification; + +import java.util.Collection; +import java.util.List; + +/** + * This is the item provider adapter for a {@link org.eclipse.emf.cdo.evolution.ModelSet} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ModelSetItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, + IItemLabelProvider, IItemPropertySource, IItemColorProvider, IItemFontProvider, IItemStyledLabelProvider +{ + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ModelSetItemProvider(AdapterFactory adapterFactory) + { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) + { + if (itemPropertyDescriptors == null) + { + super.getPropertyDescriptors(object); + + } + return itemPropertyDescriptors; + } + + /** + * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an + * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or + * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) + { + if (childrenFeatures == null) + { + super.getChildrenFeatures(object); + childrenFeatures.add(EvolutionPackage.Literals.MODEL_SET__CHANGE); + childrenFeatures.add(EvolutionPackage.Literals.MODEL_SET__MIGRATIONS); + } + return childrenFeatures; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EStructuralFeature getChildFeature(Object object, Object child) + { + // Check the type of the specified child object and return the proper feature to use for + // adding (see {@link AddCommand}) it as a child. + + return super.getChildFeature(object, child); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean hasChildren(Object object) + { + return hasChildren(object, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean shouldComposeCreationImage() + { + return true; + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) + { + return ((StyledString)getStyledText(object)).getString(); + } + + /** + * This returns the label styled text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getStyledText(Object object) + { + return new StyledString(getString("_UI_ModelSet_type")); + } + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void notifyChanged(Notification notification) + { + updateChildren(notification); + + switch (notification.getFeatureID(ModelSet.class)) + { + case EvolutionPackage.MODEL_SET__CHANGE: + case EvolutionPackage.MODEL_SET__MIGRATIONS: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) + { + super.collectNewChildDescriptors(newChildDescriptors, object); + + newChildDescriptors.add(createChildParameter(EvolutionPackage.Literals.MODEL_SET__MIGRATIONS, EvolutionFactory.eINSTANCE.createFeaturePathMigration())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() + { + return ((IChildCreationExtender)adapterFactory).getResourceLocator(); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/PropertyChangeItemProvider.java b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/PropertyChangeItemProvider.java new file mode 100644 index 0000000000..cfa947d8c4 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/PropertyChangeItemProvider.java @@ -0,0 +1,294 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.provider; + +import org.eclipse.emf.cdo.evolution.ChangeKind; +import org.eclipse.emf.cdo.evolution.EvolutionPackage; +import org.eclipse.emf.cdo.evolution.PropertyChange; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.ENamedElement; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.IItemPropertySource; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.StyledString; +import org.eclipse.emf.edit.provider.ViewerNotification; + +import java.util.Collection; +import java.util.List; + +/** + * This is the item provider adapter for a {@link org.eclipse.emf.cdo.evolution.PropertyChange} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class PropertyChangeItemProvider extends ChangeItemProvider +{ + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public PropertyChangeItemProvider(AdapterFactory adapterFactory) + { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) + { + if (itemPropertyDescriptors == null) + { + super.getPropertyDescriptors(object); + + addFeaturePropertyDescriptor(object); + addOldValuePropertyDescriptor(object); + addNewValuePropertyDescriptor(object); + addKindPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Feature feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addFeaturePropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_PropertyChange_feature_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_PropertyChange_feature_feature", "_UI_PropertyChange_type"), + EvolutionPackage.Literals.PROPERTY_CHANGE__FEATURE, true, false, true, null, null, null)); + } + + /** + * This adds a property descriptor for the Old Value feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addOldValuePropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_PropertyChange_oldValue_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_PropertyChange_oldValue_feature", "_UI_PropertyChange_type"), + EvolutionPackage.Literals.PROPERTY_CHANGE__OLD_VALUE, true, false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null)); + } + + /** + * This adds a property descriptor for the New Value feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addNewValuePropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_PropertyChange_newValue_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_PropertyChange_newValue_feature", "_UI_PropertyChange_type"), + EvolutionPackage.Literals.PROPERTY_CHANGE__NEW_VALUE, true, false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null)); + } + + /** + * This adds a property descriptor for the Kind feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addKindPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_PropertyChange_kind_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_PropertyChange_kind_feature", "_UI_PropertyChange_type"), + EvolutionPackage.Literals.PROPERTY_CHANGE__KIND, false, false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null)); + } + + /** + * This returns PropertyChange.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) + { + return overlayImage(object, getResourceLocator().getImage("full/obj16/PropertyChange")); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean shouldComposeCreationImage() + { + return true; + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) + { + return ((StyledString)getStyledText(object)).getString(); + } + + /** + * This returns the label styled text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + @Override + public Object getStyledText(Object object) + { + PropertyChange propertyChange = (PropertyChange)object; + EStructuralFeature feature = propertyChange.getFeature(); + + StyledString styledLabel = new StyledString(); + if (feature != null) + { + String text = null; + + EClass eClass = feature.getEContainingClass(); + IItemPropertySource propertySource = (IItemPropertySource)getRootAdapterFactory().adapt(eClass, IItemPropertySource.class); + if (propertySource != null) + { + for (IItemPropertyDescriptor propertyDescriptor : propertySource.getPropertyDescriptors(eClass)) + { + if (propertyDescriptor.getFeature(eClass) == feature) + { + text = propertyDescriptor.getDisplayName(eClass); + break; + } + } + } + + if (text == null) + { + text = feature.getName(); + } + + ChangeKind kind = propertyChange.getKind(); + if (kind == ChangeKind.ADDED || kind == ChangeKind.COPIED) + { + styledLabel.append(text, ElementChangeItemProvider.ADDITION_STYLER); + } + else if (kind == ChangeKind.REMOVED) + { + styledLabel.append(text, ElementChangeItemProvider.REMOVAL_STYLER); + } + else + { + styledLabel.append(text); + } + } + else + { + // Can't really happen. + styledLabel.append(getString("_UI_PropertyChange_type"), StyledString.Style.QUALIFIER_STYLER); + } + + StringBuilder builder = new StringBuilder(" "); + formatValue(propertyChange.getOldValue(), builder); + builder.append(" \u279d "); + formatValue(propertyChange.getNewValue(), builder); + + styledLabel.append(builder.toString(), StyledString.Style.DECORATIONS_STYLER); + return styledLabel; + } + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void notifyChanged(Notification notification) + { + updateChildren(notification); + + switch (notification.getFeatureID(PropertyChange.class)) + { + case EvolutionPackage.PROPERTY_CHANGE__OLD_VALUE: + case EvolutionPackage.PROPERTY_CHANGE__NEW_VALUE: + case EvolutionPackage.PROPERTY_CHANGE__KIND: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) + { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + + private static void formatValue(Object value, StringBuilder builder) + { + if (value instanceof List<?>) + { + List<?> list = (List<?>)value; + boolean first = true; + for (Object element : list) + { + if (first) + { + first = false; + } + else + { + builder.append(", "); + } + + formatValueSingle(element, builder); + } + } + else + { + formatValueSingle(value, builder); + } + } + + private static void formatValueSingle(Object value, StringBuilder builder) + { + if (value instanceof ENamedElement) + { + builder.append(((ENamedElement)value).getName()); + } + else + { + builder.append(String.valueOf(value)); + } + } + +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ReleaseItemProvider.java b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ReleaseItemProvider.java new file mode 100644 index 0000000000..2576c88618 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ReleaseItemProvider.java @@ -0,0 +1,256 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.provider; + +import org.eclipse.emf.cdo.evolution.EvolutionPackage; +import org.eclipse.emf.cdo.evolution.Release; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.ecore.EcoreFactory; +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.StyledString; +import org.eclipse.emf.edit.provider.ViewerNotification; + +import java.util.Collection; +import java.util.Date; +import java.util.List; + +/** + * This is the item provider adapter for a {@link org.eclipse.emf.cdo.evolution.Release} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ReleaseItemProvider extends ModelSetItemProvider +{ + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ReleaseItemProvider(AdapterFactory adapterFactory) + { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) + { + if (itemPropertyDescriptors == null) + { + super.getPropertyDescriptors(object); + + addVersionPropertyDescriptor(object); + addDatePropertyDescriptor(object); + addAllPackagesPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Date feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addDatePropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Release_date_feature"), getString("_UI_PropertyDescriptor_description", "_UI_Release_date_feature", "_UI_Release_type"), + EvolutionPackage.Literals.RELEASE__DATE, true, false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null)); + } + + /** + * This adds a property descriptor for the Version feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addVersionPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Release_version_feature"), getString("_UI_PropertyDescriptor_description", "_UI_Release_version_feature", "_UI_Release_type"), + EvolutionPackage.Literals.RELEASE__VERSION, true, false, false, ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null)); + } + + /** + * This adds a property descriptor for the All Packages feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addAllPackagesPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Release_allPackages_feature"), getString("_UI_PropertyDescriptor_description", "_UI_Release_allPackages_feature", "_UI_Release_type"), + EvolutionPackage.Literals.RELEASE__ALL_PACKAGES, false, false, false, null, null, null)); + } + + /** + * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an + * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or + * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Collection<? extends EStructuralFeature> getChildrenFeaturesGen(Object object) + { + if (childrenFeatures == null) + { + super.getChildrenFeatures(object); + childrenFeatures.add(EvolutionPackage.Literals.RELEASE__ROOT_PACKAGES); + } + return childrenFeatures; + } + + /** + * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an + * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or + * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + @Override + public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) + { + @SuppressWarnings("unchecked") + List<EStructuralFeature> childrenFeatures = (List<EStructuralFeature>)getChildrenFeaturesGen(object); + + childrenFeatures.remove(EvolutionPackage.Literals.RELEASE__ROOT_PACKAGES); + childrenFeatures.add(0, EvolutionPackage.Literals.RELEASE__ROOT_PACKAGES); + + return childrenFeatures; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EStructuralFeature getChildFeature(Object object, Object child) + { + // Check the type of the specified child object and return the proper feature to use for + // adding (see {@link AddCommand}) it as a child. + + return super.getChildFeature(object, child); + } + + @Override + protected boolean hasChildren(Object object, boolean optimized) + { + Release release = (Release)object; + return !release.getRootPackages().isEmpty(); + } + + /** + * This returns Release.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) + { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Release")); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean shouldComposeCreationImage() + { + return true; + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) + { + return ((StyledString)getStyledText(object)).getString(); + } + + /** + * This returns the label styled text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + @Override + public Object getStyledText(Object object) + { + StyledString styledLabel = new StyledString(); + styledLabel.append(getString("_UI_Release_type"), StyledString.Style.QUALIFIER_STYLER); + styledLabel.append(" v" + ((Release)object).getVersion()); + + Date date = ((Release)object).getDate(); + if (date != null) + { + styledLabel.append(" " + date.toString(), StyledString.Style.DECORATIONS_STYLER); + } + + return styledLabel; + } + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void notifyChanged(Notification notification) + { + updateChildren(notification); + + switch (notification.getFeatureID(Release.class)) + { + case EvolutionPackage.RELEASE__VERSION: + case EvolutionPackage.RELEASE__DATE: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + case EvolutionPackage.RELEASE__ROOT_PACKAGES: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) + { + super.collectNewChildDescriptors(newChildDescriptors, object); + + newChildDescriptors.add(createChildParameter(EvolutionPackage.Literals.RELEASE__ROOT_PACKAGES, EcoreFactory.eINSTANCE.createEPackage())); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/.classpath b/plugins/org.eclipse.emf.cdo.evolution.editor/.classpath new file mode 100644 index 0000000000..64c5e31b7a --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/.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.evolution.editor/.project b/plugins/org.eclipse.emf.cdo.evolution.editor/.project new file mode 100644 index 0000000000..297c6f6a85 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/.project @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>org.eclipse.emf.cdo.evolution.editor</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.api.tools.apiAnalysisBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.oomph.version.VersionBuilder</name> + <arguments> + <dictionary> + <key>check.maven.pom</key> + <value>true</value> + </dictionary> + <dictionary> + <key>ignore.lower.bound.dependency.ranges</key> + <value>true</value> + </dictionary> + <dictionary> + <key>release.path</key> + <value>/org.eclipse.emf.cdo.releng/versions/release.xml</value> + </dictionary> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature> + <nature>org.eclipse.oomph.version.VersionNature</nature> + </natures> + <filteredResources> + <filter> + <id>1396938000000</id> + <name></name> + <type>10</type> + <matcher> + <id>org.eclipse.ui.ide.multiFilter</id> + <arguments>1.0-projectRelativePath-matches-true-false-target</arguments> + </matcher> + </filter> + </filteredResources> +</projectDescription> diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.emf.cdo.evolution.editor/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000..ff3d8e623b --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,412 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.builder.cleanOutputFolder=clean +org.eclipse.jdt.core.builder.duplicateResourceTask=warning +org.eclipse.jdt.core.builder.invalidClasspath=abort +org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore +org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch,*.ucls,doc-files/,package.html,package-info.java +org.eclipse.jdt.core.circularClasspath=error +org.eclipse.jdt.core.classpath.exclusionPatterns=enabled +org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled +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.annotation.missingNonNullByDefaultAnnotation=ignore +org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull +org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault +org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable +org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled +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.maxProblemPerUnit=100 +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=enabled +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.explicitlyClosedAutoCloseable=ignore +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.includeNullInfoFromAsserts=disabled +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.missingDefaultCase=ignore +org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning +org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled +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.nullAnnotationInferenceConflict=error +org.eclipse.jdt.core.compiler.problem.nullReference=warning +org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error +org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=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.potentiallyUnclosedCloseable=ignore +org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning +org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning +org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning +org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore +org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning +org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore +org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore +org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled +org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning +org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled +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.unavoidableGenericTypeProblems=enabled +org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning +org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning +org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore +org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning +org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore +org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore +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_annotation=0 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_assignment=0 +org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 +org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 +org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0 +org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 +org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0 +org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80 +org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 +org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16 +org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_after_package=1 +org.eclipse.jdt.core.formatter.blank_lines_before_field=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=false +org.eclipse.jdt.core.formatter.comment.format_line_comments=true +org.eclipse.jdt.core.formatter.comment.format_source_code=true +org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true +org.eclipse.jdt.core.formatter.comment.indent_root_tags=true +org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert +org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert +org.eclipse.jdt.core.formatter.comment.line_length=120 +org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true +org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true +org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false +org.eclipse.jdt.core.formatter.compact_else_if=true +org.eclipse.jdt.core.formatter.continuation_indentation=2 +org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 +org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off +org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on +org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false +org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true +org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_empty_lines=false +org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true +org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false +org.eclipse.jdt.core.formatter.indentation.size=2 +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_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_try=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert +org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert +org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.join_lines_in_comments=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=160 +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_on_off_tags=false +org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false +org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true +org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true +org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true +org.eclipse.jdt.core.incompatibleJDKLevel=ignore +org.eclipse.jdt.core.incompleteClasspath=error diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/.settings/org.eclipse.jdt.launching.prefs b/plugins/org.eclipse.emf.cdo.evolution.editor/.settings/org.eclipse.jdt.launching.prefs new file mode 100644 index 0000000000..556ed07a3c --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/.settings/org.eclipse.jdt.launching.prefs @@ -0,0 +1,3 @@ +#Fri Sep 02 05:38:34 CEST 2011 +eclipse.preferences.version=1 +org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=ignore diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/.settings/org.eclipse.jdt.ui.prefs b/plugins/org.eclipse.emf.cdo.evolution.editor/.settings/org.eclipse.jdt.ui.prefs new file mode 100644 index 0000000000..222aec0421 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/.settings/org.eclipse.jdt.ui.prefs @@ -0,0 +1,119 @@ +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=12 +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-2018 Eike Stepper (Loehne, 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 * Eike Stepper - 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 Eike Stepper\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=false +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.evolution.editor/.settings/org.eclipse.ltk.core.refactoring.prefs b/plugins/org.eclipse.emf.cdo.evolution.editor/.settings/org.eclipse.ltk.core.refactoring.prefs new file mode 100644 index 0000000000..864e30fe5d --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/.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.evolution.editor/.settings/org.eclipse.mylyn.tasks.ui.prefs b/plugins/org.eclipse.emf.cdo.evolution.editor/.settings/org.eclipse.mylyn.tasks.ui.prefs new file mode 100644 index 0000000000..b050639a54 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/.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.evolution.editor/.settings/org.eclipse.mylyn.team.ui.prefs b/plugins/org.eclipse.emf.cdo.evolution.editor/.settings/org.eclipse.mylyn.team.ui.prefs new file mode 100644 index 0000000000..97c11e6725 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/.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\r\n${task.url} +eclipse.preferences.version=1 diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/.settings/org.eclipse.pde.api.tools.prefs b/plugins/org.eclipse.emf.cdo.evolution.editor/.settings/org.eclipse.pde.api.tools.prefs new file mode 100644 index 0000000000..0c17d59e45 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/.settings/org.eclipse.pde.api.tools.prefs @@ -0,0 +1,95 @@ +#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=Error +MISSING_EE_DESCRIPTIONS=Warning +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=Ignore +automatically_removed_unused_problem_filters=Disabled +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.evolution.editor/.settings/org.eclipse.pde.prefs b/plugins/org.eclipse.emf.cdo.evolution.editor/.settings/org.eclipse.pde.prefs new file mode 100644 index 0000000000..fe01bb701d --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/.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=2 +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.evolution.editor/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.evolution.editor/META-INF/MANIFEST.MF new file mode 100644 index 0000000000..8d4420235f --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/META-INF/MANIFEST.MF @@ -0,0 +1,24 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: org.eclipse.emf.cdo.evolution.editor;singleton:=true +Automatic-Module-Name: org.eclipse.emf.cdo.evolution.editor +Bundle-Version: 1.0.0.qualifier +Bundle-ClassPath: . +Bundle-Activator: org.eclipse.emf.cdo.evolution.presentation.EvolutionEditorPlugin$Implementation +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: J2SE-1.5 +Export-Package: org.eclipse.emf.cdo.evolution.presentation;version="1.0.0", + org.eclipse.emf.cdo.evolution.presentation.quickfix;version="1.0.0" +Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)";visibility:=reexport, + org.eclipse.core.resources;bundle-version="[3.5.0,4.0.0)";visibility:=reexport, + org.eclipse.emf.cdo.evolution.edit;bundle-version="[1.0.0,2.0.0)";visibility:=reexport, + org.eclipse.emf.ecore.xmi;bundle-version="[2.5.0,3.0.0)";visibility:=reexport, + org.eclipse.emf.edit.ui;bundle-version="[2.5.0,3.0.0)";visibility:=reexport, + org.eclipse.jface.text;bundle-version="[3.5.0,4.0.0)", + org.eclipse.ui.ide;bundle-version="[3.5.0,4.0.0)";visibility:=reexport, + org.eclipse.emf.ecore.edit;bundle-version="[2.5.0,3.0.0)";visibility:=reexport, + org.eclipse.net4j.ui.shared;bundle-version="[4.0.0,5.0.0)", + org.eclipse.emf.ecore.editor;bundle-version="[2.5.0,3.0.0)" +Bundle-ActivationPolicy: lazy diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/build.properties b/plugins/org.eclipse.emf.cdo.evolution.editor/build.properties new file mode 100644 index 0000000000..5fb07711cf --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/build.properties @@ -0,0 +1,10 @@ +# + +bin.includes = .,\ + icons/,\ + META-INF/,\ + plugin.xml,\ + plugin.properties +jars.compile.order = . +source.. = src/ +output.. = bin diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/icons/full/obj16/EvolutionModelFile.gif b/plugins/org.eclipse.emf.cdo.evolution.editor/icons/full/obj16/EvolutionModelFile.gif Binary files differnew file mode 100644 index 0000000000..09bd7b3a29 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/icons/full/obj16/EvolutionModelFile.gif diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/icons/full/wizban/NewEvolution.gif b/plugins/org.eclipse.emf.cdo.evolution.editor/icons/full/wizban/NewEvolution.gif Binary files differnew file mode 100644 index 0000000000..e3b9c14a6a --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/icons/full/wizban/NewEvolution.gif diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/icons/full/wizban/quick_fix.png b/plugins/org.eclipse.emf.cdo.evolution.editor/icons/full/wizban/quick_fix.png Binary files differnew file mode 100644 index 0000000000..87ef6f5b03 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/icons/full/wizban/quick_fix.png diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/icons/full/wizban/quick_fix@2x.png b/plugins/org.eclipse.emf.cdo.evolution.editor/icons/full/wizban/quick_fix@2x.png Binary files differnew file mode 100644 index 0000000000..1ce492806a --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/icons/full/wizban/quick_fix@2x.png diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/plugin.properties b/plugins/org.eclipse.emf.cdo.evolution.editor/plugin.properties new file mode 100644 index 0000000000..bf422441ea --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/plugin.properties @@ -0,0 +1,58 @@ +# + +pluginName = CDO Model Repository Evolution Editor +providerName = Eclipse Modeling Project + +_UI_EvolutionEditor_menu = &Evolution Editor + +_UI_CreateChild_menu_item = &New Child +_UI_CreateSibling_menu_item = N&ew Sibling + +_UI_ShowPropertiesView_menu_item = Show &Properties View +_UI_RefreshViewer_menu_item = &Refresh + +_UI_SelectionPage_label = Selection + +_UI_NoObjectSelected = Selected Nothing +_UI_SingleObjectSelected = Selected Object: {0} +_UI_MultiObjectSelected = Selected {0} Objects + +_UI_OpenEditorError_label = Open Editor + +_UI_Wizard_category = Example EMF Model Creation Wizards + +_UI_CreateModelError_message = Problems encountered in file "{0}" + +_UI_EvolutionModelWizard_label = Evolution Model +_UI_EvolutionModelWizard_description = Create a new Evolution model + +_UI_EvolutionEditor_label = Evolution Model Editor + +_UI_EvolutionEditorFilenameDefaultBase = My +_UI_EvolutionEditorFilenameExtensions = evolution + +_UI_Wizard_label = New + +_WARN_FilenameExtension = The file name must end in ''.{0}'' +_WARN_FilenameExtensions = The file name must have one of the following extensions: {0} + +_UI_ModelObject = &Model Object +_UI_XMLEncoding = &XML Encoding +_UI_XMLEncodingChoices = UTF-8 ASCII UTF-16 UTF-16BE UTF-16LE ISO-8859-1 +_UI_Wizard_initial_object_description = Select a model object to create + +_UI_FileConflict_label = File Conflict +_WARN_FileConflict = There are unsaved changes that conflict with changes made outside the editor. Do you wish to discard this editor's changes? + +_UI_ValidatingPhase_message = Validating phase {0} + +_QF_SelectModelsFromWorkspace = Select one or more models from the workspace +_QF_SelectModelFromWorkspace = Select a model from the workspace +_QF_PackageMissing = Add the model ''{0}'' to the evolution +_QF_SetVersionIntoNamespace = Set the upcoming version v{0} into the namespace URI +_QF_DisableUniqueNamespaceEnforcement = Disable enforcement of unique namespace URIs in this evolution +_QF_AssignID = Assign a new ID +_QF_RememberID = Remember the old ID and assign a new ID +_QF_ReplaceID = Replace the existing ID with a new ID +_QF_SpecifyFeaturePath = Specify the feature path for the {0} feature ''{1}'' +_QF_CreateRelease = Create the v{0} release diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/plugin.xml b/plugins/org.eclipse.emf.cdo.evolution.editor/plugin.xml new file mode 100644 index 0000000000..a1def4025d --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/plugin.xml @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.0"?> + +<!-- +--> + +<plugin> + + <extension point="org.eclipse.net4j.util.factories"> + <factory + productGroup="org.eclipse.emf.cdo.evolution.diagnosticResolutionGenerators" + type="default" + class="org.eclipse.emf.cdo.evolution.presentation.quickfix.DefaultDiagnosticResolutionGenerator$Factory"/> + </extension> + + <extension point="org.eclipse.ui.newWizards"> + <!-- @generated evolution --> + <category + id="org.eclipse.emf.ecore.Wizard.category.ID" + name="%_UI_Wizard_category"/> + <wizard + id="org.eclipse.emf.cdo.evolution.presentation.EvolutionModelWizardID" + name="%_UI_EvolutionModelWizard_label" + class="org.eclipse.emf.cdo.evolution.presentation.EvolutionModelWizard" + category="org.eclipse.emf.ecore.Wizard.category.ID" + icon="icons/full/obj16/EvolutionModelFile.gif"> + <description>%_UI_EvolutionModelWizard_description</description> + <selection class="org.eclipse.core.resources.IResource"/> + </wizard> + </extension> + + <extension point="org.eclipse.ui.editors"> + <!-- @generated evolution --> + <editor + id="org.eclipse.emf.cdo.evolution.presentation.EvolutionEditorID" + name="%_UI_EvolutionEditor_label" + icon="icons/full/obj16/EvolutionModelFile.gif" + extensions="evolution" + class="org.eclipse.emf.cdo.evolution.presentation.EvolutionEditor" + contributorClass="org.eclipse.emf.cdo.evolution.presentation.EvolutionActionBarContributor"> + </editor> + </extension> + +</plugin> diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/EvolutionActionBarContributor.java b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/EvolutionActionBarContributor.java new file mode 100644 index 0000000000..bb586373cb --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/EvolutionActionBarContributor.java @@ -0,0 +1,812 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.presentation; + +import org.eclipse.emf.cdo.evolution.util.ElementHandler; +import org.eclipse.emf.cdo.evolution.util.ElementRunnable; +import org.eclipse.emf.cdo.evolution.util.IDAnnotation; + +import org.eclipse.emf.common.ui.action.ViewerFilterAction; +import org.eclipse.emf.common.ui.viewer.IViewerProvider; +import org.eclipse.emf.ecore.EAnnotation; +import org.eclipse.emf.ecore.EGenericType; +import org.eclipse.emf.ecore.EModelElement; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.ETypeParameter; +import org.eclipse.emf.ecore.EcorePackage; +import org.eclipse.emf.ecore.presentation.EcoreEditorPlugin; +import org.eclipse.emf.edit.command.ChangeCommand; +import org.eclipse.emf.edit.command.CommandParameter; +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.domain.IEditingDomainProvider; +import org.eclipse.emf.edit.ui.action.CollapseAllAction; +import org.eclipse.emf.edit.ui.action.ControlAction; +import org.eclipse.emf.edit.ui.action.CreateChildAction; +import org.eclipse.emf.edit.ui.action.CreateSiblingAction; +import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor; +import org.eclipse.emf.edit.ui.action.FindAction; +import org.eclipse.emf.edit.ui.action.LoadResourceAction; +import org.eclipse.emf.edit.ui.provider.DiagnosticDecorator; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.ActionContributionItem; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.IContributionItem; +import org.eclipse.jface.action.IContributionManager; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.action.SubContributionItem; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.Viewer; +import org.eclipse.swt.widgets.Display; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.PartInitException; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; +import java.util.LinkedHashSet; +import java.util.Set; + +/** + * This is the action bar contributor for the Evolution model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class EvolutionActionBarContributor extends EditingDomainActionBarContributor implements ISelectionChangedListener +{ + /** + * This keeps track of the active editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IEditorPart activeEditorPart; + + /** + * This keeps track of the current selection provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelectionProvider selectionProvider; + + /** + * This action opens the Properties view. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IAction showPropertiesViewAction = new Action(EvolutionEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) + { + @Override + public void run() + { + try + { + getPage().showView("org.eclipse.ui.views.PropertySheet"); + } + catch (PartInitException exception) + { + EvolutionEditorPlugin.INSTANCE.log(exception); + } + } + }; + + /** + * This action refreshes the viewer of the current editor if the editor + * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IAction refreshViewerAction = new Action(EvolutionEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) + { + @Override + public boolean isEnabled() + { + return activeEditorPart instanceof IViewerProvider; + } + + @Override + public void run() + { + if (activeEditorPart instanceof IViewerProvider) + { + Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer(); + if (viewer != null) + { + viewer.refresh(); + } + } + } + }; + + protected IAction assignIDsAction = new IDAction("Assign IDs") + { + @Override + protected void handleID(EModelElement modelElement) + { + IDAnnotation.ensureValue(modelElement); + } + }; + + protected IAction removeIDsAction = new IDAction("Remove IDs") + { + @Override + protected void handleID(EModelElement modelElement) + { + IDAnnotation.removeFrom(modelElement); + } + }; + + /** + * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor + * generated for the current selection by the item provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> createChildActions; + + /** + * This is the menu manager into which menu contribution items should be added for CreateChild actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IMenuManager createChildMenuManager; + + /** + * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor + * generated for the current selection by the item provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> createSiblingActions; + + /** + * This is the menu manager into which menu contribution items should be added for CreateSibling actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IMenuManager createSiblingMenuManager; + + protected SelectionChangedEvent lastSelectionChangedEvent; + + protected ViewerFilterAction showGenericsAction = new ViewerFilterAction(EcoreEditorPlugin.INSTANCE.getString("_UI_ShowGenerics_menu_item"), + IAction.AS_CHECK_BOX) + { + @Override + protected void refreshViewers() + { + if (activeEditorPart instanceof EvolutionEditor) + { + ((EvolutionEditor)activeEditorPart).ecoreItemProviderAdapterFactory.setShowGenerics(isChecked()); + } + + super.refreshViewers(); + + if (lastSelectionChangedEvent != null && activeEditorPart instanceof EvolutionEditor) + { + selectionChanged(lastSelectionChangedEvent); + } + } + + @Override + public boolean select(Viewer viewer, Object parentElement, Object element) + { + return isChecked() || !(element instanceof ETypeParameter || element instanceof EGenericType); + } + }; + + /** + * This creates an instance of the contributor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public EvolutionActionBarContributor() + { + super(ADDITIONS_LAST_STYLE); + loadResourceAction = new LoadResourceAction(); + // validateAction = new ValidateAction(); + liveValidationAction = new DiagnosticDecorator.LiveValidator.LiveValidationAction(EvolutionEditorPlugin.getPlugin().getDialogSettings()); + controlAction = new ControlAction(); + findAction = FindAction.create(); + collapseAllAction = new CollapseAllAction(); + + showGenericsAction.setChecked(Boolean.parseBoolean(EcoreEditorPlugin.getPlugin().getDialogSettings().get("showGenericsAction"))); + } + + public void showGenerics(boolean isChecked) + { + if (showGenericsAction != null) + { + showGenericsAction.setChecked(isChecked); + } + } + + @Override + public void dispose() + { + EcoreEditorPlugin.getPlugin().getDialogSettings().put("showGenericsAction", Boolean.toString(showGenericsAction.isChecked())); + + super.dispose(); + } + + /** + * This adds Separators for editor additions to the tool bar. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + @Override + public void contributeToToolBar(IToolBarManager toolBarManager) + { + super.contributeToToolBar(toolBarManager); + toolBarManager.add(new Separator("evolution-settings")); + toolBarManager.add(new Separator("evolution-additions")); + toolBarManager.add(assignIDsAction); + toolBarManager.add(removeIDsAction); + } + + /** + * This adds to the menu bar a menu and some separators for editor additions, + * as well as the sub-menus for object creation items. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + @Override + public void contributeToMenu(IMenuManager menuManager) + { + super.contributeToMenu(menuManager); + + IMenuManager submenuManager = new MenuManager(EvolutionEditorPlugin.INSTANCE.getString("_UI_EvolutionEditor_menu"), "org.eclipse.emf.cdo.evolutionMenuID"); + menuManager.insertAfter("additions", submenuManager); + submenuManager.add(new Separator("settings")); + submenuManager.add(new Separator("actions")); + submenuManager.add(new Separator("additions")); + submenuManager.add(new Separator("additions-end")); + + // Prepare for CreateChild item addition or removal. + // + createChildMenuManager = new MenuManager(EvolutionEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); + submenuManager.insertBefore("additions", createChildMenuManager); + + // Prepare for CreateSibling item addition or removal. + // + createSiblingMenuManager = new MenuManager(EvolutionEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); + submenuManager.insertBefore("additions", createSiblingMenuManager); + + // Force an update because Eclipse hides empty menus now. + // + submenuManager.addMenuListener(new IMenuListener() + { + public void menuAboutToShow(IMenuManager menuManager) + { + menuManager.updateAll(true); + } + }); + + addGlobalActions(submenuManager); + submenuManager.insertBefore("additions-end", showGenericsAction); + } + + /** + * When the active editor changes, this remembers the change and registers with it as a selection provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setActiveEditorGen(IEditorPart part) + { + super.setActiveEditor(part); + activeEditorPart = part; + + // Switch to the new selection provider. + // + if (selectionProvider != null) + { + selectionProvider.removeSelectionChangedListener(this); + } + if (part == null) + { + selectionProvider = null; + } + else + { + selectionProvider = part.getSite().getSelectionProvider(); + selectionProvider.addSelectionChangedListener(this); + + // Fake a selection changed event to update the menus. + // + if (selectionProvider.getSelection() != null) + { + selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection())); + } + } + } + + /** + * When the active editor changes, this remembers the change and registers with it as a selection provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + @Override + public void setActiveEditor(IEditorPart part) + { + setActiveEditorGen(part); + + if (part instanceof EvolutionEditor) + { + showGenericsAction.addViewer(((EvolutionEditor)part).getViewer()); + showGenericsAction.setEnabled(true); + } + else + { + showGenericsAction.setEnabled(false); + } + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener}, + * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings + * that can be added to the selected object and updating the menus accordingly. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void selectionChanged(SelectionChangedEvent event) + { + // Remove any menu items for old selection. + // + if (createChildMenuManager != null) + { + depopulateManager(createChildMenuManager, createChildActions); + } + if (createSiblingMenuManager != null) + { + depopulateManager(createSiblingMenuManager, createSiblingActions); + } + + // Query the new selection for appropriate new child/sibling descriptors + // + Collection<?> newChildDescriptors = null; + Collection<?> newSiblingDescriptors = null; + + ISelection selection = event.getSelection(); + if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) + { + Object object = ((IStructuredSelection)selection).getFirstElement(); + + EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain(); + + newChildDescriptors = domain.getNewChildDescriptors(object, null); + newSiblingDescriptors = domain.getNewChildDescriptors(null, object); + } + + // Generate actions for selection; populate and redraw the menus. + // + createChildActions = generateCreateChildActions(newChildDescriptors, selection); + createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection); + + if (createChildMenuManager != null) + { + populateManager(createChildMenuManager, createChildActions, null); + createChildMenuManager.update(true); + } + if (createSiblingMenuManager != null) + { + populateManager(createSiblingMenuManager, createSiblingActions, null); + createSiblingMenuManager.update(true); + } + } + + /** + * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>, + * and returns the collection of these actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) + { + Collection<IAction> actions = new ArrayList<IAction>(); + if (descriptors != null) + { + for (Object descriptor : descriptors) + { + if (!showGenericsAction.isChecked() && descriptor instanceof CommandParameter) + { + Object feature = ((CommandParameter)descriptor).getFeature(); + if (isGenericFeature(feature)) + { + continue; + } + } + actions.add(new EcoreCreateChildAction(activeEditorPart, selection, descriptor)); + } + } + return actions; + } + + /** + * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>, + * and returns the collection of these actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) + { + Collection<IAction> actions = new ArrayList<IAction>(); + if (descriptors != null) + { + for (Object descriptor : descriptors) + { + if (!showGenericsAction.isChecked() && descriptor instanceof CommandParameter) + { + Object feature = ((CommandParameter)descriptor).getFeature(); + if (isGenericFeature(feature)) + { + continue; + } + } + actions.add(new EcoreCreateSiblingAction(activeEditorPart, selection, descriptor)); + } + } + return actions; + } + + protected boolean isGenericFeature(Object feature) + { + return feature == EcorePackage.Literals.ECLASS__EGENERIC_SUPER_TYPES || feature == EcorePackage.Literals.ECLASSIFIER__ETYPE_PARAMETERS + || feature == EcorePackage.Literals.EOPERATION__EGENERIC_EXCEPTIONS || feature == EcorePackage.Literals.EOPERATION__ETYPE_PARAMETERS + || feature == EcorePackage.Literals.ETYPED_ELEMENT__EGENERIC_TYPE; + } + + /** + * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s + * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection, + * by inserting them before the specified contribution item <code>contributionID</code>. + * If <code>contributionID</code> is <code>null</code>, they are simply added. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) + { + if (actions != null) + { + // Look for actions that create EAnnotations. + // + Set<IAction> ignoredActions = new HashSet<IAction>(); + Set<IAction> annotationActions = new LinkedHashSet<IAction>(); + for (IAction action : actions) + { + if (action instanceof EObjectProvider) + { + EObjectProvider eObjectProvider = (EObjectProvider)action; + EObject eObject = eObjectProvider.getEObject(); + if (eObject instanceof EAnnotation) + { + annotationActions.add(action); + ignoredActions.add(action); + } + } + } + + // If there is more than one action that creates an annotation... + // + if (annotationActions.size() > 1) + { + // Create a menu manager to group them. + // This assumes the first action is one for the null source. + // + IAction action = annotationActions.iterator().next(); + String actionText = action.getText(); + MenuManager annotationMenuManager = new MenuManager(actionText, action.getImageDescriptor(), "annotations"); + + // Add that menu manager instead of the individual actions. + if (contributionID != null) + { + manager.insertBefore(contributionID, annotationMenuManager); + } + else + { + manager.add(annotationMenuManager); + } + + // Add an item for each annotation action. + // + for (IAction annotationAction : annotationActions) + { + annotationMenuManager.add(annotationAction); + String source = ((EAnnotation)((EObjectProvider)annotationAction).getEObject()).getSource(); + if (source != null) + { + // Set the label to include the source. + // + annotationAction.setText(actionText + " - " + source); + } + } + } + else + { + ignoredActions.clear(); + } + + for (IAction action : actions) + { + if (!ignoredActions.contains(action)) + { + if (contributionID != null) + { + manager.insertBefore(contributionID, action); + } + else + { + manager.add(action); + } + } + } + } + } + + /** + * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s + * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) + { + if (actions != null) + { + IContributionItem[] items = manager.getItems(); + for (int i = 0; i < items.length; i++) + { + // Look into SubContributionItems + // + IContributionItem contributionItem = items[i]; + while (contributionItem instanceof SubContributionItem) + { + contributionItem = ((SubContributionItem)contributionItem).getInnerItem(); + } + + // Delete the ActionContributionItems with matching action. + // + if (contributionItem instanceof ActionContributionItem) + { + IAction action = ((ActionContributionItem)contributionItem).getAction(); + if (actions.contains(action)) + { + manager.remove(contributionItem); + } + } + } + } + } + + /** + * This populates the pop-up menu before it appears. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void menuAboutToShow(IMenuManager menuManager) + { + super.menuAboutToShow(menuManager); + MenuManager submenuManager = null; + + submenuManager = new MenuManager(EvolutionEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); + populateManager(submenuManager, createChildActions, null); + menuManager.insertBefore("edit", submenuManager); + + submenuManager = new MenuManager(EvolutionEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); + populateManager(submenuManager, createSiblingActions, null); + menuManager.insertBefore("edit", submenuManager); + } + + /** + * This inserts global actions before the "additions-end" separator. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void addGlobalActions(IMenuManager menuManager) + { + menuManager.insertAfter("additions-end", new Separator("ui-actions")); + menuManager.insertAfter("ui-actions", showPropertiesViewAction); + + refreshViewerAction.setEnabled(refreshViewerAction.isEnabled()); + menuManager.insertAfter("ui-actions", refreshViewerAction); + + super.addGlobalActions(menuManager); + } + + /** + * This ensures that a delete action will clean up all references to deleted objects. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean removeAllReferencesOnDelete() + { + return true; + } + + /** + * An interface implemented by {@link EcoreCreateChildAction} and {@link EcoreCreateSiblingAction} to provide access to the data in the descriptor. + */ + public interface EObjectProvider + { + public EObject getEObject(); + } + + /** + * A create child action subclass that provides access to the {@link #descriptor} and specializes {@link #run()} to show the properties view. + */ + public class EcoreCreateChildAction extends CreateChildAction implements EObjectProvider + { + public EcoreCreateChildAction(IWorkbenchPart workbenchPart, ISelection selection, Object descriptor) + { + super(workbenchPart, selection, descriptor); + } + + public EObject getEObject() + { + if (descriptor instanceof CommandParameter) + { + CommandParameter commandParameter = (CommandParameter)descriptor; + return commandParameter.getEValue(); + } + else + { + return null; + } + } + + @Override + public void run() + { + super.run(); + + // This is dispatched twice because the command stack listener dispatches once and then the viewer selection is + // also dispatches once, + // and we need to delay until the selection is established. + // + final Display display = getPage().getWorkbenchWindow().getShell().getDisplay(); + display.asyncExec(new Runnable() + { + public void run() + { + display.asyncExec(new Runnable() + { + public void run() + { + showPropertiesViewAction.run(); + } + }); + } + }); + } + } + + /** + * A create sibling action subclass that provides access to the {@link #descriptor} and specializes {@link #run()} to show the properties view. + */ + public class EcoreCreateSiblingAction extends CreateSiblingAction implements EObjectProvider + { + public EcoreCreateSiblingAction(IWorkbenchPart workbenchPart, ISelection selection, Object descriptor) + { + super(workbenchPart, selection, descriptor); + } + + public EObject getEObject() + { + if (descriptor instanceof CommandParameter) + { + CommandParameter commandParameter = (CommandParameter)descriptor; + return commandParameter.getEValue(); + } + else + { + return null; + } + } + + @Override + public void run() + { + super.run(); + + // This is dispatched twice because the command stack listener dispatches once and then the viewer selection is + // also dispatches once, + // and we need to delay until the selection is established. + // + final Display display = getPage().getWorkbenchWindow().getShell().getDisplay(); + display.asyncExec(new Runnable() + { + public void run() + { + display.asyncExec(new Runnable() + { + public void run() + { + showPropertiesViewAction.run(); + } + }); + } + }); + } + } + + /** + * @author Eike Stepper + */ + private abstract class IDAction extends Action + { + public IDAction(String text) + { + super(text); + } + + @Override + public void run() + { + if (selectionProvider != null) + { + ISelection selection = selectionProvider.getSelection(); + if (selection instanceof IStructuredSelection) + { + IStructuredSelection ssel = (IStructuredSelection)selection; + final Object element = ssel.getFirstElement(); + if (element instanceof EModelElement) + { + final EModelElement rootElement = (EModelElement)element; + + EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain(); + ChangeCommand command = new ChangeCommand(rootElement) + { + @Override + protected void doExecute() + { + ElementHandler.execute(rootElement, new ElementRunnable() + { + public void run(EModelElement modelElement) + { + handleID(modelElement); + } + }); + } + }; + + domain.getCommandStack().execute(command); + } + } + } + } + + protected abstract void handleID(EModelElement modelElement); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/EvolutionEditor.java b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/EvolutionEditor.java new file mode 100644 index 0000000000..bff82ec24b --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/EvolutionEditor.java @@ -0,0 +1,3024 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.presentation; + +import org.eclipse.emf.cdo.evolution.Change; +import org.eclipse.emf.cdo.evolution.Evolution; +import org.eclipse.emf.cdo.evolution.EvolutionPackage; +import org.eclipse.emf.cdo.evolution.Release; +import org.eclipse.emf.cdo.evolution.impl.EvolutionImpl; +import org.eclipse.emf.cdo.evolution.presentation.quickfix.DiagnosticResolution; +import org.eclipse.emf.cdo.evolution.presentation.quickfix.QuickFixWizard; +import org.eclipse.emf.cdo.evolution.provider.EvolutionItemProviderAdapterFactory; +import org.eclipse.emf.cdo.evolution.util.DiagnosticID; +import org.eclipse.emf.cdo.evolution.util.ElementHandler; +import org.eclipse.emf.cdo.evolution.util.ValidationContext; +import org.eclipse.emf.cdo.evolution.util.ValidationPhase; + +import org.eclipse.net4j.ui.shared.SharedIcons; +import org.eclipse.net4j.util.ReflectUtil; +import org.eclipse.net4j.util.StringUtil; +import org.eclipse.net4j.util.WrappedException; + +import org.eclipse.emf.common.command.AbstractCommand; +import org.eclipse.emf.common.command.BasicCommandStack; +import org.eclipse.emf.common.command.Command; +import org.eclipse.emf.common.command.CommandStack; +import org.eclipse.emf.common.command.CommandStackListener; +import org.eclipse.emf.common.command.UnexecutableCommand; +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.ui.ImageURIRegistry; +import org.eclipse.emf.common.ui.MarkerHelper; +import org.eclipse.emf.common.ui.editor.ProblemEditorPart; +import org.eclipse.emf.common.ui.viewer.ColumnViewerInformationControlToolTipSupport; +import org.eclipse.emf.common.ui.viewer.IViewerProvider; +import org.eclipse.emf.common.util.BasicDiagnostic; +import org.eclipse.emf.common.util.Diagnostic; +import org.eclipse.emf.common.util.DiagnosticChain; +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EGenericType; +import org.eclipse.emf.ecore.EModelElement; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EReference; +import org.eclipse.emf.ecore.ETypeParameter; +import org.eclipse.emf.ecore.InternalEObject; +import org.eclipse.emf.ecore.provider.EcoreItemProviderAdapterFactory; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.util.Diagnostician; +import org.eclipse.emf.ecore.util.EContentAdapter; +import org.eclipse.emf.ecore.util.EObjectValidator; +import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.emf.edit.command.CommandParameter; +import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.domain.IEditingDomainProvider; +import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator; +import org.eclipse.emf.edit.provider.ComposedAdapterFactory; +import org.eclipse.emf.edit.provider.IItemLabelProvider; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.IItemPropertySource; +import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory; +import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory; +import org.eclipse.emf.edit.ui.EMFEditUIPlugin; +import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor; +import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor; +import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter; +import org.eclipse.emf.edit.ui.dnd.LocalTransfer; +import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter; +import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider; +import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider; +import org.eclipse.emf.edit.ui.provider.DecoratingColumLabelProvider; +import org.eclipse.emf.edit.ui.provider.DelegatingStyledCellLabelProvider; +import org.eclipse.emf.edit.ui.provider.DiagnosticDecorator; +import org.eclipse.emf.edit.ui.provider.DiagnosticDecorator.DiagnosticAdapter; +import org.eclipse.emf.edit.ui.provider.DiagnosticDecorator.LiveValidator; +import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry; +import org.eclipse.emf.edit.ui.provider.PropertySource; +import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider; +import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper; +import org.eclipse.emf.edit.ui.util.EditUIUtil; +import org.eclipse.emf.edit.ui.util.FindAndReplaceTarget; +import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IMarker; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IResourceChangeEvent; +import org.eclipse.core.resources.IResourceChangeListener; +import org.eclipse.core.resources.IResourceDelta; +import org.eclipse.core.resources.IResourceDeltaVisitor; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.Adapters; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.core.runtime.Status; +import org.eclipse.core.runtime.jobs.Job; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IStatusLineManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.dialogs.IDialogSettings; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; +import org.eclipse.jface.operation.IRunnableContext; +import org.eclipse.jface.operation.IRunnableWithProgress; +import org.eclipse.jface.text.IFindReplaceTarget; +import org.eclipse.jface.util.LocalSelectionTransfer; +import org.eclipse.jface.viewers.ColumnLabelProvider; +import org.eclipse.jface.viewers.IOpenListener; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredContentProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.OpenEvent; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.StructuredViewer; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.jface.viewers.TableViewerColumn; +import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.jface.viewers.Viewer; +import org.eclipse.jface.wizard.IWizard; +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.jface.wizard.WizardDialog; +import org.eclipse.osgi.util.NLS; +import org.eclipse.swt.SWT; +import org.eclipse.swt.custom.CTabFolder; +import org.eclipse.swt.custom.SashForm; +import org.eclipse.swt.dnd.DND; +import org.eclipse.swt.dnd.DropTargetEvent; +import org.eclipse.swt.dnd.FileTransfer; +import org.eclipse.swt.dnd.Transfer; +import org.eclipse.swt.events.ControlAdapter; +import org.eclipse.swt.events.ControlEvent; +import org.eclipse.swt.events.KeyAdapter; +import org.eclipse.swt.events.KeyEvent; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.graphics.Rectangle; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.swt.widgets.Table; +import org.eclipse.swt.widgets.TableColumn; +import org.eclipse.swt.widgets.Tree; +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IEditorSite; +import org.eclipse.ui.IPartListener; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.IWorkbenchPartSite; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.actions.WorkspaceModifyOperation; +import org.eclipse.ui.dialogs.SaveAsDialog; +import org.eclipse.ui.ide.IGotoMarker; +import org.eclipse.ui.part.FileEditorInput; +import org.eclipse.ui.part.MultiPageEditorPart; +import org.eclipse.ui.progress.IWorkbenchSiteProgressService; +import org.eclipse.ui.views.contentoutline.ContentOutline; +import org.eclipse.ui.views.contentoutline.ContentOutlinePage; +import org.eclipse.ui.views.contentoutline.IContentOutlinePage; +import org.eclipse.ui.views.properties.IPropertyDescriptor; +import org.eclipse.ui.views.properties.IPropertySheetEntry; +import org.eclipse.ui.views.properties.IPropertySheetPage; +import org.eclipse.ui.views.properties.IPropertySource; +import org.eclipse.ui.views.properties.PropertySheet; +import org.eclipse.ui.views.properties.PropertySheetPage; +import org.eclipse.ui.views.properties.PropertySheetSorter; + +import java.io.IOException; +import java.io.InputStream; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.EventObject; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * This is an example of a Evolution model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class EvolutionEditor extends MultiPageEditorPart implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker +{ + /** + * This keeps track of the editing domain that is used to track all changes to the model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected AdapterFactoryEditingDomain editingDomain; + + /** + * This is the one adapter factory used for providing views of the model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ComposedAdapterFactory adapterFactory; + + /** + * This is the content outline page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IContentOutlinePage contentOutlinePage; + + /** + * This is a kludge... + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IStatusLineManager contentOutlineStatusLineManager; + + /** + * This is the content outline page's viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer contentOutlineViewer; + + /** + * This is the property sheet page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected List<PropertySheetPage> propertySheetPages = new ArrayList<PropertySheetPage>(); + + /** + * This is the viewer that shadows the selection in the content outline. + * The parent relation must be correctly defined for this to work. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer selectionViewer; + + /** + * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Viewer currentViewer; + + /** + * This listens to which ever viewer is active. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelectionChangedListener selectionChangedListener; + + /** + * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>(); + + /** + * This keeps track of the selection of the editor as a whole. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelection editorSelection = StructuredSelection.EMPTY; + + /** + * The MarkerHelper is responsible for creating workspace resource markers presented + * in Eclipse's Problems View. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected MarkerHelper markerHelper = new EditUIMarkerHelper(); + + /** + * This listens for when the outline becomes active + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IPartListener partListener = new IPartListener() + { + public void partActivated(IWorkbenchPart p) + { + if (p instanceof ContentOutline) + { + if (((ContentOutline)p).getCurrentPage() == contentOutlinePage) + { + getActionBarContributor().setActiveEditor(EvolutionEditor.this); + + setCurrentViewer(contentOutlineViewer); + } + } + else if (p instanceof PropertySheet) + { + if (propertySheetPages.contains(((PropertySheet)p).getCurrentPage())) + { + getActionBarContributor().setActiveEditor(EvolutionEditor.this); + handleActivate(); + } + } + else if (p == EvolutionEditor.this) + { + handleActivate(); + } + } + + public void partBroughtToTop(IWorkbenchPart p) + { + // Ignore. + } + + public void partClosed(IWorkbenchPart p) + { + // Ignore. + } + + public void partDeactivated(IWorkbenchPart p) + { + // Ignore. + } + + public void partOpened(IWorkbenchPart p) + { + // Ignore. + } + }; + + /** + * Resources that have been removed since last activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> removedResources = new ArrayList<Resource>(); + + /** + * Resources that have been changed since last activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> changedResources = new ArrayList<Resource>(); + + /** + * Resources that have been saved. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> savedResources = new ArrayList<Resource>(); + + /** + * Map to store the diagnostic associated with a resource. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>(); + + /** + * Controls whether the problem indication should be updated. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean updateProblemIndication = true; + + /** + * Adapter used to update the problem indication when resources are demanded loaded. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EContentAdapter problemIndicationAdapter = new EContentAdapter() + { + protected boolean dispatching; + + @Override + public void notifyChanged(Notification notification) + { + if (notification.getNotifier() instanceof Resource) + { + switch (notification.getFeatureID(Resource.class)) + { + case Resource.RESOURCE__IS_LOADED: + case Resource.RESOURCE__ERRORS: + case Resource.RESOURCE__WARNINGS: + { + Resource resource = (Resource)notification.getNotifier(); + Diagnostic diagnostic = analyzeResourceProblems(resource, null); + if (diagnostic.getSeverity() != Diagnostic.OK) + { + resourceToDiagnosticMap.put(resource, diagnostic); + } + else + { + resourceToDiagnosticMap.remove(resource); + } + dispatchUpdateProblemIndication(); + break; + } + } + } + else + { + super.notifyChanged(notification); + } + } + + protected void dispatchUpdateProblemIndication() + { + if (updateProblemIndication && !dispatching) + { + dispatching = true; + getSite().getShell().getDisplay().asyncExec(new Runnable() + { + public void run() + { + dispatching = false; + updateProblemIndication(); + } + }); + } + } + + @Override + protected void setTarget(Resource target) + { + basicSetTarget(target); + } + + @Override + protected void unsetTarget(Resource target) + { + basicUnsetTarget(target); + resourceToDiagnosticMap.remove(target); + dispatchUpdateProblemIndication(); + } + }; + + /** + * This listens for workspace changes. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IResourceChangeListener resourceChangeListener = new IResourceChangeListener() + { + public void resourceChanged(IResourceChangeEvent event) + { + IResourceDelta delta = event.getDelta(); + try + { + class ResourceDeltaVisitor implements IResourceDeltaVisitor + { + protected ResourceSet resourceSet = editingDomain.getResourceSet(); + + protected Collection<Resource> changedResources = new ArrayList<Resource>(); + + protected Collection<Resource> removedResources = new ArrayList<Resource>(); + + public boolean visit(final IResourceDelta delta) + { + if (delta.getResource().getType() == IResource.FILE) + { + if (delta.getKind() == IResourceDelta.REMOVED || delta.getKind() == IResourceDelta.CHANGED) + { + final Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false); + if (resource != null) + { + if (delta.getKind() == IResourceDelta.REMOVED) + { + removedResources.add(resource); + } + else + { + if ((delta.getFlags() & IResourceDelta.MARKERS) != 0) + { + DiagnosticDecorator.Styled.DiagnosticAdapter.update(resource, + markerHelper.getMarkerDiagnostics(resource, (IFile)delta.getResource(), false)); + } + if ((delta.getFlags() & IResourceDelta.CONTENT) != 0) + { + if (!savedResources.remove(resource)) + { + changedResources.add(resource); + } + } + } + } + } + return false; + } + + return true; + } + + public Collection<Resource> getChangedResources() + { + return changedResources; + } + + public Collection<Resource> getRemovedResources() + { + return removedResources; + } + } + + final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor(); + delta.accept(visitor); + + if (!visitor.getRemovedResources().isEmpty()) + { + getSite().getShell().getDisplay().asyncExec(new Runnable() + { + public void run() + { + removedResources.addAll(visitor.getRemovedResources()); + if (!isDirty()) + { + getSite().getPage().closeEditor(EvolutionEditor.this, false); + } + } + }); + } + + if (!visitor.getChangedResources().isEmpty()) + { + getSite().getShell().getDisplay().asyncExec(new Runnable() + { + public void run() + { + changedResources.addAll(visitor.getChangedResources()); + if (getSite().getPage().getActiveEditor() == EvolutionEditor.this) + { + handleActivate(); + } + } + }); + } + } + catch (CoreException exception) + { + EvolutionEditorPlugin.INSTANCE.log(exception); + } + } + }; + + protected EcoreItemProviderAdapterFactory ecoreItemProviderAdapterFactory; + + private TableViewer problemViewer; + + private final Set<Object> readOnlyObjects = new HashSet<Object>(); + + private Evolution evolution; + + private Diagnostic[] allDiagnostics; + + /** + * Handles activation of the editor or it's associated views. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void handleActivate() + { + // Recompute the read only state. + // + if (editingDomain.getResourceToReadOnlyMap() != null) + { + editingDomain.getResourceToReadOnlyMap().clear(); + + // Refresh any actions that may become enabled or disabled. + // + setSelection(getSelection()); + } + + if (!removedResources.isEmpty()) + { + if (handleDirtyConflict()) + { + getSite().getPage().closeEditor(EvolutionEditor.this, false); + } + else + { + removedResources.clear(); + changedResources.clear(); + savedResources.clear(); + } + } + else if (!changedResources.isEmpty()) + { + changedResources.removeAll(savedResources); + handleChangedResources(); + changedResources.clear(); + savedResources.clear(); + } + } + + /** + * Handles what to do with changed resources on activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void handleChangedResources() + { + if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) + { + ResourceSet resourceSet = editingDomain.getResourceSet(); + if (isDirty()) + { + changedResources.addAll(resourceSet.getResources()); + } + editingDomain.getCommandStack().flush(); + + updateProblemIndication = false; + for (Resource resource : changedResources) + { + if (resource.isLoaded()) + { + resource.unload(); + try + { + resource.load(resourceSet.getLoadOptions()); + } + catch (IOException exception) + { + if (!resourceToDiagnosticMap.containsKey(resource)) + { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + } + } + } + + if (AdapterFactoryEditingDomain.isStale(editorSelection)) + { + setSelection(StructuredSelection.EMPTY); + } + + updateProblemIndication = true; + updateProblemIndication(); + } + } + + /** + * Updates the problems indication with the information described in the specified diagnostic. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void updateProblemIndication() + { + if (updateProblemIndication) + { + BasicDiagnostic diagnostic = new BasicDiagnostic(Diagnostic.OK, "org.eclipse.emf.cdo.evolution.editor", 0, null, + new Object[] { editingDomain.getResourceSet() }); + for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) + { + if (childDiagnostic.getSeverity() != Diagnostic.OK) + { + diagnostic.add(childDiagnostic); + } + } + + int lastEditorPage = getPageCount() - 1; + if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart) + { + ((ProblemEditorPart)getEditor(lastEditorPage)).setDiagnostic(diagnostic); + if (diagnostic.getSeverity() != Diagnostic.OK) + { + setActivePage(lastEditorPage); + } + } + else if (diagnostic.getSeverity() != Diagnostic.OK) + { + ProblemEditorPart problemEditorPart = new ProblemEditorPart(); + problemEditorPart.setDiagnostic(diagnostic); + problemEditorPart.setMarkerHelper(markerHelper); + try + { + addPage(++lastEditorPage, problemEditorPart, getEditorInput()); + setPageText(lastEditorPage, problemEditorPart.getPartName()); + setActivePage(lastEditorPage); + showTabs(); + } + catch (PartInitException exception) + { + EvolutionEditorPlugin.INSTANCE.log(exception); + } + } + + if (markerHelper.hasMarkers(editingDomain.getResourceSet())) + { + try + { + markerHelper.updateMarkers(diagnostic); + } + catch (CoreException exception) + { + EvolutionEditorPlugin.INSTANCE.log(exception); + } + } + } + } + + /** + * Shows a dialog that asks if conflicting changes should be discarded. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean handleDirtyConflict() + { + return MessageDialog.openQuestion(getSite().getShell(), getString("_UI_FileConflict_label"), getString("_WARN_FileConflict")); + } + + /** + * This creates a model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EvolutionEditor() + { + super(); + initializeEditingDomain(); + } + + /** + * This sets up the editing domain for the model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + protected void initializeEditingDomain() + { + // Create an adapter factory that yields item providers. + // + adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE); + + adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new EvolutionItemProviderAdapterFactory()); + ecoreItemProviderAdapterFactory = new EcoreItemProviderAdapterFactory(); + adapterFactory.addAdapterFactory(ecoreItemProviderAdapterFactory); + adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory()); + + // Create the command stack that will notify this editor as commands are executed. + // + BasicCommandStack commandStack = new BasicCommandStack() + { + @Override + public void execute(Command command) + { + // Cancel live validation before executing a command that will trigger a new round of validation. + // + if (!(command instanceof AbstractCommand.NonDirtying)) + { + DiagnosticDecorator.Styled.cancel(editingDomain); + } + super.execute(command); + } + }; + + // Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus. + // + commandStack.addCommandStackListener(new CommandStackListener() + { + public void commandStackChanged(final EventObject event) + { + ((EvolutionImpl)evolution).invalidateChange(); + + getContainer().getDisplay().asyncExec(new Runnable() + { + public void run() + { + firePropertyChange(IEditorPart.PROP_DIRTY); + + // Try to select the affected objects. + // + Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand(); + if (mostRecentCommand != null) + { + setSelectionToViewer(mostRecentCommand.getAffectedObjects()); + } + for (Iterator<PropertySheetPage> i = propertySheetPages.iterator(); i.hasNext();) + { + PropertySheetPage propertySheetPage = i.next(); + if (propertySheetPage.getControl().isDisposed()) + { + i.remove(); + } + else + { + propertySheetPage.refresh(); + } + } + } + }); + } + }); + + // Create the editing domain with a special command stack. + // + editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>()) + { + @Override + public Command createCommand(Class<? extends Command> commandClass, CommandParameter commandParameter) + { + Collection<?> collection = commandParameter.getCollection(); + if (collection != null && !collection.isEmpty()) + { + Object value = collection.iterator().next(); + if (isReadOnlyObject(value)) + { + return UnexecutableCommand.INSTANCE; + } + } + + return super.createCommand(commandClass, commandParameter); + } + }; + } + + protected boolean isReadOnlyObject(Object object) + { + if (object instanceof Release) + { + return true; + } + + if (object instanceof Change) + { + return true; + } + + if (readOnlyObjects.contains(object)) + { + return true; + } + + if (object instanceof EModelElement) + { + EModelElement modelElement = (EModelElement)object; + + if (evolution.containsElement(modelElement)) + { + return false; + } + + for (Release release : evolution.getReleases()) + { + if (release.containsElement(modelElement)) + { + readOnlyObjects.add(modelElement); + return true; + } + } + } + + return false; + } + + /** + * This is here for the listener to be able to call it. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void firePropertyChange(int action) + { + super.firePropertyChange(action); + } + + /** + * This sets the selection into whichever viewer is active. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setSelectionToViewer(Collection<?> collection) + { + final Collection<?> theSelection = collection; + // Make sure it's okay. + // + if (theSelection != null && !theSelection.isEmpty()) + { + Runnable runnable = new Runnable() + { + public void run() + { + // Try to select the items in the current content viewer of the editor. + // + if (currentViewer != null) + { + currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true); + } + } + }; + getSite().getShell().getDisplay().asyncExec(runnable); + } + } + + /** + * This returns the editing domain as required by the {@link IEditingDomainProvider} interface. + * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain} + * and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EditingDomain getEditingDomain() + { + return editingDomain; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider + { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory) + { + super(adapterFactory); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object[] getElements(Object object) + { + Object parent = super.getParent(object); + return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object[] getChildren(Object object) + { + Object parent = super.getParent(object); + return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean hasChildren(Object object) + { + Object parent = super.getParent(object); + return parent != null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getParent(Object object) + { + return null; + } + } + + /** + * This makes sure that one content viewer, either for the current page or the outline view, if it has focus, + * is the current one. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setCurrentViewer(Viewer viewer) + { + // If it is changing... + // + if (currentViewer != viewer) + { + if (selectionChangedListener == null) + { + // Create the listener on demand. + // + selectionChangedListener = new ISelectionChangedListener() + { + // This just notifies those things that are affected by the section. + // + public void selectionChanged(SelectionChangedEvent selectionChangedEvent) + { + setSelection(selectionChangedEvent.getSelection()); + } + }; + } + + // Stop listening to the old one. + // + if (currentViewer != null) + { + currentViewer.removeSelectionChangedListener(selectionChangedListener); + } + + // Start listening to the new one. + // + if (viewer != null) + { + viewer.addSelectionChangedListener(selectionChangedListener); + } + + // Remember it. + // + currentViewer = viewer; + + // Set the editors selection based on the current viewer's selection. + // + setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection()); + } + } + + /** + * This returns the viewer as required by the {@link IViewerProvider} interface. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Viewer getViewer() + { + return currentViewer; + } + + /** + * This creates a context menu for the viewer and adds a listener as well registering the menu for extension. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + protected void createContextMenuFor(StructuredViewer viewer) + { + MenuManager contextMenu = new MenuManager("#PopUp"); + contextMenu.add(new Separator("additions")); + contextMenu.setRemoveAllWhenShown(true); + contextMenu.addMenuListener(this); + Menu menu = contextMenu.createContextMenu(viewer.getControl()); + viewer.getControl().setMenu(menu); + getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer)); + + int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK; + Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance(), LocalSelectionTransfer.getTransfer(), FileTransfer.getInstance() }; + viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer)); + viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer) + { + @Override + public void dropAccept(DropTargetEvent event) + { + super.dropAccept(event); + } + + @Override + public void drop(DropTargetEvent event) + { + super.drop(event); + } + }); + } + + /** + * This is the method called to load a resource into the editing domain's resource set based on the editor's input. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void createModelGen() + { + URI resourceURI = EditUIUtil.getURI(getEditorInput(), editingDomain.getResourceSet().getURIConverter()); + Exception exception = null; + Resource resource = null; + try + { + // Load the resource through the editing domain. + // + resource = editingDomain.getResourceSet().getResource(resourceURI, true); + } + catch (Exception e) + { + exception = e; + resource = editingDomain.getResourceSet().getResource(resourceURI, false); + } + + Diagnostic diagnostic = analyzeResourceProblems(resource, exception); + if (diagnostic.getSeverity() != Diagnostic.OK) + { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter); + } + + /** + * This is the method called to load a resource into the editing domain's resource set based on the editor's input. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public void createModel() + { + createModelGen(); + + ResourceSet resourceSet = editingDomain.getResourceSet(); + evolution = EvolutionImpl.get(resourceSet); + if (evolution != null) + { + if (hasGenerics(evolution)) + { + ((EvolutionActionBarContributor)getActionBarContributor()).showGenerics(true); + } + } + } + + private boolean hasGenerics(Evolution evolution) + { + if (hasGenerics(evolution.getRootPackages())) + { + return true; + } + + for (Release release : evolution.getReleases()) + { + if (hasGenerics(release.getRootPackages())) + { + return true; + } + } + + return false; + } + + private boolean hasGenerics(EList<EPackage> rootPackages) + { + for (EPackage rootPackage : rootPackages) + { + for (Iterator<EObject> i = rootPackage.eAllContents(); i.hasNext();) + { + EObject eObject = i.next(); + if (eObject instanceof ETypeParameter || eObject instanceof EGenericType && !((EGenericType)eObject).getETypeArguments().isEmpty()) + { + return true; + } + } + } + + return false; + } + + /** + * Returns a diagnostic describing the errors and warnings listed in the resource + * and the specified exception (if any). + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) + { + boolean hasErrors = !resource.getErrors().isEmpty(); + if (hasErrors || !resource.getWarnings().isEmpty()) + { + BasicDiagnostic basicDiagnostic = new BasicDiagnostic(hasErrors ? Diagnostic.ERROR : Diagnostic.WARNING, "org.eclipse.emf.cdo.evolution.editor", 0, + getString("_UI_CreateModelError_message", resource.getURI()), new Object[] { exception == null ? (Object)resource : exception }); + basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true)); + return basicDiagnostic; + } + else if (exception != null) + { + return new BasicDiagnostic(Diagnostic.ERROR, "org.eclipse.emf.cdo.evolution.editor", 0, getString("_UI_CreateModelError_message", resource.getURI()), + new Object[] { exception }); + } + else + { + return Diagnostic.OK_INSTANCE; + } + } + + /** + * @author Eike Stepper + */ + private static class PhasedLiveValidator extends LiveValidator + { + public PhasedLiveValidator(EditingDomain editingDomain, IDialogSettings dialogSettings) + { + super(editingDomain, dialogSettings); + } + + @Override + public void scheduleValidation() + { + if (validationJob == null && (dialogSettings == null || dialogSettings.getBoolean(LiveValidationAction.LIVE_VALIDATOR_DIALOG_SETTINGS_KEY))) + { + validationJob = new Job("Validation Job") + { + @Override + protected IStatus run(final IProgressMonitor monitor) + { + try + { + Diagnostician diagnostician = new Diagnostician() + { + @Override + public String getObjectLabel(EObject eObject) + { + String text = labelProvider != null && eObject.eIsProxy() ? ((InternalEObject)eObject).eProxyURI().toString() + : labelProvider.getText(eObject); + if (text == null || text.length() == 0) + { + text = "<i>null</i>"; + } + else + { + text = DiagnosticDecorator.escapeContent(text); + } + Image image = labelProvider != null ? labelProvider.getImage(eObject) : null; + if (image != null) + { + URI imageURI = ImageURIRegistry.INSTANCE.getImageURI(image); + return DiagnosticDecorator.enquote("<img src='" + imageURI + "'/> " + text); + } + else + { + return text; + } + } + + @Override + public boolean validate(EClass eClass, EObject eObject, DiagnosticChain diagnostics, Map<Object, Object> context) + { + if (monitor.isCanceled()) + { + throw new RuntimeException(); + } + + monitor.worked(1); + return super.validate(eClass, eObject, diagnostics, context); + } + + @Override + protected boolean doValidateContents(EObject eObject, DiagnosticChain diagnostics, Map<Object, Object> context) + { + Evolution evolution; + List<? extends EObject> eContents; + + ValidationContext validationContext = ValidationContext.getFrom(context); + if (validationContext != null) + { + ValidationPhase phase = validationContext.getPhase(); + evolution = validationContext.getEvolution(); + eContents = phase.getContentsToValidate(this, evolution, eObject, context); + } + else + { + evolution = null; + eContents = eObject.eContents(); + } + + boolean result = true; + for (EObject child : eContents) + { + Resource resource = child.eResource(); + if (resource == null && evolution != null) + { + // Change objects are not contained in a resource. Use the evolution's resource. + resource = evolution.eResource(); + } + + DiagnosticChain resourceDiagnostic = resource != null && validationContext != null + ? validationContext.getResourceDiagnostics().get(resource) + : null; + + result &= validate(child, resourceDiagnostic, context); + } + + return result; + } + }; + + final ResourceSet resourceSet = editingDomain.getResourceSet(); + + Map<Object, Object> context = diagnostician.createDefaultContext(); + context.put(EObjectValidator.ROOT_OBJECT, new Object()); // Disable circular containment validation. + + { /////////////////////////////////////////////////////////////////////////////// + + Evolution evolution = EvolutionImpl.get(resourceSet); + ValidationContext validationContext = new ValidationContext(evolution); + validationContext.putInto(context); + + int count = 0; + for (ValidationPhase phase : ValidationPhase.values()) + { + validationContext.setPhase(phase); + + // int xxx; + // System.out.println("Count " + phase); + + count += countObjects(diagnostician, evolution, validationContext, context, monitor); + } + + scheduledResources.clear(); + monitor.beginTask("", count); + + Map<Resource, BasicDiagnostic> resourceDiagnostics = validationContext.getResourceDiagnostics(); + final BasicDiagnostic rootDiagnostic = new BasicDiagnostic(EObjectValidator.DIAGNOSTIC_SOURCE, 0, + EMFEditUIPlugin.INSTANCE.getString("_UI_DiagnosisOfNObjects_message", new String[] { "" + resourceDiagnostics.size() }), + new Object[] { resourceSet }); + + for (BasicDiagnostic resourceDiagnostic : resourceDiagnostics.values()) + { + rootDiagnostic.add(resourceDiagnostic); + } + + BasicDiagnostic modelSetResourceDiagnostic = resourceDiagnostics.get(evolution.eResource()); + + for (ValidationPhase phase : ValidationPhase.values()) + { + validationContext.setPhase(phase); + + // int xxx; + // System.out.println("Validate " + phase); + + monitor + .setTaskName(EvolutionEditorPlugin.INSTANCE.getString("_UI_ValidatingPhase_message", new Object[] { Integer.toString(phase.ordinal()) })); + + boolean valid = diagnostician.validate(evolution, modelSetResourceDiagnostic, context); + if (!valid) + { + break; + } + } + + if (monitor.isCanceled()) + { + throw new RuntimeException(); + } + + monitor.worked(1); + + DiagnosticAdapter.update(resourceSet, rootDiagnostic); + + } /////////////////////////////////////////////////////////////////////////////// + + Display.getDefault().asyncExec(new Runnable() + { + public void run() + { + validationJob = null; + if (!monitor.isCanceled() && !scheduledResources.isEmpty()) + { + PhasedLiveValidator.this.scheduleValidation(); + } + } + }); + + return Status.OK_STATUS; + } + catch (RuntimeException exception) + { + int xxx; + exception.printStackTrace(); + + validationJob = null; + return Status.CANCEL_STATUS; + } + } + + private int countObjects(Diagnostician diagnostician, EObject eObject, ValidationContext validationContext, Map<Object, Object> context, + IProgressMonitor monitor) + { + if (monitor.isCanceled()) + { + throw new RuntimeException(); + } + + for (EReference eReference : eObject.eClass().getEAllReferences()) + { + if (monitor.isCanceled()) + { + throw new RuntimeException(); + } + + if (eReference == EvolutionPackage.Literals.MODEL_SET__CHANGE) + { + continue; + } + + if (eReference.isContainment() || eReference.isContainer()) + { + continue; + } + + // Resolve all proxies. + if (eReference.isResolveProxies()) + { + Object value = eObject.eGet(eReference, true); + if (eReference.isMany()) + { + @SuppressWarnings("unchecked") + List<EObject> list = (List<EObject>)value; + + for (@SuppressWarnings("unused") + EObject element : list) + { + if (monitor.isCanceled()) + { + throw new RuntimeException(); + } + } + } + } + } + + Resource resource = eObject.eResource(); + if (resource != null) + { + Map<Resource, BasicDiagnostic> resourceDiagnostics = validationContext.getResourceDiagnostics(); + if (!resourceDiagnostics.containsKey(resource)) + { + BasicDiagnostic diagnostic = new BasicDiagnostic(EObjectValidator.DIAGNOSTIC_SOURCE, 0, + EMFEditUIPlugin.INSTANCE.getString("_UI_DiagnosisOfNObjects_message", new String[] { "1" }), new Object[] { resource }); + resourceDiagnostics.put(resource, diagnostic); + } + } + + Evolution evolution = validationContext.getEvolution(); + ValidationPhase phase = validationContext.getPhase(); + int count = 1; + + for (EObject child : phase.getContentsToValidate(diagnostician, evolution, eObject, context)) + { + count += countObjects(diagnostician, child, validationContext, context, monitor); + } + + return count; + } + }; + + validationJob.setPriority(Job.DECORATE); + validationJob.schedule(500); + } + } + } + + /** + * @author Eike Stepper + */ + private static class DiagnosticContentProvider implements IStructuredContentProvider + { + public void inputChanged(Viewer viewer, Object oldInput, Object newInput) + { + } + + public Object[] getElements(Object inputElement) + { + List<Diagnostic> result = new ArrayList<Diagnostic>(); + + @SuppressWarnings("unchecked") + List<Diagnostic> diagnostics = (List<Diagnostic>)inputElement; + for (Diagnostic diagnostic : diagnostics) + { + collectDiagnostics(diagnostic, result); + } + + return result.toArray(new Diagnostic[result.size()]); + } + + private void collectDiagnostics(Diagnostic diagnostic, List<Diagnostic> result) + { + if (isRelevant(diagnostic)) + { + result.add(diagnostic); + } + + for (Diagnostic child : diagnostic.getChildren()) + { + collectDiagnostics(child, result); + } + } + + private boolean isRelevant(Diagnostic diagnostic) + { + // if (diagnostic.getSeverity() != Diagnostic.ERROR) + // { + // return false; + // } + + List<?> data = diagnostic.getData(); + if (data.isEmpty()) + { + return false; + } + + if (data.get(0) instanceof Resource) + { + return false; + } + + return true; + } + + public void dispose() + { + } + } + + /** + * This is the method used by the framework to install your own controls. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + @Override + public void createPages() + { + // Creates the model from the editor input + // + createModel(); + + // Only creates the other pages if there is something that can be edited + // + if (!getEditingDomain().getResourceSet().getResources().isEmpty()) + { + // Create a page for the selection tree view. + // + + SashForm mainSash = new SashForm(getContainer(), SWT.VERTICAL); + mainSash.setLayoutData(new GridData(GridData.FILL_BOTH | GridData.GRAB_VERTICAL)); + + selectionViewer = createSelectionViewer(mainSash); + TableViewer problemViewer = createProblemViewer(mainSash); + + mainSash.setWeights(new int[] { 70, 30 }); + + int pageIndex = addPage(mainSash); + setPageText(pageIndex, getString("_UI_SelectionPage_label")); + + getSite().getShell().getDisplay().asyncExec(new Runnable() + { + public void run() + { + if (!getContainer().isDisposed()) + { + setActivePage(0); + } + } + }); + + this.problemViewer = problemViewer; + } + + // Ensures that this editor will only display the page's tab + // area if there are more than one page + // + getContainer().addControlListener(new ControlAdapter() + { + boolean guard = false; + + @Override + public void controlResized(ControlEvent event) + { + if (!guard) + { + guard = true; + hideTabs(); + guard = false; + } + } + }); + + getSite().getShell().getDisplay().asyncExec(new Runnable() + { + public void run() + { + updateProblemIndication(); + } + }); + } + + private TreeViewer createSelectionViewer(Composite parent) + { + Tree tree = new Tree(parent, SWT.MULTI); + TreeViewer selectionViewer = new TreeViewer(tree); + setCurrentViewer(selectionViewer); + + DiagnosticDecorator diagnosticDecorator = new DiagnosticDecorator.Styled(editingDomain, selectionViewer, + EvolutionEditorPlugin.getPlugin().getDialogSettings()) + { + @Override + protected void redecorate() + { + super.redecorate(); + handleDiagnostics(diagnostics); + } + + @Override + protected LiveValidator getLiveValidator() + { + if (liveValidator == null && editingDomain != null) + { + Field field = ReflectUtil.getField(DiagnosticDecorator.class, "LIVE_VALIDATORS"); + + @SuppressWarnings("unchecked") + Map<EditingDomain, LiveValidator> LIVE_VALIDATORS = (Map<EditingDomain, LiveValidator>)ReflectUtil.getValue(field, null); + + liveValidator = LIVE_VALIDATORS.get(editingDomain); + if (liveValidator == null) + { + liveValidator = new PhasedLiveValidator(editingDomain, dialogSettings); + + LIVE_VALIDATORS.put(editingDomain, liveValidator); + } + + liveValidator.register(this); + } + + return liveValidator; + } + }; + + selectionViewer.setUseHashlookup(true); + selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + selectionViewer.setLabelProvider(new DelegatingStyledCellLabelProvider.FontAndColorProvider(new DecoratingColumLabelProvider.StyledLabelProvider( + new AdapterFactoryLabelProvider.StyledLabelProvider(adapterFactory, selectionViewer), diagnosticDecorator))); + selectionViewer.setInput(editingDomain.getResourceSet().getResources().get(0)); + selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true); + + new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory); + new ColumnViewerInformationControlToolTipSupport(selectionViewer, + new DiagnosticDecorator.Styled.EditingDomainLocationListener(editingDomain, selectionViewer)); + + createContextMenuFor(selectionViewer); + return selectionViewer; + } + + private TableViewer createProblemViewer(Composite parent) + { + final TableViewer problemViewer = new TableViewer(parent, SWT.MULTI); + problemViewer.setContentProvider(new DiagnosticContentProvider()); + problemViewer.setInput(Collections.emptyList()); + + Table problemTable = problemViewer.getTable(); + problemTable.setHeaderVisible(true); + problemTable.setLinesVisible(true); + + createDiagnosticMessageColumn(problemViewer); + createDiagnosticElementColumn(problemViewer, adapterFactory); + createDiagnosticResourceColumn(problemViewer, adapterFactory); + // createDiagnosticIDColumn(problemViewer); + + // { + // TableViewerColumn tableViewerColumn = new TableViewerColumn(problemViewer, SWT.NONE); + // tableViewerColumn.setLabelProvider(new ColumnLabelProvider() + // { + // @Override + // public String getText(Object element) + // { + // return ((Diagnostic)element).getSource(); + // } + // }); + // + // TableColumn tableColumn = tableViewerColumn.getColumn(); + // tableColumn.setResizable(true); + // tableColumn.setAlignment(SWT.LEFT); + // tableColumn.setWidth(200); + // tableColumn.setText("Source"); + // } + // + // { + // TableViewerColumn tableViewerColumn = new TableViewerColumn(problemViewer, SWT.NONE); + // tableViewerColumn.setLabelProvider(new ColumnLabelProvider() + // { + // + // @Override + // public String getText(Object element) + // { + // return Integer.toString(((Diagnostic)element).getCode()); + // } + // }); + // + // TableColumn tableColumn = tableViewerColumn.getColumn(); + // tableColumn.setResizable(true); + // tableColumn.setAlignment(SWT.LEFT); + // tableColumn.setWidth(70); + // tableColumn.setText("Code"); + // } + // + // { + // TableViewerColumn tableViewerColumn = new TableViewerColumn(problemViewer, SWT.NONE); + // tableViewerColumn.setLabelProvider(new ColumnLabelProvider() + // { + // @Override + // public String getText(Object element) + // { + // StringBuilder builder = new StringBuilder(); + // + // List<?> data = ((Diagnostic)element).getData(); + // for (Object object : data) + // { + // if (builder.length() != 0) + // { + // builder.append(", "); + // } + // + // if (object instanceof Resource) + // { + // Resource resource = (Resource)object; + // builder.append("Resource["); + // builder.append(resource.getURI()); + // builder.append("]"); + // } + // else if (object instanceof ENamedElement) + // { + // ENamedElement namedElement = (ENamedElement)object; + // builder.append(namedElement.getName()); + // } + // else if (object instanceof EObject) + // { + // EObject eObject = (EObject)object; + // builder.append(eObject.eClass().getName()); + // } + // else + // { + // builder.append(String.valueOf(object)); + // } + // } + // + // return builder.toString(); + // } + // }); + // + // TableColumn tableColumn = tableViewerColumn.getColumn(); + // tableColumn.setResizable(true); + // tableColumn.setAlignment(SWT.LEFT); + // tableColumn.setWidth(400); + // tableColumn.setText("Data"); + // } + + problemTable.addKeyListener(new KeyAdapter() + { + @Override + public void keyPressed(KeyEvent e) + { + if (e.stateMask == SWT.CTRL && e.character == '1') + { + showQuickFixes(); + } + } + }); + + problemViewer.addOpenListener(new IOpenListener() + { + public void open(OpenEvent event) + { + IStructuredSelection selection = (IStructuredSelection)event.getSelection(); + Object element = selection.getFirstElement(); + if (element instanceof Diagnostic) + { + List<?> data = ((Diagnostic)element).getData(); + int size = data.size(); + if (size != 0) + { + List<Object> list = new ArrayList<Object>(size); + for (Object object : data) + { + Object wrapper = editingDomain.getWrapper(object); + list.add(wrapper); + } + + setSelectionToViewer(list); + } + } + } + }); + + return problemViewer; + } + + public static TableViewerColumn createDiagnosticMessageColumn(final TableViewer problemViewer) + { + TableViewerColumn tableViewerColumn = new TableViewerColumn(problemViewer, SWT.NONE); + tableViewerColumn.setLabelProvider(new ColumnLabelProvider() + { + @Override + public Image getImage(Object element) + { + switch (((Diagnostic)element).getSeverity()) + { + case Diagnostic.INFO: + return SharedIcons.getImage(SharedIcons.OBJ_INFO); + + default: + return SharedIcons.getImage(SharedIcons.OBJ_ERROR); + } + } + + @Override + public String getText(Object element) + { + return ((Diagnostic)element).getMessage(); + } + }); + + TableColumn tableColumn = tableViewerColumn.getColumn(); + tableColumn.setResizable(true); + tableColumn.setAlignment(SWT.LEFT); + tableColumn.setWidth(400); + tableColumn.setText("Message"); + return tableViewerColumn; + } + + public static TableViewerColumn createDiagnosticResourceColumn(TableViewer problemViewer, AdapterFactory adapterFactory) + { + TableViewerColumn tableViewerColumn = new TableViewerColumn(problemViewer, SWT.NONE); + tableViewerColumn.setLabelProvider(new ResourceColumnLabelProvider(adapterFactory)); + + TableColumn tableColumn = tableViewerColumn.getColumn(); + tableColumn.setResizable(true); + tableColumn.setAlignment(SWT.LEFT); + tableColumn.setWidth(450); + tableColumn.setText("Resource"); + return tableViewerColumn; + } + + public static TableViewerColumn createDiagnosticElementColumn(TableViewer problemViewer, AdapterFactory adapterFactory) + { + TableViewerColumn tableViewerColumn = new TableViewerColumn(problemViewer, SWT.NONE); + tableViewerColumn.setLabelProvider(new ElementColumnLabelProvider(adapterFactory)); + + TableColumn tableColumn = tableViewerColumn.getColumn(); + tableColumn.setResizable(true); + tableColumn.setAlignment(SWT.LEFT); + tableColumn.setWidth(200); + tableColumn.setText("Element"); + return tableViewerColumn; + } + + public static TableViewerColumn createDiagnosticIDColumn(final TableViewer problemViewer) + { + TableViewerColumn tableViewerColumn = new TableViewerColumn(problemViewer, SWT.NONE); + tableViewerColumn.setLabelProvider(new ColumnLabelProvider() + { + @Override + public String getText(Object element) + { + DiagnosticID diagnosticID = DiagnosticID.get((Diagnostic)element); + if (diagnosticID != null) + { + return diagnosticID.getValue(); + } + + return ""; + } + }); + + TableColumn tableColumn = tableViewerColumn.getColumn(); + tableColumn.setResizable(true); + tableColumn.setAlignment(SWT.LEFT); + tableColumn.setWidth(800); + tableColumn.setText("ID"); + return tableViewerColumn; + } + + /** + * @author Eike Stepper + */ + public static class ResourceColumnLabelProvider extends ColumnLabelProvider + { + protected final AdapterFactory adapterFactory; + + public ResourceColumnLabelProvider(AdapterFactory adapterFactory) + { + this.adapterFactory = adapterFactory; + } + + @Override + public Image getImage(Object element) + { + List<?> data = ((Diagnostic)element).getData(); + if (!data.isEmpty()) + { + Object object = data.get(0); + if (object instanceof EObject) + { + EObject eObject = (EObject)object; + Resource resource = eObject.eResource(); + if (resource != null) + { + IItemLabelProvider labelProvider = (IItemLabelProvider)adapterFactory.adapt(resource, IItemLabelProvider.class); + if (labelProvider != null) + { + return ExtendedImageRegistry.getInstance().getImage(labelProvider.getImage(resource)); + } + } + } + } + + return null; + } + + @Override + public String getText(Object element) + { + List<?> data = ((Diagnostic)element).getData(); + if (!data.isEmpty()) + { + Object object = data.get(0); + if (object instanceof EObject) + { + EObject eObject = (EObject)object; + Resource resource = eObject.eResource(); + if (resource != null) + { + IItemLabelProvider labelProvider = (IItemLabelProvider)adapterFactory.adapt(resource, IItemLabelProvider.class); + if (labelProvider != null) + { + return labelProvider.getText(resource); + } + } + } + } + + return null; + } + } + + /** + * @author Eike Stepper + */ + public static class ElementColumnLabelProvider extends ColumnLabelProvider + { + protected final AdapterFactory adapterFactory; + + public ElementColumnLabelProvider(AdapterFactory adapterFactory) + { + this.adapterFactory = adapterFactory; + } + + @Override + public Image getImage(Object element) + { + List<?> data = ((Diagnostic)element).getData(); + if (!data.isEmpty()) + { + Object object = data.get(0); + if (object instanceof EObject) + { + IItemLabelProvider labelProvider = (IItemLabelProvider)adapterFactory.adapt(object, IItemLabelProvider.class); + if (labelProvider != null) + { + return ExtendedImageRegistry.getInstance().getImage(labelProvider.getImage(object)); + } + } + } + + return null; + } + + @Override + public String getText(Object element) + { + List<?> data = ((Diagnostic)element).getData(); + if (!data.isEmpty()) + { + Object object = data.get(0); + if (object instanceof EModelElement) + { + EModelElement modelElement = (EModelElement)object; + return ElementHandler.getLabel(modelElement); + } + + if (object instanceof EObject) + { + + IItemLabelProvider labelProvider = (IItemLabelProvider)adapterFactory.adapt(object, IItemLabelProvider.class); + if (labelProvider != null) + { + return labelProvider.getText(object); + } + } + } + + return null; + } + } + + private Diagnostic[] getSelectedDiagnostics() + { + IStructuredSelection selection = problemViewer.getStructuredSelection(); + if (selection.isEmpty()) + { + return DiagnosticResolution.NO_DIAGNOSTICS; + } + + List<Diagnostic> result = new ArrayList<Diagnostic>(); + for (Iterator<?> it = selection.iterator(); it.hasNext();) + { + result.add((Diagnostic)it.next()); + } + + return result.toArray(new Diagnostic[result.size()]); + } + + private void showQuickFixes() + { + final Map<DiagnosticResolution, Collection<Diagnostic>> resolutionsMap = new LinkedHashMap<DiagnosticResolution, Collection<Diagnostic>>(); + final Diagnostic[] selectedDiagnostics = getSelectedDiagnostics(); + if (selectedDiagnostics == null || selectedDiagnostics.length == 0) + { + return; + } + + final Diagnostic firstSelectedDiagnostic = selectedDiagnostics[0]; + + IRunnableWithProgress runnable = new IRunnableWithProgress() + { + public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException + { + monitor.beginTask("Finding fixes", 100); + monitor.worked(20); + + DiagnosticResolution[] resolutions = DiagnosticResolution.getResolutions(firstSelectedDiagnostic, EvolutionEditor.this); + int progressCount = 80; + if (resolutions.length > 1) + { + progressCount = progressCount / resolutions.length; + } + + for (DiagnosticResolution resolution : resolutions) + { + Diagnostic[] other = resolution.findOtherDiagnostics(allDiagnostics); + if (containsAllButFirst(other, selectedDiagnostics)) + { + Collection<Diagnostic> diagnostics = new LinkedHashSet<Diagnostic>(other.length + 1); + diagnostics.add(firstSelectedDiagnostic); + diagnostics.addAll(Arrays.asList(other)); + resolutionsMap.put(resolution, diagnostics); + } + + monitor.worked(progressCount); + } + + monitor.done(); + } + }; + + IWorkbenchPartSite site = getSite(); + IWorkbenchSiteProgressService service = Adapters.adapt(site, IWorkbenchSiteProgressService.class); + + Shell shell = site.getShell(); + IRunnableContext context = new ProgressMonitorDialog(shell); + + try + { + if (service == null) + { + PlatformUI.getWorkbench().getProgressService().runInUI(context, runnable, null); + } + else + { + service.runInUI(context, runnable, null); + } + } + catch (InvocationTargetException ex) + { + throw WrappedException.wrap(ex); + } + catch (InterruptedException ex) + { + throw WrappedException.wrap(ex); + } + + String description = StringUtil.safe(firstSelectedDiagnostic.getMessage()); + if (resolutionsMap.isEmpty()) + { + if (selectedDiagnostics.length == 1) + { + MessageDialog.openInformation(shell, "Quick Fix", NLS.bind("No fixes available for:\n\n {0}.", new Object[] { description })); + } + else + { + MessageDialog.openInformation(shell, "Quick Fix", "The selected problems do not have a common applicable quick fix."); + } + } + else + { + String problemDescription = NLS.bind("Select the fix for ''{0}''.", description); + + Wizard wizard = new QuickFixWizard(problemDescription, selectedDiagnostics, resolutionsMap, editingDomain); + wizard.setWindowTitle("Quick Fix"); + + WizardDialog dialog = new QuickFixWizardDialog(shell, wizard); + dialog.open(); + } + } + + /** + * Checks whether the given extent contains all but the first element from the given members array. + * + * @param extent the array which should contain the elements + * @param members the elements to check + * @return <code>true</code> if all but the first element are inside the extent + */ + private static boolean containsAllButFirst(Object[] extent, Object[] members) + { + outer: for (int i = 1; i < members.length; i++) + { + for (int j = 0; j < extent.length; j++) + { + if (members[i] == extent[j]) + { + continue outer; + } + } + + return false; + } + + return true; + } + + /** + * @author Eike Stepper + */ + private static final class QuickFixWizardDialog extends WizardDialog + { + public QuickFixWizardDialog(Shell parentShell, IWizard newWizard) + { + super(parentShell, newWizard); + setShellStyle(SWT.CLOSE | SWT.MAX | SWT.TITLE | SWT.BORDER | SWT.MODELESS | SWT.RESIZE | getDefaultOrientation()); + } + } + + protected void handleDiagnostics(List<Diagnostic> diagnostics) + { + List<Diagnostic> result = new ArrayList<Diagnostic>(); + flattenDiagnostics(diagnostics, result); + allDiagnostics = result.toArray(new Diagnostic[result.size()]); + + if (problemViewer != null && !problemViewer.getControl().isDisposed()) + { + problemViewer.setInput(diagnostics); + } + } + + private void flattenDiagnostics(List<Diagnostic> diagnostics, List<Diagnostic> result) + { + for (Diagnostic diagnostic : diagnostics) + { + result.add(diagnostic); + flattenDiagnostics(diagnostic.getChildren(), result); + } + } + + /** + * If there is just one page in the multi-page editor part, + * this hides the single tab at the bottom. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void hideTabs() + { + if (getPageCount() <= 1) + { + setPageText(0, ""); + if (getContainer() instanceof CTabFolder) + { + Point point = getContainer().getSize(); + Rectangle clientArea = getContainer().getClientArea(); + getContainer().setSize(point.x, 2 * point.y - clientArea.height - clientArea.y); + } + } + } + + /** + * If there is more than one page in the multi-page editor part, + * this shows the tabs at the bottom. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void showTabs() + { + if (getPageCount() > 1) + { + setPageText(0, getString("_UI_SelectionPage_label")); + if (getContainer() instanceof CTabFolder) + { + Point point = getContainer().getSize(); + Rectangle clientArea = getContainer().getClientArea(); + getContainer().setSize(point.x, clientArea.height + clientArea.y); + } + } + } + + /** + * This is used to track the active viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void pageChange(int pageIndex) + { + super.pageChange(pageIndex); + + if (contentOutlinePage != null) + { + handleContentOutlineSelection(contentOutlinePage.getSelection()); + } + } + + /** + * This is how the framework determines which interfaces we implement. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public <T> T getAdapter(Class<T> key) + { + if (key.equals(IContentOutlinePage.class)) + { + return showOutlineView() ? key.cast(getContentOutlinePage()) : null; + } + else if (key.equals(IPropertySheetPage.class)) + { + return key.cast(getPropertySheetPage()); + } + else if (key.equals(IGotoMarker.class)) + { + return key.cast(this); + } + else if (key.equals(IFindReplaceTarget.class)) + { + return FindAndReplaceTarget.getAdapter(key, this, EvolutionEditorPlugin.getPlugin()); + } + else + { + return super.getAdapter(key); + } + } + + /** + * This accesses a cached version of the content outliner. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IContentOutlinePage getContentOutlinePage() + { + if (contentOutlinePage == null) + { + // The content outline is just a tree. + // + class MyContentOutlinePage extends ContentOutlinePage + { + @Override + public void createControl(Composite parent) + { + super.createControl(parent); + contentOutlineViewer = getTreeViewer(); + contentOutlineViewer.addSelectionChangedListener(this); + + // Set up the tree viewer. + // + contentOutlineViewer.setUseHashlookup(true); + contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + contentOutlineViewer.setLabelProvider(new DelegatingStyledCellLabelProvider.FontAndColorProvider( + new DecoratingColumLabelProvider.StyledLabelProvider(new AdapterFactoryLabelProvider.StyledLabelProvider(adapterFactory, contentOutlineViewer), + new DiagnosticDecorator.Styled(editingDomain, contentOutlineViewer, EvolutionEditorPlugin.getPlugin().getDialogSettings())))); + contentOutlineViewer.setInput(editingDomain.getResourceSet()); + + new ColumnViewerInformationControlToolTipSupport(contentOutlineViewer, + new DiagnosticDecorator.Styled.EditingDomainLocationListener(editingDomain, contentOutlineViewer)); + + // Make sure our popups work. + // + createContextMenuFor(contentOutlineViewer); + + if (!editingDomain.getResourceSet().getResources().isEmpty()) + { + // Select the root object in the view. + // + contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true); + } + } + + @Override + public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) + { + super.makeContributions(menuManager, toolBarManager, statusLineManager); + contentOutlineStatusLineManager = statusLineManager; + } + + @Override + public void setActionBars(IActionBars actionBars) + { + super.setActionBars(actionBars); + getActionBarContributor().shareGlobalActions(this, actionBars); + } + } + + contentOutlinePage = new MyContentOutlinePage(); + + // Listen to selection so that we can handle it is a special way. + // + contentOutlinePage.addSelectionChangedListener(new ISelectionChangedListener() + { + // This ensures that we handle selections correctly. + // + public void selectionChanged(SelectionChangedEvent event) + { + handleContentOutlineSelection(event.getSelection()); + } + }); + } + + return contentOutlinePage; + } + + /** + * @author Eike Stepper + */ + private static class DelegatingItemPropertyDescriptor implements IItemPropertyDescriptor + { + private final IItemPropertyDescriptor itemPropertyDescriptor; + + private DelegatingItemPropertyDescriptor(IItemPropertyDescriptor itemPropertyDescriptor) + { + this.itemPropertyDescriptor = itemPropertyDescriptor; + } + + public Object getPropertyValue(Object object) + { + return itemPropertyDescriptor.getPropertyValue(object); + } + + public boolean isPropertySet(Object object) + { + return itemPropertyDescriptor.isPropertySet(object); + } + + public boolean canSetProperty(Object object) + { + return itemPropertyDescriptor.canSetProperty(object); + } + + public void resetPropertyValue(Object object) + { + itemPropertyDescriptor.resetPropertyValue(object); + } + + public void setPropertyValue(Object object, Object value) + { + itemPropertyDescriptor.setPropertyValue(object, value); + } + + public String getCategory(Object object) + { + return itemPropertyDescriptor.getCategory(object); + } + + public String getDescription(Object object) + { + return itemPropertyDescriptor.getDescription(object); + } + + public String getDisplayName(Object object) + { + return itemPropertyDescriptor.getDisplayName(object); + } + + public String[] getFilterFlags(Object object) + { + return itemPropertyDescriptor.getFilterFlags(object); + } + + public Object getHelpContextIds(Object object) + { + return itemPropertyDescriptor.getHelpContextIds(object); + } + + public String getId(Object object) + { + return itemPropertyDescriptor.getId(object); + } + + public IItemLabelProvider getLabelProvider(Object object) + { + return itemPropertyDescriptor.getLabelProvider(object); + } + + public boolean isCompatibleWith(Object object, Object anotherObject, IItemPropertyDescriptor anotherPropertyDescriptor) + { + return itemPropertyDescriptor.isCompatibleWith(object, anotherObject, anotherPropertyDescriptor); + } + + public Object getFeature(Object object) + { + return itemPropertyDescriptor.getFeature(object); + } + + public boolean isMany(Object object) + { + return itemPropertyDescriptor.isMany(object); + } + + public Collection<?> getChoiceOfValues(Object object) + { + return itemPropertyDescriptor.getChoiceOfValues(object); + } + + public boolean isMultiLine(Object object) + { + return itemPropertyDescriptor.isMultiLine(object); + } + + public boolean isSortChoices(Object object) + { + return itemPropertyDescriptor.isSortChoices(object); + } + } + + /** + * This accesses a cached version of the property sheet. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public IPropertySheetPage getPropertySheetPage() + { + PropertySheetPage propertySheetPage = new ExtendedPropertySheetPage(editingDomain, ExtendedPropertySheetPage.Decoration.LIVE, + EvolutionEditorPlugin.getPlugin().getDialogSettings(), 0, true) + { + { + setSorter(new PropertySheetSorter() + { + @Override + public void sort(IPropertySheetEntry[] entries) + { + // Intentionally left empty + } + }); + } + + @Override + public void setSelectionToViewer(List<?> selection) + { + EvolutionEditor.this.setSelectionToViewer(selection); + EvolutionEditor.this.setFocus(); + } + + @Override + public void setActionBars(IActionBars actionBars) + { + super.setActionBars(actionBars); + getActionBarContributor().shareGlobalActions(this, actionBars); + } + }; + + propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory) + { + @Override + protected IPropertySource createPropertySource(Object object, IItemPropertySource itemPropertySource) + { + if (isReadOnlyObject(object)) + { + /** + * Create no cell editor for read-only objects. + */ + return new PropertySource(object, itemPropertySource) + { + @Override + protected IPropertyDescriptor createPropertyDescriptor(final IItemPropertyDescriptor itemPropertyDescriptor) + { + return super.createPropertyDescriptor(new DelegatingItemPropertyDescriptor(itemPropertyDescriptor) + { + @Override + public boolean canSetProperty(Object object) + { + return false; + } + }); + } + }; + } + else if (object instanceof EModelElement && evolution.containsElement((EModelElement)object)) + { + /** + * Eliminate released elements from selection choices. + */ + return new PropertySource(object, itemPropertySource) + { + @Override + protected IPropertyDescriptor createPropertyDescriptor(final IItemPropertyDescriptor itemPropertyDescriptor) + { + return super.createPropertyDescriptor(new DelegatingItemPropertyDescriptor(itemPropertyDescriptor) + { + @Override + public Collection<?> getChoiceOfValues(Object object) + { + Collection<?> values = super.getChoiceOfValues(object); + if (values != null) + { + for (Iterator<?> it = values.iterator(); it.hasNext();) + { + Object value = it.next(); + if (value instanceof EModelElement) + { + EModelElement modelElement = (EModelElement)value; + if (!evolution.containsElement(modelElement)) + { + it.remove(); + } + } + } + } + + return values; + } + }); + } + }; + } + + return super.createPropertySource(object, itemPropertySource); + } + }); + + propertySheetPages.add(propertySheetPage); + + return propertySheetPage; + } + + /** + * This deals with how we want selection in the outliner to affect the other views. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void handleContentOutlineSelection(ISelection selection) + { + if (selectionViewer != null && !selection.isEmpty() && selection instanceof IStructuredSelection) + { + Iterator<?> selectedElements = ((IStructuredSelection)selection).iterator(); + if (selectedElements.hasNext()) + { + // Get the first selected element. + // + Object selectedElement = selectedElements.next(); + + ArrayList<Object> selectionList = new ArrayList<Object>(); + selectionList.add(selectedElement); + while (selectedElements.hasNext()) + { + selectionList.add(selectedElements.next()); + } + + // Set the selection to the widget. + // + selectionViewer.setSelection(new StructuredSelection(selectionList)); + } + } + } + + /** + * This is for implementing {@link IEditorPart} and simply tests the command stack. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean isDirty() + { + return ((BasicCommandStack)editingDomain.getCommandStack()).isSaveNeeded(); + } + + /** + * This is for implementing {@link IEditorPart} and simply saves the model file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void doSave(IProgressMonitor progressMonitor) + { + // Save only resources that have actually changed. + // + final Map<Object, Object> saveOptions = new HashMap<Object, Object>(); + saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER); + saveOptions.put(Resource.OPTION_LINE_DELIMITER, Resource.OPTION_LINE_DELIMITER_UNSPECIFIED); + + // Do the work within an operation because this is a long running activity that modifies the workbench. + // + WorkspaceModifyOperation operation = new WorkspaceModifyOperation() + { + // This is the method that gets invoked when the operation runs. + // + @Override + public void execute(IProgressMonitor monitor) + { + // Save the resources to the file system. + // + boolean first = true; + List<Resource> resources = editingDomain.getResourceSet().getResources(); + for (int i = 0; i < resources.size(); ++i) + { + Resource resource = resources.get(i); + if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) + { + try + { + long timeStamp = resource.getTimeStamp(); + resource.save(saveOptions); + if (resource.getTimeStamp() != timeStamp) + { + savedResources.add(resource); + } + } + catch (Exception exception) + { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + first = false; + } + } + } + }; + + updateProblemIndication = false; + try + { + // This runs the options, and shows progress. + // + new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation); + + // Refresh the necessary state. + // + ((BasicCommandStack)editingDomain.getCommandStack()).saveIsDone(); + firePropertyChange(IEditorPart.PROP_DIRTY); + } + catch (Exception exception) + { + // Something went wrong that shouldn't. + // + EvolutionEditorPlugin.INSTANCE.log(exception); + } + updateProblemIndication = true; + updateProblemIndication(); + } + + /** + * This returns whether something has been persisted to the URI of the specified resource. + * The implementation uses the URI converter from the editor's resource set to try to open an input stream. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean isPersisted(Resource resource) + { + boolean result = false; + try + { + InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI()); + if (stream != null) + { + result = true; + stream.close(); + } + } + catch (IOException e) + { + // Ignore + } + return result; + } + + /** + * This always returns true because it is not currently supported. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean isSaveAsAllowed() + { + return true; + } + + /** + * This also changes the editor's input. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void doSaveAs() + { + SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell()); + saveAsDialog.open(); + IPath path = saveAsDialog.getResult(); + if (path != null) + { + IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path); + if (file != null) + { + doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file)); + } + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void doSaveAs(URI uri, IEditorInput editorInput) + { + editingDomain.getResourceSet().getResources().get(0).setURI(uri); + setInputWithNotify(editorInput); + setPartName(editorInput.getName()); + IProgressMonitor progressMonitor = getActionBars().getStatusLineManager() != null ? getActionBars().getStatusLineManager().getProgressMonitor() + : new NullProgressMonitor(); + doSave(progressMonitor); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void gotoMarker(IMarker marker) + { + List<?> targetObjects = markerHelper.getTargetObjects(editingDomain, marker); + if (!targetObjects.isEmpty()) + { + setSelectionToViewer(targetObjects); + } + } + + /** + * This is called during startup. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void init(IEditorSite site, IEditorInput editorInput) + { + setSite(site); + setInputWithNotify(editorInput); + setPartName(editorInput.getName()); + site.setSelectionProvider(this); + site.getPage().addPartListener(partListener); + ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setFocus() + { + getControl(getActivePage()).setFocus(); + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void addSelectionChangedListener(ISelectionChangedListener listener) + { + selectionChangedListeners.add(listener); + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void removeSelectionChangedListener(ISelectionChangedListener listener) + { + selectionChangedListeners.remove(listener); + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ISelection getSelection() + { + return editorSelection; + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection. + * Calling this result will notify the listeners. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setSelection(ISelection selection) + { + editorSelection = selection; + + for (ISelectionChangedListener listener : selectionChangedListeners) + { + listener.selectionChanged(new SelectionChangedEvent(this, selection)); + } + setStatusLineManager(selection); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setStatusLineManager(ISelection selection) + { + IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer ? contentOutlineStatusLineManager + : getActionBars().getStatusLineManager(); + + if (statusLineManager != null) + { + if (selection instanceof IStructuredSelection) + { + Collection<?> collection = ((IStructuredSelection)selection).toList(); + switch (collection.size()) + { + case 0: + { + statusLineManager.setMessage(getString("_UI_NoObjectSelected")); + break; + } + case 1: + { + String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next()); + statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text)); + break; + } + default: + { + statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size()))); + break; + } + } + } + else + { + statusLineManager.setMessage(""); + } + } + } + + /** + * This looks up a string in the plugin's plugin.properties file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static String getString(String key) + { + return EvolutionEditorPlugin.INSTANCE.getString(key); + } + + /** + * This looks up a string in plugin.properties, making a substitution. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static String getString(String key, Object s1) + { + return EvolutionEditorPlugin.INSTANCE.getString(key, new Object[] { s1 }); + } + + /** + * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void menuAboutToShow(IMenuManager menuManager) + { + ((IMenuListener)getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EditingDomainActionBarContributor getActionBarContributor() + { + return (EditingDomainActionBarContributor)getEditorSite().getActionBarContributor(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IActionBars getActionBars() + { + return getActionBarContributor().getActionBars(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public AdapterFactory getAdapterFactory() + { + return adapterFactory; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void dispose() + { + updateProblemIndication = false; + + ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener); + + getSite().getPage().removePartListener(partListener); + + adapterFactory.dispose(); + + if (getActionBarContributor().getActiveEditor() == this) + { + getActionBarContributor().setActiveEditor(null); + } + + for (PropertySheetPage propertySheetPage : propertySheetPages) + { + propertySheetPage.dispose(); + } + + if (contentOutlinePage != null) + { + contentOutlinePage.dispose(); + } + + super.dispose(); + } + + /** + * Returns whether the outline view should be presented to the user. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean showOutlineView() + { + return false; + } +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/EvolutionEditorPlugin.java b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/EvolutionEditorPlugin.java new file mode 100644 index 0000000000..8aa42e9f46 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/EvolutionEditorPlugin.java @@ -0,0 +1,96 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.presentation; + +import org.eclipse.emf.common.EMFPlugin; +import org.eclipse.emf.common.ui.EclipseUIPlugin; +import org.eclipse.emf.common.util.ResourceLocator; +import org.eclipse.emf.ecore.provider.EcoreEditPlugin; + +/** + * This is the central singleton for the Evolution editor plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public final class EvolutionEditorPlugin extends EMFPlugin +{ + public static final String PLUGIN_ID = "org.eclipse.emf.cdo.evolution.editor"; + + /** + * Keep track of the singleton. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final EvolutionEditorPlugin INSTANCE = new EvolutionEditorPlugin(); + + /** + * Keep track of the singleton. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static Implementation plugin; + + /** + * Create the instance. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EvolutionEditorPlugin() + { + super(new ResourceLocator[] { EcoreEditPlugin.INSTANCE, }); + } + + /** + * Returns the singleton instance of the Eclipse plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the singleton instance. + * @generated + */ + @Override + public ResourceLocator getPluginResourceLocator() + { + return plugin; + } + + /** + * Returns the singleton instance of the Eclipse plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the singleton instance. + * @generated + */ + public static Implementation getPlugin() + { + return plugin; + } + + /** + * The actual implementation of the Eclipse <b>Plugin</b>. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static class Implementation extends EclipseUIPlugin + { + /** + * Creates an instance. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Implementation() + { + super(); + + // Remember the static instance. + // + plugin = this; + } + } + +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/EvolutionModelWizard.java b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/EvolutionModelWizard.java new file mode 100644 index 0000000000..1e7b23d1f7 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/EvolutionModelWizard.java @@ -0,0 +1,657 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.presentation; + +import org.eclipse.emf.cdo.evolution.EvolutionFactory; +import org.eclipse.emf.cdo.evolution.EvolutionPackage; +import org.eclipse.emf.cdo.evolution.provider.EvolutionEditPlugin; + +import org.eclipse.emf.common.CommonPlugin; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EClassifier; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; +import org.eclipse.emf.ecore.xmi.XMLResource; +import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry; + +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IFolder; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.Path; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; +import org.eclipse.ui.INewWizard; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.actions.WorkspaceModifyOperation; +import org.eclipse.ui.dialogs.WizardNewFileCreationPage; +import org.eclipse.ui.part.FileEditorInput; +import org.eclipse.ui.part.ISetSelectionTarget; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.MissingResourceException; +import java.util.StringTokenizer; + +/** + * This is a simple wizard for creating a new model file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class EvolutionModelWizard extends Wizard implements INewWizard +{ + /** + * The supported extensions for created files. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final List<String> FILE_EXTENSIONS = Collections + .unmodifiableList(Arrays.asList(EvolutionEditorPlugin.INSTANCE.getString("_UI_EvolutionEditorFilenameExtensions").split("\\s*,\\s*"))); + + /** + * A formatted list of supported file extensions, suitable for display. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final String FORMATTED_FILE_EXTENSIONS = EvolutionEditorPlugin.INSTANCE.getString("_UI_EvolutionEditorFilenameExtensions") + .replaceAll("\\s*,\\s*", ", "); + + /** + * This caches an instance of the model package. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EvolutionPackage evolutionPackage = EvolutionPackage.eINSTANCE; + + /** + * This caches an instance of the model factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EvolutionFactory evolutionFactory = evolutionPackage.getEvolutionFactory(); + + /** + * This is the file creation page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EvolutionModelWizardNewFileCreationPage newFileCreationPage; + + /** + * This is the initial object creation page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EvolutionModelWizardInitialObjectCreationPage initialObjectCreationPage; + + /** + * Remember the selection during initialization for populating the default container. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IStructuredSelection selection; + + /** + * Remember the workbench during initialization. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IWorkbench workbench; + + /** + * Caches the names of the types that can be created as the root object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected List<String> initialObjectNames; + + /** + * This just records the information. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void init(IWorkbench workbench, IStructuredSelection selection) + { + this.workbench = workbench; + this.selection = selection; + setWindowTitle(EvolutionEditorPlugin.INSTANCE.getString("_UI_Wizard_label")); + setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(EvolutionEditorPlugin.INSTANCE.getImage("full/wizban/NewEvolution"))); + } + + /** + * Returns the names of the types that can be created as the root object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<String> getInitialObjectNames() + { + if (initialObjectNames == null) + { + initialObjectNames = new ArrayList<String>(); + for (EClassifier eClassifier : evolutionPackage.getEClassifiers()) + { + if (eClassifier instanceof EClass) + { + EClass eClass = (EClass)eClassifier; + if (!eClass.isAbstract()) + { + initialObjectNames.add(eClass.getName()); + } + } + } + Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator()); + } + return initialObjectNames; + } + + /** + * Create a new model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EObject createInitialModel() + { + EClass eClass = (EClass)evolutionPackage.getEClassifier(initialObjectCreationPage.getInitialObjectName()); + EObject rootObject = evolutionFactory.create(eClass); + return rootObject; + } + + /** + * Do the work after everything is specified. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean performFinish() + { + try + { + // Remember the file. + // + final IFile modelFile = getModelFile(); + + // Do the work within an operation. + // + WorkspaceModifyOperation operation = new WorkspaceModifyOperation() + { + @Override + protected void execute(IProgressMonitor progressMonitor) + { + try + { + // Create a resource set + // + ResourceSet resourceSet = new ResourceSetImpl(); + + // Get the URI of the model file. + // + URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true); + + // Create a resource for this file. + // + Resource resource = resourceSet.createResource(fileURI); + + // Add the initial model object to the contents. + // + EObject rootObject = createInitialModel(); + if (rootObject != null) + { + resource.getContents().add(rootObject); + } + + // Save the contents of the resource to the file system. + // + Map<Object, Object> options = new HashMap<Object, Object>(); + options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding()); + resource.save(options); + } + catch (Exception exception) + { + EvolutionEditorPlugin.INSTANCE.log(exception); + } + finally + { + progressMonitor.done(); + } + } + }; + + getContainer().run(false, false, operation); + + // Select the new file resource in the current view. + // + IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow(); + IWorkbenchPage page = workbenchWindow.getActivePage(); + final IWorkbenchPart activePart = page.getActivePart(); + if (activePart instanceof ISetSelectionTarget) + { + final ISelection targetSelection = new StructuredSelection(modelFile); + getShell().getDisplay().asyncExec(new Runnable() + { + public void run() + { + ((ISetSelectionTarget)activePart).selectReveal(targetSelection); + } + }); + } + + // Open an editor on the new file. + // + try + { + page.openEditor(new FileEditorInput(modelFile), workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId()); + } + catch (PartInitException exception) + { + MessageDialog.openError(workbenchWindow.getShell(), EvolutionEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage()); + return false; + } + + return true; + } + catch (Exception exception) + { + EvolutionEditorPlugin.INSTANCE.log(exception); + return false; + } + } + + /** + * This is the one page of the wizard. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class EvolutionModelWizardNewFileCreationPage extends WizardNewFileCreationPage + { + /** + * Pass in the selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EvolutionModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) + { + super(pageId, selection); + } + + /** + * The framework calls this to see if the file is correct. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean validatePage() + { + if (super.validatePage()) + { + String extension = new Path(getFileName()).getFileExtension(); + if (extension == null || !FILE_EXTENSIONS.contains(extension)) + { + String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension"; + setErrorMessage(EvolutionEditorPlugin.INSTANCE.getString(key, new Object[] { FORMATTED_FILE_EXTENSIONS })); + return false; + } + return true; + } + return false; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IFile getModelFile() + { + return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName())); + } + } + + /** + * This is the page where the type of object to create is selected. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class EvolutionModelWizardInitialObjectCreationPage extends WizardPage + { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Combo initialObjectField; + + /** + * @generated + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + */ + protected List<String> encodings; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Combo encodingField; + + /** + * Pass in the selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EvolutionModelWizardInitialObjectCreationPage(String pageId) + { + super(pageId); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void createControl(Composite parent) + { + Composite composite = new Composite(parent, SWT.NONE); + { + GridLayout layout = new GridLayout(); + layout.numColumns = 1; + layout.verticalSpacing = 12; + composite.setLayout(layout); + + GridData data = new GridData(); + data.verticalAlignment = GridData.FILL; + data.grabExcessVerticalSpace = true; + data.horizontalAlignment = GridData.FILL; + composite.setLayoutData(data); + } + + Label containerLabel = new Label(composite, SWT.LEFT); + { + containerLabel.setText(EvolutionEditorPlugin.INSTANCE.getString("_UI_ModelObject")); + + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + containerLabel.setLayoutData(data); + } + + initialObjectField = new Combo(composite, SWT.BORDER); + { + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + initialObjectField.setLayoutData(data); + } + + for (String objectName : getInitialObjectNames()) + { + initialObjectField.add(getLabel(objectName)); + } + + if (initialObjectField.getItemCount() == 1) + { + initialObjectField.select(0); + } + initialObjectField.addModifyListener(validator); + + Label encodingLabel = new Label(composite, SWT.LEFT); + { + encodingLabel.setText(EvolutionEditorPlugin.INSTANCE.getString("_UI_XMLEncoding")); + + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + encodingLabel.setLayoutData(data); + } + encodingField = new Combo(composite, SWT.BORDER); + { + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + encodingField.setLayoutData(data); + } + + for (String encoding : getEncodings()) + { + encodingField.add(encoding); + } + + encodingField.select(0); + encodingField.addModifyListener(validator); + + setPageComplete(validatePage()); + setControl(composite); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ModifyListener validator = new ModifyListener() + { + public void modifyText(ModifyEvent e) + { + setPageComplete(validatePage()); + } + }; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean validatePage() + { + return getInitialObjectName() != null && getEncodings().contains(encodingField.getText()); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setVisible(boolean visible) + { + super.setVisible(visible); + if (visible) + { + if (initialObjectField.getItemCount() == 1) + { + initialObjectField.clearSelection(); + encodingField.setFocus(); + } + else + { + encodingField.clearSelection(); + initialObjectField.setFocus(); + } + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getInitialObjectName() + { + String label = initialObjectField.getText(); + + for (String name : getInitialObjectNames()) + { + if (getLabel(name).equals(label)) + { + return name; + } + } + return null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getEncoding() + { + return encodingField.getText(); + } + + /** + * Returns the label for the specified type name. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected String getLabel(String typeName) + { + try + { + return EvolutionEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type"); + } + catch (MissingResourceException mre) + { + EvolutionEditorPlugin.INSTANCE.log(mre); + } + return typeName; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<String> getEncodings() + { + if (encodings == null) + { + encodings = new ArrayList<String>(); + for (StringTokenizer stringTokenizer = new StringTokenizer(EvolutionEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer + .hasMoreTokens();) + { + encodings.add(stringTokenizer.nextToken()); + } + } + return encodings; + } + } + + /** + * The framework calls this to create the contents of the wizard. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void addPages() + { + // Create a page, set the title, and the initial model file name. + // + newFileCreationPage = new EvolutionModelWizardNewFileCreationPage("Whatever", selection); + newFileCreationPage.setTitle(EvolutionEditorPlugin.INSTANCE.getString("_UI_EvolutionModelWizard_label")); + newFileCreationPage.setDescription(EvolutionEditorPlugin.INSTANCE.getString("_UI_EvolutionModelWizard_description")); + newFileCreationPage.setFileName(EvolutionEditorPlugin.INSTANCE.getString("_UI_EvolutionEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0)); + addPage(newFileCreationPage); + + // Try and get the resource selection to determine a current directory for the file dialog. + // + if (selection != null && !selection.isEmpty()) + { + // Get the resource... + // + Object selectedElement = selection.iterator().next(); + if (selectedElement instanceof IResource) + { + // Get the resource parent, if its a file. + // + IResource selectedResource = (IResource)selectedElement; + if (selectedResource.getType() == IResource.FILE) + { + selectedResource = selectedResource.getParent(); + } + + // This gives us a directory... + // + if (selectedResource instanceof IFolder || selectedResource instanceof IProject) + { + // Set this for the container. + // + newFileCreationPage.setContainerFullPath(selectedResource.getFullPath()); + + // Make up a unique new name here. + // + String defaultModelBaseFilename = EvolutionEditorPlugin.INSTANCE.getString("_UI_EvolutionEditorFilenameDefaultBase"); + String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0); + String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension; + for (int i = 1; ((IContainer)selectedResource).findMember(modelFilename) != null; ++i) + { + modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension; + } + newFileCreationPage.setFileName(modelFilename); + } + } + } + initialObjectCreationPage = new EvolutionModelWizardInitialObjectCreationPage("Whatever2"); + initialObjectCreationPage.setTitle(EvolutionEditorPlugin.INSTANCE.getString("_UI_EvolutionModelWizard_label")); + initialObjectCreationPage.setDescription(EvolutionEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description")); + addPage(initialObjectCreationPage); + } + + /** + * Get the file from the page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IFile getModelFile() + { + return newFileCreationPage.getModelFile(); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/BasicDiagnosticResolution.java b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/BasicDiagnosticResolution.java new file mode 100644 index 0000000000..91cbd8a227 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/BasicDiagnosticResolution.java @@ -0,0 +1,138 @@ +/* + * Copyright (c) 2004-2018 Eike Stepper (Loehne, 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: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.evolution.presentation.quickfix; + +import org.eclipse.emf.cdo.evolution.util.DiagnosticType; + +import org.eclipse.emf.common.util.Diagnostic; + +import org.eclipse.swt.graphics.Image; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author Eike Stepper + */ +public abstract class BasicDiagnosticResolution extends DiagnosticResolution implements DiagnosticResolutionRelevance +{ + private final Image image; + + private final String text; + + private final String description; + + private final boolean multi; + + public BasicDiagnosticResolution(Image image, String text, String description, boolean multi) + { + this.image = image; + this.text = text; + this.description = description; + this.multi = multi; + } + + @Override + public Image getImage() + { + return image; + } + + @Override + public String getText() + { + return text; + } + + @Override + public String getDescription() + { + return description; + } + + public boolean isMulti() + { + return multi; + } + + @Override + public Diagnostic[] findOtherDiagnostics(Diagnostic[] diagnostics) + { + if (multi && diagnostics != null && diagnostics.length != 0) + { + List<Diagnostic> result = new ArrayList<Diagnostic>(); + for (int i = 0; i < diagnostics.length; i++) + { + Diagnostic diagnostic = diagnostics[i]; + if (isCompatibleDiagnostic(diagnostic)) + { + result.add(diagnostic); + } + } + + return result.toArray(new Diagnostic[result.size()]); + } + + return super.findOtherDiagnostics(diagnostics); + } + + protected boolean isCompatibleDiagnostic(Diagnostic diagnostic) + { + return false; + } + + public int getRelevanceForResolution() + { + return 0; + } + + @Override + public abstract void run(Diagnostic diagnostic); + + /** + * @author Eike Stepper + */ + public static abstract class TypedDiagnosticResolution extends BasicDiagnosticResolution + { + private final DiagnosticType type; + + public TypedDiagnosticResolution(Image image, String text, String description, boolean multi, String source, int code) + { + super(image, text, description, multi); + type = new DiagnosticType(source, code); + } + + public DiagnosticType getType() + { + return type; + } + + protected DiagnosticType[] getCompatibleTypes() + { + return new DiagnosticType[] { type }; + } + + @Override + protected boolean isCompatibleDiagnostic(Diagnostic diagnostic) + { + for (int i = 0; i < getCompatibleTypes().length; i++) + { + DiagnosticType type = getCompatibleTypes()[i]; + if (type.appliesTo(diagnostic)) + { + return true; + } + } + + return super.isCompatibleDiagnostic(diagnostic); + } + } +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/BasicDiagnosticResolutionGenerator.java b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/BasicDiagnosticResolutionGenerator.java new file mode 100644 index 0000000000..60a5bc7421 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/BasicDiagnosticResolutionGenerator.java @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2004-2018 Eike Stepper (Loehne, 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: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.evolution.presentation.quickfix; + +import org.eclipse.emf.cdo.evolution.presentation.EvolutionEditorPlugin; + +import org.eclipse.emf.common.util.ResourceLocator; + +/** + * @author Eike Stepper + */ +public abstract class BasicDiagnosticResolutionGenerator implements DiagnosticResolution.Generator +{ + protected ResourceLocator getResourceLocator() + { + return EvolutionEditorPlugin.INSTANCE; + } + + protected String getString(String key, Object... substitutions) + { + return getString(getResourceLocator(), key, substitutions); + } + + private String getString(ResourceLocator resourceLocator, String key, Object[] substitutions) + { + return substitutions == null || substitutions.length == 0 ? resourceLocator.getString(key) : resourceLocator.getString(key, substitutions); + } +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/DefaultDiagnosticResolutionGenerator.java b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/DefaultDiagnosticResolutionGenerator.java new file mode 100644 index 0000000000..75fd4aa4e5 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/DefaultDiagnosticResolutionGenerator.java @@ -0,0 +1,403 @@ +/* + * Copyright (c) 2004-2018 Eike Stepper (Loehne, 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: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.evolution.presentation.quickfix; + +import org.eclipse.emf.cdo.evolution.ChangeKind; +import org.eclipse.emf.cdo.evolution.ElementChange; +import org.eclipse.emf.cdo.evolution.Evolution; +import org.eclipse.emf.cdo.evolution.EvolutionFactory; +import org.eclipse.emf.cdo.evolution.FeaturePathMigration; +import org.eclipse.emf.cdo.evolution.Model; +import org.eclipse.emf.cdo.evolution.Release; +import org.eclipse.emf.cdo.evolution.impl.EvolutionImpl; +import org.eclipse.emf.cdo.evolution.impl.ModelSetChangeImpl; +import org.eclipse.emf.cdo.evolution.presentation.quickfix.DiagnosticResolution.Generator; +import org.eclipse.emf.cdo.evolution.util.DiagnosticID; +import org.eclipse.emf.cdo.evolution.util.DiagnosticType; +import org.eclipse.emf.cdo.evolution.util.ElementHandler; +import org.eclipse.emf.cdo.evolution.util.ElementRunnable; +import org.eclipse.emf.cdo.evolution.util.EvolutionValidator; +import org.eclipse.emf.cdo.evolution.util.IDAnnotation; + +import org.eclipse.net4j.util.factory.ProductCreationException; + +import org.eclipse.emf.common.util.Diagnostic; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EModelElement; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.util.EcoreUtil; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.dialogs.FilteredResourcesSelectionDialog; + +import java.util.Collection; +import java.util.Date; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * @author Eike Stepper + */ +public class DefaultDiagnosticResolutionGenerator extends BasicDiagnosticResolutionGenerator +{ + public DefaultDiagnosticResolutionGenerator() + { + } + + public void getResolutions(Diagnostic diagnostic, final Context context) + { + if (EvolutionValidator.DIAGNOSTIC_SOURCE.equals(diagnostic.getSource())) + { + int code = diagnostic.getCode(); + switch (code) + { + case EvolutionValidator.CODE_NO_MODEL: + handleNoModel(diagnostic, context); + break; + + case EvolutionValidator.CODE_NO_URI: + handleNoURI(diagnostic, context); + break; + + case EvolutionValidator.CODE_NO_RESOURCE_SET: + break; + + case EvolutionValidator.CODE_RESOURCE_NOT_FOUND: + break; + + case EvolutionValidator.CODE_LOAD_PROBLEM: + break; + + case EvolutionValidator.CODE_CONTENT_PROBLEM: + break; + + case EvolutionValidator.CODE_PACKAGE_MISSING: + handlePackageMissing(diagnostic, context); + break; + + case EvolutionValidator.CODE_PACKAGE_NOT_UNIQUE: + break; + + case EvolutionValidator.CODE_NSURI_NOT_UNIQUE: + break; + + case EvolutionValidator.CODE_NSURI_NOT_CHANGED: + handleNSURINotChanged(diagnostic, context); + break; + + case EvolutionValidator.CODE_ID_ANNOTATION_MISSING: + case EvolutionValidator.CODE_ID_WITHOUT_VALUE: + handleNoID(diagnostic, context); + break; + + case EvolutionValidator.CODE_ID_NOT_UNIQUE: + handleIDNotUnique(diagnostic, context); + break; + + case EvolutionValidator.CODE_FEATURE_PATH_UNKNOWN: + handleFeaturePathUnknown(diagnostic, context); + break; + + case EvolutionValidator.CODE_RELEASE: + handleRelease(diagnostic, context); + break; + } + } + } + + protected void handleNoModel(Diagnostic diagnostic, final Context context) + { + context.add(new EvolutionDiagnosticResolution(null, getString("_QF_SelectModelsFromWorkspace"), null, false, diagnostic.getCode()) + { + @Override + public void run(Diagnostic diagnostic) + { + Shell shell = context.getEditor().getSite().getShell(); + + FilteredResourcesSelectionDialog dialog = new FilteredResourcesSelectionDialog(shell, true, ResourcesPlugin.getWorkspace().getRoot(), IResource.FILE); + dialog.setInitialPattern("*.ecore"); + dialog.open(); + + Object[] result = dialog.getResult(); + if (result == null || result.length == 0) + { + return; + } + + Evolution evolution = (Evolution)diagnostic.getData().get(0); + for (Object object : result) + { + if (object instanceof IFile) + { + IFile file = (IFile)object; + + Model model = EvolutionFactory.eINSTANCE.createModel(URI.createPlatformResourceURI(file.getFullPath().toString(), true)); + evolution.getModels().add(model); + } + } + } + }); + } + + protected void handleNoURI(Diagnostic diagnostic, final Context context) + { + context.add(new EvolutionDiagnosticResolution(null, getString("_QF_SelectModelFromWorkspace"), null, false, diagnostic.getCode()) + { + @Override + public void run(Diagnostic diagnostic) + { + Shell shell = context.getEditor().getSite().getShell(); + + FilteredResourcesSelectionDialog dialog = new FilteredResourcesSelectionDialog(shell, false, ResourcesPlugin.getWorkspace().getRoot(), IResource.FILE); + dialog.setInitialPattern("*.ecore"); + dialog.open(); + + Object[] result = dialog.getResult(); + if (result == null || result.length == 0 || !(result[0] instanceof IFile)) + { + return; + } + + IFile file = (IFile)result[0]; + Model model = (Model)diagnostic.getData().get(0); + model.setURI(URI.createPlatformResourceURI(file.getFullPath().toString(), true)); + } + }); + } + + protected void handlePackageMissing(Diagnostic diagnostic, final Context context) + { + final List<?> data = diagnostic.getData(); + + Resource resource = ((EPackage)data.get(2)).eResource(); + if (resource != null) + { + final URI uri = resource.getURI(); + if (uri != null) + { + context.add(new EvolutionDiagnosticResolution(null, getString("_QF_PackageMissing", uri), null, true, diagnostic.getCode()) + { + @Override + public void run(Diagnostic diagnostic) + { + Model model = EvolutionFactory.eINSTANCE.createModel(uri); + + Evolution evolution = (Evolution)data.get(0); + evolution.getModels().add(model); + } + }); + } + } + } + + protected void handleNSURINotChanged(Diagnostic diagnostic, Context context) + { + Evolution evolution = (Evolution)diagnostic.getData().get(3); + final int nextVersion = evolution.getNextReleaseVersion(); + + context.add(new EvolutionDiagnosticResolution(null, getString("_QF_SetVersionIntoNamespace", nextVersion), null, true, diagnostic.getCode()) + { + @Override + public void run(Diagnostic diagnostic) + { + EPackage ePackage = (EPackage)diagnostic.getData().get(0); + String nsURI = ePackage.getNsURI(); + if (!nsURI.endsWith("/")) + { + nsURI += "/"; + } + + Pattern pattern = Pattern.compile("/v[0-9]+/"); + Matcher matcher = pattern.matcher(nsURI); + if (matcher.find()) + { + int start = matcher.start(); + int end = matcher.end(); + String prefix = nsURI.substring(0, start); + String suffix = nsURI.substring(end, nsURI.length() - 1); + + nsURI = prefix + "/v" + nextVersion + "/" + suffix; + } + else + { + nsURI += "v" + nextVersion; + } + + ePackage.setNsURI(nsURI); + } + }); + + context.add(new EvolutionDiagnosticResolution(null, getString("_QF_DisableUniqueNamespaceEnforcement"), null, false, diagnostic.getCode()) + { + @Override + public int getRelevanceForResolution() + { + return -100; + } + + @Override + public void run(Diagnostic diagnostic) + { + Evolution evolution = (Evolution)diagnostic.getData().get(3); + evolution.setUniqueNamespaces(false); + } + }); + } + + protected void handleNoID(Diagnostic diagnostic, final Context context) + { + context.add(new EvolutionDiagnosticResolution(null, getString("_QF_AssignID"), null, true, diagnostic.getCode()) + { + @Override + protected DiagnosticType[] getCompatibleTypes() + { + return new DiagnosticType[] { getType(), new DiagnosticType(EvolutionValidator.DIAGNOSTIC_SOURCE, EvolutionValidator.CODE_ID_WITHOUT_VALUE) }; + } + + @Override + public void run(Diagnostic diagnostic) + { + EModelElement modelElement = (EModelElement)diagnostic.getData().get(0); + IDAnnotation.ensureValue(modelElement); + } + }); + } + + protected void handleIDNotUnique(Diagnostic diagnostic, final Context context) + { + context.add(new EvolutionDiagnosticResolution(null, getString("_QF_RememberID"), null, true, diagnostic.getCode()) + { + @Override + public int getRelevanceForResolution() + { + return 100; + } + + @Override + public void run(Diagnostic diagnostic) + { + EModelElement modelElement = (EModelElement)diagnostic.getData().get(0); + String oldValue = IDAnnotation.getValue(modelElement); + IDAnnotation.setOldValue(modelElement, oldValue); + IDAnnotation.setValue(modelElement, null); + IDAnnotation.ensureValue(modelElement); + } + }); + + context.add(new EvolutionDiagnosticResolution(null, getString("_QF_ReplaceID"), null, true, diagnostic.getCode()) + { + @Override + public void run(Diagnostic diagnostic) + { + EModelElement modelElement = (EModelElement)diagnostic.getData().get(0); + IDAnnotation.setValue(modelElement, null); + IDAnnotation.ensureValue(modelElement); + } + }); + } + + protected void handleFeaturePathUnknown(Diagnostic diagnostic, Context context) + { + final ElementChange elementChange = (ElementChange)diagnostic.getData().get(0); + final ChangeKind kind = elementChange.getKind(); + + context.add(new EvolutionDiagnosticResolution(null, + getString("_QF_SpecifyFeaturePath", kind.getName().toLowerCase(), ElementHandler.getLabel(elementChange.getNewElement())), null, false, + diagnostic.getCode()) + { + @Override + public void run(Diagnostic diagnostic) + { + FeaturePathMigration migration = EvolutionFactory.eINSTANCE.createFeaturePathMigration(); + migration.setDiagnosticID(DiagnosticID.get(diagnostic).getValue()); + migration.setFromClass(((EStructuralFeature)elementChange.getOldElement()).getEContainingClass()); + migration.setToClass(((EStructuralFeature)elementChange.getNewElement()).getEContainingClass()); + + Evolution evolution = (Evolution)elementChange.getNewModelSet(); + evolution.getMigrations().add(migration); + } + }); + } + + protected void handleRelease(Diagnostic diagnostic, final Context context) + { + final EvolutionImpl evolution = (EvolutionImpl)diagnostic.getData().get(0); + final int nextVersion = evolution.getNextReleaseVersion(); + + context.add(new EvolutionDiagnosticResolution(null, getString("_QF_CreateRelease", nextVersion), null, false, diagnostic.getCode()) + { + @Override + public void run(Diagnostic diagnostic) + { + Release release = EvolutionFactory.eINSTANCE.createRelease(); + release.setDate(new Date()); + release.setVersion(nextVersion); + + evolution.getReleases().add(release); + + Collection<EPackage> rootPackages = EcoreUtil.copyAll(evolution.getRootPackages()); + release.getRootPackages().addAll(rootPackages); + + for (EPackage rootPackage : evolution.getRootPackages()) + { + ElementHandler.execute(rootPackage, new ElementRunnable() + { + public void run(EModelElement modelElement) + { + IDAnnotation.setOldValue(modelElement, null); + } + }); + } + + ModelSetChangeImpl change = (ModelSetChangeImpl)evolution.getChange(); + if (change != null) + { + change.reset(); + evolution.setChange(null); + } + } + }); + } + + /** + * @author Eike Stepper + */ + protected static abstract class EvolutionDiagnosticResolution extends BasicDiagnosticResolution.TypedDiagnosticResolution + { + protected EvolutionDiagnosticResolution(Image image, String text, String description, boolean multi, int code) + { + super(image, text, description, multi, EvolutionValidator.DIAGNOSTIC_SOURCE, code); + } + } + + /** + * @author Eike Stepper + */ + public static class Factory extends DiagnosticResolution.Generator.Factory + { + public Factory() + { + } + + @Override + public Generator create(String description) throws ProductCreationException + { + return new DefaultDiagnosticResolutionGenerator(); + } + } +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/DiagnosticResolution.java b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/DiagnosticResolution.java new file mode 100644 index 0000000000..603b7467e4 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/DiagnosticResolution.java @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2004-2018 Eike Stepper (Loehne, 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: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.evolution.presentation.quickfix; + +import org.eclipse.emf.cdo.evolution.presentation.EvolutionEditor; +import org.eclipse.emf.cdo.evolution.presentation.quickfix.DiagnosticResolution.Generator.Context; + +import org.eclipse.net4j.util.container.IPluginContainer; +import org.eclipse.net4j.util.factory.ProductCreationException; + +import org.eclipse.emf.common.util.Diagnostic; + +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.swt.graphics.Image; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author Eike Stepper + */ +public abstract class DiagnosticResolution +{ + public static final Diagnostic[] NO_DIAGNOSTICS = {}; + + public abstract Image getImage(); + + public abstract String getText(); + + public abstract String getDescription(); + + public abstract void run(Diagnostic diagnostic); + + public void run(Diagnostic[] diagnostics, IProgressMonitor monitor) + { + for (Diagnostic diagnostic : diagnostics) + { + monitor.subTask(diagnostic.getMessage()); + run(diagnostic); + } + } + + public Diagnostic[] findOtherDiagnostics(Diagnostic[] diagnostics) + { + return NO_DIAGNOSTICS; + } + + public static DiagnosticResolution[] getResolutions(Diagnostic diagnostic, final EvolutionEditor editor) + { + final List<DiagnosticResolution> result = new ArrayList<DiagnosticResolution>(); + Context context = new Generator.Context() + { + public EvolutionEditor getEditor() + { + return editor; + } + + public void add(DiagnosticResolution resolution) + { + result.add(resolution); + } + }; + + for (String factoryType : IPluginContainer.INSTANCE.getFactoryTypes(Generator.Factory.PRODUCT_GROUP)) + { + Generator generator = (Generator)IPluginContainer.INSTANCE.getElement(Generator.Factory.PRODUCT_GROUP, factoryType, null); + generator.getResolutions(diagnostic, context); + } + + return result.toArray(new DiagnosticResolution[result.size()]); + } + + /** + * @author Eike Stepper + */ + public interface Generator + { + public void getResolutions(Diagnostic diagnostic, Context context); + + /** + * @author Eike Stepper + */ + public interface Context + { + public EvolutionEditor getEditor(); + + public void add(DiagnosticResolution resolution); + } + + /** + * @author Eike Stepper + */ + public static abstract class Factory extends org.eclipse.net4j.util.factory.Factory + { + public static final String PRODUCT_GROUP = "org.eclipse.emf.cdo.evolution.diagnosticResolutionGenerators"; + + public static final String DEFAULT_TYPE = "default"; + + public Factory() + { + this(DEFAULT_TYPE); + } + + public Factory(String type) + { + super(PRODUCT_GROUP, type); + } + + public abstract Generator create(String description) throws ProductCreationException; + } + } +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/DiagnosticResolutionRelevance.java b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/DiagnosticResolutionRelevance.java new file mode 100644 index 0000000000..88f67d482a --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/DiagnosticResolutionRelevance.java @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2004-2018 Eike Stepper (Loehne, 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: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.evolution.presentation.quickfix; + +/** + * @author Eike Stepper + */ +public interface DiagnosticResolutionRelevance +{ + public int getRelevanceForResolution(); +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/QuickFixPage.java b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/QuickFixPage.java new file mode 100644 index 0000000000..fb48612ff7 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/QuickFixPage.java @@ -0,0 +1,408 @@ +package org.eclipse.emf.cdo.evolution.presentation.quickfix; + +import org.eclipse.emf.cdo.evolution.presentation.EvolutionEditor; + +import org.eclipse.emf.common.util.Diagnostic; +import org.eclipse.emf.edit.command.ChangeCommand; +import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; + +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.dialogs.IDialogConstants; +import org.eclipse.jface.operation.IRunnableWithProgress; +import org.eclipse.jface.viewers.CheckStateChangedEvent; +import org.eclipse.jface.viewers.CheckboxTableViewer; +import org.eclipse.jface.viewers.ICheckStateListener; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.IStructuredContentProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.jface.viewers.Viewer; +import org.eclipse.jface.viewers.ViewerComparator; +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.layout.FormAttachment; +import org.eclipse.swt.layout.FormData; +import org.eclipse.swt.layout.FormLayout; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Table; +import org.eclipse.ui.statushandlers.StatusManager; + +import java.lang.reflect.InvocationTargetException; +import java.util.Collection; +import java.util.Map; + +/** + * QuickFixPage is a page for the quick fixes of a marker. + * + * @since 3.4 + * + */ +public class QuickFixPage extends WizardPage +{ + private Map<DiagnosticResolution, Collection<Diagnostic>> resolutionsMap; + + private TableViewer resolutionsViewer; + + private CheckboxTableViewer diagnosticsViewer; + + private final Diagnostic[] selectedDiagnostics; + + private AdapterFactoryEditingDomain editingDomain; + + public QuickFixPage(String problemDescription, Diagnostic[] selectedDiagnostics, Map<DiagnosticResolution, Collection<Diagnostic>> resolutionsMap, + AdapterFactoryEditingDomain editingDomain) + { + super("QuickFixPage"); + this.selectedDiagnostics = selectedDiagnostics; + this.resolutionsMap = resolutionsMap; + this.editingDomain = editingDomain; + + setTitle("Quick Fix"); + setMessage(problemDescription); + } + + public void createControl(Composite parent) + { + initializeDialogUnits(parent); + + // Create a new composite as there is the title bar separator to deal with + Composite control = new Composite(parent, SWT.NONE); + control.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); + setControl(control); + + // PlatformUI.getWorkbench().getHelpSystem().setHelp(control, IWorkbenchHelpContextIds.PROBLEMS_VIEW); + + FormLayout layout = new FormLayout(); + layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN); + layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN); + layout.spacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING); + control.setLayout(layout); + + Label resolutionsLabel = new Label(control, SWT.NONE); + resolutionsLabel.setText("&Select a fix:"); + resolutionsLabel.setLayoutData(new FormData()); + + createResolutionsList(control); + + FormData listData = new FormData(); + listData.top = new FormAttachment(resolutionsLabel, 0); + listData.left = new FormAttachment(0); + listData.right = new FormAttachment(100, 0); + listData.height = convertHeightInCharsToPixels(10); + resolutionsViewer.getControl().setLayoutData(listData); + + Label title = new Label(control, SWT.NONE); + title.setText("&Problems:"); + FormData labelData = new FormData(); + labelData.top = new FormAttachment(resolutionsViewer.getControl(), 0); + labelData.left = new FormAttachment(0); + title.setLayoutData(labelData); + + createDiagnosticsViewer(control); + + Composite buttons = createTableButtons(control); + FormData buttonData = new FormData(); + buttonData.top = new FormAttachment(title, 0); + buttonData.right = new FormAttachment(100); + buttonData.height = convertHeightInCharsToPixels(10); + buttons.setLayoutData(buttonData); + + FormData tableData = new FormData(); + tableData.top = new FormAttachment(buttons, 0, SWT.TOP); + tableData.left = new FormAttachment(0); + tableData.bottom = new FormAttachment(100); + tableData.right = new FormAttachment(buttons, 0); + tableData.height = convertHeightInCharsToPixels(10); + diagnosticsViewer.getControl().setLayoutData(tableData); + + Dialog.applyDialogFont(control); + + resolutionsViewer.setSelection(new StructuredSelection(resolutionsViewer.getElementAt(0))); + + diagnosticsViewer.setCheckedElements(selectedDiagnostics); + + setPageComplete(diagnosticsViewer.getCheckedElements().length > 0); + } + + private Composite createTableButtons(Composite control) + { + Composite buttonComposite = new Composite(control, SWT.NONE); + GridLayout layout = new GridLayout(); + layout.marginWidth = 0; + layout.marginHeight = 0; + layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING); + layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING); + buttonComposite.setLayout(layout); + + Button selectAll = new Button(buttonComposite, SWT.PUSH); + selectAll.setText("Select &All"); + selectAll.setLayoutData(new GridData(SWT.FILL, SWT.NONE, false, false)); + selectAll.addSelectionListener(new SelectionAdapter() + { + @Override + public void widgetSelected(SelectionEvent arg0) + { + diagnosticsViewer.setAllChecked(true); + setPageComplete(!resolutionsViewer.getStructuredSelection().isEmpty()); + } + }); + + Button deselectAll = new Button(buttonComposite, SWT.PUSH); + deselectAll.setText("&Deselect All"); + deselectAll.setLayoutData(new GridData(SWT.FILL, SWT.NONE, false, false)); + deselectAll.addSelectionListener(new SelectionAdapter() + { + @Override + public void widgetSelected(SelectionEvent arg0) + { + diagnosticsViewer.setAllChecked(false); + setPageComplete(false); + } + }); + + return buttonComposite; + } + + private void createResolutionsList(Composite control) + { + resolutionsViewer = new TableViewer(control, SWT.BORDER | SWT.SINGLE | SWT.V_SCROLL); + resolutionsViewer.setContentProvider(new IStructuredContentProvider() + { + public Object[] getElements(Object inputElement) + { + return resolutionsMap.keySet().toArray(); + } + + public void inputChanged(Viewer viewer, Object oldInput, Object newInput) + { + } + + public void dispose() + { + } + }); + + resolutionsViewer.setLabelProvider(new LabelProvider() + { + @Override + public String getText(Object element) + { + return ((DiagnosticResolution)element).getText(); + } + + @Override + public Image getImage(Object element) + { + return ((DiagnosticResolution)element).getImage(); + } + }); + + resolutionsViewer.setComparator(new ViewerComparator() + { + /** + * This comparator compares the resolutions based on the relevance of the + * resolutions. Any resolution that doesn't implement DiagnosticResolutionRelevance + * will be deemed to have relevance 0 (default value for relevance). If both + * resolutions have the same relevance, then marker resolution label string will + * be used for comparing the resolutions. + * + * @see DiagnosticResolutionRelevance#getRelevanceForResolution() + */ + @Override + public int compare(Viewer viewer, Object e1, Object e2) + { + int relevanceMarker1 = e1 instanceof DiagnosticResolutionRelevance ? ((DiagnosticResolutionRelevance)e1).getRelevanceForResolution() : 0; + int relevanceMarker2 = e2 instanceof DiagnosticResolutionRelevance ? ((DiagnosticResolutionRelevance)e2).getRelevanceForResolution() : 0; + if (relevanceMarker1 != relevanceMarker2) + { + return Integer.valueOf(relevanceMarker2).compareTo(Integer.valueOf(relevanceMarker1)); + } + + return ((DiagnosticResolution)e1).getText().compareTo(((DiagnosticResolution)e2).getText()); + } + }); + + resolutionsViewer.addSelectionChangedListener(new ISelectionChangedListener() + { + public void selectionChanged(SelectionChangedEvent event) + { + diagnosticsViewer.refresh(); + setPageComplete(diagnosticsViewer.getCheckedElements().length > 0); + } + }); + + resolutionsViewer.setInput(this); + } + + private void createDiagnosticsViewer(Composite parent) + { + diagnosticsViewer = CheckboxTableViewer.newCheckList(parent, SWT.BORDER | SWT.V_SCROLL | SWT.SINGLE); + diagnosticsViewer.setContentProvider(new DiagnosticsContentProvider()); + diagnosticsViewer.setInput(this); + + Table table = diagnosticsViewer.getTable(); + table.setHeaderVisible(true); + table.setLinesVisible(true); + + EvolutionEditor.createDiagnosticElementColumn(diagnosticsViewer, editingDomain.getAdapterFactory()); + EvolutionEditor.createDiagnosticResourceColumn(diagnosticsViewer, editingDomain.getAdapterFactory()); + + diagnosticsViewer.addCheckStateListener(new ICheckStateListener() + { + public void checkStateChanged(CheckStateChangedEvent event) + { + if (event.getChecked() == true) + { + setPageComplete(true); + } + else + { + setPageComplete(diagnosticsViewer.getCheckedElements().length > 0); + } + } + }); + + // new OpenAndLinkWithEditorHelper(markersTable) + // { + // { + // setLinkWithEditor(false); + // } + // + // @Override + // protected void activate(ISelection selection) + // { + // open(selection, true); + // } + // + // /** Not supported*/ + // + // @Override + // protected void linkToEditor(ISelection selection) + // { + // } + // + // @Override + // protected void open(ISelection selection, boolean activate) + // { + // if (selection.isEmpty()) + // { + // return; + // } + // Diagnostic marker = (Diagnostic)((IStructuredSelection)selection).getFirstElement(); + // if (marker != null && marker.getResource() instanceof IFile) + // { + // try + // { + // IDE.openEditor(site.getPage(), marker, activate); + // } + // catch (PartInitException e) + // { + // MarkerSupportInternalUtilities.showViewError(e); + // } + // } + // } + // }; + } + + public Diagnostic getSelectedDiagnostic() + { + IStructuredSelection selection = diagnosticsViewer.getStructuredSelection(); + if (!selection.isEmpty()) + { + if (selection.size() == 1) + { + return (Diagnostic)selection.getFirstElement(); + } + } + + return null; + } + + void performFinish(IProgressMonitor monitor) + { + final DiagnosticResolution resolution = getSelectedResolution(); + if (resolution == null) + { + return; + } + + final Object[] checked = diagnosticsViewer.getCheckedElements(); + if (checked.length == 0) + { + return; + } + + try + { + getWizard().getContainer().run(false, true, new IRunnableWithProgress() + { + public void run(final IProgressMonitor monitor) throws InvocationTargetException, InterruptedException + { + final Diagnostic[] diagnostics = new Diagnostic[checked.length]; + System.arraycopy(checked, 0, diagnostics, 0, checked.length); + + ChangeCommand command = new ChangeCommand(editingDomain.getResourceSet()) + { + @Override + protected void doExecute() + { + resolution.run(diagnostics, monitor); + } + }; + + editingDomain.getCommandStack().execute(command); + } + }); + } + catch (InvocationTargetException e) + { + StatusManager.getManager().handle(QuickFixWizard.newStatus(IStatus.ERROR, e.getLocalizedMessage(), e)); + } + catch (InterruptedException e) + { + StatusManager.getManager().handle(QuickFixWizard.newStatus(IStatus.ERROR, e.getLocalizedMessage(), e)); + } + } + + private DiagnosticResolution getSelectedResolution() + { + return (DiagnosticResolution)resolutionsViewer.getStructuredSelection().getFirstElement(); + } + + /** + * @author Eike Stepper + */ + private final class DiagnosticsContentProvider implements IStructuredContentProvider + { + public Object[] getElements(Object inputElement) + { + DiagnosticResolution selected = getSelectedResolution(); + if (selected != null && resolutionsMap.containsKey(selected)) + { + return resolutionsMap.get(selected).toArray(); + } + + return DiagnosticResolution.NO_DIAGNOSTICS; + } + + public void inputChanged(Viewer viewer, Object oldInput, Object newInput) + { + } + + public void dispose() + { + } + } +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/QuickFixWizard.java b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/QuickFixWizard.java new file mode 100644 index 0000000000..d9a677846f --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/QuickFixWizard.java @@ -0,0 +1,115 @@ +package org.eclipse.emf.cdo.evolution.presentation.quickfix; + +import org.eclipse.emf.cdo.evolution.presentation.EvolutionEditorPlugin; + +import org.eclipse.emf.common.util.Diagnostic; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; +import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry; + +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; +import org.eclipse.core.runtime.SubMonitor; +import org.eclipse.jface.operation.IRunnableWithProgress; +import org.eclipse.jface.wizard.IWizardPage; +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.ui.statushandlers.StatusManager; + +import java.lang.reflect.InvocationTargetException; +import java.util.Collection; +import java.util.Map; + +/** + * The wizard for quick fixes. + */ +public class QuickFixWizard extends Wizard +{ + private Diagnostic[] selectedDiagnostics; + + private Map<DiagnosticResolution, Collection<Diagnostic>> resolutionsMap; + + private String description; + + private AdapterFactoryEditingDomain editingDomain; + + public QuickFixWizard(String description, Diagnostic[] selectedDiagnostics, Map<DiagnosticResolution, Collection<Diagnostic>> resolutionsMap, + AdapterFactoryEditingDomain editingDomain) + { + this.selectedDiagnostics = selectedDiagnostics; + this.resolutionsMap = resolutionsMap; + this.description = description; + this.editingDomain = editingDomain; + + setNeedsProgressMonitor(true); + setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE + .getImageDescriptor(URI.createPlatformPluginURI(EvolutionEditorPlugin.PLUGIN_ID + "/icons/full/wizban/quick_fix.png", true))); + } + + @Override + public void addPages() + { + super.addPages(); + addPage(new QuickFixPage(description, selectedDiagnostics, resolutionsMap, editingDomain)); + } + + @Override + public boolean performFinish() + { + IRunnableWithProgress finishRunnable = new IRunnableWithProgress() + { + public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException + { + IWizardPage[] pages = getPages(); + SubMonitor subMonitor = SubMonitor.convert(monitor, "Fixing", 10 * pages.length + 1); + subMonitor.worked(1); + for (IWizardPage page : pages) + { + // Allow for cancel event processing + getShell().getDisplay().readAndDispatch(); + QuickFixPage wizardPage = (QuickFixPage)page; + wizardPage.performFinish(subMonitor.split(10)); + } + } + }; + + try + { + getContainer().run(false, true, finishRunnable); + } + catch (InvocationTargetException e) + { + StatusManager.getManager().handle(newStatus(IStatus.ERROR, e.getLocalizedMessage(), e)); + return false; + } + catch (InterruptedException e) + { + StatusManager.getManager().handle(newStatus(IStatus.ERROR, e.getLocalizedMessage(), e)); + return false; + } + + return true; + } + + public static IStatus newStatus(int severity, String message, Throwable exception) + { + String statusMessage = message; + if (message == null || message.trim().length() == 0) + { + if (exception == null) + { + throw new IllegalArgumentException(); + } + else if (exception.getMessage() == null) + { + statusMessage = exception.toString(); + } + else + { + statusMessage = exception.getMessage(); + } + } + + return new Status(severity, EvolutionEditorPlugin.PLUGIN_ID, severity, statusMessage, exception); + } +} diff --git a/plugins/org.eclipse.emf.cdo.evolution/.classpath b/plugins/org.eclipse.emf.cdo.evolution/.classpath new file mode 100644 index 0000000000..64c5e31b7a --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/.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.evolution/.options b/plugins/org.eclipse.emf.cdo.evolution/.options new file mode 100644 index 0000000000..1ce0cff2a9 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/.options @@ -0,0 +1,3 @@ +# Debugging and tracing options + +org.eclipse.emf.cdo.evolution/debug = true diff --git a/plugins/org.eclipse.emf.cdo.evolution/.project b/plugins/org.eclipse.emf.cdo.evolution/.project new file mode 100644 index 0000000000..ab2b2d65c6 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/.project @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>org.eclipse.emf.cdo.evolution</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.api.tools.apiAnalysisBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.oomph.version.VersionBuilder</name> + <arguments> + <dictionary> + <key>check.maven.pom</key> + <value>true</value> + </dictionary> + <dictionary> + <key>ignore.lower.bound.dependency.ranges</key> + <value>true</value> + </dictionary> + <dictionary> + <key>release.path</key> + <value>/org.eclipse.emf.cdo.releng/versions/release.xml</value> + </dictionary> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature> + <nature>org.eclipse.oomph.version.VersionNature</nature> + </natures> + <filteredResources> + <filter> + <id>1396938000000</id> + <name></name> + <type>10</type> + <matcher> + <id>org.eclipse.ui.ide.multiFilter</id> + <arguments>1.0-projectRelativePath-matches-true-false-target</arguments> + </matcher> + </filter> + </filteredResources> +</projectDescription> diff --git a/plugins/org.eclipse.emf.cdo.evolution/.settings/.api_filters b/plugins/org.eclipse.emf.cdo.evolution/.settings/.api_filters new file mode 100644 index 0000000000..ceab79999b --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/.settings/.api_filters @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<component id="org.eclipse.emf.cdo.evolution" version="2"> + <resource path="src/org/eclipse/emf/cdo/evolution/Release.java" type="org.eclipse.emf.cdo.evolution.Release"> + <filter id="574619656"> + <message_arguments> + <message_argument value="CDOObject"/> + <message_argument value="Release"/> + </message_arguments> + </filter> + <filter id="574668824"> + <message_arguments> + <message_argument value="Migratable"/> + <message_argument value="Release"/> + <message_argument value="CDOObject"/> + </message_arguments> + </filter> + <filter id="574668824"> + <message_arguments> + <message_argument value="ModelSet"/> + <message_argument value="Release"/> + <message_argument value="CDOObject"/> + </message_arguments> + </filter> + </resource> +</component> diff --git a/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.core.resources.prefs b/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000000..e9c6dcb88e --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,3 @@ +eclipse.preferences.version=1 +encoding/.project=UTF-8 +encoding//model/evolution.ecore=UTF-8 diff --git a/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000..ff3d8e623b --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,412 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.builder.cleanOutputFolder=clean +org.eclipse.jdt.core.builder.duplicateResourceTask=warning +org.eclipse.jdt.core.builder.invalidClasspath=abort +org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore +org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch,*.ucls,doc-files/,package.html,package-info.java +org.eclipse.jdt.core.circularClasspath=error +org.eclipse.jdt.core.classpath.exclusionPatterns=enabled +org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled +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.annotation.missingNonNullByDefaultAnnotation=ignore +org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull +org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault +org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable +org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled +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.maxProblemPerUnit=100 +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=enabled +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.explicitlyClosedAutoCloseable=ignore +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.includeNullInfoFromAsserts=disabled +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.missingDefaultCase=ignore +org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning +org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled +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.nullAnnotationInferenceConflict=error +org.eclipse.jdt.core.compiler.problem.nullReference=warning +org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error +org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=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.potentiallyUnclosedCloseable=ignore +org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning +org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning +org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning +org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore +org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning +org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore +org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore +org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled +org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning +org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled +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.unavoidableGenericTypeProblems=enabled +org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning +org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning +org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore +org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning +org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore +org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore +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_annotation=0 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_assignment=0 +org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 +org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 +org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0 +org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 +org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0 +org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80 +org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 +org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16 +org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_after_package=1 +org.eclipse.jdt.core.formatter.blank_lines_before_field=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=false +org.eclipse.jdt.core.formatter.comment.format_line_comments=true +org.eclipse.jdt.core.formatter.comment.format_source_code=true +org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true +org.eclipse.jdt.core.formatter.comment.indent_root_tags=true +org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert +org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert +org.eclipse.jdt.core.formatter.comment.line_length=120 +org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true +org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true +org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false +org.eclipse.jdt.core.formatter.compact_else_if=true +org.eclipse.jdt.core.formatter.continuation_indentation=2 +org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 +org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off +org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on +org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false +org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true +org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_empty_lines=false +org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true +org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false +org.eclipse.jdt.core.formatter.indentation.size=2 +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_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_try=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert +org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert +org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.join_lines_in_comments=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=160 +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_on_off_tags=false +org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false +org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true +org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true +org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true +org.eclipse.jdt.core.incompatibleJDKLevel=ignore +org.eclipse.jdt.core.incompleteClasspath=error diff --git a/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.jdt.launching.prefs b/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.jdt.launching.prefs new file mode 100644 index 0000000000..556ed07a3c --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.jdt.launching.prefs @@ -0,0 +1,3 @@ +#Fri Sep 02 05:38:34 CEST 2011 +eclipse.preferences.version=1 +org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=ignore diff --git a/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.jdt.ui.prefs b/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.jdt.ui.prefs new file mode 100644 index 0000000000..222aec0421 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.jdt.ui.prefs @@ -0,0 +1,119 @@ +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=12 +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-2018 Eike Stepper (Loehne, 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 * Eike Stepper - 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 Eike Stepper\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=false +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.evolution/.settings/org.eclipse.ltk.core.refactoring.prefs b/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.ltk.core.refactoring.prefs new file mode 100644 index 0000000000..864e30fe5d --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/.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.evolution/.settings/org.eclipse.mylyn.tasks.ui.prefs b/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.mylyn.tasks.ui.prefs new file mode 100644 index 0000000000..b050639a54 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/.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.evolution/.settings/org.eclipse.mylyn.team.ui.prefs b/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.mylyn.team.ui.prefs new file mode 100644 index 0000000000..97c11e6725 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/.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\r\n${task.url} +eclipse.preferences.version=1 diff --git a/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.pde.api.tools.prefs b/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.pde.api.tools.prefs new file mode 100644 index 0000000000..0c17d59e45 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.pde.api.tools.prefs @@ -0,0 +1,95 @@ +#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=Error +MISSING_EE_DESCRIPTIONS=Warning +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=Ignore +automatically_removed_unused_problem_filters=Disabled +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.evolution/.settings/org.eclipse.pde.prefs b/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.pde.prefs new file mode 100644 index 0000000000..fe01bb701d --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/.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=2 +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.evolution/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.evolution/META-INF/MANIFEST.MF new file mode 100644 index 0000000000..3ed48d3abf --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/META-INF/MANIFEST.MF @@ -0,0 +1,18 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: org.eclipse.emf.cdo.evolution;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-ClassPath: . +Bundle-Activator: org.eclipse.emf.cdo.evolution.impl.EvolutionPlugin$Implementation +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: J2SE-1.5 +Export-Package: org.eclipse.emf.cdo.evolution;version="1.0.0", + org.eclipse.emf.cdo.evolution.impl;version="1.0.0", + org.eclipse.emf.cdo.evolution.util;version="1.0.0" +Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)";visibility:=reexport, + org.eclipse.emf.ecore;bundle-version="[2.5.0,3.0.0)";visibility:=reexport, + org.eclipse.emf.cdo;bundle-version="[4.0.0,5.0.0)";visibility:=reexport +Bundle-ActivationPolicy: lazy +Automatic-Module-Name: org.eclipse.emf.cdo.evolution diff --git a/plugins/org.eclipse.emf.cdo.evolution/about.html b/plugins/org.eclipse.emf.cdo.evolution/about.html new file mode 100644 index 0000000000..d35d5aed64 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/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.evolution/build.properties b/plugins/org.eclipse.emf.cdo.evolution/build.properties new file mode 100644 index 0000000000..310af6c0ef --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/build.properties @@ -0,0 +1,27 @@ +# Copyright (c) 2013, 2017 Eike Stepper (Loehne, 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: +# Eike Stepper - initial API and implementation + +# NLS_MESSAGEFORMAT_VAR + +bin.includes = .,\ + model/,\ + META-INF/,\ + plugin.xml,\ + plugin.properties,\ + about.html +jars.compile.order = . +source.. = src/ +output.. = bin/ +src.includes = about.html,\ + pom.xml + +doc.project = org.eclipse.emf.cdo.doc + +generateSourceReferences = true + diff --git a/plugins/org.eclipse.emf.cdo.evolution/model/evolution.ecore b/plugins/org.eclipse.emf.cdo.evolution/model/evolution.ecore new file mode 100644 index 0000000000..b40781227a --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/model/evolution.ecore @@ -0,0 +1,213 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="evolution" nsURI="http://www.eclipse.org/emf/CDO/evolution/1.0.0" + nsPrefix="evolution"> + <eClassifiers xsi:type="ecore:EClass" name="ModelSet" abstract="true"> + <eOperations name="getEvolution" eType="#//Evolution"/> + <eOperations name="getVersion" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/> + <eOperations name="getPreviousRelease" eType="#//Release"/> + <eOperations name="getRootPackages" upperBound="-1" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EPackage"/> + <eOperations name="getAllPackages" upperBound="-1" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EPackage"/> + <eOperations name="containsElement" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean"> + <eParameters name="modelElement" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EModelElement"/> + </eOperations> + <eOperations name="getElement"> + <eGenericType eTypeParameter="#//ModelSet/getElement/T"/> + <eTypeParameters name="T"> + <eBounds eClassifier="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EModelElement"/> + </eTypeParameters> + <eParameters name="id" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/> + </eOperations> + <eOperations name="getElementID" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"> + <eParameters name="modelElement" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EModelElement"/> + </eOperations> + <eOperations name="getElementID" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"> + <eParameters name="modelElement" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EModelElement"/> + <eParameters name="considerOldIDs" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/> + </eOperations> + <eOperations name="compare" eType="#//ModelSetChange"> + <eParameters name="other" eType="#//ModelSet"/> + </eOperations> + <eOperations name="getMigration" eType="#//Migration"> + <eParameters name="diagnosticID" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> + </eOperations> + <eStructuralFeatures xsi:type="ecore:EReference" name="change" eType="#//ModelSetChange" + transient="true" unsettable="true" derived="true" containment="true" resolveProxies="false"> + <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> + <details key="suppressedSetVisibility" value="true"/> + <details key="suppressedUnsetVisibility" value="true"/> + </eAnnotations> + </eStructuralFeatures> + <eStructuralFeatures xsi:type="ecore:EReference" name="migrations" upperBound="-1" + eType="#//Migration" containment="true" eOpposite="#//Migration/modelSet"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="Model"> + <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore"> + <details key="constraints" value="ModelLoaded IDs_Exist NamespaceReflectsChange"/> + </eAnnotations> + <eStructuralFeatures xsi:type="ecore:EReference" name="evolution" lowerBound="1" + eType="#//Evolution" eOpposite="#//Evolution/models"/> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="uRI" eType="#//URI"> + <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData"> + <details key="kind" value="attribute"/> + <details key="name" value="uri"/> + </eAnnotations> + </eStructuralFeatures> + <eStructuralFeatures xsi:type="ecore:EReference" name="rootPackage" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EPackage" + changeable="false" volatile="true" transient="true" derived="true"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="allPackages" upperBound="-1" + eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EPackage" + changeable="false" volatile="true" transient="true" derived="true"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="referencedPackages" upperBound="-1" + eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EPackage" + changeable="false" volatile="true" transient="true" derived="true"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="missingPackages" upperBound="-1" + eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EPackage" + changeable="false" volatile="true" transient="true" derived="true"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="Evolution" eSuperTypes="#//ModelSet"> + <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore"> + <details key="constraints" value="NotEmpty PackagesUnique NoMissingPackages IDsUnique"/> + </eAnnotations> + <eOperations name="getRelease" eType="#//Release"> + <eParameters name="version" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"/> + </eOperations> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="useEcorePackage" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" + defaultValueLiteral="true"/> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="useEresourcePackage" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="useEtypesPackage" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="uniqueNamespaces" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" + defaultValueLiteral="true"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="models" upperBound="-1" + eType="#//Model" containment="true" eOpposite="#//Model/evolution"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="rootPackages" upperBound="-1" + eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EPackage" + changeable="false" volatile="true" transient="true" derived="true"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="allPackages" upperBound="-1" + eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EPackage" + changeable="false" volatile="true" transient="true" derived="true"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="missingPackages" upperBound="-1" + eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EPackage" + changeable="false" volatile="true" transient="true" derived="true"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="releases" upperBound="-1" + eType="#//Release" containment="true" eOpposite="#//Release/evolution"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="orderedReleases" upperBound="-1" + eType="#//Release" changeable="false" volatile="true" transient="true" derived="true"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="latestRelease" eType="#//Release" + changeable="false" volatile="true" transient="true" derived="true"/> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="nextReleaseVersion" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EInt" + changeable="false" volatile="true" transient="true" derived="true"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="Release" eSuperTypes="#//ModelSet"> + <eStructuralFeatures xsi:type="ecore:EReference" name="evolution" lowerBound="1" + eType="#//Evolution" eOpposite="#//Evolution/releases"/> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="version" lowerBound="1" + eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="date" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="nextRelease" eType="#//Release" + changeable="false" volatile="true" transient="true" derived="true"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="previousRelease" eType="#//Release" + changeable="false" volatile="true" transient="true" derived="true"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="rootPackages" upperBound="-1" + eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EPackage" + containment="true"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="allPackages" upperBound="-1" + eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EPackage" + changeable="false" volatile="true" transient="true" derived="true"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="Change" abstract="true"> + <eOperations name="getModelSetChange" eType="#//ModelSetChange"/> + <eOperations name="getOldElementFor" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EModelElement"> + <eParameters name="newElement" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EModelElement"/> + </eOperations> + <eOperations name="getNewElementsFor" upperBound="-1" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EModelElement"> + <eParameters name="oldElement" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EModelElement"/> + </eOperations> + <eOperations name="getOldModelSet" eType="#//ModelSet"/> + <eOperations name="getNewModelSet" eType="#//ModelSet"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="parent" eType="#//Change" + resolveProxies="false" eOpposite="#//Change/children"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="children" upperBound="-1" + eType="#//Change" containment="true" resolveProxies="false" eOpposite="#//Change/parent"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="ModelSetChange" eSuperTypes="#//Change"> + <eStructuralFeatures xsi:type="ecore:EReference" name="oldModelSet" eType="#//ModelSet"> + <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> + <details key="suppressedSetVisibility" value="true"/> + </eAnnotations> + </eStructuralFeatures> + <eStructuralFeatures xsi:type="ecore:EReference" name="newModelSet" eType="#//ModelSet"> + <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> + <details key="suppressedSetVisibility" value="true"/> + </eAnnotations> + </eStructuralFeatures> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="ElementChange" eSuperTypes="#//Change"> + <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore"> + <details key="constraints" value="FeaturePathIsKnown"/> + </eAnnotations> + <eOperations name="getElement" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EModelElement"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="oldElement" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EModelElement"> + <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> + <details key="suppressedSetVisibility" value="true"/> + </eAnnotations> + </eStructuralFeatures> + <eStructuralFeatures xsi:type="ecore:EReference" name="newElement" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EModelElement"> + <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> + <details key="suppressedSetVisibility" value="true"/> + </eAnnotations> + </eStructuralFeatures> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="#//ChangeKind"> + <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> + <details key="suppressedSetVisibility" value="true"/> + </eAnnotations> + </eStructuralFeatures> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="PropertyChange" eSuperTypes="#//Change"> + <eStructuralFeatures xsi:type="ecore:EReference" name="feature" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EStructuralFeature"> + <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> + <details key="suppressedSetVisibility" value="true"/> + </eAnnotations> + </eStructuralFeatures> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="oldValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"> + <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> + <details key="suppressedSetVisibility" value="true"/> + </eAnnotations> + </eStructuralFeatures> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="newValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"> + <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> + <details key="suppressedSetVisibility" value="true"/> + </eAnnotations> + </eStructuralFeatures> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="#//ChangeKind" + changeable="false" volatile="true" transient="true" derived="true"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="Migration" abstract="true"> + <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore"> + <details key="constraints" value="NotObsolete"/> + </eAnnotations> + <eStructuralFeatures xsi:type="ecore:EReference" name="modelSet" eType="#//ModelSet" + eOpposite="#//ModelSet/migrations"/> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="diagnosticID" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="FeaturePathMigration" eSuperTypes="#//Migration"> + <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore"> + <details key="constraints" value="NewFeatureReachable"/> + </eAnnotations> + <eStructuralFeatures xsi:type="ecore:EReference" name="fromClass" lowerBound="1" + eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="toClass" lowerBound="1" + eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="featurePath" upperBound="-1" + eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EReference"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EDataType" name="URI" instanceClassName="org.eclipse.emf.common.util.URI"/> + <eClassifiers xsi:type="ecore:EEnum" name="ChangeKind"> + <eLiterals name="NONE"/> + <eLiterals name="CHANGED" value="1"/> + <eLiterals name="REMOVED" value="2"/> + <eLiterals name="ADDED" value="3"/> + <eLiterals name="COPIED" value="4"/> + <eLiterals name="MOVED" value="5"/> + </eClassifiers> +</ecore:EPackage> diff --git a/plugins/org.eclipse.emf.cdo.evolution/model/evolution.genmodel b/plugins/org.eclipse.emf.cdo.evolution/model/evolution.genmodel new file mode 100644 index 0000000000..ae03a8ab51 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/model/evolution.genmodel @@ -0,0 +1,128 @@ +<?xml version="1.0" encoding="UTF-8"?> +<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" + xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.emf.cdo.evolution/src" creationIcons="false" + modelPluginID="org.eclipse.emf.cdo.evolution" modelName="Evolution" modelPluginClass="org.eclipse.emf.cdo.evolution.impl.EvolutionPlugin" + rootExtendsInterface="org.eclipse.emf.cdo.CDOObject" rootExtendsClass="org.eclipse.emf.internal.cdo.CDOObjectImpl" + testsDirectory="" importerID="org.eclipse.emf.importer.cdo" featureDelegation="Dynamic" + complianceLevel="5.0" copyrightFields="false" optimizedHasChildren="true" colorProviders="true" + fontProviders="true" usedGenPackages="../../org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore" + operationReflection="true" importOrganizing="true" decoration="Live" styleProviders="true" + cleanup="true" autoResizeProperties="true" findAction="true" collapseAllAction="true"> + <foreignModel>evolution.ecore</foreignModel> + <modelPluginVariables>CDO=org.eclipse.emf.cdo</modelPluginVariables> + <genPackages prefix="Evolution" basePackage="org.eclipse.emf.cdo" disposableProviderFactory="true" + dataTypeConverters="true" multipleEditorPages="false" extensibleProviderFactory="true" + childCreationExtenders="true" ecorePackage="evolution.ecore#/"> + <genEnums typeSafeEnumCompatible="false" ecoreEnum="evolution.ecore#//ChangeKind"> + <genEnumLiterals ecoreEnumLiteral="evolution.ecore#//ChangeKind/NONE"/> + <genEnumLiterals ecoreEnumLiteral="evolution.ecore#//ChangeKind/CHANGED"/> + <genEnumLiterals ecoreEnumLiteral="evolution.ecore#//ChangeKind/REMOVED"/> + <genEnumLiterals ecoreEnumLiteral="evolution.ecore#//ChangeKind/ADDED"/> + <genEnumLiterals ecoreEnumLiteral="evolution.ecore#//ChangeKind/COPIED"/> + <genEnumLiterals ecoreEnumLiteral="evolution.ecore#//ChangeKind/MOVED"/> + </genEnums> + <genDataTypes ecoreDataType="evolution.ecore#//URI"/> + <genClasses image="false" ecoreClass="evolution.ecore#//ModelSet"> + <genFeatures property="None" children="true" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//ModelSet/change"/> + <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference evolution.ecore#//ModelSet/migrations"/> + <genOperations ecoreOperation="evolution.ecore#//ModelSet/getEvolution"/> + <genOperations ecoreOperation="evolution.ecore#//ModelSet/getVersion"/> + <genOperations ecoreOperation="evolution.ecore#//ModelSet/getPreviousRelease"/> + <genOperations ecoreOperation="evolution.ecore#//ModelSet/getRootPackages"/> + <genOperations ecoreOperation="evolution.ecore#//ModelSet/getAllPackages"/> + <genOperations ecoreOperation="evolution.ecore#//ModelSet/containsElement"> + <genParameters ecoreParameter="evolution.ecore#//ModelSet/containsElement/modelElement"/> + </genOperations> + <genOperations ecoreOperation="evolution.ecore#//ModelSet/getElement"> + <genParameters ecoreParameter="evolution.ecore#//ModelSet/getElement/id"/> + <genTypeParameters ecoreTypeParameter="evolution.ecore#//ModelSet/getElement/T"/> + </genOperations> + <genOperations ecoreOperation="evolution.ecore#//ModelSet/getElementID"> + <genParameters ecoreParameter="evolution.ecore#//ModelSet/getElementID/modelElement"/> + </genOperations> + <genOperations ecoreOperation="evolution.ecore#//ModelSet/getElementID.1"> + <genParameters ecoreParameter="evolution.ecore#//ModelSet/getElementID.1/modelElement"/> + <genParameters ecoreParameter="evolution.ecore#//ModelSet/getElementID.1/considerOldIDs"/> + </genOperations> + <genOperations ecoreOperation="evolution.ecore#//ModelSet/compare"> + <genParameters ecoreParameter="evolution.ecore#//ModelSet/compare/other"/> + </genOperations> + <genOperations ecoreOperation="evolution.ecore#//ModelSet/getMigration"> + <genParameters ecoreParameter="evolution.ecore#//ModelSet/getMigration/diagnosticID"/> + </genOperations> + </genClasses> + <genClasses ecoreClass="evolution.ecore#//Model"> + <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Model/evolution"/> + <genFeatures createChild="false" ecoreFeature="ecore:EAttribute evolution.ecore#//Model/uRI"/> + <genFeatures property="Readonly" children="true" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Model/rootPackage"/> + <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Model/allPackages"/> + <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Model/referencedPackages"/> + <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Model/missingPackages"/> + </genClasses> + <genClasses ecoreClass="evolution.ecore#//Evolution"> + <genFeatures createChild="false" ecoreFeature="ecore:EAttribute evolution.ecore#//Evolution/useEcorePackage"/> + <genFeatures createChild="false" ecoreFeature="ecore:EAttribute evolution.ecore#//Evolution/useEresourcePackage"/> + <genFeatures createChild="false" ecoreFeature="ecore:EAttribute evolution.ecore#//Evolution/useEtypesPackage"/> + <genFeatures createChild="false" ecoreFeature="ecore:EAttribute evolution.ecore#//Evolution/uniqueNamespaces"/> + <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference evolution.ecore#//Evolution/models"/> + <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Evolution/rootPackages"/> + <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Evolution/allPackages"/> + <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Evolution/missingPackages"/> + <genFeatures property="None" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Evolution/releases"/> + <genFeatures property="Readonly" children="true" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Evolution/orderedReleases"/> + <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Evolution/latestRelease"/> + <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute evolution.ecore#//Evolution/nextReleaseVersion"/> + <genOperations ecoreOperation="evolution.ecore#//Evolution/getRelease"> + <genParameters ecoreParameter="evolution.ecore#//Evolution/getRelease/version"/> + </genOperations> + </genClasses> + <genClasses ecoreClass="evolution.ecore#//Release"> + <genFeatures property="None" notify="false" createChild="false" propertySortChoices="true" + ecoreFeature="ecore:EReference evolution.ecore#//Release/evolution"/> + <genFeatures createChild="false" ecoreFeature="ecore:EAttribute evolution.ecore#//Release/version"/> + <genFeatures createChild="false" ecoreFeature="ecore:EAttribute evolution.ecore#//Release/date"/> + <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Release/nextRelease"/> + <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Release/previousRelease"/> + <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference evolution.ecore#//Release/rootPackages"/> + <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Release/allPackages"/> + </genClasses> + <genClasses image="false" ecoreClass="evolution.ecore#//Change"> + <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Change/parent"/> + <genFeatures property="None" children="true" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Change/children"/> + <genOperations ecoreOperation="evolution.ecore#//Change/getModelSetChange"/> + <genOperations ecoreOperation="evolution.ecore#//Change/getOldElementFor"> + <genParameters ecoreParameter="evolution.ecore#//Change/getOldElementFor/newElement"/> + </genOperations> + <genOperations ecoreOperation="evolution.ecore#//Change/getNewElementsFor"> + <genParameters ecoreParameter="evolution.ecore#//Change/getNewElementsFor/oldElement"/> + </genOperations> + <genOperations ecoreOperation="evolution.ecore#//Change/getOldModelSet"/> + <genOperations ecoreOperation="evolution.ecore#//Change/getNewModelSet"/> + </genClasses> + <genClasses ecoreClass="evolution.ecore#//ModelSetChange"> + <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference evolution.ecore#//ModelSetChange/oldModelSet"/> + <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference evolution.ecore#//ModelSetChange/newModelSet"/> + </genClasses> + <genClasses image="false" ecoreClass="evolution.ecore#//ElementChange"> + <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference evolution.ecore#//ElementChange/oldElement"/> + <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference evolution.ecore#//ElementChange/newElement"/> + <genFeatures createChild="false" ecoreFeature="ecore:EAttribute evolution.ecore#//ElementChange/kind"/> + <genOperations ecoreOperation="evolution.ecore#//ElementChange/getElement"/> + </genClasses> + <genClasses ecoreClass="evolution.ecore#//PropertyChange"> + <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference evolution.ecore#//PropertyChange/feature"/> + <genFeatures createChild="false" ecoreFeature="ecore:EAttribute evolution.ecore#//PropertyChange/oldValue"/> + <genFeatures createChild="false" ecoreFeature="ecore:EAttribute evolution.ecore#//PropertyChange/newValue"/> + <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute evolution.ecore#//PropertyChange/kind"/> + </genClasses> + <genClasses image="false" ecoreClass="evolution.ecore#//Migration"> + <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Migration/modelSet"/> + <genFeatures property="None" createChild="false" ecoreFeature="ecore:EAttribute evolution.ecore#//Migration/diagnosticID"/> + </genClasses> + <genClasses ecoreClass="evolution.ecore#//FeaturePathMigration"> + <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference evolution.ecore#//FeaturePathMigration/fromClass"/> + <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference evolution.ecore#//FeaturePathMigration/toClass"/> + <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference evolution.ecore#//FeaturePathMigration/featurePath"/> + </genClasses> + </genPackages> +</genmodel:GenModel> diff --git a/plugins/org.eclipse.emf.cdo.evolution/plugin.properties b/plugins/org.eclipse.emf.cdo.evolution/plugin.properties new file mode 100644 index 0000000000..8e8682ad25 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/plugin.properties @@ -0,0 +1,36 @@ +# Copyright (c) 2013 Eike Stepper (Loehne, 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: +# Eike Stepper - initial API and implementation + +pluginName = CDO Model Repository Evolution +providerName = Eclipse Modeling Project + +_UI_NoModel_diagnostic = The evolution has no model +_UI_NO_URI_diagnostic = The URI is missing +_UI_NO_RESOURCE_SET_diagnostic = A resource set is not available +_UI_RESOURCE_NOT_FOUND_diagnostic = The resource ''{0}'' is not found +_UI_LOAD_PROBLEM_diagnostic = The resource ''{0}'' could not be loaded +_UI_CONTENT_PROBLEM_diagnostic = The resource ''{0}'' does not contain a package + +_UI_PackageNotUnique_diagnostic = The model URI ''{0}'' is not unique +_UI_NsuriNotUnique_diagnostic = The nsURI ''{0}'' of package ''{0}'' is not unique +_UI_MissingPackage_diagnostic = The referenced package ''{0}'' is missing + +_UI_NsUriMustChange_diagnostic = The structure of the package ''{0}'' has changed since release v{1} but the nsURI is still the same + +_UI_IDsExist_AnnotationMissing_diagnostic = The ID annotation is missing +_UI_IDsExist_NoValue_diagnostic = The ID annotation has no value +_UI_IDNotUnique_diagnostic = The ID ''{0}'' is not unique + +_UI_MigrationUnused_diagnostic = The migration ''{0}'' is unused + +_UI_FeaturePathIsKnown_diagnostic = The feature ''{0}'' has been {1} from ''{2}'' but the feature path is not known + +_UI_Unchanged_diagnostic = The models are unchanged +_UI_UnchangedSince_diagnostic = The models are unchanged since release v{0} +_UI_Release_diagnostic = The models can be released now diff --git a/plugins/org.eclipse.emf.cdo.evolution/plugin.xml b/plugins/org.eclipse.emf.cdo.evolution/plugin.xml new file mode 100644 index 0000000000..3e851a63fa --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/plugin.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.4"?> +<!-- + Copyright (c) 2013 Eike Stepper (Loehne, 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: + Eike Stepper - initial API and implementation +--> + +<plugin> + + + <extension point="org.eclipse.emf.ecore.generated_package"> + <!-- @generated evolution --> + <package + uri="http://www.eclipse.org/emf/CDO/evolution/1.0.0" + class="org.eclipse.emf.cdo.evolution.EvolutionPackage" + genModel="model/evolution.genmodel"/> + </extension> + +</plugin> diff --git a/plugins/org.eclipse.emf.cdo.evolution/pom.xml b/plugins/org.eclipse.emf.cdo.evolution/pom.xml new file mode 100644 index 0000000000..755d2139b4 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/pom.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Copyright (c) 2017 Eike Stepper (Loehne, 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: + Eike Stepper - initial API and implementation +--> +<project + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" + xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.eclipse.emf.cdo</groupId> + <artifactId>org.eclipse.emf.cdo.plugins</artifactId> + <version>4.7.0-SNAPSHOT</version> + <relativePath>../../releng/org.eclipse.emf.cdo.releng.parent/plugins</relativePath> + </parent> + + <groupId>org.eclipse.emf.cdo</groupId> + <artifactId>org.eclipse.emf.cdo.evolution</artifactId> + <version>1.0.0-SNAPSHOT</version> + <packaging>eclipse-plugin</packaging> + +</project> diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/Change.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/Change.java new file mode 100644 index 0000000000..7492053477 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/Change.java @@ -0,0 +1,116 @@ +/** + */ +package org.eclipse.emf.cdo.evolution; + +import org.eclipse.emf.cdo.CDOObject; + +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.ecore.EModelElement; + +/** + * <!-- begin-user-doc --> + * A representation of the model object '<em><b>Change</b></em>'. + * <!-- end-user-doc --> + * + * <p> + * The following features are supported: + * </p> + * <ul> + * <li>{@link org.eclipse.emf.cdo.evolution.Change#getParent <em>Parent</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.Change#getChildren <em>Children</em>}</li> + * </ul> + * + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getChange() + * @model abstract="true" + * @extends CDOObject + * @generated + */ +public interface Change extends CDOObject +{ + /** + * Returns the value of the '<em><b>Parent</b></em>' container reference. + * It is bidirectional and its opposite is '{@link org.eclipse.emf.cdo.evolution.Change#getChildren <em>Children</em>}'. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Parent</em>' container reference isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Parent</em>' container reference. + * @see #setParent(Change) + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getChange_Parent() + * @see org.eclipse.emf.cdo.evolution.Change#getChildren + * @model opposite="children" resolveProxies="false" transient="false" + * @generated + */ + Change getParent(); + + /** + * Sets the value of the '{@link org.eclipse.emf.cdo.evolution.Change#getParent <em>Parent</em>}' container reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Parent</em>' container reference. + * @see #getParent() + * @generated + */ + void setParent(Change value); + + /** + * Returns the value of the '<em><b>Children</b></em>' containment reference list. + * The list contents are of type {@link org.eclipse.emf.cdo.evolution.Change}. + * It is bidirectional and its opposite is '{@link org.eclipse.emf.cdo.evolution.Change#getParent <em>Parent</em>}'. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Children</em>' containment reference list isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Children</em>' containment reference list. + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getChange_Children() + * @see org.eclipse.emf.cdo.evolution.Change#getParent + * @model opposite="parent" containment="true" + * @generated + */ + EList<Change> getChildren(); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @model kind="operation" + * @generated + */ + ModelSet getOldModelSet(); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @model kind="operation" + * @generated + */ + ModelSet getNewModelSet(); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @model kind="operation" + * @generated + */ + ModelSetChange getModelSetChange(); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @model + * @generated + */ + EModelElement getOldElementFor(EModelElement newElement); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @model + * @generated + */ + EList<EModelElement> getNewElementsFor(EModelElement oldElement); + +} // Change diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/ChangeKind.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/ChangeKind.java new file mode 100644 index 0000000000..d77d774386 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/ChangeKind.java @@ -0,0 +1,330 @@ +/** + */ +package org.eclipse.emf.cdo.evolution; + +import org.eclipse.emf.common.util.Enumerator; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +/** + * <!-- begin-user-doc --> + * A representation of the literals of the enumeration '<em><b>Change Kind</b></em>', + * and utility methods for working with them. + * <!-- end-user-doc --> + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getChangeKind() + * @model + * @generated + */ +public enum ChangeKind implements Enumerator +{ + /** + * The '<em><b>NONE</b></em>' literal object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #NONE_VALUE + * @generated + * @ordered + */ + NONE(0, "NONE", "NONE"), + + /** + * The '<em><b>CHANGED</b></em>' literal object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #CHANGED_VALUE + * @generated + * @ordered + */ + CHANGED(1, "CHANGED", "CHANGED"), + /** + * The '<em><b>REMOVED</b></em>' literal object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #REMOVED_VALUE + * @generated + * @ordered + */ + REMOVED(2, "REMOVED", "REMOVED"), + /** + * The '<em><b>ADDED</b></em>' literal object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #ADDED_VALUE + * @generated + * @ordered + */ + ADDED(3, "ADDED", "ADDED"), + /** + * The '<em><b>COPIED</b></em>' literal object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #COPIED_VALUE + * @generated + * @ordered + */ + COPIED(4, "COPIED", "COPIED"), + /** + * The '<em><b>MOVED</b></em>' literal object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #MOVED_VALUE + * @generated + * @ordered + */ + MOVED(5, "MOVED", "MOVED"); + + /** + * The '<em><b>NONE</b></em>' literal value. + * <!-- begin-user-doc --> + * <p> + * If the meaning of '<em><b>NONE</b></em>' literal object isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @see #NONE + * @model + * @generated + * @ordered + */ + public static final int NONE_VALUE = 0; + + /** + * The '<em><b>CHANGED</b></em>' literal value. + * <!-- begin-user-doc --> + * <p> + * If the meaning of '<em><b>CHANGED</b></em>' literal object isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @see #CHANGED + * @model + * @generated + * @ordered + */ + public static final int CHANGED_VALUE = 1; + + /** + * The '<em><b>REMOVED</b></em>' literal value. + * <!-- begin-user-doc --> + * <p> + * If the meaning of '<em><b>REMOVED</b></em>' literal object isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @see #REMOVED + * @model + * @generated + * @ordered + */ + public static final int REMOVED_VALUE = 2; + + /** + * The '<em><b>ADDED</b></em>' literal value. + * <!-- begin-user-doc --> + * <p> + * If the meaning of '<em><b>ADDED</b></em>' literal object isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @see #ADDED + * @model + * @generated + * @ordered + */ + public static final int ADDED_VALUE = 3; + + /** + * The '<em><b>COPIED</b></em>' literal value. + * <!-- begin-user-doc --> + * <p> + * If the meaning of '<em><b>COPIED</b></em>' literal object isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @see #COPIED + * @model + * @generated + * @ordered + */ + public static final int COPIED_VALUE = 4; + + /** + * The '<em><b>MOVED</b></em>' literal value. + * <!-- begin-user-doc --> + * <p> + * If the meaning of '<em><b>MOVED</b></em>' literal object isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @see #MOVED + * @model + * @generated + * @ordered + */ + public static final int MOVED_VALUE = 5; + + /** + * An array of all the '<em><b>Change Kind</b></em>' enumerators. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static final ChangeKind[] VALUES_ARRAY = new ChangeKind[] { NONE, CHANGED, REMOVED, ADDED, COPIED, MOVED, }; + + /** + * A public read-only list of all the '<em><b>Change Kind</b></em>' enumerators. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final List<ChangeKind> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY)); + + /** + * Returns the '<em><b>Change Kind</b></em>' literal with the specified literal value. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param literal the literal. + * @return the matching enumerator or <code>null</code>. + * @generated + */ + public static ChangeKind get(String literal) + { + for (int i = 0; i < VALUES_ARRAY.length; ++i) + { + ChangeKind result = VALUES_ARRAY[i]; + if (result.toString().equals(literal)) + { + return result; + } + } + return null; + } + + /** + * Returns the '<em><b>Change Kind</b></em>' literal with the specified name. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param name the name. + * @return the matching enumerator or <code>null</code>. + * @generated + */ + public static ChangeKind getByName(String name) + { + for (int i = 0; i < VALUES_ARRAY.length; ++i) + { + ChangeKind result = VALUES_ARRAY[i]; + if (result.getName().equals(name)) + { + return result; + } + } + return null; + } + + /** + * Returns the '<em><b>Change Kind</b></em>' literal with the specified integer value. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the integer value. + * @return the matching enumerator or <code>null</code>. + * @generated + */ + public static ChangeKind get(int value) + { + switch (value) + { + case NONE_VALUE: + return NONE; + case CHANGED_VALUE: + return CHANGED; + case REMOVED_VALUE: + return REMOVED; + case ADDED_VALUE: + return ADDED; + case COPIED_VALUE: + return COPIED; + case MOVED_VALUE: + return MOVED; + } + return null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private final int value; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private final String name; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private final String literal; + + /** + * Only this class can construct instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private ChangeKind(int value, String name, String literal) + { + this.value = value; + this.name = name; + this.literal = literal; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public int getValue() + { + return value; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getName() + { + return name; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getLiteral() + { + return literal; + } + + /** + * Returns the literal value of the enumerator, which is its string representation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String toString() + { + return literal; + } + +} // ChangeKind diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/ElementChange.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/ElementChange.java new file mode 100644 index 0000000000..5daa1bf5a5 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/ElementChange.java @@ -0,0 +1,82 @@ +/** + */ +package org.eclipse.emf.cdo.evolution; + +import org.eclipse.emf.ecore.EModelElement; + +/** + * <!-- begin-user-doc --> + * A representation of the model object '<em><b>Element Change</b></em>'. + * <!-- end-user-doc --> + * + * <p> + * The following features are supported: + * </p> + * <ul> + * <li>{@link org.eclipse.emf.cdo.evolution.ElementChange#getOldElement <em>Old Element</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.ElementChange#getNewElement <em>New Element</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.ElementChange#getKind <em>Kind</em>}</li> + * </ul> + * + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getElementChange() + * @model annotation="http://www.eclipse.org/emf/2002/Ecore constraints='FeaturePathIsKnown'" + * @generated + */ +public interface ElementChange extends Change +{ + /** + * Returns the value of the '<em><b>Old Element</b></em>' reference. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Old Element</em>' reference isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Old Element</em>' reference. + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getElementChange_OldElement() + * @model suppressedSetVisibility="true" + * @generated + */ + EModelElement getOldElement(); + + /** + * Returns the value of the '<em><b>New Element</b></em>' reference. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>New Element</em>' reference isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>New Element</em>' reference. + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getElementChange_NewElement() + * @model suppressedSetVisibility="true" + * @generated + */ + EModelElement getNewElement(); + + /** + * Returns the value of the '<em><b>Kind</b></em>' attribute. + * The literals are from the enumeration {@link org.eclipse.emf.cdo.evolution.ChangeKind}. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Kind</em>' attribute isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Kind</em>' attribute. + * @see org.eclipse.emf.cdo.evolution.ChangeKind + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getElementChange_Kind() + * @model suppressedSetVisibility="true" + * @generated + */ + ChangeKind getKind(); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @model kind="operation" + * @generated + */ + EModelElement getElement(); + +} // ElementChange diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/Evolution.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/Evolution.java new file mode 100644 index 0000000000..528cbb50d5 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/Evolution.java @@ -0,0 +1,286 @@ +/** + */ +package org.eclipse.emf.cdo.evolution; + +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.ecore.EPackage; + +import java.util.Map; +import java.util.Set; + +/** + * <!-- begin-user-doc --> + * A representation of the model object '<em><b>Evolution</b></em>'. + * <!-- end-user-doc --> + * + * <p> + * The following features are supported: + * </p> + * <ul> + * <li>{@link org.eclipse.emf.cdo.evolution.Evolution#isUseEcorePackage <em>Use Ecore Package</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.Evolution#isUseEresourcePackage <em>Use Eresource Package</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.Evolution#isUseEtypesPackage <em>Use Etypes Package</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.Evolution#isUniqueNamespaces <em>Unique Namespaces</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.Evolution#getModels <em>Models</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.Evolution#getRootPackages <em>Root Packages</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.Evolution#getAllPackages <em>All Packages</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.Evolution#getMissingPackages <em>Missing Packages</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.Evolution#getReleases <em>Releases</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.Evolution#getOrderedReleases <em>Ordered Releases</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.Evolution#getLatestRelease <em>Latest Release</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.Evolution#getNextReleaseVersion <em>Next Release Version</em>}</li> + * </ul> + * + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getEvolution() + * @model annotation="http://www.eclipse.org/emf/2002/Ecore constraints='NotEmpty PackagesUnique NoMissingPackages IDsUnique'" + * @generated + */ +public interface Evolution extends ModelSet +{ + /** + * Returns the value of the '<em><b>Models</b></em>' containment reference list. + * The list contents are of type {@link org.eclipse.emf.cdo.evolution.Model}. + * It is bidirectional and its opposite is '{@link org.eclipse.emf.cdo.evolution.Model#getEvolution <em>Evolution</em>}'. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Models</em>' containment reference list isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Models</em>' containment reference list. + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getEvolution_Models() + * @see org.eclipse.emf.cdo.evolution.Model#getEvolution + * @model opposite="evolution" containment="true" + * @generated + */ + EList<Model> getModels(); + + /** + * Returns the value of the '<em><b>Use Ecore Package</b></em>' attribute. + * The default value is <code>"true"</code>. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Use Ecore Package</em>' attribute isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Use Ecore Package</em>' attribute. + * @see #setUseEcorePackage(boolean) + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getEvolution_UseEcorePackage() + * @model default="true" + * @generated + */ + boolean isUseEcorePackage(); + + /** + * Sets the value of the '{@link org.eclipse.emf.cdo.evolution.Evolution#isUseEcorePackage <em>Use Ecore Package</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Use Ecore Package</em>' attribute. + * @see #isUseEcorePackage() + * @generated + */ + void setUseEcorePackage(boolean value); + + /** + * Returns the value of the '<em><b>Use Eresource Package</b></em>' attribute. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Use Eresource Package</em>' attribute isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Use Eresource Package</em>' attribute. + * @see #setUseEresourcePackage(boolean) + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getEvolution_UseEresourcePackage() + * @model + * @generated + */ + boolean isUseEresourcePackage(); + + /** + * Sets the value of the '{@link org.eclipse.emf.cdo.evolution.Evolution#isUseEresourcePackage <em>Use Eresource Package</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Use Eresource Package</em>' attribute. + * @see #isUseEresourcePackage() + * @generated + */ + void setUseEresourcePackage(boolean value); + + /** + * Returns the value of the '<em><b>Use Etypes Package</b></em>' attribute. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Use Etypes Package</em>' attribute isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Use Etypes Package</em>' attribute. + * @see #setUseEtypesPackage(boolean) + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getEvolution_UseEtypesPackage() + * @model + * @generated + */ + boolean isUseEtypesPackage(); + + /** + * Sets the value of the '{@link org.eclipse.emf.cdo.evolution.Evolution#isUseEtypesPackage <em>Use Etypes Package</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Use Etypes Package</em>' attribute. + * @see #isUseEtypesPackage() + * @generated + */ + void setUseEtypesPackage(boolean value); + + /** + * Returns the value of the '<em><b>Unique Namespaces</b></em>' attribute. + * The default value is <code>"true"</code>. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Unique Namespaces</em>' attribute isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Unique Namespaces</em>' attribute. + * @see #setUniqueNamespaces(boolean) + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getEvolution_UniqueNamespaces() + * @model default="true" + * @generated + */ + boolean isUniqueNamespaces(); + + /** + * Sets the value of the '{@link org.eclipse.emf.cdo.evolution.Evolution#isUniqueNamespaces <em>Unique Namespaces</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Unique Namespaces</em>' attribute. + * @see #isUniqueNamespaces() + * @generated + */ + void setUniqueNamespaces(boolean value); + + /** + * Returns the value of the '<em><b>Root Packages</b></em>' reference list. + * The list contents are of type {@link org.eclipse.emf.ecore.EPackage}. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Root Packages</em>' reference list isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Root Packages</em>' reference list. + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getEvolution_RootPackages() + * @model transient="true" changeable="false" volatile="true" derived="true" + * @generated + */ + EList<EPackage> getRootPackages(); + + /** + * Returns the value of the '<em><b>All Packages</b></em>' reference list. + * The list contents are of type {@link org.eclipse.emf.ecore.EPackage}. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>All Packages</em>' reference list isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>All Packages</em>' reference list. + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getEvolution_AllPackages() + * @model transient="true" changeable="false" volatile="true" derived="true" + * @generated + */ + EList<EPackage> getAllPackages(); + + public Map<String, Set<EPackage>> getReleasedPackages(); + + /** + * Returns the value of the '<em><b>Releases</b></em>' containment reference list. + * The list contents are of type {@link org.eclipse.emf.cdo.evolution.Release}. + * It is bidirectional and its opposite is '{@link org.eclipse.emf.cdo.evolution.Release#getEvolution <em>Evolution</em>}'. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Releases</em>' containment reference list isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Releases</em>' containment reference list. + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getEvolution_Releases() + * @see org.eclipse.emf.cdo.evolution.Release#getEvolution + * @model opposite="evolution" containment="true" + * @generated + */ + EList<Release> getReleases(); + + /** + * Returns the value of the '<em><b>Ordered Releases</b></em>' reference list. + * The list contents are of type {@link org.eclipse.emf.cdo.evolution.Release}. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Ordered Releases</em>' reference list isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Ordered Releases</em>' reference list. + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getEvolution_OrderedReleases() + * @model transient="true" changeable="false" volatile="true" derived="true" + * @generated + */ + EList<Release> getOrderedReleases(); + + /** + * Returns the value of the '<em><b>Latest Release</b></em>' reference. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Latest Release</em>' reference isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Latest Release</em>' reference. + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getEvolution_LatestRelease() + * @model transient="true" changeable="false" volatile="true" derived="true" + * @generated + */ + Release getLatestRelease(); + + /** + * Returns the value of the '<em><b>Next Release Version</b></em>' attribute. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Next Release Version</em>' attribute isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Next Release Version</em>' attribute. + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getEvolution_NextReleaseVersion() + * @model transient="true" changeable="false" volatile="true" derived="true" + * @generated + */ + int getNextReleaseVersion(); + + /** + * Returns the value of the '<em><b>Missing Packages</b></em>' reference list. + * The list contents are of type {@link org.eclipse.emf.ecore.EPackage}. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Missing Packages</em>' reference list isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Missing Packages</em>' reference list. + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getEvolution_MissingPackages() + * @model transient="true" changeable="false" volatile="true" derived="true" + * @generated + */ + EList<EPackage> getMissingPackages(); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @model + * @generated + */ + Release getRelease(int version); + +} // Evolution diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/EvolutionFactory.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/EvolutionFactory.java new file mode 100644 index 0000000000..90503ae4bc --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/EvolutionFactory.java @@ -0,0 +1,148 @@ +/** + */ +package org.eclipse.emf.cdo.evolution; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EFactory; +import org.eclipse.emf.ecore.EModelElement; +import org.eclipse.emf.ecore.EStructuralFeature; + +/** + * <!-- begin-user-doc --> + * The <b>Factory</b> for the model. + * It provides a create method for each non-abstract class of the model. + * <!-- end-user-doc --> + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage + * @generated + */ +public interface EvolutionFactory extends EFactory +{ + /** + * The singleton instance of the factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EvolutionFactory eINSTANCE = org.eclipse.emf.cdo.evolution.impl.EvolutionFactoryImpl.init(); + + /** + * Returns a new object of class '<em>Model</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return a new object of class '<em>Model</em>'. + * @generated + */ + Model createModel(); + + Model createModel(URI uri); + + /** + * Returns a new object of class '<em>Evolution</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return a new object of class '<em>Evolution</em>'. + * @generated + */ + Evolution createEvolution(); + + /** + * Returns a new object of class '<em>Release</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return a new object of class '<em>Release</em>'. + * @generated + */ + Release createRelease(); + + /** + * Returns a new object of class '<em>Model Set Change</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return a new object of class '<em>Model Set Change</em>'. + * @generated + */ + ModelSetChange createModelSetChange(); + + ModelSetChange createModelSetChange(ModelSet[] modelSetChain); + + /** + * Returns a new object of class '<em>Element Change</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return a new object of class '<em>Element Change</em>'. + * @generated + */ + ElementChange createElementChange(); + + ElementChange createElementChange(EModelElement oldElement, EModelElement newElement, ChangeKind kind); + + /** + * Returns a new object of class '<em>Property Change</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return a new object of class '<em>Property Change</em>'. + * @generated + */ + PropertyChange createPropertyChange(); + + /** + * Returns a new object of class '<em>Feature Path Migration</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return a new object of class '<em>Feature Path Migration</em>'. + * @generated + */ + FeaturePathMigration createFeaturePathMigration(); + + PropertyChange createPropertyChange(EStructuralFeature feature, Object oldValue, Object newValue); + + /** + * Returns an instance of data type '<em>Change Kind</em>' corresponding the given literal. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param literal a literal of the data type. + * @return a new instance value of the data type. + * @generated + */ + ChangeKind createChangeKind(String literal); + + /** + * Returns a literal representation of an instance of data type '<em>Change Kind</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param instanceValue an instance value of the data type. + * @return a literal representation of the instance value. + * @generated + */ + String convertChangeKind(ChangeKind instanceValue); + + /** + * Returns an instance of data type '<em>URI</em>' corresponding the given literal. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param literal a literal of the data type. + * @return a new instance value of the data type. + * @generated + */ + URI createURI(String literal); + + /** + * Returns a literal representation of an instance of data type '<em>URI</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param instanceValue an instance value of the data type. + * @return a literal representation of the instance value. + * @generated + */ + String convertURI(URI instanceValue); + + /** + * Returns the package supported by this factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the package supported by this factory. + * @generated + */ + EvolutionPackage getEvolutionPackage(); + +} // EvolutionFactory diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/EvolutionPackage.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/EvolutionPackage.java new file mode 100644 index 0000000000..3be6a2ddf1 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/EvolutionPackage.java @@ -0,0 +1,2761 @@ +/** + */ +package org.eclipse.emf.cdo.evolution; + +import org.eclipse.emf.ecore.EAttribute; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EDataType; +import org.eclipse.emf.ecore.EEnum; +import org.eclipse.emf.ecore.EOperation; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EReference; + +/** + * <!-- begin-user-doc --> + * The <b>Package</b> for the model. + * It contains accessors for the meta objects to represent + * <ul> + * <li>each class,</li> + * <li>each feature of each class,</li> + * <li>each operation of each class,</li> + * <li>each enum,</li> + * <li>and each data type</li> + * </ul> + * <!-- end-user-doc --> + * @see org.eclipse.emf.cdo.evolution.EvolutionFactory + * @model kind="package" + * @generated + */ +public interface EvolutionPackage extends EPackage +{ + /** + * The package name. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + String eNAME = "evolution"; + + /** + * The package namespace URI. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + String eNS_URI = "http://www.eclipse.org/emf/CDO/evolution/1.0.0"; + + /** + * The package namespace name. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + String eNS_PREFIX = "evolution"; + + /** + * The singleton instance of the package. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EvolutionPackage eINSTANCE = org.eclipse.emf.cdo.evolution.impl.EvolutionPackageImpl.init(); + + /** + * The meta object id for the '{@link org.eclipse.emf.cdo.evolution.impl.ModelSetImpl <em>Model Set</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.cdo.evolution.impl.ModelSetImpl + * @see org.eclipse.emf.cdo.evolution.impl.EvolutionPackageImpl#getModelSet() + * @generated + */ + int MODEL_SET = 0; + + /** + * The feature id for the '<em><b>Change</b></em>' containment reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET__CHANGE = 0; + + /** + * The feature id for the '<em><b>Migrations</b></em>' containment reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET__MIGRATIONS = 1; + + /** + * The number of structural features of the '<em>Model Set</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET_FEATURE_COUNT = 2; + + /** + * The operation id for the '<em>Get Evolution</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET___GET_EVOLUTION = 0; + + /** + * The operation id for the '<em>Get Version</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET___GET_VERSION = 1; + + /** + * The operation id for the '<em>Get Previous Release</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET___GET_PREVIOUS_RELEASE = 2; + + /** + * The operation id for the '<em>Get Root Packages</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET___GET_ROOT_PACKAGES = 3; + + /** + * The operation id for the '<em>Get All Packages</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET___GET_ALL_PACKAGES = 4; + + /** + * The operation id for the '<em>Contains Element</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET___CONTAINS_ELEMENT__EMODELELEMENT = 5; + + /** + * The operation id for the '<em>Get Element</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET___GET_ELEMENT__STRING = 6; + + /** + * The operation id for the '<em>Get Element ID</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET___GET_ELEMENT_ID__EMODELELEMENT = 7; + + /** + * The operation id for the '<em>Get Element ID</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET___GET_ELEMENT_ID__EMODELELEMENT_BOOLEAN = 8; + + /** + * The operation id for the '<em>Compare</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET___COMPARE__MODELSET = 9; + + /** + * The operation id for the '<em>Get Migration</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET___GET_MIGRATION__STRING = 10; + + /** + * The number of operations of the '<em>Model Set</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET_OPERATION_COUNT = 11; + + /** + * The meta object id for the '{@link org.eclipse.emf.cdo.evolution.impl.ModelImpl <em>Model</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.cdo.evolution.impl.ModelImpl + * @see org.eclipse.emf.cdo.evolution.impl.EvolutionPackageImpl#getModel() + * @generated + */ + int MODEL = 1; + + /** + * The meta object id for the '{@link org.eclipse.emf.cdo.evolution.impl.EvolutionImpl <em>Evolution</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.cdo.evolution.impl.EvolutionImpl + * @see org.eclipse.emf.cdo.evolution.impl.EvolutionPackageImpl#getEvolution() + * @generated + */ + int EVOLUTION = 2; + + /** + * The feature id for the '<em><b>Evolution</b></em>' container reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL__EVOLUTION = 0; + + /** + * The feature id for the '<em><b>URI</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL__URI = 1; + + /** + * The feature id for the '<em><b>Root Package</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL__ROOT_PACKAGE = 2; + + /** + * The feature id for the '<em><b>All Packages</b></em>' reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL__ALL_PACKAGES = 3; + + /** + * The feature id for the '<em><b>Referenced Packages</b></em>' reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL__REFERENCED_PACKAGES = 4; + + /** + * The feature id for the '<em><b>Missing Packages</b></em>' reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL__MISSING_PACKAGES = 5; + + /** + * The number of structural features of the '<em>Model</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_FEATURE_COUNT = 6; + + /** + * The number of operations of the '<em>Model</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_OPERATION_COUNT = 0; + + /** + * The feature id for the '<em><b>Change</b></em>' containment reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION__CHANGE = MODEL_SET__CHANGE; + + /** + * The feature id for the '<em><b>Migrations</b></em>' containment reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION__MIGRATIONS = MODEL_SET__MIGRATIONS; + + /** + * The feature id for the '<em><b>Use Ecore Package</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION__USE_ECORE_PACKAGE = MODEL_SET_FEATURE_COUNT + 0; + + /** + * The feature id for the '<em><b>Use Eresource Package</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION__USE_ERESOURCE_PACKAGE = MODEL_SET_FEATURE_COUNT + 1; + + /** + * The feature id for the '<em><b>Use Etypes Package</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION__USE_ETYPES_PACKAGE = MODEL_SET_FEATURE_COUNT + 2; + + /** + * The feature id for the '<em><b>Unique Namespaces</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION__UNIQUE_NAMESPACES = MODEL_SET_FEATURE_COUNT + 3; + + /** + * The feature id for the '<em><b>Models</b></em>' containment reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION__MODELS = MODEL_SET_FEATURE_COUNT + 4; + + /** + * The feature id for the '<em><b>Root Packages</b></em>' reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION__ROOT_PACKAGES = MODEL_SET_FEATURE_COUNT + 5; + + /** + * The feature id for the '<em><b>All Packages</b></em>' reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION__ALL_PACKAGES = MODEL_SET_FEATURE_COUNT + 6; + + /** + * The feature id for the '<em><b>Missing Packages</b></em>' reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION__MISSING_PACKAGES = MODEL_SET_FEATURE_COUNT + 7; + + /** + * The feature id for the '<em><b>Releases</b></em>' containment reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION__RELEASES = MODEL_SET_FEATURE_COUNT + 8; + + /** + * The feature id for the '<em><b>Ordered Releases</b></em>' reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION__ORDERED_RELEASES = MODEL_SET_FEATURE_COUNT + 9; + + /** + * The feature id for the '<em><b>Latest Release</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION__LATEST_RELEASE = MODEL_SET_FEATURE_COUNT + 10; + + /** + * The feature id for the '<em><b>Next Release Version</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION__NEXT_RELEASE_VERSION = MODEL_SET_FEATURE_COUNT + 11; + + /** + * The number of structural features of the '<em>Evolution</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION_FEATURE_COUNT = MODEL_SET_FEATURE_COUNT + 12; + + /** + * The operation id for the '<em>Get Evolution</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION___GET_EVOLUTION = MODEL_SET___GET_EVOLUTION; + + /** + * The operation id for the '<em>Get Version</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION___GET_VERSION = MODEL_SET___GET_VERSION; + + /** + * The operation id for the '<em>Get Previous Release</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION___GET_PREVIOUS_RELEASE = MODEL_SET___GET_PREVIOUS_RELEASE; + + /** + * The operation id for the '<em>Get Root Packages</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION___GET_ROOT_PACKAGES = MODEL_SET___GET_ROOT_PACKAGES; + + /** + * The operation id for the '<em>Get All Packages</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION___GET_ALL_PACKAGES = MODEL_SET___GET_ALL_PACKAGES; + + /** + * The operation id for the '<em>Contains Element</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION___CONTAINS_ELEMENT__EMODELELEMENT = MODEL_SET___CONTAINS_ELEMENT__EMODELELEMENT; + + /** + * The operation id for the '<em>Get Element</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION___GET_ELEMENT__STRING = MODEL_SET___GET_ELEMENT__STRING; + + /** + * The operation id for the '<em>Get Element ID</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION___GET_ELEMENT_ID__EMODELELEMENT = MODEL_SET___GET_ELEMENT_ID__EMODELELEMENT; + + /** + * The operation id for the '<em>Get Element ID</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION___GET_ELEMENT_ID__EMODELELEMENT_BOOLEAN = MODEL_SET___GET_ELEMENT_ID__EMODELELEMENT_BOOLEAN; + + /** + * The operation id for the '<em>Compare</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION___COMPARE__MODELSET = MODEL_SET___COMPARE__MODELSET; + + /** + * The operation id for the '<em>Get Migration</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION___GET_MIGRATION__STRING = MODEL_SET___GET_MIGRATION__STRING; + + /** + * The operation id for the '<em>Get Release</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION___GET_RELEASE__INT = MODEL_SET_OPERATION_COUNT + 0; + + /** + * The number of operations of the '<em>Evolution</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION_OPERATION_COUNT = MODEL_SET_OPERATION_COUNT + 1; + + /** + * The meta object id for the '{@link org.eclipse.emf.cdo.evolution.impl.ReleaseImpl <em>Release</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.cdo.evolution.impl.ReleaseImpl + * @see org.eclipse.emf.cdo.evolution.impl.EvolutionPackageImpl#getRelease() + * @generated + */ + int RELEASE = 3; + + /** + * The feature id for the '<em><b>Change</b></em>' containment reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE__CHANGE = MODEL_SET__CHANGE; + + /** + * The feature id for the '<em><b>Migrations</b></em>' containment reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE__MIGRATIONS = MODEL_SET__MIGRATIONS; + + /** + * The feature id for the '<em><b>Evolution</b></em>' container reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE__EVOLUTION = MODEL_SET_FEATURE_COUNT + 0; + + /** + * The feature id for the '<em><b>Version</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE__VERSION = MODEL_SET_FEATURE_COUNT + 1; + + /** + * The feature id for the '<em><b>Date</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE__DATE = MODEL_SET_FEATURE_COUNT + 2; + + /** + * The feature id for the '<em><b>Next Release</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE__NEXT_RELEASE = MODEL_SET_FEATURE_COUNT + 3; + + /** + * The feature id for the '<em><b>Previous Release</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE__PREVIOUS_RELEASE = MODEL_SET_FEATURE_COUNT + 4; + + /** + * The feature id for the '<em><b>Root Packages</b></em>' containment reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE__ROOT_PACKAGES = MODEL_SET_FEATURE_COUNT + 5; + + /** + * The feature id for the '<em><b>All Packages</b></em>' reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE__ALL_PACKAGES = MODEL_SET_FEATURE_COUNT + 6; + + /** + * The number of structural features of the '<em>Release</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE_FEATURE_COUNT = MODEL_SET_FEATURE_COUNT + 7; + + /** + * The operation id for the '<em>Get Evolution</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE___GET_EVOLUTION = MODEL_SET___GET_EVOLUTION; + + /** + * The operation id for the '<em>Get Version</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE___GET_VERSION = MODEL_SET___GET_VERSION; + + /** + * The operation id for the '<em>Get Previous Release</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE___GET_PREVIOUS_RELEASE = MODEL_SET___GET_PREVIOUS_RELEASE; + + /** + * The operation id for the '<em>Get Root Packages</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE___GET_ROOT_PACKAGES = MODEL_SET___GET_ROOT_PACKAGES; + + /** + * The operation id for the '<em>Get All Packages</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE___GET_ALL_PACKAGES = MODEL_SET___GET_ALL_PACKAGES; + + /** + * The operation id for the '<em>Contains Element</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE___CONTAINS_ELEMENT__EMODELELEMENT = MODEL_SET___CONTAINS_ELEMENT__EMODELELEMENT; + + /** + * The operation id for the '<em>Get Element</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE___GET_ELEMENT__STRING = MODEL_SET___GET_ELEMENT__STRING; + + /** + * The operation id for the '<em>Get Element ID</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE___GET_ELEMENT_ID__EMODELELEMENT = MODEL_SET___GET_ELEMENT_ID__EMODELELEMENT; + + /** + * The operation id for the '<em>Get Element ID</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE___GET_ELEMENT_ID__EMODELELEMENT_BOOLEAN = MODEL_SET___GET_ELEMENT_ID__EMODELELEMENT_BOOLEAN; + + /** + * The operation id for the '<em>Compare</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE___COMPARE__MODELSET = MODEL_SET___COMPARE__MODELSET; + + /** + * The operation id for the '<em>Get Migration</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE___GET_MIGRATION__STRING = MODEL_SET___GET_MIGRATION__STRING; + + /** + * The number of operations of the '<em>Release</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE_OPERATION_COUNT = MODEL_SET_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link org.eclipse.emf.cdo.evolution.impl.ChangeImpl <em>Change</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.cdo.evolution.impl.ChangeImpl + * @see org.eclipse.emf.cdo.evolution.impl.EvolutionPackageImpl#getChange() + * @generated + */ + int CHANGE = 4; + + /** + * The feature id for the '<em><b>Parent</b></em>' container reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int CHANGE__PARENT = 0; + + /** + * The feature id for the '<em><b>Children</b></em>' containment reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int CHANGE__CHILDREN = 1; + + /** + * The number of structural features of the '<em>Change</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int CHANGE_FEATURE_COUNT = 2; + + /** + * The operation id for the '<em>Get Model Set Change</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int CHANGE___GET_MODEL_SET_CHANGE = 0; + + /** + * The operation id for the '<em>Get Old Element For</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int CHANGE___GET_OLD_ELEMENT_FOR__EMODELELEMENT = 1; + + /** + * The operation id for the '<em>Get New Elements For</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int CHANGE___GET_NEW_ELEMENTS_FOR__EMODELELEMENT = 2; + + /** + * The operation id for the '<em>Get Old Model Set</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int CHANGE___GET_OLD_MODEL_SET = 3; + + /** + * The operation id for the '<em>Get New Model Set</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int CHANGE___GET_NEW_MODEL_SET = 4; + + /** + * The number of operations of the '<em>Change</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int CHANGE_OPERATION_COUNT = 5; + + /** + * The meta object id for the '{@link org.eclipse.emf.cdo.evolution.impl.ModelSetChangeImpl <em>Model Set Change</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.cdo.evolution.impl.ModelSetChangeImpl + * @see org.eclipse.emf.cdo.evolution.impl.EvolutionPackageImpl#getModelSetChange() + * @generated + */ + int MODEL_SET_CHANGE = 5; + + /** + * The feature id for the '<em><b>Parent</b></em>' container reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET_CHANGE__PARENT = CHANGE__PARENT; + + /** + * The feature id for the '<em><b>Children</b></em>' containment reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET_CHANGE__CHILDREN = CHANGE__CHILDREN; + + /** + * The feature id for the '<em><b>Old Model Set</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET_CHANGE__OLD_MODEL_SET = CHANGE_FEATURE_COUNT + 0; + + /** + * The feature id for the '<em><b>New Model Set</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET_CHANGE__NEW_MODEL_SET = CHANGE_FEATURE_COUNT + 1; + + /** + * The number of structural features of the '<em>Model Set Change</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET_CHANGE_FEATURE_COUNT = CHANGE_FEATURE_COUNT + 2; + + /** + * The operation id for the '<em>Get Model Set Change</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET_CHANGE___GET_MODEL_SET_CHANGE = CHANGE___GET_MODEL_SET_CHANGE; + + /** + * The operation id for the '<em>Get Old Element For</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET_CHANGE___GET_OLD_ELEMENT_FOR__EMODELELEMENT = CHANGE___GET_OLD_ELEMENT_FOR__EMODELELEMENT; + + /** + * The operation id for the '<em>Get New Elements For</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET_CHANGE___GET_NEW_ELEMENTS_FOR__EMODELELEMENT = CHANGE___GET_NEW_ELEMENTS_FOR__EMODELELEMENT; + + /** + * The operation id for the '<em>Get Old Model Set</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET_CHANGE___GET_OLD_MODEL_SET = CHANGE___GET_OLD_MODEL_SET; + + /** + * The operation id for the '<em>Get New Model Set</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET_CHANGE___GET_NEW_MODEL_SET = CHANGE___GET_NEW_MODEL_SET; + + /** + * The number of operations of the '<em>Model Set Change</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET_CHANGE_OPERATION_COUNT = CHANGE_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link org.eclipse.emf.cdo.evolution.impl.ElementChangeImpl <em>Element Change</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.cdo.evolution.impl.ElementChangeImpl + * @see org.eclipse.emf.cdo.evolution.impl.EvolutionPackageImpl#getElementChange() + * @generated + */ + int ELEMENT_CHANGE = 6; + + /** + * The feature id for the '<em><b>Parent</b></em>' container reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int ELEMENT_CHANGE__PARENT = CHANGE__PARENT; + + /** + * The feature id for the '<em><b>Children</b></em>' containment reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int ELEMENT_CHANGE__CHILDREN = CHANGE__CHILDREN; + + /** + * The feature id for the '<em><b>Old Element</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int ELEMENT_CHANGE__OLD_ELEMENT = CHANGE_FEATURE_COUNT + 0; + + /** + * The feature id for the '<em><b>New Element</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int ELEMENT_CHANGE__NEW_ELEMENT = CHANGE_FEATURE_COUNT + 1; + + /** + * The feature id for the '<em><b>Kind</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int ELEMENT_CHANGE__KIND = CHANGE_FEATURE_COUNT + 2; + + /** + * The number of structural features of the '<em>Element Change</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int ELEMENT_CHANGE_FEATURE_COUNT = CHANGE_FEATURE_COUNT + 3; + + /** + * The operation id for the '<em>Get Model Set Change</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int ELEMENT_CHANGE___GET_MODEL_SET_CHANGE = CHANGE___GET_MODEL_SET_CHANGE; + + /** + * The operation id for the '<em>Get Old Element For</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int ELEMENT_CHANGE___GET_OLD_ELEMENT_FOR__EMODELELEMENT = CHANGE___GET_OLD_ELEMENT_FOR__EMODELELEMENT; + + /** + * The operation id for the '<em>Get New Elements For</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int ELEMENT_CHANGE___GET_NEW_ELEMENTS_FOR__EMODELELEMENT = CHANGE___GET_NEW_ELEMENTS_FOR__EMODELELEMENT; + + /** + * The operation id for the '<em>Get Old Model Set</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int ELEMENT_CHANGE___GET_OLD_MODEL_SET = CHANGE___GET_OLD_MODEL_SET; + + /** + * The operation id for the '<em>Get New Model Set</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int ELEMENT_CHANGE___GET_NEW_MODEL_SET = CHANGE___GET_NEW_MODEL_SET; + + /** + * The operation id for the '<em>Get Element</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int ELEMENT_CHANGE___GET_ELEMENT = CHANGE_OPERATION_COUNT + 0; + + /** + * The number of operations of the '<em>Element Change</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int ELEMENT_CHANGE_OPERATION_COUNT = CHANGE_OPERATION_COUNT + 1; + + /** + * The meta object id for the '{@link org.eclipse.emf.cdo.evolution.impl.PropertyChangeImpl <em>Property Change</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.cdo.evolution.impl.PropertyChangeImpl + * @see org.eclipse.emf.cdo.evolution.impl.EvolutionPackageImpl#getPropertyChange() + * @generated + */ + int PROPERTY_CHANGE = 7; + + /** + * The feature id for the '<em><b>Parent</b></em>' container reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int PROPERTY_CHANGE__PARENT = CHANGE__PARENT; + + /** + * The feature id for the '<em><b>Children</b></em>' containment reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int PROPERTY_CHANGE__CHILDREN = CHANGE__CHILDREN; + + /** + * The feature id for the '<em><b>Feature</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int PROPERTY_CHANGE__FEATURE = CHANGE_FEATURE_COUNT + 0; + + /** + * The feature id for the '<em><b>Old Value</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int PROPERTY_CHANGE__OLD_VALUE = CHANGE_FEATURE_COUNT + 1; + + /** + * The feature id for the '<em><b>New Value</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int PROPERTY_CHANGE__NEW_VALUE = CHANGE_FEATURE_COUNT + 2; + + /** + * The feature id for the '<em><b>Kind</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int PROPERTY_CHANGE__KIND = CHANGE_FEATURE_COUNT + 3; + + /** + * The number of structural features of the '<em>Property Change</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int PROPERTY_CHANGE_FEATURE_COUNT = CHANGE_FEATURE_COUNT + 4; + + /** + * The operation id for the '<em>Get Model Set Change</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int PROPERTY_CHANGE___GET_MODEL_SET_CHANGE = CHANGE___GET_MODEL_SET_CHANGE; + + /** + * The operation id for the '<em>Get Old Element For</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int PROPERTY_CHANGE___GET_OLD_ELEMENT_FOR__EMODELELEMENT = CHANGE___GET_OLD_ELEMENT_FOR__EMODELELEMENT; + + /** + * The operation id for the '<em>Get New Elements For</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int PROPERTY_CHANGE___GET_NEW_ELEMENTS_FOR__EMODELELEMENT = CHANGE___GET_NEW_ELEMENTS_FOR__EMODELELEMENT; + + /** + * The operation id for the '<em>Get Old Model Set</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int PROPERTY_CHANGE___GET_OLD_MODEL_SET = CHANGE___GET_OLD_MODEL_SET; + + /** + * The operation id for the '<em>Get New Model Set</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int PROPERTY_CHANGE___GET_NEW_MODEL_SET = CHANGE___GET_NEW_MODEL_SET; + + /** + * The number of operations of the '<em>Property Change</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int PROPERTY_CHANGE_OPERATION_COUNT = CHANGE_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link org.eclipse.emf.cdo.evolution.impl.MigrationImpl <em>Migration</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.cdo.evolution.impl.MigrationImpl + * @see org.eclipse.emf.cdo.evolution.impl.EvolutionPackageImpl#getMigration() + * @generated + */ + int MIGRATION = 8; |