diff options
author | Stefan Dirix | 2015-07-29 14:17:32 +0000 |
---|---|---|
committer | Laurent Goubet | 2016-02-15 15:15:28 +0000 |
commit | 8cb4a034963f904194c2c668dd75d8631c29e871 (patch) | |
tree | 9e8fa63064c38569dd62a401deae68a878b63e45 | |
parent | 49497ead3dc1e340aa42ff72aae9001ae07e2d5e (diff) | |
download | org.eclipse.emf.compare-8cb4a034963f904194c2c668dd75d8631c29e871.tar.gz org.eclipse.emf.compare-8cb4a034963f904194c2c668dd75d8631c29e871.tar.xz org.eclipse.emf.compare-8cb4a034963f904194c2c668dd75d8631c29e871.zip |
[473985] Enable comparison dialog in pure e4
Removes all runtime dependencies to the workbench which allows the
comparison dialog to run in pure e4 applications when platform/compare
is modified in the same way.
Adds a new org.eclipse.emf.compare.ide.ui.e4 bundle which contains
modified versions of org.eclipse.ui.progress classes. This bundle is
only required for pure e4 applications.
Bug: 473985
Signed-off-by: Stefan Dirix <sdirix@eclipsesource.com>
Change-Id: I8610a1d27e51dd954fd88edcdfed08fedd9b2d98
32 files changed, 1298 insertions, 53 deletions
diff --git a/org.eclipse.emf.compare-parent/pom.xml b/org.eclipse.emf.compare-parent/pom.xml index f341631fd..6d6be68e3 100644 --- a/org.eclipse.emf.compare-parent/pom.xml +++ b/org.eclipse.emf.compare-parent/pom.xml @@ -84,6 +84,7 @@ <module>../plugins/org.eclipse.emf.compare.edit</module> <module>../plugins/org.eclipse.emf.compare.ide</module> <module>../plugins/org.eclipse.emf.compare.ide.ui</module> + <module>../plugins/org.eclipse.emf.compare.ide.ui.e4</module> <module>../plugins/org.eclipse.emf.compare.ide.ui.tests</module> <module>../plugins/org.eclipse.emf.compare.ide.tests</module> diff --git a/plugins/org.eclipse.emf.compare.ide.ui.e4/.checkstyle b/plugins/org.eclipse.emf.compare.ide.ui.e4/.checkstyle new file mode 100644 index 000000000..89c72ff46 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.ide.ui.e4/.checkstyle @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<fileset-config file-format-version="1.2.0" simple-config="true" sync-formatter="false"> + <local-check-config name="EMF Compare" location="/org.eclipse.emf.compare-parent/codeStyle/EMFCompareCheckstyle5Configuration.xml" type="project" description=""> + <additional-data name="protect-config-file" value="false"/> + </local-check-config> + <fileset name="all" enabled="true" check-config-name="EMF Compare" local="true"> + <file-match-pattern match-pattern="." include-pattern="true"/> + </fileset> +</fileset-config> diff --git a/plugins/org.eclipse.emf.compare.ide.ui.e4/.classpath b/plugins/org.eclipse.emf.compare.ide.ui.e4/.classpath new file mode 100644 index 000000000..64c5e31b7 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.ide.ui.e4/.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.compare.ide.ui.e4/.project b/plugins/org.eclipse.emf.compare.ide.ui.e4/.project new file mode 100644 index 000000000..1af0af7a6 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.ide.ui.e4/.project @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>org.eclipse.emf.compare.ide.ui.e4</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ds.core.builder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>net.sf.eclipsecs.core.CheckstyleBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + <nature>net.sf.eclipsecs.core.CheckstyleNature</nature> + </natures> +</projectDescription> diff --git a/plugins/org.eclipse.emf.compare.ide.ui.e4/.settings/.api_filters b/plugins/org.eclipse.emf.compare.ide.ui.e4/.settings/.api_filters new file mode 100644 index 000000000..26ae2a52e --- /dev/null +++ b/plugins/org.eclipse.emf.compare.ide.ui.e4/.settings/.api_filters @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<component id="org.eclipse.emf.compare.ide.ui" version="2"> + <resource path="src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/table/TableContentMergeViewer.java" type="org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.table.TableContentMergeViewer"> + <filter id="571519004"> + <message_arguments> + <message_argument value="org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer.table.TableContentMergeViewer.createMergeViewer(Composite, IMergeViewerMergeViewerSide)"/> + <message_argument value="ArrayContentProvider"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/compare/ide/ui/internal/logical/EMFResourceMappingMerger.java" type="org.eclipse.emf.compare.ide.ui.internal.logical.EMFResourceMappingMerger"> + <filter comment="The EMFResourceMappingMerger needs none of the behavior from the abstract ResourceMappingMerger." id="574619656"> + <message_arguments> + <message_argument value="IResourceMappingMerger"/> + <message_argument value="EMFResourceMappingMerger"/> + </message_arguments> + </filter> + </resource> + <resource path="src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/WrappableTreeViewer.java" type="org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer.WrappableTreeViewer"> + <filter id="571473929"> + <message_arguments> + <message_argument value="TreeViewer"/> + <message_argument value="WrappableTreeViewer"/> + </message_arguments> + </filter> + </resource> +</component> diff --git a/plugins/org.eclipse.emf.compare.ide.ui.e4/.settings/edu.umd.cs.findbugs.core.prefs b/plugins/org.eclipse.emf.compare.ide.ui.e4/.settings/edu.umd.cs.findbugs.core.prefs new file mode 100644 index 000000000..1fab65578 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.ide.ui.e4/.settings/edu.umd.cs.findbugs.core.prefs @@ -0,0 +1,132 @@ +#FindBugs User Preferences +#Tue Mar 12 08:11:54 CET 2013 +cloud_id=edu.umd.cs.findbugs.cloud.doNothingCloud +detectorAppendingToAnObjectOutputStream=AppendingToAnObjectOutputStream|true +detectorAtomicityProblem=AtomicityProblem|true +detectorBadAppletConstructor=BadAppletConstructor|false +detectorBadResultSetAccess=BadResultSetAccess|true +detectorBadSyntaxForRegularExpression=BadSyntaxForRegularExpression|true +detectorBadUseOfReturnValue=BadUseOfReturnValue|true +detectorBadlyOverriddenAdapter=BadlyOverriddenAdapter|true +detectorBooleanReturnNull=BooleanReturnNull|true +detectorCallToUnsupportedMethod=CallToUnsupportedMethod|false +detectorCheckExpectedWarnings=CheckExpectedWarnings|false +detectorCheckImmutableAnnotation=CheckImmutableAnnotation|true +detectorCheckTypeQualifiers=CheckTypeQualifiers|true +detectorCloneIdiom=CloneIdiom|true +detectorComparatorIdiom=ComparatorIdiom|true +detectorConfusedInheritance=ConfusedInheritance|true +detectorConfusionBetweenInheritedAndOuterMethod=ConfusionBetweenInheritedAndOuterMethod|true +detectorCrossSiteScripting=CrossSiteScripting|true +detectorDefaultEncodingDetector=DefaultEncodingDetector|true +detectorDoInsideDoPrivileged=DoInsideDoPrivileged|true +detectorDontCatchIllegalMonitorStateException=DontCatchIllegalMonitorStateException|true +detectorDontIgnoreResultOfPutIfAbsent=DontIgnoreResultOfPutIfAbsent|true +detectorDontUseEnum=DontUseEnum|true +detectorDroppedException=DroppedException|true +detectorDumbMethodInvocations=DumbMethodInvocations|true +detectorDumbMethods=DumbMethods|true +detectorDuplicateBranches=DuplicateBranches|true +detectorEmptyZipFileEntry=EmptyZipFileEntry|true +detectorEqualsOperandShouldHaveClassCompatibleWithThis=EqualsOperandShouldHaveClassCompatibleWithThis|true +detectorExplicitSerialization=ExplicitSerialization|true +detectorFinalizerNullsFields=FinalizerNullsFields|true +detectorFindBadCast2=FindBadCast2|true +detectorFindBadForLoop=FindBadForLoop|true +detectorFindCircularDependencies=FindCircularDependencies|false +detectorFindDeadLocalStores=FindDeadLocalStores|true +detectorFindDoubleCheck=FindDoubleCheck|true +detectorFindEmptySynchronizedBlock=FindEmptySynchronizedBlock|true +detectorFindFieldSelfAssignment=FindFieldSelfAssignment|true +detectorFindFinalizeInvocations=FindFinalizeInvocations|true +detectorFindFloatEquality=FindFloatEquality|true +detectorFindHEmismatch=FindHEmismatch|true +detectorFindInconsistentSync2=FindInconsistentSync2|true +detectorFindJSR166LockMonitorenter=FindJSR166LockMonitorenter|true +detectorFindLocalSelfAssignment2=FindLocalSelfAssignment2|true +detectorFindMaskedFields=FindMaskedFields|true +detectorFindMismatchedWaitOrNotify=FindMismatchedWaitOrNotify|true +detectorFindNakedNotify=FindNakedNotify|true +detectorFindNonShortCircuit=FindNonShortCircuit|true +detectorFindNullDeref=FindNullDeref|true +detectorFindNullDerefsInvolvingNonShortCircuitEvaluation=FindNullDerefsInvolvingNonShortCircuitEvaluation|true +detectorFindOpenStream=FindOpenStream|true +detectorFindPuzzlers=FindPuzzlers|true +detectorFindRefComparison=FindRefComparison|true +detectorFindReturnRef=FindReturnRef|true +detectorFindRunInvocations=FindRunInvocations|true +detectorFindSelfComparison=FindSelfComparison|true +detectorFindSelfComparison2=FindSelfComparison2|true +detectorFindSleepWithLockHeld=FindSleepWithLockHeld|true +detectorFindSpinLoop=FindSpinLoop|true +detectorFindSqlInjection=FindSqlInjection|true +detectorFindTwoLockWait=FindTwoLockWait|true +detectorFindUncalledPrivateMethods=FindUncalledPrivateMethods|true +detectorFindUnconditionalWait=FindUnconditionalWait|true +detectorFindUninitializedGet=FindUninitializedGet|true +detectorFindUnrelatedTypesInGenericContainer=FindUnrelatedTypesInGenericContainer|true +detectorFindUnreleasedLock=FindUnreleasedLock|true +detectorFindUnsatisfiedObligation=FindUnsatisfiedObligation|true +detectorFindUnsyncGet=FindUnsyncGet|true +detectorFindUseOfNonSerializableValue=FindUseOfNonSerializableValue|true +detectorFindUselessControlFlow=FindUselessControlFlow|true +detectorFormatStringChecker=FormatStringChecker|true +detectorHugeSharedStringConstants=HugeSharedStringConstants|true +detectorIDivResultCastToDouble=IDivResultCastToDouble|true +detectorIncompatMask=IncompatMask|true +detectorInconsistentAnnotations=InconsistentAnnotations|true +detectorInefficientMemberAccess=InefficientMemberAccess|false +detectorInefficientToArray=InefficientToArray|true +detectorInfiniteLoop=InfiniteLoop|true +detectorInfiniteRecursiveLoop=InfiniteRecursiveLoop|true +detectorInheritanceUnsafeGetResource=InheritanceUnsafeGetResource|true +detectorInitializationChain=InitializationChain|true +detectorInitializeNonnullFieldsInConstructor=InitializeNonnullFieldsInConstructor|true +detectorInstantiateStaticClass=InstantiateStaticClass|true +detectorIntCast2LongAsInstant=IntCast2LongAsInstant|true +detectorInvalidJUnitTest=InvalidJUnitTest|true +detectorIteratorIdioms=IteratorIdioms|true +detectorLazyInit=LazyInit|true +detectorLoadOfKnownNullValue=LoadOfKnownNullValue|true +detectorLostLoggerDueToWeakReference=LostLoggerDueToWeakReference|true +detectorMethodReturnCheck=MethodReturnCheck|true +detectorMultithreadedInstanceAccess=MultithreadedInstanceAccess|true +detectorMutableLock=MutableLock|true +detectorMutableStaticFields=MutableStaticFields|true +detectorNaming=Naming|true +detectorNoteUnconditionalParamDerefs=NoteUnconditionalParamDerefs|true +detectorNumberConstructor=NumberConstructor|true +detectorOverridingEqualsNotSymmetrical=OverridingEqualsNotSymmetrical|true +detectorPreferZeroLengthArrays=PreferZeroLengthArrays|true +detectorPublicSemaphores=PublicSemaphores|false +detectorQuestionableBooleanAssignment=QuestionableBooleanAssignment|true +detectorReadOfInstanceFieldInMethodInvokedByConstructorInSuperclass=ReadOfInstanceFieldInMethodInvokedByConstructorInSuperclass|true +detectorReadReturnShouldBeChecked=ReadReturnShouldBeChecked|true +detectorRedundantInterfaces=RedundantInterfaces|true +detectorRepeatedConditionals=RepeatedConditionals|true +detectorRuntimeExceptionCapture=RuntimeExceptionCapture|true +detectorSerializableIdiom=SerializableIdiom|true +detectorStartInConstructor=StartInConstructor|true +detectorStaticCalendarDetector=StaticCalendarDetector|true +detectorStringConcatenation=StringConcatenation|true +detectorSuperfluousInstanceOf=SuperfluousInstanceOf|true +detectorSuspiciousThreadInterrupted=SuspiciousThreadInterrupted|true +detectorSwitchFallthrough=SwitchFallthrough|true +detectorSynchronizeAndNullCheckField=SynchronizeAndNullCheckField|true +detectorSynchronizeOnClassLiteralNotGetClass=SynchronizeOnClassLiteralNotGetClass|true +detectorSynchronizingOnContentsOfFieldToProtectField=SynchronizingOnContentsOfFieldToProtectField|true +detectorURLProblems=URLProblems|true +detectorUncallableMethodOfAnonymousClass=UncallableMethodOfAnonymousClass|true +detectorUnnecessaryMath=UnnecessaryMath|true +detectorUnreadFields=UnreadFields|true +detectorUselessSubclassMethod=UselessSubclassMethod|false +detectorVarArgsProblems=VarArgsProblems|true +detectorVolatileUsage=VolatileUsage|true +detectorWaitInLoop=WaitInLoop|true +detectorWrongMapIterator=WrongMapIterator|true +detectorXMLFactoryBypass=XMLFactoryBypass|true +detector_threshold=2 +effort=default +filter_settings=Medium|BAD_PRACTICE,CORRECTNESS,MALICIOUS_CODE,MT_CORRECTNESS,PERFORMANCE,SECURITY,STYLE|false|15 +filter_settings_neg=NOISE,I18N,EXPERIMENTAL| +run_at_full_build=true diff --git a/plugins/org.eclipse.emf.compare.ide.ui.e4/.settings/edu.umd.cs.findbugs.plugin.eclipse.prefs b/plugins/org.eclipse.emf.compare.ide.ui.e4/.settings/edu.umd.cs.findbugs.plugin.eclipse.prefs new file mode 100644 index 000000000..4235f7661 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.ide.ui.e4/.settings/edu.umd.cs.findbugs.plugin.eclipse.prefs @@ -0,0 +1,3 @@ +eclipse.preferences.version=1 +edu.umd.cs.findbugs.plugin.eclipse.findbugsMarkerScariest=Error +edu.umd.cs.findbugs.plugin.eclipse.findbugsMarkerScary=Error diff --git a/plugins/org.eclipse.emf.compare.ide.ui.e4/.settings/org.eclipse.core.resources.prefs b/plugins/org.eclipse.emf.compare.ide.ui.e4/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 000000000..99f26c020 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.ide.ui.e4/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/<project>=UTF-8 diff --git a/plugins/org.eclipse.emf.compare.ide.ui.e4/.settings/org.eclipse.core.runtime.prefs b/plugins/org.eclipse.emf.compare.ide.ui.e4/.settings/org.eclipse.core.runtime.prefs new file mode 100644 index 000000000..5a0ad22d2 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.ide.ui.e4/.settings/org.eclipse.core.runtime.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +line.separator=\n diff --git a/plugins/org.eclipse.emf.compare.ide.ui.e4/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.emf.compare.ide.ui.e4/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 000000000..89b506d56 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.ide.ui.e4/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,374 @@ +eclipse.preferences.version=1 +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.nonnullisdefault=disabled +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.problem.annotationSuperInterface=warning +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.autoboxing=warning +org.eclipse.jdt.core.compiler.problem.comparingIdentical=error +org.eclipse.jdt.core.compiler.problem.deadCode=error +org.eclipse.jdt.core.compiler.problem.deprecation=warning +org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled +org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled +org.eclipse.jdt.core.compiler.problem.discouragedReference=warning +org.eclipse.jdt.core.compiler.problem.emptyStatement=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore +org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore +org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled +org.eclipse.jdt.core.compiler.problem.fieldHiding=warning +org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning +org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=error +org.eclipse.jdt.core.compiler.problem.forbiddenReference=error +org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=error +org.eclipse.jdt.core.compiler.problem.includeFieldsInNullAnalysis=disabled +org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=enabled +org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning +org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore +org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning +org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning +org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning +org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=error +org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=error +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=disabled +org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning +org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=warning +org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error +org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=error +org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning +org.eclipse.jdt.core.compiler.problem.nullReference=error +org.eclipse.jdt.core.compiler.problem.nullSpecInsufficientInfo=warning +org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error +org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning +org.eclipse.jdt.core.compiler.problem.parameterAssignment=error +org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error +org.eclipse.jdt.core.compiler.problem.potentialNullReference=error +org.eclipse.jdt.core.compiler.problem.potentialNullSpecViolation=error +org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=warning +org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning +org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning +org.eclipse.jdt.core.compiler.problem.redundantNullCheck=error +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=warning +org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled +org.eclipse.jdt.core.compiler.problem.unusedImport=warning +org.eclipse.jdt.core.compiler.problem.unusedLabel=warning +org.eclipse.jdt.core.compiler.problem.unusedLocal=warning +org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore +org.eclipse.jdt.core.compiler.problem.unusedParameter=warning +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.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=0 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=0 +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=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true +org.eclipse.jdt.core.formatter.comment.format_block_comments=true +org.eclipse.jdt.core.formatter.comment.format_header=false +org.eclipse.jdt.core.formatter.comment.format_html=true +org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true +org.eclipse.jdt.core.formatter.comment.format_line_comments=true +org.eclipse.jdt.core.formatter.comment.format_source_code=true +org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true +org.eclipse.jdt.core.formatter.comment.indent_root_tags=true +org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert +org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert +org.eclipse.jdt.core.formatter.comment.line_length=110 +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=true +org.eclipse.jdt.core.formatter.indentation.size=8 +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=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=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=do not 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=do not 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=110 +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=tab +org.eclipse.jdt.core.formatter.tabulation.size=4 +org.eclipse.jdt.core.formatter.use_on_off_tags=true +org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=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=false diff --git a/plugins/org.eclipse.emf.compare.ide.ui.e4/.settings/org.eclipse.jdt.ui.prefs b/plugins/org.eclipse.emf.compare.ide.ui.e4/.settings/org.eclipse.jdt.ui.prefs new file mode 100644 index 000000000..4e1442ee9 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.ide.ui.e4/.settings/org.eclipse.jdt.ui.prefs @@ -0,0 +1,60 @@ +eclipse.preferences.version=1 +editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true +formatter_profile=_EMF Compare +formatter_settings_version=12 +org.eclipse.jdt.ui.ignorelowercasenames=true +org.eclipse.jdt.ui.importorder=fr;com;java;javax;org; +org.eclipse.jdt.ui.ondemandthreshold=99 +org.eclipse.jdt.ui.staticondemandthreshold=99 +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=false +sp_cleanup.remove_trailing_whitespaces_all=true +sp_cleanup.remove_trailing_whitespaces_ignore_empty=false +sp_cleanup.remove_unnecessary_casts=false +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=false +sp_cleanup.use_this_for_non_static_field_access=false +sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true +sp_cleanup.use_this_for_non_static_method_access=false +sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true diff --git a/plugins/org.eclipse.emf.compare.ide.ui.e4/.settings/org.eclipse.pde.api.tools.prefs b/plugins/org.eclipse.emf.compare.ide.ui.e4/.settings/org.eclipse.pde.api.tools.prefs new file mode 100644 index 000000000..01461e0e0 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.ide.ui.e4/.settings/org.eclipse.pde.api.tools.prefs @@ -0,0 +1,97 @@ +ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Warning +ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Warning +ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Warning +ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Warning +ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Warning +API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Warning +API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Warning +API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Warning +API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Warning +API_USE_SCAN_FIELD_SEVERITY=Error +API_USE_SCAN_METHOD_SEVERITY=Error +API_USE_SCAN_TYPE_SEVERITY=Error +CLASS_ELEMENT_TYPE_ADDED_METHOD=Warning +CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Warning +CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Warning +CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Warning +CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Warning +CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Warning +CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Warning +CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Warning +CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Warning +CLASS_ELEMENT_TYPE_REMOVED_FIELD=Warning +CLASS_ELEMENT_TYPE_REMOVED_METHOD=Warning +CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Warning +CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Warning +CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Warning +CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Warning +CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Warning +CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Warning +CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Warning +ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Warning +ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Warning +ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Warning +ENUM_ELEMENT_TYPE_REMOVED_FIELD=Warning +ENUM_ELEMENT_TYPE_REMOVED_METHOD=Warning +ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Warning +FIELD_ELEMENT_TYPE_ADDED_VALUE=Warning +FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Warning +FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Warning +FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Warning +FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Warning +FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Warning +FIELD_ELEMENT_TYPE_CHANGED_TYPE=Warning +FIELD_ELEMENT_TYPE_CHANGED_VALUE=Warning +FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Warning +FIELD_ELEMENT_TYPE_REMOVED_VALUE=Warning +ILLEGAL_EXTEND=Warning +ILLEGAL_IMPLEMENT=Warning +ILLEGAL_INSTANTIATE=Warning +ILLEGAL_OVERRIDE=Warning +ILLEGAL_REFERENCE=Warning +INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Warning +INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Warning +INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Warning +INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Warning +INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Warning +INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Warning +INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Warning +INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Warning +INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Warning +INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Warning +INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Warning +INVALID_JAVADOC_TAG=Ignore +INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Error +LEAK_EXTEND=Warning +LEAK_FIELD_DECL=Warning +LEAK_IMPLEMENT=Warning +LEAK_METHOD_PARAM=Warning +LEAK_METHOD_RETURN_TYPE=Warning +METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Warning +METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Warning +METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Warning +METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Warning +METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Warning +METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Warning +METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Warning +METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Warning +METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Warning +METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Warning +MISSING_EE_DESCRIPTIONS=Error +TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Warning +TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Warning +TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Warning +TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Warning +TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Warning +TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Warning +UNUSED_PROBLEM_FILTERS=Warning +automatically_removed_unused_problem_filters=false +eclipse.preferences.version=1 +incompatible_api_component_version=Warning +incompatible_api_component_version_include_major_without_breaking_change=Disabled +incompatible_api_component_version_include_minor_without_api_change=Disabled +invalid_since_tag_version=Warning +malformed_since_tag=Warning +missing_since_tag=Warning +report_api_breakage_when_major_version_incremented=Disabled +report_resolution_errors_api_component=Warning diff --git a/plugins/org.eclipse.emf.compare.ide.ui.e4/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.compare.ide.ui.e4/META-INF/MANIFEST.MF new file mode 100644 index 000000000..8db5517e7 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.ide.ui.e4/META-INF/MANIFEST.MF @@ -0,0 +1,14 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: org.eclipse.emf.compare.ide.ui.e4 +Bundle-Version: 1.0.0.qualifier +Require-Bundle: org.eclipse.emf.compare.ide.ui;bundle-version="4.1.0", + org.eclipse.ui, + org.eclipse.core.runtime +Bundle-RequiredExecutionEnvironment: J2SE-1.5 +Bundle-ActivationPolicy: lazy +Bundle-Localization: plugin +Service-Component: OSGI-INF/contentManagerProvider.xml +Bundle-Vendor: %providerName +Export-Package: org.eclipse.emf.compare.ide.ui.e4;x-internal:=true diff --git a/plugins/org.eclipse.emf.compare.ide.ui.e4/OSGI-INF/contentManagerProvider.xml b/plugins/org.eclipse.emf.compare.ide.ui.e4/OSGI-INF/contentManagerProvider.xml new file mode 100644 index 000000000..a6d00d352 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.ide.ui.e4/OSGI-INF/contentManagerProvider.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.emf.compare.ide.ui.e4.contentmanagerprovider"> + <implementation class="org.eclipse.emf.compare.ide.ui.e4.EMFCompareDeferredTreeContentManagerProviderImpl"/> + <service> + <provide interface="org.eclipse.emf.compare.ide.ui.internal.treecontentmanager.EMFCompareDeferredTreeContentManagerProvider"/> + </service> +</scr:component> diff --git a/plugins/org.eclipse.emf.compare.ide.ui.e4/build.properties b/plugins/org.eclipse.emf.compare.ide.ui.e4/build.properties new file mode 100644 index 000000000..42eea322e --- /dev/null +++ b/plugins/org.eclipse.emf.compare.ide.ui.e4/build.properties @@ -0,0 +1,6 @@ +output.. = bin/ +bin.includes = META-INF/,\ + plugin.properties,\ + .,\ + OSGI-INF/ +source.. = src/ diff --git a/plugins/org.eclipse.emf.compare.ide.ui.e4/plugin.properties b/plugins/org.eclipse.emf.compare.ide.ui.e4/plugin.properties new file mode 100644 index 000000000..549590efa --- /dev/null +++ b/plugins/org.eclipse.emf.compare.ide.ui.e4/plugin.properties @@ -0,0 +1,12 @@ +################################################################################ +# Copyright (c) 2016 EclipseSource Muenchen GmbH 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: +# Stefan Dirix - initial API and implementation +################################################################################ +pluginName = EMF Compare IDE UI E4 +providerName = Eclipse Modeling Project diff --git a/plugins/org.eclipse.emf.compare.ide.ui.e4/pom.xml b/plugins/org.eclipse.emf.compare.ide.ui.e4/pom.xml new file mode 100644 index 000000000..377985507 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.ide.ui.e4/pom.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.eclipse.emf.compare</groupId> + <artifactId>emf.compare-bundle-parent</artifactId> + <version>1.0.0-SNAPSHOT</version> + <relativePath>../../org.eclipse.emf.compare-parent/bundle-parent</relativePath> + </parent> + <groupId>org.eclipse.emf.compare</groupId> + <artifactId>org.eclipse.emf.compare.ide.ui.e4</artifactId> + <version>1.0.0-SNAPSHOT</version> + <packaging>eclipse-plugin</packaging> +</project> diff --git a/plugins/org.eclipse.emf.compare.ide.ui.e4/src/org/eclipse/emf/compare/ide/ui/e4/E4DeferredTreeContentManager.java b/plugins/org.eclipse.emf.compare.ide.ui.e4/src/org/eclipse/emf/compare/ide/ui/e4/E4DeferredTreeContentManager.java new file mode 100644 index 000000000..da88fd716 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.ide.ui.e4/src/org/eclipse/emf/compare/ide/ui/e4/E4DeferredTreeContentManager.java @@ -0,0 +1,137 @@ +/******************************************************************************* + * Copyright (c) 2016 EclipseSource Muenchen GmbH 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: + * Stefan Dirix - initial API and implementation + *******************************************************************************/ +package org.eclipse.emf.compare.ide.ui.e4; + +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.ListenerList; +import org.eclipse.core.runtime.Status; +import org.eclipse.core.runtime.jobs.IJobChangeListener; +import org.eclipse.emf.compare.ide.ui.internal.treecontentmanager.EMFCompareDeferredTreeContentManager; +import org.eclipse.jface.viewers.AbstractTreeViewer; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Display; +import org.eclipse.ui.internal.progress.ProgressMessages; +import org.eclipse.ui.progress.DeferredTreeContentManager; +import org.eclipse.ui.progress.PendingUpdateAdapter; +import org.eclipse.ui.progress.UIJob; + +/** + * Subclass of {@link DeferredTreeContentManager} which works without a workbench. + * + * @author Stefan Dirix <sdirix@eclipsesource.com> + */ +@SuppressWarnings("restriction") +public class E4DeferredTreeContentManager extends DeferredTreeContentManager implements EMFCompareDeferredTreeContentManager { + + /** + * The treeviewer whose content is to manage. + */ + private final AbstractTreeViewer treeViewer; + + /** + * Listener collection. + */ + private ListenerList updateCompleteListenerList; + + /** + * Constructor. + * + * @param treeViewer + * The treeViewer to update. + */ + public E4DeferredTreeContentManager(AbstractTreeViewer treeViewer) { + super(treeViewer); + this.treeViewer = treeViewer; + } + + @Override + protected PendingUpdateAdapter createPendingUpdateAdapter() { + return new E4PendingUpdateAdapter(); + } + + @Override + protected void addChildren(final Object parent, final Object[] children, final IProgressMonitor monitor) { + UIJob updateJob = new UIJob(Display.getDefault(), + ProgressMessages.DeferredTreeContentManager_AddingChildren) { + @Override + public IStatus runInUIThread(IProgressMonitor updateMonitor) { + // Cancel the job if the tree viewer got closed + if (treeViewer.getControl().isDisposed() || updateMonitor.isCanceled()) { + return Status.CANCEL_STATUS; + } + treeViewer.add(parent, children); + return Status.OK_STATUS; + } + }; + updateJob.setSystem(true); + updateJob.schedule(); + } + + @Override + protected void runClearPlaceholderJob(PendingUpdateAdapter placeholder) { + final E4PendingUpdateAdapter e4Placeholder = (E4PendingUpdateAdapter)placeholder; + if (e4Placeholder.isRemoved()) { + return; + } + // Clear the placeholder if it is still there + UIJob clearJob = new UIJob(Display.getDefault(), ProgressMessages.DeferredTreeContentManager_ClearJob) { + @Override + public IStatus runInUIThread(IProgressMonitor monitor) { + if (!e4Placeholder.isRemoved()) { + Control control = treeViewer.getControl(); + if (control.isDisposed()) { + return Status.CANCEL_STATUS; + } + treeViewer.remove(e4Placeholder); + e4Placeholder.setRemoved(true); + } + return Status.OK_STATUS; + } + }; + clearJob.setSystem(true); + + if (updateCompleteListenerList != null) { + Object[] listeners = updateCompleteListenerList.getListeners(); + for (int i = 0; i < listeners.length; i++) { + clearJob.addJobChangeListener((IJobChangeListener)listeners[i]); + } + } + clearJob.schedule(); + } + + // XXX Copied from super class since we need access to updateCompleteListenerList within + // #runClearPlaceholderJob + @Override + public void addUpdateCompleteListener(IJobChangeListener listener) { + if (listener == null && updateCompleteListenerList != null) { + Object[] listeners = updateCompleteListenerList.getListeners(); + if (listeners.length == 1) { + removeUpdateCompleteListener((IJobChangeListener)listeners[0]); + } + } else { + if (updateCompleteListenerList == null) { + updateCompleteListenerList = new ListenerList(); + } + updateCompleteListenerList.add(listener); + } + } + + // XXX Copied from super class since we need access to updateCompleteListenerList within + // #runClearPlaceholderJob + @Override + public void removeUpdateCompleteListener(IJobChangeListener listener) { + if (updateCompleteListenerList != null) { + updateCompleteListenerList.remove(listener); + } + } + +} diff --git a/plugins/org.eclipse.emf.compare.ide.ui.e4/src/org/eclipse/emf/compare/ide/ui/e4/E4PendingUpdateAdapter.java b/plugins/org.eclipse.emf.compare.ide.ui.e4/src/org/eclipse/emf/compare/ide/ui/e4/E4PendingUpdateAdapter.java new file mode 100644 index 000000000..19332d83b --- /dev/null +++ b/plugins/org.eclipse.emf.compare.ide.ui.e4/src/org/eclipse/emf/compare/ide/ui/e4/E4PendingUpdateAdapter.java @@ -0,0 +1,30 @@ +/******************************************************************************* + * Copyright (c) 2016 EclipseSource Muenchen GmbH 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: + * Stefan Dirix - initial API and implementation + *******************************************************************************/ +package org.eclipse.emf.compare.ide.ui.e4; + +import org.eclipse.ui.progress.PendingUpdateAdapter; + +/** + * Extend class to make methods visible in this package. + * + * @author Stefan Dirix <sdirix@eclipsesource.com> + */ +public class E4PendingUpdateAdapter extends PendingUpdateAdapter { + @Override + protected boolean isRemoved() { + return super.isRemoved(); + } + + @Override + protected void setRemoved(boolean removedValue) { + super.setRemoved(removedValue); + } +} diff --git a/plugins/org.eclipse.emf.compare.ide.ui.e4/src/org/eclipse/emf/compare/ide/ui/e4/EMFCompareDeferredTreeContentManagerProviderImpl.java b/plugins/org.eclipse.emf.compare.ide.ui.e4/src/org/eclipse/emf/compare/ide/ui/e4/EMFCompareDeferredTreeContentManagerProviderImpl.java new file mode 100644 index 000000000..3f5f14efe --- /dev/null +++ b/plugins/org.eclipse.emf.compare.ide.ui.e4/src/org/eclipse/emf/compare/ide/ui/e4/EMFCompareDeferredTreeContentManagerProviderImpl.java @@ -0,0 +1,33 @@ +/******************************************************************************* + * Copyright (c) 2016 EclipseSource Muenchen GmbH 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: + * Stefan Dirix - initial API and implementation + *******************************************************************************/ +package org.eclipse.emf.compare.ide.ui.e4; + +import org.eclipse.emf.compare.ide.ui.internal.treecontentmanager.EMFCompareDeferredTreeContentManager; +import org.eclipse.emf.compare.ide.ui.internal.treecontentmanager.EMFCompareDeferredTreeContentManagerProvider; +import org.eclipse.jface.viewers.AbstractTreeViewer; + +/** + * Service implementation to return the e4 version of + * {@link org.eclipse.ui.progress.DeferredTreeContentManager DeferredTreeContentManager} which is + * {@link E4DeferredTreeContentManager}. + * + * @author Stefan Dirix <sdirix@eclipsesource.com> + */ +public class EMFCompareDeferredTreeContentManagerProviderImpl implements EMFCompareDeferredTreeContentManagerProvider { + + /** + * {@inheritDoc} + */ + public EMFCompareDeferredTreeContentManager createEMFDeferredTreeContentManager(AbstractTreeViewer viewer) { + return new E4DeferredTreeContentManager(viewer); + } + +} diff --git a/plugins/org.eclipse.emf.compare.ide.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.compare.ide.ui/META-INF/MANIFEST.MF index 243bcf270..19bdea2cd 100644 --- a/plugins/org.eclipse.emf.compare.ide.ui/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.emf.compare.ide.ui/META-INF/MANIFEST.MF @@ -47,6 +47,7 @@ Export-Package: org.eclipse.emf.compare.ide.ui.dependency;x-friends:="org.eclips org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer;x-friends:="org.eclipse.emf.compare.ide.ui.tests", org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer.actions;x-internal:=true, org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer.provider;x-internal:=true, + org.eclipse.emf.compare.ide.ui.internal.treecontentmanager;x-friends:="org.eclipse.emf.compare.ide.ui.e4", org.eclipse.emf.compare.ide.ui.internal.util;x-internal:=true, org.eclipse.emf.compare.ide.ui.logical, org.eclipse.emf.compare.ide.ui.mergeresolution, diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/EMFCompareContentMergeViewer.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/EMFCompareContentMergeViewer.java index 9828913c2..a2ead67d7 100644 --- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/EMFCompareContentMergeViewer.java +++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/EMFCompareContentMergeViewer.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2012, 2015 Obeo and others. + * Copyright (c) 2012, 2016 Obeo 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 @@ -8,6 +8,7 @@ * Contributors: * Obeo - initial API and implementation * Michael Borkowski - bug 462863 + * Stefan Dirix - bug 473985 *******************************************************************************/ package org.eclipse.emf.compare.ide.ui.internal.contentmergeviewer; @@ -313,13 +314,8 @@ public abstract class EMFCompareContentMergeViewer extends ContentMergeViewer im fRight = createMergeViewer(composite, MergeViewerSide.RIGHT); fRight.addSelectionChangedListener(this); - IThemeManager themeManager = PlatformUI.getWorkbench().getThemeManager(); - final ITheme currentTheme; - if (themeManager != null) { - currentTheme = themeManager.getCurrentTheme(); - } else { - currentTheme = null; - } + final ITheme currentTheme = getCurrentTheme(); + boolean leftIsLocal = getCompareConfiguration().getBooleanProperty("LEFT_IS_LOCAL", false); fColors = new EMFCompareColor(composite.getDisplay(), leftIsLocal, currentTheme, getCompareConfiguration().getEventBus()); @@ -336,6 +332,21 @@ public abstract class EMFCompareContentMergeViewer extends ContentMergeViewer im } /** + * Determines the current used theme. + * + * @return The currently used theme if available, {@code null} otherwise. + */ + private ITheme getCurrentTheme() { + if (PlatformUI.isWorkbenchRunning()) { + final IThemeManager themeManager = PlatformUI.getWorkbench().getThemeManager(); + if (themeManager != null) { + return themeManager.getCurrentTheme(); + } + } + return null; + } + + /** * {@inheritDoc} * * @see org.eclipse.compare.contentmergeviewer.ContentMergeViewer#createToolItems(org.eclipse.jface.action.ToolBarManager) @@ -359,16 +370,18 @@ public abstract class EMFCompareContentMergeViewer extends ContentMergeViewer im } // Add extension point contributions to the content merge viewer toolbar - IServiceLocator workbench = PlatformUI.getWorkbench(); - final IMenuService menuService = (IMenuService)workbench.getService(IMenuService.class); - if (menuService != null) { - menuService.populateContributionManager(toolBarManager, - "toolbar:org.eclipse.emf.compare.contentmergeviewer.toolbar"); //$NON-NLS-1$ - toolBarManager.getControl().addDisposeListener(new DisposeListener() { - public void widgetDisposed(DisposeEvent e) { - menuService.releaseContributions(toolBarManager); - } - }); + if (PlatformUI.isWorkbenchRunning()) { + IServiceLocator workbench = PlatformUI.getWorkbench(); + final IMenuService menuService = (IMenuService)workbench.getService(IMenuService.class); + if (menuService != null) { + menuService.populateContributionManager(toolBarManager, + "toolbar:org.eclipse.emf.compare.contentmergeviewer.toolbar"); //$NON-NLS-1$ + toolBarManager.getControl().addDisposeListener(new DisposeListener() { + public void widgetDisposed(DisposeEvent e) { + menuService.releaseContributions(toolBarManager); + } + }); + } } } @@ -620,6 +633,11 @@ public abstract class EMFCompareContentMergeViewer extends ContentMergeViewer im * the given selection. */ private void updatePropertiesView(ISelection selection) { + if (!PlatformUI.isWorkbenchRunning()) { + // no update of property view outside of workbench + return; + } + if (selection instanceof StructuredSelection) { StructuredSelection structuredSelection = (StructuredSelection)selection; IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/CompareToolBar.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/CompareToolBar.java index 31fffee84..9beb79421 100644 --- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/CompareToolBar.java +++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/CompareToolBar.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2013, 2015 Obeo. + * Copyright (c) 2013, 2016 Obeo 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 @@ -7,6 +7,7 @@ * * Contributors: * Obeo - initial API and implementation + * Stefan Dirix - bug 473985 *******************************************************************************/ package org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer; @@ -95,19 +96,20 @@ public class CompareToolBar implements ISelectionChangedListener { compareConfiguration.getEventBus().register(this); // Add extension point contributions to the structure merge viewer toolbar - IServiceLocator workbench = PlatformUI.getWorkbench(); - - final IMenuService menuService = (IMenuService)workbench.getService(IMenuService.class); - if (menuService != null) { - menuService.populateContributionManager(toolbarManager, - "toolbar:org.eclipse.emf.compare.structuremergeviewer.toolbar"); //$NON-NLS-1$ - ToolBar toolbar = toolbarManager.getControl(); - if (toolbar != null) { - toolbar.addDisposeListener(new DisposeListener() { - public void widgetDisposed(DisposeEvent e) { - menuService.releaseContributions(toolbarManager); - } - }); + if (PlatformUI.isWorkbenchRunning()) { + IServiceLocator workbench = PlatformUI.getWorkbench(); + final IMenuService menuService = (IMenuService)workbench.getService(IMenuService.class); + if (menuService != null) { + menuService.populateContributionManager(toolbarManager, + "toolbar:org.eclipse.emf.compare.structuremergeviewer.toolbar"); //$NON-NLS-1$ + ToolBar toolbar = toolbarManager.getControl(); + if (toolbar != null) { + toolbar.addDisposeListener(new DisposeListener() { + public void widgetDisposed(DisposeEvent e) { + menuService.releaseContributions(toolbarManager); + } + }); + } } } diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/EMFCompareStructureMergeViewer.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/EMFCompareStructureMergeViewer.java index 4d9f6344d..da825cebf 100644 --- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/EMFCompareStructureMergeViewer.java +++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/EMFCompareStructureMergeViewer.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2013, 2015 Obeo and others. + * Copyright (c) 2013, 2016 Obeo 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 @@ -9,7 +9,7 @@ * Obeo - initial API and implementation * Michael Borkowski - bug 467191 * Philip Langer - bug 462884 - * Stefan Dirix - bug 474030 + * Stefan Dirix - bugs 473985 and 474030 *******************************************************************************/ package org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer; @@ -609,13 +609,8 @@ public class EMFCompareStructureMergeViewer extends AbstractStructuredViewerWrap tabFolder.setData(CompareUI.COMPARE_VIEWER_TITLE, EMFCompareIDEUIMessages .getString("EMFCompareStructureMergeViewer.title")); //$NON-NLS-1$ - IThemeManager themeManager = PlatformUI.getWorkbench().getThemeManager(); - final ITheme currentTheme; - if (themeManager != null) { - currentTheme = themeManager.getCurrentTheme(); - } else { - currentTheme = null; - } + final ITheme currentTheme = getCurrentTheme(); + boolean leftIsLocal = getCompareConfiguration().getBooleanProperty("LEFT_IS_LOCAL", false); //$NON-NLS-1$ fColors = new EMFCompareColor(control.getDisplay(), leftIsLocal, currentTheme, getCompareConfiguration().getEventBus()); @@ -631,6 +626,21 @@ public class EMFCompareStructureMergeViewer extends AbstractStructuredViewerWrap } /** + * Determines the current used theme. + * + * @return The currently used theme if available, {@code null} otherwise. + */ + private ITheme getCurrentTheme() { + if (PlatformUI.isWorkbenchRunning()) { + final IThemeManager themeManager = PlatformUI.getWorkbench().getThemeManager(); + if (themeManager != null) { + return themeManager.getCurrentTheme(); + } + } + return null; + } + + /** * {@inheritDoc} * * @see org.eclipse.jface.viewers.ContentViewer#getContentProvider() diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/EMFCompareStructureMergeViewerContentProvider.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/EMFCompareStructureMergeViewerContentProvider.java index 2ef3cee03..06377dec4 100644 --- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/EMFCompareStructureMergeViewerContentProvider.java +++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/EMFCompareStructureMergeViewerContentProvider.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2012, 2015 Obeo and others. + * Copyright (c) 2012, 2016 Obeo 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 @@ -8,6 +8,7 @@ * Contributors: * Obeo - initial API and implementation * Michael Borkowski - public CallbackType visibility for testing + * Stefan Dirix - bug 473985 *******************************************************************************/ package org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer; @@ -39,6 +40,8 @@ import org.eclipse.emf.common.notify.AdapterFactory; import org.eclipse.emf.common.notify.Notifier; import org.eclipse.emf.compare.Comparison; import org.eclipse.emf.compare.ide.ui.internal.EMFCompareIDEUIMessages; +import org.eclipse.emf.compare.ide.ui.internal.treecontentmanager.EMFCompareDeferredTreeContentManager; +import org.eclipse.emf.compare.ide.ui.internal.treecontentmanager.EMFCompareDeferredTreeContentManagerUtil; import org.eclipse.emf.compare.rcp.ui.internal.util.SWTUtil; import org.eclipse.emf.compare.rcp.ui.structuremergeviewer.groups.IDifferenceGroupProvider2; import org.eclipse.emf.edit.tree.TreeNode; @@ -208,7 +211,7 @@ public class EMFCompareStructureMergeViewerContentProvider extends AdapterFactor } /** {@link DeferredTreeContentManager} use to fetch groups in a external {@link Job}. */ - private final DeferredTreeContentManager contenManagerAdapter; + private final EMFCompareDeferredTreeContentManager contentManagerAdapter; /** Holds true if this content provider is currently fetching children. */ private boolean isFetchingGroup; @@ -234,8 +237,9 @@ public class EMFCompareStructureMergeViewerContentProvider extends AdapterFactor public EMFCompareStructureMergeViewerContentProvider(AdapterFactory adapterFactory, AbstractTreeViewer viewer) { super(adapterFactory); - contenManagerAdapter = new DeferredTreeContentManager(viewer); - contenManagerAdapter.addUpdateCompleteListener(this); + contentManagerAdapter = EMFCompareDeferredTreeContentManagerUtil + .createEMFDeferredTreeContentManager(viewer); + contentManagerAdapter.addUpdateCompleteListener(this); lock = new ReentrantLock(); listeners = new CopyOnWriteArrayList<EMFCompareStructureMergeViewerContentProvider.FetchListener>(); callbacks = new CopyOnWriteArrayList<EMFCompareStructureMergeViewerContentProvider.CallbackHolder>(); @@ -451,7 +455,7 @@ public class EMFCompareStructureMergeViewerContentProvider extends AdapterFactor } compareInputAdapter .setDeferredAdapter(new EMFCompareStructureMergeViewerContentProviderDeferredAdapter(this)); - pending = contenManagerAdapter.getChildren(compareInputAdapter); + pending = contentManagerAdapter.getChildren(compareInputAdapter); } return pending; } @@ -484,7 +488,7 @@ public class EMFCompareStructureMergeViewerContentProvider extends AdapterFactor @Override public void dispose() { super.dispose(); - contenManagerAdapter.removeUpdateCompleteListener(this); + contentManagerAdapter.removeUpdateCompleteListener(this); listeners.clear(); } diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/actions/SaveComparisonModelAction.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/actions/SaveComparisonModelAction.java index 53fab84f7..e595af40a 100644 --- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/actions/SaveComparisonModelAction.java +++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/structuremergeviewer/actions/SaveComparisonModelAction.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2013 Obeo. + * Copyright (c) 2013, 2016 Obeo 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 @@ -7,6 +7,7 @@ * * Contributors: * Obeo - initial API and implementation + * Stefan Dirix - bug 473985 *******************************************************************************/ package org.eclipse.emf.compare.ide.ui.internal.structuremergeviewer.actions; @@ -38,6 +39,7 @@ import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl; import org.eclipse.jface.action.Action; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.FileDialog; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.PlatformUI; @@ -79,7 +81,7 @@ public class SaveComparisonModelAction extends Action { */ @Override public void run() { - Shell parent = PlatformUI.getWorkbench().getDisplay().getActiveShell(); + Shell parent = getShell(); FileDialog fileDialog = new FileDialog(parent, SWT.SAVE); String filePath = fileDialog.open(); @@ -106,6 +108,18 @@ public class SaveComparisonModelAction extends Action { } /** + * Returns the active shell from the workbench (if running) or the default display. + * + * @return The active shell. + */ + private Shell getShell() { + if (PlatformUI.isWorkbenchRunning()) { + return PlatformUI.getWorkbench().getDisplay().getActiveShell(); + } + return Display.getDefault().getActiveShell(); + } + + /** * {@inheritDoc} * * @see org.eclipse.jface.action.Action#isEnabled() diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/treecontentmanager/EMFCompareDeferredTreeContentManager.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/treecontentmanager/EMFCompareDeferredTreeContentManager.java new file mode 100644 index 000000000..ce705d619 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/treecontentmanager/EMFCompareDeferredTreeContentManager.java @@ -0,0 +1,40 @@ +/******************************************************************************* + * Copyright (c) 2016 EclipseSource Muenchen GmbH 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: + * Stefan Dirix - initial API and implementation + *******************************************************************************/ +package org.eclipse.emf.compare.ide.ui.internal.treecontentmanager; + +import org.eclipse.core.runtime.jobs.IJobChangeListener; + +/** + * A wrapper interface for {@link org.eclipse.ui.progress.DeferredTreeContentManager + * DeferredTreeContentManager} which enables EMFCompare to switch between its own and the default platform + * implementation. This is required to detach EMFCompare from + * {@link org.eclipse.ui.progress.DeferredTreeContentManager DeferredTreeContentManager}'s dependency to the + * workbench and therefore enables EMFCompare to support pure E4 applications. + * + * @author Stefan Dirix <sdirix@eclipsesource.com> + */ +public interface EMFCompareDeferredTreeContentManager { + + /** + * @see org.eclipse.ui.progress.DeferredTreeContentManager#addUpdateCompleteListener(IJobChangeListener) + */ + public void addUpdateCompleteListener(IJobChangeListener listener); + + /** + * @see org.eclipse.ui.progress.DeferredTreeContentManager#getChildren(Object) + */ + public Object[] getChildren(final Object parent); + + /** + * @see org.eclipse.ui.progress.DeferredTreeContentManager#removeUpdateCompleteListener(IJobChangeListener) + */ + public void removeUpdateCompleteListener(IJobChangeListener listener); +} diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/treecontentmanager/EMFCompareDeferredTreeContentManagerImpl.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/treecontentmanager/EMFCompareDeferredTreeContentManagerImpl.java new file mode 100644 index 000000000..d70b4d216 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/treecontentmanager/EMFCompareDeferredTreeContentManagerImpl.java @@ -0,0 +1,55 @@ +/******************************************************************************* + * Copyright (c) 2016 EclipseSource Muenchen GmbH 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: + * Stefan Dirix - initial API and implementation + *******************************************************************************/ +package org.eclipse.emf.compare.ide.ui.internal.treecontentmanager; + +import org.eclipse.core.runtime.jobs.IJobChangeListener; +import org.eclipse.jface.viewers.AbstractTreeViewer; +import org.eclipse.ui.progress.DeferredTreeContentManager; + +/** + * The default implementation of {@link EMFCompareDeferredTreeContentManager} forwards to + * {@link DeferredTreeContentManager}. + * + * @author Stefan Dirix <sdirix@eclipsesource.com> + */ +public class EMFCompareDeferredTreeContentManagerImpl implements EMFCompareDeferredTreeContentManager { + + private DeferredTreeContentManager manager; + + /** + * Constructor. + */ + public EMFCompareDeferredTreeContentManagerImpl(AbstractTreeViewer viewer) { + manager = new DeferredTreeContentManager(viewer); + } + + /** + * {@inheritDoc} + */ + public void addUpdateCompleteListener(IJobChangeListener listener) { + manager.addUpdateCompleteListener(listener); + } + + /** + * {@inheritDoc} + */ + public Object[] getChildren(Object parent) { + return manager.getChildren(parent); + } + + /** + * {@inheritDoc} + */ + public void removeUpdateCompleteListener(IJobChangeListener listener) { + manager.removeUpdateCompleteListener(listener); + } + +} diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/treecontentmanager/EMFCompareDeferredTreeContentManagerProvider.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/treecontentmanager/EMFCompareDeferredTreeContentManagerProvider.java new file mode 100644 index 000000000..59f559da5 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/treecontentmanager/EMFCompareDeferredTreeContentManagerProvider.java @@ -0,0 +1,29 @@ +/******************************************************************************* + * Copyright (c) 2016 EclipseSource Muenchen GmbH 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: + * Stefan Dirix - initial API and implementation + *******************************************************************************/ +package org.eclipse.emf.compare.ide.ui.internal.treecontentmanager; + +import org.eclipse.jface.viewers.AbstractTreeViewer; + +/** + * Provider Service for {@link EMFCompareDeferredTreeContentManager}s. + * + * @author Stefan Dirix <sdirix@eclipsesource.com> + */ +public interface EMFCompareDeferredTreeContentManagerProvider { + /** + * Provides a {@link EMFCompareDeferredTreeContentManager} for the given viewer. + * + * @param viewer + * The viewer with which the {@link EMFCompareDeferredTreeContentManager} is created. + * @return The created {@link EMFCompareDeferredTreeContentManager}. + */ + public EMFCompareDeferredTreeContentManager createEMFDeferredTreeContentManager(AbstractTreeViewer viewer); +} diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/treecontentmanager/EMFCompareDeferredTreeContentManagerUtil.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/treecontentmanager/EMFCompareDeferredTreeContentManagerUtil.java new file mode 100644 index 000000000..567a26315 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/treecontentmanager/EMFCompareDeferredTreeContentManagerUtil.java @@ -0,0 +1,55 @@ +/******************************************************************************* + * Copyright (c) 2016 EclipseSource Muenchen GmbH 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: + * Stefan Dirix - initial API and implementation + *******************************************************************************/ +package org.eclipse.emf.compare.ide.ui.internal.treecontentmanager; + +import org.eclipse.emf.compare.ide.ui.internal.EMFCompareIDEUIPlugin; +import org.eclipse.jface.viewers.AbstractTreeViewer; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceReference; + +/** + * Util Class for handling {@link EMFCompareDeferredTreeContentManagerProvider} service. + * + * @author Stefan Dirix <sdirix@eclipsesource.com> + */ +public final class EMFCompareDeferredTreeContentManagerUtil { + + /** + * No constructor for Util classes. + */ + private EMFCompareDeferredTreeContentManagerUtil() { + } + + /** + * Uses the {@link EMFCompareDeferredTreeContentManagerProvider} service to create an + * {@link EMFCompareDeferredTreeContentManager}. + * + * @param viewer + * The viewer with which the {@link EMFCompareDeferredTreeContentManager} is created. + * @return The created {@link EMFCompareDeferredTreeContentManager}. + */ + // suppress warnings which are caused by compatibility to helios + @SuppressWarnings({"rawtypes", "unchecked" }) + public static EMFCompareDeferredTreeContentManager createEMFDeferredTreeContentManager( + AbstractTreeViewer viewer) { + BundleContext bundleContext = EMFCompareIDEUIPlugin.getDefault().getBundle().getBundleContext(); + ServiceReference reference = bundleContext + .getServiceReference(EMFCompareDeferredTreeContentManagerProvider.class.getName()); + if (reference != null) { + EMFCompareDeferredTreeContentManagerProvider service = (EMFCompareDeferredTreeContentManagerProvider)bundleContext + .getService(reference); + return service.createEMFDeferredTreeContentManager(viewer); + } else { + // default implementation + return new EMFCompareDeferredTreeContentManagerImpl(viewer); + } + } +} diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/util/CompareHandlerService.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/util/CompareHandlerService.java index a51a23491..868b59d1a 100644 --- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/util/CompareHandlerService.java +++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/util/CompareHandlerService.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2014 IBM Corporation and others. + * Copyright (c) 2007, 2016 IBM Corporation 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 @@ -8,6 +8,7 @@ * Contributors: * IBM Corporation - initial API and implementation * Obeo - adapted for EMF Compare + * Stefan Dirix - bug 473985 *******************************************************************************/ package org.eclipse.emf.compare.ide.ui.internal.util; @@ -48,6 +49,10 @@ public class CompareHandlerService { return new CompareHandlerService(container, null); } } + if (!PlatformUI.isWorkbenchRunning() && shell != null) { + Expression e = new ActiveShellExpression(shell); + return new CompareHandlerService(container, e); + } if (container.getWorkbenchPart() == null && shell != null) { // We're in a dialog so we can use an active shell expression IHandlerService service = (IHandlerService)PlatformUI.getWorkbench().getService( @@ -99,7 +104,8 @@ public class CompareHandlerService { fHandlerService = service; } } - if (fHandlerService == null && fContainer.getWorkbenchPart() == null && fExpression != null) { + if (PlatformUI.isWorkbenchRunning() && fHandlerService == null + && fContainer.getWorkbenchPart() == null && fExpression != null) { // We're in a dialog so we can use an active shell expression IHandlerService service = (IHandlerService)PlatformUI.getWorkbench().getService( IHandlerService.class); diff --git a/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/actions/ui/SynchronizerDialog.java b/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/actions/ui/SynchronizerDialog.java index e84093069..03cdb2d0b 100644 --- a/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/actions/ui/SynchronizerDialog.java +++ b/plugins/org.eclipse.emf.compare.rcp.ui/src/org/eclipse/emf/compare/rcp/ui/internal/structuremergeviewer/actions/ui/SynchronizerDialog.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2014 Obeo. + * Copyright (c) 2014, 2016 Obeo 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 @@ -7,6 +7,7 @@ * * Contributors: * Obeo - initial API and implementation + * Stefan Dirix - bug 473985 *******************************************************************************/ package org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.actions.ui; @@ -23,6 +24,7 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Link; import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.PlatformUI; import org.eclipse.ui.dialogs.PreferencesUtil; /** @@ -70,7 +72,8 @@ public class SynchronizerDialog extends MessageDialogWithToggle { */ @Override protected Control createCustomArea(Composite parent) { - if (preferencePageID != null) { + // only add hyperlink if workbench is running since the preference dialog depends on it + if (preferencePageID != null && PlatformUI.isWorkbenchRunning()) { Composite container = new Composite(parent, SWT.NONE); GridLayout layout = new GridLayout(1, true); container.setLayout(layout); |