diff --git a/cmake/.project b/cmake/.project new file mode 100644 index 00000000000..be701b85e10 --- /dev/null +++ b/cmake/.project @@ -0,0 +1,17 @@ + + + cmake + + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.m2e.core.maven2Nature + + diff --git a/jsoncdb/.project b/jsoncdb/.project new file mode 100644 index 00000000000..b56ae564d17 --- /dev/null +++ b/jsoncdb/.project @@ -0,0 +1,17 @@ + + + jsoncdb + + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.m2e.core.maven2Nature + + diff --git a/releng/org.eclipse.cdt.repo/category.xml b/releng/org.eclipse.cdt.repo/category.xml index 3c921233815..63661a11470 100644 --- a/releng/org.eclipse.cdt.repo/category.xml +++ b/releng/org.eclipse.cdt.repo/category.xml @@ -133,8 +133,8 @@ - - + + diff --git a/terminal/.project b/terminal/.project new file mode 100644 index 00000000000..d345eb1ee2b --- /dev/null +++ b/terminal/.project @@ -0,0 +1,17 @@ + + + terminal + + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.m2e.core.maven2Nature + + diff --git a/terminal/features/.project b/terminal/features/.project new file mode 100644 index 00000000000..7203751474d --- /dev/null +++ b/terminal/features/.project @@ -0,0 +1,17 @@ + + + features + + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.m2e.core.maven2Nature + + diff --git a/terminal/features/org.eclipse.tm.terminal.connector.local.feature/feature.xml b/terminal/features/org.eclipse.tm.terminal.connector.local.feature/feature.xml index 2f2ca424bb8..fbcd364b135 100644 --- a/terminal/features/org.eclipse.tm.terminal.connector.local.feature/feature.xml +++ b/terminal/features/org.eclipse.tm.terminal.connector.local.feature/feature.xml @@ -32,14 +32,7 @@ - - - - - - - + - diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/about.ini b/terminal/features/org.eclipse.tm.terminal.connector.ssh.feature/about.ini similarity index 100% rename from terminal/plugins/org.eclipse.tm.terminal.connector.ssh/about.ini rename to terminal/features/org.eclipse.tm.terminal.connector.ssh.feature/about.ini diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/about.mappings b/terminal/features/org.eclipse.tm.terminal.connector.ssh.feature/about.mappings similarity index 100% rename from terminal/plugins/org.eclipse.tm.terminal.connector.ssh/about.mappings rename to terminal/features/org.eclipse.tm.terminal.connector.ssh.feature/about.mappings diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/about.properties b/terminal/features/org.eclipse.tm.terminal.connector.ssh.feature/about.properties similarity index 100% rename from terminal/plugins/org.eclipse.tm.terminal.connector.ssh/about.properties rename to terminal/features/org.eclipse.tm.terminal.connector.ssh.feature/about.properties diff --git a/terminal/features/org.eclipse.tm.terminal.connector.ssh.feature/build.properties b/terminal/features/org.eclipse.tm.terminal.connector.ssh.feature/build.properties index c3d7109be57..70b8f53d16b 100644 --- a/terminal/features/org.eclipse.tm.terminal.connector.ssh.feature/build.properties +++ b/terminal/features/org.eclipse.tm.terminal.connector.ssh.feature/build.properties @@ -12,4 +12,8 @@ # Uwe Stieber (Wind River) - Bug 434937 - Releng: The Terminal Features have an incorrect license ############################################################################### bin.includes = feature.xml,\ - feature.properties + feature.properties,\ + about.ini,\ + about.mappings,\ + about.properties,\ + cdt_logo_icon32.png diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/cdt_logo_icon32.png b/terminal/features/org.eclipse.tm.terminal.connector.ssh.feature/cdt_logo_icon32.png similarity index 100% rename from terminal/plugins/org.eclipse.tm.terminal.connector.ssh/cdt_logo_icon32.png rename to terminal/features/org.eclipse.tm.terminal.connector.ssh.feature/cdt_logo_icon32.png diff --git a/terminal/features/org.eclipse.tm.terminal.connector.ssh.feature/feature.xml b/terminal/features/org.eclipse.tm.terminal.connector.ssh.feature/feature.xml index 42b7727c645..ca818d3a18a 100644 --- a/terminal/features/org.eclipse.tm.terminal.connector.ssh.feature/feature.xml +++ b/terminal/features/org.eclipse.tm.terminal.connector.ssh.feature/feature.xml @@ -17,7 +17,6 @@ label="%featureName" version="12.2.0.qualifier" provider-name="%providerName" - plugin="org.eclipse.tm.terminal.connector.ssh" license-feature="org.eclipse.license" license-feature-version="0.0.0"> @@ -34,15 +33,7 @@ - - - - - - - - - + diff --git a/terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/build.properties b/terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/build.properties index 89538a20b32..895ed62c72a 100644 --- a/terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/build.properties +++ b/terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/build.properties @@ -15,3 +15,4 @@ bin.includes = feature.xml,\ about.mappings,\ about.properties,\ cdt_logo_icon32.png +src.includes = feature.properties diff --git a/terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/feature.xml b/terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/feature.xml index 2de78f2cc4a..db281e9b580 100644 --- a/terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/feature.xml +++ b/terminal/features/org.eclipse.tm.terminal.connector.telnet.feature/feature.xml @@ -33,13 +33,7 @@ - - - - - - - + diff --git a/terminal/features/org.eclipse.tm.terminal.control.feature/feature.xml b/terminal/features/org.eclipse.tm.terminal.control.feature/feature.xml index eda1d897b61..453e439d8f3 100644 --- a/terminal/features/org.eclipse.tm.terminal.control.feature/feature.xml +++ b/terminal/features/org.eclipse.tm.terminal.control.feature/feature.xml @@ -35,9 +35,7 @@ - - - + diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/about.ini b/terminal/features/org.eclipse.tm.terminal.feature/about.ini similarity index 100% rename from terminal/plugins/org.eclipse.tm.terminal.view.core/about.ini rename to terminal/features/org.eclipse.tm.terminal.feature/about.ini diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/about.mappings b/terminal/features/org.eclipse.tm.terminal.feature/about.mappings similarity index 100% rename from terminal/plugins/org.eclipse.tm.terminal.view.core/about.mappings rename to terminal/features/org.eclipse.tm.terminal.feature/about.mappings diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/about.properties b/terminal/features/org.eclipse.tm.terminal.feature/about.properties similarity index 100% rename from terminal/plugins/org.eclipse.tm.terminal.view.core/about.properties rename to terminal/features/org.eclipse.tm.terminal.feature/about.properties diff --git a/terminal/features/org.eclipse.tm.terminal.feature/build.properties b/terminal/features/org.eclipse.tm.terminal.feature/build.properties index b801dc44f40..4a9a162a7e6 100644 --- a/terminal/features/org.eclipse.tm.terminal.feature/build.properties +++ b/terminal/features/org.eclipse.tm.terminal.feature/build.properties @@ -11,5 +11,9 @@ ############################################################################### bin.includes = feature.xml,\ feature.properties,\ + about.ini,\ + about.mappings,\ + about.properties,\ + cdt_logo_icon32.png,\ p2.inf src.includes = feature.properties diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/cdt_logo_icon32.png b/terminal/features/org.eclipse.tm.terminal.feature/cdt_logo_icon32.png similarity index 100% rename from terminal/plugins/org.eclipse.tm.terminal.view.core/cdt_logo_icon32.png rename to terminal/features/org.eclipse.tm.terminal.feature/cdt_logo_icon32.png diff --git a/terminal/features/org.eclipse.tm.terminal.feature/feature.xml b/terminal/features/org.eclipse.tm.terminal.feature/feature.xml index efb2486d4d2..79ce251e68c 100644 --- a/terminal/features/org.eclipse.tm.terminal.feature/feature.xml +++ b/terminal/features/org.eclipse.tm.terminal.feature/feature.xml @@ -13,7 +13,6 @@ label="%featureName" version="12.2.0.qualifier" provider-name="%providerName" - plugin="org.eclipse.tm.terminal.view.core" license-feature="org.eclipse.license" license-feature-version="0.0.0"> diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/about.html b/terminal/features/org.eclipse.tm.terminal.view.feature/about.html similarity index 100% rename from terminal/plugins/org.eclipse.tm.terminal.connector.local/about.html rename to terminal/features/org.eclipse.tm.terminal.view.feature/about.html diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/about.ini b/terminal/features/org.eclipse.tm.terminal.view.feature/about.ini similarity index 100% rename from terminal/plugins/org.eclipse.tm.terminal.view.ui/about.ini rename to terminal/features/org.eclipse.tm.terminal.view.feature/about.ini diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/about.mappings b/terminal/features/org.eclipse.tm.terminal.view.feature/about.mappings similarity index 100% rename from terminal/plugins/org.eclipse.tm.terminal.view.ui/about.mappings rename to terminal/features/org.eclipse.tm.terminal.view.feature/about.mappings diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/about.properties b/terminal/features/org.eclipse.tm.terminal.view.feature/about.properties similarity index 100% rename from terminal/plugins/org.eclipse.tm.terminal.view.ui/about.properties rename to terminal/features/org.eclipse.tm.terminal.view.feature/about.properties diff --git a/terminal/features/org.eclipse.tm.terminal.view.feature/build.properties b/terminal/features/org.eclipse.tm.terminal.view.feature/build.properties index 9ac7f804cc8..f52d0206039 100644 --- a/terminal/features/org.eclipse.tm.terminal.view.feature/build.properties +++ b/terminal/features/org.eclipse.tm.terminal.view.feature/build.properties @@ -10,5 +10,9 @@ # Wind River Systems - initial API and implementation ############################################################################### bin.includes = feature.xml,\ - feature.properties -src.includes = feature.properties + feature.properties,\ + about.ini,\ + about.mappings,\ + about.properties,\ + cdt_logo_icon32.png +src.includes = feature.properties \ No newline at end of file diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/cdt_logo_icon32.png b/terminal/features/org.eclipse.tm.terminal.view.feature/cdt_logo_icon32.png similarity index 100% rename from terminal/plugins/org.eclipse.tm.terminal.view.ui/cdt_logo_icon32.png rename to terminal/features/org.eclipse.tm.terminal.view.feature/cdt_logo_icon32.png diff --git a/terminal/features/org.eclipse.tm.terminal.view.feature/feature.xml b/terminal/features/org.eclipse.tm.terminal.view.feature/feature.xml index e3355244802..643ce164f5e 100644 --- a/terminal/features/org.eclipse.tm.terminal.view.feature/feature.xml +++ b/terminal/features/org.eclipse.tm.terminal.view.feature/feature.xml @@ -13,7 +13,6 @@ label="%featureName" version="12.2.0.qualifier" provider-name="%providerName" - plugin="org.eclipse.tm.terminal.view.ui" license-feature="org.eclipse.license" license-feature-version="0.0.0"> @@ -30,13 +29,8 @@ - - - - - - - + + diff --git a/terminal/plugins/.project b/terminal/plugins/.project new file mode 100644 index 00000000000..ae5eb5b523d --- /dev/null +++ b/terminal/plugins/.project @@ -0,0 +1,17 @@ + + + plugins + + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.m2e.core.maven2Nature + + diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/.classpath b/terminal/plugins/org.eclipse.tm.terminal.connector.local/.classpath deleted file mode 100644 index 81fe078c20c..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.local/.classpath +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/.gitignore b/terminal/plugins/org.eclipse.tm.terminal.connector.local/.gitignore deleted file mode 100644 index ae3c1726048..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.local/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/bin/ diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/.options b/terminal/plugins/org.eclipse.tm.terminal.connector.local/.options deleted file mode 100644 index 5cbcb6722b8..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.local/.options +++ /dev/null @@ -1 +0,0 @@ -org.eclipse.tm.terminal.connector.local/debugmode = 0 diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/.project b/terminal/plugins/org.eclipse.tm.terminal.connector.local/.project deleted file mode 100644 index 696a343153f..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.local/.project +++ /dev/null @@ -1,45 +0,0 @@ - - - org.eclipse.tm.terminal.connector.local - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.pde.ManifestBuilder - - - - - org.eclipse.pde.SchemaBuilder - - - - - org.eclipse.pde.api.tools.apiAnalysisBuilder - - - - - - org.eclipse.pde.PluginNature - org.eclipse.jdt.core.javanature - org.eclipse.pde.api.tools.apiAnalysisNature - - - - 0 - - 10 - - org.eclipse.ui.ide.multiFilter - 1.0-name-matches-false-false-target - - - - diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.core.resources.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index 99f26c0203a..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -encoding/=UTF-8 diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.jdt.core.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 9df862f8d49..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,486 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.builder.cleanOutputFolder=clean -org.eclipse.jdt.core.builder.duplicateResourceTask=warning -org.eclipse.jdt.core.builder.invalidClasspath=abort -org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore -org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend -org.eclipse.jdt.core.circularClasspath=error -org.eclipse.jdt.core.classpath.exclusionPatterns=enabled -org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error -org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled -org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error -org.eclipse.jdt.core.codeComplete.argumentPrefixes= -org.eclipse.jdt.core.codeComplete.argumentSuffixes= -org.eclipse.jdt.core.codeComplete.fieldPrefixes= -org.eclipse.jdt.core.codeComplete.fieldSuffixes= -org.eclipse.jdt.core.codeComplete.localPrefixes= -org.eclipse.jdt.core.codeComplete.localSuffixes= -org.eclipse.jdt.core.codeComplete.staticFieldPrefixes= -org.eclipse.jdt.core.codeComplete.staticFieldSuffixes= -org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes= -org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes= -org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled -org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore -org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull -org.eclipse.jdt.core.compiler.annotation.nonnull.secondary= -org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault -org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary= -org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable -org.eclipse.jdt.core.compiler.annotation.nullable.secondary= -org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.methodParameters=generate -org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=17 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.doc.comment.support=enabled -org.eclipse.jdt.core.compiler.maxProblemPerUnit=100 -org.eclipse.jdt.core.compiler.problem.APILeak=warning -org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.autoboxing=ignore -org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning -org.eclipse.jdt.core.compiler.problem.deadCode=warning -org.eclipse.jdt.core.compiler.problem.deprecation=warning -org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled -org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled -org.eclipse.jdt.core.compiler.problem.discouragedReference=warning -org.eclipse.jdt.core.compiler.problem.emptyStatement=warning -org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore -org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning -org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled -org.eclipse.jdt.core.compiler.problem.fieldHiding=warning -org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning -org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning -org.eclipse.jdt.core.compiler.problem.forbiddenReference=error -org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning -org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled -org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning -org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning -org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore -org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore -org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled -org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled -org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled -org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected -org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore -org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error -org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore -org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning -org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled -org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled -org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public -org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag -org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled -org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled -org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled -org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore -org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore -org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning -org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning -org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning -org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning -org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning -org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error -org.eclipse.jdt.core.compiler.problem.nullReference=error -org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error -org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning -org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning -org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore -org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning -org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning -org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning -org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore -org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning -org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning -org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning -org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore -org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning -org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore -org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore -org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning -org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled -org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning -org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled -org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled -org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled -org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore -org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning -org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning -org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled -org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning -org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning -org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore -org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning -org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning -org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled -org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info -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.unstableAutoModuleName=warning -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled -org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore -org.eclipse.jdt.core.compiler.problem.unusedImport=warning -org.eclipse.jdt.core.compiler.problem.unusedLabel=warning -org.eclipse.jdt.core.compiler.problem.unusedLocal=warning -org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore -org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore -org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled -org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning -org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore -org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning -org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning -org.eclipse.jdt.core.compiler.release=enabled -org.eclipse.jdt.core.compiler.source=17 -org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false -org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647 -org.eclipse.jdt.core.formatter.align_type_members_on_columns=false -org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false -org.eclipse.jdt.core.formatter.align_with_spaces=false -org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_assignment=0 -org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 -org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16 -org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 -org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16 -org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 -org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0 -org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0 -org.eclipse.jdt.core.formatter.alignment_for_module_statements=16 -org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 -org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80 -org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16 -org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0 -org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0 -org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16 -org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_after_package=1 -org.eclipse.jdt.core.formatter.blank_lines_before_field=0 -org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 -org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 -org.eclipse.jdt.core.formatter.blank_lines_before_method=1 -org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 -org.eclipse.jdt.core.formatter.blank_lines_before_package=0 -org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 -org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 -org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true -org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false -org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true -org.eclipse.jdt.core.formatter.comment.format_block_comments=false -org.eclipse.jdt.core.formatter.comment.format_header=false -org.eclipse.jdt.core.formatter.comment.format_html=true -org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false -org.eclipse.jdt.core.formatter.comment.format_line_comments=false -org.eclipse.jdt.core.formatter.comment.format_source_code=true -org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false -org.eclipse.jdt.core.formatter.comment.indent_root_tags=false -org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert -org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert -org.eclipse.jdt.core.formatter.comment.line_length=80 -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=false -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true -org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_empty_lines=false -org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true -org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false -org.eclipse.jdt.core.formatter.indentation.size=4 -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert -org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert -org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert -org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert -org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert -org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert -org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert -org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.join_lines_in_comments=true -org.eclipse.jdt.core.formatter.join_wrapped_lines=true -org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false -org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false -org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false -org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false -org.eclipse.jdt.core.formatter.lineSplit=120 -org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false -org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 -org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 -org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines -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_additive_operator=true -org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false -org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true -org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true -org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true -org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true -org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true -org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true -org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true -org.eclipse.jdt.core.incompatibleJDKLevel=ignore -org.eclipse.jdt.core.incompleteClasspath=error -org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.jdt.launching.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.jdt.launching.prefs deleted file mode 100644 index f8a131b56e0..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.jdt.launching.prefs +++ /dev/null @@ -1,3 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.launching.PREF_COMPILER_COMPLIANCE_DOES_NOT_MATCH_JRE=warning -org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.jdt.ui.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.jdt.ui.prefs deleted file mode 100644 index d35ba9b5231..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.jdt.ui.prefs +++ /dev/null @@ -1,213 +0,0 @@ -cleanup.add_all=false -cleanup.add_default_serial_version_id=true -cleanup.add_generated_serial_version_id=false -cleanup.add_missing_annotations=true -cleanup.add_missing_deprecated_annotations=true -cleanup.add_missing_methods=false -cleanup.add_missing_nls_tags=false -cleanup.add_missing_override_annotations=true -cleanup.add_missing_override_annotations_interface_methods=true -cleanup.add_serial_version_id=false -cleanup.always_use_blocks=true -cleanup.always_use_parentheses_in_expressions=false -cleanup.always_use_this_for_non_static_field_access=false -cleanup.always_use_this_for_non_static_method_access=false -cleanup.array_with_curly=false -cleanup.arrays_fill=false -cleanup.bitwise_conditional_expression=false -cleanup.boolean_literal=false -cleanup.boolean_value_rather_than_comparison=false -cleanup.break_loop=false -cleanup.collection_cloning=false -cleanup.comparing_on_criteria=false -cleanup.comparison_statement=false -cleanup.controlflow_merge=false -cleanup.convert_functional_interfaces=false -cleanup.convert_to_enhanced_for_loop=false -cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true -cleanup.convert_to_switch_expressions=false -cleanup.correct_indentation=false -cleanup.do_while_rather_than_while=true -cleanup.double_negation=false -cleanup.else_if=false -cleanup.embedded_if=false -cleanup.evaluate_nullable=false -cleanup.extract_increment=false -cleanup.format_source_code=true -cleanup.format_source_code_changes_only=false -cleanup.hash=false -cleanup.if_condition=false -cleanup.insert_inferred_type_arguments=false -cleanup.instanceof=false -cleanup.instanceof_keyword=false -cleanup.invert_equals=false -cleanup.join=false -cleanup.lazy_logical_operator=false -cleanup.make_local_variable_final=true -cleanup.make_parameters_final=false -cleanup.make_private_fields_final=true -cleanup.make_type_abstract_if_missing_method=false -cleanup.make_variable_declarations_final=false -cleanup.map_cloning=false -cleanup.merge_conditional_blocks=false -cleanup.multi_catch=false -cleanup.never_use_blocks=false -cleanup.never_use_parentheses_in_expressions=true -cleanup.no_string_creation=false -cleanup.no_super=false -cleanup.number_suffix=false -cleanup.objects_equals=false -cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false -cleanup.operand_factorization=false -cleanup.organize_imports=true -cleanup.overridden_assignment=false -cleanup.plain_replacement=false -cleanup.precompile_regex=false -cleanup.primitive_comparison=false -cleanup.primitive_parsing=false -cleanup.primitive_rather_than_wrapper=false -cleanup.primitive_serialization=false -cleanup.pull_out_if_from_if_else=false -cleanup.pull_up_assignment=false -cleanup.push_down_negation=false -cleanup.qualify_static_field_accesses_with_declaring_class=false -cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -cleanup.qualify_static_member_accesses_with_declaring_class=false -cleanup.qualify_static_method_accesses_with_declaring_class=false -cleanup.reduce_indentation=false -cleanup.redundant_comparator=false -cleanup.redundant_falling_through_block_end=false -cleanup.remove_private_constructors=true -cleanup.remove_redundant_modifiers=false -cleanup.remove_redundant_semicolons=true -cleanup.remove_redundant_type_arguments=true -cleanup.remove_trailing_whitespaces=true -cleanup.remove_trailing_whitespaces_all=true -cleanup.remove_trailing_whitespaces_ignore_empty=false -cleanup.remove_unnecessary_array_creation=false -cleanup.remove_unnecessary_casts=true -cleanup.remove_unnecessary_nls_tags=false -cleanup.remove_unused_imports=true -cleanup.remove_unused_local_variables=false -cleanup.remove_unused_method_parameters=false -cleanup.remove_unused_private_fields=true -cleanup.remove_unused_private_members=false -cleanup.remove_unused_private_methods=true -cleanup.remove_unused_private_types=true -cleanup.return_expression=false -cleanup.simplify_lambda_expression_and_method_ref=false -cleanup.single_used_field=false -cleanup.sort_members=false -cleanup.sort_members_all=false -cleanup.standard_comparison=false -cleanup.static_inner_class=false -cleanup.strictly_equal_or_different=false -cleanup.stringbuffer_to_stringbuilder=false -cleanup.stringbuilder=false -cleanup.stringbuilder_for_local_vars=true -cleanup.stringconcat_to_textblock=false -cleanup.substring=false -cleanup.switch=false -cleanup.system_property=false -cleanup.system_property_boolean=false -cleanup.system_property_file_encoding=false -cleanup.system_property_file_separator=false -cleanup.system_property_line_separator=false -cleanup.system_property_path_separator=false -cleanup.ternary_operator=false -cleanup.try_with_resource=false -cleanup.unlooped_while=false -cleanup.unreachable_block=false -cleanup.use_anonymous_class_creation=false -cleanup.use_autoboxing=false -cleanup.use_blocks=false -cleanup.use_blocks_only_for_return_and_throw=false -cleanup.use_directly_map_method=false -cleanup.use_lambda=true -cleanup.use_parentheses_in_expressions=false -cleanup.use_string_is_blank=false -cleanup.use_this_for_non_static_field_access=false -cleanup.use_this_for_non_static_field_access_only_if_necessary=true -cleanup.use_this_for_non_static_method_access=false -cleanup.use_this_for_non_static_method_access_only_if_necessary=true -cleanup.use_unboxing=false -cleanup.use_var=false -cleanup.useless_continue=false -cleanup.useless_return=false -cleanup.valueof_rather_than_instantiation=false -cleanup_profile=_CDT -cleanup_settings_version=2 -eclipse.preferences.version=1 -editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true -formatter_profile=_CDT -formatter_settings_version=14 -internal.default.compliance=user -org.eclipse.jdt.ui.exception.name=e -org.eclipse.jdt.ui.gettersetter.use.is=true -org.eclipse.jdt.ui.ignorelowercasenames=true -org.eclipse.jdt.ui.importorder=java;javax;org;com; -org.eclipse.jdt.ui.keywordthis=false -org.eclipse.jdt.ui.ondemandthreshold=1000 -org.eclipse.jdt.ui.overrideannotation=true -org.eclipse.jdt.ui.staticondemandthreshold=1000 -org.eclipse.jdt.ui.text.custom_code_templates= -sp_cleanup.add_default_serial_version_id=true -sp_cleanup.add_generated_serial_version_id=false -sp_cleanup.add_missing_annotations=true -sp_cleanup.add_missing_deprecated_annotations=true -sp_cleanup.add_missing_methods=false -sp_cleanup.add_missing_nls_tags=false -sp_cleanup.add_missing_override_annotations=true -sp_cleanup.add_missing_override_annotations_interface_methods=true -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_functional_interfaces=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.insert_inferred_type_arguments=false -sp_cleanup.make_local_variable_final=true -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_redundant_modifiers=false -sp_cleanup.remove_redundant_semicolons=true -sp_cleanup.remove_redundant_type_arguments=true -sp_cleanup.remove_trailing_whitespaces=true -sp_cleanup.remove_trailing_whitespaces_all=true -sp_cleanup.remove_trailing_whitespaces_ignore_empty=false -sp_cleanup.remove_unnecessary_casts=true -sp_cleanup.remove_unnecessary_nls_tags=false -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_anonymous_class_creation=false -sp_cleanup.use_blocks=false -sp_cleanup.use_blocks_only_for_return_and_throw=false -sp_cleanup.use_lambda=true -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/terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.pde.api.tools.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.pde.api.tools.prefs deleted file mode 100644 index ec9fbf321d0..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.pde.api.tools.prefs +++ /dev/null @@ -1,184 +0,0 @@ -ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error -ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error -ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error -ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error -ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error -ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error -API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error -API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error -API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error -API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error -API_USE_SCAN_FIELD_SEVERITY=Error -API_USE_SCAN_METHOD_SEVERITY=Error -API_USE_SCAN_TYPE_SEVERITY=Error -CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -CLASS_ELEMENT_TYPE_ADDED_FIELD=Error -CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error -CLASS_ELEMENT_TYPE_ADDED_METHOD=Error -CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error -CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error -CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error -CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error -CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error -CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error -CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error -CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error -CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error -CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error -CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error -CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error -CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error -CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error -CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error -CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error -CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error -CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error -CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error -CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error -CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error -CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error -CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error -ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error -ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error -ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error -ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error -ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error -ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error -ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error -ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error -ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error -ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error -FIELD_ELEMENT_TYPE_ADDED_VALUE=Error -FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error -FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error -FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error -FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error -FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error -FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error -FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error -FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error -FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error -FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error -ILLEGAL_EXTEND=Warning -ILLEGAL_IMPLEMENT=Warning -ILLEGAL_INSTANTIATE=Warning -ILLEGAL_OVERRIDE=Warning -ILLEGAL_REFERENCE=Warning -INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error -INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error -INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error -INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error -INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error -INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error -INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error -INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error -INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error -INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error -INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error -INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error -INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error -INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error -INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error -INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error -INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error -INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error -INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error -INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error -INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error -INVALID_ANNOTATION=Ignore -INVALID_JAVADOC_TAG=Error -INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning -LEAK_EXTEND=Warning -LEAK_FIELD_DECL=Warning -LEAK_IMPLEMENT=Warning -LEAK_METHOD_PARAM=Warning -LEAK_METHOD_RETURN_TYPE=Warning -METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error -METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error -METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error -METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error -METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error -METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error -METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error -METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error -METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error -METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error -METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error -METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error -METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error -METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error -MISSING_EE_DESCRIPTIONS=Warning -TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -UNUSED_PROBLEM_FILTERS=Warning -automatically_removed_unused_problem_filters=false -changed_execution_env=Error -eclipse.preferences.version=1 -incompatible_api_component_version=Error -incompatible_api_component_version_include_major_without_breaking_change=Disabled -incompatible_api_component_version_include_minor_without_api_change=Disabled -incompatible_api_component_version_report_major_without_breaking_change=Warning -incompatible_api_component_version_report_minor_without_api_change=Warning -invalid_since_tag_version=Error -malformed_since_tag=Error -missing_since_tag=Error -report_api_breakage_when_major_version_incremented=Disabled -report_resolution_errors_api_component=Warning diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.pde.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.pde.prefs deleted file mode 100644 index ffaa8e3f1a7..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.local/.settings/org.eclipse.pde.prefs +++ /dev/null @@ -1,36 +0,0 @@ -compilers.f.unresolved-features=1 -compilers.f.unresolved-plugins=1 -compilers.incompatible-environment=1 -compilers.p.build=1 -compilers.p.build.bin.includes=0 -compilers.p.build.encodings=2 -compilers.p.build.java.compiler=2 -compilers.p.build.java.compliance=1 -compilers.p.build.missing.output=2 -compilers.p.build.output.library=1 -compilers.p.build.source.library=1 -compilers.p.build.src.includes=0 -compilers.p.deprecated=1 -compilers.p.discouraged-class=1 -compilers.p.exec-env-too-low=1 -compilers.p.internal=1 -compilers.p.missing-packages=2 -compilers.p.missing-version-export-package=2 -compilers.p.missing-version-import-package=2 -compilers.p.missing-version-require-bundle=2 -compilers.p.no-required-att=0 -compilers.p.no.automatic.module=1 -compilers.p.not-externalized-att=1 -compilers.p.service.component.without.lazyactivation=1 -compilers.p.unknown-attribute=1 -compilers.p.unknown-class=0 -compilers.p.unknown-element=1 -compilers.p.unknown-identifier=0 -compilers.p.unknown-resource=0 -compilers.p.unresolved-ex-points=0 -compilers.p.unresolved-import=0 -compilers.s.create-docs=false -compilers.s.doc-folder=doc -compilers.s.open-tags=1 -compilers.use-project=true -eclipse.preferences.version=1 diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/META-INF/MANIFEST.MF b/terminal/plugins/org.eclipse.tm.terminal.connector.local/META-INF/MANIFEST.MF deleted file mode 100644 index 6e1d7561f2f..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.local/META-INF/MANIFEST.MF +++ /dev/null @@ -1,25 +0,0 @@ -Manifest-Version: 1.0 -Bundle-ManifestVersion: 2 -Bundle-Name: %pluginName -Bundle-SymbolicName: org.eclipse.tm.terminal.connector.local;singleton:=true -Bundle-Version: 4.8.400.qualifier -Bundle-Activator: org.eclipse.tm.terminal.connector.local.activator.UIPlugin -Bundle-Vendor: %providerName -Import-Package: org.eclipse.cdt.utils.pty;mandatory:=native -Require-Bundle: org.eclipse.core.expressions;bundle-version="[3.9.400,4)", - org.eclipse.core.resources;bundle-version="[3.22.200,4)";resolution:=optional, - org.eclipse.core.runtime;bundle-version="[3.33.0,4)", - org.eclipse.core.variables;bundle-version="[3.6.500,4)", - org.eclipse.debug.ui;bundle-version="[3.18.800,4)";resolution:=optional, - org.eclipse.tm.terminal.view.core;bundle-version="[4.10.400,5)";resolution:=optional, - org.eclipse.tm.terminal.view.ui;bundle-version="[4.11.600,5)";resolution:=optional, - org.eclipse.tm.terminal.connector.process;bundle-version="[4.9.200,5)", - org.eclipse.tm.terminal.control;bundle-version="[5.6.0,6.0.0)", - org.eclipse.ui;bundle-version="[3.207.200,4)" -Bundle-RequiredExecutionEnvironment: JavaSE-17 -Bundle-ActivationPolicy: lazy -Bundle-Localization: plugin -Export-Package: org.eclipse.tm.terminal.connector.local.activator;x-internal:=true, - org.eclipse.tm.terminal.connector.local.controls, - org.eclipse.tm.terminal.connector.local.launcher -Automatic-Module-Name: org.eclipse.tm.terminal.connector.local diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/META-INF/p2.inf b/terminal/plugins/org.eclipse.tm.terminal.connector.local/META-INF/p2.inf deleted file mode 100644 index 78786f48831..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.local/META-INF/p2.inf +++ /dev/null @@ -1,99 +0,0 @@ -############################################################################### -# Copyright (c) 2014, 2025 Wind River Systems, Inc. and others. All rights reserved. -# This program and the accompanying materials are made available under the terms -# of the Eclipse Public License 2.0 which accompanies this distribution, and is -# available at https://www.eclipse.org/legal/epl-2.0/ -# -# Contributors: -# Wind River Systems - initial API and implementation -# Tue Ton - support for Linux riscv64 -############################################################################### - -# Most of the dependencies exposed here are actually covered in the feature.xml -# This file ensures that the current bundle has all it needs, even if installed -# without the enclosing org.eclipse.tcf.te.terminals.feature . -# See also https://bugs.eclipse.org/bugs/show_bug.cgi?id=435150 . - -# 1. Make the optional cdt.core dependency non-greedy: Use (or update to proper -# version!) when installed, but do not install automatically since the newer -# org.eclipse.cdt.core.native can satisfy the dependency better. We use this -# trick since CDT 8.3 had no version on export-package yet but we do want -# a version constraint. -requires.0.namespace = org.eclipse.equinox.p2.iu -requires.0.name = org.eclipse.cdt.core -#requires.0.range = [5.6, 6.0) -requires.0.greedy = false -requires.0.optional = true - -#requires.1.namespace = org.eclipse.equinox.p2.iu -#requires.1.name = org.eclipse.cdt.core.native -#requires.1.range = [5.6, 6.0) -#requires.1.greedy = true -#requires.1.optional = true - -# 2. Add the required fragments for local terminal support with proper version. -requires.2.namespace = org.eclipse.equinox.p2.iu -requires.2.name = org.eclipse.cdt.core.aix -#requires.2.range = [5.3, 6.0) -requires.2.filter = (osgi.os=aix) - -requires.3.namespace = org.eclipse.equinox.p2.iu -requires.3.name = org.eclipse.cdt.core.linux -#requires.3.range = [5.2, 6.0) -requires.3.filter = (osgi.os=linux) - -requires.4.namespace = org.eclipse.equinox.p2.iu -requires.4.name = org.eclipse.cdt.core.linux.ppc64 -#requires.4.range = [5.1, 6.0) -requires.4.filter = (&(osgi.os=linux)(osgi.arch=ppc64)) - -#requires.5.namespace = org.eclipse.equinox.p2.iu -#requires.5.name = org.eclipse.cdt.core.linux.x86 -#requires.5.range = [5.2, 6.0) -#requires.5.filter = (&(osgi.os=linux)(osgi.arch=x86)) - -requires.6.namespace = org.eclipse.equinox.p2.iu -requires.6.name = org.eclipse.cdt.core.linux.x86_64 -#requires.6.range = [5.2, 6.0) -requires.6.filter = (&(osgi.os=linux)(osgi.arch=x86_64)) - -requires.7.namespace = org.eclipse.equinox.p2.iu -requires.7.name = org.eclipse.cdt.core.macosx -#requires.7.range = [5.2, 6.0) -requires.7.filter = (osgi.os=macosx) - -requires.8.namespace = org.eclipse.equinox.p2.iu -requires.8.name = org.eclipse.cdt.core.solaris -#requires.8.range = [5.2, 6.0) -requires.8.filter = (&(osgi.os=solaris)(osgi.arch=sparc)) - -requires.9.namespace = org.eclipse.equinox.p2.iu -requires.9.name = org.eclipse.cdt.core.win32 -#requires.9.range = [5.3, 6.0) -requires.9.filter = (osgi.os=win32) - -#requires.10.namespace = org.eclipse.equinox.p2.iu -#requires.10.name = org.eclipse.cdt.core.win32.x86 -#requires.10.range = [5.2, 6.0) -#requires.10.filter = (&(osgi.os=win32)(osgi.arch=x86)) - -requires.11.namespace = org.eclipse.equinox.p2.iu -requires.11.name = org.eclipse.cdt.core.win32.x86_64 -#requires.11.range = [5.2, 6.0) -requires.11.filter = (&(osgi.os=win32)(osgi.arch=x86_64)) - -requires.12.namespace = org.eclipse.equinox.p2.iu -requires.12.name = org.eclipse.cdt.core.linux.aarch64 -#requires.12.range = [5.2, 6.0) -requires.12.filter = (&(osgi.os=linux)(osgi.arch=aarch64)) - -requires.13.namespace = org.eclipse.equinox.p2.iu -requires.13.name = org.eclipse.cdt.core.win32.aarch64 -#requires.13.range = [5.2, 6.0) -requires.13.filter = (&(osgi.os=win32)(osgi.arch=aarch64)) - -requires.14.namespace = org.eclipse.equinox.p2.iu -requires.14.name = org.eclipse.cdt.core.linux.riscv64 -#requires.14.range = [5.2, 6.0) -requires.14.filter = (&(osgi.os=linux)(osgi.arch=riscv64)) - diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/build.properties b/terminal/plugins/org.eclipse.tm.terminal.connector.local/build.properties deleted file mode 100644 index 57cf32c46f8..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.local/build.properties +++ /dev/null @@ -1,20 +0,0 @@ -############################################################################### -# Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved. -# This program and the accompanying materials are made available under the terms -# of the Eclipse Public License 2.0 which accompanies this distribution, and is -# available at https://www.eclipse.org/legal/epl-2.0/ -# -# SPDX-License-Identifier: EPL-2.0 -# -# Contributors: -# Wind River Systems - initial API and implementation -############################################################################### -source.. = src/ -output.. = bin/ -bin.includes = META-INF/,\ - .,\ - plugin.xml,\ - plugin.properties,\ - about.html,\ - icons/ -src.includes = about.html diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/icons/eview16/terminal_view.gif b/terminal/plugins/org.eclipse.tm.terminal.connector.local/icons/eview16/terminal_view.gif deleted file mode 100644 index bbb6a9e153e..00000000000 Binary files a/terminal/plugins/org.eclipse.tm.terminal.connector.local/icons/eview16/terminal_view.gif and /dev/null differ diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/plugin.properties b/terminal/plugins/org.eclipse.tm.terminal.connector.local/plugin.properties deleted file mode 100644 index b12990b4cf0..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.local/plugin.properties +++ /dev/null @@ -1,27 +0,0 @@ -################################################################################## -# Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. -# This program and the accompanying materials are made available under the terms -# of the Eclipse Public License 2.0 which accompanies this distribution, and is -# available at https://www.eclipse.org/legal/epl-2.0/ -# -# SPDX-License-Identifier: EPL-2.0 -# -# Contributors: -# Wind River Systems - initial API and implementation -################################################################################## - -pluginName = Terminal Local Connector -providerName = Eclipse CDT - -# ----- Commands and Menu contributions ----- -LocalLauncherDelegate.label=Local Terminal - -command.launch.name=Open Local Terminal on Selection - -menu.showIn.localterminal.label = Terminal - -TerminalConnector.local=Local - -# ----- Preference Pages ----- - -preference.page.name=Local Terminal diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/plugin.xml b/terminal/plugins/org.eclipse.tm.terminal.connector.local/plugin.xml deleted file mode 100644 index a6c9f688610..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.local/plugin.xml +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/activator/UIPlugin.java b/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/activator/UIPlugin.java deleted file mode 100644 index 967c0652186..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/activator/UIPlugin.java +++ /dev/null @@ -1,120 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2012 - 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.local.activator; - -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.resource.ImageRegistry; -import org.eclipse.swt.graphics.Image; -import org.eclipse.tm.terminal.view.core.preferences.ScopedEclipsePreferences; -import org.eclipse.tm.terminal.view.core.tracing.TraceHandler; -import org.eclipse.ui.plugin.AbstractUIPlugin; -import org.osgi.framework.BundleContext; - -/** - * The activator class controls the plug-in life cycle - */ -public class UIPlugin extends AbstractUIPlugin { - // The shared instance - private static UIPlugin plugin; - // The scoped preferences instance - private static volatile ScopedEclipsePreferences scopedPreferences; - // The trace handler instance - private static volatile TraceHandler traceHandler; - - /** - * The constructor - */ - public UIPlugin() { - } - - /** - * Returns the shared instance - * - * @return the shared instance - */ - public static UIPlugin getDefault() { - return plugin; - } - - /** - * Convenience method which returns the unique identifier of this plug-in. - */ - public static String getUniqueIdentifier() { - if (getDefault() != null && getDefault().getBundle() != null) { - return getDefault().getBundle().getSymbolicName(); - } - return "org.eclipse.tm.terminal.connector.local"; //$NON-NLS-1$ - } - - /** - * Return the scoped preferences for this plug-in. - */ - public static ScopedEclipsePreferences getScopedPreferences() { - if (scopedPreferences == null) { - scopedPreferences = new ScopedEclipsePreferences(getUniqueIdentifier()); - } - return scopedPreferences; - } - - /** - * Returns the bundles trace handler. - * - * @return The bundles trace handler. - */ - public static TraceHandler getTraceHandler() { - if (traceHandler == null) { - traceHandler = new TraceHandler(getUniqueIdentifier()); - } - return traceHandler; - } - - @Override - public void start(BundleContext context) throws Exception { - super.start(context); - plugin = this; - } - - @Override - public void stop(BundleContext context) throws Exception { - plugin = null; - scopedPreferences = null; - traceHandler = null; - super.stop(context); - } - - @Override - protected void initializeImageRegistry(ImageRegistry registry) { - super.initializeImageRegistry(registry); - } - - /** - * Loads the image registered under the specified key from the image - * registry and returns the Image object instance. - * - * @param key The key the image is registered with. - * @return The Image object instance or null. - */ - public static Image getImage(String key) { - return getDefault().getImageRegistry().get(key); - } - - /** - * Loads the image registered under the specified key from the image - * registry and returns the ImageDescriptor object instance. - * - * @param key The key the image is registered with. - * @return The ImageDescriptor object instance or null. - */ - public static ImageDescriptor getImageDescriptor(String key) { - return getDefault().getImageRegistry().getDescriptor(key); - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/controls/LocalWizardConfigurationPanel.java b/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/controls/LocalWizardConfigurationPanel.java deleted file mode 100644 index fd7d49911aa..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/controls/LocalWizardConfigurationPanel.java +++ /dev/null @@ -1,187 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.local.controls; - -import java.util.Map; - -import org.eclipse.core.runtime.IAdaptable; -import org.eclipse.core.runtime.Platform; -import org.eclipse.jface.dialogs.IDialogSettings; -import org.eclipse.jface.fieldassist.ControlDecoration; -import org.eclipse.jface.fieldassist.FieldDecorationRegistry; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Label; -import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants; -import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer; -import org.eclipse.tm.terminal.view.ui.panels.AbstractExtendedConfigurationPanel; -import org.eclipse.ui.ISelectionService; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.WorkbenchEncoding; -import org.osgi.framework.Bundle; - -/** - * Serial wizard configuration panel implementation. - */ -public class LocalWizardConfigurationPanel extends AbstractExtendedConfigurationPanel { - - private Object resource; - - /** - * Constructor. - * - * @param container The configuration panel container or null. - */ - public LocalWizardConfigurationPanel(IConfigurationPanelContainer container) { - super(container); - } - - @Override - public void setupPanel(Composite parent) { - Composite panel = new Composite(parent, SWT.NONE); - panel.setLayout(new GridLayout()); - panel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); - - // Create the encoding selection combo - createEncodingUI(panel, false); - - // Set the default encoding: - // Default UTF-8 on Mac or Windows for Local, Preferences:Platform encoding otherwise - if (Platform.OS_MACOSX.equals(Platform.getOS()) || Platform.OS_WIN32.equals(Platform.getOS())) { - setEncoding("UTF-8"); //$NON-NLS-1$ - } else { - String encoding = WorkbenchEncoding.getWorkbenchDefaultEncoding(); - if (encoding != null && !"".equals(encoding)) //$NON-NLS-1$ - setEncoding(encoding); - } - - // Fill the rest of the panel with a label to be able to - // set a height and width hint for the dialog - Label label = new Label(panel, SWT.HORIZONTAL); - GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, true); - layoutData.widthHint = 300; - layoutData.heightHint = 80; - label.setLayoutData(layoutData); - - Bundle bundle = Platform.getBundle("org.eclipse.core.resources"); //$NON-NLS-1$ - if (bundle != null && bundle.getState() != Bundle.UNINSTALLED && bundle.getState() != Bundle.STOPPING) { - resource = getSelectionResource(); - } - - setControl(panel); - } - - @Override - protected void decorateEncoding(ControlDecoration encodingComboDecorator, String encoding) { - if ((Platform.OS_MACOSX.equals(Platform.getOS()) || Platform.OS_WIN32.equals(Platform.getOS())) - && !"UTF-8".equals(encoding)) { //$NON-NLS-1$ - Image decorationImage = FieldDecorationRegistry.getDefault() - .getFieldDecoration(FieldDecorationRegistry.DEC_WARNING).getImage(); - encodingComboDecorator.setImage(decorationImage); - encodingComboDecorator.setDescriptionText(Messages.LocalWizardConfigurationPanel_encoding_does_not_match); - encodingComboDecorator.show(); - } else { - super.decorateEncoding(encodingComboDecorator, encoding); - } - } - - @Override - public void setupData(Map data) { - if (data == null) - return; - - String value = (String) data.get(ITerminalsConnectorConstants.PROP_ENCODING); - if (value != null) - setEncoding(value); - } - - @Override - public void extractData(Map data) { - // set the terminal connector id for local terminal - data.put(ITerminalsConnectorConstants.PROP_TERMINAL_CONNECTOR_ID, - "org.eclipse.tm.terminal.connector.local.LocalConnector"); //$NON-NLS-1$ - - // Store the encoding - data.put(ITerminalsConnectorConstants.PROP_ENCODING, getEncoding()); - - Bundle bundle = Platform.getBundle("org.eclipse.core.resources"); //$NON-NLS-1$ - if (bundle != null && bundle.getState() != Bundle.UNINSTALLED && bundle.getState() != Bundle.STOPPING) { - // if we have a IResource selection use the location for working directory - if (resource instanceof org.eclipse.core.resources.IResource) { - String dir = ((org.eclipse.core.resources.IResource) resource).getProject().getLocation().toString(); - data.put(ITerminalsConnectorConstants.PROP_PROCESS_WORKING_DIR, dir); - } - } - } - - @Override - protected void fillSettingsForHost(String host) { - } - - @Override - protected void saveSettingsForHost(boolean add) { - } - - @Override - public boolean isValid() { - return true; - } - - @Override - public void doSaveWidgetValues(IDialogSettings settings, String idPrefix) { - // Save the encodings widget values - doSaveEncodingsWidgetValues(settings, idPrefix); - } - - @Override - public void doRestoreWidgetValues(IDialogSettings settings, String idPrefix) { - // Restore the encodings widget values - doRestoreEncodingsWidgetValues(settings, idPrefix); - } - - @Override - protected String getHostFromSettings() { - return null; - } - - @Override - public boolean isWithHostList() { - return false; - } - - /** - * Returns the IResource from the current selection - * - * @return the IResource, or null. - */ - private org.eclipse.core.resources.IResource getSelectionResource() { - ISelectionService selectionService = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService(); - ISelection selection = selectionService != null ? selectionService.getSelection() : StructuredSelection.EMPTY; - - if (selection instanceof IStructuredSelection && !selection.isEmpty()) { - Object element = ((IStructuredSelection) selection).getFirstElement(); - if (element instanceof org.eclipse.core.resources.IResource) { - return ((org.eclipse.core.resources.IResource) element); - } - if (element instanceof IAdaptable) { - return ((IAdaptable) element).getAdapter(org.eclipse.core.resources.IResource.class); - } - } - return null; - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/controls/Messages.java b/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/controls/Messages.java deleted file mode 100644 index e579af85dd0..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/controls/Messages.java +++ /dev/null @@ -1,27 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2021 Kichwa Coders Canada Inc. and others. - * - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.local.controls; - -import org.eclipse.osgi.util.NLS; - -/** - * @noreference This class is not intended to be referenced by clients. - */ -public class Messages extends NLS { - private static final String BUNDLE_NAME = "org.eclipse.tm.terminal.connector.local.controls.Messages"; //$NON-NLS-1$ - public static String LocalWizardConfigurationPanel_encoding_does_not_match; - static { - // initialize resource bundle - NLS.initializeMessages(BUNDLE_NAME, Messages.class); - } - - private Messages() { - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/controls/Messages.properties b/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/controls/Messages.properties deleted file mode 100644 index 3b02208cad2..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/controls/Messages.properties +++ /dev/null @@ -1,10 +0,0 @@ -############################################################################### -# Copyright (c) 2021 Kichwa Coders Canada Inc. and others. -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Eclipse Public License 2.0 -# which accompanies this distribution, and is available at -# https://www.eclipse.org/legal/epl-2.0/ -# -# SPDX-License-Identifier: EPL-2.0 -############################################################################### -LocalWizardConfigurationPanel_encoding_does_not_match=The selected encoding does not match the terminal being connected to. Recommended encoding is UTF-8. diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/launcher/LocalLauncherDelegate.java b/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/launcher/LocalLauncherDelegate.java deleted file mode 100644 index a5c775b06b0..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/launcher/LocalLauncherDelegate.java +++ /dev/null @@ -1,426 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - * Dirk Fauth - Bug 460496 - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.local.launcher; - -import java.io.File; -import java.net.InetAddress; -import java.net.URI; -import java.net.URISyntaxException; -import java.net.UnknownHostException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import org.eclipse.cdt.utils.pty.PTY; -import org.eclipse.core.runtime.Assert; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IAdaptable; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.Path; -import org.eclipse.core.runtime.Platform; -import org.eclipse.core.runtime.URIUtil; -import org.eclipse.core.variables.IStringVariableManager; -import org.eclipse.core.variables.VariablesPlugin; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore; -import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector; -import org.eclipse.tm.internal.terminal.provisional.api.TerminalConnectorExtension; -import org.eclipse.tm.terminal.connector.local.activator.UIPlugin; -import org.eclipse.tm.terminal.connector.local.controls.LocalWizardConfigurationPanel; -import org.eclipse.tm.terminal.connector.process.ProcessSettings; -import org.eclipse.tm.terminal.view.core.TerminalServiceFactory; -import org.eclipse.tm.terminal.view.core.interfaces.ITerminalService; -import org.eclipse.tm.terminal.view.core.interfaces.ITerminalServiceOutputStreamMonitorListener; -import org.eclipse.tm.terminal.view.core.interfaces.constants.ILineSeparatorConstants; -import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants; -import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanel; -import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer; -import org.eclipse.tm.terminal.view.ui.interfaces.IMementoHandler; -import org.eclipse.tm.terminal.view.ui.interfaces.IPreferenceKeys; -import org.eclipse.tm.terminal.view.ui.internal.SettingsStore; -import org.eclipse.tm.terminal.view.ui.launcher.AbstractLauncherDelegate; -import org.eclipse.ui.ISelectionService; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.WorkbenchEncoding; -import org.osgi.framework.Bundle; - -/** - * Serial launcher delegate implementation. - */ -@SuppressWarnings("restriction") -public class LocalLauncherDelegate extends AbstractLauncherDelegate { - - private final IMementoHandler mementoHandler = new LocalMementoHandler(); - - @Override - public boolean needsUserConfiguration() { - return false; - } - - @Override - public IConfigurationPanel getPanel(IConfigurationPanelContainer container) { - return new LocalWizardConfigurationPanel(container); - } - - @Override - public void execute(Map properties, ITerminalService.Done done) { - Assert.isNotNull(properties); - - // Set the terminal tab title - String terminalTitle = getTerminalTitle(properties); - if (terminalTitle != null) { - properties.put(ITerminalsConnectorConstants.PROP_TITLE, terminalTitle); - } - - // If not configured, set the default encodings for the local terminal - if (!properties.containsKey(ITerminalsConnectorConstants.PROP_ENCODING)) { - String encoding = null; - // Set the default encoding: - // Default UTF-8 on Mac or Windows for Local, Preferences:Platform encoding otherwise - if (Platform.OS_MACOSX.equals(Platform.getOS()) || Platform.OS_WIN32.equals(Platform.getOS())) { - encoding = "UTF-8"; //$NON-NLS-1$ - } else { - encoding = WorkbenchEncoding.getWorkbenchDefaultEncoding(); - } - if (encoding != null && !"".equals(encoding)) //$NON-NLS-1$ - properties.put(ITerminalsConnectorConstants.PROP_ENCODING, encoding); - } - - // For local terminals, force a new terminal tab each time it is launched, - // if not set otherwise from outside - if (!properties.containsKey(ITerminalsConnectorConstants.PROP_FORCE_NEW)) { - properties.put(ITerminalsConnectorConstants.PROP_FORCE_NEW, Boolean.TRUE); - } - - // Initialize the local terminal working directory. - if (!properties.containsKey(ITerminalsConnectorConstants.PROP_PROCESS_WORKING_DIR)) { - // By default, start the local terminal in the users home directory - String initialCwd = org.eclipse.tm.terminal.view.ui.activator.UIPlugin.getScopedPreferences() - .getString(IPreferenceKeys.PREF_LOCAL_TERMINAL_INITIAL_CWD); - String cwd = null; - if (initialCwd == null || IPreferenceKeys.PREF_INITIAL_CWD_USER_HOME.equals(initialCwd) - || "".equals(initialCwd.trim())) { //$NON-NLS-1$ - cwd = System.getProperty("user.home"); //$NON-NLS-1$ - } else if (IPreferenceKeys.PREF_INITIAL_CWD_ECLIPSE_HOME.equals(initialCwd)) { - String eclipseHomeLocation = System.getProperty("eclipse.home.location"); //$NON-NLS-1$ - if (eclipseHomeLocation != null) { - try { - URI uri = URIUtil.fromString(eclipseHomeLocation); - File f = URIUtil.toFile(uri); - cwd = f.getAbsolutePath(); - } catch (URISyntaxException ex) { - /* ignored on purpose */ } - } - } else if (IPreferenceKeys.PREF_INITIAL_CWD_ECLIPSE_WS.equals(initialCwd)) { - Bundle bundle = Platform.getBundle("org.eclipse.core.resources"); //$NON-NLS-1$ - if (bundle != null && bundle.getState() != Bundle.UNINSTALLED && bundle.getState() != Bundle.STOPPING) { - if (org.eclipse.core.resources.ResourcesPlugin.getWorkspace() != null - && org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot() != null - && org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot() - .getLocation() != null) { - cwd = org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot().getLocation() - .toOSString(); - } - } - } else { - try { - // Resolve possible dynamic variables - IStringVariableManager vm = VariablesPlugin.getDefault().getStringVariableManager(); - String resolved = vm.performStringSubstitution(initialCwd); - - IPath p = new Path(resolved); - if (p.toFile().canRead() && p.toFile().isDirectory()) { - cwd = p.toOSString(); - } - } catch (CoreException ex) { - if (Platform.inDebugMode()) { - UIPlugin.getDefault().getLog().log(ex.getStatus()); - } - } - } - - if (cwd != null && !"".equals(cwd)) { //$NON-NLS-1$ - properties.put(ITerminalsConnectorConstants.PROP_PROCESS_WORKING_DIR, cwd); - } - } - - // If the current selection resolved to an folder, default the working directory - // to that folder and update the terminal title - ISelectionService service = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService(); - if ((service != null && service.getSelection() != null) - || properties.containsKey(ITerminalsConnectorConstants.PROP_SELECTION)) { - ISelection selection = (ISelection) properties.get(ITerminalsConnectorConstants.PROP_SELECTION); - if (selection == null) - selection = service.getSelection(); - if (selection instanceof IStructuredSelection && !selection.isEmpty()) { - String dir = null; - Iterator iter = ((IStructuredSelection) selection).iterator(); - while (iter.hasNext()) { - Object element = iter.next(); - - Bundle bundle = Platform.getBundle("org.eclipse.core.resources"); //$NON-NLS-1$ - if (bundle != null && bundle.getState() != Bundle.UNINSTALLED - && bundle.getState() != Bundle.STOPPING) { - // If the element is not an IResource, try to adapt to IResource - if (!(element instanceof org.eclipse.core.resources.IResource)) { - Object adapted = element instanceof IAdaptable - ? ((IAdaptable) element).getAdapter(org.eclipse.core.resources.IResource.class) - : null; - if (adapted == null) - adapted = Platform.getAdapterManager().getAdapter(element, - org.eclipse.core.resources.IResource.class); - if (adapted != null) - element = adapted; - } - - if (element instanceof org.eclipse.core.resources.IResource - && ((org.eclipse.core.resources.IResource) element).exists()) { - IPath location = ((org.eclipse.core.resources.IResource) element).getLocation(); - if (location == null) - continue; - if (location.toFile().isFile()) - location = location.removeLastSegments(1); - if (location.toFile().isDirectory() && location.toFile().canRead()) { - dir = location.toFile().getAbsolutePath(); - break; - } - } - - if (element instanceof IPath || element instanceof File) { - File f = element instanceof IPath ? ((IPath) element).toFile() : (File) element; - if (f.isDirectory() && f.canRead()) { - dir = f.getAbsolutePath(); - break; - } - } - } - } - if (dir != null) { - properties.put(ITerminalsConnectorConstants.PROP_PROCESS_WORKING_DIR, dir); - - String basename = new Path(dir).lastSegment(); - properties.put(ITerminalsConnectorConstants.PROP_TITLE, basename + " (" + terminalTitle + ")"); //$NON-NLS-1$ //$NON-NLS-2$ - } - } - } - - // Get the terminal service - ITerminalService terminal = TerminalServiceFactory.getService(); - // If not available, we cannot fulfill this request - if (terminal != null) { - terminal.openConsole(properties, done); - } - } - - /** - * Returns the terminal title string. - *

- * The default implementation constructs a title like "Serial <port> (Start time) ". - * - * @return The terminal title string or null. - */ - private String getTerminalTitle(Map properties) { - // Try to see if the user set a title explicitly via the properties map. - String title = getDefaultTerminalTitle(properties); - if (title != null) - return title; - - try { - String hostname = InetAddress.getLocalHost().getHostName(); - if (hostname != null && !"".equals(hostname.trim())) { //$NON-NLS-1$ - return hostname; - } - } catch (UnknownHostException e) { - /* ignored on purpose */ } - - return "Local"; //$NON-NLS-1$ - } - - @Override - public T getAdapter(Class adapter) { - if (IMementoHandler.class.equals(adapter)) { - return adapter.cast(mementoHandler); - } - return super.getAdapter(adapter); - } - - /** - * Returns the default shell to launch. Looks at the environment - * variable "SHELL" first before assuming some default default values. - * - * @return The default shell to launch. - */ - private final File defaultShell() { - String shell = null; - if (Platform.OS_WIN32.equals(Platform.getOS())) { - if (System.getenv("ComSpec") != null && !"".equals(System.getenv("ComSpec").trim())) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - shell = System.getenv("ComSpec").trim(); //$NON-NLS-1$ - } else { - shell = "cmd.exe"; //$NON-NLS-1$ - } - } - if (shell == null) { - shell = org.eclipse.tm.terminal.view.ui.activator.UIPlugin.getScopedPreferences() - .getString(IPreferenceKeys.PREF_LOCAL_TERMINAL_DEFAULT_SHELL_UNIX); - if (shell == null || "".equals(shell)) { //$NON-NLS-1$ - if (System.getenv("SHELL") != null && !"".equals(System.getenv("SHELL").trim())) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - shell = System.getenv("SHELL").trim(); //$NON-NLS-1$ - } else { - shell = "/bin/sh"; //$NON-NLS-1$ - } - } - } - - return new File(shell); - } - - @Override - public ITerminalConnector createTerminalConnector(Map properties) { - Assert.isNotNull(properties); - - // Check for the terminal connector id - String connectorId = (String) properties.get(ITerminalsConnectorConstants.PROP_TERMINAL_CONNECTOR_ID); - if (connectorId == null) - connectorId = "org.eclipse.tm.terminal.connector.local.LocalConnector"; //$NON-NLS-1$ - - // Extract the process properties using defaults - String image; - if (!properties.containsKey(ITerminalsConnectorConstants.PROP_PROCESS_PATH) - || properties.get(ITerminalsConnectorConstants.PROP_PROCESS_PATH) == null) { - File defaultShell = defaultShell(); - image = defaultShell.isAbsolute() ? defaultShell.getAbsolutePath() : defaultShell.getPath(); - } else { - image = (String) properties.get(ITerminalsConnectorConstants.PROP_PROCESS_PATH); - } - - String arguments = (String) properties.get(ITerminalsConnectorConstants.PROP_PROCESS_ARGS); - if (arguments == null && !Platform.OS_WIN32.equals(Platform.getOS())) { - arguments = org.eclipse.tm.terminal.view.ui.activator.UIPlugin.getScopedPreferences() - .getString(IPreferenceKeys.PREF_LOCAL_TERMINAL_DEFAULT_SHELL_UNIX_ARGS); - } - - // Determine if a PTY will be used - boolean isUsingPTY = (properties.get(ITerminalsConnectorConstants.PROP_PROCESS_OBJ) == null - && PTY.isSupported(PTY.Mode.TERMINAL)) - || properties.get(ITerminalsConnectorConstants.PROP_PTY_OBJ) instanceof PTY; - - boolean localEcho = false; - if (!properties.containsKey(ITerminalsConnectorConstants.PROP_LOCAL_ECHO) - || !(properties.get(ITerminalsConnectorConstants.PROP_LOCAL_ECHO) instanceof Boolean)) { - // On Windows, turn on local echo by default if no PTY is used (bug 433645) - if (Platform.OS_WIN32.equals(Platform.getOS())) { - localEcho = !isUsingPTY; - } - } else { - localEcho = ((Boolean) properties.get(ITerminalsConnectorConstants.PROP_LOCAL_ECHO)).booleanValue(); - } - - String lineSeparator = null; - if (!properties.containsKey(ITerminalsConnectorConstants.PROP_LINE_SEPARATOR) - || !(properties.get(ITerminalsConnectorConstants.PROP_LINE_SEPARATOR) instanceof String)) { - // No line separator will be set if a PTY is used - if (!isUsingPTY) { - lineSeparator = Platform.OS_WIN32.equals(Platform.getOS()) ? ILineSeparatorConstants.LINE_SEPARATOR_CRLF - : ILineSeparatorConstants.LINE_SEPARATOR_LF; - } - } else { - lineSeparator = (String) properties.get(ITerminalsConnectorConstants.PROP_LINE_SEPARATOR); - } - - Process process = (Process) properties.get(ITerminalsConnectorConstants.PROP_PROCESS_OBJ); - PTY pty = (PTY) properties.get(ITerminalsConnectorConstants.PROP_PTY_OBJ); - ITerminalServiceOutputStreamMonitorListener[] stdoutListeners = (ITerminalServiceOutputStreamMonitorListener[]) properties - .get(ITerminalsConnectorConstants.PROP_STDOUT_LISTENERS); - ITerminalServiceOutputStreamMonitorListener[] stderrListeners = (ITerminalServiceOutputStreamMonitorListener[]) properties - .get(ITerminalsConnectorConstants.PROP_STDERR_LISTENERS); - String workingDir = (String) properties.get(ITerminalsConnectorConstants.PROP_PROCESS_WORKING_DIR); - - String[] envp = null; - if (properties.containsKey(ITerminalsConnectorConstants.PROP_PROCESS_ENVIRONMENT) - && properties.get(ITerminalsConnectorConstants.PROP_PROCESS_ENVIRONMENT) != null - && properties.get(ITerminalsConnectorConstants.PROP_PROCESS_ENVIRONMENT) instanceof String[]) { - envp = (String[]) properties.get(ITerminalsConnectorConstants.PROP_PROCESS_ENVIRONMENT); - } - - // Set the ECLIPSE_HOME and ECLIPSE_WORKSPACE environment variables - List envpList = new ArrayList<>(); - if (envp != null) - envpList.addAll(Arrays.asList(envp)); - - // ECLIPSE_HOME - String eclipseHomeLocation = System.getProperty("eclipse.home.location"); //$NON-NLS-1$ - if (eclipseHomeLocation != null) { - try { - URI uri = URIUtil.fromString(eclipseHomeLocation); - File f = URIUtil.toFile(uri); - envpList.add("ECLIPSE_HOME=" + f.getAbsolutePath()); //$NON-NLS-1$ - } catch (URISyntaxException e) { - /* ignored on purpose */ } - } - - // ECLIPSE_WORKSPACE - Bundle bundle = Platform.getBundle("org.eclipse.core.resources"); //$NON-NLS-1$ - if (bundle != null && bundle.getState() != Bundle.UNINSTALLED && bundle.getState() != Bundle.STOPPING) { - if (org.eclipse.core.resources.ResourcesPlugin.getWorkspace() != null - && org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot() != null - && org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot().getLocation() != null) { - envpList.add("ECLIPSE_WORKSPACE=" + org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot() //$NON-NLS-1$ - .getLocation().toOSString()); - } - } - - // Convert back into a string array - envp = envpList.toArray(new String[envpList.size()]); - - Assert.isTrue(image != null || process != null); - - // Construct the terminal settings store - ISettingsStore store = new SettingsStore(); - - // Construct the process settings - ProcessSettings processSettings = new ProcessSettings(); - processSettings.setImage(image); - processSettings.setArguments(arguments); - processSettings.setProcess(process); - processSettings.setPTY(pty); - processSettings.setLocalEcho(localEcho); - processSettings.setLineSeparator(lineSeparator); - processSettings.setStdOutListeners(stdoutListeners); - processSettings.setStdErrListeners(stderrListeners); - processSettings.setWorkingDir(workingDir); - processSettings.setEnvironment(envp); - - if (properties.containsKey(ITerminalsConnectorConstants.PROP_PROCESS_MERGE_ENVIRONMENT)) { - Object value = properties.get(ITerminalsConnectorConstants.PROP_PROCESS_MERGE_ENVIRONMENT); - processSettings - .setMergeWithNativeEnvironment(value instanceof Boolean ? ((Boolean) value).booleanValue() : false); - } - - // And save the settings to the store - processSettings.save(store); - - // Construct the terminal connector instance - ITerminalConnector connector = TerminalConnectorExtension.makeTerminalConnector(connectorId); - if (connector != null) { - // Apply default settings - connector.setDefaultSettings(); - // And load the real settings - connector.load(store); - } - - return connector; - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/launcher/LocalLauncherHandler.java b/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/launcher/LocalLauncherHandler.java deleted file mode 100644 index 18a1c9acb70..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/launcher/LocalLauncherHandler.java +++ /dev/null @@ -1,79 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2014, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.local.launcher; - -import java.util.HashMap; -import java.util.Map; - -import org.eclipse.core.commands.AbstractHandler; -import org.eclipse.core.commands.ExecutionEvent; -import org.eclipse.core.commands.ExecutionException; -import org.eclipse.core.runtime.IPath; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants; -import org.eclipse.tm.terminal.view.ui.interfaces.ILauncherDelegate; -import org.eclipse.tm.terminal.view.ui.launcher.LauncherDelegateManager; -import org.eclipse.ui.IEditorInput; -import org.eclipse.ui.IPathEditorInput; -import org.eclipse.ui.handlers.HandlerUtil; - -/** - * Local terminal launcher handler implementation. - */ -public class LocalLauncherHandler extends AbstractHandler { - - @Override - public Object execute(ExecutionEvent event) throws ExecutionException { - // Get the current selection - ISelection selection = HandlerUtil.getCurrentSelection(event); - - // If the selection is not a structured selection, check if there is an active - // editor and get the path from the editor input - if (!(selection instanceof IStructuredSelection)) { - IEditorInput input = HandlerUtil.getActiveEditorInput(event); - if (input instanceof IPathEditorInput) { - IPath path = ((IPathEditorInput) input).getPath(); - if (path != null) { - if (path.toFile().isFile()) - path = path.removeLastSegments(1); - if (path.toFile().isDirectory() && path.toFile().canRead()) - selection = new StructuredSelection(path); - } - } - } - - // Get all applicable launcher delegates for the current selection - ILauncherDelegate[] delegates = LauncherDelegateManager.getInstance().getApplicableLauncherDelegates(selection); - // Find the local terminal launcher delegate - ILauncherDelegate delegate = null; - for (ILauncherDelegate candidate : delegates) { - if ("org.eclipse.tm.terminal.connector.local.launcher.local".equals(candidate.getId())) { //$NON-NLS-1$ - delegate = candidate; - break; - } - } - - // Launch the local terminal - if (delegate != null) { - Map properties = new HashMap<>(); - properties.put(ITerminalsConnectorConstants.PROP_DELEGATE_ID, delegate.getId()); - properties.put(ITerminalsConnectorConstants.PROP_SELECTION, selection); - - delegate.execute(properties, null); - } - - return null; - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/launcher/LocalMementoHandler.java b/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/launcher/LocalMementoHandler.java deleted file mode 100644 index 393db3ff9aa..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.local/src/org/eclipse/tm/terminal/connector/local/launcher/LocalMementoHandler.java +++ /dev/null @@ -1,64 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.local.launcher; - -import java.util.Map; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants; -import org.eclipse.tm.terminal.view.ui.interfaces.IMementoHandler; -import org.eclipse.ui.IMemento; - -/** - * Local terminal connection memento handler implementation. - */ -public class LocalMementoHandler implements IMementoHandler { - - @Override - public void saveState(IMemento memento, Map properties) { - Assert.isNotNull(memento); - Assert.isNotNull(properties); - - if ((String) properties.get(ITerminalsConnectorConstants.PROP_PROCESS_PATH) != null) { - memento.putString(ITerminalsConnectorConstants.PROP_PROCESS_PATH, - (String) properties.get(ITerminalsConnectorConstants.PROP_PROCESS_PATH)); - } - if ((String) properties.get(ITerminalsConnectorConstants.PROP_PROCESS_ARGS) != null) { - memento.putString(ITerminalsConnectorConstants.PROP_PROCESS_ARGS, - (String) properties.get(ITerminalsConnectorConstants.PROP_PROCESS_ARGS)); - } - if ((Boolean) properties.get(ITerminalsConnectorConstants.PROP_TRANSLATE_BACKSLASHES_ON_PASTE) != null) { - memento.putBoolean(ITerminalsConnectorConstants.PROP_TRANSLATE_BACKSLASHES_ON_PASTE, - (Boolean) properties.get(ITerminalsConnectorConstants.PROP_TRANSLATE_BACKSLASHES_ON_PASTE)); - } - } - - @Override - public void restoreState(IMemento memento, Map properties) { - Assert.isNotNull(memento); - Assert.isNotNull(properties); - - if (memento.getString(ITerminalsConnectorConstants.PROP_PROCESS_PATH) != null) { - properties.put(ITerminalsConnectorConstants.PROP_PROCESS_PATH, - memento.getString(ITerminalsConnectorConstants.PROP_PROCESS_PATH)); - } - if (memento.getString(ITerminalsConnectorConstants.PROP_PROCESS_ARGS) != null) { - properties.put(ITerminalsConnectorConstants.PROP_PROCESS_ARGS, - memento.getString(ITerminalsConnectorConstants.PROP_PROCESS_ARGS)); - } - if (memento.getBoolean(ITerminalsConnectorConstants.PROP_TRANSLATE_BACKSLASHES_ON_PASTE) != null) { - properties.put(ITerminalsConnectorConstants.PROP_TRANSLATE_BACKSLASHES_ON_PASTE, - memento.getBoolean(ITerminalsConnectorConstants.PROP_TRANSLATE_BACKSLASHES_ON_PASTE)); - } - - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/.classpath b/terminal/plugins/org.eclipse.tm.terminal.connector.process/.classpath deleted file mode 100644 index 81fe078c20c..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.process/.classpath +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/.gitignore b/terminal/plugins/org.eclipse.tm.terminal.connector.process/.gitignore deleted file mode 100644 index ae3c1726048..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.process/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/bin/ diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/.options b/terminal/plugins/org.eclipse.tm.terminal.connector.process/.options deleted file mode 100644 index 7e3d5dfe7aa..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.process/.options +++ /dev/null @@ -1 +0,0 @@ -org.eclipse.tm.terminal.connector.process/debugmode = 0 diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/.project b/terminal/plugins/org.eclipse.tm.terminal.connector.process/.project deleted file mode 100644 index 92d9bc9fd90..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.process/.project +++ /dev/null @@ -1,45 +0,0 @@ - - - org.eclipse.tm.terminal.connector.process - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.pde.ManifestBuilder - - - - - org.eclipse.pde.SchemaBuilder - - - - - org.eclipse.pde.api.tools.apiAnalysisBuilder - - - - - - org.eclipse.pde.PluginNature - org.eclipse.jdt.core.javanature - org.eclipse.pde.api.tools.apiAnalysisNature - - - - 1329502082911 - - 10 - - org.eclipse.ui.ide.multiFilter - 1.0-name-matches-false-false-target - - - - diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.core.resources.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index 99f26c0203a..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -encoding/=UTF-8 diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.jdt.core.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 9df862f8d49..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,486 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.builder.cleanOutputFolder=clean -org.eclipse.jdt.core.builder.duplicateResourceTask=warning -org.eclipse.jdt.core.builder.invalidClasspath=abort -org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore -org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend -org.eclipse.jdt.core.circularClasspath=error -org.eclipse.jdt.core.classpath.exclusionPatterns=enabled -org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error -org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled -org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error -org.eclipse.jdt.core.codeComplete.argumentPrefixes= -org.eclipse.jdt.core.codeComplete.argumentSuffixes= -org.eclipse.jdt.core.codeComplete.fieldPrefixes= -org.eclipse.jdt.core.codeComplete.fieldSuffixes= -org.eclipse.jdt.core.codeComplete.localPrefixes= -org.eclipse.jdt.core.codeComplete.localSuffixes= -org.eclipse.jdt.core.codeComplete.staticFieldPrefixes= -org.eclipse.jdt.core.codeComplete.staticFieldSuffixes= -org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes= -org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes= -org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled -org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore -org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull -org.eclipse.jdt.core.compiler.annotation.nonnull.secondary= -org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault -org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary= -org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable -org.eclipse.jdt.core.compiler.annotation.nullable.secondary= -org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.methodParameters=generate -org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=17 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.doc.comment.support=enabled -org.eclipse.jdt.core.compiler.maxProblemPerUnit=100 -org.eclipse.jdt.core.compiler.problem.APILeak=warning -org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.autoboxing=ignore -org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning -org.eclipse.jdt.core.compiler.problem.deadCode=warning -org.eclipse.jdt.core.compiler.problem.deprecation=warning -org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled -org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled -org.eclipse.jdt.core.compiler.problem.discouragedReference=warning -org.eclipse.jdt.core.compiler.problem.emptyStatement=warning -org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore -org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning -org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled -org.eclipse.jdt.core.compiler.problem.fieldHiding=warning -org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning -org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning -org.eclipse.jdt.core.compiler.problem.forbiddenReference=error -org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning -org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled -org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning -org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning -org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore -org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore -org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled -org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled -org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled -org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected -org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore -org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error -org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore -org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning -org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled -org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled -org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public -org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag -org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled -org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled -org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled -org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore -org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore -org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning -org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning -org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning -org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning -org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning -org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error -org.eclipse.jdt.core.compiler.problem.nullReference=error -org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error -org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning -org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning -org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore -org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning -org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning -org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning -org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore -org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning -org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning -org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning -org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore -org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning -org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore -org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore -org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning -org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled -org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning -org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled -org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled -org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled -org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore -org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning -org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning -org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled -org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning -org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning -org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore -org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning -org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning -org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled -org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info -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.unstableAutoModuleName=warning -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled -org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore -org.eclipse.jdt.core.compiler.problem.unusedImport=warning -org.eclipse.jdt.core.compiler.problem.unusedLabel=warning -org.eclipse.jdt.core.compiler.problem.unusedLocal=warning -org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore -org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore -org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled -org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning -org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore -org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning -org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning -org.eclipse.jdt.core.compiler.release=enabled -org.eclipse.jdt.core.compiler.source=17 -org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false -org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647 -org.eclipse.jdt.core.formatter.align_type_members_on_columns=false -org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false -org.eclipse.jdt.core.formatter.align_with_spaces=false -org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_assignment=0 -org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 -org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16 -org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 -org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16 -org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 -org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0 -org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0 -org.eclipse.jdt.core.formatter.alignment_for_module_statements=16 -org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 -org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80 -org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16 -org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0 -org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0 -org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16 -org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_after_package=1 -org.eclipse.jdt.core.formatter.blank_lines_before_field=0 -org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 -org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 -org.eclipse.jdt.core.formatter.blank_lines_before_method=1 -org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 -org.eclipse.jdt.core.formatter.blank_lines_before_package=0 -org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 -org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 -org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true -org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false -org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true -org.eclipse.jdt.core.formatter.comment.format_block_comments=false -org.eclipse.jdt.core.formatter.comment.format_header=false -org.eclipse.jdt.core.formatter.comment.format_html=true -org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false -org.eclipse.jdt.core.formatter.comment.format_line_comments=false -org.eclipse.jdt.core.formatter.comment.format_source_code=true -org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false -org.eclipse.jdt.core.formatter.comment.indent_root_tags=false -org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert -org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert -org.eclipse.jdt.core.formatter.comment.line_length=80 -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=false -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true -org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_empty_lines=false -org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true -org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false -org.eclipse.jdt.core.formatter.indentation.size=4 -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert -org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert -org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert -org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert -org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert -org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert -org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert -org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.join_lines_in_comments=true -org.eclipse.jdt.core.formatter.join_wrapped_lines=true -org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false -org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false -org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false -org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false -org.eclipse.jdt.core.formatter.lineSplit=120 -org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false -org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 -org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 -org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines -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_additive_operator=true -org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false -org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true -org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true -org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true -org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true -org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true -org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true -org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true -org.eclipse.jdt.core.incompatibleJDKLevel=ignore -org.eclipse.jdt.core.incompleteClasspath=error -org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.jdt.launching.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.jdt.launching.prefs deleted file mode 100644 index f8a131b56e0..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.jdt.launching.prefs +++ /dev/null @@ -1,3 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.launching.PREF_COMPILER_COMPLIANCE_DOES_NOT_MATCH_JRE=warning -org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.jdt.ui.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.jdt.ui.prefs deleted file mode 100644 index d35ba9b5231..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.jdt.ui.prefs +++ /dev/null @@ -1,213 +0,0 @@ -cleanup.add_all=false -cleanup.add_default_serial_version_id=true -cleanup.add_generated_serial_version_id=false -cleanup.add_missing_annotations=true -cleanup.add_missing_deprecated_annotations=true -cleanup.add_missing_methods=false -cleanup.add_missing_nls_tags=false -cleanup.add_missing_override_annotations=true -cleanup.add_missing_override_annotations_interface_methods=true -cleanup.add_serial_version_id=false -cleanup.always_use_blocks=true -cleanup.always_use_parentheses_in_expressions=false -cleanup.always_use_this_for_non_static_field_access=false -cleanup.always_use_this_for_non_static_method_access=false -cleanup.array_with_curly=false -cleanup.arrays_fill=false -cleanup.bitwise_conditional_expression=false -cleanup.boolean_literal=false -cleanup.boolean_value_rather_than_comparison=false -cleanup.break_loop=false -cleanup.collection_cloning=false -cleanup.comparing_on_criteria=false -cleanup.comparison_statement=false -cleanup.controlflow_merge=false -cleanup.convert_functional_interfaces=false -cleanup.convert_to_enhanced_for_loop=false -cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true -cleanup.convert_to_switch_expressions=false -cleanup.correct_indentation=false -cleanup.do_while_rather_than_while=true -cleanup.double_negation=false -cleanup.else_if=false -cleanup.embedded_if=false -cleanup.evaluate_nullable=false -cleanup.extract_increment=false -cleanup.format_source_code=true -cleanup.format_source_code_changes_only=false -cleanup.hash=false -cleanup.if_condition=false -cleanup.insert_inferred_type_arguments=false -cleanup.instanceof=false -cleanup.instanceof_keyword=false -cleanup.invert_equals=false -cleanup.join=false -cleanup.lazy_logical_operator=false -cleanup.make_local_variable_final=true -cleanup.make_parameters_final=false -cleanup.make_private_fields_final=true -cleanup.make_type_abstract_if_missing_method=false -cleanup.make_variable_declarations_final=false -cleanup.map_cloning=false -cleanup.merge_conditional_blocks=false -cleanup.multi_catch=false -cleanup.never_use_blocks=false -cleanup.never_use_parentheses_in_expressions=true -cleanup.no_string_creation=false -cleanup.no_super=false -cleanup.number_suffix=false -cleanup.objects_equals=false -cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false -cleanup.operand_factorization=false -cleanup.organize_imports=true -cleanup.overridden_assignment=false -cleanup.plain_replacement=false -cleanup.precompile_regex=false -cleanup.primitive_comparison=false -cleanup.primitive_parsing=false -cleanup.primitive_rather_than_wrapper=false -cleanup.primitive_serialization=false -cleanup.pull_out_if_from_if_else=false -cleanup.pull_up_assignment=false -cleanup.push_down_negation=false -cleanup.qualify_static_field_accesses_with_declaring_class=false -cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -cleanup.qualify_static_member_accesses_with_declaring_class=false -cleanup.qualify_static_method_accesses_with_declaring_class=false -cleanup.reduce_indentation=false -cleanup.redundant_comparator=false -cleanup.redundant_falling_through_block_end=false -cleanup.remove_private_constructors=true -cleanup.remove_redundant_modifiers=false -cleanup.remove_redundant_semicolons=true -cleanup.remove_redundant_type_arguments=true -cleanup.remove_trailing_whitespaces=true -cleanup.remove_trailing_whitespaces_all=true -cleanup.remove_trailing_whitespaces_ignore_empty=false -cleanup.remove_unnecessary_array_creation=false -cleanup.remove_unnecessary_casts=true -cleanup.remove_unnecessary_nls_tags=false -cleanup.remove_unused_imports=true -cleanup.remove_unused_local_variables=false -cleanup.remove_unused_method_parameters=false -cleanup.remove_unused_private_fields=true -cleanup.remove_unused_private_members=false -cleanup.remove_unused_private_methods=true -cleanup.remove_unused_private_types=true -cleanup.return_expression=false -cleanup.simplify_lambda_expression_and_method_ref=false -cleanup.single_used_field=false -cleanup.sort_members=false -cleanup.sort_members_all=false -cleanup.standard_comparison=false -cleanup.static_inner_class=false -cleanup.strictly_equal_or_different=false -cleanup.stringbuffer_to_stringbuilder=false -cleanup.stringbuilder=false -cleanup.stringbuilder_for_local_vars=true -cleanup.stringconcat_to_textblock=false -cleanup.substring=false -cleanup.switch=false -cleanup.system_property=false -cleanup.system_property_boolean=false -cleanup.system_property_file_encoding=false -cleanup.system_property_file_separator=false -cleanup.system_property_line_separator=false -cleanup.system_property_path_separator=false -cleanup.ternary_operator=false -cleanup.try_with_resource=false -cleanup.unlooped_while=false -cleanup.unreachable_block=false -cleanup.use_anonymous_class_creation=false -cleanup.use_autoboxing=false -cleanup.use_blocks=false -cleanup.use_blocks_only_for_return_and_throw=false -cleanup.use_directly_map_method=false -cleanup.use_lambda=true -cleanup.use_parentheses_in_expressions=false -cleanup.use_string_is_blank=false -cleanup.use_this_for_non_static_field_access=false -cleanup.use_this_for_non_static_field_access_only_if_necessary=true -cleanup.use_this_for_non_static_method_access=false -cleanup.use_this_for_non_static_method_access_only_if_necessary=true -cleanup.use_unboxing=false -cleanup.use_var=false -cleanup.useless_continue=false -cleanup.useless_return=false -cleanup.valueof_rather_than_instantiation=false -cleanup_profile=_CDT -cleanup_settings_version=2 -eclipse.preferences.version=1 -editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true -formatter_profile=_CDT -formatter_settings_version=14 -internal.default.compliance=user -org.eclipse.jdt.ui.exception.name=e -org.eclipse.jdt.ui.gettersetter.use.is=true -org.eclipse.jdt.ui.ignorelowercasenames=true -org.eclipse.jdt.ui.importorder=java;javax;org;com; -org.eclipse.jdt.ui.keywordthis=false -org.eclipse.jdt.ui.ondemandthreshold=1000 -org.eclipse.jdt.ui.overrideannotation=true -org.eclipse.jdt.ui.staticondemandthreshold=1000 -org.eclipse.jdt.ui.text.custom_code_templates= -sp_cleanup.add_default_serial_version_id=true -sp_cleanup.add_generated_serial_version_id=false -sp_cleanup.add_missing_annotations=true -sp_cleanup.add_missing_deprecated_annotations=true -sp_cleanup.add_missing_methods=false -sp_cleanup.add_missing_nls_tags=false -sp_cleanup.add_missing_override_annotations=true -sp_cleanup.add_missing_override_annotations_interface_methods=true -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_functional_interfaces=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.insert_inferred_type_arguments=false -sp_cleanup.make_local_variable_final=true -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_redundant_modifiers=false -sp_cleanup.remove_redundant_semicolons=true -sp_cleanup.remove_redundant_type_arguments=true -sp_cleanup.remove_trailing_whitespaces=true -sp_cleanup.remove_trailing_whitespaces_all=true -sp_cleanup.remove_trailing_whitespaces_ignore_empty=false -sp_cleanup.remove_unnecessary_casts=true -sp_cleanup.remove_unnecessary_nls_tags=false -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_anonymous_class_creation=false -sp_cleanup.use_blocks=false -sp_cleanup.use_blocks_only_for_return_and_throw=false -sp_cleanup.use_lambda=true -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/terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.pde.api.tools.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.pde.api.tools.prefs deleted file mode 100644 index ec9fbf321d0..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.pde.api.tools.prefs +++ /dev/null @@ -1,184 +0,0 @@ -ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error -ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error -ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error -ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error -ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error -ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error -API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error -API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error -API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error -API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error -API_USE_SCAN_FIELD_SEVERITY=Error -API_USE_SCAN_METHOD_SEVERITY=Error -API_USE_SCAN_TYPE_SEVERITY=Error -CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -CLASS_ELEMENT_TYPE_ADDED_FIELD=Error -CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error -CLASS_ELEMENT_TYPE_ADDED_METHOD=Error -CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error -CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error -CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error -CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error -CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error -CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error -CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error -CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error -CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error -CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error -CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error -CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error -CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error -CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error -CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error -CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error -CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error -CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error -CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error -CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error -CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error -CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error -CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error -ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error -ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error -ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error -ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error -ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error -ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error -ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error -ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error -ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error -ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error -FIELD_ELEMENT_TYPE_ADDED_VALUE=Error -FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error -FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error -FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error -FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error -FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error -FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error -FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error -FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error -FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error -FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error -ILLEGAL_EXTEND=Warning -ILLEGAL_IMPLEMENT=Warning -ILLEGAL_INSTANTIATE=Warning -ILLEGAL_OVERRIDE=Warning -ILLEGAL_REFERENCE=Warning -INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error -INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error -INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error -INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error -INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error -INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error -INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error -INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error -INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error -INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error -INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error -INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error -INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error -INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error -INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error -INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error -INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error -INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error -INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error -INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error -INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error -INVALID_ANNOTATION=Ignore -INVALID_JAVADOC_TAG=Error -INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning -LEAK_EXTEND=Warning -LEAK_FIELD_DECL=Warning -LEAK_IMPLEMENT=Warning -LEAK_METHOD_PARAM=Warning -LEAK_METHOD_RETURN_TYPE=Warning -METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error -METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error -METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error -METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error -METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error -METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error -METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error -METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error -METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error -METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error -METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error -METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error -METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error -METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error -MISSING_EE_DESCRIPTIONS=Warning -TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -UNUSED_PROBLEM_FILTERS=Warning -automatically_removed_unused_problem_filters=false -changed_execution_env=Error -eclipse.preferences.version=1 -incompatible_api_component_version=Error -incompatible_api_component_version_include_major_without_breaking_change=Disabled -incompatible_api_component_version_include_minor_without_api_change=Disabled -incompatible_api_component_version_report_major_without_breaking_change=Warning -incompatible_api_component_version_report_minor_without_api_change=Warning -invalid_since_tag_version=Error -malformed_since_tag=Error -missing_since_tag=Error -report_api_breakage_when_major_version_incremented=Disabled -report_resolution_errors_api_component=Warning diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.pde.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.pde.prefs deleted file mode 100644 index ffaa8e3f1a7..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.process/.settings/org.eclipse.pde.prefs +++ /dev/null @@ -1,36 +0,0 @@ -compilers.f.unresolved-features=1 -compilers.f.unresolved-plugins=1 -compilers.incompatible-environment=1 -compilers.p.build=1 -compilers.p.build.bin.includes=0 -compilers.p.build.encodings=2 -compilers.p.build.java.compiler=2 -compilers.p.build.java.compliance=1 -compilers.p.build.missing.output=2 -compilers.p.build.output.library=1 -compilers.p.build.source.library=1 -compilers.p.build.src.includes=0 -compilers.p.deprecated=1 -compilers.p.discouraged-class=1 -compilers.p.exec-env-too-low=1 -compilers.p.internal=1 -compilers.p.missing-packages=2 -compilers.p.missing-version-export-package=2 -compilers.p.missing-version-import-package=2 -compilers.p.missing-version-require-bundle=2 -compilers.p.no-required-att=0 -compilers.p.no.automatic.module=1 -compilers.p.not-externalized-att=1 -compilers.p.service.component.without.lazyactivation=1 -compilers.p.unknown-attribute=1 -compilers.p.unknown-class=0 -compilers.p.unknown-element=1 -compilers.p.unknown-identifier=0 -compilers.p.unknown-resource=0 -compilers.p.unresolved-ex-points=0 -compilers.p.unresolved-import=0 -compilers.s.create-docs=false -compilers.s.doc-folder=doc -compilers.s.open-tags=1 -compilers.use-project=true -eclipse.preferences.version=1 diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/META-INF/MANIFEST.MF b/terminal/plugins/org.eclipse.tm.terminal.connector.process/META-INF/MANIFEST.MF deleted file mode 100644 index d0676e3db01..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.process/META-INF/MANIFEST.MF +++ /dev/null @@ -1,24 +0,0 @@ -Manifest-Version: 1.0 -Bundle-ManifestVersion: 2 -Bundle-Name: %pluginName -Bundle-SymbolicName: org.eclipse.tm.terminal.connector.process;singleton:=true -Bundle-Version: 4.9.400.qualifier -Bundle-Activator: org.eclipse.tm.terminal.connector.process.activator.UIPlugin -Bundle-Vendor: %providerName -Import-Package: org.eclipse.cdt.utils.pty;mandatory:=native, - org.eclipse.cdt.utils.spawner;mandatory:=native -Require-Bundle: org.eclipse.core.expressions;bundle-version="[3.9.400,4)", - org.eclipse.core.resources;bundle-version="[3.22.200,4)";resolution:=optional, - org.eclipse.core.runtime;bundle-version="[3.33.0,4)", - org.eclipse.tm.terminal.view.core;bundle-version="[4.10.400,5)";resolution:=optional, - org.eclipse.tm.terminal.view.ui;bundle-version="[4.11.600,5)";resolution:=optional, - org.eclipse.tm.terminal.control;bundle-version="[5.6.0,6.0.0)", - org.eclipse.ui;bundle-version="[3.207.200,4)" -Bundle-RequiredExecutionEnvironment: JavaSE-17 -Bundle-ActivationPolicy: lazy -Bundle-Localization: plugin -Export-Package: org.eclipse.tm.terminal.connector.process, - org.eclipse.tm.terminal.connector.process.activator;x-internal:=true, - org.eclipse.tm.terminal.connector.process.help, - org.eclipse.tm.terminal.connector.process.nls;x-internal:=true -Automatic-Module-Name: org.eclipse.tm.terminal.connector.process diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/META-INF/p2.inf b/terminal/plugins/org.eclipse.tm.terminal.connector.process/META-INF/p2.inf deleted file mode 100644 index 25fac253a0c..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.process/META-INF/p2.inf +++ /dev/null @@ -1,99 +0,0 @@ -############################################################################### -# Copyright (c) 2014, 2025 Wind River Systems, Inc. and others. All rights reserved. -# This program and the accompanying materials are made available under the terms -# of the Eclipse Public License 2.0 which accompanies this distribution, and is -# available at https://www.eclipse.org/legal/epl-2.0/ -# -# Contributors: -# Wind River Systems - initial API and implementation -# Tue Ton - support for Linux riscv64 -############################################################################### - -# Most of the dependencies exposed here are actually covered in the feature.xml -# This file ensures that the current bundle has all it needs, even if installed -# without the enclosing org.eclipse.tm.terminal.view.feature . -# See also https://bugs.eclipse.org/bugs/show_bug.cgi?id=435150 . - -# 1. Make the optional cdt.core dependency non-greedy: Use (or update to proper -# version!) when installed, but do not install automatically since the newer -# org.eclipse.cdt.core.native can satisfy the dependency better. We use this -# trick since CDT 8.3 had no version on export-package yet but we do want -# a version constraint. -requires.0.namespace = org.eclipse.equinox.p2.iu -requires.0.name = org.eclipse.cdt.core -#requires.0.range = [5.6, 6.0) -requires.0.greedy = false -requires.0.optional = true - -#requires.1.namespace = org.eclipse.equinox.p2.iu -#requires.1.name = org.eclipse.cdt.core.native -#requires.1.range = [5.6, 6.0) -#requires.1.greedy = true -#requires.1.optional = true - -# 2. Add the required fragments for local terminal support with proper version. -requires.2.namespace = org.eclipse.equinox.p2.iu -requires.2.name = org.eclipse.cdt.core.aix -#requires.2.range = [5.3, 6.0) -requires.2.filter = (osgi.os=aix) - -requires.3.namespace = org.eclipse.equinox.p2.iu -requires.3.name = org.eclipse.cdt.core.linux -#requires.3.range = [5.2, 6.0) -requires.3.filter = (osgi.os=linux) - -requires.4.namespace = org.eclipse.equinox.p2.iu -requires.4.name = org.eclipse.cdt.core.linux.ppc64 -#requires.4.range = [5.1, 6.0) -requires.4.filter = (&(osgi.os=linux)(osgi.arch=ppc64)) - -#requires.5.namespace = org.eclipse.equinox.p2.iu -#requires.5.name = org.eclipse.cdt.core.linux.x86 -#requires.5.range = [5.2, 6.0) -#requires.5.filter = (&(osgi.os=linux)(osgi.arch=x86)) - -requires.6.namespace = org.eclipse.equinox.p2.iu -requires.6.name = org.eclipse.cdt.core.linux.x86_64 -#requires.6.range = [5.2, 6.0) -requires.6.filter = (&(osgi.os=linux)(osgi.arch=x86_64)) - -requires.7.namespace = org.eclipse.equinox.p2.iu -requires.7.name = org.eclipse.cdt.core.macosx -#requires.7.range = [5.2, 6.0) -requires.7.filter = (osgi.os=macosx) - -requires.8.namespace = org.eclipse.equinox.p2.iu -requires.8.name = org.eclipse.cdt.core.solaris -#requires.8.range = [5.2, 6.0) -requires.8.filter = (&(osgi.os=solaris)(osgi.arch=sparc)) - -requires.9.namespace = org.eclipse.equinox.p2.iu -requires.9.name = org.eclipse.cdt.core.win32 -#requires.9.range = [5.3, 6.0) -requires.9.filter = (osgi.os=win32) - -#requires.10.namespace = org.eclipse.equinox.p2.iu -#requires.10.name = org.eclipse.cdt.core.win32.x86 -#requires.10.range = [5.2, 6.0) -#requires.10.filter = (&(osgi.os=win32)(osgi.arch=x86)) - -requires.11.namespace = org.eclipse.equinox.p2.iu -requires.11.name = org.eclipse.cdt.core.win32.x86_64 -#requires.11.range = [5.2, 6.0) -requires.11.filter = (&(osgi.os=win32)(osgi.arch=x86_64)) - -requires.12.namespace = org.eclipse.equinox.p2.iu -requires.12.name = org.eclipse.cdt.core.linux.aarch64 -#requires.12.range = [5.2, 6.0) -requires.12.filter = (&(osgi.os=linux)(osgi.arch=aarch64)) - -requires.13.namespace = org.eclipse.equinox.p2.iu -requires.13.name = org.eclipse.cdt.core.win32.aarch64 -#requires.13.range = [5.2, 6.0) -requires.13.filter = (&(osgi.os=win32)(osgi.arch=aarch64)) - -requires.14.namespace = org.eclipse.equinox.p2.iu -requires.14.name = org.eclipse.cdt.core.linux.riscv64 -#requires.14.range = [5.2, 6.0) -requires.14.filter = (&(osgi.os=linux)(osgi.arch=riscv64)) - diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/about.html b/terminal/plugins/org.eclipse.tm.terminal.connector.process/about.html deleted file mode 100644 index b3134865230..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.process/about.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - About - - - -

About This Content

- -

November 30, 2017

-

License

- -

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

- -

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

- - - - \ No newline at end of file diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/build.properties b/terminal/plugins/org.eclipse.tm.terminal.connector.process/build.properties deleted file mode 100644 index 1f1e5365420..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.process/build.properties +++ /dev/null @@ -1,19 +0,0 @@ -############################################################################### -# Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved. -# This program and the accompanying materials are made available under the terms -# of the Eclipse Public License 2.0 which accompanies this distribution, and is -# available at https://www.eclipse.org/legal/epl-2.0/ -# -# SPDX-License-Identifier: EPL-2.0 -# -# Contributors: -# Wind River Systems - initial API and implementation -############################################################################### -source.. = src/ -output.. = bin/ -bin.includes = META-INF/,\ - .,\ - plugin.xml,\ - plugin.properties,\ - about.html -src.includes = about.html diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/plugin.properties b/terminal/plugins/org.eclipse.tm.terminal.connector.process/plugin.properties deleted file mode 100644 index 20001e08799..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.process/plugin.properties +++ /dev/null @@ -1,24 +0,0 @@ -################################################################################## -# Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. -# This program and the accompanying materials are made available under the terms -# of the Eclipse Public License 2.0 which accompanies this distribution, and is -# available at https://www.eclipse.org/legal/epl-2.0/ -# -# SPDX-License-Identifier: EPL-2.0 -# -# Contributors: -# Wind River Systems - initial API and implementation -################################################################################## - -pluginName = Terminal Process Connector -providerName = Eclipse CDT - -# ----- Terminal Connectors ----- - -TerminalConnector.process=Process Connector (hidden) - -# ----- Terminal Launcher Delegates ----- - -ProcessLauncherDelegate.label=Streams Terminal - -# ----- Commands and Menu contributions ----- diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/plugin.xml b/terminal/plugins/org.eclipse.tm.terminal.connector.process/plugin.xml deleted file mode 100644 index 4b981ff8272..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.process/plugin.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/ProcessConnector.java b/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/ProcessConnector.java deleted file mode 100644 index 7b519189445..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/ProcessConnector.java +++ /dev/null @@ -1,327 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - * Kaloyan Raev - Bug 485658 - NPE prevents displaying the actual error - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.process; - -import java.io.File; -import java.io.IOException; -import java.io.StreamTokenizer; -import java.io.StringReader; -import java.nio.file.FileSystems; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; - -import org.eclipse.cdt.utils.pty.PTY; -import org.eclipse.cdt.utils.spawner.ProcessFactory; -import org.eclipse.core.runtime.Assert; -import org.eclipse.core.runtime.Platform; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.custom.CTabItem; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.tm.internal.terminal.emulator.VT100Emulator; -import org.eclipse.tm.internal.terminal.emulator.VT100TerminalControl; -import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore; -import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl; -import org.eclipse.tm.internal.terminal.provisional.api.NullSettingsStore; -import org.eclipse.tm.internal.terminal.provisional.api.TerminalState; -import org.eclipse.tm.terminal.connector.process.activator.UIPlugin; -import org.eclipse.tm.terminal.connector.process.nls.Messages; -import org.eclipse.tm.terminal.view.core.interfaces.constants.ILineSeparatorConstants; -import org.eclipse.tm.terminal.view.core.utils.Env; -import org.eclipse.tm.terminal.view.ui.manager.ConsoleManager; -import org.eclipse.tm.terminal.view.ui.streams.AbstractStreamsConnector; - -/** - * Process connector implementation. - */ -@SuppressWarnings("restriction") -public class ProcessConnector extends AbstractStreamsConnector { - // Reference to the process settings - private final ProcessSettings settings; - - // Reference to the PTY instance. - private PTY pty; - // Reference to the launched process instance. - private Process process; - // Reference to the process monitor - private ProcessMonitor monitor; - - // The terminal width and height. Initially unknown. - private int width = -1; - private int height = -1; - - /** - * Constructor. - */ - public ProcessConnector() { - this(new ProcessSettings()); - } - - /** - * Constructor. - * - * @param settings The process settings. Must not be null - */ - public ProcessConnector(ProcessSettings settings) { - super(); - - Assert.isNotNull(settings); - this.settings = settings; - } - - /** - * Returns the process object or null if the - * connector is connector. - * - * @return The process object or null. - */ - public Process getProcess() { - return process; - } - - @Override - public void connect(ITerminalControl control) { - Assert.isNotNull(control); - super.connect(control); - - pty = null; - width = -1; - height = -1; - - try { - boolean isAnsiTerminal = false; - - // Try to determine process and PTY instance from the process settings - process = settings.getProcess(); - pty = settings.getPTY(); - - // No process -> create PTY on supported platforms and execute - // process image. - if (process == null) { - if (PTY.isSupported(PTY.Mode.TERMINAL)) { - try { - pty = new PTY(PTY.Mode.TERMINAL); - - // Initialize the terminal size - VT100Emulator text = ((VT100TerminalControl) control).getTerminalText(); - text.fontChanged(); - } catch (IOException e) { - // PTY not supported - } - } - - // Build up the command - StringBuilder command = new StringBuilder(settings.getImage()); - String arguments = settings.getArguments(); - if (arguments != null && !"".equals(arguments.trim())) { //$NON-NLS-1$ - // Append to the command now - command.append(" "); //$NON-NLS-1$ - command.append(arguments.trim()); - } - - File workingDir = null; - if (settings.getWorkingDir() != null) { - workingDir = new File(settings.getWorkingDir()); - } - - String[] envp = null; - if (settings.getEnvironment() != null) { - envp = settings.getEnvironment(); - } - - if (settings.isMergeWithNativeEnvironment()) { - envp = Env.getEnvironment(envp, true); - } - - isAnsiTerminal = getTermVariable(envp).startsWith("ansi"); //$NON-NLS-1$ - - if (pty != null) { - // A PTY is available -> can use the ProcessFactory. - - // Tokenize the command (ProcessFactory takes an array) - StreamTokenizer st = new StreamTokenizer(new StringReader(command.toString())); - st.resetSyntax(); - st.whitespaceChars(0, 32); - st.whitespaceChars(0xa0, 0xa0); - st.wordChars(33, 255); - st.quoteChar('"'); - st.quoteChar('\''); - - List argv = new ArrayList<>(); - int ttype = st.nextToken(); - while (ttype != StreamTokenizer.TT_EOF) { - argv.add(st.sval); - ttype = st.nextToken(); - } - - // Execute the process - process = ProcessFactory.getFactory().exec(argv.toArray(new String[argv.size()]), envp, workingDir, - pty); - } else { - // No PTY -> just execute via the standard Java Runtime implementation. - process = Runtime.getRuntime().exec(command.toString(), envp, workingDir); - } - } - - String lineSeparator = settings.getLineSeparator(); - if (lineSeparator == null && pty == null) { - lineSeparator = System.getProperty("line.separator"); //$NON-NLS-1$ - if ("\r".equals(lineSeparator)) { //$NON-NLS-1$ - lineSeparator = ILineSeparatorConstants.LINE_SEPARATOR_CR; - } else if ("\n".equals(lineSeparator)) { //$NON-NLS-1$ - lineSeparator = ILineSeparatorConstants.LINE_SEPARATOR_LF; - } else { - lineSeparator = ILineSeparatorConstants.LINE_SEPARATOR_CRLF; - } - } - - // Setup the listeners - setStdoutListeners(settings.getStdOutListeners()); - setStderrListeners(settings.getStdErrListeners()); - - // Enable VT100 line wrapping if we are connected via pty - // And TERM is VT100 compatible - if (pty != null && !isAnsiTerminal) - control.setVT100LineWrapping(true); - - // connect the streams - connectStreams(control, process.getOutputStream(), process.getInputStream(), - (pty == null ? process.getErrorStream() : null), settings.isLocalEcho(), lineSeparator); - - // Set the terminal control state to CONNECTED - control.setState(TerminalState.CONNECTED); - - // Create the process monitor - monitor = new ProcessMonitor(this); - monitor.startMonitoring(); - } catch (IOException e) { - // Disconnect right away - disconnect(); - // Save the shell so the error message can have somewhere to display - Shell shell = control.getShell(); - // Lookup the tab item - CTabItem item = ConsoleManager.getInstance().findConsole(control); - if (item != null) - item.dispose(); - // Get the error message from the exception - String msg = e.getLocalizedMessage() != null ? e.getLocalizedMessage() : ""; //$NON-NLS-1$ - Assert.isNotNull(msg); - // Strip away "Exec_tty error:" - msg = msg.replace("Exec_tty error:", "").trim(); //$NON-NLS-1$ //$NON-NLS-2$ - // Repackage into a more user friendly error - msg = NLS.bind(Messages.ProcessConnector_error_creatingProcess, settings.getImage(), msg); - // Open an error dialog - MessageDialog.openError(shell, Messages.ProcessConnector_error_title, msg); - } - } - - private static String getTermVariable(String[] envp) { - if (envp != null && !Platform.OS_WIN32.equals(Platform.getOS())) - for (String var : envp) - if (var.startsWith("TERM=")) //$NON-NLS-1$ - return var.substring(5); - return "xterm"; //$NON-NLS-1$ - } - - @Override - public boolean isLocalEcho() { - return settings.isLocalEcho(); - } - - @Override - public void doDisconnect() { - // Stop monitoring the process - if (monitor != null) { - monitor.dispose(); - } - - boolean isWindows = Platform.OS_WIN32.equals(Platform.getOS()); - - if (!isWindows) { - // Destroy the process first, except on windows (Bug 465674) - if (process != null) { - process.destroy(); - process = null; - } - } - - // Dispose the streams - super.doDisconnect(); - - if (isWindows) { - // On Windows destroy the process after closing streams - if (process != null) { - process.destroy(); - process = null; - } - } - - // Set the terminal control state to CLOSED. - fControl.setState(TerminalState.CLOSED); - } - - @Override - public void setDefaultSettings() { - settings.load(new NullSettingsStore()); - } - - @Override - public String getSettingsSummary() { - return settings.getImage() != null ? settings.getImage() : ""; //$NON-NLS-1$ - } - - @Override - public void load(ISettingsStore store) { - settings.load(store); - } - - @Override - public void save(ISettingsStore store) { - settings.save(store); - } - - @Override - public void setTerminalSize(int newWidth, int newHeight) { - if (width != newWidth || height != newHeight) { - width = newWidth; - height = newHeight; - if (pty != null) { - pty.setTerminalSize(newWidth, newHeight); - } - } - } - - /** - * @since 4.8 - */ - @Override - public Optional getWorkingDirectory() { - try { - long pid = process.pid(); - try { - if (Platform.getOS().equals(Platform.OS_LINUX)) { - Path procCwd = Files.readSymbolicLink(FileSystems.getDefault().getPath("/proc/" + pid + "/cwd")); //$NON-NLS-1$//$NON-NLS-2$ - return Optional.of(procCwd.toAbsolutePath().toString()); - } - } catch (Exception e) { - UIPlugin.log("Failed to obtain working directory of process id " + pid, e); //$NON-NLS-1$ - } - } catch (Exception e) { - UIPlugin.log("Failed to obtain process id of terminal process", e); //$NON-NLS-1$ - } - return Optional.empty(); - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/ProcessLauncherDelegate.java b/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/ProcessLauncherDelegate.java deleted file mode 100644 index 89c114365c6..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/ProcessLauncherDelegate.java +++ /dev/null @@ -1,127 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.process; - -import java.util.Map; - -import org.eclipse.cdt.utils.pty.PTY; -import org.eclipse.core.runtime.Assert; -import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore; -import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector; -import org.eclipse.tm.internal.terminal.provisional.api.TerminalConnectorExtension; -import org.eclipse.tm.terminal.view.core.TerminalServiceFactory; -import org.eclipse.tm.terminal.view.core.interfaces.ITerminalService; -import org.eclipse.tm.terminal.view.core.interfaces.ITerminalServiceOutputStreamMonitorListener; -import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants; -import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanel; -import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer; -import org.eclipse.tm.terminal.view.ui.internal.SettingsStore; -import org.eclipse.tm.terminal.view.ui.launcher.AbstractLauncherDelegate; - -/** - * Process launcher delegate implementation. - */ -@SuppressWarnings("restriction") -public class ProcessLauncherDelegate extends AbstractLauncherDelegate { - - @Override - public boolean needsUserConfiguration() { - return false; - } - - @Override - public IConfigurationPanel getPanel(IConfigurationPanelContainer container) { - return null; - } - - @Override - public void execute(Map properties, ITerminalService.Done done) { - Assert.isNotNull(properties); - - // Get the terminal service - ITerminalService terminal = TerminalServiceFactory.getService(); - // If not available, we cannot fulfill this request - if (terminal != null) { - terminal.openConsole(properties, done); - } - } - - @Override - public ITerminalConnector createTerminalConnector(Map properties) { - Assert.isNotNull(properties); - - // Check for the terminal connector id - String connectorId = (String) properties.get(ITerminalsConnectorConstants.PROP_TERMINAL_CONNECTOR_ID); - if (connectorId == null) - connectorId = "org.eclipse.tm.terminal.connector.process.ProcessConnector"; //$NON-NLS-1$ - - // Extract the process properties - String image = (String) properties.get(ITerminalsConnectorConstants.PROP_PROCESS_PATH); - String arguments = (String) properties.get(ITerminalsConnectorConstants.PROP_PROCESS_ARGS); - Process process = (Process) properties.get(ITerminalsConnectorConstants.PROP_PROCESS_OBJ); - PTY pty = (PTY) properties.get(ITerminalsConnectorConstants.PROP_PTY_OBJ); - Object value = properties.get(ITerminalsConnectorConstants.PROP_LOCAL_ECHO); - boolean localEcho = value instanceof Boolean ? ((Boolean) value).booleanValue() : false; - String lineSeparator = (String) properties.get(ITerminalsConnectorConstants.PROP_LINE_SEPARATOR); - ITerminalServiceOutputStreamMonitorListener[] stdoutListeners = (ITerminalServiceOutputStreamMonitorListener[]) properties - .get(ITerminalsConnectorConstants.PROP_STDOUT_LISTENERS); - ITerminalServiceOutputStreamMonitorListener[] stderrListeners = (ITerminalServiceOutputStreamMonitorListener[]) properties - .get(ITerminalsConnectorConstants.PROP_STDERR_LISTENERS); - String workingDir = (String) properties.get(ITerminalsConnectorConstants.PROP_PROCESS_WORKING_DIR); - - String[] envp = null; - if (properties.containsKey(ITerminalsConnectorConstants.PROP_PROCESS_ENVIRONMENT) - && properties.get(ITerminalsConnectorConstants.PROP_PROCESS_ENVIRONMENT) != null - && properties.get(ITerminalsConnectorConstants.PROP_PROCESS_ENVIRONMENT) instanceof String[]) { - envp = (String[]) properties.get(ITerminalsConnectorConstants.PROP_PROCESS_ENVIRONMENT); - } - - Assert.isTrue(image != null || process != null); - - // Construct the terminal settings store - ISettingsStore store = new SettingsStore(); - - // Construct the process settings - ProcessSettings processSettings = new ProcessSettings(); - processSettings.setImage(image); - processSettings.setArguments(arguments); - processSettings.setProcess(process); - processSettings.setPTY(pty); - processSettings.setLocalEcho(localEcho); - processSettings.setLineSeparator(lineSeparator); - processSettings.setStdOutListeners(stdoutListeners); - processSettings.setStdErrListeners(stderrListeners); - processSettings.setWorkingDir(workingDir); - processSettings.setEnvironment(envp); - - if (properties.containsKey(ITerminalsConnectorConstants.PROP_PROCESS_MERGE_ENVIRONMENT)) { - value = properties.get(ITerminalsConnectorConstants.PROP_PROCESS_MERGE_ENVIRONMENT); - processSettings - .setMergeWithNativeEnvironment(value instanceof Boolean ? ((Boolean) value).booleanValue() : false); - } - - // And save the settings to the store - processSettings.save(store); - - // Construct the terminal connector instance - ITerminalConnector connector = TerminalConnectorExtension.makeTerminalConnector(connectorId); - if (connector != null) { - // Apply default settings - connector.setDefaultSettings(); - // And load the real settings - connector.load(store); - } - - return connector; - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/ProcessMonitor.java b/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/ProcessMonitor.java deleted file mode 100644 index f40cca74fd0..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/ProcessMonitor.java +++ /dev/null @@ -1,104 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.process; - -import org.eclipse.core.runtime.Assert; - -/** - * Process monitor implementation. - */ -public class ProcessMonitor { - // Reference to the parent process connector - private final ProcessConnector processConnector; - // Reference to the monitored process - private final Process process; - // Reference to the monitor thread - private Thread thread; - // Flag to mark the monitor disposed - private boolean disposed; - - /** - * Constructor. - * - * @param processConnector The parent process connector. Must not be null. - */ - public ProcessMonitor(ProcessConnector processConnector) { - super(); - - Assert.isNotNull(processConnector); - this.processConnector = processConnector; - - // Query the monitored process for easier access - this.process = processConnector.getProcess(); - } - - /** - * Dispose the process monitor. - */ - public void dispose() { - // Set the disposed status - disposed = true; - // Not initialized -> return immediately - if (thread == null) - return; - - // Copy the reference - final Thread oldThread = thread; - // Unlink the monitor from the thread - thread = null; - // And interrupt the writer thread - oldThread.interrupt(); - } - - /** - * Starts the terminal output stream monitor. - */ - public void startMonitoring() { - // If already initialized -> return immediately - if (thread != null) - return; - - // Create a new runnable which is constantly reading from the stream - Runnable runnable = () -> monitorProcess(); - - // Create the monitor thread - thread = new Thread(runnable, "Terminal Process Monitor Thread"); //$NON-NLS-1$ - - // Configure the monitor thread - thread.setDaemon(true); - - // Start the processing - thread.start(); - } - - /** - * Monitors the associated system process, waiting for it to terminate, - * and notifies the associated process monitor's. - */ - public void monitorProcess() { - // If already disposed -> return immediately - if (disposed) - return; - - try { - // Wait for the monitored process to terminate - process.waitFor(); - } catch (InterruptedException ie) { - // clear interrupted state - Thread.interrupted(); - } finally { - // Dispose the parent process connector - if (!disposed) - processConnector.disconnect(); - } - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/ProcessSettings.java b/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/ProcessSettings.java deleted file mode 100644 index 48b55a0b4fc..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/ProcessSettings.java +++ /dev/null @@ -1,305 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.process; - -import org.eclipse.cdt.utils.pty.PTY; -import org.eclipse.core.runtime.Assert; -import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore; -import org.eclipse.tm.terminal.view.core.interfaces.ITerminalServiceOutputStreamMonitorListener; -import org.eclipse.tm.terminal.view.ui.internal.SettingsStore; - -/** - * Process connector settings implementation. - */ -@SuppressWarnings("restriction") -public class ProcessSettings { - // Reference to the process image - private String image; - // Reference to the process arguments (space separated string) - private String arguments; - // Reference to the process object - private Process process; - // Reference to the pseudo terminal object - private PTY pty; - // Flag to control the local echo (defaults to true if - // the PTY is not supported on the current host platform) - private boolean localEcho = !PTY.isSupported(PTY.Mode.CONSOLE); - // The line separator setting - private String lineSeparator = null; - // The list of stdout output listeners - private ITerminalServiceOutputStreamMonitorListener[] stdoutListeners = null; - // The list of stderr output listeners - private ITerminalServiceOutputStreamMonitorListener[] stderrListeners = null; - // working directory for process - private String workingDir; - // environment - private String[] environment; - // Flag to control if the provided environment is - // automatically merged with the native process environment. - // Defaults to "true". - private boolean mergeWithNativeEnvironment = true; - - /** - * Sets the process image. - * - * @param image The process image or null. - */ - public void setImage(String image) { - this.image = image; - } - - /** - * Returns the process image. - * - * @return The process image or null. - */ - public String getImage() { - return image; - } - - /** - * Sets the process arguments. - *

- * The arguments are space separated. The caller is responsible for - * correct quoting. - * - * @param arguments The process arguments or null. - */ - public void setArguments(String arguments) { - this.arguments = arguments; - } - - /** - * Returns the process arguments. - * - * @return The process arguments as space separated list or null. - */ - public String getArguments() { - return arguments; - } - - /** - * Sets the process object. - * - * @param image The process object or null. - */ - public void setProcess(Process process) { - this.process = process; - } - - /** - * Returns the process object. - * - * @return The process object or null. - */ - public Process getProcess() { - return process; - } - - /** - * Sets the pseudo terminal object. - * - * @param pty The pseudo terminal or null. - */ - public void setPTY(PTY pty) { - this.pty = pty; - // If the PTY is set to "null", the local echo will be set to "true" - if (pty == null) - setLocalEcho(true); - } - - /** - * Returns the pseudo terminal object. - * - * @return The pseudo terminal or null. - */ - public PTY getPTY() { - return pty; - } - - /** - * Sets if the process requires a local echo from the - * terminal widget. - * - * @param value Specify true to enable the local echo, false otherwise. - */ - public void setLocalEcho(boolean value) { - this.localEcho = value; - } - - /** - * Returns true if the process requires a local echo - * from the terminal widget. - * - * @return True if local echo is enabled, false otherwise. - */ - public boolean isLocalEcho() { - return localEcho; - } - - /** - * Sets the process line separator. - * - * @param separator The process line separator null. - */ - public void setLineSeparator(String separator) { - this.lineSeparator = separator; - } - - /** - * Returns the process line separator. - * - * @return The process line separator or null. - */ - public String getLineSeparator() { - return lineSeparator; - } - - /** - * Sets the list of stdout listeners. - * - * @param listeners The list of stdout listeners or null. - */ - public void setStdOutListeners(ITerminalServiceOutputStreamMonitorListener[] listeners) { - this.stdoutListeners = listeners; - } - - /** - * Returns the list of stdout listeners. - * - * @return The list of stdout listeners or null. - */ - public ITerminalServiceOutputStreamMonitorListener[] getStdOutListeners() { - return stdoutListeners; - } - - /** - * Sets the list of stderr listeners. - * - * @param listeners The list of stderr listeners or null. - */ - public void setStdErrListeners(ITerminalServiceOutputStreamMonitorListener[] listeners) { - this.stderrListeners = listeners; - } - - /** - * Returns the list of stderr listeners. - * - * @return The list of stderr listeners or null. - */ - public ITerminalServiceOutputStreamMonitorListener[] getStdErrListeners() { - return stderrListeners; - } - - /** - * Returns the working directory - * - * @return - */ - public String getWorkingDir() { - return this.workingDir; - } - - /** - * Sets the working directory of the process - * - * @param workingDir the absolute path of the working directory - */ - public void setWorkingDir(String workingDir) { - this.workingDir = workingDir; - } - - /** - * Get the process environment - * - * @return - */ - public String[] getEnvironment() { - return environment; - } - - /** - * Sets the process environment - * - * @param environment - will be added to the "parent" environment of the process - */ - public void setEnvironment(String[] environment) { - this.environment = environment; - } - - /** - * Returns if or if not the provided environment is merged with - * the native process environment. - * - * @return True if the provided environment is merged with the native process environment, false otherwise. - */ - public boolean isMergeWithNativeEnvironment() { - return mergeWithNativeEnvironment; - } - - /** - * Sets if or if not the provided environment is merged with the - * native process environment. - * - * @param value True if the provided environment is merged with the native process environment, false otherwise. - */ - public void setMergeWithNativeEnvironment(boolean value) { - this.mergeWithNativeEnvironment = value; - } - - /** - * Loads the process settings from the given settings store. - * - * @param store The settings store. Must not be null. - */ - public void load(ISettingsStore store) { - Assert.isNotNull(store); - image = store.get("Path", null);//$NON-NLS-1$ - arguments = store.get("Arguments", null); //$NON-NLS-1$ - localEcho = Boolean.parseBoolean(store.get("LocalEcho", Boolean.FALSE.toString())); //$NON-NLS-1$ - mergeWithNativeEnvironment = Boolean - .parseBoolean(store.get("MergeWithNativeEnvironment", Boolean.FALSE.toString())); //$NON-NLS-1$ - lineSeparator = store.get("LineSeparator", null); //$NON-NLS-1$ - workingDir = store.get("WorkingDir", null); //$NON-NLS-1$ - if (store instanceof SettingsStore) { - process = (Process) ((SettingsStore) store).getSettings().get("Process"); //$NON-NLS-1$ - pty = (PTY) ((SettingsStore) store).getSettings().get("PTY"); //$NON-NLS-1$ - stdoutListeners = (ITerminalServiceOutputStreamMonitorListener[]) ((SettingsStore) store).getSettings() - .get("StdOutListeners"); //$NON-NLS-1$ - stderrListeners = (ITerminalServiceOutputStreamMonitorListener[]) ((SettingsStore) store).getSettings() - .get("StdErrListeners"); //$NON-NLS-1$ - environment = (String[]) ((SettingsStore) store).getSettings().get("Environment"); //$NON-NLS-1$ - } - } - - /** - * Saves the process settings to the given settings store. - * - * @param store The settings store. Must not be null. - */ - public void save(ISettingsStore store) { - Assert.isNotNull(store); - store.put("Path", image);//$NON-NLS-1$ - store.put("Arguments", arguments); //$NON-NLS-1$ - store.put("LocalEcho", Boolean.toString(localEcho)); //$NON-NLS-1$ - store.put("MergeWithNativeEnvironment", Boolean.toString(mergeWithNativeEnvironment)); //$NON-NLS-1$ - store.put("LineSeparator", lineSeparator); //$NON-NLS-1$ - store.put("WorkingDir", workingDir); //$NON-NLS-1$ - if (store instanceof SettingsStore) { - ((SettingsStore) store).getSettings().put("Process", process); //$NON-NLS-1$ - ((SettingsStore) store).getSettings().put("PTY", pty); //$NON-NLS-1$ - ((SettingsStore) store).getSettings().put("StdOutListeners", stdoutListeners); //$NON-NLS-1$ - ((SettingsStore) store).getSettings().put("StdErrListeners", stderrListeners); //$NON-NLS-1$ - ((SettingsStore) store).getSettings().put("Environment", environment); //$NON-NLS-1$ - } - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/ProcessSettingsPage.java b/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/ProcessSettingsPage.java deleted file mode 100644 index 3560c2021bc..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/ProcessSettingsPage.java +++ /dev/null @@ -1,191 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.process; - -import org.eclipse.cdt.utils.pty.PTY; -import org.eclipse.core.runtime.Assert; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.Path; -import org.eclipse.core.runtime.Platform; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.FileDialog; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.swt.widgets.Text; -import org.eclipse.tm.internal.terminal.provisional.api.AbstractSettingsPage; -import org.eclipse.tm.terminal.view.ui.nls.Messages; -import org.eclipse.ui.PlatformUI; -import org.osgi.framework.Bundle; - -/** - * Process connector settings page implementation. - */ -@SuppressWarnings("restriction") -public class ProcessSettingsPage extends AbstractSettingsPage { - private Text processImageSelectorControl; - private Button processImageSelectorControlButton; - private Text processArgumentsControl; - private Button localEchoSelectorControl; - private Text processWorkingDirControl; - - private final ProcessSettings settings; - - /** - * Constructor. - * - * @param settings - */ - public ProcessSettingsPage(ProcessSettings settings) { - super(); - - Assert.isNotNull(settings); - this.settings = settings; - } - - @Override - public void createControl(Composite parent) { - Composite composite = new Composite(parent, SWT.NONE); - composite.setLayout(new GridLayout()); - composite.setLayoutData(new GridData(GridData.FILL_BOTH)); - - // The entry fields shall be properly aligned - Composite panel = new Composite(composite, SWT.NONE); - GridLayout layout = new GridLayout(2, false); - layout.marginWidth = 0; - layout.marginHeight = 0; - panel.setLayout(layout); - panel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - - // Create the process image selector control - Label label = new Label(panel, SWT.HORIZONTAL); - label.setText(Messages.ProcessSettingsPage_processImagePathSelectorControl_label); - - // Text field and browse button are aligned it their own panel - Composite innerPanel = new Composite(panel, SWT.NONE); - layout = new GridLayout(2, false); - layout.marginWidth = 0; - layout.marginHeight = 0; - innerPanel.setLayout(layout); - innerPanel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - - processImageSelectorControl = new Text(innerPanel, SWT.SINGLE | SWT.BORDER); - processImageSelectorControl.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - - processImageSelectorControlButton = new Button(innerPanel, SWT.PUSH); - processImageSelectorControlButton.setText(Messages.ProcessSettingsPage_processImagePathSelectorControl_button); - processImageSelectorControlButton.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - onBrowseButtonSelected(e); - } - }); - - // Create the process arguments control - label = new Label(panel, SWT.HORIZONTAL); - label.setText(Messages.ProcessSettingsPage_processArgumentsControl_label); - - processArgumentsControl = new Text(panel, SWT.SINGLE | SWT.BORDER); - processArgumentsControl.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - - // Create the process arguments control - label = new Label(panel, SWT.HORIZONTAL); - label.setText(Messages.ProcessSettingsPage_processWorkingDirControl_label); - - processWorkingDirControl = new Text(panel, SWT.SINGLE | SWT.BORDER); - processWorkingDirControl.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - - // Create the local echo check box - localEchoSelectorControl = new Button(composite, SWT.CHECK); - localEchoSelectorControl.setText(Messages.ProcessSettingsPage_localEchoSelectorControl_label); - localEchoSelectorControl.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - localEchoSelectorControl.setSelection(!PTY.isSupported(PTY.Mode.CONSOLE)); - - // Initialize the control content - loadSettings(); - } - - /** - * Called once the user pressed the browse button. - * - * @param e The selection event or null. - */ - protected void onBrowseButtonSelected(SelectionEvent e) { - // Determine the shell - Shell shell = e != null ? e.widget.getDisplay().getActiveShell() - : PlatformUI.getWorkbench().getDisplay().getActiveShell(); - - // create a standard file dialog - FileDialog dialog = new FileDialog(shell, SWT.OPEN); - dialog.setText(Messages.ProcessSettingsPage_dialogTitle); - - // the dialog should open within the directory of the currently selected - // file. If no file has been currently selected, it should open within the - // last browsed directory. - String selectedFile = processImageSelectorControl.getText(); - if (selectedFile != null && selectedFile.trim().length() > 0) { - IPath filePath = new Path(selectedFile); - // If the selected file points to an directory, use the directory as is - IPath filterPath = filePath.toFile().isDirectory() ? filePath : filePath.removeLastSegments(1); - String filterFileName = filePath.toFile().isDirectory() || !filePath.toFile().exists() ? null - : filePath.lastSegment(); - - if (!filterPath.isEmpty()) { - dialog.setFilterPath(filterPath.toString()); - } - if (filterFileName != null) { - dialog.setFileName(filterFileName); - } - } else { - Bundle bundle = Platform.getBundle("org.eclipse.core.resources"); //$NON-NLS-1$ - if (bundle != null && bundle.getState() != Bundle.UNINSTALLED && bundle.getState() != Bundle.STOPPING) { - dialog.setFilterPath( - org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot().getLocation().toOSString()); - } - } - - // Open the dialog - selectedFile = dialog.open(); - if (selectedFile != null) { - processImageSelectorControl.setText(selectedFile); - } - } - - @Override - public void saveSettings() { - settings.setImage(processImageSelectorControl.getText()); - settings.setArguments(processArgumentsControl.getText()); - settings.setLocalEcho(localEchoSelectorControl.getSelection()); - settings.setWorkingDir(processWorkingDirControl.getText()); - settings.setProcess(null); - } - - @Override - public void loadSettings() { - processImageSelectorControl.setText(settings.getImage()); - processArgumentsControl.setText(settings.getArguments()); - localEchoSelectorControl.setSelection(settings.isLocalEcho()); - processWorkingDirControl.setText(settings.getWorkingDir()); - } - - @Override - public boolean validateSettings() { - // The settings are considered valid if the selected process image can be read. - String selectedFile = processImageSelectorControl.getText(); - return selectedFile != null && !"".equals(selectedFile.trim()) && new Path(selectedFile).toFile().canRead(); //$NON-NLS-1$ - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/activator/UIPlugin.java b/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/activator/UIPlugin.java deleted file mode 100644 index 00a56ddb17e..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/activator/UIPlugin.java +++ /dev/null @@ -1,117 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.process.activator; - -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Status; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.resource.ImageRegistry; -import org.eclipse.swt.graphics.Image; -import org.eclipse.tm.terminal.view.core.tracing.TraceHandler; -import org.eclipse.ui.plugin.AbstractUIPlugin; -import org.osgi.framework.BundleContext; - -/** - * The activator class controls the plug-in life cycle - */ -public class UIPlugin extends AbstractUIPlugin { - // The shared instance - private static UIPlugin plugin; - - // The trace handler instance - private static volatile TraceHandler traceHandler; - - /** - * The constructor - */ - public UIPlugin() { - } - - /** - * Returns the shared instance - * - * @return the shared instance - */ - public static UIPlugin getDefault() { - return plugin; - } - - /** - * Convenience method which returns the unique identifier of this plugin. - */ - public static String getUniqueIdentifier() { - if (getDefault() != null && getDefault().getBundle() != null) { - return getDefault().getBundle().getSymbolicName(); - } - return "org.eclipse.tm.terminal.connector.process"; //$NON-NLS-1$ - } - - /** - * Returns the bundles trace handler. - * - * @return The bundles trace handler. - */ - public static TraceHandler getTraceHandler() { - if (traceHandler == null) { - traceHandler = new TraceHandler(getUniqueIdentifier()); - } - return traceHandler; - } - - @Override - public void start(BundleContext context) throws Exception { - super.start(context); - plugin = this; - } - - @Override - public void stop(BundleContext context) throws Exception { - plugin = null; - super.stop(context); - } - - @Override - protected void initializeImageRegistry(ImageRegistry registry) { - super.initializeImageRegistry(registry); - } - - /** - * Loads the image registered under the specified key from the image - * registry and returns the Image object instance. - * - * @param key The key the image is registered with. - * @return The Image object instance or null. - */ - public static Image getImage(String key) { - return getDefault().getImageRegistry().get(key); - } - - /** - * Loads the image registered under the specified key from the image - * registry and returns the ImageDescriptor object instance. - * - * @param key The key the image is registered with. - * @return The ImageDescriptor object instance or null. - */ - public static ImageDescriptor getImageDescriptor(String key) { - return getDefault().getImageRegistry().getDescriptor(key); - } - - public static void log(String msg, Throwable e) { - log(new Status(IStatus.ERROR, getUniqueIdentifier(), IStatus.ERROR, msg, e)); - } - - public static void log(IStatus status) { - getDefault().getLog().log(status); - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/help/IContextHelpIds.java b/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/help/IContextHelpIds.java deleted file mode 100644 index 7c6dcb752bf..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/help/IContextHelpIds.java +++ /dev/null @@ -1,32 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2014, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.process.help; - -import org.eclipse.tm.terminal.connector.process.activator.UIPlugin; - -/** - * Context help id definitions. - */ -public interface IContextHelpIds { - - /** - * UI plug-in common context help id prefix. - */ - public final static String PREFIX = UIPlugin.getUniqueIdentifier() + "."; //$NON-NLS-1$ - - // ***** Message dialog boxes ***** - - /** - * Process connector: Create process failed - */ - public final static String MESSAGE_CREATE_PROCESS_FAILED = PREFIX + ".status.messageCreateProcessFailed"; //$NON-NLS-1$ -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/nls/Messages.java b/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/nls/Messages.java deleted file mode 100644 index 9e53c53460b..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/nls/Messages.java +++ /dev/null @@ -1,36 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011 - 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.process.nls; - -import org.eclipse.osgi.util.NLS; - -/** - * Process terminal connector plug-in externalized strings management. - */ -public class Messages extends NLS { - - // The plug-in resource bundle name - private static final String BUNDLE_NAME = "org.eclipse.tm.terminal.connector.process.nls.Messages"; //$NON-NLS-1$ - - /** - * Static constructor. - */ - static { - // Load message values from bundle file - NLS.initializeMessages(BUNDLE_NAME, Messages.class); - } - - // **** Declare externalized string id's down here ***** - - public static String ProcessConnector_error_title; - public static String ProcessConnector_error_creatingProcess; -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/nls/Messages.properties b/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/nls/Messages.properties deleted file mode 100644 index 21f4086135e..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.process/src/org/eclipse/tm/terminal/connector/process/nls/Messages.properties +++ /dev/null @@ -1,14 +0,0 @@ -############################################################################### -# Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved. -# This program and the accompanying materials are made available under the terms -# of the Eclipse Public License 2.0 which accompanies this distribution, and is -# available at https://www.eclipse.org/legal/epl-2.0/ -# -# SPDX-License-Identifier: EPL-2.0 -# -# Contributors: -# Wind River Systems - initial API and implementation -############################################################################### - -ProcessConnector_error_title=Error -ProcessConnector_error_creatingProcess=Failed to execute ''{0}''.\n\nPossibly caused by:\n{1} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/RemoteConnector.java b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/RemoteConnector.java index f844774788e..02d9c78b56a 100644 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/RemoteConnector.java +++ b/terminal/plugins/org.eclipse.tm.terminal.connector.remote/src/org/eclipse/tm/terminal/connector/remote/internal/RemoteConnector.java @@ -19,7 +19,7 @@ import org.eclipse.terminal.connector.provider.AbstractTerminalConnector; import org.eclipse.tm.terminal.connector.remote.IRemoteSettings; -public class RemoteConnector extends AbstractTerminalConnector { +public class RemoteConnector extends AbstractTerminalConnector { private OutputStream fOutputStream; private InputStream fInputStream; private RemoteConnectionManager fConnection; diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.classpath b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.classpath deleted file mode 100644 index 81fe078c20c..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.classpath +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.gitignore b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.gitignore deleted file mode 100644 index ae3c1726048..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/bin/ diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.options b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.options deleted file mode 100644 index 8ec18dafab2..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.options +++ /dev/null @@ -1 +0,0 @@ -org.eclipse.tm.terminal.connector.ssh/debugmode = 0 diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.project b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.project deleted file mode 100644 index be963dbfb21..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.project +++ /dev/null @@ -1,45 +0,0 @@ - - - org.eclipse.tm.terminal.connector.ssh - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.pde.ManifestBuilder - - - - - org.eclipse.pde.SchemaBuilder - - - - - org.eclipse.pde.api.tools.apiAnalysisBuilder - - - - - - org.eclipse.pde.PluginNature - org.eclipse.jdt.core.javanature - org.eclipse.pde.api.tools.apiAnalysisNature - - - - 1329502091181 - - 10 - - org.eclipse.ui.ide.multiFilter - 1.0-name-matches-false-false-target - - - - diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.core.resources.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index 99f26c0203a..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -encoding/=UTF-8 diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.jdt.core.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 9df862f8d49..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,486 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.builder.cleanOutputFolder=clean -org.eclipse.jdt.core.builder.duplicateResourceTask=warning -org.eclipse.jdt.core.builder.invalidClasspath=abort -org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore -org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend -org.eclipse.jdt.core.circularClasspath=error -org.eclipse.jdt.core.classpath.exclusionPatterns=enabled -org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error -org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled -org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error -org.eclipse.jdt.core.codeComplete.argumentPrefixes= -org.eclipse.jdt.core.codeComplete.argumentSuffixes= -org.eclipse.jdt.core.codeComplete.fieldPrefixes= -org.eclipse.jdt.core.codeComplete.fieldSuffixes= -org.eclipse.jdt.core.codeComplete.localPrefixes= -org.eclipse.jdt.core.codeComplete.localSuffixes= -org.eclipse.jdt.core.codeComplete.staticFieldPrefixes= -org.eclipse.jdt.core.codeComplete.staticFieldSuffixes= -org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes= -org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes= -org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled -org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore -org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull -org.eclipse.jdt.core.compiler.annotation.nonnull.secondary= -org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault -org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary= -org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable -org.eclipse.jdt.core.compiler.annotation.nullable.secondary= -org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.methodParameters=generate -org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=17 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.doc.comment.support=enabled -org.eclipse.jdt.core.compiler.maxProblemPerUnit=100 -org.eclipse.jdt.core.compiler.problem.APILeak=warning -org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.autoboxing=ignore -org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning -org.eclipse.jdt.core.compiler.problem.deadCode=warning -org.eclipse.jdt.core.compiler.problem.deprecation=warning -org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled -org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled -org.eclipse.jdt.core.compiler.problem.discouragedReference=warning -org.eclipse.jdt.core.compiler.problem.emptyStatement=warning -org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore -org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning -org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled -org.eclipse.jdt.core.compiler.problem.fieldHiding=warning -org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning -org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning -org.eclipse.jdt.core.compiler.problem.forbiddenReference=error -org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning -org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled -org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning -org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning -org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore -org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore -org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled -org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled -org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled -org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected -org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore -org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error -org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore -org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning -org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled -org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled -org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public -org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag -org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled -org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled -org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled -org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore -org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore -org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning -org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning -org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning -org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning -org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning -org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error -org.eclipse.jdt.core.compiler.problem.nullReference=error -org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error -org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning -org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning -org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore -org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning -org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning -org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning -org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore -org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning -org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning -org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning -org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore -org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning -org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore -org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore -org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning -org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled -org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning -org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled -org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled -org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled -org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore -org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning -org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning -org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled -org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning -org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning -org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore -org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning -org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning -org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled -org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info -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.unstableAutoModuleName=warning -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled -org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore -org.eclipse.jdt.core.compiler.problem.unusedImport=warning -org.eclipse.jdt.core.compiler.problem.unusedLabel=warning -org.eclipse.jdt.core.compiler.problem.unusedLocal=warning -org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore -org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore -org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled -org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning -org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore -org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning -org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning -org.eclipse.jdt.core.compiler.release=enabled -org.eclipse.jdt.core.compiler.source=17 -org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false -org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647 -org.eclipse.jdt.core.formatter.align_type_members_on_columns=false -org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false -org.eclipse.jdt.core.formatter.align_with_spaces=false -org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_assignment=0 -org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 -org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16 -org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 -org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16 -org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 -org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0 -org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0 -org.eclipse.jdt.core.formatter.alignment_for_module_statements=16 -org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 -org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80 -org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16 -org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0 -org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0 -org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16 -org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_after_package=1 -org.eclipse.jdt.core.formatter.blank_lines_before_field=0 -org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 -org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 -org.eclipse.jdt.core.formatter.blank_lines_before_method=1 -org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 -org.eclipse.jdt.core.formatter.blank_lines_before_package=0 -org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 -org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 -org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true -org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false -org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true -org.eclipse.jdt.core.formatter.comment.format_block_comments=false -org.eclipse.jdt.core.formatter.comment.format_header=false -org.eclipse.jdt.core.formatter.comment.format_html=true -org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false -org.eclipse.jdt.core.formatter.comment.format_line_comments=false -org.eclipse.jdt.core.formatter.comment.format_source_code=true -org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false -org.eclipse.jdt.core.formatter.comment.indent_root_tags=false -org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert -org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert -org.eclipse.jdt.core.formatter.comment.line_length=80 -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=false -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true -org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_empty_lines=false -org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true -org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false -org.eclipse.jdt.core.formatter.indentation.size=4 -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert -org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert -org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert -org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert -org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert -org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert -org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert -org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.join_lines_in_comments=true -org.eclipse.jdt.core.formatter.join_wrapped_lines=true -org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false -org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false -org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false -org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false -org.eclipse.jdt.core.formatter.lineSplit=120 -org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false -org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 -org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 -org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines -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_additive_operator=true -org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false -org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true -org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true -org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true -org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true -org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true -org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true -org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true -org.eclipse.jdt.core.incompatibleJDKLevel=ignore -org.eclipse.jdt.core.incompleteClasspath=error -org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.jdt.launching.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.jdt.launching.prefs deleted file mode 100644 index f8a131b56e0..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.jdt.launching.prefs +++ /dev/null @@ -1,3 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.launching.PREF_COMPILER_COMPLIANCE_DOES_NOT_MATCH_JRE=warning -org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.jdt.ui.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.jdt.ui.prefs deleted file mode 100644 index d35ba9b5231..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.jdt.ui.prefs +++ /dev/null @@ -1,213 +0,0 @@ -cleanup.add_all=false -cleanup.add_default_serial_version_id=true -cleanup.add_generated_serial_version_id=false -cleanup.add_missing_annotations=true -cleanup.add_missing_deprecated_annotations=true -cleanup.add_missing_methods=false -cleanup.add_missing_nls_tags=false -cleanup.add_missing_override_annotations=true -cleanup.add_missing_override_annotations_interface_methods=true -cleanup.add_serial_version_id=false -cleanup.always_use_blocks=true -cleanup.always_use_parentheses_in_expressions=false -cleanup.always_use_this_for_non_static_field_access=false -cleanup.always_use_this_for_non_static_method_access=false -cleanup.array_with_curly=false -cleanup.arrays_fill=false -cleanup.bitwise_conditional_expression=false -cleanup.boolean_literal=false -cleanup.boolean_value_rather_than_comparison=false -cleanup.break_loop=false -cleanup.collection_cloning=false -cleanup.comparing_on_criteria=false -cleanup.comparison_statement=false -cleanup.controlflow_merge=false -cleanup.convert_functional_interfaces=false -cleanup.convert_to_enhanced_for_loop=false -cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true -cleanup.convert_to_switch_expressions=false -cleanup.correct_indentation=false -cleanup.do_while_rather_than_while=true -cleanup.double_negation=false -cleanup.else_if=false -cleanup.embedded_if=false -cleanup.evaluate_nullable=false -cleanup.extract_increment=false -cleanup.format_source_code=true -cleanup.format_source_code_changes_only=false -cleanup.hash=false -cleanup.if_condition=false -cleanup.insert_inferred_type_arguments=false -cleanup.instanceof=false -cleanup.instanceof_keyword=false -cleanup.invert_equals=false -cleanup.join=false -cleanup.lazy_logical_operator=false -cleanup.make_local_variable_final=true -cleanup.make_parameters_final=false -cleanup.make_private_fields_final=true -cleanup.make_type_abstract_if_missing_method=false -cleanup.make_variable_declarations_final=false -cleanup.map_cloning=false -cleanup.merge_conditional_blocks=false -cleanup.multi_catch=false -cleanup.never_use_blocks=false -cleanup.never_use_parentheses_in_expressions=true -cleanup.no_string_creation=false -cleanup.no_super=false -cleanup.number_suffix=false -cleanup.objects_equals=false -cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false -cleanup.operand_factorization=false -cleanup.organize_imports=true -cleanup.overridden_assignment=false -cleanup.plain_replacement=false -cleanup.precompile_regex=false -cleanup.primitive_comparison=false -cleanup.primitive_parsing=false -cleanup.primitive_rather_than_wrapper=false -cleanup.primitive_serialization=false -cleanup.pull_out_if_from_if_else=false -cleanup.pull_up_assignment=false -cleanup.push_down_negation=false -cleanup.qualify_static_field_accesses_with_declaring_class=false -cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -cleanup.qualify_static_member_accesses_with_declaring_class=false -cleanup.qualify_static_method_accesses_with_declaring_class=false -cleanup.reduce_indentation=false -cleanup.redundant_comparator=false -cleanup.redundant_falling_through_block_end=false -cleanup.remove_private_constructors=true -cleanup.remove_redundant_modifiers=false -cleanup.remove_redundant_semicolons=true -cleanup.remove_redundant_type_arguments=true -cleanup.remove_trailing_whitespaces=true -cleanup.remove_trailing_whitespaces_all=true -cleanup.remove_trailing_whitespaces_ignore_empty=false -cleanup.remove_unnecessary_array_creation=false -cleanup.remove_unnecessary_casts=true -cleanup.remove_unnecessary_nls_tags=false -cleanup.remove_unused_imports=true -cleanup.remove_unused_local_variables=false -cleanup.remove_unused_method_parameters=false -cleanup.remove_unused_private_fields=true -cleanup.remove_unused_private_members=false -cleanup.remove_unused_private_methods=true -cleanup.remove_unused_private_types=true -cleanup.return_expression=false -cleanup.simplify_lambda_expression_and_method_ref=false -cleanup.single_used_field=false -cleanup.sort_members=false -cleanup.sort_members_all=false -cleanup.standard_comparison=false -cleanup.static_inner_class=false -cleanup.strictly_equal_or_different=false -cleanup.stringbuffer_to_stringbuilder=false -cleanup.stringbuilder=false -cleanup.stringbuilder_for_local_vars=true -cleanup.stringconcat_to_textblock=false -cleanup.substring=false -cleanup.switch=false -cleanup.system_property=false -cleanup.system_property_boolean=false -cleanup.system_property_file_encoding=false -cleanup.system_property_file_separator=false -cleanup.system_property_line_separator=false -cleanup.system_property_path_separator=false -cleanup.ternary_operator=false -cleanup.try_with_resource=false -cleanup.unlooped_while=false -cleanup.unreachable_block=false -cleanup.use_anonymous_class_creation=false -cleanup.use_autoboxing=false -cleanup.use_blocks=false -cleanup.use_blocks_only_for_return_and_throw=false -cleanup.use_directly_map_method=false -cleanup.use_lambda=true -cleanup.use_parentheses_in_expressions=false -cleanup.use_string_is_blank=false -cleanup.use_this_for_non_static_field_access=false -cleanup.use_this_for_non_static_field_access_only_if_necessary=true -cleanup.use_this_for_non_static_method_access=false -cleanup.use_this_for_non_static_method_access_only_if_necessary=true -cleanup.use_unboxing=false -cleanup.use_var=false -cleanup.useless_continue=false -cleanup.useless_return=false -cleanup.valueof_rather_than_instantiation=false -cleanup_profile=_CDT -cleanup_settings_version=2 -eclipse.preferences.version=1 -editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true -formatter_profile=_CDT -formatter_settings_version=14 -internal.default.compliance=user -org.eclipse.jdt.ui.exception.name=e -org.eclipse.jdt.ui.gettersetter.use.is=true -org.eclipse.jdt.ui.ignorelowercasenames=true -org.eclipse.jdt.ui.importorder=java;javax;org;com; -org.eclipse.jdt.ui.keywordthis=false -org.eclipse.jdt.ui.ondemandthreshold=1000 -org.eclipse.jdt.ui.overrideannotation=true -org.eclipse.jdt.ui.staticondemandthreshold=1000 -org.eclipse.jdt.ui.text.custom_code_templates= -sp_cleanup.add_default_serial_version_id=true -sp_cleanup.add_generated_serial_version_id=false -sp_cleanup.add_missing_annotations=true -sp_cleanup.add_missing_deprecated_annotations=true -sp_cleanup.add_missing_methods=false -sp_cleanup.add_missing_nls_tags=false -sp_cleanup.add_missing_override_annotations=true -sp_cleanup.add_missing_override_annotations_interface_methods=true -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_functional_interfaces=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.insert_inferred_type_arguments=false -sp_cleanup.make_local_variable_final=true -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_redundant_modifiers=false -sp_cleanup.remove_redundant_semicolons=true -sp_cleanup.remove_redundant_type_arguments=true -sp_cleanup.remove_trailing_whitespaces=true -sp_cleanup.remove_trailing_whitespaces_all=true -sp_cleanup.remove_trailing_whitespaces_ignore_empty=false -sp_cleanup.remove_unnecessary_casts=true -sp_cleanup.remove_unnecessary_nls_tags=false -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_anonymous_class_creation=false -sp_cleanup.use_blocks=false -sp_cleanup.use_blocks_only_for_return_and_throw=false -sp_cleanup.use_lambda=true -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/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.pde.api.tools.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.pde.api.tools.prefs deleted file mode 100644 index ec9fbf321d0..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.pde.api.tools.prefs +++ /dev/null @@ -1,184 +0,0 @@ -ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error -ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error -ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error -ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error -ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error -ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error -API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error -API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error -API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error -API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error -API_USE_SCAN_FIELD_SEVERITY=Error -API_USE_SCAN_METHOD_SEVERITY=Error -API_USE_SCAN_TYPE_SEVERITY=Error -CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -CLASS_ELEMENT_TYPE_ADDED_FIELD=Error -CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error -CLASS_ELEMENT_TYPE_ADDED_METHOD=Error -CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error -CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error -CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error -CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error -CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error -CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error -CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error -CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error -CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error -CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error -CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error -CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error -CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error -CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error -CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error -CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error -CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error -CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error -CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error -CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error -CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error -CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error -CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error -ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error -ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error -ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error -ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error -ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error -ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error -ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error -ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error -ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error -ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error -FIELD_ELEMENT_TYPE_ADDED_VALUE=Error -FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error -FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error -FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error -FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error -FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error -FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error -FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error -FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error -FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error -FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error -ILLEGAL_EXTEND=Warning -ILLEGAL_IMPLEMENT=Warning -ILLEGAL_INSTANTIATE=Warning -ILLEGAL_OVERRIDE=Warning -ILLEGAL_REFERENCE=Warning -INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error -INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error -INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error -INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error -INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error -INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error -INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error -INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error -INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error -INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error -INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error -INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error -INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error -INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error -INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error -INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error -INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error -INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error -INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error -INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error -INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error -INVALID_ANNOTATION=Ignore -INVALID_JAVADOC_TAG=Error -INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning -LEAK_EXTEND=Warning -LEAK_FIELD_DECL=Warning -LEAK_IMPLEMENT=Warning -LEAK_METHOD_PARAM=Warning -LEAK_METHOD_RETURN_TYPE=Warning -METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error -METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error -METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error -METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error -METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error -METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error -METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error -METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error -METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error -METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error -METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error -METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error -METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error -METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error -MISSING_EE_DESCRIPTIONS=Warning -TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -UNUSED_PROBLEM_FILTERS=Warning -automatically_removed_unused_problem_filters=false -changed_execution_env=Error -eclipse.preferences.version=1 -incompatible_api_component_version=Error -incompatible_api_component_version_include_major_without_breaking_change=Disabled -incompatible_api_component_version_include_minor_without_api_change=Disabled -incompatible_api_component_version_report_major_without_breaking_change=Warning -incompatible_api_component_version_report_minor_without_api_change=Warning -invalid_since_tag_version=Error -malformed_since_tag=Error -missing_since_tag=Error -report_api_breakage_when_major_version_incremented=Disabled -report_resolution_errors_api_component=Warning diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.pde.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.pde.prefs deleted file mode 100644 index ffaa8e3f1a7..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/.settings/org.eclipse.pde.prefs +++ /dev/null @@ -1,36 +0,0 @@ -compilers.f.unresolved-features=1 -compilers.f.unresolved-plugins=1 -compilers.incompatible-environment=1 -compilers.p.build=1 -compilers.p.build.bin.includes=0 -compilers.p.build.encodings=2 -compilers.p.build.java.compiler=2 -compilers.p.build.java.compliance=1 -compilers.p.build.missing.output=2 -compilers.p.build.output.library=1 -compilers.p.build.source.library=1 -compilers.p.build.src.includes=0 -compilers.p.deprecated=1 -compilers.p.discouraged-class=1 -compilers.p.exec-env-too-low=1 -compilers.p.internal=1 -compilers.p.missing-packages=2 -compilers.p.missing-version-export-package=2 -compilers.p.missing-version-import-package=2 -compilers.p.missing-version-require-bundle=2 -compilers.p.no-required-att=0 -compilers.p.no.automatic.module=1 -compilers.p.not-externalized-att=1 -compilers.p.service.component.without.lazyactivation=1 -compilers.p.unknown-attribute=1 -compilers.p.unknown-class=0 -compilers.p.unknown-element=1 -compilers.p.unknown-identifier=0 -compilers.p.unknown-resource=0 -compilers.p.unresolved-ex-points=0 -compilers.p.unresolved-import=0 -compilers.s.create-docs=false -compilers.s.doc-folder=doc -compilers.s.open-tags=1 -compilers.use-project=true -eclipse.preferences.version=1 diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/META-INF/MANIFEST.MF b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/META-INF/MANIFEST.MF deleted file mode 100644 index 71243691f62..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/META-INF/MANIFEST.MF +++ /dev/null @@ -1,25 +0,0 @@ -Manifest-Version: 1.0 -Bundle-ManifestVersion: 2 -Bundle-Name: %pluginName -Bundle-SymbolicName: org.eclipse.tm.terminal.connector.ssh;singleton:=true -Bundle-Version: 4.8.600.qualifier -Bundle-Activator: org.eclipse.tm.terminal.connector.ssh.activator.UIPlugin -Bundle-Vendor: %providerName -Require-Bundle: org.eclipse.core.expressions;bundle-version="[3.9.400,4)", - org.eclipse.core.runtime;bundle-version="[3.33.0,4)", - org.eclipse.equinox.security;bundle-version="[1.4.600,2)", - org.eclipse.tm.terminal.view.core;bundle-version="[4.10.400,5)";resolution:=optional, - org.eclipse.tm.terminal.view.ui;bundle-version="[4.11.600,5)";resolution:=optional, - org.eclipse.tm.terminal.control;bundle-version="[5.6.0,6.0.0)", - org.eclipse.ui;bundle-version="[3.207.200,4)", - com.jcraft.jsch;bundle-version="[0.1.31,1.0.0)", - org.eclipse.jsch.core;bundle-version="[1.5.600,2.0.0)" -Bundle-RequiredExecutionEnvironment: JavaSE-17 -Bundle-ActivationPolicy: lazy -Bundle-Localization: plugin -Export-Package: org.eclipse.tm.terminal.connector.ssh.activator;x-internal:=true, - org.eclipse.tm.terminal.connector.ssh.connector, - org.eclipse.tm.terminal.connector.ssh.controls, - org.eclipse.tm.terminal.connector.ssh.launcher, - org.eclipse.tm.terminal.connector.ssh.nls;x-internal:=true -Automatic-Module-Name: org.eclipse.tm.terminal.connector.ssh diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/about.html b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/about.html deleted file mode 100644 index b3134865230..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/about.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - About - - - -

About This Content

- -

November 30, 2017

-

License

- -

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

- -

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

- - - - \ No newline at end of file diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/build.properties b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/build.properties deleted file mode 100644 index 296f6c62d52..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/build.properties +++ /dev/null @@ -1,23 +0,0 @@ -############################################################################### -# Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved. -# This program and the accompanying materials are made available under the terms -# of the Eclipse Public License 2.0 which accompanies this distribution, and is -# available at https://www.eclipse.org/legal/epl-2.0/ -# -# SPDX-License-Identifier: EPL-2.0 -# -# Contributors: -# Wind River Systems - initial API and implementation -############################################################################### -source.. = src/ -output.. = bin/ -bin.includes = META-INF/,\ - .,\ - plugin.properties,\ - plugin.xml,\ - about.html,\ - about.ini,\ - about.mappings,\ - about.properties,\ - cdt_logo_icon32.png -src.includes = about.html diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/plugin.properties b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/plugin.properties deleted file mode 100644 index cbbf5c4aa02..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/plugin.properties +++ /dev/null @@ -1,22 +0,0 @@ -################################################################################## -# Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. -# This program and the accompanying materials are made available under the terms -# of the Eclipse Public License 2.0 which accompanies this distribution, and is -# available at https://www.eclipse.org/legal/epl-2.0/ -# -# SPDX-License-Identifier: EPL-2.0 -# -# Contributors: -# Wind River Systems - initial API and implementation -################################################################################## - -pluginName = Terminal SSH Connector -providerName = Eclipse CDT - -# ----- Terminal Connector ----- - -SshConnector.label=SSH - -# ----- Terminal Launcher Delegates ----- - -SshLauncherDelegate.label=SSH Terminal \ No newline at end of file diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/plugin.xml b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/plugin.xml deleted file mode 100644 index 5c9ea94f3c4..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/plugin.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/activator/UIPlugin.java b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/activator/UIPlugin.java deleted file mode 100644 index 598f41ef17b..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/activator/UIPlugin.java +++ /dev/null @@ -1,145 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.ssh.activator; - -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.resource.ImageRegistry; -import org.eclipse.jsch.core.IJSchService; -import org.eclipse.swt.graphics.Image; -import org.eclipse.tm.terminal.connector.ssh.connector.SshConnection; -import org.eclipse.tm.terminal.view.core.tracing.TraceHandler; -import org.eclipse.ui.plugin.AbstractUIPlugin; -import org.osgi.framework.BundleContext; -import org.osgi.util.tracker.ServiceTracker; - -/** - * The activator class controls the plug-in life cycle - */ -public class UIPlugin extends AbstractUIPlugin { - // The shared instance - private static UIPlugin plugin; - // The trace handler instance - private static volatile TraceHandler traceHandler; - - // ServiceTracker for IJschService - private ServiceTracker tracker; - - /** - * The constructor - */ - public UIPlugin() { - } - - /** - * Returns the shared instance - * - * @return the shared instance - */ - public static UIPlugin getDefault() { - return plugin; - } - - /** - * Convenience method which returns the unique identifier of this plugin. - */ - public static String getUniqueIdentifier() { - if (getDefault() != null && getDefault().getBundle() != null) { - return getDefault().getBundle().getSymbolicName(); - } - return "org.eclipse.tm.terminal.connector.ssh"; //$NON-NLS-1$ - } - - /** - * Returns the bundles trace handler. - * - * @return The bundles trace handler. - */ - public static TraceHandler getTraceHandler() { - if (traceHandler == null) { - traceHandler = new TraceHandler(getUniqueIdentifier()); - } - return traceHandler; - } - - //--------------------------------------------------------------------------- - // - //--------------------------------------------------------------------------- - - /* (non-Javadoc) - * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext) - */ - @SuppressWarnings("unchecked") - @Override - public void start(BundleContext context) throws Exception { - super.start(context); - plugin = this; - - tracker = new ServiceTracker(getBundle().getBundleContext(), IJSchService.class.getName(), null); - tracker.open(); - } - - /* (non-Javadoc) - * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext) - */ - @Override - public void stop(BundleContext context) throws Exception { - try { - SshConnection.shutdown(); - tracker.close(); - } finally { - plugin = null; - super.stop(context); - } - } - - /** - * Returns an instance of IJSchService from the OSGi Registry. - * @return An instance of IJSchService, or null if no - * IJschService service is available. - */ - public IJSchService getJSchService() { - return (IJSchService) tracker.getService(); - } - - //--------------------------------------------------------------------------- - // - //--------------------------------------------------------------------------- - - /* (non-Javadoc) - * @see org.eclipse.ui.plugin.AbstractUIPlugin#initializeImageRegistry(org.eclipse.jface.resource.ImageRegistry) - */ - @Override - protected void initializeImageRegistry(ImageRegistry registry) { - } - - /** - * Loads the image registered under the specified key from the image - * registry and returns the Image object instance. - * - * @param key The key the image is registered with. - * @return The Image object instance or null. - */ - public static Image getImage(String key) { - return getDefault().getImageRegistry().get(key); - } - - /** - * Loads the image registered under the specified key from the image - * registry and returns the ImageDescriptor object instance. - * - * @param key The key the image is registered with. - * @return The ImageDescriptor object instance or null. - */ - public static ImageDescriptor getImageDescriptor(String key) { - return getDefault().getImageRegistry().getDescriptor(key); - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/ISshConstants.java b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/ISshConstants.java deleted file mode 100644 index 0d4bd371467..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/ISshConstants.java +++ /dev/null @@ -1,27 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2018 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * IBM Corporation - initial API and implementation - * Martin Oberhuber (Wind River) - extracted from various team.cvs plugins - * Martin Oberhuber (Wind River) - [175686] Adapted to new IJSchService API - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.ssh.connector; - -/** - * Defines the constants used by the terminal.ssh Plugin - */ -public interface ISshConstants { - - // These are from cvs.ui.IHelpContextIds - public static final String CVSUIPREFIX = "org.eclipse.team.cvs.ui."; //$NON-NLS-1$ - public static final String HELP_USER_VALIDATION_DIALOG = CVSUIPREFIX + "user_validation_dialog_context"; //$NON-NLS-1$ - public static final String HELP_KEYBOARD_INTERACTIVE_DIALOG = CVSUIPREFIX + "keyboard_interactive_dialog_context"; //$NON-NLS-1$ - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/ISshSettings.java b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/ISshSettings.java deleted file mode 100644 index 65d2b0c69e4..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/ISshSettings.java +++ /dev/null @@ -1,81 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - * Martin Oberhuber (Wind River) - fixed copyright headers and beautified - * Johnson Ma (Wind River) - [218880] Add UI setting for ssh keepalives - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.ssh.connector; - -import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore; - -public interface ISshSettings { - - public static int DEFAULT_SSH_PORT = 22; - - /** - * Get the host name or IP address of remote system to connect. - * @return host name or IP address of the remote system. - */ - String getHost(); - - /** - * Get the login name for connecting to the remote system. - * @return remote login name - */ - String getUser(); - - /** - * Get the password for connecting to the remote system. - * May be empty if connecting via SSH public key authentication - * (with or without passphrase). - * @return password to use - */ - String getPassword(); - - /** - * Get the timeout (in seconds) after which the SSH connection is assumed dead. - * @return timeout (in seconds) for the SSH connection. - */ - int getTimeout(); - - /** - * Get the keepalive interval (in seconds). - * After this time of inactivity, the SSH connector will send a message to the - * remote system in order to avoid timeouts on the remote. A maximum of 6 - * keepalive messages will be sent if enabled. When set to 0, the keepalive - * feature is disabled. - * @return interval (in seconds) for keepalive messages. - */ - int getKeepalive(); - - /** - * Get the TCP/IP port on the remote system to use. - * @return TCP/IP port on the remote system to use. - */ - int getPort(); - - /** - * Return a human-readable String summarizing all relevant connection data. - * This String can be displayed in the Terminal caption, for instance. - * @return a human-readable String summarizing relevant connection data. - */ - String getSummary(); - - /** - * Load connection data from a settings store. - * @param store the settings store to access. - */ - void load(ISettingsStore store); - - /** - * Store connection data into a settings store. - * @param store the settings store to access. - */ - void save(ISettingsStore store); -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/KeyboardInteractiveDialog.java b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/KeyboardInteractiveDialog.java deleted file mode 100644 index 8cbff227e79..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/KeyboardInteractiveDialog.java +++ /dev/null @@ -1,196 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2018 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Atsuhiko Yamanaka, JCraft,Inc. - initial API and implementation. - * IBM Corporation - ongoing maintenance - * Martin Oberhuber (Wind River) - copied and adapted from team.cvs.ui - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.ssh.connector; - -import org.eclipse.jface.dialogs.Dialog; -import org.eclipse.jface.dialogs.IDialogConstants; -import org.eclipse.jface.dialogs.TrayDialog; -import org.eclipse.jface.window.Window; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.swt.widgets.Text; -import org.eclipse.ui.PlatformUI; - -/** - * A dialog for keyboad-interactive authentication for the ssh2 connection. - */ -public class KeyboardInteractiveDialog extends TrayDialog { - // widgets - private Text[] texts; - - protected String domain; - protected String destination; - protected String name; - protected String instruction; - protected String lang; - protected String[] prompt; - protected boolean[] echo; - private String message; - private String[] result; - - /** - * Creates a nwe KeyboardInteractiveDialog. - * - * @param parentShell the parent shell - * @param connectionId an id for the connection - * @param destination the location - * @param name the name - * @param instruction the instruction - * @param prompt the titles for textfields - * @param echo '*' should be used or not - */ - public KeyboardInteractiveDialog(Shell parentShell, String connectionId, String destination, String name, - String instruction, String[] prompt, boolean[] echo) { - super(parentShell); - this.domain = connectionId; - this.destination = destination; - this.name = name; - this.instruction = instruction; - this.prompt = prompt; - this.echo = echo; - this.message = NLS.bind(SshMessages.KeyboardInteractiveDialog_message, - new String[] { destination + (name != null && name.length() > 0 ? ": " + name : "") }); //NON-NLS-1$ //$NON-NLS-1$ //$NON-NLS-2$ - } - - /** - * @see Window#configureShell - */ - @Override - protected void configureShell(Shell newShell) { - super.configureShell(newShell); - newShell.setText(message); - } - - /** - * @see Window#create - */ - @Override - public void create() { - super.create(); - if (texts.length > 0) { - texts[0].setFocus(); - } - } - - /** - * @see Dialog#createDialogArea - */ - @Override - protected Control createDialogArea(Composite parent) { - Composite main = new Composite(parent, SWT.NONE); - GridLayout layout = new GridLayout(); - layout.numColumns = 3; - main.setLayout(layout); - main.setLayoutData(new GridData(GridData.FILL_BOTH)); - - // set F1 help - PlatformUI.getWorkbench().getHelpSystem().setHelp(main, ISshConstants.HELP_KEYBOARD_INTERACTIVE_DIALOG); - - if (message != null) { - Label messageLabel = new Label(main, SWT.WRAP); - messageLabel.setText(message); - GridData data = new GridData(GridData.FILL_HORIZONTAL); - data.horizontalSpan = 3; - messageLabel.setLayoutData(data); - } - if (domain != null) { - Label label = new Label(main, SWT.WRAP); - label.setText(NLS.bind(SshMessages.KeyboardInteractiveDialog_labelConnection, new String[] { domain })); - GridData data = new GridData(GridData.FILL_HORIZONTAL); - data.horizontalSpan = 3; - label.setLayoutData(data); - } - if (instruction != null && instruction.length() > 0) { - Label messageLabel = new Label(main, SWT.WRAP); - messageLabel.setText(instruction); - GridData data = new GridData(GridData.FILL_HORIZONTAL); - data.horizontalSpan = 3; - messageLabel.setLayoutData(data); - } - createPasswordFields(main); - return main; - } - - /** - * Creates the widgets that represent the entry area. - * - * @param parent the parent of the widgets - */ - @SuppressWarnings("unused") - protected void createPasswordFields(Composite parent) { - texts = new Text[prompt.length]; - - for (int i = 0; i < prompt.length; i++) { - new Label(parent, SWT.NONE).setText(prompt[i]); - texts[i] = new Text(parent, SWT.BORDER); - GridData data = new GridData(GridData.FILL_HORIZONTAL); - data.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.ENTRY_FIELD_WIDTH); - texts[i].setLayoutData(data); - - if (!echo[i]) { - texts[i].setEchoChar('*'); - } - new Label(parent, SWT.NONE); - } - - } - - /** - * Returns the entered values, or null - * if the user cancelled. - * - * @return the entered values - */ - public String[] getResult() { - return result; - } - - /** - * Notifies that the ok button of this dialog has been pressed. - *

- * The default implementation of this framework method sets - * this dialog's return code to Window.OK - * and closes the dialog. Subclasses may override. - *

- */ - @Override - protected void okPressed() { - result = new String[prompt.length]; - for (int i = 0; i < texts.length; i++) { - result[i] = texts[i].getText(); - } - super.okPressed(); - } - - /** - * Notifies that the cancel button of this dialog has been pressed. - *

- * The default implementation of this framework method sets - * this dialog's return code to Window.CANCEL - * and closes the dialog. Subclasses may override. - *

- */ - @Override - protected void cancelPressed() { - result = null; - super.cancelPressed(); - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshConnection.java b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshConnection.java deleted file mode 100644 index ee92426bfe1..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshConnection.java +++ /dev/null @@ -1,382 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2015 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - * Martin Oberhuber (Wind River) - fixed copyright headers and beautified - * Martin Oberhuber (Wind River) - [175686] Adapted to new IJSchService API - * - copied code from org.eclipse.team.cvs.ssh2/JSchSession (Copyright IBM) - * Martin Oberhuber (Wind River) - [198790] make SSH createSession() protected - * Mikhail Kalugin - [201864] Fix Terminal SSH keyboard interactive authentication - * Martin Oberhuber (Wind River) - [155026] Add keepalives for SSH connection - * Johnson Ma (Wind River) - [218880] Add UI setting for ssh keepalives - * Martin Oberhuber (Wind River) - [225792] Rename SshConnector.getTelnetSettings() to getSshSettings() - * Martin Oberhuber (Wind River) - [168197] Replace JFace MessagDialog by SWT MessageBox - * Martin Oberhuber (Wind River) - [205674][ssh] Terminal remains "connecting" when authentication is cancelled - * Michael Scharf (Wind River) - 240420: [terminal][ssh]Channel is not closed when the connection is closed with the close button - * Martin Oberhuber (Wind River) - [206919] Improve SSH Terminal Error Reporting - * Andrei Sobolev (Xored) - [250456] Ssh banner message causes IllegalArgumentException popup - * Anton Leherbauer (Wind River) - [453393] Add support for copying wrapped lines without line break - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.ssh.connector; - -import java.io.IOException; -import java.io.InputStream; -import java.io.InterruptedIOException; - -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.NullProgressMonitor; -import org.eclipse.core.runtime.OperationCanceledException; -import org.eclipse.jface.window.Window; -import org.eclipse.jsch.core.IJSchService; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.SWT; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.MessageBox; -import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl; -import org.eclipse.tm.internal.terminal.provisional.api.Logger; -import org.eclipse.tm.internal.terminal.provisional.api.TerminalState; -import org.eclipse.tm.terminal.connector.ssh.activator.UIPlugin; - -import com.jcraft.jsch.ChannelShell; -import com.jcraft.jsch.JSchException; -import com.jcraft.jsch.Session; -import com.jcraft.jsch.UIKeyboardInteractive; -import com.jcraft.jsch.UserInfo; - -public class SshConnection extends Thread { - private static int fgNo; - /* default */ final ITerminalControl fControl; - private final SshConnector fConn; - private Session fSession; - private boolean fDisconnectHasBeenCalled; - - protected SshConnection(SshConnector conn, ITerminalControl control) { - super("SshConnection-" + fgNo++); //$NON-NLS-1$ - fControl = control; - fConn = conn; - fControl.setState(TerminalState.CONNECTING); - } - - //---------------------------------------------------------------------- - // - //---------------------------------------------------------------------- - - /** - * Create a Jsch session. - * Subclasses can override in order to replace the UserInfo wrapper - * (for non-interactive usage, for instance), or in order to change - * the Jsch config (for instance, in order to switch off strict - * host key checking or in order to add specific ciphers). - */ - protected Session createSession(String username, String password, String hostname, int port, UserInfo wrapperUI, - IProgressMonitor monitor) throws JSchException { - IJSchService service = UIPlugin.getDefault().getJSchService(); - if (service == null) - return null; - Session session = service.createSession(hostname, port, username); - //session.setTimeout(getSshTimeoutInMillis()); - session.setTimeout(0); //never time out on the session - session.setServerAliveCountMax(6); //give up after 6 tries (remote will be dead after 30 min) - if (password != null) - session.setPassword(password); - session.setUserInfo(wrapperUI); - return session; - } - - public static void shutdown() { - //TODO: Store all Jsch sessions in a pool and disconnect them on shutdown - } - - //---------------------------------------------------------------------- - // - //---------------------------------------------------------------------- - - @Override - public void run() { - boolean connectSucceeded = false; - String host = ""; //$NON-NLS-1$ - int port = ISshSettings.DEFAULT_SSH_PORT; - try { - int nTimeout = fConn.getSshSettings().getTimeout() * 1000; - int nKeepalive = fConn.getSshSettings().getKeepalive() * 1000; - host = fConn.getSshSettings().getHost(); - String user = fConn.getSshSettings().getUser(); - String password = fConn.getSshSettings().getPassword(); - port = fConn.getSshSettings().getPort(); - - UserInfo ui = new MyUserInfo(null, user, password); - - Session session = createSession(user, password, host, port, ui, new NullProgressMonitor()); - synchronized (this) { - fSession = session; - } - - //java.util.Hashtable config=new java.util.Hashtable(); - //config.put("StrictHostKeyChecking", "no"); - //session.setConfig(config); - //ui.aboutToConnect(); - if (nKeepalive > 0) { - session.setServerAliveInterval(nKeepalive); //default is 5 minutes - } - // dont try to connect if disconnect has been requested already - synchronized (this) { - if (fDisconnectHasBeenCalled) - return; - } - - session.connect(nTimeout); // making connection with timeout. - // if we got disconnected, do not continue - if (!isSessionConnected()) - return; - ChannelShell channel = (ChannelShell) session.openChannel("shell"); //$NON-NLS-1$ - channel.setPtyType("xterm"); //$NON-NLS-1$ - // TERM=xterm implies VT100 line wrapping mode - fControl.setVT100LineWrapping(true); - channel.connect(); - - // maybe the terminal was disconnected while we were connecting - if (isSessionConnected() && channel.isConnected()) { - connectSucceeded = true; - fConn.setInputStream(channel.getInputStream()); - fConn.setOutputStream(channel.getOutputStream()); - fConn.setChannel(channel); - fControl.setState(TerminalState.CONNECTED); - try { - // read data until the connection gets terminated - readDataForever(fConn.getInputStream()); - } catch (InterruptedIOException e) { - // we got interrupted: we are done... - } - } - } catch (Exception e) { - Throwable cause = e; - while (cause.getCause() != null) { - cause = cause.getCause(); - } - String origMsg = cause.getMessage(); - String msg = SshMessages.getMessageFor(cause); - if ((cause instanceof JSchException) && origMsg != null && origMsg.startsWith("Auth")) { //$NON-NLS-1$ - if (origMsg.indexOf("cancel") >= 0) { //$NON-NLS-1$ - msg = SshMessages.SSH_AUTH_CANCEL; - } else if (origMsg.indexOf("fail") >= 0) { //$NON-NLS-1$ - msg = SshMessages.SSH_AUTH_FAIL; - } - } - if (!connectSucceeded) { - String hostPort = host; - if (port != ISshSettings.DEFAULT_SSH_PORT) { - hostPort = hostPort + ':' + port; - } - msg = NLS.bind(SshMessages.ERROR_CONNECTING, hostPort, msg); - } - connectFailed(msg, msg); - } finally { - // make sure the terminal is disconnected when the thread ends - try { - disconnect(); - } finally { - // when reading is done, we set the state to closed - fControl.setState(TerminalState.CLOSED); - } - } - } - - /* default */ synchronized boolean isSessionConnected() { - return !fDisconnectHasBeenCalled && fSession != null && fSession.isConnected(); - } - - /** - * disconnect the ssh session - */ - void disconnect() { - interrupt(); - synchronized (this) { - fDisconnectHasBeenCalled = true; - if (fSession != null) { - try { - fSession.disconnect(); - } catch (Exception e) { - // Ignore NPE due to bug in JSch if disconnecting - // while not yet authenticated - } - fSession = null; - } - } - } - - /** - * Read the data from the ssh connection and display it in the terminal. - * @param in - * @throws IOException - */ - private void readDataForever(InputStream in) throws IOException { - // read the data - byte bytes[] = new byte[32 * 1024]; - int n; - // read until the thread gets interrupted.... - while ((n = in.read(bytes)) != -1) { - fControl.getRemoteToTerminalOutputStream().write(bytes, 0, n); - } - } - - protected static Display getStandardDisplay() { - Display display = Display.getCurrent(); - if (display == null) { - display = Display.getDefault(); - } - return display; - } - - private class MyUserInfo implements UserInfo, UIKeyboardInteractive { - /* default */ final String fConnectionId; - /* default */ final String fUser; - private String fPassword; - private String fPassphrase; - private int fAttemptCount; - - public MyUserInfo(String connectionId, String user, String password) { - fConnectionId = connectionId; - fUser = user; - fPassword = password; - } - - @Override - public String getPassword() { - return fPassword; - } - - @Override - public boolean promptYesNo(final String str) { - //need to switch to UI thread for prompting - final boolean[] retval = new boolean[1]; - Display.getDefault().syncExec(new Runnable() { - @Override - public void run() { - // [168197] Replace JFace MessagDialog by SWT MessageBox - //retval[0] = MessageDialog.openQuestion(null, SshMessages.WARNING, str); - if (isSessionConnected()) { - MessageBox mb = new MessageBox(fControl.getShell(), SWT.ICON_QUESTION | SWT.YES | SWT.NO); - mb.setText(SshMessages.WARNING); - mb.setMessage(str); - retval[0] = (mb.open() == SWT.YES); - } else { - retval[0] = false; - } - } - }); - return retval[0]; - } - - private String promptSecret(final String message) { - final String[] retval = new String[1]; - getStandardDisplay().syncExec(new Runnable() { - @Override - public void run() { - if (isSessionConnected()) { - UserValidationDialog uvd = new UserValidationDialog(null, fConnectionId, fUser, message); - uvd.setUsernameMutable(false); - if (uvd.open() == Window.OK) { - retval[0] = uvd.getPassword(); - } else { - retval[0] = null; - } - } else { - retval[0] = null; - } - } - }); - return retval[0]; - } - - @Override - public String getPassphrase() { - return fPassphrase; - } - - @Override - public boolean promptPassphrase(String message) { - fPassphrase = promptSecret(message); - return (fPassphrase != null); - } - - @Override - public boolean promptPassword(final String message) { - String _password = promptSecret(message); - if (_password != null) { - fPassword = _password; - return true; - } - return false; - } - - @Override - public void showMessage(final String message) { - Display.getDefault().syncExec(new Runnable() { - @Override - public void run() { - // [168197] Replace JFace MessagDialog by SWT MessageBox - // MessageDialog.openInformation(null, SshMessages.INFO, message); - if (isSessionConnected()) { - MessageBox mb = new MessageBox(fControl.getShell(), SWT.ICON_INFORMATION | SWT.OK); - mb.setText(SshMessages.INFO); - mb.setMessage(message); - mb.open(); - } - } - }); - } - - @Override - public String[] promptKeyboardInteractive(final String destination, final String name, final String instruction, - final String[] prompt, final boolean[] echo) { - if (prompt.length == 0) { - // No need to prompt, just return an empty String array - return new String[0]; - } - try { - if (fAttemptCount == 0 && fPassword != null && prompt.length == 1 - && prompt[0].trim().equalsIgnoreCase("password:")) { //$NON-NLS-1$ - // Return the provided password the first time but always prompt on subsequent tries - fAttemptCount++; - return new String[] { fPassword }; - } - final String[][] finResult = new String[1][]; - getStandardDisplay().syncExec(new Runnable() { - @Override - public void run() { - if (isSessionConnected()) { - KeyboardInteractiveDialog dialog = new KeyboardInteractiveDialog(null, fConnectionId, - destination, name, instruction, prompt, echo); - dialog.open(); - finResult[0] = dialog.getResult(); - } else { - finResult[0] = null; // indicate cancel to JSch - } - } - }); - String[] result = finResult[0]; - if (result == null) - return null; // cancelled - if (result.length == 1 && prompt.length == 1 && prompt[0].trim().equalsIgnoreCase("password:")) { //$NON-NLS-1$ - fPassword = result[0]; - } - fAttemptCount++; - return result; - } catch (OperationCanceledException e) { - return null; - } - } - } - - private void connectFailed(String terminalText, String msg) { - Logger.log(terminalText); - fControl.displayTextInTerminal(terminalText); - // fControl.setMsg(msg); - } - -} \ No newline at end of file diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshConnector.java b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshConnector.java deleted file mode 100644 index a402fdc8b70..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshConnector.java +++ /dev/null @@ -1,150 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - * Martin Oberhuber (Wind River) - fixed copyright headers and beautified - * Martin Oberhuber (Wind River) - [225792] Rename SshConnector.getTelnetSettings() to getSshSettings() - * Martin Oberhuber (Wind River) - [225853][api] Provide more default functionality in TerminalConnectorImpl - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.ssh.connector; - -import java.io.InputStream; -import java.io.OutputStream; - -import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore; -import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl; -import org.eclipse.tm.internal.terminal.provisional.api.Logger; -import org.eclipse.tm.internal.terminal.provisional.api.NullSettingsStore; -import org.eclipse.tm.internal.terminal.provisional.api.provider.TerminalConnectorImpl; - -import com.jcraft.jsch.ChannelShell; -import com.jcraft.jsch.JSch; - -public class SshConnector extends TerminalConnectorImpl { - private OutputStream fOutputStream; - private InputStream fInputStream; - private JSch fJsch; - private ChannelShell fChannel; - private SshConnection fConnection; - private final SshSettings fSettings; - private int fWidth; - private int fHeight; - - public SshConnector() { - this(new SshSettings()); - } - - public SshConnector(SshSettings settings) { - fSettings = settings; - } - - @Override - public void initialize() throws Exception { - fJsch = new JSch(); - } - - @Override - public void connect(ITerminalControl control) { - super.connect(control); - fConnection = new SshConnection(this, control); - fConnection.start(); - } - - @Override - synchronized public void doDisconnect() { - fConnection.disconnect(); - if (getInputStream() != null) { - try { - getInputStream().close(); - } catch (Exception exception) { - Logger.logException(exception); - } - } - - if (getTerminalToRemoteStream() != null) { - try { - getTerminalToRemoteStream().close(); - } catch (Exception exception) { - Logger.logException(exception); - } - } - } - - @Override - public void setTerminalSize(int newWidth, int newHeight) { - if (fChannel != null && (newWidth != fWidth || newHeight != fHeight)) { - //avoid excessive communications due to change size requests by caching previous size - fChannel.setPtySize(newWidth, newHeight, 8 * newWidth, 8 * newHeight); - fWidth = newWidth; - fHeight = newHeight; - } - } - - public InputStream getInputStream() { - return fInputStream; - } - - @Override - public OutputStream getTerminalToRemoteStream() { - return fOutputStream; - } - - void setInputStream(InputStream inputStream) { - fInputStream = inputStream; - } - - void setOutputStream(OutputStream outputStream) { - fOutputStream = outputStream; - } - - /** - * Return the SSH Settings. - * - * @return the settings for a concrete connection. - * @since org.eclipse.tm.terminal.ssh 2.0 renamed from getTelnetSettings() - */ - public ISshSettings getSshSettings() { - return fSettings; - } - - @Override - public void setDefaultSettings() { - fSettings.load(new NullSettingsStore()); - } - - @Override - public String getSettingsSummary() { - return fSettings.getSummary(); - } - - @Override - public void load(ISettingsStore store) { - fSettings.load(store); - } - - @Override - public void save(ISettingsStore store) { - fSettings.save(store); - } - - protected JSch getJsch() { - return fJsch; - } - - ChannelShell getChannel() { - return fChannel; - } - - void setChannel(ChannelShell channel) { - fChannel = channel; - fWidth = -1; - fHeight = -1; - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshMessages.java b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshMessages.java deleted file mode 100644 index 3e8bf0cc648..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshMessages.java +++ /dev/null @@ -1,99 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - * Martin Oberhuber (Wind River) - fixed copyright headers and beautified - * Johnson Ma (Wind River) - [218880] Add UI setting for ssh keepalives - * Martin Oberhuber (Wind River) - [206919] Improve SSH Terminal Error Reporting (Adopting code from org.eclipse.team.cvs.core) - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.ssh.connector; - -import java.lang.reflect.Field; - -import org.eclipse.osgi.util.NLS; - -public class SshMessages extends NLS { - static { - NLS.initializeMessages(SshMessages.class.getName(), SshMessages.class); - } - public static String USER; - public static String HOST; - public static String PORT; - public static String PASSWORD; - public static String TIMEOUT; - public static String KEEPALIVE; - public static String KEEPALIVE_Tooltip; - public static String WARNING; - public static String INFO; - - //These are from org.eclipse.team.cvs.ui.CVSUIMessages - public static String UserValidationDialog_required; - public static String UserValidationDialog_labelUser; - public static String UserValidationDialog_labelPassword; - public static String UserValidationDialog_password; - public static String UserValidationDialog_user; - public static String UserValidationDialog_5; - public static String UserValidationDialog_6; - public static String UserValidationDialog_7; - - public static String KeyboardInteractiveDialog_message; - public static String KeyboardInteractiveDialog_labelConnection; - - public static String ERROR_CONNECTING; - public static String TerminalCommunicationException_io; - public static String SSH_AUTH_CANCEL; - public static String SSH_AUTH_FAIL; - public static String com_jcraft_jsch_JSchException; - public static String java_io_IOException; - public static String java_io_EOFException; - public static String java_io_InterruptedIOException; - public static String java_net_UnknownHostException; - public static String java_net_ConnectException; - public static String java_net_SocketException; - public static String java_net_NoRouteToHostException; - - // - - public static String getMessageFor(Throwable throwable) { - String message = getMessage(getMessageKey(throwable)); - if (message == null) { - message = NLS.bind(SshMessages.TerminalCommunicationException_io, (new Object[] { throwable.toString() })); - } else { - message = NLS.bind(message, (new Object[] { throwable.getMessage() })); - } - return message; - } - - private static String getMessageKey(Throwable t) { - String name = t.getClass().getName(); - name = name.replace('.', '_'); - return name; - } - - // - // - - public static String getMessage(String key) { - try { - Field f = SshMessages.class.getDeclaredField(key); - Object o = f.get(null); - if (o instanceof String) - return (String) o; - } catch (SecurityException e) { - } catch (NoSuchFieldException e) { - } catch (IllegalArgumentException e) { - } catch (IllegalAccessException e) { - } - return null; - } - - // - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshMessages.properties b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshMessages.properties deleted file mode 100644 index 70d31247c9e..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshMessages.properties +++ /dev/null @@ -1,55 +0,0 @@ -############################################################################### -# Copyright (c) 2000, 2018 Wind River Systems, Inc. and others. -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Eclipse Public License 2.0 -# which accompanies this distribution, and is available at -# https://www.eclipse.org/legal/epl-2.0/ -# -# SPDX-License-Identifier: EPL-2.0 -# -# Contributors: -# Michael Scharf (Wind River) - initial API and implementation -# Martin Oberhuber (Wind River) - fixed copyright headers and beautified -# Johnson Ma (Wind River) - [218880] Add UI setting for ssh keepalives -# Martin Oberhuber (Wind River) - [206919] Improve SSH Terminal Error Reporting (Adopting code from org.eclipse.team.cvs.core) -############################################################################### - -# NLS_MESSAGEFORMAT_VAR - -HOST = Host -USER = User -PORT = Port -PASSWORD = Password -TIMEOUT = Timeout (sec) -KEEPALIVE = KeepAlive (sec) -KEEPALIVE_Tooltip=Interval for sending keepalive messages in case of inactivity. Enter 0 to disable keepalives. -WARNING = Warning -INFO = Info - -#These are from cvs.ui/messages.properties -UserValidationDialog_required=Password Required -UserValidationDialog_labelUser={0} -UserValidationDialog_labelPassword={1} -UserValidationDialog_password=&Password: -UserValidationDialog_user=&User name: -UserValidationDialog_5=Connection: -UserValidationDialog_6=&Save password -UserValidationDialog_7=Saved passwords are stored on your computer in a file that is difficult, but not impossible, for an intruder to read. - -KeyboardInteractiveDialog_message=Keyboard Interactive authentication for {0} -KeyboardInteractiveDialog_labelConnection=Enter values for the following connection: {0} - -# from org.eclipse.team.cvs.core/messages.properties (c) IBM 2000, 2007 -ERROR_CONNECTING=Error connecting {0} : {1} -TerminalCommunicationException_io=Communication error: {0} -SSH_AUTH_CANCEL=SSH Authentication cancelled. -SSH_AUTH_FAIL=SSH Authentication failed. -com_jcraft_jsch_JSchException=SSH client error: {0} -java_io_IOException=I/O exception occurred: {0} -java_io_EOFException=End of file encountered: {0} -java_io_InterruptedIOException=I/O has been interrupted. -java_net_UnknownHostException=Cannot locate host: {0} -java_net_ConnectException=Cannot connect to host: {0} -java_net_SocketException=Socket Exception: {0} -java_net_NoRouteToHostException={0} -# from org.eclipse.team.cvs.core diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshSettings.java b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshSettings.java deleted file mode 100644 index ea8ad058fbd..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshSettings.java +++ /dev/null @@ -1,140 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - * Martin Oberhuber (Wind River) - fixed copyright headers and beautified - * Mikhail Kalugin - [201867] Improve Terminal SSH connection summary string - * Johnson Ma (Wind River) - [218880] Add UI setting for ssh keepalives - * Bryan Hunt - [313991] cannot programatically pass password to SshConnector - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.ssh.connector; - -import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore; - -public class SshSettings implements ISshSettings { - protected String fHost; - protected String fUser; - protected String fPassword; - protected String fPort; - protected String fTimeout; - protected String fKeepalive; - - @Override - public String getHost() { - return fHost; - } - - public void setHost(String strHost) { - fHost = strHost; - } - - @Override - public String getSummary() { - String settings = getUser() + '@' + getHost(); - if (getPort() != ISshSettings.DEFAULT_SSH_PORT) { - settings += ":" + getPort(); //$NON-NLS-1$ - } - return settings; - } - - @Override - public void load(ISettingsStore store) { - fHost = store.get("Host", "");//$NON-NLS-1$ //$NON-NLS-2$ - fUser = store.get("User", "");//$NON-NLS-1$ //$NON-NLS-2$ - // ISettingsStore providers have to make sure that - // the password is not saved in some as plain text - // on disk. [bug 313991] - fPassword = store.get("Password", "");//$NON-NLS-1$ //$NON-NLS-2$ - fPort = store.get("Port", String.valueOf(ISshSettings.DEFAULT_SSH_PORT));//$NON-NLS-1$ - fTimeout = store.get("Timeout", "0");//$NON-NLS-1$ //$NON-NLS-2$ - fKeepalive = store.get("Keepalive", "300");//$NON-NLS-1$ //$NON-NLS-2$ - } - - @Override - public void save(ISettingsStore store) { - store.put("Host", fHost);//$NON-NLS-1$ - store.put("User", fUser);//$NON-NLS-1$ - store.put("Port", fPort);//$NON-NLS-1$ - // We do *not* store the password in the settings because - // this can cause the password to be stored as plain text - // in some settings file - store.put("Timeout", fTimeout);//$NON-NLS-1$ - store.put("Keepalive", fKeepalive);//$NON-NLS-1$ - } - - @Override - public int getTimeout() { - try { - return Integer.parseInt(fTimeout); - } catch (NumberFormatException numberFormatException) { - return 10; - } - } - - public String getTimeoutString() { - return fTimeout; - } - - public void setTimeout(String timeout) { - fTimeout = timeout; - } - - @Override - public int getKeepalive() { - try { - return Integer.parseInt(fKeepalive); - } catch (NumberFormatException numberFormatException) { - return 300; - } - } - - public String getKeepaliveString() { - return fKeepalive; - } - - public void setKeepalive(String keepalive) { - fKeepalive = keepalive; - } - - @Override - public String getUser() { - return fUser; - } - - public void setUser(String user) { - fUser = user; - } - - @Override - public int getPort() { - try { - return Integer.parseInt(fPort); - } catch (NumberFormatException numberFormatException) { - return ISshSettings.DEFAULT_SSH_PORT; - } - } - - public String getPortString() { - return fPort; - } - - public void setPort(String port) { - fPort = port; - } - - @Override - public String getPassword() { - return fPassword; - } - - public void setPassword(String password) { - fPassword = password; - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshSettingsPage.java b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshSettingsPage.java deleted file mode 100644 index 043ea44c959..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/SshSettingsPage.java +++ /dev/null @@ -1,198 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - * Martin Oberhuber (Wind River) - fixed copyright headers and beautified - * Johnson Ma (Wind River) - [218880] Add UI setting for ssh keepalives - * Martin Oberhuber (Wind River) - [206917] Add validation for Terminal Settings - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.ssh.connector; - -import org.eclipse.jface.dialogs.IMessageProvider; -import org.eclipse.jface.fieldassist.FieldDecorationRegistry; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.ModifyEvent; -import org.eclipse.swt.events.ModifyListener; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Text; -import org.eclipse.tm.internal.terminal.provisional.api.AbstractSettingsPage; - -public class SshSettingsPage extends AbstractSettingsPage { - private Text fHostText; - private Text fUser; - private Text fTimeout; - private Text fKeepalive; - private final SshSettings fTerminalSettings; - private Text fPort; - private Text fPassword; - - public SshSettingsPage(SshSettings settings) { - fTerminalSettings = settings; - } - - @Override - public void saveSettings() { - fTerminalSettings.setHost(fHostText.getText()); - fTerminalSettings.setUser(fUser.getText()); - fTerminalSettings.setPassword(fPassword.getText()); - fTerminalSettings.setPort(fPort.getText()); - fTerminalSettings.setTimeout(fTimeout.getText()); - fTerminalSettings.setKeepalive(fKeepalive.getText()); - } - - @Override - public void loadSettings() { - if (fTerminalSettings != null) { - fHostText.setText(get(fTerminalSettings.getHost(), ""));//$NON-NLS-1$ - fTimeout.setText(get(fTerminalSettings.getTimeoutString(), "0"));//$NON-NLS-1$ - fKeepalive.setText(get(fTerminalSettings.getKeepaliveString(), "300"));//$NON-NLS-1$ - fUser.setText(get(fTerminalSettings.getUser(), ""));//$NON-NLS-1$ - fPort.setText(get(fTerminalSettings.getPortString(), String.valueOf(ISshSettings.DEFAULT_SSH_PORT))); - fPassword.setText(get(fTerminalSettings.getPassword(), ""));//$NON-NLS-1$ - } - } - - String get(String value, String def) { - if (value == null || value.length() == 0) - return def; - return value; - } - - @Override - public boolean validateSettings() { - String message = null; - int messageType = IMessageProvider.NONE; - boolean valid = true; - - if (fHostText.getText().trim().length() == 0) { - String m = "Please enter a host IP or name."; //$NON-NLS-1$ - int mt = IMessageProvider.INFORMATION; - updateControlDecoration(fHostText, m, mt); - if (mt > messageType) { - message = m; - messageType = mt; - } - - valid = false; - } else { - updateControlDecoration(fHostText, null, IMessageProvider.NONE); - } - if (fUser.getText().trim().length() == 0) { - String m = "Please enter a username."; //$NON-NLS-1$ - int mt = IMessageProvider.INFORMATION; - updateControlDecoration(fUser, m, mt); - if (mt > messageType) { - message = m; - messageType = mt; - } - - valid = false; - } else { - updateControlDecoration(fUser, null, IMessageProvider.NONE); - } - try { - int p = Integer.parseInt(fPort.getText().trim()); - if (p <= 0 || p > 65535) { - String m = "Invalid network port. Must be between 0 and 65535."; //$NON-NLS-1$ - int mt = IMessageProvider.ERROR; - updateControlDecoration(fPort, m, mt); - if (mt > messageType) { - message = m; - messageType = mt; - } - - valid = false; - } else { - updateControlDecoration(fPort, null, IMessageProvider.NONE); - } - p = Integer.parseInt(fTimeout.getText().trim()); - if (p < 0) { - String m = "Invalid timeout. Must be greater than 0."; //$NON-NLS-1$ - int mt = IMessageProvider.ERROR; - updateControlDecoration(fTimeout, m, mt); - if (mt > messageType) { - message = m; - messageType = mt; - } - - valid = false; - } else { - updateControlDecoration(fTimeout, null, IMessageProvider.NONE); - } - p = Integer.parseInt(fKeepalive.getText().trim()); - if (p < 0) { - String m = "Invalid keep alive. Must be greater than 0."; //$NON-NLS-1$ - int mt = IMessageProvider.ERROR; - updateControlDecoration(fKeepalive, m, mt); - if (mt > messageType) { - message = m; - messageType = mt; - } - - valid = false; - } else { - updateControlDecoration(fKeepalive, null, IMessageProvider.NONE); - } - } catch (Exception e) { - valid = false; - } - - setMessage(message, messageType); - return valid; - } - - @Override - public void createControl(Composite parent) { - Composite composite = new Composite(parent, SWT.NONE); - GridLayout gridLayout = new GridLayout(2, false); - GridData gridData = new GridData(GridData.FILL_HORIZONTAL); - gridData.horizontalIndent = FieldDecorationRegistry.getDefault().getMaximumDecorationWidth(); - - composite.setLayout(gridLayout); - composite.setLayoutData(gridData); - - fHostText = createTextField(composite, SshMessages.HOST); - fUser = createTextField(composite, SshMessages.USER); - fPassword = createTextField(composite, SshMessages.PASSWORD, SWT.PASSWORD); - fTimeout = createTextField(composite, SshMessages.TIMEOUT); - fKeepalive = createTextField(composite, SshMessages.KEEPALIVE); - fKeepalive.setToolTipText(SshMessages.KEEPALIVE_Tooltip); - fPort = createTextField(composite, SshMessages.PORT); - loadSettings(); - } - - private Text createTextField(Composite composite, String labelTxt, int textOptions) { - GridData gridData; - // Add label - Label ctlLabel = new Label(composite, SWT.RIGHT); - ctlLabel.setText(labelTxt + ":"); //$NON-NLS-1$ - - // Add control - gridData = new GridData(GridData.FILL_HORIZONTAL); - final Text text = new Text(composite, SWT.BORDER | textOptions); - text.setLayoutData(gridData); - text.addModifyListener(new ModifyListener() { - @Override - public void modifyText(ModifyEvent e) { - fireListeners(text); - } - }); - createControlDecoration(text); - return text; - } - - private Text createTextField(Composite composite, String labelTxt) { - return createTextField(composite, labelTxt, 0); - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/UserValidationDialog.java b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/UserValidationDialog.java deleted file mode 100644 index 8047ac91579..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/connector/UserValidationDialog.java +++ /dev/null @@ -1,291 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2018 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * IBM Corporation - initial API and implementation - * Martin Oberhuber (Wind River) - copied from org.eclipse.team.cvs.ui - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.ssh.connector; - -import org.eclipse.jface.dialogs.Dialog; -import org.eclipse.jface.dialogs.IDialogConstants; -import org.eclipse.jface.dialogs.TrayDialog; -import org.eclipse.jface.window.Window; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.swt.widgets.Text; -import org.eclipse.ui.PlatformUI; - -/** - * A dialog for prompting for a username and password - */ -public class UserValidationDialog extends TrayDialog { - // widgets - protected Text usernameField; - protected Text passwordField; - protected Button allowCachingButton; - - protected String domain; - protected String defaultUsername; - protected String password = null; - protected boolean allowCaching = false; - protected Image keyLockImage; - - // whether or not the username can be changed - protected boolean isUsernameMutable = true; - protected String username = null; - protected String message = null; - - /** - * Creates a new UserValidationDialog. - * - * @param parentShell the parent shell - * @param location the location - * @param defaultName the default user name - * @param message a mesage to display to the user - */ - public UserValidationDialog(Shell parentShell, String location, String defaultName, String message) { - super(parentShell); - setShellStyle(getShellStyle() | SWT.RESIZE); - this.defaultUsername = defaultName; - this.domain = location; - this.message = message; - } - - /** - * @see Window#configureShell - */ - @Override - protected void configureShell(Shell newShell) { - super.configureShell(newShell); - newShell.setText(SshMessages.UserValidationDialog_required); - // set F1 help - PlatformUI.getWorkbench().getHelpSystem().setHelp(newShell, ISshConstants.HELP_USER_VALIDATION_DIALOG); - } - - /** - * @see Window#create - */ - @Override - public void create() { - super.create(); - // add some default values - usernameField.setText(defaultUsername); - - if (isUsernameMutable) { - // give focus to username field - usernameField.selectAll(); - usernameField.setFocus(); - } else { - usernameField.setEditable(false); - passwordField.setFocus(); - } - } - - /** - * @see Dialog#createDialogArea - */ - @Override - protected Control createDialogArea(Composite parent) { - Composite top = new Composite(parent, SWT.NONE); - GridLayout layout = new GridLayout(); - layout.numColumns = 2; - - top.setLayout(layout); - top.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - - Composite imageComposite = new Composite(top, SWT.NONE); - layout = new GridLayout(); - imageComposite.setLayout(layout); - imageComposite.setLayoutData(new GridData(GridData.FILL_VERTICAL)); - - Composite main = new Composite(top, SWT.NONE); - layout = new GridLayout(); - layout.numColumns = 3; - main.setLayout(layout); - main.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - - Label imageLabel = new Label(imageComposite, SWT.NONE); - //keyLockImage = TeamImages.getImageDescriptor(ITeamUIImages.IMG_KEY_LOCK).createImage(); - //imageLabel.setImage(keyLockImage); - GridData data = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL); - imageLabel.setLayoutData(data); - - if (message != null) { - Label messageLabel = new Label(main, SWT.WRAP); - messageLabel.setText(message); - data = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL); - data.horizontalSpan = 3; - data.widthHint = 300; - messageLabel.setLayoutData(data); - } - if (domain != null) { - Label d = new Label(main, SWT.WRAP); - d.setText(SshMessages.UserValidationDialog_5); - data = new GridData(); - d.setLayoutData(data); - Label label = new Label(main, SWT.WRAP); - if (isUsernameMutable) { - label.setText(NLS.bind(SshMessages.UserValidationDialog_labelUser, new String[] { domain })); - } else { - label.setText(NLS.bind(SshMessages.UserValidationDialog_labelPassword, - (new Object[] { defaultUsername, domain }))); - } - data = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL); - data.horizontalSpan = 2; - data.widthHint = 300; - label.setLayoutData(data); - } - createUsernameFields(main); - createPasswordFields(main); - - if (domain != null) { - allowCachingButton = new Button(main, SWT.CHECK); - allowCachingButton.setText(SshMessages.UserValidationDialog_6); - data = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL); - data.horizontalSpan = 3; - allowCachingButton.setLayoutData(data); - allowCachingButton.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - allowCaching = allowCachingButton.getSelection(); - } - }); - Composite warningComposite = new Composite(main, SWT.NONE); - layout = new GridLayout(); - layout.numColumns = 2; - layout.marginHeight = 0; - layout.marginHeight = 0; - warningComposite.setLayout(layout); - data = new GridData(GridData.FILL_HORIZONTAL); - data.horizontalSpan = 3; - warningComposite.setLayoutData(data); - Label warningLabel = new Label(warningComposite, SWT.NONE); - warningLabel.setImage(getImage(DLG_IMG_MESSAGE_WARNING)); - warningLabel.setLayoutData( - new GridData(GridData.VERTICAL_ALIGN_BEGINNING | GridData.HORIZONTAL_ALIGN_BEGINNING)); - Label warningText = new Label(warningComposite, SWT.WRAP); - warningText.setText(SshMessages.UserValidationDialog_7); - data = new GridData(GridData.FILL_HORIZONTAL); - data.widthHint = 300; - warningText.setLayoutData(data); - } - - Dialog.applyDialogFont(parent); - - return main; - } - - /** - * Creates the three widgets that represent the password entry area. - * - * @param parent the parent of the widgets - */ - protected void createPasswordFields(Composite parent) { - new Label(parent, SWT.NONE).setText(SshMessages.UserValidationDialog_password); - - passwordField = new Text(parent, SWT.BORDER | SWT.PASSWORD); - GridData data = new GridData(GridData.FILL_HORIZONTAL); - data.horizontalSpan = 2; - data.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.ENTRY_FIELD_WIDTH); - passwordField.setLayoutData(data); - } - - /** - * Creates the three widgets that represent the user name entry area. - * - * @param parent the parent of the widgets - */ - protected void createUsernameFields(Composite parent) { - new Label(parent, SWT.NONE).setText(SshMessages.UserValidationDialog_user); - - usernameField = new Text(parent, SWT.BORDER); - GridData data = new GridData(GridData.FILL_HORIZONTAL); - data.horizontalSpan = 2; - data.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.ENTRY_FIELD_WIDTH); - usernameField.setLayoutData(data); - } - - /** - * Returns the password entered by the user, or null - * if the user cancelled. - * - * @return the entered password - */ - public String getPassword() { - return password; - } - - /** - * Returns the username entered by the user, or null - * if the user cancelled. - * - * @return the entered username - */ - public String getUsername() { - return username; - } - - /** - * Returns true if the save password checkbox was selected. - * @return true if the save password checkbox was selected and false - * otherwise. - */ - public boolean getAllowCaching() { - return allowCaching; - } - - /** - * Notifies that the ok button of this dialog has been pressed. - *

- * The default implementation of this framework method sets - * this dialog's return code to Window.OK - * and closes the dialog. Subclasses may override. - *

- */ - @Override - protected void okPressed() { - password = passwordField.getText(); - username = usernameField.getText(); - - super.okPressed(); - } - - /** - * Sets whether or not the username field should be mutable. - * This method must be called before create(), otherwise it - * will be ignored. - * - * @param value whether the username is mutable - */ - public void setUsernameMutable(boolean value) { - isUsernameMutable = value; - } - - /* (non-Javadoc) - * @see org.eclipse.jface.dialogs.Dialog#close() - */ - @Override - public boolean close() { - if (keyLockImage != null) { - keyLockImage.dispose(); - } - return super.close(); - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/controls/SshWizardConfigurationPanel.java b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/controls/SshWizardConfigurationPanel.java deleted file mode 100644 index 18531ac11d4..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/controls/SshWizardConfigurationPanel.java +++ /dev/null @@ -1,440 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - * Max Weninger (Wind River) - [361352] [TERMINALS][SSH] Add SSH terminal support - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.ssh.controls; - -import java.util.HashMap; -import java.util.Map; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.equinox.security.storage.ISecurePreferences; -import org.eclipse.equinox.security.storage.SecurePreferencesFactory; -import org.eclipse.equinox.security.storage.StorageException; -import org.eclipse.jface.dialogs.IDialogSettings; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Label; -import org.eclipse.tm.internal.terminal.provisional.api.AbstractSettingsPage; -import org.eclipse.tm.internal.terminal.provisional.api.ISettingsPage; -import org.eclipse.tm.terminal.connector.ssh.connector.SshConnector; -import org.eclipse.tm.terminal.connector.ssh.connector.SshSettings; -import org.eclipse.tm.terminal.connector.ssh.connector.SshSettingsPage; -import org.eclipse.tm.terminal.connector.ssh.nls.Messages; -import org.eclipse.tm.terminal.view.core.TerminalContextPropertiesProviderFactory; -import org.eclipse.tm.terminal.view.core.interfaces.ITerminalContextPropertiesProvider; -import org.eclipse.tm.terminal.view.core.interfaces.constants.IContextPropertiesConstants; -import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants; -import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer; -import org.eclipse.tm.terminal.view.ui.panels.AbstractExtendedConfigurationPanel; - -/** - * SSH wizard configuration panel implementation. - */ -public class SshWizardConfigurationPanel extends AbstractExtendedConfigurationPanel { - - private static final String SAVE_USER = "saveUser"; //$NON-NLS-1$ - private static final String SAVE_PASSWORD = "savePassword"; //$NON-NLS-1$ - - private SshSettings sshSettings; - private ISettingsPage sshSettingsPage; - private Button userButton; - private Button passwordButton; - - /** - * Constructor. - * - * @param container The configuration panel container or null. - */ - public SshWizardConfigurationPanel(IConfigurationPanelContainer container) { - super(container); - } - - /* (non-Javadoc) - * @see org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanel#setupPanel(org.eclipse.swt.widgets.Composite) - */ - @Override - public void setupPanel(Composite parent) { - Composite panel = new Composite(parent, SWT.NONE); - panel.setLayout(new GridLayout()); - GridData data = new GridData(SWT.FILL, SWT.FILL, true, true); - panel.setLayoutData(data); - - // Create the host selection combo - if (isWithoutSelection()) - createHostsUI(panel, true); - - SshConnector conn = new SshConnector(); - sshSettings = (SshSettings) conn.getSshSettings(); - sshSettings.setHost(getSelectionHost()); - sshSettings.setUser(getDefaultUser()); - - sshSettingsPage = new SshSettingsPage(sshSettings); - if (sshSettingsPage instanceof AbstractSettingsPage) { - ((AbstractSettingsPage) sshSettingsPage).setHasControlDecoration(true); - } - sshSettingsPage.createControl(panel); - - // Add the listener to the settings page - sshSettingsPage.addListener(new ISettingsPage.Listener() { - @Override - public void onSettingsPageChanged(Control control) { - if (getContainer() != null) - getContainer().validate(); - } - }); - - // Create the encoding selection combo - createEncodingUI(panel, true); - - // if user and password for host should be saved or not - createSaveButtonsUI(panel, true); - - setControl(panel); - } - - /* (non-Javadoc) - * @see org.eclipse.tm.terminal.view.ui.panels.AbstractConfigurationPanel#setupData(java.util.Map) - */ - @Override - public void setupData(Map data) { - if (data == null || sshSettings == null || sshSettingsPage == null) - return; - - String value = (String) data.get(ITerminalsConnectorConstants.PROP_IP_HOST); - if (value != null) - sshSettings.setHost(value); - - Object v = data.get(ITerminalsConnectorConstants.PROP_IP_PORT); - value = v != null ? v.toString() : null; - if (value != null) - sshSettings.setPort(value); - - v = data.get(ITerminalsConnectorConstants.PROP_TIMEOUT); - value = v != null ? v.toString() : null; - if (value != null) - sshSettings.setTimeout(value); - - v = data.get(ITerminalsConnectorConstants.PROP_SSH_KEEP_ALIVE); - value = v != null ? v.toString() : null; - if (value != null) - sshSettings.setKeepalive(value); - - value = (String) data.get(ITerminalsConnectorConstants.PROP_SSH_PASSWORD); - if (value != null) - sshSettings.setPassword(value); - - value = (String) data.get(ITerminalsConnectorConstants.PROP_SSH_USER); - if (value != null) - sshSettings.setUser(value); - - value = (String) data.get(ITerminalsConnectorConstants.PROP_ENCODING); - if (value != null) - setEncoding(value); - - sshSettingsPage.loadSettings(); - } - - /** - * Returns the default user name. - * - * @return The default user name. - */ - private String getDefaultUser() { - ISelection selection = getSelection(); - if (selection instanceof IStructuredSelection && !selection.isEmpty()) { - Object element = ((IStructuredSelection) selection).getFirstElement(); - ITerminalContextPropertiesProvider provider = TerminalContextPropertiesProviderFactory.getProvider(element); - if (provider != null) { - Object user = provider.getProperty(element, IContextPropertiesConstants.PROP_DEFAULT_USER); - if (user instanceof String) - return ((String) user).trim(); - } - } - - return System.getProperty("user.name"); //$NON-NLS-1$ - } - - /* (non-Javadoc) - * @see org.eclipse.tm.terminal.view.ui.panels.AbstractConfigurationPanel#extractData(java.util.Map) - */ - @Override - public void extractData(Map data) { - if (data == null) - return; - - // set the terminal connector id for ssh - data.put(ITerminalsConnectorConstants.PROP_TERMINAL_CONNECTOR_ID, - "org.eclipse.tm.terminal.connector.ssh.SshConnector"); //$NON-NLS-1$ - - sshSettingsPage.saveSettings(); - data.put(ITerminalsConnectorConstants.PROP_IP_HOST, sshSettings.getHost()); - data.put(ITerminalsConnectorConstants.PROP_IP_PORT, Integer.valueOf(sshSettings.getPort())); - data.put(ITerminalsConnectorConstants.PROP_TIMEOUT, Integer.valueOf(sshSettings.getTimeout())); - data.put(ITerminalsConnectorConstants.PROP_SSH_KEEP_ALIVE, Integer.valueOf(sshSettings.getKeepalive())); - data.put(ITerminalsConnectorConstants.PROP_SSH_PASSWORD, sshSettings.getPassword()); - data.put(ITerminalsConnectorConstants.PROP_SSH_USER, sshSettings.getUser()); - data.put(ITerminalsConnectorConstants.PROP_ENCODING, getEncoding()); - } - - /* (non-Javadoc) - * @see org.eclipse.tm.terminal.view.ui.panels.AbstractConfigurationPanel#fillSettingsForHost(java.lang.String) - */ - @Override - protected void fillSettingsForHost(String host) { - boolean saveUser = true; - boolean savePassword = false; - if (host != null && host.length() != 0) { - if (hostSettingsMap.containsKey(host)) { - Map hostSettings = hostSettingsMap.get(host); - if (hostSettings.get(ITerminalsConnectorConstants.PROP_IP_HOST) != null) { - sshSettings.setHost(hostSettings.get(ITerminalsConnectorConstants.PROP_IP_HOST)); - } - if (hostSettings.get(ITerminalsConnectorConstants.PROP_IP_PORT) != null) { - sshSettings.setPort(hostSettings.get(ITerminalsConnectorConstants.PROP_IP_PORT)); - } - if (hostSettings.get(ITerminalsConnectorConstants.PROP_TIMEOUT) != null) { - sshSettings.setTimeout(hostSettings.get(ITerminalsConnectorConstants.PROP_TIMEOUT)); - } - if (hostSettings.get(ITerminalsConnectorConstants.PROP_SSH_KEEP_ALIVE) != null) { - sshSettings.setKeepalive(hostSettings.get(ITerminalsConnectorConstants.PROP_SSH_KEEP_ALIVE)); - } - if (hostSettings.get(ITerminalsConnectorConstants.PROP_SSH_USER) != null) { - sshSettings.setUser(hostSettings.get(ITerminalsConnectorConstants.PROP_SSH_USER)); - } - if (hostSettings.get(SAVE_PASSWORD) != null) { - savePassword = new Boolean(hostSettings.get(SAVE_PASSWORD)).booleanValue(); - } - if (!savePassword) { - sshSettings.setPassword(""); //$NON-NLS-1$ - } else { - String password = accessSecurePassword(sshSettings.getHost()); - if (password != null) { - sshSettings.setPassword(password); - } - } - - String encoding = hostSettings.get(ITerminalsConnectorConstants.PROP_ENCODING); - if (encoding == null || "null".equals(encoding)) { //$NON-NLS-1$ - String defaultEncoding = getSelectionEncoding(); - encoding = defaultEncoding != null && !"".equals(defaultEncoding.trim()) ? defaultEncoding.trim() //$NON-NLS-1$ - : "UTF-8"; //$NON-NLS-1$ - } - setEncoding(encoding); - } else { - sshSettings.setHost(getSelectionHost()); - sshSettings.setUser(getDefaultUser()); - saveUser = true; - savePassword = false; - } - // set settings in page - sshSettingsPage.loadSettings(); - userButton.setSelection(saveUser); - passwordButton.setSelection(savePassword); - } - } - - /* (non-Javadoc) - * @see org.eclipse.tm.terminal.view.ui.panels.AbstractExtendedConfigurationPanel#doSaveWidgetValues(org.eclipse.jface.dialogs.IDialogSettings, java.lang.String) - */ - @Override - public void doSaveWidgetValues(IDialogSettings settings, String idPrefix) { - saveSettingsForHost(true); - super.doSaveWidgetValues(settings, idPrefix); - } - - /* (non-Javadoc) - * @see org.eclipse.tm.terminal.view.ui.panels.AbstractConfigurationPanel#saveSettingsForHost(boolean) - */ - @Override - protected void saveSettingsForHost(boolean add) { - boolean saveUser = userButton.getSelection(); - boolean savePassword = passwordButton.getSelection(); - String host = getHostFromSettings(); - if (host != null && host.length() != 0) { - if (hostSettingsMap.containsKey(host)) { - Map hostSettings = hostSettingsMap.get(host); - hostSettings.put(ITerminalsConnectorConstants.PROP_IP_HOST, sshSettings.getHost()); - hostSettings.put(ITerminalsConnectorConstants.PROP_IP_PORT, Integer.toString(sshSettings.getPort())); - hostSettings.put(ITerminalsConnectorConstants.PROP_TIMEOUT, Integer.toString(sshSettings.getTimeout())); - hostSettings.put(ITerminalsConnectorConstants.PROP_SSH_KEEP_ALIVE, - Integer.toString(sshSettings.getKeepalive())); - if (saveUser) { - if (sshSettings.getUser() != null) { - hostSettings.put(ITerminalsConnectorConstants.PROP_SSH_USER, sshSettings.getUser()); - } else { - hostSettings.remove(ITerminalsConnectorConstants.PROP_SSH_USER); - } - } else { - hostSettings.remove(ITerminalsConnectorConstants.PROP_SSH_USER); - } - - String encoding = getEncoding(); - if (encoding != null) { - String defaultEncoding = getSelectionEncoding(); - if (defaultEncoding != null && defaultEncoding.trim().equals(encoding)) { - encoding = null; - } - } - hostSettings.put(ITerminalsConnectorConstants.PROP_ENCODING, encoding); - hostSettings.put(SAVE_USER, Boolean.toString(saveUser)); - hostSettings.put(SAVE_PASSWORD, Boolean.toString(savePassword)); - - if (savePassword && sshSettings.getPassword() != null && sshSettings.getPassword().length() != 0) { - saveSecurePassword(host, sshSettings.getPassword()); - } - - // maybe unchecked the password button - so try to remove a saved password - if any - if (!savePassword) - removeSecurePassword(host); - } else if (add) { - Map hostSettings = new HashMap<>(); - hostSettings.put(ITerminalsConnectorConstants.PROP_IP_HOST, sshSettings.getHost()); - hostSettings.put(ITerminalsConnectorConstants.PROP_IP_PORT, Integer.toString(sshSettings.getPort())); - hostSettings.put(ITerminalsConnectorConstants.PROP_TIMEOUT, Integer.toString(sshSettings.getTimeout())); - hostSettings.put(ITerminalsConnectorConstants.PROP_SSH_KEEP_ALIVE, - Integer.toString(sshSettings.getKeepalive())); - if (saveUser) { - if (sshSettings.getUser() != null) { - hostSettings.put(ITerminalsConnectorConstants.PROP_SSH_USER, sshSettings.getUser()); - } - } - hostSettings.put(ITerminalsConnectorConstants.PROP_ENCODING, getEncoding()); - hostSettings.put(SAVE_USER, Boolean.toString(saveUser)); - hostSettings.put(SAVE_PASSWORD, Boolean.toString(savePassword)); - hostSettingsMap.put(host, hostSettings); - - if (savePassword && sshSettings.getPassword() != null && sshSettings.getPassword().length() != 0) { - saveSecurePassword(host, sshSettings.getPassword()); - } - } - } - } - - /** - * Save the password to the secure storage. - * - * @param host The host. Must not be null. - * @param password The password. Must not be null. - */ - private void saveSecurePassword(String host, String password) { - Assert.isNotNull(host); - Assert.isNotNull(password); - - // To access the secure storage, we need the preference instance - ISecurePreferences preferences = SecurePreferencesFactory.getDefault(); - if (preferences != null) { - // Construct the secure preferences node key - String nodeKey = "/Target Explorer SSH Password/" + host; //$NON-NLS-1$ - ISecurePreferences node = preferences.node(nodeKey); - if (node != null) { - try { - node.put("password", password, true); //$NON-NLS-1$ - } catch (StorageException ex) { - /* ignored on purpose */ } - } - } - } - - /** - * Reads the password from the secure storage. - * - * @param host The host. Must not be null. - * @return The password or null. - */ - private String accessSecurePassword(String host) { - Assert.isNotNull(host); - - // To access the secure storage, we need the preference instance - ISecurePreferences preferences = SecurePreferencesFactory.getDefault(); - if (preferences != null) { - // Construct the secure preferences node key - String nodeKey = "/Target Explorer SSH Password/" + host; //$NON-NLS-1$ - ISecurePreferences node = preferences.node(nodeKey); - if (node != null) { - String password = null; - try { - password = node.get("password", null); //$NON-NLS-1$ - } catch (StorageException ex) { - /* ignored on purpose */ } - - return password; - } - } - return null; - } - - /* (non-Javadoc) - * @see org.eclipse.tm.terminal.view.ui.panels.AbstractConfigurationPanel#removeSecurePassword(java.lang.String) - */ - @Override - protected void removeSecurePassword(String host) { - Assert.isNotNull(host); - - // To access the secure storage, we need the preference instance - ISecurePreferences preferences = SecurePreferencesFactory.getDefault(); - if (preferences != null) { - // Construct the secure preferences node key - String nodeKey = "/Target Explorer SSH Password/" + host; //$NON-NLS-1$ - ISecurePreferences node = preferences.node(nodeKey); - if (node != null) { - node.remove("password"); //$NON-NLS-1$ - } - } - } - - /* (non-Javadoc) - * @see org.eclipse.tm.terminal.view.ui.panels.AbstractConfigurationPanel#isValid() - */ - @Override - public boolean isValid() { - return isEncodingValid() && sshSettingsPage.validateSettings(); - } - - /* (non-Javadoc) - * @see org.eclipse.tm.terminal.view.ui.panels.AbstractConfigurationPanel#getHostFromSettings() - */ - @Override - protected String getHostFromSettings() { - sshSettingsPage.saveSettings(); - return sshSettings.getHost(); - } - - private void createSaveButtonsUI(final Composite parent, boolean separator) { - Assert.isNotNull(parent); - - if (separator) { - Label sep = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL); - sep.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); - } - - Composite panel = new Composite(parent, SWT.NONE); - GridLayout layout = new GridLayout(2, false); - layout.marginHeight = 0; - layout.marginWidth = 0; - panel.setLayout(layout); - panel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); - - userButton = new Button(panel, SWT.CHECK); - userButton.setLayoutData(new GridData(SWT.LEAD, SWT.CENTER, false, false)); - userButton.setText(Messages.SshWizardConfigurationPanel_saveUser); - - passwordButton = new Button(panel, SWT.CHECK); - passwordButton.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); - passwordButton.setText(Messages.SshWizardConfigurationPanel_savePassword); - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/launcher/SshLauncherDelegate.java b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/launcher/SshLauncherDelegate.java deleted file mode 100644 index 6b43937b9c0..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/launcher/SshLauncherDelegate.java +++ /dev/null @@ -1,195 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - * Max Weninger (Wind River) - [361352] [TERMINALS][SSH] Add SSH terminal support - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.ssh.launcher; - -import java.text.DateFormat; -import java.util.Date; -import java.util.Map; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.osgi.util.NLS; -import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore; -import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector; -import org.eclipse.tm.internal.terminal.provisional.api.TerminalConnectorExtension; -import org.eclipse.tm.terminal.connector.ssh.connector.ISshSettings; -import org.eclipse.tm.terminal.connector.ssh.connector.SshSettings; -import org.eclipse.tm.terminal.connector.ssh.controls.SshWizardConfigurationPanel; -import org.eclipse.tm.terminal.connector.ssh.nls.Messages; -import org.eclipse.tm.terminal.view.core.TerminalServiceFactory; -import org.eclipse.tm.terminal.view.core.interfaces.ITerminalService; -import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants; -import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanel; -import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer; -import org.eclipse.tm.terminal.view.ui.interfaces.IMementoHandler; -import org.eclipse.tm.terminal.view.ui.internal.SettingsStore; -import org.eclipse.tm.terminal.view.ui.launcher.AbstractLauncherDelegate; - -/** - * SSH launcher delegate implementation. - */ -@SuppressWarnings("restriction") -public class SshLauncherDelegate extends AbstractLauncherDelegate { - // The SSH terminal connection memento handler - private final IMementoHandler mementoHandler = new SshMementoHandler(); - - /* (non-Javadoc) - * @see org.eclipse.tm.terminal.view.ui.interfaces.ILauncherDelegate#needsUserConfiguration() - */ - @Override - public boolean needsUserConfiguration() { - return true; - } - - /* (non-Javadoc) - * @see org.eclipse.tm.terminal.view.ui.interfaces.ILauncherDelegate#getPanel(org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer) - */ - @Override - public IConfigurationPanel getPanel(IConfigurationPanelContainer container) { - return new SshWizardConfigurationPanel(container); - } - - /* (non-Javadoc) - * @see org.eclipse.tm.terminal.view.ui.interfaces.ILauncherDelegate#execute(java.util.Map, org.eclipse.tm.terminal.view.core.interfaces.ITerminalService.Done) - */ - @Override - public void execute(Map properties, ITerminalService.Done done) { - Assert.isNotNull(properties); - - // Set the terminal tab title - String terminalTitle = getTerminalTitle(properties); - if (terminalTitle != null) { - properties.put(ITerminalsConnectorConstants.PROP_TITLE, terminalTitle); - } - - // For SSH terminals, force a new terminal tab each time it is launched, - // if not set otherwise from outside - if (!properties.containsKey(ITerminalsConnectorConstants.PROP_FORCE_NEW)) { - properties.put(ITerminalsConnectorConstants.PROP_FORCE_NEW, Boolean.TRUE); - } - - // Get the terminal service - ITerminalService terminal = TerminalServiceFactory.getService(); - // If not available, we cannot fulfill this request - if (terminal != null) { - terminal.openConsole(properties, done); - } - } - - /** - * Returns the terminal title string. - *

- * The default implementation constructs a title like "SSH @ host (Start time) ". - * - * @return The terminal title string or null. - */ - private String getTerminalTitle(Map properties) { - // Try to see if the user set a title explicitly via the properties map. - String title = getDefaultTerminalTitle(properties); - if (title != null) - return title; - - //No title,try to calculate the title - String host = (String) properties.get(ITerminalsConnectorConstants.PROP_IP_HOST); - String user = (String) properties.get(ITerminalsConnectorConstants.PROP_SSH_USER); - Object value = properties.get(ITerminalsConnectorConstants.PROP_IP_PORT); - String port = value != null ? value.toString() : null; - - if (host != null && user != null) { - DateFormat format = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT); - String date = format.format(new Date(System.currentTimeMillis())); - if (port != null && Integer.valueOf(port).intValue() != ISshSettings.DEFAULT_SSH_PORT) { - return NLS.bind(Messages.SshLauncherDelegate_terminalTitle_port, - new String[] { user, host, port, date }); - } - return NLS.bind(Messages.SshLauncherDelegate_terminalTitle, new String[] { user, host, date }); - } - - return Messages.SshLauncherDelegate_terminalTitle_default; - } - - /* (non-Javadoc) - * @see org.eclipse.core.runtime.PlatformObject#getAdapter(java.lang.Class) - */ - @Override - public Object getAdapter(Class adapter) { - if (IMementoHandler.class.equals(adapter)) { - return mementoHandler; - } - return super.getAdapter(adapter); - } - - /* (non-Javadoc) - * @see org.eclipse.tm.terminal.view.ui.interfaces.ILauncherDelegate#createTerminalConnector(java.util.Map) - */ - @Override - public ITerminalConnector createTerminalConnector(Map properties) { - Assert.isNotNull(properties); - - // Check for the terminal connector id - String connectorId = (String) properties.get(ITerminalsConnectorConstants.PROP_TERMINAL_CONNECTOR_ID); - if (connectorId == null) - connectorId = "org.eclipse.tm.terminal.connector.ssh.SshConnector"; //$NON-NLS-1$ - - // Extract the ssh properties - String host = (String) properties.get(ITerminalsConnectorConstants.PROP_IP_HOST); - Object value = properties.get(ITerminalsConnectorConstants.PROP_IP_PORT); - String port = value != null ? value.toString() : null; - value = properties.get(ITerminalsConnectorConstants.PROP_TIMEOUT); - String timeout = value != null ? value.toString() : null; - value = properties.get(ITerminalsConnectorConstants.PROP_SSH_KEEP_ALIVE); - String keepAlive = value != null ? value.toString() : null; - String password = (String) properties.get(ITerminalsConnectorConstants.PROP_SSH_PASSWORD); - String user = (String) properties.get(ITerminalsConnectorConstants.PROP_SSH_USER); - - int portOffset = 0; - if (properties.get(ITerminalsConnectorConstants.PROP_IP_PORT_OFFSET) instanceof Integer) { - portOffset = ((Integer) properties.get(ITerminalsConnectorConstants.PROP_IP_PORT_OFFSET)).intValue(); - if (portOffset < 0) - portOffset = 0; - } - - // The real port to connect to is port + portOffset - if (port != null) { - port = Integer.toString(Integer.decode(port).intValue() + portOffset); - } - - // Construct the ssh settings store - ISettingsStore store = new SettingsStore(); - - // Construct the telnet settings - SshSettings sshSettings = new SshSettings(); - sshSettings.setHost(host); - sshSettings.setPort(port); - sshSettings.setTimeout(timeout); - sshSettings.setKeepalive(keepAlive); - sshSettings.setPassword(password); - sshSettings.setUser(user); - - // And save the settings to the store - sshSettings.save(store); - - // MWE TODO make sure this is NOT passed outside as this is plain text - store.put("Password", password); //$NON-NLS-1$ - - // Construct the terminal connector instance - ITerminalConnector connector = TerminalConnectorExtension.makeTerminalConnector(connectorId); - if (connector != null) { - // Apply default settings - connector.setDefaultSettings(); - // And load the real settings - connector.load(store); - } - - return connector; - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/launcher/SshMementoHandler.java b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/launcher/SshMementoHandler.java deleted file mode 100644 index b7b5f4b65f1..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/launcher/SshMementoHandler.java +++ /dev/null @@ -1,147 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.ssh.launcher; - -import java.util.Map; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.equinox.security.storage.ISecurePreferences; -import org.eclipse.equinox.security.storage.SecurePreferencesFactory; -import org.eclipse.equinox.security.storage.StorageException; -import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants; -import org.eclipse.tm.terminal.view.ui.interfaces.IMementoHandler; -import org.eclipse.ui.IMemento; - -/** - * SSH terminal connection memento handler implementation. - */ -public class SshMementoHandler implements IMementoHandler { - - /* (non-Javadoc) - * @see org.eclipse.tm.terminal.view.ui.interfaces.IMementoHandler#saveState(org.eclipse.ui.IMemento, java.util.Map) - */ - @Override - public void saveState(IMemento memento, Map properties) { - Assert.isNotNull(memento); - Assert.isNotNull(properties); - - // Do not write the terminal title to the memento -> needs to - // be recreated at the time of restoration. - memento.putString(ITerminalsConnectorConstants.PROP_IP_HOST, - (String) properties.get(ITerminalsConnectorConstants.PROP_IP_HOST)); - Object value = properties.get(ITerminalsConnectorConstants.PROP_IP_PORT); - memento.putInteger(ITerminalsConnectorConstants.PROP_IP_PORT, - value instanceof Integer ? ((Integer) value).intValue() : -1); - value = properties.get(ITerminalsConnectorConstants.PROP_TIMEOUT); - memento.putInteger(ITerminalsConnectorConstants.PROP_TIMEOUT, - value instanceof Integer ? ((Integer) value).intValue() : -1); - value = properties.get(ITerminalsConnectorConstants.PROP_SSH_KEEP_ALIVE); - memento.putInteger(ITerminalsConnectorConstants.PROP_SSH_KEEP_ALIVE, - value instanceof Integer ? ((Integer) value).intValue() : -1); - memento.putString(ITerminalsConnectorConstants.PROP_SSH_USER, - (String) properties.get(ITerminalsConnectorConstants.PROP_SSH_USER)); - memento.putString(ITerminalsConnectorConstants.PROP_ENCODING, - (String) properties.get(ITerminalsConnectorConstants.PROP_ENCODING)); - - // The password is stored within the Eclipse secure preferences -> no need to store it to the memento - // - // If ever needed, this is an example on how to encrypt the password using 3DES. Do not remove! - - /* - String password = properties.getStringProperty(ITerminalsConnectorConstants.PROP_SSH_PASSWORD); - if (password != null) { - try { - // Generate a temporary key. In practice, you would save this key. - // See also Encrypting with DES Using a Pass Phrase. - // SecretKey key = KeyGenerator.getInstance("DESede").generateKey(); - - SecretKeyFactory factory = SecretKeyFactory.getInstance("DESede"); //$NON-NLS-1$ - SecretKey key = factory.generateSecret(new DESKeySpec((ITerminalsConnectorConstants.PROP_SSH_PASSWORD + ".SshMementoHandler").getBytes("UTF-8"))); //$NON-NLS-1$ //$NON-NLS-2$ - - Cipher cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding"); //$NON-NLS-1$ - cipher.init(Cipher.ENCRYPT_MODE, key); - - String encrypedPwd = new String(Base64.encode(cipher.doFinal(password.getBytes("UTF-8")))); //$NON-NLS-1$ - memento.putString(ITerminalsConnectorConstants.PROP_SSH_PASSWORD, encrypedPwd); - } - catch (Exception e) { - if (Platform.inDebugMode()) e.printStackTrace(); - } - } - */ - } - - /* (non-Javadoc) - * @see org.eclipse.tm.terminal.view.ui.interfaces.IMementoHandler#restoreState(org.eclipse.ui.IMemento, java.util.Map) - */ - @Override - public void restoreState(IMemento memento, Map properties) { - Assert.isNotNull(memento); - Assert.isNotNull(properties); - - // Restore the terminal properties from the memento - properties.put(ITerminalsConnectorConstants.PROP_IP_HOST, - memento.getString(ITerminalsConnectorConstants.PROP_IP_HOST)); - properties.put(ITerminalsConnectorConstants.PROP_IP_PORT, - memento.getInteger(ITerminalsConnectorConstants.PROP_IP_PORT)); - properties.put(ITerminalsConnectorConstants.PROP_TIMEOUT, - memento.getInteger(ITerminalsConnectorConstants.PROP_TIMEOUT)); - properties.put(ITerminalsConnectorConstants.PROP_SSH_KEEP_ALIVE, - memento.getInteger(ITerminalsConnectorConstants.PROP_SSH_KEEP_ALIVE)); - properties.put(ITerminalsConnectorConstants.PROP_SSH_USER, - memento.getString(ITerminalsConnectorConstants.PROP_SSH_USER)); - properties.put(ITerminalsConnectorConstants.PROP_ENCODING, - memento.getString(ITerminalsConnectorConstants.PROP_ENCODING)); - - // The password is stored within the Eclipse secure preferences -> restore it from there - // To access the secure storage, we need the preference instance - String password = null; - ISecurePreferences preferences = SecurePreferencesFactory.getDefault(); - if (preferences != null && (String) properties.get(ITerminalsConnectorConstants.PROP_IP_HOST) != null) { - // Construct the secure preferences node key - String nodeKey = "/Target Explorer SSH Password/" //$NON-NLS-1$ - + (String) properties.get(ITerminalsConnectorConstants.PROP_IP_HOST); - ISecurePreferences node = preferences.node(nodeKey); - if (node != null) { - try { - password = node.get("password", null); //$NON-NLS-1$ - } catch (StorageException ex) { - /* ignored on purpose */ } - } - } - - // Example of restoring the password from an 3DES encrypted string. Do not remove! - /* - String encrypedPwd = memento.getString(ITerminalsConnectorConstants.PROP_SSH_PASSWORD); - if (encrypedPwd != null) { - try { - SecretKeyFactory factory = SecretKeyFactory.getInstance("DESede"); //$NON-NLS-1$ - SecretKey key = factory.generateSecret(new DESKeySpec((ITerminalsConnectorConstants.PROP_SSH_PASSWORD + ".SshMementoHandler").getBytes("UTF-8"))); //$NON-NLS-1$ //$NON-NLS-2$ - - Cipher cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding"); //$NON-NLS-1$ - cipher.init(Cipher.DECRYPT_MODE, key); - - byte[] encBytes = Base64.decode(encrypedPwd.getBytes("UTF-8")); //$NON-NLS-1$ - byte[] decBytes = cipher.doFinal(encBytes); - - password = new String(decBytes); - } - catch (Exception e) { - if (Platform.inDebugMode()) e.printStackTrace(); - } - } - */ - - properties.put(ITerminalsConnectorConstants.PROP_SSH_PASSWORD, password); - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/nls/Messages.java b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/nls/Messages.java deleted file mode 100644 index 61978ceb6df..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/nls/Messages.java +++ /dev/null @@ -1,40 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011 - 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - * Max Weninger (Wind River) - [361352] [TERMINALS][SSH] Add SSH terminal support - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.ssh.nls; - -import org.eclipse.osgi.util.NLS; - -/** - * Externalized strings management. - */ -public class Messages extends NLS { - - // The plug-in resource bundle name - private static final String BUNDLE_NAME = "org.eclipse.tm.terminal.connector.ssh.nls.Messages"; //$NON-NLS-1$ - - /** - * Static constructor. - */ - static { - // Load message values from bundle file - NLS.initializeMessages(BUNDLE_NAME, Messages.class); - } - - // **** Declare externalized string id's down here ***** - - public static String SshLauncherDelegate_terminalTitle; - public static String SshLauncherDelegate_terminalTitle_port; - public static String SshLauncherDelegate_terminalTitle_default; - public static String SshWizardConfigurationPanel_saveUser; - public static String SshWizardConfigurationPanel_savePassword; -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/nls/Messages.properties b/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/nls/Messages.properties deleted file mode 100644 index 5a5b7efec5c..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.ssh/src/org/eclipse/tm/terminal/connector/ssh/nls/Messages.properties +++ /dev/null @@ -1,17 +0,0 @@ -############################################################################### -# Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved. -# This program and the accompanying materials are made available under the terms -# of the Eclipse Public License 2.0 which accompanies this distribution, and is -# available at https://www.eclipse.org/legal/epl-2.0/ -# -# SPDX-License-Identifier: EPL-2.0 -# -# Contributors: -# Wind River Systems - initial API and implementation -############################################################################### - -SshLauncherDelegate_terminalTitle=SSH {0}@{1} ({2}) -SshLauncherDelegate_terminalTitle_port=SSH {0}@{1}:{2} ({3}) -SshLauncherDelegate_terminalTitle_default=SSH Terminal -SshWizardConfigurationPanel_saveUser=Save user -SshWizardConfigurationPanel_savePassword=Save password diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.classpath b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.classpath deleted file mode 100644 index 81fe078c20c..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.classpath +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.gitignore b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.gitignore deleted file mode 100644 index ae3c1726048..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/bin/ diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.options b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.options deleted file mode 100644 index 77c6a134ddd..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.options +++ /dev/null @@ -1 +0,0 @@ -org.eclipse.tm.terminal.connector.telnet/debugmode = 0 diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.project b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.project deleted file mode 100644 index 83045227a60..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.project +++ /dev/null @@ -1,45 +0,0 @@ - - - org.eclipse.tm.terminal.connector.telnet - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.pde.ManifestBuilder - - - - - org.eclipse.pde.SchemaBuilder - - - - - org.eclipse.pde.api.tools.apiAnalysisBuilder - - - - - - org.eclipse.pde.PluginNature - org.eclipse.jdt.core.javanature - org.eclipse.pde.api.tools.apiAnalysisNature - - - - 1329502098231 - - 10 - - org.eclipse.ui.ide.multiFilter - 1.0-name-matches-false-false-target - - - - diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/.api_filters b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/.api_filters deleted file mode 100644 index b44d5989d5e..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/.api_filters +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.core.resources.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index 99f26c0203a..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -encoding/=UTF-8 diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.jdt.core.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 9df862f8d49..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,486 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.builder.cleanOutputFolder=clean -org.eclipse.jdt.core.builder.duplicateResourceTask=warning -org.eclipse.jdt.core.builder.invalidClasspath=abort -org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore -org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend -org.eclipse.jdt.core.circularClasspath=error -org.eclipse.jdt.core.classpath.exclusionPatterns=enabled -org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error -org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled -org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error -org.eclipse.jdt.core.codeComplete.argumentPrefixes= -org.eclipse.jdt.core.codeComplete.argumentSuffixes= -org.eclipse.jdt.core.codeComplete.fieldPrefixes= -org.eclipse.jdt.core.codeComplete.fieldSuffixes= -org.eclipse.jdt.core.codeComplete.localPrefixes= -org.eclipse.jdt.core.codeComplete.localSuffixes= -org.eclipse.jdt.core.codeComplete.staticFieldPrefixes= -org.eclipse.jdt.core.codeComplete.staticFieldSuffixes= -org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes= -org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes= -org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled -org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore -org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull -org.eclipse.jdt.core.compiler.annotation.nonnull.secondary= -org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault -org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary= -org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable -org.eclipse.jdt.core.compiler.annotation.nullable.secondary= -org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.methodParameters=generate -org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=17 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.doc.comment.support=enabled -org.eclipse.jdt.core.compiler.maxProblemPerUnit=100 -org.eclipse.jdt.core.compiler.problem.APILeak=warning -org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.autoboxing=ignore -org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning -org.eclipse.jdt.core.compiler.problem.deadCode=warning -org.eclipse.jdt.core.compiler.problem.deprecation=warning -org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled -org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled -org.eclipse.jdt.core.compiler.problem.discouragedReference=warning -org.eclipse.jdt.core.compiler.problem.emptyStatement=warning -org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore -org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning -org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled -org.eclipse.jdt.core.compiler.problem.fieldHiding=warning -org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning -org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning -org.eclipse.jdt.core.compiler.problem.forbiddenReference=error -org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning -org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled -org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning -org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning -org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore -org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore -org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled -org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled -org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled -org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected -org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore -org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error -org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore -org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning -org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled -org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled -org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public -org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag -org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled -org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled -org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled -org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore -org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore -org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning -org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning -org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning -org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning -org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning -org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error -org.eclipse.jdt.core.compiler.problem.nullReference=error -org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error -org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning -org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning -org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore -org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning -org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning -org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning -org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore -org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning -org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning -org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning -org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore -org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning -org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore -org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore -org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning -org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled -org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning -org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled -org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled -org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled -org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore -org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning -org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning -org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled -org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning -org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning -org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore -org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning -org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning -org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled -org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info -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.unstableAutoModuleName=warning -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled -org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore -org.eclipse.jdt.core.compiler.problem.unusedImport=warning -org.eclipse.jdt.core.compiler.problem.unusedLabel=warning -org.eclipse.jdt.core.compiler.problem.unusedLocal=warning -org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore -org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore -org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled -org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning -org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore -org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning -org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning -org.eclipse.jdt.core.compiler.release=enabled -org.eclipse.jdt.core.compiler.source=17 -org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false -org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647 -org.eclipse.jdt.core.formatter.align_type_members_on_columns=false -org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false -org.eclipse.jdt.core.formatter.align_with_spaces=false -org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_assignment=0 -org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 -org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16 -org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 -org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16 -org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 -org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0 -org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0 -org.eclipse.jdt.core.formatter.alignment_for_module_statements=16 -org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 -org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80 -org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16 -org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0 -org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0 -org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16 -org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_after_package=1 -org.eclipse.jdt.core.formatter.blank_lines_before_field=0 -org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 -org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 -org.eclipse.jdt.core.formatter.blank_lines_before_method=1 -org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 -org.eclipse.jdt.core.formatter.blank_lines_before_package=0 -org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 -org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 -org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true -org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false -org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true -org.eclipse.jdt.core.formatter.comment.format_block_comments=false -org.eclipse.jdt.core.formatter.comment.format_header=false -org.eclipse.jdt.core.formatter.comment.format_html=true -org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false -org.eclipse.jdt.core.formatter.comment.format_line_comments=false -org.eclipse.jdt.core.formatter.comment.format_source_code=true -org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false -org.eclipse.jdt.core.formatter.comment.indent_root_tags=false -org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert -org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert -org.eclipse.jdt.core.formatter.comment.line_length=80 -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=false -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true -org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_empty_lines=false -org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true -org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false -org.eclipse.jdt.core.formatter.indentation.size=4 -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert -org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert -org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert -org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert -org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert -org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert -org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert -org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.join_lines_in_comments=true -org.eclipse.jdt.core.formatter.join_wrapped_lines=true -org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false -org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false -org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false -org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false -org.eclipse.jdt.core.formatter.lineSplit=120 -org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false -org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 -org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 -org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines -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_additive_operator=true -org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false -org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true -org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true -org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true -org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true -org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true -org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true -org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true -org.eclipse.jdt.core.incompatibleJDKLevel=ignore -org.eclipse.jdt.core.incompleteClasspath=error -org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.jdt.launching.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.jdt.launching.prefs deleted file mode 100644 index f8a131b56e0..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.jdt.launching.prefs +++ /dev/null @@ -1,3 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.launching.PREF_COMPILER_COMPLIANCE_DOES_NOT_MATCH_JRE=warning -org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.jdt.ui.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.jdt.ui.prefs deleted file mode 100644 index d35ba9b5231..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.jdt.ui.prefs +++ /dev/null @@ -1,213 +0,0 @@ -cleanup.add_all=false -cleanup.add_default_serial_version_id=true -cleanup.add_generated_serial_version_id=false -cleanup.add_missing_annotations=true -cleanup.add_missing_deprecated_annotations=true -cleanup.add_missing_methods=false -cleanup.add_missing_nls_tags=false -cleanup.add_missing_override_annotations=true -cleanup.add_missing_override_annotations_interface_methods=true -cleanup.add_serial_version_id=false -cleanup.always_use_blocks=true -cleanup.always_use_parentheses_in_expressions=false -cleanup.always_use_this_for_non_static_field_access=false -cleanup.always_use_this_for_non_static_method_access=false -cleanup.array_with_curly=false -cleanup.arrays_fill=false -cleanup.bitwise_conditional_expression=false -cleanup.boolean_literal=false -cleanup.boolean_value_rather_than_comparison=false -cleanup.break_loop=false -cleanup.collection_cloning=false -cleanup.comparing_on_criteria=false -cleanup.comparison_statement=false -cleanup.controlflow_merge=false -cleanup.convert_functional_interfaces=false -cleanup.convert_to_enhanced_for_loop=false -cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true -cleanup.convert_to_switch_expressions=false -cleanup.correct_indentation=false -cleanup.do_while_rather_than_while=true -cleanup.double_negation=false -cleanup.else_if=false -cleanup.embedded_if=false -cleanup.evaluate_nullable=false -cleanup.extract_increment=false -cleanup.format_source_code=true -cleanup.format_source_code_changes_only=false -cleanup.hash=false -cleanup.if_condition=false -cleanup.insert_inferred_type_arguments=false -cleanup.instanceof=false -cleanup.instanceof_keyword=false -cleanup.invert_equals=false -cleanup.join=false -cleanup.lazy_logical_operator=false -cleanup.make_local_variable_final=true -cleanup.make_parameters_final=false -cleanup.make_private_fields_final=true -cleanup.make_type_abstract_if_missing_method=false -cleanup.make_variable_declarations_final=false -cleanup.map_cloning=false -cleanup.merge_conditional_blocks=false -cleanup.multi_catch=false -cleanup.never_use_blocks=false -cleanup.never_use_parentheses_in_expressions=true -cleanup.no_string_creation=false -cleanup.no_super=false -cleanup.number_suffix=false -cleanup.objects_equals=false -cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false -cleanup.operand_factorization=false -cleanup.organize_imports=true -cleanup.overridden_assignment=false -cleanup.plain_replacement=false -cleanup.precompile_regex=false -cleanup.primitive_comparison=false -cleanup.primitive_parsing=false -cleanup.primitive_rather_than_wrapper=false -cleanup.primitive_serialization=false -cleanup.pull_out_if_from_if_else=false -cleanup.pull_up_assignment=false -cleanup.push_down_negation=false -cleanup.qualify_static_field_accesses_with_declaring_class=false -cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -cleanup.qualify_static_member_accesses_with_declaring_class=false -cleanup.qualify_static_method_accesses_with_declaring_class=false -cleanup.reduce_indentation=false -cleanup.redundant_comparator=false -cleanup.redundant_falling_through_block_end=false -cleanup.remove_private_constructors=true -cleanup.remove_redundant_modifiers=false -cleanup.remove_redundant_semicolons=true -cleanup.remove_redundant_type_arguments=true -cleanup.remove_trailing_whitespaces=true -cleanup.remove_trailing_whitespaces_all=true -cleanup.remove_trailing_whitespaces_ignore_empty=false -cleanup.remove_unnecessary_array_creation=false -cleanup.remove_unnecessary_casts=true -cleanup.remove_unnecessary_nls_tags=false -cleanup.remove_unused_imports=true -cleanup.remove_unused_local_variables=false -cleanup.remove_unused_method_parameters=false -cleanup.remove_unused_private_fields=true -cleanup.remove_unused_private_members=false -cleanup.remove_unused_private_methods=true -cleanup.remove_unused_private_types=true -cleanup.return_expression=false -cleanup.simplify_lambda_expression_and_method_ref=false -cleanup.single_used_field=false -cleanup.sort_members=false -cleanup.sort_members_all=false -cleanup.standard_comparison=false -cleanup.static_inner_class=false -cleanup.strictly_equal_or_different=false -cleanup.stringbuffer_to_stringbuilder=false -cleanup.stringbuilder=false -cleanup.stringbuilder_for_local_vars=true -cleanup.stringconcat_to_textblock=false -cleanup.substring=false -cleanup.switch=false -cleanup.system_property=false -cleanup.system_property_boolean=false -cleanup.system_property_file_encoding=false -cleanup.system_property_file_separator=false -cleanup.system_property_line_separator=false -cleanup.system_property_path_separator=false -cleanup.ternary_operator=false -cleanup.try_with_resource=false -cleanup.unlooped_while=false -cleanup.unreachable_block=false -cleanup.use_anonymous_class_creation=false -cleanup.use_autoboxing=false -cleanup.use_blocks=false -cleanup.use_blocks_only_for_return_and_throw=false -cleanup.use_directly_map_method=false -cleanup.use_lambda=true -cleanup.use_parentheses_in_expressions=false -cleanup.use_string_is_blank=false -cleanup.use_this_for_non_static_field_access=false -cleanup.use_this_for_non_static_field_access_only_if_necessary=true -cleanup.use_this_for_non_static_method_access=false -cleanup.use_this_for_non_static_method_access_only_if_necessary=true -cleanup.use_unboxing=false -cleanup.use_var=false -cleanup.useless_continue=false -cleanup.useless_return=false -cleanup.valueof_rather_than_instantiation=false -cleanup_profile=_CDT -cleanup_settings_version=2 -eclipse.preferences.version=1 -editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true -formatter_profile=_CDT -formatter_settings_version=14 -internal.default.compliance=user -org.eclipse.jdt.ui.exception.name=e -org.eclipse.jdt.ui.gettersetter.use.is=true -org.eclipse.jdt.ui.ignorelowercasenames=true -org.eclipse.jdt.ui.importorder=java;javax;org;com; -org.eclipse.jdt.ui.keywordthis=false -org.eclipse.jdt.ui.ondemandthreshold=1000 -org.eclipse.jdt.ui.overrideannotation=true -org.eclipse.jdt.ui.staticondemandthreshold=1000 -org.eclipse.jdt.ui.text.custom_code_templates= -sp_cleanup.add_default_serial_version_id=true -sp_cleanup.add_generated_serial_version_id=false -sp_cleanup.add_missing_annotations=true -sp_cleanup.add_missing_deprecated_annotations=true -sp_cleanup.add_missing_methods=false -sp_cleanup.add_missing_nls_tags=false -sp_cleanup.add_missing_override_annotations=true -sp_cleanup.add_missing_override_annotations_interface_methods=true -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_functional_interfaces=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.insert_inferred_type_arguments=false -sp_cleanup.make_local_variable_final=true -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_redundant_modifiers=false -sp_cleanup.remove_redundant_semicolons=true -sp_cleanup.remove_redundant_type_arguments=true -sp_cleanup.remove_trailing_whitespaces=true -sp_cleanup.remove_trailing_whitespaces_all=true -sp_cleanup.remove_trailing_whitespaces_ignore_empty=false -sp_cleanup.remove_unnecessary_casts=true -sp_cleanup.remove_unnecessary_nls_tags=false -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_anonymous_class_creation=false -sp_cleanup.use_blocks=false -sp_cleanup.use_blocks_only_for_return_and_throw=false -sp_cleanup.use_lambda=true -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/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.pde.api.tools.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.pde.api.tools.prefs deleted file mode 100644 index ec9fbf321d0..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.pde.api.tools.prefs +++ /dev/null @@ -1,184 +0,0 @@ -ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error -ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error -ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error -ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error -ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error -ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error -API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error -API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error -API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error -API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error -API_USE_SCAN_FIELD_SEVERITY=Error -API_USE_SCAN_METHOD_SEVERITY=Error -API_USE_SCAN_TYPE_SEVERITY=Error -CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -CLASS_ELEMENT_TYPE_ADDED_FIELD=Error -CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error -CLASS_ELEMENT_TYPE_ADDED_METHOD=Error -CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error -CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error -CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error -CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error -CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error -CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error -CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error -CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error -CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error -CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error -CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error -CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error -CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error -CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error -CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error -CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error -CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error -CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error -CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error -CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error -CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error -CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error -CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error -ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error -ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error -ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error -ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error -ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error -ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error -ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error -ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error -ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error -ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error -FIELD_ELEMENT_TYPE_ADDED_VALUE=Error -FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error -FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error -FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error -FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error -FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error -FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error -FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error -FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error -FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error -FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error -ILLEGAL_EXTEND=Warning -ILLEGAL_IMPLEMENT=Warning -ILLEGAL_INSTANTIATE=Warning -ILLEGAL_OVERRIDE=Warning -ILLEGAL_REFERENCE=Warning -INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error -INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error -INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error -INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error -INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error -INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error -INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error -INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error -INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error -INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error -INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error -INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error -INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error -INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error -INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error -INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error -INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error -INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error -INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error -INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error -INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error -INVALID_ANNOTATION=Ignore -INVALID_JAVADOC_TAG=Error -INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning -LEAK_EXTEND=Warning -LEAK_FIELD_DECL=Warning -LEAK_IMPLEMENT=Warning -LEAK_METHOD_PARAM=Warning -LEAK_METHOD_RETURN_TYPE=Warning -METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error -METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error -METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error -METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error -METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error -METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error -METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error -METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error -METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error -METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error -METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error -METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error -METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error -METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error -MISSING_EE_DESCRIPTIONS=Warning -TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -UNUSED_PROBLEM_FILTERS=Warning -automatically_removed_unused_problem_filters=false -changed_execution_env=Error -eclipse.preferences.version=1 -incompatible_api_component_version=Error -incompatible_api_component_version_include_major_without_breaking_change=Disabled -incompatible_api_component_version_include_minor_without_api_change=Disabled -incompatible_api_component_version_report_major_without_breaking_change=Warning -incompatible_api_component_version_report_minor_without_api_change=Warning -invalid_since_tag_version=Error -malformed_since_tag=Error -missing_since_tag=Error -report_api_breakage_when_major_version_incremented=Disabled -report_resolution_errors_api_component=Warning diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.pde.prefs b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.pde.prefs deleted file mode 100644 index ffaa8e3f1a7..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/.settings/org.eclipse.pde.prefs +++ /dev/null @@ -1,36 +0,0 @@ -compilers.f.unresolved-features=1 -compilers.f.unresolved-plugins=1 -compilers.incompatible-environment=1 -compilers.p.build=1 -compilers.p.build.bin.includes=0 -compilers.p.build.encodings=2 -compilers.p.build.java.compiler=2 -compilers.p.build.java.compliance=1 -compilers.p.build.missing.output=2 -compilers.p.build.output.library=1 -compilers.p.build.source.library=1 -compilers.p.build.src.includes=0 -compilers.p.deprecated=1 -compilers.p.discouraged-class=1 -compilers.p.exec-env-too-low=1 -compilers.p.internal=1 -compilers.p.missing-packages=2 -compilers.p.missing-version-export-package=2 -compilers.p.missing-version-import-package=2 -compilers.p.missing-version-require-bundle=2 -compilers.p.no-required-att=0 -compilers.p.no.automatic.module=1 -compilers.p.not-externalized-att=1 -compilers.p.service.component.without.lazyactivation=1 -compilers.p.unknown-attribute=1 -compilers.p.unknown-class=0 -compilers.p.unknown-element=1 -compilers.p.unknown-identifier=0 -compilers.p.unknown-resource=0 -compilers.p.unresolved-ex-points=0 -compilers.p.unresolved-import=0 -compilers.s.create-docs=false -compilers.s.doc-folder=doc -compilers.s.open-tags=1 -compilers.use-project=true -eclipse.preferences.version=1 diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/META-INF/MANIFEST.MF b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/META-INF/MANIFEST.MF deleted file mode 100644 index 9640e5b7d15..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/META-INF/MANIFEST.MF +++ /dev/null @@ -1,23 +0,0 @@ -Manifest-Version: 1.0 -Bundle-ManifestVersion: 2 -Bundle-Name: %pluginName -Bundle-SymbolicName: org.eclipse.tm.terminal.connector.telnet;singleton:=true -Bundle-Version: 4.8.400.qualifier -Bundle-Activator: org.eclipse.tm.terminal.connector.telnet.activator.UIPlugin -Bundle-Vendor: %providerName -Require-Bundle: org.eclipse.core.expressions;bundle-version="[3.9.400,4)", - org.eclipse.core.runtime;bundle-version="[3.33.0,4)", - org.eclipse.equinox.security;bundle-version="[1.4.600,2)", - org.eclipse.tm.terminal.view.core;bundle-version="[4.10.400,5)";resolution:=optional, - org.eclipse.tm.terminal.view.ui;bundle-version="[4.11.600,5)";resolution:=optional, - org.eclipse.tm.terminal.control;bundle-version="[5.6.0,6.0.0)", - org.eclipse.ui;bundle-version="[3.207.200,4)" -Bundle-RequiredExecutionEnvironment: JavaSE-17 -Bundle-ActivationPolicy: lazy -Bundle-Localization: plugin -Export-Package: org.eclipse.tm.terminal.connector.telnet.activator;x-internal:=true, - org.eclipse.tm.terminal.connector.telnet.connector, - org.eclipse.tm.terminal.connector.telnet.controls, - org.eclipse.tm.terminal.connector.telnet.launcher, - org.eclipse.tm.terminal.connector.telnet.nls;x-internal:=true -Automatic-Module-Name: org.eclipse.tm.terminal.connector.telnet diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/about.html b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/about.html deleted file mode 100644 index b3134865230..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/about.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - About - - - -

About This Content

- -

November 30, 2017

-

License

- -

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

- -

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

- - - - \ No newline at end of file diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/build.properties b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/build.properties deleted file mode 100644 index 4a9d09e7c1c..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/build.properties +++ /dev/null @@ -1,19 +0,0 @@ -############################################################################### -# Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved. -# This program and the accompanying materials are made available under the terms -# of the Eclipse Public License 2.0 which accompanies this distribution, and is -# available at https://www.eclipse.org/legal/epl-2.0/ -# -# SPDX-License-Identifier: EPL-2.0 -# -# Contributors: -# Wind River Systems - initial API and implementation -############################################################################### -source.. = src/ -output.. = bin/ -bin.includes = META-INF/,\ - .,\ - plugin.properties,\ - plugin.xml,\ - about.html -src.includes = about.html diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/plugin.properties b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/plugin.properties deleted file mode 100644 index 2c151e75e3d..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/plugin.properties +++ /dev/null @@ -1,22 +0,0 @@ -################################################################################## -# Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. -# This program and the accompanying materials are made available under the terms -# of the Eclipse Public License 2.0 which accompanies this distribution, and is -# available at https://www.eclipse.org/legal/epl-2.0/ -# -# SPDX-License-Identifier: EPL-2.0 -# -# Contributors: -# Wind River Systems - initial API and implementation -################################################################################## - -pluginName = Terminal Telnet Connector -providerName = Eclipse CDT - -# ----- Terminal Connector ----- - -TelnetConnector.label=Telnet - -# ----- Terminal Launcher Delegates ----- - -TelnetLauncherDelegate.label=Telnet Terminal diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/plugin.xml b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/plugin.xml deleted file mode 100644 index dc9d728cb06..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/plugin.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/activator/UIPlugin.java b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/activator/UIPlugin.java deleted file mode 100644 index b85e25876b3..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/activator/UIPlugin.java +++ /dev/null @@ -1,105 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - * Max Weninger (Wind River) - [366374] [TERMINALS][TELNET] Add Telnet terminal support - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.telnet.activator; - -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.resource.ImageRegistry; -import org.eclipse.swt.graphics.Image; -import org.eclipse.tm.terminal.view.core.tracing.TraceHandler; -import org.eclipse.ui.plugin.AbstractUIPlugin; -import org.osgi.framework.BundleContext; - -/** - * The activator class controls the plug-in life cycle - */ -public class UIPlugin extends AbstractUIPlugin { - // The shared instance - private static UIPlugin plugin; - // The trace handler instance - private static volatile TraceHandler traceHandler; - - /** - * The constructor - */ - public UIPlugin() { - } - - /** - * Returns the shared instance - * - * @return the shared instance - */ - public static UIPlugin getDefault() { - return plugin; - } - - /** - * Convenience method which returns the unique identifier of this plugin. - */ - public static String getUniqueIdentifier() { - if (getDefault() != null && getDefault().getBundle() != null) { - return getDefault().getBundle().getSymbolicName(); - } - return "org.eclipse.tm.terminal.connector.telnet"; //$NON-NLS-1$ - } - - /** - * Returns the bundles trace handler. - * - * @return The bundles trace handler. - */ - public static TraceHandler getTraceHandler() { - if (traceHandler == null) { - traceHandler = new TraceHandler(getUniqueIdentifier()); - } - return traceHandler; - } - - @Override - public void start(BundleContext context) throws Exception { - super.start(context); - plugin = this; - } - - @Override - public void stop(BundleContext context) throws Exception { - plugin = null; - super.stop(context); - } - - @Override - protected void initializeImageRegistry(ImageRegistry registry) { - } - - /** - * Loads the image registered under the specified key from the image - * registry and returns the Image object instance. - * - * @param key The key the image is registered with. - * @return The Image object instance or null. - */ - public static Image getImage(String key) { - return getDefault().getImageRegistry().get(key); - } - - /** - * Loads the image registered under the specified key from the image - * registry and returns the ImageDescriptor object instance. - * - * @param key The key the image is registered with. - * @return The ImageDescriptor object instance or null. - */ - public static ImageDescriptor getImageDescriptor(String key) { - return getDefault().getImageRegistry().getDescriptor(key); - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/ITelnetSettings.java b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/ITelnetSettings.java deleted file mode 100644 index b59413ca745..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/ITelnetSettings.java +++ /dev/null @@ -1,48 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - * Martin Oberhuber (Wind River) - fixed copyright headers and beautified - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.telnet.connector; - -import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore; - -/** - * @noimplement This interface is not intended to be implemented by clients. - * @noextend This interface is not intended to be extended by clients. - */ -public interface ITelnetSettings { - /** - * @since 4.2 - */ - static final String EOL_CRNUL = "CR+NUL"; //$NON-NLS-1$ - /** - * @since 4.2 - */ - static final String EOL_CRLF = "CR+LF"; //$NON-NLS-1$ - - String getHost(); - - int getNetworkPort(); - - int getTimeout(); - - /** - * @since 4.2 - */ - String getEndOfLine(); - - String getSummary(); - - void load(ISettingsStore store); - - void save(ISettingsStore store); -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/NetworkPortMap.java b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/NetworkPortMap.java deleted file mode 100644 index 5fb593acd18..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/NetworkPortMap.java +++ /dev/null @@ -1,62 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Initial Contributors: - * The following Wind River employees contributed to the Terminal component - * that contains this file: Chris Thew, Fran Litterio, Stephen Lamb, - * Helmut Haigermoser and Ted Williams. - * - * Contributors: - * Michael Scharf (Wind River) - extracted from TerminalNetworkPortMap - * Martin Oberhuber (Wind River) - fixed copyright headers and beautified - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.telnet.connector; - -import java.util.ArrayList; -import java.util.List; - -public class NetworkPortMap { - public static final String PROP_NAMETGTCONS = "tgtcons"; //$NON-NLS-1$ - public static final String PROP_NAMETELNET = "telnet"; //$NON-NLS-1$ - public static final String PROP_VALUENET = "1233"; //$NON-NLS-1$ - public static final String PROP_VALUETGTCONS = "1232"; //$NON-NLS-1$ - public static final String PROP_VALUETELNET = "23"; //$NON-NLS-1$ - - String[][] fPortMap = new String[][] { - // portName, port - { PROP_NAMETGTCONS, PROP_VALUETGTCONS }, { PROP_NAMETELNET, PROP_VALUETELNET } }; - - public String getDefaultNetworkPort() { - return PROP_VALUETELNET; - } - - public String findPortName(String strPort) { - for (int i = 0; i < fPortMap.length; i++) { - if (fPortMap[i][1].equals(strPort)) - return fPortMap[i][0]; - } - return null; - } - - public String findPort(String strPortName) { - for (int i = 0; i < fPortMap.length; i++) { - if (fPortMap[i][0].equals(strPortName)) - return fPortMap[i][1]; - } - return null; - } - - public List getNameTable() { - List names = new ArrayList<>(); - for (int i = 0; i < fPortMap.length; i++) { - names.add(fPortMap[i][0]); - } - return names; - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetCodes.java b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetCodes.java deleted file mode 100644 index 21edea869da..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetCodes.java +++ /dev/null @@ -1,94 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Fran Litterio (Wind River) - initial API and implementation - * Helmut Haigermoser (Wind River) - repackaged - * Ted Williams (Wind River) - repackaged into org.eclipse namespace - * Michael Scharf (Wind River) - split into core, view and connector plugins - * Martin Oberhuber (Wind River) - fixed copyright headers and beautified - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.telnet.connector; - -/** - * This interface defines symbolic constants for numeric TELNET protocol command and - * option codes. Any class that needs to use these constants must implement this - * interface. The meanings of these constants are defined in the various TELNET RFCs - * (RFC 854 to RFC 861, and others). - */ -interface TelnetCodes { - /** Command code: Subnegotiation End. */ - static final byte TELNET_SE = (byte) 240; - - /** Command code: No-op. */ - static final byte TELNET_NOP = (byte) 241; - - /** Command code: Data Mark. */ - static final byte TELNET_DM = (byte) 242; - - /** Command code: Break. */ - static final byte TELNET_BREAK = (byte) 243; - - /** Command code: Interrupt Process. */ - static final byte TELNET_IP = (byte) 244; - - /** Command code: Abort Output. */ - static final byte TELNET_AO = (byte) 245; - - /** Command code: Are You There. */ - static final byte TELNET_AYT = (byte) 246; - - /** Command code: Erase Character. */ - static final byte TELNET_EC = (byte) 247; - - /** Command code: Erase Line. */ - static final byte TELNET_EL = (byte) 248; - - /** Command code: Go Ahead. */ - static final byte TELNET_GA = (byte) 249; - - /** Command code: Subnegotiation Begin. */ - static final byte TELNET_SB = (byte) 250; - - /** Command code: Will. */ - static final byte TELNET_WILL = (byte) 251; - - /** Command code: Won't. */ - static final byte TELNET_WONT = (byte) 252; - - /** Command code: Do. */ - static final byte TELNET_DO = (byte) 253; - - /** Command code: Don't. */ - static final byte TELNET_DONT = (byte) 254; - - /** Command code: Interpret As Command. */ - static final byte TELNET_IAC = (byte) 255; - - /** Command code: IS. */ - static final byte TELNET_IS = 0; - - /** Command code: SEND. */ - static final byte TELNET_SEND = 1; - - /** Option code: Transmit Binary option. */ - static final byte TELNET_OPTION_TRANSMIT_BINARY = 0; - - /** Option code: Echo option. */ - static final byte TELNET_OPTION_ECHO = 1; - - /** Option code: Suppress Go Ahead option. */ - static final byte TELNET_OPTION_SUPPRESS_GA = 3; - - /** Option code: Terminal Type */ - static final byte TELNET_OPTION_TERMINAL_TYPE = 24; - - /** Option code: Negotitate About Window Size (NAWS) */ - static final byte TELNET_OPTION_NAWS = 31; -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetConnectWorker.java b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetConnectWorker.java deleted file mode 100644 index d2ab614884a..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetConnectWorker.java +++ /dev/null @@ -1,131 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Initial Contributors: - * The following Wind River employees contributed to the Terminal component - * that contains this file: Chris Thew, Fran Litterio, Stephen Lamb, - * Helmut Haigermoser and Ted Williams. - * - * Contributors: - * Michael Scharf (Wind River) - extracted from TerminalControl - * Martin Oberhuber (Wind River) - fixed copyright headers and beautified - * Uwe Stieber (Wind River) - [287158][terminal][telnet] Connect worker is giving up to early - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.telnet.connector; - -import java.net.ConnectException; -import java.net.InetSocketAddress; -import java.net.Socket; -import java.net.SocketTimeoutException; -import java.net.UnknownHostException; - -import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl; -import org.eclipse.tm.internal.terminal.provisional.api.Logger; -import org.eclipse.tm.internal.terminal.provisional.api.TerminalState; - -class TelnetConnectWorker extends Thread { - private final ITerminalControl fControl; - private final TelnetConnector fConn; - - protected TelnetConnectWorker(TelnetConnector conn, ITerminalControl control) { - fControl = control; - fConn = conn; - fControl.setState(TerminalState.CONNECTING); - } - - @Override - public void run() { - // Retry the connect with after a little pause in case the - // remote telnet server isn't ready. ConnectExceptions might - // happen if the telnet server process did not initialized itself. - // This is seen especially if the telnet server is a process - // providing it's input and output via a built in telnet server. - int remaining = 10; - - while (remaining >= 0) { - // Pause before we re-try if the remaining tries are less than the initial value - if (remaining < 10) - try { - Thread.sleep(500); - } catch (InterruptedException e) { - /* ignored on purpose */ } - - try { - int nTimeout = fConn.getTelnetSettings().getTimeout() * 1000; - String strHost = fConn.getTelnetSettings().getHost(); - int nPort = fConn.getTelnetSettings().getNetworkPort(); - InetSocketAddress address = new InetSocketAddress(strHost, nPort); - Socket socket = new Socket(); - - socket.connect(address, nTimeout); - - // If we get to this point, the connect succeeded and we will - // force the remaining counter to be 0. - remaining = 0; - - // This next call causes reads on the socket to see TCP urgent data - // inline with the rest of the non-urgent data. Without this call, TCP - // urgent data is silently dropped by Java. This is required for - // TELNET support, because when the TELNET server sends "IAC DM", the - // IAC byte is TCP urgent data. If urgent data is silently dropped, we - // only see the DM, which looks like an ISO Latin-1 '�' character. - - socket.setOOBInline(true); - - fConn.setSocket(socket); - - TelnetConnection connection = new TelnetConnection(fConn, socket); - socket.setKeepAlive(true); - fConn.setTelnetConnection(connection); - connection.start(); - fControl.setState(TerminalState.CONNECTED); - - } catch (UnknownHostException ex) { - // No re-try in case of UnknownHostException, there is no indication that - // the DNS will fix itself - remaining = 0; - //Construct error message and signal failed - String txt = "Unknown host: " + ex.getMessage(); //$NON-NLS-1$ - connectFailed(txt, "Unknown host: " + ex.getMessage() + "\n"); //$NON-NLS-1$ //$NON-NLS-2$ - } catch (SocketTimeoutException socketTimeoutException) { - // Time out occurred. No re-try in this case either. Time out can - // be increased by the user. Multiplying the timeout with the remaining - // counter is not desired. - remaining = 0; - // Construct error message and signal failed - connectFailed(socketTimeoutException.getMessage(), - "Connection Error!\n" + socketTimeoutException.getMessage()); //$NON-NLS-1$ - } catch (ConnectException connectException) { - // In case of a ConnectException, do a re-try. The server could have been - // simply not ready yet and the worker would give up to early. If the terminal - // control is already closed (disconnected), don't print "Connection refused" errors - if (remaining == 0 && TerminalState.CLOSED != fControl.getState()) { - connectFailed(connectException.getMessage(), "Connection refused!"); //$NON-NLS-1$ - } - } catch (Exception exception) { - // Any other exception on connect. No re-try in this case either - remaining = 0; - // Log the exception - Logger.logException(exception); - // And signal failed - connectFailed(exception.getMessage(), ""); //$NON-NLS-1$ - } finally { - remaining--; - } - } - } - - private void connectFailed(String terminalText, String msg) { - Logger.log(terminalText); - fControl.displayTextInTerminal(terminalText); - fConn.cleanSocket(); - fControl.setState(TerminalState.CLOSED); - fControl.setMsg(msg); - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetConnection.java b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetConnection.java deleted file mode 100644 index 63a1afd9a8b..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetConnection.java +++ /dev/null @@ -1,704 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Fran Litterio (Wind River) - initial API and implementation - * Helmut Haigermoser (Wind River) - repackaged - * Ted Williams (Wind River) - repackaged into org.eclipse namespace - * Michael Scharf (Wind River) - split into core, view and connector plugins - * Martin Oberhuber (Wind River) - fixed copyright headers and beautified - * Michael Scharf (Wind River) - [209665] Add ability to log byte streams from terminal - * Alex Panchenko (Xored) - [277061] TelnetConnection.isConnected() should check if socket was not closed - * Uwe Stieber (Wind River) - [281329] Telnet connection not handling "SocketException: Connection reset" correct - * Nils Hagge (Siemens AG) - [276023] close socket streams after connection is disconnected - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.telnet.connector; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.Socket; -import java.net.SocketException; - -import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl; -import org.eclipse.tm.internal.terminal.provisional.api.Logger; -import org.eclipse.tm.internal.terminal.provisional.api.TerminalState; - -/** - * This class encapsulates a TELNET connection to a remote server. It processes - * incoming TELNET protocol data and generates outbound TELNET protocol data. It - * also manages two sets of TelnetOption objects: one for the local endpoint and - * one for the remote endpoint. - *

- * - * IMPORTANT: Understanding this code requires understanding the TELNET protocol - * and TELNET option processing, as defined in the RFCs listed below. - *

- * - * @author Fran Litterio (francis.litterio@windriver.com) - * - * @see RFC 854 - * @see RFC 855 - * @see RFC 856 - * @see RFC 857 - * @see RFC 858 - * @see RFC 859 - * @see RFC 860 - * @see RFC 861 - * @see RFC 1091 - * @see RFC 1096 - * @see RFC 1073 - * @see RFC 1079 - * @see RFC 1143 - * @see RFC 1572 - */ -public class TelnetConnection extends Thread implements TelnetCodes { - /** - * TELNET connection state: Initial state. - */ - protected static final int STATE_INITIAL = 0; - - /** - * TELNET connection state: Last byte processed was IAC code. code. - */ - protected static final int STATE_IAC_RECEIVED = 1; - - /** - * TELNET connection state: Last byte processed was WILL code. code. - */ - protected static final int STATE_WILL_RECEIVED = 2; - - /** - * TELNET connection state: Last byte processed was WONT code. - */ - protected static final int STATE_WONT_RECEIVED = 3; - - /** - * TELNET connection state: Last byte processed was DO code. - */ - protected static final int STATE_DO_RECEIVED = 4; - - /** - * TELNET connection state: Last byte processed was DONT code. - */ - protected static final int STATE_DONT_RECEIVED = 5; - - /** - * TELNET connection state: Last byte processed was SB. - */ - protected static final int STATE_SUBNEGOTIATION_STARTED = 6; - - /** - * TELNET connection state: Currently receiving sub-negotiation data. - */ - protected static final int STATE_RECEIVING_SUBNEGOTIATION = 7; - - /** - * Size of buffer for processing data received from remote endpoint. - */ - protected static final int BUFFER_SIZE = 2048; - - /** - * Holds raw bytes received from the remote endpoint, prior to any TELNET - * protocol processing. - */ - protected byte[] rawBytes = new byte[BUFFER_SIZE]; - - /** - * Holds incoming network data after the TELNET protocol bytes have been - * processed and removed. - */ - protected byte[] processedBytes = new byte[BUFFER_SIZE]; - - /** - * This field holds a StringBuffer containing text recently received from - * the remote endpoint (after all TELNET protocol bytes have been processed - * and removed). - */ - protected StringBuffer processedStringBuffer = new StringBuffer(BUFFER_SIZE); - - /** - * Holds the current state of the TELNET protocol processor. - */ - protected int telnetState = STATE_INITIAL; - - /** - * This field is true if the remote endpoint is a TELNET server, false if - * not. We set this to true if and only if the remote endpoint sends - * recognizable TELNET protocol data. We do not assume that the remote - * endpoint is a TELNET server just because it is listening on port 23. This - * allows us to successfully connect to a TELNET server listening on a port - * other than 23. - *

- * - * When this field first changes from false to true, we send all WILL or DO - * commands to the remote endpoint. - *

- * - * @see #telnetServerDetected() - */ - protected boolean remoteIsTelnetServer = false; - - /** - * An array of TelnetOption objects representing the local endpoint's TELNET - * options. The array is indexed by the numeric TELNET option code. - */ - protected TelnetOption[] localOptions = new TelnetOption[256]; - - /** - * An array of TelnetOption objects representing the remote endpoint's - * TELNET options. The array is indexed by the numeric TELNET option code. - */ - protected TelnetOption[] remoteOptions = new TelnetOption[256]; - - /** - * An array of bytes that holds the TELNET subnegotiation command most - * recently received from the remote endpoint. This array does _not_ include - * the leading IAC SB bytes, nor does it include the trailing IAC SE bytes. - * The first byte of this array is always a TELNET option code. - */ - protected byte[] receivedSubnegotiation = new byte[128]; - - /** - * This field holds the index into array {@link #receivedSubnegotiation} of - * the next unused byte. This is used by method - * {@link #processTelnetProtocol(int)} when the state machine is in states - * {@link #STATE_SUBNEGOTIATION_STARTED} and {@link - * #STATE_RECEIVING_SUBNEGOTIATION}. - */ - protected int nextSubnegotiationByteIndex = 0; - - /** - * This field is true if an error occurs while processing a subnegotiation - * command. - * - * @see #processTelnetProtocol(int) - */ - protected boolean ignoreSubnegotiation = false; - - /** - * This field holds the width of the Terminal screen in columns. - */ - protected int width = 0; - - /** - * This field holds the height of the Terminal screen in rows. - */ - protected int height = 0; - - /** - * This field holds a reference to the {@link ITerminalControl} singleton. - */ - protected TelnetConnector terminalControl; - - /** - * This method holds the Socket object for the TELNET connection. - */ - protected Socket socket; - - /** - * This field holds a reference to an {@link InputStream} object used to - * receive data from the remote endpoint. - */ - protected InputStream inputStream; - - /** - * This field holds a reference to an {@link OutputStream} object used to - * send data to the remote endpoint. - */ - protected OutputStream outputStream; - - /** - * UNDER CONSTRUCTION - */ - protected boolean localEcho = true; - - /** - * This constructor just initializes some internal object state from its - * arguments. - */ - public TelnetConnection(TelnetConnector terminalControl, Socket socket) throws IOException { - super(); - - Logger.log("entered"); //$NON-NLS-1$ - - this.terminalControl = terminalControl; - this.socket = socket; - - inputStream = socket.getInputStream(); - outputStream = socket.getOutputStream(); - - initializeOptions(); - } - - /** - * Returns true if the TCP connection represented by this object is - * connected, false otherwise. - */ - public boolean isConnected() { - return socket != null && socket.isConnected() && !socket.isClosed(); - } - - /** - * Returns true if the TCP connection represented by this object is - * connected and the remote endpoint is a TELNET server, false otherwise. - */ - public boolean isRemoteTelnetServer() { - return remoteIsTelnetServer; - } - - /** - * This method sets the terminal width and height to the supplied values. If - * either new value differs from the corresponding old value, we initiate a - * NAWS subnegotiation to inform the remote endpoint of the new terminal - * size. - */ - public void setTerminalSize(int newWidth, int newHeight) { - Logger.log("Setting new size: width = " + newWidth + ", height = " + newHeight); //$NON-NLS-1$ //$NON-NLS-2$ - if (!isConnected() || !isRemoteTelnetServer()) - return; - boolean sizeChanged = false; - - if (newWidth != width || newHeight != height) - sizeChanged = true; - - width = newWidth; - height = newHeight; - - if (sizeChanged && remoteIsTelnetServer && localOptions[TELNET_OPTION_NAWS].isEnabled()) { - Integer[] sizeData = { Integer.valueOf(width), Integer.valueOf(height) }; - - localOptions[TELNET_OPTION_NAWS].sendSubnegotiation(sizeData); - } - } - - /** - * Returns true if local echoing is enabled for this TCP connection, false - * otherwise. - */ - public boolean localEcho() { - return localEcho; - } - - private void displayTextInTerminal(String string) { - terminalControl.displayTextInTerminal(string); - } - - /** - * This method runs in its own thread. It reads raw bytes from the TELNET - * connection socket, processes any TELNET protocol bytes (and removes - * them), and passes the remaining bytes to a TerminalDisplay object for - * display. - */ - @Override - public void run() { - Logger.log("Entered"); //$NON-NLS-1$ - - try { - while (socket.isConnected()) { - int nRawBytes = inputStream.read(rawBytes); - - if (nRawBytes == -1) { - // End of input on inputStream. - Logger.log("End of input reading from socket!"); //$NON-NLS-1$ - - // Announce to the user that the remote endpoint has closed the - // connection. - - displayTextInTerminal(TelnetMessages.CONNECTION_CLOSED_BY_FOREIGN_HOST); - - // Tell the ITerminalControl object that the connection is - // closed. - terminalControl.setState(TerminalState.CLOSED); - break; - } - - // Process any TELNET protocol data that we receive. Don't - // send any TELNET protocol data until we are sure the remote - // endpoint is a TELNET server. - - int nProcessedBytes = processTelnetProtocol(nRawBytes); - - if (nProcessedBytes > 0) { - terminalControl.getRemoteToTerminalOutputStream().write(processedBytes, 0, nProcessedBytes); - } - } - } catch (SocketException ex) { - String message = ex.getMessage(); - - // A "socket closed" exception is normal here. It's caused by the - // user clicking the disconnect button on the Terminal view toolbar. - - if (message != null && !message.equalsIgnoreCase("Socket closed") //$NON-NLS-1$ - && !message.equalsIgnoreCase("Connection reset")) //$NON-NLS-1$ - { - Logger.logException(ex); - } - - } catch (Exception ex) { - Logger.logException(ex); - } finally { - // Tell the ITerminalControl object that the connection is closed. - terminalControl.setState(TerminalState.CLOSED); - try { - inputStream.close(); - } catch (IOException ioe) { - /*ignore*/ } - try { - outputStream.close(); - } catch (IOException ioe) { - /*ignore*/ } - } - } - - /** - * This method initializes the localOptions[] and remoteOptions[] arrays so - * that they contain references to TelnetOption objects representing our - * desired state for each option. The goal is to achieve server-side - * echoing, suppression of Go Aheads, and to send the local terminal type - * and size to the remote endpoint. - */ - protected void initializeOptions() { - // First, create all the TelnetOption objects in the "undesired" state. - - for (int i = 0; i < localOptions.length; ++i) { - localOptions[i] = new TelnetOption((byte) i, false, true, outputStream); - } - - for (int i = 0; i < localOptions.length; ++i) { - remoteOptions[i] = new TelnetOption((byte) i, false, false, outputStream); - } - - // Next, set some of the options to the "desired" state. The options we - // desire to be enabled are as follows: - // - // TELNET Option Desired for Desired for - // Name and Code Local Endpoint Remote Endpoint - // --------------------- -------------- --------------- - // Echo (1) No Yes - // Suppress Go Ahead (3) Yes Yes - // Terminal Type (24) Yes Yes - // NAWS (31) Yes Yes - // - // All other options remain in the "undesired" state, and thus will be - // disabled (since either endpoint can force any option to be disabled by simply - // answering WILL with DONT and DO with WONT). - - localOptions[TELNET_OPTION_ECHO].setDesired(false); - remoteOptions[TELNET_OPTION_ECHO].setDesired(true); - - localOptions[TELNET_OPTION_SUPPRESS_GA].setDesired(true); - remoteOptions[TELNET_OPTION_SUPPRESS_GA].setDesired(true); - - localOptions[TELNET_OPTION_TERMINAL_TYPE].setDesired(true); - remoteOptions[TELNET_OPTION_TERMINAL_TYPE].setDesired(true); - - localOptions[TELNET_OPTION_NAWS].setDesired(true); - remoteOptions[TELNET_OPTION_NAWS].setDesired(true); - } - - /** - * Process TELNET protocol data contained in the first count bytes - * of rawBytes. This function preserves its state between calls, - * because a multi-byte TELNET command might be split between two (or more) - * calls to this function. The state is preserved in field telnetState. - * This function implements an FSA that recognizes TELNET option codes. - * TELNET option sub-negotiation is delegated to instances of TelnetOption. - * - * @return The number of bytes remaining in the buffer after removing all - * TELNET protocol bytes. - */ - //TELNET option state is stored in instances of TelnetOption. - protected int processTelnetProtocol(int count) { - // This is too noisy to leave on all the time. - // Logger.log("Processing " + count + " bytes of data."); - - int nextProcessedByte = 0; - - for (int byteIndex = 0; byteIndex < count; ++byteIndex) { - // It is possible for control to flow through the below code such - // that nothing happens. This happens when array rawBytes[] contains no - // TELNET protocol data. - - byte inputByte = rawBytes[byteIndex]; - int ubyte = inputByte & 0xFF; - - switch (telnetState) { - case STATE_INITIAL: - if (inputByte == TELNET_IAC) { - telnetState = STATE_IAC_RECEIVED; - } else { - // It's not an IAC code, so just append it to - // processedBytes. - - processedBytes[nextProcessedByte++] = inputByte; - } - break; - - case STATE_IAC_RECEIVED: - switch (inputByte) { - case TELNET_IAC: - // Two IAC bytes in a row are translated into one byte with - // the - // value 0xff. - - processedBytes[nextProcessedByte++] = (byte) 0xff; - telnetState = STATE_INITIAL; - break; - - case TELNET_WILL: - telnetState = STATE_WILL_RECEIVED; - break; - - case TELNET_WONT: - telnetState = STATE_WONT_RECEIVED; - break; - - case TELNET_DO: - telnetState = STATE_DO_RECEIVED; - break; - - case TELNET_DONT: - telnetState = STATE_DONT_RECEIVED; - break; - - case TELNET_SB: - telnetState = STATE_SUBNEGOTIATION_STARTED; - break; - - // Commands to consume and ignore. - - // Data Mark (DM). This is sent by a TELNET server following an - // IAC sent as TCP urgent data. It should cause the client to - // skip all not yet processed non-TELNET-protocol data preceding the - // DM byte. However, Java 1.4.x has no way to inform clients of - // class Socket that urgent data is available, so we simply ignore the - // "IAC DM" command. Since the IAC is sent as TCP urgent data, - // the Socket must be put into OOB-inline mode via a call to - // setOOBInline(true), otherwise the IAC is silently dropped by - // Java and only the DM arrives (leaving the user to see a - // spurious ISO Latin-1 character). - case TELNET_DM: - - case TELNET_NOP: // No-op. - case TELNET_GA: // Go Ahead command. Meaningless on a full-duplex link. - case TELNET_IP: // Interupt Process command. Server should never send this. - case TELNET_AO: // Abort Output command. Server should never send this. - case TELNET_AYT: // Are You There command. Server should never send this. - case TELNET_EC: // Erase Character command. Server should never send this. - case TELNET_EL: // Erase Line command. Server should never send this. - telnetState = STATE_INITIAL; - break; - - default: - // Unrecognized command! This should never happen. - Logger.log("processTelnetProtocol: UNRECOGNIZED TELNET PROTOCOL COMMAND: " + //$NON-NLS-1$ - ubyte); - telnetState = STATE_INITIAL; - break; - } - break; - - // For the next four cases, WILL and WONT commands affect the state - // of remote options, and DO and DONT commands affect the state of - // local options. - - case STATE_WILL_RECEIVED: - Logger.log("Received WILL " + localOptions[ubyte].optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$ - remoteOptions[ubyte].handleWill(); - telnetState = STATE_INITIAL; - telnetServerDetected(); - break; - - case STATE_WONT_RECEIVED: - Logger.log("Received WONT " + localOptions[ubyte].optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$ - remoteOptions[ubyte].handleWont(); - telnetState = STATE_INITIAL; - telnetServerDetected(); - break; - - case STATE_DO_RECEIVED: - Logger.log("Received DO " + localOptions[ubyte].optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$ - localOptions[ubyte].handleDo(); - telnetState = STATE_INITIAL; - telnetServerDetected(); - break; - - case STATE_DONT_RECEIVED: - Logger.log("Received DONT " + localOptions[ubyte].optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$ - localOptions[ubyte].handleDont(); - telnetState = STATE_INITIAL; - telnetServerDetected(); - break; - - case STATE_SUBNEGOTIATION_STARTED: - Logger.log("Starting subnegotiation for option " + //$NON-NLS-1$ - localOptions[ubyte].optionName() + "."); //$NON-NLS-1$ - - // First, zero out the array of received subnegotiation butes. - - for (int i = 0; i < receivedSubnegotiation.length; ++i) - receivedSubnegotiation[i] = 0; - - // Forget about any previous subnegotiation errors. - - ignoreSubnegotiation = false; - - // Then insert this input byte into the array and enter state - // STATE_RECEIVING_SUBNEGOTIATION, where we will gather the - // remaining subnegotiation bytes. - - nextSubnegotiationByteIndex = 0; - receivedSubnegotiation[nextSubnegotiationByteIndex++] = inputByte; - telnetState = STATE_RECEIVING_SUBNEGOTIATION; - break; - - case STATE_RECEIVING_SUBNEGOTIATION: - if (inputByte == TELNET_IAC) { - // Handle double IAC bytes. From RFC 855: "if parameters - // in an option 'subnegotiation' include a byte with a value - // of 255, it is necessary to double this byte in accordance - // the general TELNET rules." - - if (nextSubnegotiationByteIndex > 0 - && receivedSubnegotiation[nextSubnegotiationByteIndex - 1] == TELNET_IAC) { - // The last input byte we received in this - // subnegotiation was IAC, so this is a double IAC. Leave the previous IAC - // in the receivedSubnegotiation[] array and drop the current - // one (thus translating a double IAC into a single IAC). - - Logger.log("Double IAC in subnegotiation translated into single IAC."); //$NON-NLS-1$ - break; - } - - // Append the IAC byte to receivedSubnegotiation[]. If there - // is no room for the IAC byte, it overwrites the last byte, - // because we need to know when the subnegotiation ends, and that is - // marked by an "IAC SE" command. - - if (nextSubnegotiationByteIndex < receivedSubnegotiation.length) { - receivedSubnegotiation[nextSubnegotiationByteIndex++] = inputByte; - } else { - receivedSubnegotiation[receivedSubnegotiation.length - 1] = inputByte; - } - break; - } - - // Handle an "IAC SE" command, which marks the end of the - // subnegotiation. An SE byte by itself might be a legitimate - // part of the subnegotiation data, so don't do anything unless the SE - // is immediately preceded by an IAC. - - if (inputByte == TELNET_SE && receivedSubnegotiation[nextSubnegotiationByteIndex - 1] == TELNET_IAC) { - Logger.log("Found SE code marking end of subnegotiation."); //$NON-NLS-1$ - - // We are done receiving the subnegotiation command. Now - // process it. We always use the option object stored in array - // localOptions[] to process the received subnegotiation. - // This is an arbitrary decision, but it is sufficient for handling - // options TERMINAL-TYPE and NAWS, which are the only options that - // we subnegotiate (presently). If, in the future,subnegotiations - // need to be handled by option objects stored in both - // localOptions[] and remoteOptions[], then some mechanism - // to choose the correct option object must be implemented. - // - // Also, if ignoreSubnegotiation is true, there was an error - // while receiving the subnegotiation, so we must not process the - // command, and instead just return to the initial state. - - if (!ignoreSubnegotiation) { - // Remove the trailing IAC byte from - // receivedSubnegotiation[]. - - receivedSubnegotiation[nextSubnegotiationByteIndex - 1] = 0; - - int subnegotiatedOption = receivedSubnegotiation[0] & 0xFF; - - localOptions[subnegotiatedOption].handleSubnegotiation(receivedSubnegotiation, - nextSubnegotiationByteIndex); - } else { - Logger.log("NOT CALLING handleSubnegotiation() BECAUSE OF ERRORS!"); //$NON-NLS-1$ - } - - // Return to the initial state. - - telnetState = STATE_INITIAL; - } - - // Check whether the receivedSubnegotiation[] array is full. - - if (nextSubnegotiationByteIndex >= receivedSubnegotiation.length) { - // This should not happen. Array receivedSubnegotiation can - // hold 128 bytes, and no TELNET option that we perform - // subnegotiation for requires that many bytes in a subnegotiation command. - // In the interest of robustness, we handle this case by ignoring all - // remaining subnegotiation bytes until we receive the IAC SE - // command that ends the subnegotiation. Also, we set - // ignoreSubnegotiation to true to prevent a call to - // handleSubnegotiation() when the IAC SE command arrives. - - Logger.log("SUBNEGOTIATION BUFFER FULL!"); //$NON-NLS-1$ - ignoreSubnegotiation = true; - } else { - Logger.log("Recording subnegotiation byte " + ubyte); //$NON-NLS-1$ - - receivedSubnegotiation[nextSubnegotiationByteIndex++] = inputByte; - } - break; - - default: - // This should _never_ happen! If it does, it means there is a - // bug in this FSA. For robustness, we return to the initial state. - - Logger.log("INVALID TELNET STATE: " + telnetState); //$NON-NLS-1$ - telnetState = STATE_INITIAL; - break; - } - } - - // Return the number of bytes of processed data (i.e., number of bytes - // of raw data minus TELNET control bytes). This value can be zero. - - return nextProcessedByte; - } - - /** - * This method is called whenever we receive a valid TELNET protocol command - * from the remote endpoint. When it is called for the first time for this - * connection, we negotiate all options that we desire to be enabled. - *

- * - * This method does not negotiate options that we do not desire to be - * enabled, because all options are initially disabled. - *

- */ - protected void telnetServerDetected() { - if (!remoteIsTelnetServer) { - // This block only executes once per TelnetConnection instance. - - localEcho = false; - - Logger.log("Detected TELNET server."); //$NON-NLS-1$ - - remoteIsTelnetServer = true; - - for (int i = 0; i < localOptions.length; ++i) { - if (localOptions[i].isDesired()) { - localOptions[i].negotiate(); - } - } - - for (int i = 0; i < remoteOptions.length; ++i) { - if (remoteOptions[i].isDesired()) { - remoteOptions[i].negotiate(); - } - } - } - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetConnector.java b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetConnector.java deleted file mode 100644 index 13c994db808..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetConnector.java +++ /dev/null @@ -1,222 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Initial Contributors: - * The following Wind River employees contributed to the Terminal component - * that contains this file: Chris Thew, Fran Litterio, Stephen Lamb, - * Helmut Haigermoser and Ted Williams. - * - * Contributors: - * Michael Scharf (Wind River) - extracted from TerminalControl - * Martin Oberhuber (Wind River) - fixed copyright headers and beautified - * Martin Oberhuber (Wind River) - [225853][api] Provide more default functionality in TerminalConnectorImpl - * Sean Adams (Cisco) - [231959][terminal][telnet] NPE in TelnetConnector.java - * David Sciamma (Anyware-Tech) - [288254][telnet] local echo is always disabled - * Anton Leherbauer (Wind River) - [453393] Add support for copying wrapped lines without line break - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.telnet.connector; - -import java.io.FilterOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.Socket; - -import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore; -import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl; -import org.eclipse.tm.internal.terminal.provisional.api.Logger; -import org.eclipse.tm.internal.terminal.provisional.api.NullSettingsStore; -import org.eclipse.tm.internal.terminal.provisional.api.TerminalState; -import org.eclipse.tm.internal.terminal.provisional.api.provider.TerminalConnectorImpl; - -public class TelnetConnector extends TerminalConnectorImpl { - - static final class TelnetOutputStream extends FilterOutputStream { - final static byte CR = 13; - final static byte LF = 10; - final static byte NUL = 0; - final static byte[] CRNUL = { CR, NUL }; - final static byte[] CRLF = { CR, LF }; - final byte[] EOL; - - public TelnetOutputStream(OutputStream outputStream, String endOfLine) { - super(outputStream); - if (ITelnetSettings.EOL_CRLF.equals(endOfLine)) - EOL = CRLF; - else - EOL = CRNUL; - } - - @Override - public void write(int b) throws IOException { - if (b == CR) - out.write(EOL); - else - out.write(b); - } - } - - private OutputStream fOutputStream; - private InputStream fInputStream; - private Socket fSocket; - private TelnetConnection fTelnetConnection; - private final TelnetSettings fSettings; - private int fWidth = -1; - private int fHeight = -1; - - public TelnetConnector() { - this(new TelnetSettings()); - } - - public TelnetConnector(TelnetSettings settings) { - fSettings = settings; - } - - @Override - public void connect(ITerminalControl control) { - super.connect(control); - fWidth = -1; - fHeight = -1; - // TERM=xterm implies VT100 line wrapping mode - control.setVT100LineWrapping(true); - TelnetConnectWorker worker = new TelnetConnectWorker(this, control); - worker.start(); - } - - @Override - public void doDisconnect() { - if (getSocket() != null) { - try { - getSocket().close(); - } catch (Exception exception) { - Logger.logException(exception); - } - } - - if (getInputStream() != null) { - try { - getInputStream().close(); - } catch (Exception exception) { - Logger.logException(exception); - } - } - - if (getTerminalToRemoteStream() != null) { - try { - getTerminalToRemoteStream().close(); - } catch (Exception exception) { - Logger.logException(exception); - } - } - cleanSocket(); - } - - @Override - public boolean isLocalEcho() { - if (fTelnetConnection == null) - return false; - return fTelnetConnection.localEcho(); - } - - @Override - public void setTerminalSize(int newWidth, int newHeight) { - if (fTelnetConnection != null && (newWidth != fWidth || newHeight != fHeight)) { - //avoid excessive communications due to change size requests by caching previous size - fTelnetConnection.setTerminalSize(newWidth, newHeight); - fWidth = newWidth; - fHeight = newHeight; - } - } - - public InputStream getInputStream() { - return fInputStream; - } - - @Override - public OutputStream getTerminalToRemoteStream() { - return fOutputStream; - } - - private void setInputStream(InputStream inputStream) { - fInputStream = inputStream; - } - - private void setOutputStream(OutputStream outputStream) { - if (outputStream == null) { - fOutputStream = null; - return; - } - // translate CR to telnet end-of-line sequence - RFC 854 - fOutputStream = new TelnetOutputStream(outputStream, fSettings.getEndOfLine()); - } - - Socket getSocket() { - return fSocket; - } - - /** - * sets the socket to null - */ - void cleanSocket() { - fSocket = null; - setInputStream(null); - setOutputStream(null); - } - - void setSocket(Socket socket) throws IOException { - if (socket == null) { - cleanSocket(); - } else { - fSocket = socket; - setInputStream(socket.getInputStream()); - setOutputStream(socket.getOutputStream()); - } - - } - - public void setTelnetConnection(TelnetConnection connection) { - fTelnetConnection = connection; - } - - public void displayTextInTerminal(String text) { - fControl.displayTextInTerminal(text); - } - - public OutputStream getRemoteToTerminalOutputStream() { - return fControl.getRemoteToTerminalOutputStream(); - } - - public void setState(TerminalState state) { - fControl.setState(state); - } - - public ITelnetSettings getTelnetSettings() { - return fSettings; - } - - @Override - public void setDefaultSettings() { - fSettings.load(new NullSettingsStore()); - } - - @Override - public String getSettingsSummary() { - return fSettings.getSummary(); - } - - @Override - public void load(ISettingsStore store) { - fSettings.load(store); - } - - @Override - public void save(ISettingsStore store) { - fSettings.save(store); - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetMessages.java b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetMessages.java deleted file mode 100644 index b05c6f03e4e..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetMessages.java +++ /dev/null @@ -1,31 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - * Martin Oberhuber (Wind River) - fixed copyright headers and beautified - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.telnet.connector; - -import org.eclipse.osgi.util.NLS; - -public class TelnetMessages extends NLS { - static { - NLS.initializeMessages(TelnetMessages.class.getName(), TelnetMessages.class); - } - public static String PORT; - public static String HOST; - public static String CONNECTION_CLOSED_BY_FOREIGN_HOST; - public static String TIMEOUT; - /** - * @since 4.2 - */ - public static String END_OF_LINE; - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetMessages.properties b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetMessages.properties deleted file mode 100644 index 561ee4237dc..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetMessages.properties +++ /dev/null @@ -1,23 +0,0 @@ -############################################################################### -# Copyright (c) 2005, 2018 Wind River Systems, Inc. and others. -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Eclipse Public License 2.0 -# which accompanies this distribution, and is available at -# https://www.eclipse.org/legal/epl-2.0/ -# -# SPDX-License-Identifier: EPL-2.0 -# -# Initial Contributors: -# The following Wind River employees contributed to the Terminal component -# that contains this file: Chris Thew, Fran Litterio, Stephen Lamb, -# Helmut Haigermoser and Ted Williams. -# -# Contributors: -# Michael Scharf (Wind River) - split into core, view and connector plugins -# Martin Oberhuber (Wind River) - fixed copyright headers and beautified -############################################################################### -PORT = Port -HOST = Host -CONNECTION_CLOSED_BY_FOREIGN_HOST= Connection closed by foreign host. -TIMEOUT = Timeout (sec) -END_OF_LINE = End of Line \ No newline at end of file diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetOption.java b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetOption.java deleted file mode 100644 index 3889188dc38..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetOption.java +++ /dev/null @@ -1,686 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Initial Contributors: - * The following Wind River employees contributed to the Terminal component - * that contains this file: Chris Thew, Fran Litterio, Stephen Lamb, - * Helmut Haigermoser and Ted Williams. - * - * Contributors: - * Michael Scharf (Wind River) - split into core, view and connector plugins - * Martin Oberhuber (Wind River) - fixed copyright headers and beautified - * Martin Oberhuber (Wind River) - [267181] Fix telnet option negotiation loop - * Anton Leherbauer (Wind River) - [453393] Add support for copying wrapped lines without line break - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.telnet.connector; - -import java.io.IOException; -import java.io.OutputStream; -import java.util.Date; - -import org.eclipse.tm.internal.terminal.provisional.api.Logger; - -/** - * This class represents a single TELNET protocol option at one endpoint of a TELNET - * connection. This class encapsulates the endpoint associated with the option (local - * or remote), the current state of the option (enabled or disabled), the desired state - * of the option, the current state of the negotiation, an OutputStream that allows - * communication with the remote endpoint, and the number of negotiations that have - * started within this connection.

- * - * In addition to encapsulating the above state, this class performs option negotiation - * to attempt to achieve the desired option state. For some options, this class also - * performs option sub-negotiation.

- * - * IMPORTANT: Understanding this code requires understanding the TELNET protocol and - * TELNET option processing.

- * - * @author Fran Litterio (francis.litterio@windriver.com) - */ -class TelnetOption implements TelnetCodes { - /** - * This array of Strings maps an integer TELNET option code value to the symbolic - * name of the option. Array elements of the form "?" represent unassigned option - * values. - */ - protected static final String[] optionNames = { "BINARY", // 0 //$NON-NLS-1$ - "ECHO", // 1 //$NON-NLS-1$ - "RECONNECTION", // 2 //$NON-NLS-1$ - "SUPPRESS GO AHEAD", // 3 //$NON-NLS-1$ - "MSG SIZE NEGOTIATION", // 4 //$NON-NLS-1$ - "STATUS", // 5 //$NON-NLS-1$ - "TIMING MARK", // 6 //$NON-NLS-1$ - "REMOTE CTRL TRANS+ECHO", // 7 //$NON-NLS-1$ - "OUTPUT LINE WIDTH", // 8 //$NON-NLS-1$ - "OUTPUT PAGE SIZE", // 9 //$NON-NLS-1$ - "OUTPUT CR DISPOSITION", // 10 //$NON-NLS-1$ - "OUTPUT HORIZ TABSTOPS", // 11 //$NON-NLS-1$ - "OUTPUT HORIZ TAB DISPOSITION", // 12 //$NON-NLS-1$ - "OUTPUT FORMFEED DISPOSITION", // 13 //$NON-NLS-1$ - "OUTPUT VERTICAL TABSTOPS", // 14 //$NON-NLS-1$ - "OUTPUT VT DISPOSITION", // 15 //$NON-NLS-1$ - "OUTPUT LF DISPOSITION", // 16 //$NON-NLS-1$ - "EXTENDED ASCII", // 17 //$NON-NLS-1$ - "LOGOUT", // 18 //$NON-NLS-1$ - "BYTE MACRO", // 19 //$NON-NLS-1$ - "DATA ENTRY TERMINAL", // 20 //$NON-NLS-1$ - "SUPDUP", // 21 //$NON-NLS-1$ - "SUPDUP OUTPUT", // 22 //$NON-NLS-1$ - "SEND LOCATION", // 23 //$NON-NLS-1$ - "TERMINAL TYPE", // 24 //$NON-NLS-1$ - "END OF RECORD", // 25 //$NON-NLS-1$ - "TACACS USER IDENTIFICATION", // 26 //$NON-NLS-1$ - "OUTPUT MARKING", // 27 //$NON-NLS-1$ - "TERMINAL LOCATION NUMBER", // 28 //$NON-NLS-1$ - "3270 REGIME", // 29 //$NON-NLS-1$ - "X.3 PAD", // 30 //$NON-NLS-1$ - "NEGOTIATE ABOUT WINDOW SIZE", // 31 //$NON-NLS-1$ - "TERMINAL SPEED", // 32 //$NON-NLS-1$ - "REMOTE FLOW CONTROL", // 33 //$NON-NLS-1$ - "LINEMODE", // 34 //$NON-NLS-1$ - "X DISPLAY LOCATION", // 35 //$NON-NLS-1$ - "ENVIRONMENT OPTION", // 36 //$NON-NLS-1$ - "AUTHENTICATION OPTION", // 37 //$NON-NLS-1$ - "ENCRYPTION OPTION", // 38 //$NON-NLS-1$ - "NEW ENVIRONMENT OPTION", // 39 //$NON-NLS-1$ - "TN3270E", // 40 //$NON-NLS-1$ - "XAUTH", // 41 //$NON-NLS-1$ - "CHARSET", // 42 //$NON-NLS-1$ - "REMOTE SERIAL PORT", // 43 //$NON-NLS-1$ - "COM PORT CONTROL OPTION", // 44 //$NON-NLS-1$ - "SUPPRESS LOCAL ECHO", // 45 //$NON-NLS-1$ - "START TLS", // 46 //$NON-NLS-1$ - "KERMIT", // 47 //$NON-NLS-1$ - "SEND URL", // 48 //$NON-NLS-1$ - "FORWARD X", // 49 //$NON-NLS-1$ - "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", // 50 ... //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$ - "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$ - "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$ - "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$ - "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$ - "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$ - "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$ - "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$ - "?", "?", "?", "?", "?", "?", "?", // ... 137 //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ - "TELOPT PRAGMA LOGON", // 138 //$NON-NLS-1$ - "TELOPT SSPI LOGON", // 139 //$NON-NLS-1$ - "TELOPT PRAGMA HEARTBEAT", // 140 //$NON-NLS-1$ - "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", // 141 ... //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$ - "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$ - "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$ - "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$ - "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$ - "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$ - "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$ - "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$ - "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$ - "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$ - "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$ - "?", "?", "?", "?", // ... 254 //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ - "EXTENDED OPTIONS LIST" // 255 //$NON-NLS-1$ - }; - - /** - * Negotiation state: Negotiation not yet started for this option.

- * - * This constant and the others having similar names represent the states of a - * finite state automaton (FSA) that tracks the negotiation state of this option. - * The initial state is NEGOTIATION_NOT_STARTED. The state machine is as follows - * (with transitions labeled with letters in parentheses):

- * - *

-	 *     NEGOTIATION_NOT_STARTED -----> {@link #NEGOTIATION_IN_PROGRESS}
-	 *                         |    (A)      |        ^
-	 *                      (C)|          (B)|        |(D)
-	 *                         |             V        |
-	 *                         +--------> {@link #NEGOTIATION_DONE}
-	 * 

- * - * Once the FSA leaves state NEGOTIATION_NOT_STARTED, it never returns to that - * state. Transition A happens when the local endpoint sends an option command - * before receiving a command for the same option from the remote endpoint.

- * - * Transition B happens when the local endpoint receives a reply to an option - * command sent earlier by the local endpoint. Receipt of that reply terminates - * the negotiation.

- * - * Transition D happens after negotiation is done and "something changes" (see the - * RFCs for the definition of "something changes"). Either endpoint can - * re-negotiate an option after a previous negotiation, but only if some external - * influence (such as the user or the OS) causes it to do so. Re-negotiation must - * start more than {@link #NEGOTIATION_IGNORE_DURATION} milliseconds after the FSA - * enters state NEGOTIATION_DONE or it will be ignored. This is how this client - * prevents negotiation loops.

- * - * Transition C happens when the local endpoint receives an option command from the - * remote endpoint before sending a command for the same option. In that case, the - * local endpoint replies immediately with an option command and the negotiation - * terminates.

- * - * Some TELNET servers (e.g., the Solaris server), after sending WILL and receiving - * DONT, will reply with a superfluous WONT. Any such superfluous option command - * received from the remote endpoint while the option's FSA is in state - * {@link #NEGOTIATION_DONE} will be ignored by the local endpoint. - */ - protected static final int NEGOTIATION_NOT_STARTED = 0; - - /** Negotiation state: Negotiation is in progress for this option. */ - protected static final int NEGOTIATION_IN_PROGRESS = 1; - - /** Negotiation state: Negotiation has terminated for this option. */ - protected static final int NEGOTIATION_DONE = 2; - - /** - * The number of milliseconds following the end of negotiation of this option - * before which the remote endpoint can re-negotiate the option. Any option - * command received from the remote endpoint before this time passes is ignored. - * This is used to prevent option negotiation loops. - * - * @see #ignoreNegotiation() - * @see #negotiationCompletionTime - */ - protected static final int NEGOTIATION_IGNORE_DURATION = 30000; - - /** - * This field holds the current negotiation state for this option. - */ - protected int negotiationState = NEGOTIATION_NOT_STARTED; - - /** - * This field holds the time when negotiation of this option most recently - * terminated (i.e., entered state {@link #NEGOTIATION_DONE}). This is used to - * determine whether an option command received from the remote endpoint after - * negotiation has terminated for this option is to be ignored or interpreted as - * the start of a new negotiation. - * - * @see #NEGOTIATION_IGNORE_DURATION - */ - protected Date negotiationCompletionTime = new Date(0); - - /** - * Holds the total number of negotiations that have completed for this option. - */ - protected int negotiationCount = 0; - - /** - * Holds the integer code representing the option. - */ - protected byte option = 0; - - /** - * Holds the OutputStream object that allows data to be sent to the remote endpoint - * of the TELNET connection. - */ - protected OutputStream outputStream; - - /** - * True if this option is for the local endpoint, false for the remote endpoint. - */ - protected boolean local = true; - - /** - * This field is true if the option is enabled, false if it is disabled. All - * options are initially disabled until they are negotiated to be enabled.

- */ - protected boolean enabled = false; - - /** - * This field is true if the client desires the option to be enabled, false if the - * client desires the option to be disabled. This field does not represent the - * remote's endpoints desire (as expressed via WILL and WONT commands) -- it - * represnet the local endpoint's desire.

- * - * @see #setDesired(boolean) - */ - protected boolean desired = false; - - /** - * Constructor.

- * - * @param option The integer code of this option. - * @param desired Whether we desire this option to be enabled. - * @param local Whether this option is for the local or remote endpoint. - * @param outputStream A stream used to negotiate with the remote endpoint. - */ - TelnetOption(byte option, boolean desired, boolean local, OutputStream outputStream) { - this.option = option; - this.desired = desired; - this.local = local; - this.outputStream = outputStream; - } - - /** - * @return Returns a String containing the name of the TELNET option specified in - * parameter option. - */ - public String optionName() { - return optionNames[option & 0xFF]; - } - - /** - * Returns true if this option is enabled, false if it is disabled.

- * - * @return Returns true if this option is enabled, false if it is disabled. - */ - public boolean isEnabled() { - return enabled; - } - - /** - * Enables this option if newValue is true, otherwise disables this - * option.

- * - * @param newValue True if this option is to be enabled, false otherwise. - */ - public void setEnabled(boolean newValue) { - Logger.log("Enabling " + (local ? "local" : "remote") + " option " + //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ - optionName()); - enabled = newValue; - } - - /** - * Returns true if the local endpoint desires this option to be enabled, false if - * not. It is not an error for the value returned by this method to differ from - * the value returned by isEnabled(). The value returned by this method can change - * over time, reflecting the local endpoint's changing desire regarding the - * option.

- * - * NOTE: Even if this option represents a remote endpoint option, the return value - * of this method represents the local endpint's desire regarding the remote - * option.

- * - * @return Returns true if the local endpoint desires this option to be enabled, - * false if not. - */ - public boolean isDesired() { - return desired; - } - - /** - * Sets our desired value for this option. Note that the option can be desired - * when enabled is false, and the option can be undesired when - * enabled is true, though the latter state should not persist, since either - * endpoint can disable any option at any time.

- * - * @param newValue True if we desire this option to be enabled, false if - * we desire this option to be disabled. - */ - public void setDesired(boolean newValue) { - if (newValue) - Logger.log("Setting " + (local ? "local" : "remote") + " option " + //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ - optionName() + " as desired."); //$NON-NLS-1$ - - desired = newValue; - } - - /** - * Call this method to request that negotiation begin for this option. This method - * does nothing if negotiation for this option has already started or is already - * complete. If negotiation has not yet started for this option and the local - * endpoint desires this option to be enabled, then we send a WILL or DO command to - * the remote endpoint. - */ - public void negotiate() { - if (negotiationState == NEGOTIATION_NOT_STARTED && desired) { - if (local) { - Logger.log("Starting negotiation for local option " + optionName()); //$NON-NLS-1$ - sendWill(); - } else { - Logger.log("Starting negotiation for remote option " + optionName()); //$NON-NLS-1$ - sendDo(); - } - - negotiationState = NEGOTIATION_IN_PROGRESS; - } - } - - /** - * This method is called whenever we receive a WILL command from the remote - * endpoint. - */ - public void handleWill() { - if (negotiationState == NEGOTIATION_DONE && ignoreNegotiation()) { - Logger.log("Ignoring superfluous WILL command from remote endpoint."); //$NON-NLS-1$ - return; - } - - if (negotiationState == NEGOTIATION_IN_PROGRESS) { - if (desired) { - // We sent DO and server replied with WILL. Enable the option, and end - // this negotiation. - - enabled = true; - Logger.log("Enabling remote option " + optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$ - endNegotiation(); - } else { - // This should never happen! We sent DONT and the server replied with - // WILL. Bad server. No soup for you. Disable the option, and end - // this negotiation. - - Logger.log("Server answered DONT with WILL!"); //$NON-NLS-1$ - enabled = false; - Logger.log("Disabling remote option " + optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$ - endNegotiation(); - } - } else { - if (desired) { - // Server sent WILL, so we reply with DO. Enable the option, and end - // this negotiation. - - sendDo(); - enabled = true; - Logger.log("Enabling remote option " + optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$ - endNegotiation(); - } else { - // Server sent WILL, so we reply with DONT. Disable the option, and - // end this negotiation. - - sendDont(); - enabled = false; - Logger.log("Disabling remote option " + optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$ - endNegotiation(); - } - } - } - - /** - * Handles a WONT command sent by the remote endpoint for this option. The value - * of desired doesn't matter in this method, because the remote endpoint is - * forcing the option to be disabled. - */ - public void handleWont() { - if (negotiationState == NEGOTIATION_DONE && ignoreNegotiation()) { - Logger.log("Ignoring superfluous WONT command from remote endpoint."); //$NON-NLS-1$ - return; - } - - if (negotiationState == NEGOTIATION_IN_PROGRESS) { - // We sent DO or DONT and server replied with WONT. Disable the - // option, and end this negotiation. - - enabled = false; - Logger.log("Disabling remote option " + optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$ - endNegotiation(); - } else { - // Server sent WONT, so we reply with DONT. Disable the option, and - // end this negotiation. - - sendDont(); - enabled = false; - Logger.log("Disabling remote option " + optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$ - endNegotiation(); - } - } - - /** - * Handles a DO command sent by the remote endpoint for this option. - */ - public void handleDo() { - if (negotiationState == NEGOTIATION_DONE && ignoreNegotiation()) { - Logger.log("Ignoring superfluous DO command from remote endpoint."); //$NON-NLS-1$ - return; - } - - if (negotiationState == NEGOTIATION_IN_PROGRESS) { - if (desired) { - // We sent WILL and server replied with DO. Enable the option, and end - // this negotiation. - - enabled = true; - Logger.log("Enabling local option " + optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$ - endNegotiation(); - } else { - // We sent WONT and server replied with DO. This should never happen! - // Bad server. No soup for you. Disable the option, and end this - // negotiation. - - Logger.log("Server answered WONT with DO!"); //$NON-NLS-1$ - enabled = false; - Logger.log("Disabling local option " + optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$ - endNegotiation(); - } - } else { - if (desired) { - // Server sent DO, so we reply with WILL. Enable the option, and end - // this negotiation. - - sendWill(); - enabled = true; - Logger.log("Enabling local option " + optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$ - endNegotiation(); - } else { - // Server sent DO, so we reply with WONT. Disable the option, and end - // this negotiation. - - sendWont(); - enabled = false; - Logger.log("Disabling local option " + optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$ - endNegotiation(); - } - } - } - - /** - * Handles a DONT command sent by the remote endpoint for this option. The value - * of desired doesn't matter in this method, because the remote endpoint is - * forcing the option to be disabled. - */ - public void handleDont() { - if (negotiationState == NEGOTIATION_DONE && ignoreNegotiation()) { - Logger.log("Ignoring superfluous DONT command from remote endpoint."); //$NON-NLS-1$ - return; - } - - if (negotiationState == NEGOTIATION_IN_PROGRESS) { - // We sent WILL or WONT and server replied with DONT. Disable the - // option, and end this negotiation. - - enabled = false; - Logger.log("Disabling local option " + optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$ - endNegotiation(); - } else { - // Server sent DONT, so we reply with WONT. Disable the option, and end - // this negotiation. - - sendWont(); - enabled = false; - Logger.log("Disabling local option " + optionName() + "."); //$NON-NLS-1$ //$NON-NLS-2$ - endNegotiation(); - } - } - - /** - * This method handles a subnegotiation command received from the remote endpoint. - * Currently, the only subnegotiation we handle is when the remote endpoint - * commands us to send our terminal type (which is "xterm"). - * - * @param subnegotiationData An array of bytes containing a TELNET - * subnegotiation command received from the - * remote endpoint. - * @param count The number of bytes in array - * subnegotiationData to examine. - */ - public void handleSubnegotiation(byte[] subnegotiationData, int count) { - switch (option) { - case TELNET_OPTION_TERMINAL_TYPE: - if (subnegotiationData[1] != TELNET_SEND) { - // This should never happen! - Logger.log("Invalid TERMINAL-TYPE subnegotiation command from remote endpoint: " + //$NON-NLS-1$ - (subnegotiationData[1] & 0xff)); - break; - } - - // Tell the remote endpoint our terminal type is "xterm" using this sequence - // of TELNET protocol bytes: - // - // IAC SB TERMINAL-TYPE IS x t e r m IAC SE - - byte[] terminalTypeData = { TELNET_IAC, TELNET_SB, TELNET_OPTION_TERMINAL_TYPE, TELNET_IS, (byte) 'x', - (byte) 't', (byte) 'e', (byte) 'r', (byte) 'm', TELNET_IAC, TELNET_SE }; - - try { - outputStream.write(terminalTypeData); - } catch (IOException ex) { - Logger.log("IOException sending TERMINAL-TYPE subnegotiation!"); //$NON-NLS-1$ - Logger.logException(ex); - } - break; - - default: - // This should never happen! - Logger.log("SHOULD NOT BE REACHED: Called for option " + optionName()); //$NON-NLS-1$ - break; - } - } - - /** - * This method sends a subnegotiation command to the remote endpoint. - * - * @param subnegotiationData An array of Objects holding data to be used - * when generating the outbound subnegotiation - * command. - */ - public void sendSubnegotiation(Object[] subnegotiationData) { - switch (option) { - case TELNET_OPTION_NAWS: - // Get the width and height of the view and send it to the remote - // endpoint using this sequence of TELNET protocol bytes: - // - // IAC SB NAWS - // IAC SE - - final byte[] NAWSData = { TELNET_IAC, TELNET_SB, TELNET_OPTION_NAWS, 0, 0, 0, 0, TELNET_IAC, TELNET_SE }; - int width = ((Integer) subnegotiationData[0]).intValue(); - int height = ((Integer) subnegotiationData[1]).intValue(); - - NAWSData[3] = (byte) ((width >>> 8) & 0xff); // High order byte of width. - NAWSData[4] = (byte) (width & 0xff); // Low order byte of width. - NAWSData[5] = (byte) ((height >>> 8) & 0xff); // High order byte of height. - NAWSData[6] = (byte) (height & 0xff); // Low order byte of height. - - Logger.log("sending terminal size to remote endpoint: width = " + width + //$NON-NLS-1$ - ", height = " + height + "."); //$NON-NLS-1$ //$NON-NLS-2$ - - // Send the NAWS data in a new thread. The current thread is the display - // thread, and calls to write() can block, but blocking the display thread - // is _bad_ (it hangs the GUI). - - Thread t = new Thread() { - @Override - public void run() { - try { - outputStream.write(NAWSData); - } catch (IOException ex) { - Logger.log("IOException sending NAWS subnegotiation!"); //$NON-NLS-1$ - Logger.logException(ex); - } - } - }; - t.setDaemon(true); - t.start(); - break; - - default: - // This should never happen! - Logger.log("SHOULD NOT BE REACHED: Called for option " + optionName()); //$NON-NLS-1$ - break; - } - } - - /** - * This method returns true if there has not yet been any negotiation of this - * option. - * - * @return Returns true if there has not yet been any negotiation of this option. - */ - protected boolean notYetNegotiated() { - return negotiationState == NEGOTIATION_NOT_STARTED; - } - - /** - * This method terminates the current negotiation and records the time at which the - * negotiation terminated. - */ - protected void endNegotiation() { - Logger.log("Ending negotiation #" + negotiationCount + " for " + //$NON-NLS-1$ //$NON-NLS-2$ - (local ? "local" : "remote") + " option " + optionName()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - negotiationState = NEGOTIATION_DONE; - negotiationCompletionTime.setTime(System.currentTimeMillis()); - ++negotiationCount; - } - - /** - * This method determines whether or not to ignore what appears to be a new - * negotiation initiated by the remote endpoint. This is needed because some - * TELNET servers send superfluous option commands that a naive client might - * interpret as the start of a new negotiation. If the superfluous command is not - * ignored, an option negotiation loop can result (which is bad). For details - * about the superfluous commands sent by some servers, see the documentation for - * {@link #NEGOTIATION_NOT_STARTED}.

- * - * The current implementation of this method returns true if the new negotiation - * starts within NEGOTIATION_IGNORE_DURATION seconds of the end of the previous - * negotiation of this option.

- * - * @return Returns true if the new negotiation should be ignored, false if not. - */ - protected boolean ignoreNegotiation() { - return (System.currentTimeMillis() - negotiationCompletionTime.getTime()) < NEGOTIATION_IGNORE_DURATION; - } - - /** - * Sends a DO command to the remote endpoint for this option. - */ - protected void sendDo() { - Logger.log("Sending DO " + optionName()); //$NON-NLS-1$ - sendCommand(TELNET_DO); - } - - /** - * Sends a DONT command to the remote endpoint for this option. - */ - protected void sendDont() { - Logger.log("Sending DONT " + optionName()); //$NON-NLS-1$ - sendCommand(TELNET_DONT); - } - - /** - * Sends a WILL command to the remote endpoint for this option. - */ - protected void sendWill() { - Logger.log("Sending WILL " + optionName()); //$NON-NLS-1$ - sendCommand(TELNET_WILL); - } - - /** - * Sends a WONT command to the remote endpoint for this option. - */ - protected void sendWont() { - Logger.log("Sending WONT " + optionName()); //$NON-NLS-1$ - sendCommand(TELNET_WONT); - } - - /** - * This method sends a WILL/WONT/DO/DONT command to the remote endpoint for this - * option. - */ - protected void sendCommand(byte command) { - byte[] data = { TELNET_IAC, 0, 0 }; - - data[1] = command; - data[2] = option; - - try { - outputStream.write(data); - } catch (IOException ex) { - Logger.log("IOException sending command " + command); //$NON-NLS-1$ - Logger.logException(ex); - } - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetProperties.java b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetProperties.java deleted file mode 100644 index c96d7455845..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetProperties.java +++ /dev/null @@ -1,44 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Initial Contributors: - * The following Wind River employees contributed to the Terminal component - * that contains this file: Chris Thew, Fran Litterio, Stephen Lamb, - * Helmut Haigermoser and Ted Williams. - * - * Contributors: - * Michael Scharf (Wind River) - extracted from TerminalProperties - * Martin Oberhuber (Wind River) - fixed copyright headers and beautified - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.telnet.connector; - -public class TelnetProperties { - private final NetworkPortMap fNetworkPortMap; - private final String fDefaultHost; - private final String fDefaultNetworkPort; - - public TelnetProperties() { - fNetworkPortMap = new NetworkPortMap(); - fDefaultNetworkPort = fNetworkPortMap.getDefaultNetworkPort(); - fDefaultHost = ""; //$NON-NLS-1$ - } - - public String getDefaultHost() { - return fDefaultHost; - } - - public String getDefaultNetworkPort() { - return fDefaultNetworkPort; - } - - public NetworkPortMap getNetworkPortMap() { - // TODO Auto-generated method stub - return fNetworkPortMap; - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetSettings.java b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetSettings.java deleted file mode 100644 index 4ecf960ea5c..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetSettings.java +++ /dev/null @@ -1,109 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Initial Contributors: - * The following Wind River employees contributed to the Terminal component - * that contains this file: Chris Thew, Fran Litterio, Stephen Lamb, - * Helmut Haigermoser and Ted Williams. - * - * Contributors: - * Michael Scharf (Wind River) - extracted from TerminalSettings - * Martin Oberhuber (Wind River) - fixed copyright headers and beautified - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.telnet.connector; - -import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore; - -/** - * @noreference This class is not intended to be referenced by clients. - */ -public class TelnetSettings implements ITelnetSettings { - protected String fHost; - protected String fNetworkPort; - protected String fTimeout; - protected String fEndOfLine = EOL_CRNUL; - private final TelnetProperties fProperties = new TelnetProperties(); - - @Override - public String getHost() { - return fHost; - } - - public void setHost(String strHost) { - fHost = strHost; - } - - public String getNetworkPortString() { - return fNetworkPort; - } - - @Override - public int getNetworkPort() { - try { - return Integer.parseInt(fNetworkPort); - } catch (NumberFormatException numberFormatException) { - return 1313; - } - } - - public void setNetworkPort(String strNetworkPort) { - fNetworkPort = strNetworkPort; - } - - @Override - public String getSummary() { - return getHost() + ":" + getNetworkPortString(); //$NON-NLS-1$ - } - - @Override - public void load(ISettingsStore store) { - fHost = store.get("Host", fProperties.getDefaultHost());//$NON-NLS-1$ - fNetworkPort = store.get("NetworkPort", fProperties.getDefaultNetworkPort());//$NON-NLS-1$ - fTimeout = store.get("Timeout", "10");//$NON-NLS-1$ //$NON-NLS-2$ - fEndOfLine = store.get("EndOfLine", EOL_CRNUL);//$NON-NLS-1$ - } - - @Override - public void save(ISettingsStore store) { - store.put("Host", fHost);//$NON-NLS-1$ - store.put("NetworkPort", fNetworkPort);//$NON-NLS-1$ - store.put("Timeout", fTimeout);//$NON-NLS-1$ - store.put("EndOfLine", fEndOfLine);//$NON-NLS-1$ - } - - public TelnetProperties getProperties() { - return fProperties; - } - - @Override - public int getTimeout() { - try { - return Integer.parseInt(fTimeout); - } catch (NumberFormatException numberFormatException) { - return 10; - } - } - - public String getTimeoutString() { - return fTimeout; - } - - public void setTimeout(String timeout) { - fTimeout = timeout; - } - - public void setEndOfLine(String eol) { - fEndOfLine = EOL_CRLF.equals(eol) ? EOL_CRLF : EOL_CRNUL; - } - - @Override - public String getEndOfLine() { - return fEndOfLine; - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetSettingsPage.java b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetSettingsPage.java deleted file mode 100644 index 435a4f1296c..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/connector/TelnetSettingsPage.java +++ /dev/null @@ -1,248 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Initial Contributors: - * The following Wind River employees contributed to the Terminal component - * that contains this file: Chris Thew, Fran Litterio, Stephen Lamb, - * Helmut Haigermoser and Ted Williams. - * - * Contributors: - * Michael Scharf (Wind River) - extracted from TerminalSettingsDlg - * Martin Oberhuber (Wind River) - fixed copyright headers and beautified - * Martin Oberhuber (Wind River) - [206917] Add validation for Terminal Settings - * Martin Oberhuber (Wind River) - [401476] Strip whitespace around Telnet Port - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.telnet.connector; - -import java.util.Arrays; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; - -import org.eclipse.jface.dialogs.IMessageProvider; -import org.eclipse.jface.fieldassist.FieldDecorationRegistry; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Combo; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Text; -import org.eclipse.tm.internal.terminal.provisional.api.AbstractSettingsPage; - -public class TelnetSettingsPage extends AbstractSettingsPage { - /* default */ Text fHostText; - /* default */ Combo fNetworkPortCombo; - /* default */ Text fTimeout; - /* default */ Combo fEndOfLineCombo; - private final TelnetSettings fTerminalSettings; - - public TelnetSettingsPage(TelnetSettings settings) { - fTerminalSettings = settings; - } - - @Override - public void saveSettings() { - fTerminalSettings.setHost(fHostText.getText()); - fTerminalSettings.setTimeout(fTimeout.getText()); - fTerminalSettings.setNetworkPort(getNetworkPort()); - fTerminalSettings.setEndOfLine(getEndOfLine()); - } - - @Override - public void loadSettings() { - if (fTerminalSettings != null) { - setHost(fTerminalSettings.getHost()); - setTimeout(fTerminalSettings.getTimeoutString()); - setNetworkPort(fTerminalSettings.getNetworkPortString()); - setEndOfLine(fTerminalSettings.getEndOfLine()); - } - } - - private void setHost(String strHost) { - if (strHost == null) - strHost = ""; //$NON-NLS-1$ - fHostText.setText(strHost); - - } - - private void setTimeout(String timeout) { - if (timeout == null || timeout.length() == 0) - timeout = "5"; //$NON-NLS-1$ - fTimeout.setText(timeout); - - } - - private void setNetworkPort(String strNetworkPort) { - if (strNetworkPort != null) { - String strPortName = getNetworkPortMap().findPortName(strNetworkPort); - if (strPortName == null) { - strPortName = strNetworkPort; //fallback to verbatim port if not found - } - int nIndex = fNetworkPortCombo.indexOf(strPortName); - - if (nIndex == -1) { - fNetworkPortCombo.setText(strNetworkPort); - } else { - fNetworkPortCombo.select(nIndex); - } - } - } - - private String getNetworkPort() { - String portText = fNetworkPortCombo.getText().trim(); - String mappedPort = getNetworkPortMap().findPort(portText); - return mappedPort != null ? mappedPort : portText; - } - - private NetworkPortMap getNetworkPortMap() { - return fTerminalSettings.getProperties().getNetworkPortMap(); - } - - private void setEndOfLine(String eol) { - int idx = fEndOfLineCombo.indexOf(eol); - fEndOfLineCombo.select(idx >= 0 ? idx : 0); - } - - private String getEndOfLine() { - return fEndOfLineCombo.getText(); - } - - @Override - public boolean validateSettings() { - String message = null; - int messageType = IMessageProvider.NONE; - boolean valid = true; - - if (fHostText.getText().trim().length() == 0) { - String m = "Please enter a host IP or name."; //$NON-NLS-1$ - int mt = IMessageProvider.INFORMATION; - updateControlDecoration(fHostText, m, mt); - if (mt > messageType) { - message = m; - messageType = mt; - } - - valid = false; - } else { - updateControlDecoration(fHostText, null, IMessageProvider.NONE); - } - - try { - int p = Integer.parseInt(getNetworkPort()); - if (p <= 0 || p > 65535) { - String m = "Invalid network port. Must be between 0 and 65535."; //$NON-NLS-1$ - int mt = IMessageProvider.ERROR; - updateControlDecoration(fNetworkPortCombo, m, mt); - if (mt > messageType) { - message = m; - messageType = mt; - } - - valid = false; - } else { - updateControlDecoration(fNetworkPortCombo, null, IMessageProvider.NONE); - } - - p = Integer.parseInt(fTimeout.getText().trim()); - if (p < 0) { - String m = "Invalid timeout. Must be greater than 0."; //$NON-NLS-1$ - int mt = IMessageProvider.ERROR; - updateControlDecoration(fTimeout, m, mt); - if (mt > messageType) { - message = m; - messageType = mt; - } - - valid = false; - } else { - updateControlDecoration(fTimeout, null, IMessageProvider.NONE); - } - - } catch (Exception e) { - valid = false; - } - - setMessage(message, messageType); - return valid; - } - - @Override - public void createControl(Composite parent) { - Composite composite = new Composite(parent, SWT.NONE); - GridLayout gridLayout = new GridLayout(2, false); - GridData gridData = new GridData(GridData.FILL_HORIZONTAL); - gridData.horizontalIndent = FieldDecorationRegistry.getDefault().getMaximumDecorationWidth(); - - composite.setLayout(gridLayout); - composite.setLayoutData(gridData); - - // Add label - Label ctlLabel = new Label(composite, SWT.RIGHT); - ctlLabel.setText(TelnetMessages.HOST + ":"); //$NON-NLS-1$ - - // Add control - gridData = new GridData(GridData.FILL_HORIZONTAL); - fHostText = new Text(composite, SWT.BORDER); - fHostText.setLayoutData(gridData); - fHostText.addModifyListener(e -> fireListeners(fHostText)); - createControlDecoration(fHostText); - - // Add label - ctlLabel = new Label(composite, SWT.RIGHT); - ctlLabel.setText(TelnetMessages.PORT + ":"); //$NON-NLS-1$ - - // Add control - gridData = new GridData(GridData.FILL_HORIZONTAL); - fNetworkPortCombo = new Combo(composite, SWT.DROP_DOWN); - fNetworkPortCombo.setLayoutData(gridData); - fNetworkPortCombo.addModifyListener(e -> fireListeners(fNetworkPortCombo)); - fNetworkPortCombo.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - fireListeners(fNetworkPortCombo); - } - }); - createControlDecoration(fNetworkPortCombo); - - List table = getNetworkPortMap().getNameTable(); - Collections.sort(table); - loadCombo(fNetworkPortCombo, table); - - new Label(composite, SWT.RIGHT).setText(TelnetMessages.TIMEOUT + ":"); //$NON-NLS-1$ - fTimeout = new Text(composite, SWT.BORDER); - fTimeout.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - fTimeout.addModifyListener(e -> fireListeners(fTimeout)); - createControlDecoration(fTimeout); - - new Label(composite, SWT.RIGHT).setText(TelnetMessages.END_OF_LINE + ":"); //$NON-NLS-1$ - gridData = new GridData(GridData.FILL_HORIZONTAL); - fEndOfLineCombo = new Combo(composite, SWT.DROP_DOWN | SWT.READ_ONLY); - fEndOfLineCombo.setLayoutData(gridData); - fEndOfLineCombo.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - fireListeners(fEndOfLineCombo); - } - }); - loadCombo(fEndOfLineCombo, Arrays.asList(ITelnetSettings.EOL_CRNUL, ITelnetSettings.EOL_CRLF)); - - loadSettings(); - } - - private void loadCombo(Combo ctlCombo, List table) { - for (Iterator iter = table.iterator(); iter.hasNext();) { - String label = iter.next(); - ctlCombo.add(label); - } - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/controls/TelnetWizardConfigurationPanel.java b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/controls/TelnetWizardConfigurationPanel.java deleted file mode 100644 index 9a968fd1a4d..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/controls/TelnetWizardConfigurationPanel.java +++ /dev/null @@ -1,202 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - * Max Weninger (Wind River) - [366374] [TERMINALS][TELNET] Add Telnet terminal support - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.telnet.controls; - -import java.util.HashMap; -import java.util.Map; - -import org.eclipse.jface.dialogs.IDialogSettings; -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.tm.internal.terminal.provisional.api.AbstractSettingsPage; -import org.eclipse.tm.internal.terminal.provisional.api.ISettingsPage; -import org.eclipse.tm.terminal.connector.telnet.connector.NetworkPortMap; -import org.eclipse.tm.terminal.connector.telnet.connector.TelnetConnector; -import org.eclipse.tm.terminal.connector.telnet.connector.TelnetSettings; -import org.eclipse.tm.terminal.connector.telnet.connector.TelnetSettingsPage; -import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants; -import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer; -import org.eclipse.tm.terminal.view.ui.panels.AbstractExtendedConfigurationPanel; - -/** - * telnet wizard configuration panel implementation. - */ -public class TelnetWizardConfigurationPanel extends AbstractExtendedConfigurationPanel { - - public TelnetSettings telnetSettings; - private ISettingsPage telnetSettingsPage; - - /** - * Constructor. - * - * @param container The configuration panel container or null. - */ - public TelnetWizardConfigurationPanel(IConfigurationPanelContainer container) { - super(container); - } - - @Override - public void setupPanel(Composite parent) { - Composite panel = new Composite(parent, SWT.NONE); - panel.setLayout(new GridLayout()); - GridData data = new GridData(SWT.FILL, SWT.FILL, true, true); - panel.setLayoutData(data); - - // Create the host selection combo - if (isWithoutSelection()) - createHostsUI(panel, true); - - TelnetConnector conn = new TelnetConnector(); - telnetSettings = (TelnetSettings) conn.getTelnetSettings(); - telnetSettings.setHost(getSelectionHost()); - // MWE otherwise we don't get a valid default selection of the combo - telnetSettings.setNetworkPort(NetworkPortMap.PROP_VALUETELNET); - - telnetSettingsPage = new TelnetSettingsPage(telnetSettings); - if (telnetSettingsPage instanceof AbstractSettingsPage) { - ((AbstractSettingsPage) telnetSettingsPage).setHasControlDecoration(true); - } - telnetSettingsPage.createControl(panel); - - // Add the listener to the settings page - telnetSettingsPage.addListener(control -> { - if (getContainer() != null) - getContainer().validate(); - }); - - // Create the encoding selection combo - createEncodingUI(panel, true); - - setControl(panel); - } - - @Override - public void setupData(Map data) { - if (data == null || telnetSettings == null || telnetSettingsPage == null) - return; - - String value = (String) data.get(ITerminalsConnectorConstants.PROP_IP_HOST); - if (value != null) - telnetSettings.setHost(value); - - Object v = data.get(ITerminalsConnectorConstants.PROP_IP_PORT); - value = v != null ? v.toString() : null; - if (value != null) - telnetSettings.setNetworkPort(value); - - v = data.get(ITerminalsConnectorConstants.PROP_TIMEOUT); - value = v != null ? v.toString() : null; - if (value != null) - telnetSettings.setTimeout(value); - - v = data.get(ITerminalsConnectorConstants.PROP_TELNET_EOL); - value = v != null ? v.toString() : null; - if (value != null) - telnetSettings.setEndOfLine(value); - - value = (String) data.get(ITerminalsConnectorConstants.PROP_ENCODING); - if (value != null) - setEncoding(value); - - telnetSettingsPage.loadSettings(); - } - - @Override - public void extractData(Map data) { - if (data == null) - return; - - // set the terminal connector id for ssh - data.put(ITerminalsConnectorConstants.PROP_TERMINAL_CONNECTOR_ID, - "org.eclipse.tm.terminal.connector.telnet.TelnetConnector"); //$NON-NLS-1$ - - telnetSettingsPage.saveSettings(); - data.put(ITerminalsConnectorConstants.PROP_IP_HOST, telnetSettings.getHost()); - data.put(ITerminalsConnectorConstants.PROP_IP_PORT, Integer.valueOf(telnetSettings.getNetworkPort())); - data.put(ITerminalsConnectorConstants.PROP_TIMEOUT, Integer.valueOf(telnetSettings.getTimeout())); - data.put(ITerminalsConnectorConstants.PROP_TELNET_EOL, telnetSettings.getEndOfLine()); - data.put(ITerminalsConnectorConstants.PROP_ENCODING, getEncoding()); - } - - @Override - protected void fillSettingsForHost(String host) { - if (host != null && host.length() != 0) { - if (hostSettingsMap.containsKey(host)) { - Map hostSettings = hostSettingsMap.get(host); - if (hostSettings.get(ITerminalsConnectorConstants.PROP_IP_HOST) != null) { - telnetSettings.setHost(hostSettings.get(ITerminalsConnectorConstants.PROP_IP_HOST)); - } - if (hostSettings.get(ITerminalsConnectorConstants.PROP_IP_PORT) != null) { - telnetSettings.setNetworkPort(hostSettings.get(ITerminalsConnectorConstants.PROP_IP_PORT)); - } - if (hostSettings.get(ITerminalsConnectorConstants.PROP_TIMEOUT) != null) { - telnetSettings.setTimeout(hostSettings.get(ITerminalsConnectorConstants.PROP_TIMEOUT)); - } - if (hostSettings.get(ITerminalsConnectorConstants.PROP_TELNET_EOL) != null) { - telnetSettings.setEndOfLine(hostSettings.get(ITerminalsConnectorConstants.PROP_TELNET_EOL)); - } - if (hostSettings.get(ITerminalsConnectorConstants.PROP_ENCODING) != null) { - setEncoding(hostSettings.get(ITerminalsConnectorConstants.PROP_ENCODING)); - } - } else { - telnetSettings.setHost(getSelectionHost()); - // MWE otherwise we don't get a valid default selection of the combo - telnetSettings.setNetworkPort(NetworkPortMap.PROP_VALUETELNET); - } - // set settings in page - telnetSettingsPage.loadSettings(); - } - } - - @Override - protected void saveSettingsForHost(boolean add) { - String host = getHostFromSettings(); - if (host != null && host.length() != 0) { - Map hostSettings = hostSettingsMap.get(host); - if (hostSettings == null && add) { - hostSettings = new HashMap<>(); - hostSettingsMap.put(host, hostSettings); - } - if (hostSettings != null) { - hostSettings.put(ITerminalsConnectorConstants.PROP_IP_HOST, telnetSettings.getHost()); - hostSettings.put(ITerminalsConnectorConstants.PROP_IP_PORT, - Integer.toString(telnetSettings.getNetworkPort())); - hostSettings.put(ITerminalsConnectorConstants.PROP_TIMEOUT, - Integer.toString(telnetSettings.getTimeout())); - hostSettings.put(ITerminalsConnectorConstants.PROP_TELNET_EOL, telnetSettings.getEndOfLine()); - if (getEncoding() != null) { - hostSettings.put(ITerminalsConnectorConstants.PROP_ENCODING, getEncoding()); - } - } - } - } - - @Override - public boolean isValid() { - return isEncodingValid() && telnetSettingsPage.validateSettings(); - } - - @Override - public void doSaveWidgetValues(IDialogSettings settings, String idPrefix) { - saveSettingsForHost(true); - super.doSaveWidgetValues(settings, idPrefix); - } - - @Override - protected String getHostFromSettings() { - telnetSettingsPage.saveSettings(); - return telnetSettings.getHost(); - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/launcher/TelnetLauncherDelegate.java b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/launcher/TelnetLauncherDelegate.java deleted file mode 100644 index 5a16fc23415..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/launcher/TelnetLauncherDelegate.java +++ /dev/null @@ -1,165 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - * Max Weninger (Wind River) - [366374] [TERMINALS][TELNET] Add Telnet terminal support - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.telnet.launcher; - -import java.text.DateFormat; -import java.util.Date; -import java.util.Map; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.osgi.util.NLS; -import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore; -import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector; -import org.eclipse.tm.internal.terminal.provisional.api.TerminalConnectorExtension; -import org.eclipse.tm.terminal.connector.telnet.connector.TelnetSettings; -import org.eclipse.tm.terminal.connector.telnet.controls.TelnetWizardConfigurationPanel; -import org.eclipse.tm.terminal.connector.telnet.nls.Messages; -import org.eclipse.tm.terminal.view.core.TerminalServiceFactory; -import org.eclipse.tm.terminal.view.core.interfaces.ITerminalService; -import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants; -import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanel; -import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer; -import org.eclipse.tm.terminal.view.ui.interfaces.IMementoHandler; -import org.eclipse.tm.terminal.view.ui.internal.SettingsStore; -import org.eclipse.tm.terminal.view.ui.launcher.AbstractLauncherDelegate; - -/** - * Telnet launcher delegate implementation. - */ -@SuppressWarnings("restriction") -public class TelnetLauncherDelegate extends AbstractLauncherDelegate { - // The Telnet terminal connection memento handler - private final IMementoHandler mementoHandler = new TelnetMementoHandler(); - - @Override - public boolean needsUserConfiguration() { - return true; - } - - @Override - public IConfigurationPanel getPanel(IConfigurationPanelContainer container) { - return new TelnetWizardConfigurationPanel(container); - } - - @Override - public void execute(Map properties, ITerminalService.Done done) { - Assert.isNotNull(properties); - - // Set the terminal tab title - String terminalTitle = getTerminalTitle(properties); - if (terminalTitle != null) { - properties.put(ITerminalsConnectorConstants.PROP_TITLE, terminalTitle); - } - - // For Telnet terminals, force a new terminal tab each time it is launched, - // if not set otherwise from outside - if (!properties.containsKey(ITerminalsConnectorConstants.PROP_FORCE_NEW)) { - properties.put(ITerminalsConnectorConstants.PROP_FORCE_NEW, Boolean.TRUE); - } - - // Get the terminal service - ITerminalService terminal = TerminalServiceFactory.getService(); - // If not available, we cannot fulfill this request - if (terminal != null) { - terminal.openConsole(properties, done); - } - } - - /** - * Returns the terminal title string. - *

- * The default implementation constructs a title like "Telnet @ host (Start time) ". - * - * @return The terminal title string or null. - */ - private String getTerminalTitle(Map properties) { - // Try to see if the user set a title explicitly via the properties map. - String title = getDefaultTerminalTitle(properties); - if (title != null) - return title; - - //No title,try to calculate the title - String host = (String) properties.get(ITerminalsConnectorConstants.PROP_IP_HOST); - - if (host != null) { - DateFormat format = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT); - String date = format.format(new Date(System.currentTimeMillis())); - return NLS.bind(Messages.TelnetLauncherDelegate_terminalTitle, new String[] { host, date }); - } - - return Messages.TelnetLauncherDelegate_terminalTitle_default; - } - - @Override - public T getAdapter(Class adapter) { - if (IMementoHandler.class.equals(adapter)) { - return adapter.cast(mementoHandler); - } - return super.getAdapter(adapter); - } - - @Override - public ITerminalConnector createTerminalConnector(Map properties) { - Assert.isNotNull(properties); - - // Check for the terminal connector id - String connectorId = (String) properties.get(ITerminalsConnectorConstants.PROP_TERMINAL_CONNECTOR_ID); - if (connectorId == null) - connectorId = "org.eclipse.tm.terminal.connector.telnet.TelnetConnector"; //$NON-NLS-1$ - - // Extract the telnet properties - String host = (String) properties.get(ITerminalsConnectorConstants.PROP_IP_HOST); - Object value = properties.get(ITerminalsConnectorConstants.PROP_IP_PORT); - String port = value != null ? value.toString() : null; - value = properties.get(ITerminalsConnectorConstants.PROP_TIMEOUT); - String timeout = value != null ? value.toString() : null; - String endOfLine = (String) properties.get(ITerminalsConnectorConstants.PROP_TELNET_EOL); - - int portOffset = 0; - if (properties.get(ITerminalsConnectorConstants.PROP_IP_PORT_OFFSET) instanceof Integer) { - portOffset = ((Integer) properties.get(ITerminalsConnectorConstants.PROP_IP_PORT_OFFSET)).intValue(); - if (portOffset < 0) - portOffset = 0; - } - - // The real port to connect to is port + portOffset - if (port != null) { - port = Integer.toString(Integer.decode(port).intValue() + portOffset); - } - - // Construct the terminal settings store - ISettingsStore store = new SettingsStore(); - - // Construct the telnet settings - TelnetSettings telnetSettings = new TelnetSettings(); - telnetSettings.setHost(host); - telnetSettings.setNetworkPort(port); - if (timeout != null) { - telnetSettings.setTimeout(timeout); - } - telnetSettings.setEndOfLine(endOfLine); - // And save the settings to the store - telnetSettings.save(store); - - // Construct the terminal connector instance - ITerminalConnector connector = TerminalConnectorExtension.makeTerminalConnector(connectorId); - if (connector != null) { - // Apply default settings - connector.setDefaultSettings(); - // And load the real settings - connector.load(store); - } - - return connector; - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/launcher/TelnetMementoHandler.java b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/launcher/TelnetMementoHandler.java deleted file mode 100644 index ae5d921041e..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/launcher/TelnetMementoHandler.java +++ /dev/null @@ -1,60 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.telnet.launcher; - -import java.util.Map; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants; -import org.eclipse.tm.terminal.view.ui.interfaces.IMementoHandler; -import org.eclipse.ui.IMemento; - -/** - * Telnet terminal connection memento handler implementation. - */ -public class TelnetMementoHandler implements IMementoHandler { - - @Override - public void saveState(IMemento memento, Map properties) { - Assert.isNotNull(memento); - Assert.isNotNull(properties); - - // Do not write the terminal title to the memento -> needs to - // be recreated at the time of restoration. - memento.putString(ITerminalsConnectorConstants.PROP_IP_HOST, - (String) properties.get(ITerminalsConnectorConstants.PROP_IP_HOST)); - Object value = properties.get(ITerminalsConnectorConstants.PROP_IP_PORT); - memento.putInteger(ITerminalsConnectorConstants.PROP_IP_PORT, - value instanceof Integer ? ((Integer) value).intValue() : -1); - value = properties.get(ITerminalsConnectorConstants.PROP_TIMEOUT); - memento.putInteger(ITerminalsConnectorConstants.PROP_TIMEOUT, - value instanceof Integer ? ((Integer) value).intValue() : -1); - memento.putString(ITerminalsConnectorConstants.PROP_ENCODING, - (String) properties.get(ITerminalsConnectorConstants.PROP_ENCODING)); - } - - @Override - public void restoreState(IMemento memento, Map properties) { - Assert.isNotNull(memento); - Assert.isNotNull(properties); - - // Restore the terminal properties from the memento - properties.put(ITerminalsConnectorConstants.PROP_IP_HOST, - memento.getString(ITerminalsConnectorConstants.PROP_IP_HOST)); - properties.put(ITerminalsConnectorConstants.PROP_IP_PORT, - memento.getInteger(ITerminalsConnectorConstants.PROP_IP_PORT)); - properties.put(ITerminalsConnectorConstants.PROP_TIMEOUT, - memento.getInteger(ITerminalsConnectorConstants.PROP_TIMEOUT)); - properties.put(ITerminalsConnectorConstants.PROP_ENCODING, - memento.getString(ITerminalsConnectorConstants.PROP_ENCODING)); - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/nls/Messages.java b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/nls/Messages.java deleted file mode 100644 index d223e942a6c..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/nls/Messages.java +++ /dev/null @@ -1,37 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - * Max Weninger (Wind River) - [366374] [TERMINALS][TELNET] Add Telnet terminal support - *******************************************************************************/ -package org.eclipse.tm.terminal.connector.telnet.nls; - -import org.eclipse.osgi.util.NLS; - -/** - * Externalized strings management. - */ -public class Messages extends NLS { - - // The plug-in resource bundle name - private static final String BUNDLE_NAME = "org.eclipse.tm.terminal.connector.telnet.nls.Messages"; //$NON-NLS-1$ - - /** - * Static constructor. - */ - static { - // Load message values from bundle file - NLS.initializeMessages(BUNDLE_NAME, Messages.class); - } - - // **** Declare externalized string id's down here ***** - - public static String TelnetLauncherDelegate_terminalTitle; - public static String TelnetLauncherDelegate_terminalTitle_default; -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/nls/Messages.properties b/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/nls/Messages.properties deleted file mode 100644 index 7ed5b2ef78d..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.telnet/src/org/eclipse/tm/terminal/connector/telnet/nls/Messages.properties +++ /dev/null @@ -1,14 +0,0 @@ -############################################################################### -# Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved. -# This program and the accompanying materials are made available under the terms -# of the Eclipse Public License 2.0 which accompanies this distribution, and is -# available at https://www.eclipse.org/legal/epl-2.0/ -# -# SPDX-License-Identifier: EPL-2.0 -# -# Contributors: -# Wind River Systems - initial API and implementation -############################################################################### - -TelnetLauncherDelegate_terminalTitle=Telnet {0} ({1}) -TelnetLauncherDelegate_terminalTitle_default=Telnet Terminal diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/.classpath b/terminal/plugins/org.eclipse.tm.terminal.test/.classpath deleted file mode 100644 index 51ec4e6b8b9..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/.classpath +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/.gitignore b/terminal/plugins/org.eclipse.tm.terminal.test/.gitignore deleted file mode 100644 index ae3c1726048..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/bin/ diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/.project b/terminal/plugins/org.eclipse.tm.terminal.test/.project deleted file mode 100644 index 492f603b4c0..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/.project +++ /dev/null @@ -1,28 +0,0 @@ - - - org.eclipse.tm.terminal.test - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.pde.ManifestBuilder - - - - - org.eclipse.pde.SchemaBuilder - - - - - - org.eclipse.pde.PluginNature - org.eclipse.jdt.core.javanature - - diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.core.resources.prefs b/terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index 99f26c0203a..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -encoding/=UTF-8 diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.jdt.core.prefs b/terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index afec999c9e1..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,486 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.builder.cleanOutputFolder=clean -org.eclipse.jdt.core.builder.duplicateResourceTask=warning -org.eclipse.jdt.core.builder.invalidClasspath=abort -org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore -org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend -org.eclipse.jdt.core.circularClasspath=error -org.eclipse.jdt.core.classpath.exclusionPatterns=enabled -org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error -org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled -org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error -org.eclipse.jdt.core.codeComplete.argumentPrefixes= -org.eclipse.jdt.core.codeComplete.argumentSuffixes= -org.eclipse.jdt.core.codeComplete.fieldPrefixes= -org.eclipse.jdt.core.codeComplete.fieldSuffixes= -org.eclipse.jdt.core.codeComplete.localPrefixes= -org.eclipse.jdt.core.codeComplete.localSuffixes= -org.eclipse.jdt.core.codeComplete.staticFieldPrefixes= -org.eclipse.jdt.core.codeComplete.staticFieldSuffixes= -org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes= -org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes= -org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled -org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore -org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull -org.eclipse.jdt.core.compiler.annotation.nonnull.secondary= -org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault -org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary= -org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable -org.eclipse.jdt.core.compiler.annotation.nullable.secondary= -org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.methodParameters=generate -org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=17 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.doc.comment.support=enabled -org.eclipse.jdt.core.compiler.maxProblemPerUnit=100 -org.eclipse.jdt.core.compiler.problem.APILeak=warning -org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.autoboxing=ignore -org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning -org.eclipse.jdt.core.compiler.problem.deadCode=warning -org.eclipse.jdt.core.compiler.problem.deprecation=ignore -org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled -org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled -org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore -org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore -org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore -org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning -org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled -org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore -org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore -org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning -org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning -org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled -org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning -org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore -org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore -org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore -org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled -org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled -org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled -org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected -org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore -org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error -org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore -org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning -org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled -org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled -org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public -org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag -org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled -org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled -org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled -org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore -org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore -org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning -org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning -org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore -org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning -org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning -org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error -org.eclipse.jdt.core.compiler.problem.nullReference=error -org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error -org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning -org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning -org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore -org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning -org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning -org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore -org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore -org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore -org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning -org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning -org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore -org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning -org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore -org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore -org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning -org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled -org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning -org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled -org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled -org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled -org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore -org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning -org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning -org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled -org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore -org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning -org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore -org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning -org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning -org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled -org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info -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.unstableAutoModuleName=warning -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled -org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore -org.eclipse.jdt.core.compiler.problem.unusedImport=warning -org.eclipse.jdt.core.compiler.problem.unusedLabel=warning -org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore -org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore -org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore -org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled -org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore -org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore -org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning -org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning -org.eclipse.jdt.core.compiler.release=enabled -org.eclipse.jdt.core.compiler.source=17 -org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false -org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647 -org.eclipse.jdt.core.formatter.align_type_members_on_columns=false -org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false -org.eclipse.jdt.core.formatter.align_with_spaces=false -org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_assignment=0 -org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 -org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16 -org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 -org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16 -org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 -org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0 -org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0 -org.eclipse.jdt.core.formatter.alignment_for_module_statements=16 -org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 -org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80 -org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16 -org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0 -org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0 -org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16 -org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_after_package=1 -org.eclipse.jdt.core.formatter.blank_lines_before_field=0 -org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 -org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 -org.eclipse.jdt.core.formatter.blank_lines_before_method=1 -org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 -org.eclipse.jdt.core.formatter.blank_lines_before_package=0 -org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 -org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 -org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true -org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false -org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true -org.eclipse.jdt.core.formatter.comment.format_block_comments=false -org.eclipse.jdt.core.formatter.comment.format_header=false -org.eclipse.jdt.core.formatter.comment.format_html=true -org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false -org.eclipse.jdt.core.formatter.comment.format_line_comments=false -org.eclipse.jdt.core.formatter.comment.format_source_code=true -org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false -org.eclipse.jdt.core.formatter.comment.indent_root_tags=false -org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert -org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert -org.eclipse.jdt.core.formatter.comment.line_length=80 -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=false -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true -org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_empty_lines=false -org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true -org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false -org.eclipse.jdt.core.formatter.indentation.size=4 -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert -org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert -org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert -org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert -org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert -org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert -org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert -org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.join_lines_in_comments=true -org.eclipse.jdt.core.formatter.join_wrapped_lines=true -org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false -org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false -org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false -org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false -org.eclipse.jdt.core.formatter.lineSplit=120 -org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false -org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 -org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 -org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines -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_additive_operator=true -org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false -org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true -org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true -org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true -org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true -org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true -org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true -org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true -org.eclipse.jdt.core.incompatibleJDKLevel=ignore -org.eclipse.jdt.core.incompleteClasspath=error -org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.jdt.launching.prefs b/terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.jdt.launching.prefs deleted file mode 100644 index f8a131b56e0..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.jdt.launching.prefs +++ /dev/null @@ -1,3 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.launching.PREF_COMPILER_COMPLIANCE_DOES_NOT_MATCH_JRE=warning -org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.jdt.ui.prefs b/terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.jdt.ui.prefs deleted file mode 100644 index d35ba9b5231..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.jdt.ui.prefs +++ /dev/null @@ -1,213 +0,0 @@ -cleanup.add_all=false -cleanup.add_default_serial_version_id=true -cleanup.add_generated_serial_version_id=false -cleanup.add_missing_annotations=true -cleanup.add_missing_deprecated_annotations=true -cleanup.add_missing_methods=false -cleanup.add_missing_nls_tags=false -cleanup.add_missing_override_annotations=true -cleanup.add_missing_override_annotations_interface_methods=true -cleanup.add_serial_version_id=false -cleanup.always_use_blocks=true -cleanup.always_use_parentheses_in_expressions=false -cleanup.always_use_this_for_non_static_field_access=false -cleanup.always_use_this_for_non_static_method_access=false -cleanup.array_with_curly=false -cleanup.arrays_fill=false -cleanup.bitwise_conditional_expression=false -cleanup.boolean_literal=false -cleanup.boolean_value_rather_than_comparison=false -cleanup.break_loop=false -cleanup.collection_cloning=false -cleanup.comparing_on_criteria=false -cleanup.comparison_statement=false -cleanup.controlflow_merge=false -cleanup.convert_functional_interfaces=false -cleanup.convert_to_enhanced_for_loop=false -cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true -cleanup.convert_to_switch_expressions=false -cleanup.correct_indentation=false -cleanup.do_while_rather_than_while=true -cleanup.double_negation=false -cleanup.else_if=false -cleanup.embedded_if=false -cleanup.evaluate_nullable=false -cleanup.extract_increment=false -cleanup.format_source_code=true -cleanup.format_source_code_changes_only=false -cleanup.hash=false -cleanup.if_condition=false -cleanup.insert_inferred_type_arguments=false -cleanup.instanceof=false -cleanup.instanceof_keyword=false -cleanup.invert_equals=false -cleanup.join=false -cleanup.lazy_logical_operator=false -cleanup.make_local_variable_final=true -cleanup.make_parameters_final=false -cleanup.make_private_fields_final=true -cleanup.make_type_abstract_if_missing_method=false -cleanup.make_variable_declarations_final=false -cleanup.map_cloning=false -cleanup.merge_conditional_blocks=false -cleanup.multi_catch=false -cleanup.never_use_blocks=false -cleanup.never_use_parentheses_in_expressions=true -cleanup.no_string_creation=false -cleanup.no_super=false -cleanup.number_suffix=false -cleanup.objects_equals=false -cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false -cleanup.operand_factorization=false -cleanup.organize_imports=true -cleanup.overridden_assignment=false -cleanup.plain_replacement=false -cleanup.precompile_regex=false -cleanup.primitive_comparison=false -cleanup.primitive_parsing=false -cleanup.primitive_rather_than_wrapper=false -cleanup.primitive_serialization=false -cleanup.pull_out_if_from_if_else=false -cleanup.pull_up_assignment=false -cleanup.push_down_negation=false -cleanup.qualify_static_field_accesses_with_declaring_class=false -cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -cleanup.qualify_static_member_accesses_with_declaring_class=false -cleanup.qualify_static_method_accesses_with_declaring_class=false -cleanup.reduce_indentation=false -cleanup.redundant_comparator=false -cleanup.redundant_falling_through_block_end=false -cleanup.remove_private_constructors=true -cleanup.remove_redundant_modifiers=false -cleanup.remove_redundant_semicolons=true -cleanup.remove_redundant_type_arguments=true -cleanup.remove_trailing_whitespaces=true -cleanup.remove_trailing_whitespaces_all=true -cleanup.remove_trailing_whitespaces_ignore_empty=false -cleanup.remove_unnecessary_array_creation=false -cleanup.remove_unnecessary_casts=true -cleanup.remove_unnecessary_nls_tags=false -cleanup.remove_unused_imports=true -cleanup.remove_unused_local_variables=false -cleanup.remove_unused_method_parameters=false -cleanup.remove_unused_private_fields=true -cleanup.remove_unused_private_members=false -cleanup.remove_unused_private_methods=true -cleanup.remove_unused_private_types=true -cleanup.return_expression=false -cleanup.simplify_lambda_expression_and_method_ref=false -cleanup.single_used_field=false -cleanup.sort_members=false -cleanup.sort_members_all=false -cleanup.standard_comparison=false -cleanup.static_inner_class=false -cleanup.strictly_equal_or_different=false -cleanup.stringbuffer_to_stringbuilder=false -cleanup.stringbuilder=false -cleanup.stringbuilder_for_local_vars=true -cleanup.stringconcat_to_textblock=false -cleanup.substring=false -cleanup.switch=false -cleanup.system_property=false -cleanup.system_property_boolean=false -cleanup.system_property_file_encoding=false -cleanup.system_property_file_separator=false -cleanup.system_property_line_separator=false -cleanup.system_property_path_separator=false -cleanup.ternary_operator=false -cleanup.try_with_resource=false -cleanup.unlooped_while=false -cleanup.unreachable_block=false -cleanup.use_anonymous_class_creation=false -cleanup.use_autoboxing=false -cleanup.use_blocks=false -cleanup.use_blocks_only_for_return_and_throw=false -cleanup.use_directly_map_method=false -cleanup.use_lambda=true -cleanup.use_parentheses_in_expressions=false -cleanup.use_string_is_blank=false -cleanup.use_this_for_non_static_field_access=false -cleanup.use_this_for_non_static_field_access_only_if_necessary=true -cleanup.use_this_for_non_static_method_access=false -cleanup.use_this_for_non_static_method_access_only_if_necessary=true -cleanup.use_unboxing=false -cleanup.use_var=false -cleanup.useless_continue=false -cleanup.useless_return=false -cleanup.valueof_rather_than_instantiation=false -cleanup_profile=_CDT -cleanup_settings_version=2 -eclipse.preferences.version=1 -editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true -formatter_profile=_CDT -formatter_settings_version=14 -internal.default.compliance=user -org.eclipse.jdt.ui.exception.name=e -org.eclipse.jdt.ui.gettersetter.use.is=true -org.eclipse.jdt.ui.ignorelowercasenames=true -org.eclipse.jdt.ui.importorder=java;javax;org;com; -org.eclipse.jdt.ui.keywordthis=false -org.eclipse.jdt.ui.ondemandthreshold=1000 -org.eclipse.jdt.ui.overrideannotation=true -org.eclipse.jdt.ui.staticondemandthreshold=1000 -org.eclipse.jdt.ui.text.custom_code_templates= -sp_cleanup.add_default_serial_version_id=true -sp_cleanup.add_generated_serial_version_id=false -sp_cleanup.add_missing_annotations=true -sp_cleanup.add_missing_deprecated_annotations=true -sp_cleanup.add_missing_methods=false -sp_cleanup.add_missing_nls_tags=false -sp_cleanup.add_missing_override_annotations=true -sp_cleanup.add_missing_override_annotations_interface_methods=true -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_functional_interfaces=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.insert_inferred_type_arguments=false -sp_cleanup.make_local_variable_final=true -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_redundant_modifiers=false -sp_cleanup.remove_redundant_semicolons=true -sp_cleanup.remove_redundant_type_arguments=true -sp_cleanup.remove_trailing_whitespaces=true -sp_cleanup.remove_trailing_whitespaces_all=true -sp_cleanup.remove_trailing_whitespaces_ignore_empty=false -sp_cleanup.remove_unnecessary_casts=true -sp_cleanup.remove_unnecessary_nls_tags=false -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_anonymous_class_creation=false -sp_cleanup.use_blocks=false -sp_cleanup.use_blocks_only_for_return_and_throw=false -sp_cleanup.use_lambda=true -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/terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.pde.api.tools.prefs b/terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.pde.api.tools.prefs deleted file mode 100644 index ec9fbf321d0..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.pde.api.tools.prefs +++ /dev/null @@ -1,184 +0,0 @@ -ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error -ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error -ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error -ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error -ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error -ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error -API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error -API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error -API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error -API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error -API_USE_SCAN_FIELD_SEVERITY=Error -API_USE_SCAN_METHOD_SEVERITY=Error -API_USE_SCAN_TYPE_SEVERITY=Error -CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -CLASS_ELEMENT_TYPE_ADDED_FIELD=Error -CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error -CLASS_ELEMENT_TYPE_ADDED_METHOD=Error -CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error -CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error -CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error -CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error -CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error -CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error -CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error -CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error -CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error -CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error -CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error -CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error -CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error -CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error -CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error -CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error -CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error -CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error -CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error -CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error -CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error -CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error -CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error -ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error -ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error -ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error -ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error -ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error -ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error -ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error -ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error -ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error -ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error -FIELD_ELEMENT_TYPE_ADDED_VALUE=Error -FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error -FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error -FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error -FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error -FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error -FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error -FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error -FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error -FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error -FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error -ILLEGAL_EXTEND=Warning -ILLEGAL_IMPLEMENT=Warning -ILLEGAL_INSTANTIATE=Warning -ILLEGAL_OVERRIDE=Warning -ILLEGAL_REFERENCE=Warning -INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error -INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error -INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error -INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error -INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error -INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error -INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error -INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error -INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error -INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error -INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error -INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error -INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error -INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error -INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error -INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error -INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error -INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error -INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error -INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error -INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error -INVALID_ANNOTATION=Ignore -INVALID_JAVADOC_TAG=Error -INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning -LEAK_EXTEND=Warning -LEAK_FIELD_DECL=Warning -LEAK_IMPLEMENT=Warning -LEAK_METHOD_PARAM=Warning -LEAK_METHOD_RETURN_TYPE=Warning -METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error -METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error -METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error -METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error -METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error -METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error -METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error -METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error -METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error -METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error -METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error -METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error -METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error -METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error -MISSING_EE_DESCRIPTIONS=Warning -TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -UNUSED_PROBLEM_FILTERS=Warning -automatically_removed_unused_problem_filters=false -changed_execution_env=Error -eclipse.preferences.version=1 -incompatible_api_component_version=Error -incompatible_api_component_version_include_major_without_breaking_change=Disabled -incompatible_api_component_version_include_minor_without_api_change=Disabled -incompatible_api_component_version_report_major_without_breaking_change=Warning -incompatible_api_component_version_report_minor_without_api_change=Warning -invalid_since_tag_version=Error -malformed_since_tag=Error -missing_since_tag=Error -report_api_breakage_when_major_version_incremented=Disabled -report_resolution_errors_api_component=Warning diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.pde.prefs b/terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.pde.prefs deleted file mode 100644 index 010e493a319..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/.settings/org.eclipse.pde.prefs +++ /dev/null @@ -1,36 +0,0 @@ -compilers.f.unresolved-features=1 -compilers.f.unresolved-plugins=1 -compilers.incompatible-environment=1 -compilers.p.build=1 -compilers.p.build.bin.includes=0 -compilers.p.build.encodings=2 -compilers.p.build.java.compiler=2 -compilers.p.build.java.compliance=1 -compilers.p.build.missing.output=2 -compilers.p.build.output.library=1 -compilers.p.build.source.library=1 -compilers.p.build.src.includes=0 -compilers.p.deprecated=1 -compilers.p.discouraged-class=1 -compilers.p.exec-env-too-low=1 -compilers.p.internal=1 -compilers.p.missing-packages=2 -compilers.p.missing-version-export-package=2 -compilers.p.missing-version-import-package=2 -compilers.p.missing-version-require-bundle=2 -compilers.p.no-required-att=0 -compilers.p.no.automatic.module=1 -compilers.p.not-externalized-att=2 -compilers.p.service.component.without.lazyactivation=1 -compilers.p.unknown-attribute=1 -compilers.p.unknown-class=0 -compilers.p.unknown-element=1 -compilers.p.unknown-identifier=0 -compilers.p.unknown-resource=0 -compilers.p.unresolved-ex-points=0 -compilers.p.unresolved-import=0 -compilers.s.create-docs=false -compilers.s.doc-folder=doc -compilers.s.open-tags=1 -compilers.use-project=true -eclipse.preferences.version=1 diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/META-INF/MANIFEST.MF b/terminal/plugins/org.eclipse.tm.terminal.test/META-INF/MANIFEST.MF deleted file mode 100644 index 09aacf4da05..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/META-INF/MANIFEST.MF +++ /dev/null @@ -1,25 +0,0 @@ -Manifest-Version: 1.0 -Bundle-ManifestVersion: 2 -Bundle-Name: %pluginName -Bundle-SymbolicName: org.eclipse.tm.terminal.test;singleton:=true -Bundle-Version: 4.6.100.qualifier -Bundle-Vendor: %providerName -Bundle-Localization: plugin -Require-Bundle: org.junit;bundle-version="[4.13.2,5)", - org.eclipse.tm.terminal.control;bundle-version="[5.6.0,6.0.0)", - org.eclipse.core.runtime;bundle-version="[3.33.0,4)", - org.eclipse.ui;bundle-version="[3.207.200,4)", - org.opentest4j;bundle-version="[1.3.0,2)" -Bundle-RequiredExecutionEnvironment: JavaSE-17 -Export-Package: org.eclipse.tm.internal.terminal.connector;x-internal:=true, - org.eclipse.tm.internal.terminal.emulator;x-internal:=true, - org.eclipse.tm.internal.terminal.model;x-internal:=true, - org.eclipse.tm.internal.terminal.speedtest;x-internal:=true, - org.eclipse.tm.internal.terminal.test.terminalcanvas;x-internal:=true, - org.eclipse.tm.internal.terminal.test.ui;x-internal:=true, - org.eclipse.tm.internal.terminal.textcanvas;x-internal:=true, - org.eclipse.tm.terminal.model, - org.eclipse.tm.terminal.test -Import-Package: org.junit.jupiter.api;version="[5.9.3,6.0.0)", - org.junit.jupiter.api.function;version="[5.9.3,6.0.0)" -Automatic-Module-Name: org.eclipse.tm.terminal.test diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/about.html b/terminal/plugins/org.eclipse.tm.terminal.test/about.html deleted file mode 100644 index b3134865230..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/about.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - About - - - -

About This Content

- -

November 30, 2017

-

License

- -

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

- -

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

- - - - \ No newline at end of file diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/about.ini b/terminal/plugins/org.eclipse.tm.terminal.test/about.ini deleted file mode 100644 index 3adc27ab587..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/about.ini +++ /dev/null @@ -1,27 +0,0 @@ -# about.ini -# contains information about a feature -# java.io.Properties file (ISO 8859-1 with "\" escapes) -# "%key" are externalized strings defined in about.properties -# This file does not need to be translated. - -# Property "aboutText" contains blurb for "About" dialog (translated) -aboutText=%blurb - -# Property "windowImage" contains path to window icon (16x16) -# needed for primary features only - -# Property "featureImage" contains path to feature image (32x32) -featureImage=tm32.png - -# Property "aboutImage" contains path to product image (500x330 or 115x164) -# needed for primary features only - -# Property "appName" contains name of the application (not translated) -# needed for primary features only - -# Property "welcomePage" contains path to welcome page (special XML-based format) -# optional - -# Property "welcomePerspective" contains the id of the perspective in which the -# welcome page is to be opened. -# optional \ No newline at end of file diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/about.properties b/terminal/plugins/org.eclipse.tm.terminal.test/about.properties deleted file mode 100644 index bd810e7c32b..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/about.properties +++ /dev/null @@ -1,26 +0,0 @@ -############################################################################### -# Copyright (c) 2007, 2018 Wind River Systems, Inc. and others. -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Eclipse Public License 2.0 -# which accompanies this distribution, and is available at -# https://www.eclipse.org/legal/epl-2.0/ -# -# SPDX-License-Identifier: EPL-2.0 -# -# Contributors: -# IBM Corporation - initial API and implementation -############################################################################### -# about.properties -# contains externalized strings for about.ini -# java.io.Properties file (ISO 8859-1 with "\" escapes) -# fill-ins are supplied by about.mappings -# This file should be translated. -# -# Do not translate any values surrounded by {} - -blurb=TM Terminal Unit Tests\n\ -\n\ -Version: {featureVersion}\n\ -\n\ -(c) Copyright Wind River Systems, Inc. and others 2007, 2017. All rights reserved.\n\ -Visit http://www.eclipse.org/tm diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/build.properties b/terminal/plugins/org.eclipse.tm.terminal.test/build.properties deleted file mode 100644 index 0b897913118..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/build.properties +++ /dev/null @@ -1,23 +0,0 @@ -############################################################################### -# Copyright (c) 2007, 2018 Wind River Systems, Inc. and others. -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Eclipse Public License 2.0 -# which accompanies this distribution, and is available at -# https://www.eclipse.org/legal/epl-2.0/ -# -# SPDX-License-Identifier: EPL-2.0 -# -# Contributors: -# Michael Scharf (Wind River) - initial API and implementation -############################################################################### -source.. = src/ -output.. = bin/ -bin.includes = META-INF/,\ - .,\ - plugin.properties,\ - plugin.xml,\ - about.properties,\ - about.ini,\ - about.html -src.includes = teamConfig/,\ - about.html diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/plugin.properties b/terminal/plugins/org.eclipse.tm.terminal.test/plugin.properties deleted file mode 100644 index 0532f6a6263..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/plugin.properties +++ /dev/null @@ -1,19 +0,0 @@ -############################################################################### -# Copyright (c) 2007, 2018 Wind River Systems, Inc. and others. -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Eclipse Public License 2.0 -# which accompanies this distribution, and is available at -# https://www.eclipse.org/legal/epl-2.0/ -# -# SPDX-License-Identifier: EPL-2.0 -# -# Initial Contributors: -# The following Wind River employees contributed to the Terminal component -# that contains this file: Chris Thew, Fran Litterio, Stephen Lamb, -# Helmut Haigermoser and Ted Williams. -# -# Contributors: -# Michael Scharf (Wind River) - initial API and implementation -############################################################################### -pluginName = Target Management Terminal Tests -providerName = Eclipse CDT diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/plugin.xml b/terminal/plugins/org.eclipse.tm.terminal.test/plugin.xml deleted file mode 100644 index def334de009..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/plugin.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/connector/TerminalConnectorFactoryTest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/connector/TerminalConnectorFactoryTest.java deleted file mode 100644 index 120c444eb21..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/connector/TerminalConnectorFactoryTest.java +++ /dev/null @@ -1,322 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - * Martin Oberhuber (Wind River) - [225853][api] Provide more default functionality in TerminalConnectorImpl - * Martin Oberhuber (Wind River) - [204796] Terminal should allow setting the encoding to use - * Uwe Stieber (Wind River) - [282996] [terminal][api] Add "hidden" attribute to terminal connector extension point - * Anton Leherbauer (Wind River) - [433751] Add option to enable VT100 line wrapping mode - *******************************************************************************/ -package org.eclipse.tm.internal.terminal.connector; - -import java.io.OutputStream; -import java.nio.charset.Charset; - -import org.eclipse.core.runtime.Platform; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.tm.internal.terminal.control.ITerminalListener3.TerminalTitleRequestor; -import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore; -import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl; -import org.eclipse.tm.internal.terminal.provisional.api.TerminalState; -import org.eclipse.tm.internal.terminal.provisional.api.provider.TerminalConnectorImpl; - -import junit.framework.TestCase; - -public class TerminalConnectorFactoryTest extends TestCase { - public class SettingsMock implements ISettingsStore { - - @Override - public String get(String key) { - return null; - } - - @Override - public String get(String key, String defaultValue) { - return null; - } - - @Override - public void put(String key, String value) { - } - - } - - public static class TerminalControlMock implements ITerminalControl { - - @Override - public void setEncoding(String encoding) { - } - - @Override - public void setCharset(Charset charset) { - } - - @Override - public String getEncoding() { - return "UTF-8"; //$NON-NLS-1$ - } - - @Override - public Charset getCharset() { - return Charset.defaultCharset(); - } - - @Override - public void displayTextInTerminal(String text) { - } - - @Override - public OutputStream getRemoteToTerminalOutputStream() { - return null; - } - - @Override - public Shell getShell() { - return null; - } - - @Override - public TerminalState getState() { - return null; - } - - @Override - public void setMsg(String msg) { - } - - @Override - public void setState(TerminalState state) { - } - - @Override - public void setTerminalTitle(String title) { - } - - @Override - public void setTerminalTitle(String title, TerminalTitleRequestor requestor) { - } - - @Override - public void setupTerminal(Composite parent) { - } - - @Override - public boolean isConnectOnEnterIfClosed() { - return false; - } - - @Override - public void setConnectOnEnterIfClosed(boolean on) { - } - - @Override - public void setVT100LineWrapping(boolean enable) { - } - - @Override - public boolean isVT100LineWrapping() { - return false; - } - } - - static class ConnectorMock extends TerminalConnectorImpl { - - public boolean fEcho; - public int fWidth; - public int fHeight; - public ITerminalControl fTerminalControl; - public ISettingsStore fSaveStore; - public ISettingsStore fLoadStore; - public boolean fDisconnect; - - @Override - public boolean isLocalEcho() { - return fEcho; - } - - @Override - public void setTerminalSize(int newWidth, int newHeight) { - fWidth = newWidth; - fHeight = newHeight; - } - - @Override - public void connect(ITerminalControl control) { - super.connect(control); - fTerminalControl = control; - } - - @Override - public void doDisconnect() { - fDisconnect = true; - } - - @Override - public OutputStream getTerminalToRemoteStream() { - return null; - } - - @Override - public String getSettingsSummary() { - return "Summary"; - } - - @Override - public void load(ISettingsStore store) { - fLoadStore = store; - } - - @Override - public void save(ISettingsStore store) { - fSaveStore = store; - } - } - - protected TerminalConnector makeTerminalConnector() { - return makeTerminalConnector(new ConnectorMock()); - } - - protected TerminalConnector makeTerminalConnector(final TerminalConnectorImpl mock) { - TerminalConnector c = new TerminalConnector(() -> mock, "xID", "xName", false); - return c; - } - - public void testGetInitializationErrorMessage() { - TerminalConnector c = makeTerminalConnector(); - c.connect(new TerminalControlMock()); - assertNull(c.getInitializationErrorMessage()); - - c = makeTerminalConnector(new ConnectorMock() { - @Override - public void initialize() throws Exception { - throw new Exception("FAILED"); - } - }); - c.connect(new TerminalControlMock()); - assertEquals("FAILED", c.getInitializationErrorMessage()); - - } - - public void testGetIdAndName() { - TerminalConnector c = makeTerminalConnector(); - assertEquals("xID", c.getId()); - assertEquals("xName", c.getName()); - } - - public void testIsInitialized() { - TerminalConnector c = makeTerminalConnector(); - assertFalse(c.isInitialized()); - c.getId(); - assertFalse(c.isInitialized()); - c.getName(); - assertFalse(c.isInitialized()); - c.getSettingsSummary(); - assertFalse(c.isInitialized()); - c.setTerminalSize(10, 10); - assertFalse(c.isInitialized()); - c.load(null); - assertFalse(c.isInitialized()); - c.save(null); - assertFalse(c.isInitialized()); - if (!Platform.isRunning()) - return; - c.getAdapter(ConnectorMock.class); - assertFalse(c.isInitialized()); - } - - public void testConnect() { - TerminalConnector c = makeTerminalConnector(); - assertFalse(c.isInitialized()); - c.connect(new TerminalControlMock()); - assertTrue(c.isInitialized()); - - } - - public void testDisconnect() { - ConnectorMock mock = new ConnectorMock(); - TerminalConnector c = makeTerminalConnector(mock); - TerminalControlMock control = new TerminalControlMock(); - c.connect(control); - c.disconnect(); - assertTrue(mock.fDisconnect); - } - - public void testGetTerminalToRemoteStream() { - ConnectorMock mock = new ConnectorMock(); - TerminalConnector c = makeTerminalConnector(mock); - TerminalControlMock control = new TerminalControlMock(); - c.connect(control); - assertSame(mock.fTerminalControl, control); - } - - public void testGetSettingsSummary() { - TerminalConnector c = makeTerminalConnector(); - assertEquals("Not Initialized", c.getSettingsSummary()); - c.connect(new TerminalControlMock()); - assertEquals("Summary", c.getSettingsSummary()); - } - - public void testIsLocalEcho() { - ConnectorMock mock = new ConnectorMock(); - TerminalConnector c = makeTerminalConnector(mock); - assertFalse(c.isLocalEcho()); - mock.fEcho = true; - assertTrue(c.isLocalEcho()); - } - - public void testLoad() { - ConnectorMock mock = new ConnectorMock(); - TerminalConnector c = makeTerminalConnector(mock); - ISettingsStore s = new SettingsMock(); - c.load(s); - // the load is called after the connect... - assertNull(mock.fLoadStore); - c.connect(new TerminalControlMock()); - assertSame(s, mock.fLoadStore); - } - - public void testSave() { - ConnectorMock mock = new ConnectorMock(); - TerminalConnector c = makeTerminalConnector(mock); - ISettingsStore s = new SettingsMock(); - c.save(s); - assertNull(mock.fSaveStore); - c.connect(new TerminalControlMock()); - c.save(s); - assertSame(s, mock.fSaveStore); - } - - public void testSetDefaultSettings() { - ConnectorMock mock = new ConnectorMock(); - TerminalConnector c = makeTerminalConnector(mock); - c.setDefaultSettings(); - } - - public void testSetTerminalSize() { - ConnectorMock mock = new ConnectorMock(); - TerminalConnector c = makeTerminalConnector(mock); - c.setTerminalSize(100, 200); - - } - - public void testGetAdapter() { - if (!Platform.isRunning()) - return; - ConnectorMock mock = new ConnectorMock(); - TerminalConnector c = makeTerminalConnector(mock); - assertNull(c.getAdapter(ConnectorMock.class)); - // the load is called after the connect... - c.connect(new TerminalControlMock()); - - assertSame(mock, c.getAdapter(ConnectorMock.class)); - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/connector/TerminalConnectorPluginTest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/connector/TerminalConnectorPluginTest.java deleted file mode 100644 index b5899dcd8e1..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/connector/TerminalConnectorPluginTest.java +++ /dev/null @@ -1,64 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Martin Oberhuber (Wind River) - initial API and implementation - * Uwe Stieber (Wind River) - [282996] [terminal][api] Add "hidden" attribute to terminal connector extension point - *******************************************************************************/ - -package org.eclipse.tm.internal.terminal.connector; - -import org.eclipse.core.runtime.Platform; -import org.eclipse.tm.internal.terminal.connector.TerminalConnectorTest.ConnectorMock; -import org.eclipse.tm.internal.terminal.connector.TerminalConnectorTest.SimpleFactory; -import org.eclipse.tm.internal.terminal.connector.TerminalConnectorTest.TerminalControlMock; - -import junit.framework.TestCase; - -/** - * Testcase for TerminalConnector that must run as a JUnit plug-in test. - */ -public class TerminalConnectorPluginTest extends TestCase { - - public void testIsInitialized() { - if (!Platform.isRunning()) - return; - TerminalConnector c = new TerminalConnector(new SimpleFactory(new ConnectorMock()), "xID", "xName", false); - assertFalse(c.isInitialized()); - c.getId(); - assertFalse(c.isInitialized()); - c.getName(); - assertFalse(c.isInitialized()); - c.isHidden(); - assertFalse(c.isInitialized()); - c.getSettingsSummary(); - assertFalse(c.isInitialized()); - c.setTerminalSize(10, 10); - assertFalse(c.isInitialized()); - c.load(null); - assertFalse(c.isInitialized()); - c.save(null); - assertFalse(c.isInitialized()); - c.getAdapter(ConnectorMock.class); - assertFalse(c.isInitialized()); - } - - public void testGetAdapter() { - if (!Platform.isRunning()) - return; - ConnectorMock mock = new ConnectorMock(); - TerminalConnector c = new TerminalConnector(new SimpleFactory(mock), "xID", "xName", false); - assertNull(c.getAdapter(ConnectorMock.class)); - // the load is called after the connect... - c.connect(new TerminalControlMock()); - - assertSame(mock, c.getAdapter(ConnectorMock.class)); - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/connector/TerminalConnectorTest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/connector/TerminalConnectorTest.java deleted file mode 100644 index 4bfa869f861..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/connector/TerminalConnectorTest.java +++ /dev/null @@ -1,294 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - * Martin Oberhuber (Wind River) - [225853][api] Provide more default functionality in TerminalConnectorImpl - * Martin Oberhuber (Wind River) - [204796] Terminal should allow setting the encoding to use - * Uwe Stieber (Wind River) - [282996] [terminal][api] Add "hidden" attribute to terminal connector extension point - * Anton Leherbauer (Wind River) - [433751] Add option to enable VT100 line wrapping mode - *******************************************************************************/ -package org.eclipse.tm.internal.terminal.connector; - -import java.io.OutputStream; -import java.nio.charset.Charset; - -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.tm.internal.terminal.connector.TerminalConnector.Factory; -import org.eclipse.tm.internal.terminal.control.ITerminalListener3.TerminalTitleRequestor; -import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore; -import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl; -import org.eclipse.tm.internal.terminal.provisional.api.TerminalState; -import org.eclipse.tm.internal.terminal.provisional.api.provider.TerminalConnectorImpl; - -import junit.framework.TestCase; - -public class TerminalConnectorTest extends TestCase { - public class SettingsMock implements ISettingsStore { - - @Override - public String get(String key) { - return null; - } - - @Override - public String get(String key, String defaultValue) { - return null; - } - - @Override - public void put(String key, String value) { - } - - } - - public static class TerminalControlMock implements ITerminalControl { - - @Override - public void setEncoding(String encoding) { - } - - @Override - public void setCharset(Charset charset) { - } - - @Override - public String getEncoding() { - return "UTF-8"; //$NON-NLS-1$ - } - - @Override - public Charset getCharset() { - return Charset.defaultCharset(); - } - - @Override - public void displayTextInTerminal(String text) { - } - - @Override - public OutputStream getRemoteToTerminalOutputStream() { - return null; - } - - @Override - public Shell getShell() { - return null; - } - - @Override - public TerminalState getState() { - return null; - } - - @Override - public void setMsg(String msg) { - } - - @Override - public void setState(TerminalState state) { - } - - @Override - public void setTerminalTitle(String title) { - } - - @Override - public void setTerminalTitle(String title, TerminalTitleRequestor requestor) { - } - - @Override - public void setupTerminal(Composite parent) { - } - - @Override - public boolean isConnectOnEnterIfClosed() { - return false; - } - - @Override - public void setConnectOnEnterIfClosed(boolean on) { - } - - @Override - public void setVT100LineWrapping(boolean enable) { - } - - @Override - public boolean isVT100LineWrapping() { - return false; - } - } - - static class ConnectorMock extends TerminalConnectorImpl { - - public boolean fEcho; - public int fWidth; - public int fHeight; - public ITerminalControl fTerminalControl; - public ISettingsStore fSaveStore; - public ISettingsStore fLoadStore; - public boolean fDisconnect; - - @Override - public boolean isLocalEcho() { - return fEcho; - } - - @Override - public void setTerminalSize(int newWidth, int newHeight) { - fWidth = newWidth; - fHeight = newHeight; - } - - @Override - public void connect(ITerminalControl control) { - super.connect(control); - fTerminalControl = control; - } - - @Override - public void doDisconnect() { - fDisconnect = true; - } - - @Override - public OutputStream getTerminalToRemoteStream() { - return null; - } - - @Override - public String getSettingsSummary() { - return "Summary"; - } - - @Override - public void load(ISettingsStore store) { - fLoadStore = store; - } - - @Override - public void save(ISettingsStore store) { - fSaveStore = store; - } - } - - static class SimpleFactory implements Factory { - final TerminalConnectorImpl fConnector; - - public SimpleFactory(TerminalConnectorImpl connector) { - fConnector = connector; - } - - @Override - public TerminalConnectorImpl makeConnector() throws Exception { - // TODO Auto-generated method stub - return fConnector; - } - } - - public void testGetInitializationErrorMessage() { - TerminalConnector c = new TerminalConnector(new SimpleFactory(new ConnectorMock()), "xID", "xName", false); - c.connect(new TerminalControlMock()); - assertNull(c.getInitializationErrorMessage()); - - c = new TerminalConnector(new SimpleFactory(new ConnectorMock() { - @Override - public void initialize() throws Exception { - throw new Exception("FAILED"); - } - }), "xID", "xName", false); - c.connect(new TerminalControlMock()); - assertEquals("FAILED", c.getInitializationErrorMessage()); - - } - - public void testGetIdAndName() { - TerminalConnector c = new TerminalConnector(new SimpleFactory(new ConnectorMock()), "xID", "xName", false); - assertEquals("xID", c.getId()); - assertEquals("xName", c.getName()); - } - - public void testConnect() { - TerminalConnector c = new TerminalConnector(new SimpleFactory(new ConnectorMock()), "xID", "xName", false); - assertFalse(c.isInitialized()); - c.connect(new TerminalControlMock()); - assertTrue(c.isInitialized()); - - } - - public void testDisconnect() { - ConnectorMock mock = new ConnectorMock(); - TerminalConnector c = new TerminalConnector(new SimpleFactory(mock), "xID", "xName", false); - TerminalControlMock control = new TerminalControlMock(); - c.connect(control); - c.disconnect(); - assertTrue(mock.fDisconnect); - } - - public void testGetTerminalToRemoteStream() { - ConnectorMock mock = new ConnectorMock(); - TerminalConnector c = new TerminalConnector(new SimpleFactory(mock), "xID", "xName", false); - TerminalControlMock control = new TerminalControlMock(); - c.connect(control); - assertSame(mock.fTerminalControl, control); - } - - public void testGetSettingsSummary() { - TerminalConnector c = new TerminalConnector(new SimpleFactory(new ConnectorMock()), "xID", "xName", false); - assertEquals("Not Initialized", c.getSettingsSummary()); - c.connect(new TerminalControlMock()); - assertEquals("Summary", c.getSettingsSummary()); - } - - public void testIsLocalEcho() { - ConnectorMock mock = new ConnectorMock(); - TerminalConnector c = new TerminalConnector(new SimpleFactory(mock), "xID", "xName", false); - assertFalse(c.isLocalEcho()); - mock.fEcho = true; - assertTrue(c.isLocalEcho()); - } - - public void testLoad() { - ConnectorMock mock = new ConnectorMock(); - TerminalConnector c = new TerminalConnector(new SimpleFactory(mock), "xID", "xName", false); - ISettingsStore s = new SettingsMock(); - c.load(s); - // the load is called after the connect... - assertNull(mock.fLoadStore); - c.connect(new TerminalControlMock()); - assertSame(s, mock.fLoadStore); - } - - public void testSave() { - ConnectorMock mock = new ConnectorMock(); - TerminalConnector c = new TerminalConnector(new SimpleFactory(mock), "xID", "xName", false); - ISettingsStore s = new SettingsMock(); - c.save(s); - assertNull(mock.fSaveStore); - c.connect(new TerminalControlMock()); - c.save(s); - assertSame(s, mock.fSaveStore); - } - - public void testSetDefaultSettings() { - ConnectorMock mock = new ConnectorMock(); - TerminalConnector c = new TerminalConnector(new SimpleFactory(mock), "xID", "xName", false); - c.setDefaultSettings(); - } - - public void testSetTerminalSize() { - ConnectorMock mock = new ConnectorMock(); - TerminalConnector c = new TerminalConnector(new SimpleFactory(mock), "xID", "xName", false); - c.setTerminalSize(100, 200); - - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/connector/TerminalToRemoteInjectionOutputStreamTest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/connector/TerminalToRemoteInjectionOutputStreamTest.java deleted file mode 100644 index 04e3a2769b8..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/connector/TerminalToRemoteInjectionOutputStreamTest.java +++ /dev/null @@ -1,191 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.internal.terminal.connector; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.nio.charset.Charset; -import java.nio.charset.StandardCharsets; - -import junit.framework.TestCase; - -public class TerminalToRemoteInjectionOutputStreamTest extends TestCase { - final static Charset ENCODING = StandardCharsets.UTF_8; - - /** - * This class escapes strings coming on the original - * terminal.. - * - */ - class CleverInterceptor extends TerminalToRemoteInjectionOutputStream.Interceptor { - - @Override - public void close() throws IOException { - } - - @Override - public void write(int b) throws IOException { - fOriginal.write('['); - fOriginal.write(b); - fOriginal.write(']'); - } - - @Override - public void write(byte[] b, int off, int len) throws IOException { - fOriginal.write('['); - fOriginal.write(b, off, len); - fOriginal.write(']'); - } - - } - - class NullInterceptor extends TerminalToRemoteInjectionOutputStream.Interceptor { - } - - public void testClose() throws IOException { - ByteArrayOutputStream bs = new ByteArrayOutputStream(); - try (TerminalToRemoteInjectionOutputStream s = new TerminalToRemoteInjectionOutputStream(bs)) { - s.write("begin:".getBytes(ENCODING)); - assertEquals("begin:", new String(bs.toByteArray(), ENCODING)); - OutputStream os1 = s.grabOutput(); - os1.write('x'); - s.write('A'); - os1.write('y'); - s.write('B'); - os1.close(); - - s.write('-'); - OutputStream os = s.grabOutput(); - // make sure the closed output does not inject anything - try { - os1.write('k'); - fail("..."); - } catch (Exception e) { - } - os.write('X'); - s.write('a'); - os.write('Y'); - // make sure the closed output does not inject anything - try { - os1.write('l'); - fail("..."); - } catch (Exception e) { - } - s.write('b'); - os.close(); - assertEquals("begin:xyAB-XYab", new String(bs.toByteArray(), ENCODING)); - } - } - - public void testFlush() { - } - - public void testWriteInt() throws IOException { - ByteArrayOutputStream bs = new ByteArrayOutputStream(); - TerminalToRemoteInjectionOutputStream s = new TerminalToRemoteInjectionOutputStream(bs); - s.write("begin:".getBytes(ENCODING)); - assertEquals("begin:", new String(bs.toByteArray(), ENCODING)); - OutputStream os = s.grabOutput(); - os.write('x'); - s.write('A'); - os.write('y'); - s.write('B'); - s.close(); - assertEquals("begin:xyAB", new String(bs.toByteArray(), ENCODING)); - - } - - public void testWriteByteArray() { - } - - public void testWriteByteArrayIntInt() { - } - - public void testGrabOutput() throws IOException { - ByteArrayOutputStream bs = new ByteArrayOutputStream(); - try (TerminalToRemoteInjectionOutputStream s = new TerminalToRemoteInjectionOutputStream(bs)) { - s.write("begin:".getBytes(ENCODING)); - assertEquals("begin:", new String(bs.toByteArray(), ENCODING)); - OutputStream os1 = s.grabOutput(); - OutputStream os2; - try { - os2 = s.grabOutput(); - fail("should fail until the foirst output is closed"); - } catch (IOException e) { - } - os1.close(); - os2 = s.grabOutput(); - assertEquals("begin:", new String(bs.toByteArray(), ENCODING)); - os2.write("Test".getBytes(ENCODING)); - assertEquals("begin:Test", new String(bs.toByteArray(), ENCODING)); - s.write(" west".getBytes(ENCODING)); - assertEquals("begin:Test", new String(bs.toByteArray(), ENCODING)); - os2.write(" the".getBytes(ENCODING)); - assertEquals("begin:Test the", new String(bs.toByteArray(), ENCODING)); - os2.close(); - assertEquals("begin:Test the west", new String(bs.toByteArray(), ENCODING)); - s.write('!'); - assertEquals("begin:Test the west!", new String(bs.toByteArray(), ENCODING)); - } - } - - public void testGrabOutputWithCleverInterceptor() throws IOException { - ByteArrayOutputStream bs = new ByteArrayOutputStream(); - try (TerminalToRemoteInjectionOutputStream s = new TerminalToRemoteInjectionOutputStream(bs)) { - s.write("begin:".getBytes(ENCODING)); - assertEquals("begin:", new String(bs.toByteArray(), ENCODING)); - // the injector escapes the output coming from the main stream - OutputStream os = s.grabOutput(new CleverInterceptor()); - assertEquals("begin:", new String(bs.toByteArray(), ENCODING)); - os.write("Test".getBytes(ENCODING)); - assertEquals("begin:Test", new String(bs.toByteArray(), ENCODING)); - s.write(" west".getBytes(ENCODING)); - assertEquals("begin:Test[ west]", new String(bs.toByteArray(), ENCODING)); - os.write(" the".getBytes(ENCODING)); - assertEquals("begin:Test[ west] the", new String(bs.toByteArray(), ENCODING)); - s.write('x'); - assertEquals("begin:Test[ west] the[x]", new String(bs.toByteArray(), ENCODING)); - os.close(); - assertEquals("begin:Test[ west] the[x]", new String(bs.toByteArray(), ENCODING)); - s.write('!'); - assertEquals("begin:Test[ west] the[x]!", new String(bs.toByteArray(), ENCODING)); - } - } - - public void testGrabOutputWithNullInterceptor() throws IOException { - ByteArrayOutputStream bs = new ByteArrayOutputStream(); - try (TerminalToRemoteInjectionOutputStream s = new TerminalToRemoteInjectionOutputStream(bs)) { - s.write("begin:".getBytes(ENCODING)); - assertEquals("begin:", new String(bs.toByteArray(), ENCODING)); - // bytes written to the main stream are ignored while the injector - // is active - OutputStream os = s.grabOutput(new NullInterceptor()); - assertEquals("begin:", new String(bs.toByteArray(), ENCODING)); - os.write("Test".getBytes(ENCODING)); - assertEquals("begin:Test", new String(bs.toByteArray(), ENCODING)); - s.write(" west".getBytes(ENCODING)); - assertEquals("begin:Test", new String(bs.toByteArray(), ENCODING)); - os.write(" the".getBytes(ENCODING)); - assertEquals("begin:Test the", new String(bs.toByteArray(), ENCODING)); - s.write('x'); - assertEquals("begin:Test the", new String(bs.toByteArray(), ENCODING)); - os.close(); - assertEquals("begin:Test the", new String(bs.toByteArray(), ENCODING)); - s.write('!'); - assertEquals("begin:Test the!", new String(bs.toByteArray(), ENCODING)); - } - - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/emulator/AllTestSuite.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/emulator/AllTestSuite.java deleted file mode 100644 index 8a99236f846..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/emulator/AllTestSuite.java +++ /dev/null @@ -1,38 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Martin Oberhuber (Wind River) - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.internal.terminal.emulator; - -import junit.framework.Test; -import junit.framework.TestCase; -import junit.framework.TestSuite; - -/** - * Terminal emulator test cases. - * Runs in emulator package to allow access to default visible items. - */ -public class AllTestSuite extends TestCase { - public AllTestSuite() { - super(null); - } - - public AllTestSuite(String name) { - super(name); - } - - public static Test suite() { - TestSuite suite = new TestSuite(AllTestSuite.class.getName()); - suite.addTestSuite(VT100EmulatorBackendTest.class); - return suite; - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/emulator/MockTerminalControlForText.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/emulator/MockTerminalControlForText.java deleted file mode 100644 index b8c81ccd1a1..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/emulator/MockTerminalControlForText.java +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2021 Kichwa Coders Canada Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - *******************************************************************************/ -package org.eclipse.tm.internal.terminal.emulator; - -import java.io.OutputStream; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import org.eclipse.tm.internal.terminal.control.ITerminalListener3.TerminalTitleRequestor; -import org.eclipse.tm.internal.terminal.control.impl.ITerminalControlForText; -import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector; -import org.eclipse.tm.internal.terminal.provisional.api.TerminalState; - -public class MockTerminalControlForText implements ITerminalControlForText { - private List allTitles = new ArrayList<>(); - - @Override - public TerminalState getState() { - throw new UnsupportedOperationException(); - } - - @Override - public void setState(TerminalState state) { - throw new UnsupportedOperationException(); - } - - @Override - public void setTerminalTitle(String title, TerminalTitleRequestor requestor) { - if (requestor == TerminalTitleRequestor.ANSI) { - allTitles.add(title); - } - } - - public List getAllTitles() { - return Collections.unmodifiableList(allTitles); - } - - @Override - public ITerminalConnector getTerminalConnector() { - return null; - } - - @Override - public OutputStream getOutputStream() { - throw new UnsupportedOperationException(); - - } - - @Override - public void enableApplicationCursorKeys(boolean enable) { - throw new UnsupportedOperationException(); - - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/emulator/VT100EmulatorBackendTest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/emulator/VT100EmulatorBackendTest.java deleted file mode 100644 index de6bec1f900..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/emulator/VT100EmulatorBackendTest.java +++ /dev/null @@ -1,949 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - * Martin Oberhuber (Wind River) - [168197] Fix Terminal for CDC-1.1/Foundation-1.1 - * Anton Leherbauer (Wind River) - [453393] Add support for copying wrapped lines without line break - * Anton Leherbauer (Wind River) - [458218] Add support for ANSI insert mode - * Anton Leherbauer (Wind River) - [458402] Add support for scroll up/down and scroll region - *******************************************************************************/ -package org.eclipse.tm.internal.terminal.emulator; - -import static org.eclipse.tm.terminal.model.TerminalColor.BLACK; -import static org.eclipse.tm.terminal.model.TerminalColor.WHITE; - -import org.eclipse.tm.internal.terminal.model.TerminalTextDataStore; -import org.eclipse.tm.internal.terminal.model.TerminalTextTestHelper; -import org.eclipse.tm.terminal.model.ITerminalTextData; -import org.eclipse.tm.terminal.model.ITerminalTextDataReadOnly; -import org.eclipse.tm.terminal.model.TerminalStyle; - -import junit.framework.TestCase; - -public class VT100EmulatorBackendTest extends TestCase { - - protected IVT100EmulatorBackend makeBakend(ITerminalTextData term) { - return new VT100EmulatorBackend(term); - } - - protected ITerminalTextData makeITerminalTextData() { - return new TerminalTextDataStore(); - } - - protected String toSimple(ITerminalTextData term) { - return TerminalTextTestHelper.toSimple(term); - } - - protected String toMultiLineText(ITerminalTextDataReadOnly term) { - return TerminalTextTestHelper.toMultiLineText(term); - } - - protected void fill(ITerminalTextData term, String s) { - TerminalTextTestHelper.fill(term, s); - } - - protected void fillSimple(ITerminalTextData term, String s) { - TerminalTextTestHelper.fillSimple(term, s); - } - - /** - * Used for multi line text - * @param expected - * @param actual - */ - protected void assertEqualsTerm(String expected, String actual) { - assertEquals(expected.replace(' ', '.'), actual.replace('\000', '.')); - } - - /** - * Used for simple text - * @param expected - * @param actual - */ - protected void assertEqualsSimple(String expected, String actual) { - assertEquals(-1, actual.indexOf('\n')); - assertEquals(expected, actual); - } - - public void testClearAll() { - ITerminalTextData term = makeITerminalTextData(); - IVT100EmulatorBackend vt100 = makeBakend(term); - vt100.setDimensions(3, 4); - fill(term, "0000\n" + "1111\n" + "2222\n" + "3333\n" + "4444\n" + "5555"); - vt100.clearAll(); - assertEqualsTerm(" \n" + " \n" + " ", toMultiLineText(term)); - } - - public void testSetDimensions() { - ITerminalTextData term = makeITerminalTextData(); - IVT100EmulatorBackend vt100 = makeBakend(term); - String s = "0000\n" + "1111\n" + "2222\n" + "3333\n" + "4444\n" + "5555"; - fill(term, s); - vt100.setDimensions(3, 4); - assertEquals(3, vt100.getLines()); - assertEquals(4, vt100.getColumns()); - assertEqualsTerm(s, toMultiLineText(term)); - - vt100.setCursor(0, 2); - vt100.setDimensions(2, 4); - assertEquals(0, vt100.getCursorLine()); - assertEquals(2, vt100.getCursorColumn()); - - vt100.setCursor(0, 2); - vt100.setDimensions(5, 4); - assertEquals(3, vt100.getCursorLine()); - assertEquals(2, vt100.getCursorColumn()); - - assertEqualsTerm(s, toMultiLineText(term)); - - vt100.setCursor(0, 3); - vt100.setDimensions(5, 2); - assertEquals(0, vt100.getCursorLine()); - assertEquals(1, vt100.getCursorColumn()); - } - - public void testToAbsoluteLine() { - ITerminalTextData term = makeITerminalTextData(); - VT100EmulatorBackend vt100 = new VT100EmulatorBackend(term); - vt100.setDimensions(2, 3); - assertEquals(vt100.toAbsoluteLine(0), 0); - // TODO - term = makeITerminalTextData(); - vt100 = new VT100EmulatorBackend(term); - vt100.setDimensions(1, 10); - assertEquals(vt100.toAbsoluteLine(0), 0); - } - - public void testInsertCharacters() { - ITerminalTextData term = makeITerminalTextData(); - IVT100EmulatorBackend vt100 = makeBakend(term); - vt100.setDimensions(3, 4); - String s = "aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + "1234\n" + "4567\n" + "9012"; - fill(term, s); - vt100.setCursor(0, 0); - vt100.insertCharacters(1); - assertEqualsTerm("aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + " 123\n" + "4567\n" + "9012", - toMultiLineText(term)); - - fill(term, s); - vt100.setCursor(1, 1); - vt100.insertCharacters(1); - assertEqualsTerm("aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + "1234\n" + "4 56\n" + "9012", - toMultiLineText(term)); - - fill(term, s); - vt100.setCursor(1, 1); - vt100.insertCharacters(2); - assertEqualsTerm("aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + "1234\n" + "4 5\n" + "9012", - toMultiLineText(term)); - - vt100.setDimensions(1, 10); - fill(term, "0123456789"); - vt100.setCursor(0, 0); - vt100.insertCharacters(10); - assertEqualsTerm(" ", toMultiLineText(term)); - - vt100.setDimensions(1, 10); - fill(term, "0123456789"); - vt100.setCursor(0, 0); - vt100.insertCharacters(14); - assertEqualsTerm(" ", toMultiLineText(term)); - - vt100.setDimensions(1, 10); - fill(term, "0123456789"); - vt100.setCursor(0, 3); - vt100.insertCharacters(14); - assertEqualsTerm("012 ", toMultiLineText(term)); - - vt100.setDimensions(1, 10); - fill(term, "0123456789"); - vt100.setCursor(0, 3); - vt100.insertCharacters(0); - assertEqualsTerm("0123456789", toMultiLineText(term)); - - vt100.setDimensions(1, 10); - fill(term, "0123456789"); - vt100.setCursor(0, 3); - vt100.insertCharacters(2); - assertEqualsTerm("012 34567", toMultiLineText(term)); - } - - public void testEraseToEndOfScreen() { - ITerminalTextData term = makeITerminalTextData(); - IVT100EmulatorBackend vt100 = makeBakend(term); - vt100.setDimensions(3, 4); - String s = "aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + "0123\n" + "4567\n" + "8901"; - fill(term, s); - vt100.setCursor(0, 0); - vt100.eraseToEndOfScreen(); - assertEquals(0, vt100.getCursorLine()); - assertEquals(0, vt100.getCursorColumn()); - assertEqualsTerm("aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + " \n" + " \n" + " ", - toMultiLineText(term)); - - fill(term, s); - vt100.setCursor(1, 0); - vt100.eraseToEndOfScreen(); - assertEquals(1, vt100.getCursorLine()); - assertEquals(0, vt100.getCursorColumn()); - assertEqualsTerm("aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + "0123\n" + " \n" + " ", - toMultiLineText(term)); - - fill(term, s); - vt100.setCursor(1, 1); - vt100.eraseToEndOfScreen(); - assertEquals(1, vt100.getCursorLine()); - assertEquals(1, vt100.getCursorColumn()); - assertEqualsTerm("aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + "0123\n" + "4 \n" + " ", - toMultiLineText(term)); - - fill(term, s); - vt100.setCursor(1, 4); - assertEquals(1, vt100.getCursorLine()); - assertEquals(3, vt100.getCursorColumn()); - vt100.eraseToEndOfScreen(); - assertEquals(1, vt100.getCursorLine()); - assertEquals(3, vt100.getCursorColumn()); - assertEqualsTerm("aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + "0123\n" + "456.\n" + " ", - toMultiLineText(term)); - - fill(term, s); - vt100.setCursor(1, 5); - vt100.eraseToEndOfScreen(); - assertEquals(1, vt100.getCursorLine()); - assertEquals(3, vt100.getCursorColumn()); - assertEqualsTerm("aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + "0123\n" + "456.\n" + " ", - toMultiLineText(term)); - - fill(term, s); - vt100.setCursor(2, 3); - vt100.eraseToEndOfScreen(); - assertEquals(2, vt100.getCursorLine()); - assertEquals(3, vt100.getCursorColumn()); - assertEqualsTerm("aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + "0123\n" + "4567\n" + "890 ", - toMultiLineText(term)); - - fill(term, s); - vt100.setCursor(2, 5); - vt100.eraseToEndOfScreen(); - assertEquals(2, vt100.getCursorLine()); - assertEquals(3, vt100.getCursorColumn()); - assertEqualsTerm("aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + "0123\n" + "4567\n" + "890.", - toMultiLineText(term)); - } - - public void testEraseToCursor() { - ITerminalTextData term = makeITerminalTextData(); - IVT100EmulatorBackend vt100 = makeBakend(term); - vt100.setDimensions(3, 4); - String s = "aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + "0123\n" + "4567\n" + "8901"; - fill(term, s); - vt100.setCursor(0, 0); - vt100.eraseToCursor(); - assertEquals(0, vt100.getCursorLine()); - assertEquals(0, vt100.getCursorColumn()); - assertEqualsTerm("aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + " 123\n" + "4567\n" + "8901", - toMultiLineText(term)); - - fill(term, s); - vt100.setCursor(1, 0); - vt100.eraseToCursor(); - assertEquals(1, vt100.getCursorLine()); - assertEquals(0, vt100.getCursorColumn()); - assertEqualsTerm("aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + " \n" + " 567\n" + "8901", - toMultiLineText(term)); - - fill(term, s); - vt100.setCursor(1, 1); - vt100.eraseToCursor(); - assertEquals(1, vt100.getCursorLine()); - assertEquals(1, vt100.getCursorColumn()); - assertEqualsTerm("aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + " \n" + " 67\n" + "8901", - toMultiLineText(term)); - - fill(term, s); - vt100.setCursor(1, 4); - vt100.eraseToCursor(); - assertEquals(1, vt100.getCursorLine()); - assertEquals(3, vt100.getCursorColumn()); - assertEqualsTerm("aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + " \n" + " \n" + "8901", - toMultiLineText(term)); - - fill(term, s); - vt100.setCursor(1, 5); - vt100.eraseToCursor(); - assertEquals(1, vt100.getCursorLine()); - assertEquals(3, vt100.getCursorColumn()); - assertEqualsTerm("aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + " \n" + " \n" + "8901", - toMultiLineText(term)); - - fill(term, s); - vt100.setCursor(2, 3); - vt100.eraseToCursor(); - assertEquals(2, vt100.getCursorLine()); - assertEquals(3, vt100.getCursorColumn()); - assertEqualsTerm("aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + " \n" + " \n" + " ", - toMultiLineText(term)); - - fill(term, s); - vt100.setCursor(2, 5); - vt100.eraseToCursor(); - assertEquals(2, vt100.getCursorLine()); - assertEquals(3, vt100.getCursorColumn()); - assertEqualsTerm("aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + " \n" + " \n" + " ", - toMultiLineText(term)); - } - - public void testEraseAll() { - ITerminalTextData term = makeITerminalTextData(); - IVT100EmulatorBackend vt100 = makeBakend(term); - vt100.setDimensions(3, 4); - fill(term, "0000\n" + "1111\n" + "2222\n" + "3333\n" + "4444\n" + "5555"); - vt100.eraseAll(); - assertEqualsTerm("0000\n" + "1111\n" + "2222\n" + " \n" + " \n" + " ", toMultiLineText(term)); - } - - public void testEraseLine() { - String s = "abcde\n" + "fghij\n" + "klmno\n" + "pqrst\n" + "uvwxy\n" + "zABCD\n" + "EFGHI"; - - ITerminalTextData term = makeITerminalTextData(); - IVT100EmulatorBackend vt100 = makeBakend(term); - - vt100.setDimensions(3, 5); - fill(term, s); - vt100.setCursor(0, 3); - vt100.eraseLine(); - assertEquals(0, vt100.getCursorLine()); - assertEquals(3, vt100.getCursorColumn()); - assertEqualsTerm("abcde\n" + "fghij\n" + "klmno\n" + "pqrst\n" + " \n" + "zABCD\n" + "EFGHI", - toMultiLineText(term)); - - vt100.setDimensions(3, 5); - fill(term, s); - vt100.setCursor(2, 3); - vt100.eraseLine(); - assertEquals(2, vt100.getCursorLine()); - assertEquals(3, vt100.getCursorColumn()); - assertEqualsTerm("abcde\n" + "fghij\n" + "klmno\n" + "pqrst\n" + "uvwxy\n" + "zABCD\n" + " ", - toMultiLineText(term)); - } - - public void testEraseLineToEnd() { - String s = "abcde\n" + "fghij\n" + "klmno\n" + "pqrst\n" + "uvwxy\n" + "zABCD\n" + "EFGHI"; - - ITerminalTextData term = makeITerminalTextData(); - IVT100EmulatorBackend vt100 = makeBakend(term); - - vt100.setDimensions(3, 5); - fill(term, s); - vt100.setCursor(0, 3); - vt100.eraseLineToEnd(); - assertEquals(0, vt100.getCursorLine()); - assertEquals(3, vt100.getCursorColumn()); - assertEqualsTerm("abcde\n" + "fghij\n" + "klmno\n" + "pqrst\n" + "uvw \n" + "zABCD\n" + "EFGHI", - toMultiLineText(term)); - - vt100.setDimensions(3, 5); - fill(term, s); - vt100.setCursor(0, 0); - vt100.eraseLineToEnd(); - assertEquals(0, vt100.getCursorLine()); - assertEquals(0, vt100.getCursorColumn()); - assertEqualsTerm("abcde\n" + "fghij\n" + "klmno\n" + "pqrst\n" + " \n" + "zABCD\n" + "EFGHI", - toMultiLineText(term)); - - vt100.setDimensions(3, 5); - fill(term, s); - vt100.setCursor(2, 3); - vt100.eraseLineToEnd(); - assertEquals(2, vt100.getCursorLine()); - assertEquals(3, vt100.getCursorColumn()); - assertEqualsTerm("abcde\n" + "fghij\n" + "klmno\n" + "pqrst\n" + "uvwxy\n" + "zABCD\n" + "EFG ", - toMultiLineText(term)); - vt100.setDimensions(3, 5); - fill(term, s); - - vt100.setCursor(2, 4); - vt100.eraseLineToEnd(); - assertEquals(2, vt100.getCursorLine()); - assertEquals(4, vt100.getCursorColumn()); - assertEqualsTerm("abcde\n" + "fghij\n" + "klmno\n" + "pqrst\n" + "uvwxy\n" + "zABCD\n" + "EFGH ", - toMultiLineText(term)); - - vt100.setCursor(2, 5); - vt100.eraseLineToEnd(); - assertEquals(2, vt100.getCursorLine()); - assertEquals(4, vt100.getCursorColumn()); - assertEqualsTerm("abcde\n" + "fghij\n" + "klmno\n" + "pqrst\n" + "uvwxy\n" + "zABCD\n" + "EFGH ", - toMultiLineText(term)); - - } - - public void testEraseLineToCursor() { - String s = "abcde\n" + "fghij\n" + "klmno\n" + "pqrst\n" + "uvwxy\n" + "zABCD\n" + "EFGHI"; - - ITerminalTextData term = makeITerminalTextData(); - IVT100EmulatorBackend vt100 = makeBakend(term); - - vt100.setDimensions(3, 5); - fill(term, s); - vt100.setCursor(0, 3); - vt100.eraseLineToCursor(); - assertEquals(0, vt100.getCursorLine()); - assertEquals(3, vt100.getCursorColumn()); - assertEqualsTerm("abcde\n" + "fghij\n" + "klmno\n" + "pqrst\n" + " y\n" + "zABCD\n" + "EFGHI", - toMultiLineText(term)); - - vt100.setDimensions(3, 5); - fill(term, s); - vt100.setCursor(0, 0); - vt100.eraseLineToCursor(); - assertEquals(0, vt100.getCursorLine()); - assertEquals(0, vt100.getCursorColumn()); - assertEqualsTerm("abcde\n" + "fghij\n" + "klmno\n" + "pqrst\n" + " vwxy\n" + "zABCD\n" + "EFGHI", - toMultiLineText(term)); - - vt100.setDimensions(3, 5); - fill(term, s); - vt100.setCursor(2, 3); - vt100.eraseLineToCursor(); - assertEquals(2, vt100.getCursorLine()); - assertEquals(3, vt100.getCursorColumn()); - assertEqualsTerm("abcde\n" + "fghij\n" + "klmno\n" + "pqrst\n" + "uvwxy\n" + "zABCD\n" + " I", - toMultiLineText(term)); - vt100.setDimensions(3, 5); - fill(term, s); - - vt100.setCursor(2, 4); - vt100.eraseLineToCursor(); - assertEquals(2, vt100.getCursorLine()); - assertEquals(4, vt100.getCursorColumn()); - assertEqualsTerm("abcde\n" + "fghij\n" + "klmno\n" + "pqrst\n" + "uvwxy\n" + "zABCD\n" + " ", - toMultiLineText(term)); - - vt100.setCursor(2, 5); - vt100.eraseLineToCursor(); - assertEquals(2, vt100.getCursorLine()); - assertEquals(4, vt100.getCursorColumn()); - assertEqualsTerm("abcde\n" + "fghij\n" + "klmno\n" + "pqrst\n" + "uvwxy\n" + "zABCD\n" + " ", - toMultiLineText(term)); - - } - - public void testInsertLines() { - ITerminalTextData term = makeITerminalTextData(); - IVT100EmulatorBackend vt100 = makeBakend(term); - String s = "0000\n" + "1111\n" + "2222\n" + "3333\n" + "4444\n" + "5555"; - vt100.setDimensions(3, 4); - fill(term, s); - vt100.setCursor(0, 0); - vt100.insertLines(1); - assertEqualsTerm("0000\n" + "1111\n" + "2222\n" + " \n" + "3333\n" + "4444", toMultiLineText(term)); - - fill(term, s); - vt100.setCursor(1, 0); - vt100.insertLines(1); - assertEqualsTerm("0000\n" + "1111\n" + "2222\n" + "3333\n" + " \n" + "4444", toMultiLineText(term)); - - fill(term, s); - vt100.setCursor(1, 0); - vt100.insertLines(2); - assertEqualsTerm("0000\n" + "1111\n" + "2222\n" + "3333\n" + " \n" + " ", toMultiLineText(term)); - - fill(term, s); - vt100.setCursor(1, 3); - vt100.insertLines(2); - assertEqualsTerm("0000\n" + "1111\n" + "2222\n" + "3333\n" + " \n" + " ", toMultiLineText(term)); - - vt100.setDimensions(6, 4); - fill(term, s); - vt100.setCursor(1, 3); - vt100.insertLines(2); - assertEqualsTerm("0000\n" + " \n" + " \n" + "1111\n" + "2222\n" + "3333", toMultiLineText(term)); - - vt100.setDimensions(6, 4); - fill(term, s); - vt100.setCursor(1, 3); - vt100.insertLines(7); - assertEqualsTerm("0000\n" + " \n" + " \n" + " \n" + " \n" + " ", toMultiLineText(term)); - - vt100.setDimensions(6, 4); - fill(term, s); - vt100.setCursor(0, 0); - vt100.insertLines(7); - assertEqualsTerm(" \n" + " \n" + " \n" + " \n" + " \n" + " ", toMultiLineText(term)); - - vt100.setDimensions(6, 4); - fill(term, s); - vt100.setCursor(0, 0); - vt100.insertLines(5); - assertEqualsTerm(" \n" + " \n" + " \n" + " \n" + " \n" + "0000", toMultiLineText(term)); - } - - public void testDeleteCharacters() { - ITerminalTextData term = makeITerminalTextData(); - IVT100EmulatorBackend vt100 = makeBakend(term); - vt100.setDimensions(3, 4); - String s = "aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + "1234\n" + "4567\n" + "9012"; - fill(term, s); - vt100.setCursor(0, 0); - vt100.deleteCharacters(1); - assertEqualsTerm("aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + "234 \n" + "4567\n" + "9012", - toMultiLineText(term)); - - fill(term, s); - vt100.setCursor(1, 1); - vt100.deleteCharacters(1); - assertEqualsTerm("aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + "1234\n" + "467 \n" + "9012", - toMultiLineText(term)); - - fill(term, s); - vt100.setCursor(1, 1); - vt100.deleteCharacters(2); - assertEqualsTerm("aaaa\n" + "bbbb\n" + "cccc\n" + "dddd\n" + "eeee\n" + "ffff\n" + "1234\n" + "47 \n" + "9012", - toMultiLineText(term)); - - vt100.setDimensions(1, 10); - fill(term, "0123456789"); - vt100.setCursor(0, 0); - vt100.deleteCharacters(10); - assertEqualsTerm(" ", toMultiLineText(term)); - - vt100.setDimensions(1, 10); - fill(term, "0123456789"); - vt100.setCursor(0, 0); - vt100.deleteCharacters(14); - assertEqualsTerm(" ", toMultiLineText(term)); - - vt100.setDimensions(1, 10); - fill(term, "0123456789"); - vt100.setCursor(0, 3); - vt100.deleteCharacters(0); - assertEqualsTerm("0123456789", toMultiLineText(term)); - - vt100.setDimensions(1, 10); - fill(term, "0123456789"); - vt100.setCursor(0, 3); - vt100.deleteCharacters(2); - assertEqualsTerm("01256789 ", toMultiLineText(term)); - - vt100.setDimensions(1, 10); - fill(term, "0123456789"); - vt100.setCursor(0, 3); - vt100.deleteCharacters(14); - assertEqualsTerm("012 ", toMultiLineText(term)); - - } - - public void testDeleteLines() { - ITerminalTextData term = makeITerminalTextData(); - IVT100EmulatorBackend vt100 = makeBakend(term); - String s = "0000\n" + "1111\n" + "2222\n" + "3333\n" + "4444\n" + "5555"; - vt100.setDimensions(3, 4); - fill(term, s); - vt100.setCursor(0, 0); - vt100.deleteLines(1); - assertEqualsTerm("0000\n" + "1111\n" + "2222\n" + "4444\n" + "5555\n" + " ", toMultiLineText(term)); - - fill(term, s); - vt100.setCursor(1, 0); - vt100.deleteLines(1); - assertEqualsTerm("0000\n" + "1111\n" + "2222\n" + "3333\n" + "5555\n" + " ", toMultiLineText(term)); - - fill(term, s); - vt100.setCursor(1, 0); - vt100.deleteLines(2); - assertEqualsTerm("0000\n" + "1111\n" + "2222\n" + "3333\n" + " \n" + " ", toMultiLineText(term)); - - fill(term, s); - vt100.setCursor(1, 3); - vt100.deleteLines(2); - assertEqualsTerm("0000\n" + "1111\n" + "2222\n" + "3333\n" + " \n" + " ", toMultiLineText(term)); - - vt100.setDimensions(6, 4); - fill(term, s); - vt100.setCursor(1, 3); - vt100.deleteLines(2); - assertEqualsTerm("0000\n" + "3333\n" + "4444\n" + "5555\n" + " \n" + " ", toMultiLineText(term)); - - vt100.setDimensions(6, 4); - fill(term, s); - vt100.setCursor(1, 3); - vt100.deleteLines(7); - assertEqualsTerm("0000\n" + " \n" + " \n" + " \n" + " \n" + " ", toMultiLineText(term)); - - vt100.setDimensions(6, 4); - fill(term, s); - vt100.setCursor(0, 0); - vt100.deleteLines(7); - assertEqualsTerm(" \n" + " \n" + " \n" + " \n" + " \n" + " ", toMultiLineText(term)); - - vt100.setDimensions(6, 4); - fill(term, s); - vt100.setCursor(0, 0); - vt100.deleteLines(5); - assertEqualsTerm("5555\n" + " \n" + " \n" + " \n" + " \n" + " ", toMultiLineText(term)); - } - - public void testGetDefaultStyle() { - ITerminalTextData term = makeITerminalTextData(); - IVT100EmulatorBackend vt100 = makeBakend(term); - TerminalStyle style = TerminalStyle.getStyle(WHITE, BLACK); - vt100.setDefaultStyle(style); - assertSame(style, vt100.getDefaultStyle()); - TerminalStyle style2 = style.setBold(true); - vt100.setDefaultStyle(style2); - assertSame(style2, vt100.getDefaultStyle()); - } - - public void testGetStyle() { - ITerminalTextData term = makeITerminalTextData(); - IVT100EmulatorBackend vt100 = makeBakend(term); - TerminalStyle style = TerminalStyle.getStyle(WHITE, BLACK); - vt100.setStyle(style); - assertSame(style, vt100.getStyle()); - TerminalStyle style2 = style.setBold(true); - vt100.setStyle(style2); - assertSame(style2, vt100.getStyle()); - } - - public void testAppendString() { - ITerminalTextData term = makeITerminalTextData(); - IVT100EmulatorBackend vt100 = makeBakend(term); - term.setMaxHeight(6); - vt100.setDimensions(3, 4); - vt100.setCursor(0, 0); - assertEqualsTerm(" \n" + " \n" + " ", toMultiLineText(term)); - vt100.appendString("012"); - assertEqualsTerm("012 \n" + " \n" + " ", toMultiLineText(term)); - assertEquals(0, vt100.getCursorLine()); - assertEquals(3, vt100.getCursorColumn()); - vt100.appendString("3"); - assertEqualsTerm("0123\n" + " \n" + " ", toMultiLineText(term)); - assertEquals(1, vt100.getCursorLine()); - assertEquals(0, vt100.getCursorColumn()); - - vt100.appendString("567890"); - assertEqualsTerm("0123\n" + "5678\n" + "90 ", toMultiLineText(term)); - assertEquals(2, vt100.getCursorLine()); - assertEquals(2, vt100.getCursorColumn()); - - vt100.appendString("a"); - assertEqualsTerm("0123\n" + "5678\n" + "90a ", toMultiLineText(term)); - assertEquals(2, vt100.getCursorLine()); - assertEquals(3, vt100.getCursorColumn()); - - vt100.appendString("b"); - assertEqualsTerm("0123\n" + "5678\n" + "90ab\n" + " ", toMultiLineText(term)); - assertEquals(2, vt100.getCursorLine()); - assertEquals(0, vt100.getCursorColumn()); - - vt100.appendString("cd"); - assertEqualsTerm("0123\n" + "5678\n" + "90ab\n" + "cd ", toMultiLineText(term)); - assertEquals(2, vt100.getCursorLine()); - assertEquals(2, vt100.getCursorColumn()); - - vt100.appendString("efgh"); - assertEqualsTerm("0123\n" + "5678\n" + "90ab\n" + "cdef\n" + "gh ", toMultiLineText(term)); - assertEquals(2, vt100.getCursorLine()); - assertEquals(2, vt100.getCursorColumn()); - - vt100.appendString("ijklmnopqrstuvwx"); - assertEqualsTerm("cdef\n" + "ghij\n" + "klmn\n" + "opqr\n" + "stuv\n" + "wx ", toMultiLineText(term)); - assertEquals(2, vt100.getCursorLine()); - assertEquals(2, vt100.getCursorColumn()); - - vt100.setCursor(1, 1); - vt100.appendString("123"); - assertEqualsTerm("cdef\n" + "ghij\n" + "klmn\n" + "opqr\n" + "s123\n" + "wx ", toMultiLineText(term)); - assertEquals(2, vt100.getCursorLine()); - assertEquals(0, vt100.getCursorColumn()); - - vt100.setCursor(1, 1); - vt100.appendString("ABCDEFGHIJKL"); - assertEqualsTerm("klmn\n" + "opqr\n" + "sABC\n" + "DEFG\n" + "HIJK\n" + "L ", toMultiLineText(term)); - assertEquals(2, vt100.getCursorLine()); - assertEquals(1, vt100.getCursorColumn()); - } - - public void testProcessNewline() { - ITerminalTextData term = makeITerminalTextData(); - IVT100EmulatorBackend vt100 = makeBakend(term); - String s = "0000\n" + "1111\n" + "2222\n" + "3333\n" + "4444\n" + "5555"; - term.setMaxHeight(6); - vt100.setDimensions(3, 4); - vt100.setCursor(0, 0); - fill(term, s); - assertEquals(0, vt100.getCursorLine()); - assertEquals(0, vt100.getCursorColumn()); - vt100.processNewline(); - assertEqualsTerm(s, toMultiLineText(term)); - assertEquals(1, vt100.getCursorLine()); - assertEquals(0, vt100.getCursorColumn()); - vt100.setCursorColumn(3); - vt100.processNewline(); - assertEqualsTerm(s, toMultiLineText(term)); - assertEquals(2, vt100.getCursorLine()); - assertEquals(3, vt100.getCursorColumn()); - - vt100.processNewline(); - assertEqualsTerm("1111\n" + "2222\n" + "3333\n" + "4444\n" + "5555\n" + " ", toMultiLineText(term)); - assertEquals(2, vt100.getCursorLine()); - assertEquals(3, vt100.getCursorColumn()); - - vt100.processNewline(); - assertEqualsTerm("2222\n" + "3333\n" + "4444\n" + "5555\n" + " \n" + " ", toMultiLineText(term)); - assertEquals(2, vt100.getCursorLine()); - assertEquals(3, vt100.getCursorColumn()); - } - - public void testSetCursorLine() { - ITerminalTextData term = makeITerminalTextData(); - IVT100EmulatorBackend vt100 = makeBakend(term); - term.setMaxHeight(6); - vt100.setDimensions(3, 4); - // the cursor still at the beginning.... - assertEquals(0, vt100.getCursorLine()); - assertEquals(0, vt100.getCursorColumn()); - vt100.setCursor(0, 2); - vt100.setCursorLine(1); - assertEquals(1, vt100.getCursorLine()); - assertEquals(2, vt100.getCursorColumn()); - vt100.setCursor(0, -2); - vt100.setCursorLine(-1); - assertEquals(0, vt100.getCursorLine()); - assertEquals(0, vt100.getCursorColumn()); - vt100.setCursor(0, 10); - vt100.setCursorLine(10); - assertEquals(2, vt100.getCursorLine()); - assertEquals(3, vt100.getCursorColumn()); - } - - public void testSetCursorAndSetDimensions() { - ITerminalTextData term = makeITerminalTextData(); - IVT100EmulatorBackend vt100 = makeBakend(term); - term.setMaxHeight(10); - vt100.setDimensions(3, 4); - // the cursor still at the beginning.... - assertEquals(0, vt100.getCursorLine()); - assertEquals(0, vt100.getCursorColumn()); - vt100.setDimensions(6, 4); - assertEquals(0, vt100.getCursorLine()); - assertEquals(0, vt100.getCursorColumn()); - vt100.setCursor(2, 3); - vt100.setDimensions(8, 4); - assertEquals(2, vt100.getCursorLine()); - assertEquals(3, vt100.getCursorColumn()); - } - - public void testSetCursorColumn() { - ITerminalTextData term = makeITerminalTextData(); - IVT100EmulatorBackend vt100 = makeBakend(term); - term.setMaxHeight(6); - vt100.setDimensions(3, 4); - assertEquals(0, vt100.getCursorLine()); - assertEquals(0, vt100.getCursorColumn()); - vt100.setCursor(1, 0); - vt100.setCursorColumn(2); - assertEquals(1, vt100.getCursorLine()); - assertEquals(2, vt100.getCursorColumn()); - vt100.setCursor(-1, -2); - vt100.setCursorColumn(-2); - assertEquals(0, vt100.getCursorLine()); - assertEquals(0, vt100.getCursorColumn()); - vt100.setCursor(10, 0); - vt100.setCursorColumn(10); - assertEquals(2, vt100.getCursorLine()); - assertEquals(3, vt100.getCursorColumn()); - } - - public void testSetCursor() { - ITerminalTextData term = makeITerminalTextData(); - IVT100EmulatorBackend vt100 = makeBakend(term); - term.setMaxHeight(6); - vt100.setDimensions(3, 4); - assertEquals(0, vt100.getCursorLine()); - assertEquals(0, vt100.getCursorColumn()); - vt100.setCursor(0, 0); - assertEquals(0, vt100.getCursorLine()); - assertEquals(0, vt100.getCursorColumn()); - vt100.setCursor(1, 2); - assertEquals(1, vt100.getCursorLine()); - assertEquals(2, vt100.getCursorColumn()); - vt100.setCursor(-1, -2); - assertEquals(0, vt100.getCursorLine()); - assertEquals(0, vt100.getCursorColumn()); - vt100.setCursor(10, 10); - assertEquals(2, vt100.getCursorLine()); - assertEquals(3, vt100.getCursorColumn()); - } - - public void testVT100LineWrappingOn() { - ITerminalTextData term = makeITerminalTextData(); - IVT100EmulatorBackend vt100 = makeBakend(term); - term.setMaxHeight(10); - vt100.setDimensions(6, 4); - vt100.setVT100LineWrapping(true); - vt100.appendString("abcd"); - vt100.setCursorColumn(0); - vt100.processNewline(); - vt100.appendString("1234"); - vt100.setCursorColumn(0); - vt100.processNewline(); - assertEquals(2, vt100.getCursorLine()); - } - - public void testVT100LineWrappingOff() { - ITerminalTextData term = makeITerminalTextData(); - IVT100EmulatorBackend vt100 = makeBakend(term); - term.setMaxHeight(10); - vt100.setDimensions(6, 4); - vt100.setVT100LineWrapping(false); - vt100.appendString("abcd"); - vt100.setCursorColumn(0); - vt100.processNewline(); - vt100.appendString("1234"); - vt100.setCursorColumn(0); - vt100.processNewline(); - assertEquals(4, vt100.getCursorLine()); - } - - public void testWrappedLines() { - ITerminalTextData term = makeITerminalTextData(); - IVT100EmulatorBackend vt100 = makeBakend(term); - term.setMaxHeight(10); - vt100.setDimensions(6, 4); - vt100.setVT100LineWrapping(true); - vt100.appendString("abcd123"); - vt100.setCursorColumn(0); - vt100.processNewline(); - vt100.appendString("abc"); - vt100.setCursorColumn(0); - vt100.processNewline(); - vt100.appendString("1234abcd"); - assertEquals(4, vt100.getCursorLine()); - assertTrue(term.isWrappedLine(0)); - assertFalse(term.isWrappedLine(1)); - assertFalse(term.isWrappedLine(2)); - assertTrue(term.isWrappedLine(3)); - } - - public void testInsertMode() { - ITerminalTextData term = makeITerminalTextData(); - IVT100EmulatorBackend vt100 = makeBakend(term); - term.setMaxHeight(10); - vt100.setDimensions(4, 6); - // replace mode - vt100.appendString("123"); - vt100.setCursorColumn(0); - vt100.appendString("abc"); - assertEquals("abc", new String(term.getChars(0))); - vt100.clearAll(); - // insert mode - vt100.setCursorColumn(0); - vt100.appendString("123"); - vt100.setCursorColumn(0); - vt100.setInsertMode(true); - vt100.appendString("abc"); - vt100.setInsertMode(false); - assertEquals("abc123", new String(term.getChars(0))); - } - - public void testScrollRegion() { - ITerminalTextData term = makeITerminalTextData(); - IVT100EmulatorBackend vt100 = makeBakend(term); - term.setMaxHeight(10); - vt100.setDimensions(8, 6); - vt100.appendString("123"); - vt100.setCursorColumn(0); - vt100.processNewline(); - vt100.appendString("456"); - vt100.setCursorColumn(0); - vt100.processNewline(); - vt100.appendString("789"); - vt100.setCursorColumn(0); - vt100.processNewline(); - vt100.appendString("abc"); - vt100.setCursorColumn(0); - vt100.processNewline(); - vt100.appendString("def"); - vt100.setCursorColumn(0); - vt100.processNewline(); - vt100.appendString("ghi"); - - // test scroll within region - vt100.setCursorLine(1); - vt100.setScrollRegion(1, 4); - vt100.scrollUp(1); - assertEquals("123", new String(term.getChars(0))); - assertEquals("789", new String(term.getChars(1))); - assertEquals("abc", new String(term.getChars(2))); - assertEquals("def", new String(term.getChars(3))); - assertNull(term.getChars(4)); - assertEquals("ghi", new String(term.getChars(5))); - vt100.scrollDown(1); - assertEquals("123", new String(term.getChars(0))); - assertNull(term.getChars(1)); - assertEquals("789", new String(term.getChars(2))); - assertEquals("abc", new String(term.getChars(3))); - assertEquals("def", new String(term.getChars(4))); - assertEquals("ghi", new String(term.getChars(5))); - - // test scroll without region - vt100.setScrollRegion(-1, -1); - vt100.scrollDown(1); - assertNull(term.getChars(0)); - assertEquals("123", new String(term.getChars(1))); - assertNull(term.getChars(2)); - assertEquals("789", new String(term.getChars(3))); - assertEquals("abc", new String(term.getChars(4))); - assertEquals("def", new String(term.getChars(5))); - assertEquals("ghi", new String(term.getChars(6))); - vt100.scrollUp(1); - assertEquals("123", new String(term.getChars(0))); - assertNull(term.getChars(1)); - assertEquals("789", new String(term.getChars(2))); - assertEquals("abc", new String(term.getChars(3))); - assertEquals("def", new String(term.getChars(4))); - assertEquals("ghi", new String(term.getChars(5))); - - // test scroll by newline - vt100.setScrollRegion(1, 4); - vt100.setCursorLine(4); - vt100.processNewline(); - assertEquals("123", new String(term.getChars(0))); - assertEquals("789", new String(term.getChars(1))); - assertEquals("abc", new String(term.getChars(2))); - assertEquals("def", new String(term.getChars(3))); - assertNull(term.getChars(4)); - assertEquals("ghi", new String(term.getChars(5))); - } - - public void testEraseCharacters() { - ITerminalTextData term = makeITerminalTextData(); - IVT100EmulatorBackend vt100 = makeBakend(term); - vt100.setDimensions(4, 4); - String s = "aaaa\n" + "bcde\n" + "1234\n" + "5678"; - fill(term, s); - vt100.setCursor(0, 0); - vt100.eraseCharacters(1); - assertEqualsTerm(" aaa\n" + "bcde\n" + "1234\n" + "5678", toMultiLineText(term)); - - fill(term, s); - vt100.setCursor(1, 0); - vt100.eraseCharacters(1); - assertEqualsTerm("aaaa\n" + " cde\n" + "1234\n" + "5678", toMultiLineText(term)); - - fill(term, s); - vt100.setCursor(2, 1); - vt100.eraseCharacters(2); - assertEqualsTerm("aaaa\n" + "bcde\n" + "1 4\n" + "5678", toMultiLineText(term)); - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/emulator/VT100EmulatorTest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/emulator/VT100EmulatorTest.java deleted file mode 100644 index 66aa5941f0c..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/emulator/VT100EmulatorTest.java +++ /dev/null @@ -1,378 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2021 Kichwa Coders Canada Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - *******************************************************************************/ -package org.eclipse.tm.internal.terminal.emulator; - -import static org.junit.jupiter.api.Assertions.assertAll; -import static org.junit.jupiter.api.Assertions.assertEquals; - -import java.io.IOException; -import java.io.Reader; -import java.io.StringReader; -import java.util.ArrayList; -import java.util.List; -import java.util.StringJoiner; - -import org.eclipse.tm.internal.terminal.provisional.api.Logger; -import org.eclipse.tm.terminal.model.ITerminalTextData; -import org.eclipse.tm.terminal.model.TerminalTextDataFactory; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -public class VT100EmulatorTest { - - private static final int WINDOW_COLUMNS = 80; - private static final int WINDOW_LINES = 24; - private static final String CLEAR_CURSOR_TO_EOL = "\033[K"; - private static final String CURSOR_POSITION_TOP_LEFT = "\033[H"; - private static final String CLEAR_ENTIRE_SCREEN_AND_SCROLLBACK = "\033[3J"; - private static final String CLEAR_ENTIRE_SCREEN = "\033[2J"; - private static final String SCROLL_REVERSE = "\033M"; - - private static String TITLE_ST_BEL(String title) { - return "\033]0;" + title + "\007"; - } - - private static String TITLE_ST_ESC_BACKSLASH(String title) { - return "\033]0;" + title + "\033\\"; - } - - private static String TITLE(String title) { - return TITLE_ST_BEL(title); - } - - private static String SCROLL_REGION(int startRow, int endRow) { - return "\033[" + startRow + ";" + endRow + "r"; - } - - /** - * Set the cursor position to line/column. Note that this is the logical - * line and column, so 1, 1 is the top left. - */ - private static String CURSOR_POSITION(int line, int column) { - return "\033[" + line + ";" + column + "H"; - } - - @BeforeAll - public static void beforeAll() { - Logger.setUnderTest(true); - } - - @AfterAll - public static void afterAll() { - Logger.setUnderTest(false); - } - - private ITerminalTextData data; - - private MockTerminalControlForText control = new MockTerminalControlForText(); - - private VT100Emulator emulator; - - @BeforeEach - public void before() { - data = TerminalTextDataFactory.makeTerminalTextData(); - emulator = new VT100Emulator(data, control, null); - emulator.resetState(); - emulator.setDimensions(WINDOW_LINES, WINDOW_COLUMNS); - } - - private Reader input(String... input) { - StringReader reader = new StringReader(String.join("", input)); - emulator.setInputStreamReader(reader); - return reader; - } - - private void run(String... input) { - Reader reader = input(input); - emulator.processText(); - try { - assertEquals(-1, reader.read()); - } catch (IOException e) { - throw new RuntimeException("Wrap exception so that run can be called in functions", e); - } - } - - /** - * Convert the data's char arrays into a string that can be compared with - * an expected array of lines. Each line in the data has its \0 characters - * changed to spaces and then stripTrailing is run. - * - * @param expectedArray lines that are joined with \n before testing against actual - */ - private void assertTextEquals(String... expectedArray) { - int height = data.getHeight(); - StringJoiner sj = new StringJoiner("\n"); - for (int i = 0; i < height; i++) { - char[] chars = data.getChars(i); - String line = chars == null ? "" : new String(chars); - String lineCleanedup = line.replace('\0', ' '); - String stripTrailing = lineCleanedup.stripTrailing(); - sj.add(stripTrailing); - } - String expected = String.join("\n", expectedArray).stripTrailing(); - String actual = sj.toString().stripTrailing(); - assertEquals(expected, actual); - } - - private void assertTextEquals(List expected) { - assertTextEquals(expected.toArray(String[]::new)); - } - - private void assertCursorLocation(int line, int column) { - assertAll(() -> assertEquals(line, data.getCursorLine(), "cursor line"), - () -> assertEquals(column, data.getCursorColumn(), "cursor column")); - } - - /** - * This tests the test harness ({@link #assertTextEquals(String...)} as much as the code. - */ - @Test - public void testBasicOperaiion() { - assertAll(() -> assertCursorLocation(0, 0), () -> assertTextEquals("")); - run("Hello"); - assertAll(() -> assertCursorLocation(0, 5), () -> assertTextEquals("Hello")); - emulator.clearTerminal(); - assertAll(() -> assertCursorLocation(0, 0), () -> assertTextEquals("")); - - // test multiline - emulator.clearTerminal(); - run("Hello 1\r\nHello 2"); - // test both ways of asserting multiple lines - assertAll(() -> assertCursorLocation(1, 7), // - () -> assertTextEquals("Hello 1\nHello 2"), // - () -> assertTextEquals("Hello 1", "Hello 2")); - - // test with no carriage return - emulator.clearTerminal(); - run("Hello 1\nHello 2"); - assertTextEquals("Hello 1", " Hello 2"); - - // test \b backspace - emulator.clearTerminal(); - run("Hello 1"); - assertAll(() -> assertCursorLocation(0, 7), () -> assertTextEquals("Hello 1")); - run("\b\b"); - assertAll(() -> assertCursorLocation(0, 5), () -> assertTextEquals("Hello 1")); - run(CLEAR_CURSOR_TO_EOL); - assertAll(() -> assertCursorLocation(0, 5), () -> assertTextEquals("Hello")); - } - - @Test - public void testMultiline() { - List expected = new ArrayList<>(); - for (int i = 0; i < data.getHeight(); i++) { - String line = "Hello " + i; - expected.add(line); - run(line); - if (i != data.getHeight() - 1) { - run("\r\n"); - } - } - assertTextEquals(expected); - - // add the final newline and check that the first line has been scrolled away - run("\r\n"); - expected.remove(0); - assertTextEquals(expected); - } - - @Test - public void testScrollBack() { - data.setMaxHeight(1000); - List expected = new ArrayList<>(); - for (int i = 0; i < 1000; i++) { - String line = "Hello " + i; - run(line + "\r\n"); - expected.add(line); - } - expected.remove(0); - assertTextEquals(expected); - } - - @Test - public void testCursorPosition() { - run(CURSOR_POSITION_TOP_LEFT); - assertAll(() -> assertCursorLocation(0, 0), () -> assertTextEquals("")); - run("Hello"); - assertAll(() -> assertCursorLocation(0, 5), () -> assertTextEquals("Hello")); - run(CURSOR_POSITION_TOP_LEFT); - assertAll(() -> assertCursorLocation(0, 0), () -> assertTextEquals("Hello")); - run(CURSOR_POSITION(2, 2)); - assertAll(() -> assertCursorLocation(1, 1), () -> assertTextEquals("Hello")); - emulator.clearTerminal(); - - data.setMaxHeight(1000); - List expected = new ArrayList<>(); - for (int i = 0; i < WINDOW_LINES; i++) { - String line = "Hello " + i; - run(line + "\r\n"); - expected.add(line); - } - assertAll(() -> assertCursorLocation(WINDOW_LINES, 0), () -> assertTextEquals(expected)); - run(CURSOR_POSITION_TOP_LEFT); - // because we added WINDOW_LINES number of lines, and ended it with a \r\n the first - // line we added is now in the scrollback, so the cursor is at line 1 - assertAll(() -> assertCursorLocation(1, 0), () -> assertTextEquals(expected)); - run("Bye \r\n"); - expected.set(1, "Bye"); - assertAll(() -> assertCursorLocation(2, 0), () -> assertTextEquals(expected)); - run(CURSOR_POSITION_TOP_LEFT); - assertAll(() -> assertCursorLocation(1, 0), () -> assertTextEquals(expected)); - run(CURSOR_POSITION(2, 2)); - assertAll(() -> assertCursorLocation(2, 1), () -> assertTextEquals(expected)); - } - - @Test - public void testTitle() { - run( // - TITLE("TITLE1"), // - "HELLO", // - TITLE("TITLE2")); - assertAll(() -> assertTextEquals("HELLO"), - () -> assertEquals(List.of("TITLE1", "TITLE2"), control.getAllTitles())); - } - - @Test - public void testE3ClearScreenAndScrollback() { - data.setMaxHeight(1000); - List expected = new ArrayList<>(); - for (int i = 0; i < 1000; i++) { - String line = "Hello " + i; - run(line + "\r\n"); - expected.add(line); - } - expected.remove(0); - assertAll(() -> assertCursorLocation(999, 0), () -> assertTextEquals(expected)); - run(CLEAR_ENTIRE_SCREEN_AND_SCROLLBACK); - assertAll(() -> assertTextEquals("")); - } - - /** - * Runs what "clear" command does on modern Linux installs, including E3 extension - */ - @Test - public void testClear() { - data.setMaxHeight(1000); - List expected = new ArrayList<>(); - for (int i = 0; i < 1000; i++) { - String line = "Hello " + i; - run(line + "\r\n"); - expected.add(line); - } - expected.remove(0); - assertAll(() -> assertCursorLocation(999, 0), () -> assertTextEquals(expected)); - run(CURSOR_POSITION_TOP_LEFT + CLEAR_ENTIRE_SCREEN + CLEAR_ENTIRE_SCREEN_AND_SCROLLBACK); - assertAll(() -> assertCursorLocation(0, 0), () -> assertTextEquals("")); - } - - /** - * Runs what "up arrow" would send back to terminal in less/man/etc. - */ - @Test - public void testScrollReverseNoScrollback() { - List expected = new ArrayList<>(); - for (int i = 0; i < WINDOW_LINES; i++) { - String line = "Hello " + i; - run(line); - expected.add(line); - if (i != data.getHeight() - 1) { - run("\r\n"); - } - } - assertAll(() -> assertCursorLocation(WINDOW_LINES - 1, expected.get(expected.size() - 1).length()), - () -> assertTextEquals(expected)); - run(CURSOR_POSITION_TOP_LEFT); - assertAll(() -> assertCursorLocation(0, 0), () -> assertTextEquals(expected)); - run(SCROLL_REVERSE); - expected.add(0, ""); - expected.remove(expected.size() - 1); - assertAll(() -> assertCursorLocation(0, 0), () -> assertTextEquals(expected)); - } - - /** - * Runs what "up arrow" would send back to terminal in less/man/etc. - */ - @Test - public void testScrollReverse() { - data.setMaxHeight(1000); - List expected = new ArrayList<>(); - for (int i = 0; i < WINDOW_LINES; i++) { - String line = "Hello " + i; - run(line); - expected.add(line); - run("\r\n"); - } - assertAll(() -> assertCursorLocation(WINDOW_LINES, 0), () -> assertTextEquals(expected)); - run(CURSOR_POSITION_TOP_LEFT); - assertAll(() -> assertCursorLocation(1, 0), () -> assertTextEquals(expected)); - run(SCROLL_REVERSE); - expected.add(1, ""); - assertAll(() -> assertCursorLocation(1, 0), () -> assertTextEquals(expected)); - run("New text on top line following scroll reverse"); - expected.set(1, "New text on top line following scroll reverse"); - assertAll(() -> assertCursorLocation(1, expected.get(1).length()), () -> assertTextEquals(expected)); - } - - /** - * Runs what "up arrow" would send back to terminal in less/man/etc. - * but with a scrolling region set - */ - @Test - public void testScrollReverseScrollingRegion() { - data.setMaxHeight(1000); - List expected = new ArrayList<>(); - for (int i = 0; i < WINDOW_LINES; i++) { - String line = "Hello " + i; - run(line); - expected.add(line); - run("\r\n"); - } - assertAll(() -> assertCursorLocation(WINDOW_LINES, 0), () -> assertTextEquals(expected)); - run(CURSOR_POSITION_TOP_LEFT + "\n"); - assertAll(() -> assertCursorLocation(2, 0), () -> assertTextEquals(expected)); - run(SCROLL_REGION(2, WINDOW_LINES)); - run(SCROLL_REVERSE); - expected.add(2, ""); - assertAll(() -> assertCursorLocation(2, 0), () -> assertTextEquals(expected)); - run("New text on top line following scroll reverse"); - expected.set(2, "New text on top line following scroll reverse"); - assertAll(() -> assertCursorLocation(2, expected.get(2).length()), () -> assertTextEquals(expected)); - } - - @Test - public void testStringTerminator() { - run( // - TITLE_ST_BEL("TITLE1"), // - "HELLO1", // - TITLE_ST_ESC_BACKSLASH("TITLE2"), // - "HELLO2", // - TITLE_ST_BEL("TITLE3"), // - "HELLO3", // - TITLE_ST_ESC_BACKSLASH("TITLE4") // - ); - assertAll(() -> assertTextEquals("HELLO1HELLO2HELLO3"), - () -> assertEquals(List.of("TITLE1", "TITLE2", "TITLE3", "TITLE4"), control.getAllTitles())); - } - - @Test - public void testMalformedStringTerminator() { - run( // - TITLE_ST_ESC_BACKSLASH("TITLE1"), // - "\033]0;" + "TITLE1" + "\033X", // - TITLE_ST_ESC_BACKSLASH("TITLE2"), // - "HELLO" // - ); - assertAll(() -> assertTextEquals("HELLO"), - () -> assertEquals(List.of("TITLE1", "TITLE2"), control.getAllTitles())); - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/AbstractITerminalTextDataTest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/AbstractITerminalTextDataTest.java deleted file mode 100644 index ac7399229d3..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/AbstractITerminalTextDataTest.java +++ /dev/null @@ -1,713 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007-2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - * Anton Leherbauer (Wind River) - [453393] Add support for copying wrapped lines without line break - *******************************************************************************/ -package org.eclipse.tm.internal.terminal.model; - -import org.eclipse.tm.terminal.model.ITerminalTextData; -import org.eclipse.tm.terminal.model.ITerminalTextDataReadOnly; -import org.eclipse.tm.terminal.model.LineSegment; -import org.eclipse.tm.terminal.model.TerminalStyle; - -import junit.framework.TestCase; - -abstract public class AbstractITerminalTextDataTest extends TestCase { - abstract protected ITerminalTextData makeITerminalTextData(); - - @Override - protected void setUp() throws Exception { - try { - assert false; - throw new Error("No Assertions! Run this code with assertions enabled! (vmargs: -ea)"); - } catch (AssertionError e) { - // OK, assertions are enabled! - } - super.setUp(); - } - - protected String toSimple(ITerminalTextData term) { - return TerminalTextTestHelper.toSimple(term); - } - - protected String toMultiLineText(ITerminalTextDataReadOnly term) { - return TerminalTextTestHelper.toMultiLineText(term); - } - - protected void fill(ITerminalTextData term, String s) { - TerminalTextTestHelper.fill(term, s); - } - - protected void fill(ITerminalTextData term, int i, int j, String s) { - TerminalTextTestHelper.fill(term, i, j, s); - } - - protected void fillSimple(ITerminalTextData term, String s) { - TerminalTextTestHelper.fillSimple(term, s); - } - - /** - * Used for multi line text - * @param expected - * @param actual - */ - protected void assertEqualsTerm(String expected, String actual) { - assertEquals(expected, actual); - } - - /** - * Used for simple text - * @param expected - * @param actual - */ - protected void assertEqualsSimple(String expected, String actual) { - assertEquals(-1, actual.indexOf('\n')); - assertEquals(expected, actual); - } - - public void testGetWidth() { - ITerminalTextData term = makeITerminalTextData(); - assertEquals(0, term.getWidth()); - term.setDimensions(term.getHeight(), 10); - assertEquals(10, term.getWidth()); - term.setDimensions(term.getHeight(), 0); - assertEquals(0, term.getWidth()); - } - - public void testAddLine() { - String s = "111\n" + "222\n" + "333\n" + "444\n" + "555"; - ITerminalTextData term = makeITerminalTextData(); - fill(term, s); - term.setMaxHeight(5); - term.addLine(); - assertEqualsTerm("222\n" + "333\n" + "444\n" + "555\n" + "\000\000\000", toMultiLineText(term)); - } - - public void testCleanLine() { - String s = "111\n" + "222\n" + "333\n" + "444\n" + "555"; - ITerminalTextData term = makeITerminalTextData(); - fill(term, s); - term.cleanLine(0); - assertEqualsTerm("\000\000\000\n" + "222\n" + "333\n" + "444\n" + "555", toMultiLineText(term)); - - fill(term, s); - term.cleanLine(4); - assertEqualsTerm("111\n" + "222\n" + "333\n" + "444\n" + "\000\000\000", toMultiLineText(term)); - } - - public void testMaxSize() { - String s = "111\n" + "222\n" + "333\n" + "444\n" + "555"; - ITerminalTextData term = makeITerminalTextData(); - term.setMaxHeight(8); - fill(term, s); - assertEquals(5, term.getHeight()); - assertEquals(8, term.getMaxHeight()); - term.addLine(); - assertEquals(6, term.getHeight()); - assertEqualsTerm("111\n" + "222\n" + "333\n" + "444\n" + "555\n" + "\000\000\000", toMultiLineText(term)); - term.addLine(); - assertEquals(7, term.getHeight()); - assertEqualsTerm("111\n" + "222\n" + "333\n" + "444\n" + "555\n" + "\000\000\000\n" + "\000\000\000", - toMultiLineText(term)); - term.addLine(); - assertEquals(8, term.getHeight()); - assertEqualsTerm( - "111\n" + "222\n" + "333\n" + "444\n" + "555\n" + "\000\000\000\n" + "\000\000\000\n" + "\000\000\000", - toMultiLineText(term)); - term.addLine(); - assertEquals(8, term.getHeight()); - assertEqualsTerm("222\n" + "333\n" + "444\n" + "555\n" + "\000\000\000\n" + "\000\000\000\n" + "\000\000\000\n" - + "\000\000\000", toMultiLineText(term)); - term.addLine(); - assertEquals(8, term.getHeight()); - assertEqualsTerm("333\n" + "444\n" + "555\n" + "\000\000\000\n" + "\000\000\000\n" + "\000\000\000\n" - + "\000\000\000\n" + "\000\000\000", toMultiLineText(term)); - } - - public void testGetHeight() { - ITerminalTextData term = makeITerminalTextData(); - assertEquals(0, term.getHeight()); - term.setDimensions(10, term.getWidth()); - assertEquals(10, term.getHeight()); - term.setDimensions(0, term.getWidth()); - assertEquals(0, term.getHeight()); - } - - public void testSetDimensions() { - ITerminalTextData term = makeITerminalTextData(); - assertEquals(0, term.getHeight()); - term.setDimensions(10, 5); - assertEquals(5, term.getWidth()); - assertEquals(10, term.getHeight()); - term.setDimensions(5, 10); - assertEquals(10, term.getWidth()); - assertEquals(5, term.getHeight()); - term.setDimensions(15, 0); - assertEquals(0, term.getWidth()); - assertEquals(15, term.getHeight()); - term.setDimensions(0, 12); - assertEquals(12, term.getWidth()); - assertEquals(0, term.getHeight()); - term.setDimensions(0, 0); - assertEquals(0, term.getWidth()); - assertEquals(0, term.getHeight()); - } - - public void testResize() { - ITerminalTextData term = makeITerminalTextData(); - term.setDimensions(3, 5); - String s = "12345\n" + "abcde\n" + "ABCDE"; - fill(term, 0, 0, s); - assertEqualsTerm(s, toMultiLineText(term)); - term.setDimensions(3, 4); - assertEqualsTerm("1234\n" + "abcd\n" + "ABCD", toMultiLineText(term)); - // the columns should be restored - term.setDimensions(3, 5); - assertEqualsTerm("12345\n" + "abcde\n" + "ABCDE", toMultiLineText(term)); - term.setDimensions(3, 6); - assertEqualsTerm("12345\000\n" + "abcde\000\n" + "ABCDE\000", toMultiLineText(term)); - term.setChar(0, 5, 'x', null); - term.setChar(1, 5, 'y', null); - term.setChar(2, 5, 'z', null); - assertEqualsTerm("12345x\n" + "abcdey\n" + "ABCDEz", toMultiLineText(term)); - term.setDimensions(2, 4); - assertEqualsTerm("1234\n" + "abcd", toMultiLineText(term)); - } - - public void testResizeFailure() { - ITerminalTextData term = makeITerminalTextData(); - term.setDimensions(3, 5); - String s = "12345\n" + "abcde\n" + "ABCDE"; - fill(term, 0, 0, s); - assertEqualsTerm(s, toMultiLineText(term)); - try { - term.setDimensions(-3, 4); - fail(); - } catch (RuntimeException e) { - // OK - } - // assertEquals(5, term.getWidth()); - // assertEquals(3, term.getHeight()); - // assertEquals(s, toSimpleText(term)); - } - - public void testGetLineSegments() { - TerminalStyle s1 = getDefaultStyle(); - TerminalStyle s2 = s1.setBold(true); - TerminalStyle s3 = s1.setUnderline(true); - ITerminalTextData term = makeITerminalTextData(); - term.setDimensions(8, 8); - LineSegment[] segments; - - term.setChars(0, 0, "0123".toCharArray(), s1); - term.setChars(0, 4, "abcd".toCharArray(), null); - segments = term.getLineSegments(0, 0, term.getWidth()); - assertEquals(2, segments.length); - assertSegment(0, "0123", s1, segments[0]); - assertSegment(4, "abcd", null, segments[1]); - - segments = term.getLineSegments(0, 4, term.getWidth() - 4); - assertEquals(1, segments.length); - assertSegment(4, "abcd", null, segments[0]); - - segments = term.getLineSegments(0, 3, 2); - assertEquals(2, segments.length); - assertSegment(3, "3", s1, segments[0]); - assertSegment(4, "a", null, segments[1]); - - segments = term.getLineSegments(0, 7, 1); - assertEquals(1, segments.length); - assertSegment(7, "d", null, segments[0]); - - segments = term.getLineSegments(0, 0, 1); - assertEquals(1, segments.length); - assertSegment(0, "0", s1, segments[0]); - - // line 1 - term.setChars(1, 0, "x".toCharArray(), s1); - term.setChars(1, 1, "y".toCharArray(), s2); - term.setChars(1, 2, "z".toCharArray(), s3); - - segments = term.getLineSegments(1, 0, term.getWidth()); - assertEquals(4, segments.length); - assertSegment(0, "x", s1, segments[0]); - assertSegment(1, "y", s2, segments[1]); - assertSegment(2, "z", s3, segments[2]); - assertSegment(3, "\000\000\000\000\000", null, segments[3]); - - // line 2 - term.setChars(2, 4, "klm".toCharArray(), s1); - segments = term.getLineSegments(2, 0, term.getWidth()); - assertEquals(3, segments.length); - assertSegment(0, "\000\000\000\000", null, segments[0]); - assertSegment(4, "klm", s1, segments[1]); - assertSegment(7, "\000", null, segments[2]); - - // line 3 - segments = term.getLineSegments(3, 0, term.getWidth()); - assertEquals(1, segments.length); - assertSegment(0, "\000\000\000\000\000\000\000\000", null, segments[0]); - - } - - public void testGetLineSegmentsNull() { - ITerminalTextData term = makeITerminalTextData(); - term.setDimensions(8, 8); - LineSegment[] segments = term.getLineSegments(0, 0, term.getWidth()); - assertEquals(1, segments.length); - } - - public void testGetLineSegmentsOutOfBounds() { - ITerminalTextData term = makeITerminalTextData(); - term.setDimensions(1, 8); - term.setChars(0, 0, "xx".toCharArray(), null); - LineSegment[] segments = term.getLineSegments(0, 5, 2); - assertEquals(1, segments.length); - - } - - void assertSegment(int col, String text, TerminalStyle style, LineSegment segment) { - assertEquals(col, segment.getColumn()); - assertEqualsTerm(text, segment.getText()); - assertEquals(style, segment.getStyle()); - - } - - public void testGetChar() { - String s = "12345\n" + "abcde\n" + "ABCDE"; - ITerminalTextData term = makeITerminalTextData(); - fill(term, s); - assertEquals('1', term.getChar(0, 0)); - assertEquals('2', term.getChar(0, 1)); - assertEquals('3', term.getChar(0, 2)); - assertEquals('4', term.getChar(0, 3)); - assertEquals('5', term.getChar(0, 4)); - assertEquals('a', term.getChar(1, 0)); - assertEquals('b', term.getChar(1, 1)); - assertEquals('c', term.getChar(1, 2)); - assertEquals('d', term.getChar(1, 3)); - assertEquals('e', term.getChar(1, 4)); - assertEquals('A', term.getChar(2, 0)); - assertEquals('B', term.getChar(2, 1)); - assertEquals('C', term.getChar(2, 2)); - assertEquals('D', term.getChar(2, 3)); - assertEquals('E', term.getChar(2, 4)); - try { - term.getChar(0, -1); - fail(); - } catch (RuntimeException e) { - } - try { - term.getChar(-1, -1); - fail(); - } catch (RuntimeException e) { - } - try { - term.getChar(-1, 0); - fail(); - } catch (RuntimeException e) { - } - try { - term.getChar(0, 5); - fail(); - } catch (RuntimeException e) { - } - try { - term.getChar(3, 5); - fail(); - } catch (RuntimeException e) { - } - try { - term.getChar(3, 0); - fail(); - } catch (RuntimeException e) { - } - } - - public void testGetStyle() { - ITerminalTextData term = makeITerminalTextData(); - TerminalStyle style = getDefaultStyle(); - term.setDimensions(6, 3); - for (int line = 0; line < term.getHeight(); line++) { - for (int column = 0; column < term.getWidth(); column++) { - char c = (char) ('a' + column + line); - term.setChar(line, column, c, style.setForeground(c)); - } - } - for (int line = 0; line < term.getHeight(); line++) { - for (int column = 0; column < term.getWidth(); column++) { - char c = (char) ('a' + column + line); - assertSame(style.setForeground(c), term.getStyle(line, column)); - } - } - - } - - protected TerminalStyle getDefaultStyle() { - return TerminalStyle.getDefaultStyle(); - } - - public void testSetChar() { - ITerminalTextData term = makeITerminalTextData(); - term.setDimensions(6, 3); - for (int line = 0; line < term.getHeight(); line++) { - for (int column = 0; column < term.getWidth(); column++) { - term.setChar(line, column, (char) ('a' + column + line), null); - } - } - for (int line = 0; line < term.getHeight(); line++) { - for (int column = 0; column < term.getWidth(); column++) { - char c = (char) ('a' + column + line); - assertEquals(c, term.getChar(line, column)); - } - } - assertEqualsTerm("abc\n" + "bcd\n" + "cde\n" + "def\n" + "efg\n" + "fgh", toMultiLineText(term)); - } - - public void testSetChars() { - ITerminalTextData term = makeITerminalTextData(); - term.setDimensions(6, 3); - for (int line = 0; line < term.getHeight(); line++) { - char[] chars = new char[term.getWidth()]; - for (int column = 0; column < term.getWidth(); column++) { - chars[column] = (char) ('a' + column + line); - } - term.setChars(line, 0, chars, null); - } - for (int line = 0; line < term.getHeight(); line++) { - for (int column = 0; column < term.getWidth(); column++) { - char c = (char) ('a' + column + line); - assertEquals(c, term.getChar(line, column)); - } - } - assertEqualsTerm("abc\n" + "bcd\n" + "cde\n" + "def\n" + "efg\n" + "fgh", toMultiLineText(term)); - - term.setChars(3, 1, new char[] { '1', '2' }, null); - assertEqualsTerm("abc\n" + "bcd\n" + "cde\n" + "d12\n" + "efg\n" + "fgh", toMultiLineText(term)); - try { - // check if we cannot exceed the range - term.setChars(4, 1, new char[] { '1', '2', '3', '4', '5' }, null); - fail(); - } catch (RuntimeException e) { - } - - } - - public void testSetCharsLen() { - ITerminalTextData term = makeITerminalTextData(); - String s = "ZYXWVU\n" + "abcdef\n" + "ABCDEF"; - fill(term, s); - char[] chars = new char[] { '1', '2', '3', '4', '5', '6', '7', '8' }; - term.setChars(1, 0, chars, 0, 6, null); - assertEqualsTerm("ZYXWVU\n" + "123456\n" + "ABCDEF", toMultiLineText(term)); - - fill(term, s); - term.setChars(1, 0, chars, 0, 5, null); - assertEqualsTerm("ZYXWVU\n" + "12345f\n" + "ABCDEF", toMultiLineText(term)); - - fill(term, s); - term.setChars(1, 0, chars, 1, 5, null); - assertEqualsTerm("ZYXWVU\n" + "23456f\n" + "ABCDEF", toMultiLineText(term)); - - fill(term, s); - term.setChars(1, 1, chars, 1, 4, null); - assertEqualsTerm("ZYXWVU\n" + "a2345f\n" + "ABCDEF", toMultiLineText(term)); - - fill(term, s); - term.setChars(1, 2, chars, 3, 4, null); - assertEqualsTerm("ZYXWVU\n" + "ab4567\n" + "ABCDEF", toMultiLineText(term)); - - fill(term, s); - try { - term.setChars(1, 0, chars, 7, 10, null); - fail(); - } catch (RuntimeException e) { - } - fill(term, s); - try { - term.setChars(1, -1, chars, 0, 2, null); - fail(); - } catch (RuntimeException e) { - } - try { - term.setChars(-1, 1, chars, 0, 2, null); - fail(); - } catch (RuntimeException e) { - } - try { - term.setChars(1, 10, chars, 0, 2, null); - fail(); - } catch (RuntimeException e) { - } - try { - term.setChars(10, 1, chars, 0, 2, null); - fail(); - } catch (RuntimeException e) { - } - // assertEquals(s, toSimpleText(term)); - } - - public void testSetCopyInto() { - ITerminalTextData term = makeITerminalTextData(); - term.setDimensions(3, 5); - String s = "12345\n" + "abcde\n" + "ABCDE"; - fill(term, 0, 0, s); - ITerminalTextData termCopy = makeITerminalTextData(); - termCopy.copy(term); - assertEqualsTerm(s, toMultiLineText(termCopy)); - assertEqualsTerm(s, toMultiLineText(term)); - - termCopy.setChar(1, 1, 'X', null); - assertEqualsTerm(s, toMultiLineText(term)); - term.setDimensions(2, 4); - assertEquals(5, termCopy.getWidth()); - assertEquals(3, termCopy.getHeight()); - - assertEqualsTerm("12345\n" + "aXcde\n" + "ABCDE", toMultiLineText(termCopy)); - - assertEquals(4, term.getWidth()); - assertEquals(2, term.getHeight()); - } - - public void testSetCopyLines() { - ITerminalTextData term = makeITerminalTextData(); - String s = "012345"; - fillSimple(term, s); - ITerminalTextData termCopy = makeITerminalTextData(); - String sCopy = "abcde"; - fillSimple(termCopy, sCopy); - termCopy.copyRange(term, 0, 0, 0); - assertEqualsSimple(s, toSimple(term)); - assertEqualsSimple(sCopy, toSimple(termCopy)); - - fillSimple(termCopy, sCopy); - termCopy.copyRange(term, 0, 0, 5); - assertEqualsSimple(s, toSimple(term)); - assertEqualsSimple("01234", toSimple(termCopy)); - - fillSimple(termCopy, sCopy); - termCopy.copyRange(term, 0, 0, 2); - assertEqualsSimple(s, toSimple(term)); - assertEqualsSimple("01cde", toSimple(termCopy)); - - fillSimple(termCopy, sCopy); - termCopy.copyRange(term, 0, 1, 2); - assertEqualsSimple(s, toSimple(term)); - assertEqualsSimple("a01de", toSimple(termCopy)); - - fillSimple(termCopy, sCopy); - termCopy.copyRange(term, 1, 1, 2); - assertEqualsSimple(s, toSimple(term)); - assertEqualsSimple("a12de", toSimple(termCopy)); - - fillSimple(termCopy, sCopy); - termCopy.copyRange(term, 1, 1, 4); - assertEqualsSimple(s, toSimple(term)); - assertEqualsSimple("a1234", toSimple(termCopy)); - - fillSimple(termCopy, sCopy); - termCopy.copyRange(term, 2, 1, 4); - assertEqualsSimple(s, toSimple(term)); - assertEqualsSimple("a2345", toSimple(termCopy)); - - try { - fillSimple(termCopy, sCopy); - termCopy.copyRange(term, 1, 1, 5); - fail(); - } catch (RuntimeException e) { - } - try { - fillSimple(termCopy, sCopy); - termCopy.copyRange(term, 0, 0, 6); - fail(); - } catch (RuntimeException e) { - } - try { - fillSimple(termCopy, sCopy); - termCopy.copyRange(term, 7, 0, 1); - fail(); - } catch (RuntimeException e) { - } - try { - fillSimple(termCopy, sCopy); - termCopy.copyRange(term, 0, 7, 1); - fail(); - } catch (RuntimeException e) { - } - } - - public void testCopyLine() { - ITerminalTextData term = makeITerminalTextData(); - String s = "111\n" + "222\n" + "333\n" + "444\n" + "555"; - fill(term, s); - ITerminalTextData dest = makeITerminalTextData(); - String sCopy = "aaa\n" + "bbb\n" + "ccc\n" + "ddd\n" + "eee"; - fill(dest, sCopy); - copySelective(dest, term, 0, 0, new boolean[] { true, true, false, false, true }); - assertEqualsTerm(s, toMultiLineText(term)); - assertEqualsTerm("111\n" + "222\n" + "ccc\n" + "ddd\n" + "555", toMultiLineText(dest)); - - fill(dest, sCopy); - copySelective(dest, term, 0, 0, new boolean[] { true, true, true, true, true }); - assertEqualsTerm(s, toMultiLineText(term)); - assertEqualsTerm(s, toMultiLineText(dest)); - - fill(dest, sCopy); - copySelective(dest, term, 0, 0, new boolean[] { false, false, false, false, false }); - assertEqualsTerm(s, toMultiLineText(term)); - assertEqualsTerm(sCopy, toMultiLineText(dest)); - } - - protected void copySelective(ITerminalTextData dest, ITerminalTextData source, int sourceStartLine, - int destStartLine, boolean[] linesToCopy) { - for (int i = 0; i < linesToCopy.length; i++) { - if (linesToCopy[i]) { - dest.copyLine(source, i + sourceStartLine, i + destStartLine); - } - } - } - - public void testCopyLineWithOffset() { - ITerminalTextData term = makeITerminalTextData(); - String s = "111\n" + "222\n" + "333\n" + "444\n" + "555"; - fill(term, s); - ITerminalTextData dest = makeITerminalTextData(); - String sCopy = "aaa\n" + "bbb\n" + "ccc\n" + "ddd\n" + "eee"; - fill(dest, sCopy); - copySelective(dest, term, 1, 0, new boolean[] { true, false, false, true }); - assertEqualsTerm(s, toMultiLineText(term)); - assertEqualsTerm("222\n" + "bbb\n" + "ccc\n" + "555\n" + "eee", toMultiLineText(dest)); - - fill(dest, sCopy); - copySelective(dest, term, 2, 0, new boolean[] { true, true }); - assertEqualsTerm(s, toMultiLineText(term)); - assertEqualsTerm("333\n" + "444\n" + "ccc\n" + "ddd\n" + "eee", toMultiLineText(dest)); - - fill(dest, sCopy); - copySelective(dest, term, 0, 0, new boolean[] { true, true, true, true, true }); - assertEqualsTerm(s, toMultiLineText(term)); - assertEqualsTerm(s, toMultiLineText(dest)); - - fill(dest, sCopy); - copySelective(dest, term, 0, 0, new boolean[] { false, false, false, false, false }); - assertEqualsTerm(s, toMultiLineText(term)); - assertEqualsTerm(sCopy, toMultiLineText(dest)); - } - - public void testScrollNoop() { - scrollTest(0, 0, 0, "012345", "012345"); - scrollTest(0, 1, 0, "012345", "012345"); - scrollTest(0, 6, 0, "012345", "012345"); - } - - public void testScrollAll() { - scrollTest(0, 6, 1, "012345", " 01234"); - scrollTest(0, 6, -1, "012345", "12345 "); - scrollTest(0, 6, 2, "012345", " 0123"); - scrollTest(0, 6, -2, "012345", "2345 "); - } - - public void testScrollNegative() { - scrollTest(0, 2, -1, "012345", "1 2345"); - scrollTest(0, 1, -1, "012345", " 12345"); - scrollTest(0, 6, -1, "012345", "12345 "); - scrollTest(0, 6, -6, "012345", " "); - scrollTest(0, 6, -7, "012345", " "); - scrollTest(0, 6, -8, "012345", " "); - scrollTest(0, 6, -2, "012345", "2345 "); - scrollTest(1, 1, -1, "012345", "0 2345"); - scrollTest(1, 1, -1, "012345", "0 2345"); - scrollTest(1, 2, -1, "012345", "02 345"); - scrollTest(5, 1, -1, "012345", "01234 "); - scrollTest(5, 1, -1, "012345", "01234 "); - } - - public void testScrollNegative2() { - scrollTest(0, 2, -1, " 23 ", " 23 "); - scrollTest(0, 1, -1, " 23 ", " 23 "); - scrollTest(0, 6, -1, " 23 ", " 23 "); - scrollTest(0, 6, -6, " 23 ", " "); - scrollTest(0, 6, -7, " 23 ", " "); - scrollTest(0, 6, -8, " 23 ", " "); - scrollTest(0, 6, -2, " 23 ", "23 "); - scrollTest(1, 1, -1, " 23 ", " 23 "); - scrollTest(1, 2, -1, " 23 ", " 2 3 "); - scrollTest(5, 1, -1, " 23 ", " 23 "); - scrollTest(5, 1, -1, " 23 ", " 23 "); - } - - public void testScrollNegative3() { - scrollTest(1, 5, -7, "012345", "0 "); - } - - public void testScrollPositive2() { - scrollTest(2, 8, 20, "0123456789", "01 "); - } - - public void testScrollPositive() { - scrollTest(0, 2, 1, "012345", " 02345"); - scrollTest(0, 2, 2, "012345", " 2345"); - scrollTest(2, 4, 2, "012345", "01 23"); - scrollTest(2, 4, 2, "0123456", "01 236"); - scrollTest(0, 7, 6, "0123456", " 0"); - scrollTest(0, 7, 8, "0123456", " "); - scrollTest(0, 7, 9, "0123456", " "); - scrollTest(2, 4, 2, "0123456", "01 236"); - scrollTest(2, 5, 3, "0123456789", "01 23789"); - scrollTest(2, 7, 3, "0123456789", "01 23459"); - scrollTest(2, 8, 3, "0123456789", "01 23456"); - scrollTest(2, 8, 5, "0123456789", "01 234"); - scrollTest(2, 8, 9, "0123456789", "01 "); - scrollTest(0, 10, 9, "0123456789", " 0"); - scrollTest(0, 6, 6, "012345", " "); - } - - public void testScrollFail() { - try { - scrollTest(5, 2, -1, "012345", "012345"); - fail(); - } catch (RuntimeException e) { - } - try { - scrollTest(0, 7, 1, "012345", " "); - fail(); - } catch (RuntimeException e) { - } - } - - /** - * Makes a simple shift test - * @param line scroll start - * @param n number of lines to be scrolled - * @param shift amount of lines to be shifted - * @param start the original data - * @param result the expected result - */ - void scrollTest(int line, int n, int shift, String start, String result) { - ITerminalTextData term = makeITerminalTextData(); - fillSimple(term, start); - term.scroll(line, n, shift); - assertEqualsSimple(result, toSimple(term)); - } - - public void testWrappedLines() { - ITerminalTextData term = makeITerminalTextData(); - term.setDimensions(4, 4); - for (int i = 0; i < term.getHeight(); ++i) - assertFalse(term.isWrappedLine(i)); - term.setWrappedLine(0); - term.setWrappedLine(3); - assertTrue(term.isWrappedLine(0)); - assertFalse(term.isWrappedLine(1)); - assertFalse(term.isWrappedLine(2)); - assertTrue(term.isWrappedLine(3)); - term.cleanLine(0); - assertFalse(term.isWrappedLine(0)); - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/AllTestSuite.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/AllTestSuite.java deleted file mode 100644 index 123de062d5e..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/AllTestSuite.java +++ /dev/null @@ -1,47 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Martin Oberhuber (Wind River) - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.internal.terminal.model; - -import junit.framework.Test; -import junit.framework.TestCase; -import junit.framework.TestSuite; - -/** - * Internal Terminal Model test cases. - * Runs in internal model package to allow access to default visible items. - */ -public class AllTestSuite extends TestCase { - public AllTestSuite() { - super(null); - } - - public AllTestSuite(String name) { - super(name); - } - - public static Test suite() { - TestSuite suite = new TestSuite(AllTestSuite.class.getName()); - suite.addTestSuite(SnapshotChangesTest.class); - suite.addTestSuite(SynchronizedTerminalTextDataTest.class); - suite.addTestSuite(TerminalTextDataFastScrollTest.class); - suite.addTestSuite(TerminalTextDataFastScrollMaxHeightTest.class); - suite.addTestSuite(TerminalTextDataPerformanceTest.class); - suite.addTestSuite(TerminalTextDataSnapshotTest.class); - suite.addTestSuite(TerminalTextDataSnapshotWindowTest.class); - suite.addTestSuite(TerminalTextDataStoreTest.class); - suite.addTestSuite(TerminalTextDataTest.class); - suite.addTestSuite(TerminalTextDataWindowTest.class); - return suite; - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/SnapshotChangesTest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/SnapshotChangesTest.java deleted file mode 100644 index 9a95ba2f8e8..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/SnapshotChangesTest.java +++ /dev/null @@ -1,692 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.internal.terminal.model; - -import org.eclipse.tm.terminal.model.ITerminalTextData; - -import junit.framework.TestCase; - -public class SnapshotChangesTest extends TestCase { - /** - * @param change - * @param expected a string of 0 and 1 (1 means changed) - */ - void assertChangedLines(ISnapshotChanges change, String expected) { - StringBuffer buffer = new StringBuffer(); - for (int line = 0; line < expected.length(); line++) { - if (change.hasLineChanged(line)) - buffer.append('1'); - else - buffer.append('0'); - } - assertEquals(expected, buffer.toString()); - } - - public void testSnapshotChanges() { - SnapshotChanges changes = new SnapshotChanges(1); - assertEquals(0, changes.getInterestWindowStartLine()); - assertEquals(0, changes.getInterestWindowSize()); - } - - public void testSnapshotChangesWithWindow() { - SnapshotChanges changes = new SnapshotChanges(2, 5); - assertEquals(2, changes.getInterestWindowStartLine()); - assertEquals(5, changes.getInterestWindowSize()); - } - - public void testIsInInterestWindowIntInt() { - SnapshotChanges changes = new SnapshotChanges(2, 5); - assertFalse(changes.isInInterestWindow(0, 1)); - assertFalse(changes.isInInterestWindow(0, 2)); - assertTrue(changes.isInInterestWindow(0, 3)); - assertTrue(changes.isInInterestWindow(0, 4)); - assertTrue(changes.isInInterestWindow(0, 5)); - assertTrue(changes.isInInterestWindow(0, 6)); - assertTrue(changes.isInInterestWindow(0, 10)); - assertTrue(changes.isInInterestWindow(2, 5)); - assertTrue(changes.isInInterestWindow(6, 0)); - assertTrue(changes.isInInterestWindow(6, 1)); - assertTrue(changes.isInInterestWindow(6, 10)); - assertFalse(changes.isInInterestWindow(7, 0)); - assertFalse(changes.isInInterestWindow(7, 1)); - assertFalse(changes.isInInterestWindow(8, 10)); - } - - public void testIsInInterestWindowIntIntNoWindow() { - SnapshotChanges changes = new SnapshotChanges(3); - for (int i = 0; i < 5; i++) { - for (int j = 0; j < 5; j++) { - assertTrue(changes.isInInterestWindow(i, j)); - } - } - } - - public void testIsInInterestWindowInt() { - SnapshotChanges changes = new SnapshotChanges(3, 1); - assertFalse(changes.isInInterestWindow(0)); - assertFalse(changes.isInInterestWindow(1)); - assertFalse(changes.isInInterestWindow(2)); - assertTrue(changes.isInInterestWindow(3)); - assertFalse(changes.isInInterestWindow(4)); - assertFalse(changes.isInInterestWindow(5)); - } - - public void testIsInInterestWindowIntNoWindow() { - SnapshotChanges changes = new SnapshotChanges(3); - for (int i = 0; i < 10; i++) { - assertTrue(changes.isInInterestWindow(i)); - } - } - - public void testFitLineToWindow() { - SnapshotChanges changes = new SnapshotChanges(2, 5); - assertEquals(2, changes.fitLineToWindow(0)); - assertEquals(2, changes.fitLineToWindow(1)); - assertEquals(2, changes.fitLineToWindow(2)); - assertEquals(3, changes.fitLineToWindow(3)); - - assertTrue(changes.isInInterestWindow(4)); - assertEquals(4, changes.fitLineToWindow(4)); - - assertTrue(changes.isInInterestWindow(5)); - assertEquals(5, changes.fitLineToWindow(5)); - - assertTrue(changes.isInInterestWindow(6)); - assertEquals(6, changes.fitLineToWindow(6)); - - assertFalse(changes.isInInterestWindow(7)); - // value undefined! - assertEquals(7, changes.fitLineToWindow(7)); - - assertFalse(changes.isInInterestWindow(8)); - // value undefined! - assertEquals(8, changes.fitLineToWindow(8)); - } - - public void testFitLineToWindowNoWindow() { - SnapshotChanges changes = new SnapshotChanges(5); - assertEquals(0, changes.fitLineToWindow(0)); - assertEquals(1, changes.fitLineToWindow(1)); - assertEquals(2, changes.fitLineToWindow(2)); - assertEquals(3, changes.fitLineToWindow(3)); - assertEquals(4, changes.fitLineToWindow(4)); - assertEquals(5, changes.fitLineToWindow(5)); - assertEquals(6, changes.fitLineToWindow(6)); - assertEquals(7, changes.fitLineToWindow(7)); - } - - public void testFitSizeToWindow() { - SnapshotChanges changes = new SnapshotChanges(2, 3); - assertFalse(changes.isInInterestWindow(0, 1)); - assertFalse(changes.isInInterestWindow(0, 2)); - assertTrue(changes.isInInterestWindow(0, 3)); - assertEquals(1, changes.fitSizeToWindow(0, 3)); - assertEquals(2, changes.fitSizeToWindow(0, 4)); - assertEquals(3, changes.fitSizeToWindow(0, 5)); - assertEquals(3, changes.fitSizeToWindow(0, 6)); - assertEquals(3, changes.fitSizeToWindow(0, 7)); - assertEquals(3, changes.fitSizeToWindow(0, 8)); - assertEquals(3, changes.fitSizeToWindow(0, 9)); - assertEquals(3, changes.fitSizeToWindow(1, 9)); - assertEquals(3, changes.fitSizeToWindow(2, 9)); - assertEquals(3, changes.fitSizeToWindow(2, 3)); - assertEquals(2, changes.fitSizeToWindow(2, 2)); - assertEquals(1, changes.fitSizeToWindow(2, 1)); - assertEquals(2, changes.fitSizeToWindow(3, 9)); - assertEquals(2, changes.fitSizeToWindow(3, 2)); - assertEquals(1, changes.fitSizeToWindow(3, 1)); - assertEquals(2, changes.fitSizeToWindow(3, 2)); - assertEquals(2, changes.fitSizeToWindow(3, 3)); - assertEquals(1, changes.fitSizeToWindow(4, 1)); - assertEquals(1, changes.fitSizeToWindow(4, 2)); - assertFalse(changes.isInInterestWindow(5, 1)); - - } - - public void testFitSizeToWindowNoWindow() { - SnapshotChanges changes = new SnapshotChanges(3); - assertEquals(1, changes.fitSizeToWindow(0, 1)); - assertEquals(2, changes.fitSizeToWindow(0, 2)); - assertEquals(3, changes.fitSizeToWindow(0, 3)); - assertEquals(4, changes.fitSizeToWindow(0, 4)); - assertEquals(5, changes.fitSizeToWindow(0, 5)); - - assertEquals(5, changes.fitSizeToWindow(1, 5)); - assertEquals(3, changes.fitSizeToWindow(2, 3)); - assertEquals(2, changes.fitSizeToWindow(1, 2)); - assertEquals(10, changes.fitSizeToWindow(5, 10)); - } - - public void testMarkLineChanged() { - SnapshotChanges changes = new SnapshotChanges(2, 3); - assertFalse(changes.hasChanged()); - changes.markLineChanged(0); - assertFalse(changes.hasChanged()); - changes.markLineChanged(1); - assertFalse(changes.hasChanged()); - changes.markLineChanged(2); - assertTrue(changes.hasChanged()); - - changes = new SnapshotChanges(2, 3); - assertFalse(changes.hasChanged()); - changes.markLineChanged(3); - assertTrue(changes.hasChanged()); - - assertLineChange(false, 2, 3, 0); - assertLineChange(false, 2, 3, 1); - assertLineChange(true, 2, 3, 2); - assertLineChange(true, 2, 3, 3); - assertLineChange(true, 2, 3, 4); - assertLineChange(false, 2, 3, 5); - assertLineChange(false, 2, 3, 6); - - assertLineChange(true, 2, 4, 5); - } - - void assertLineChange(boolean expected, int windowStart, int windowSize, int changedLine) { - SnapshotChanges changes = new SnapshotChanges(windowStart, windowSize); - assertFalse(changes.hasChanged()); - changes.markLineChanged(changedLine); - if (expected) { - assertEquals(changedLine, changes.getFirstChangedLine()); - assertEquals(changedLine, changes.getLastChangedLine()); - } else { - assertEquals(Integer.MAX_VALUE, changes.getFirstChangedLine()); - assertEquals(-1, changes.getLastChangedLine()); - - } - assertEquals(expected, changes.hasChanged()); - for (int i = 0; i < windowStart + windowSize + 5; i++) { - boolean e = i == changedLine && i >= windowStart && i < windowStart + windowSize; - assertEquals(e, changes.hasLineChanged(i)); - } - - } - - public void testMarkLinesChanged() { - SnapshotChanges changes = new SnapshotChanges(2, 3); - assertFalse(changes.hasChanged()); - assertEquals(Integer.MAX_VALUE, changes.getFirstChangedLine()); - assertEquals(-1, changes.getLastChangedLine()); - changes.markLinesChanged(0, 1); - assertChangedLines(changes, "00000000000"); - assertFalse(changes.hasChanged()); - assertEquals(Integer.MAX_VALUE, changes.getFirstChangedLine()); - assertEquals(-1, changes.getLastChangedLine()); - changes.markLinesChanged(0, 2); - assertChangedLines(changes, "00000000000"); - assertFalse(changes.hasChanged()); - assertEquals(Integer.MAX_VALUE, changes.getFirstChangedLine()); - assertEquals(-1, changes.getLastChangedLine()); - changes.markLinesChanged(0, 3); - assertEquals(2, changes.getFirstChangedLine()); - assertEquals(2, changes.getLastChangedLine()); - assertTrue(changes.hasChanged()); - assertChangedLines(changes, "00100000000"); - - changes = new SnapshotChanges(2, 3); - changes.markLinesChanged(1, 3); - assertTrue(changes.hasChanged()); - assertEquals(2, changes.getFirstChangedLine()); - assertEquals(3, changes.getLastChangedLine()); - assertChangedLines(changes, "00110000000"); - - changes = new SnapshotChanges(2, 3); - changes.markLinesChanged(1, 4); - assertEquals(2, changes.getFirstChangedLine()); - assertEquals(4, changes.getLastChangedLine()); - assertTrue(changes.hasChanged()); - assertChangedLines(changes, "00111000000"); - - changes = new SnapshotChanges(2, 3); - changes.markLinesChanged(1, 4); - assertEquals(2, changes.getFirstChangedLine()); - assertEquals(4, changes.getLastChangedLine()); - assertTrue(changes.hasChanged()); - assertChangedLines(changes, "00111000000"); - - changes = new SnapshotChanges(2, 3); - changes.markLinesChanged(2, 4); - assertEquals(2, changes.getFirstChangedLine()); - assertEquals(4, changes.getLastChangedLine()); - assertTrue(changes.hasChanged()); - assertChangedLines(changes, "00111000000"); - - changes = new SnapshotChanges(2, 3); - changes.markLinesChanged(3, 4); - assertEquals(3, changes.getFirstChangedLine()); - assertEquals(4, changes.getLastChangedLine()); - assertTrue(changes.hasChanged()); - assertChangedLines(changes, "00011000000"); - - changes = new SnapshotChanges(2, 3); - changes.markLinesChanged(3, 1); - assertEquals(3, changes.getFirstChangedLine()); - assertEquals(3, changes.getLastChangedLine()); - assertTrue(changes.hasChanged()); - assertChangedLines(changes, "00010000000"); - - changes = new SnapshotChanges(2, 3); - changes.markLinesChanged(4, 1); - assertEquals(4, changes.getFirstChangedLine()); - assertEquals(4, changes.getLastChangedLine()); - assertTrue(changes.hasChanged()); - assertChangedLines(changes, "00001000000"); - - changes = new SnapshotChanges(2, 3); - changes.markLinesChanged(5, 1); - assertEquals(Integer.MAX_VALUE, changes.getFirstChangedLine()); - assertEquals(-1, changes.getLastChangedLine()); - assertFalse(changes.hasChanged()); - assertChangedLines(changes, "00000000000"); - } - - public void testMarkLinesChangedNoWindow() { - SnapshotChanges changes = new SnapshotChanges(10); - assertFalse(changes.hasChanged()); - assertEquals(Integer.MAX_VALUE, changes.getFirstChangedLine()); - assertEquals(-1, changes.getLastChangedLine()); - - changes.markLinesChanged(0, 1); - assertTrue(changes.hasChanged()); - assertEquals(0, changes.getFirstChangedLine()); - assertEquals(0, changes.getLastChangedLine()); - assertChangedLines(changes, "1000000000"); - - changes = new SnapshotChanges(10); - changes.markLinesChanged(0, 5); - assertTrue(changes.hasChanged()); - assertEquals(0, changes.getFirstChangedLine()); - assertEquals(4, changes.getLastChangedLine()); - assertChangedLines(changes, "1111100000"); - - changes = new SnapshotChanges(3); - changes.markLinesChanged(1, 6); - assertTrue(changes.hasChanged()); - assertEquals(1, changes.getFirstChangedLine()); - assertEquals(6, changes.getLastChangedLine()); - assertChangedLines(changes, "011"); - - changes = new SnapshotChanges(10); - changes.markLinesChanged(5, 6); - assertTrue(changes.hasChanged()); - assertEquals(5, changes.getFirstChangedLine()); - assertEquals(10, changes.getLastChangedLine()); - assertChangedLines(changes, "0000011111"); - - } - - public void testHasChanged() { - SnapshotChanges changes = new SnapshotChanges(0); - assertFalse(changes.hasChanged()); - changes = new SnapshotChanges(1); - assertFalse(changes.hasChanged()); - changes = new SnapshotChanges(1, 9); - assertFalse(changes.hasChanged()); - } - - public void testSetAllChanged() { - SnapshotChanges changes; - changes = new SnapshotChanges(2, 3); - changes.setAllChanged(10); - assertEquals(2, changes.getFirstChangedLine()); - assertEquals(4, changes.getLastChangedLine()); - assertTrue(changes.hasChanged()); - assertChangedLines(changes, "00111000000"); - - changes = new SnapshotChanges(2, 3); - changes.setAllChanged(3); - assertEquals(2, changes.getFirstChangedLine()); - assertEquals(2, changes.getLastChangedLine()); - assertTrue(changes.hasChanged()); - assertChangedLines(changes, "00111000000"); - - changes = new SnapshotChanges(2, 3); - changes.setAllChanged(4); - assertEquals(2, changes.getFirstChangedLine()); - assertEquals(3, changes.getLastChangedLine()); - assertTrue(changes.hasChanged()); - assertChangedLines(changes, "00111000000"); - - changes = new SnapshotChanges(2, 3); - changes.setAllChanged(5); - assertEquals(2, changes.getFirstChangedLine()); - assertEquals(4, changes.getLastChangedLine()); - assertTrue(changes.hasChanged()); - assertChangedLines(changes, "00111000000"); - - changes = new SnapshotChanges(2, 3); - changes.setAllChanged(6); - assertEquals(2, changes.getFirstChangedLine()); - assertEquals(4, changes.getLastChangedLine()); - assertTrue(changes.hasChanged()); - assertChangedLines(changes, "00111000000"); - } - - public void testSetAllChangedNoWindow() { - SnapshotChanges changes; - changes = new SnapshotChanges(5); - changes.setAllChanged(10); - assertEquals(0, changes.getFirstChangedLine()); - assertEquals(9, changes.getLastChangedLine()); - assertTrue(changes.hasChanged()); - assertChangedLines(changes, "1111111111"); - - changes = new SnapshotChanges(5); - changes.setAllChanged(3); - assertEquals(0, changes.getFirstChangedLine()); - assertEquals(2, changes.getLastChangedLine()); - assertTrue(changes.hasChanged()); - assertChangedLines(changes, "1111111111"); - - } - - public void testConvertScrollingIntoChanges() { - SnapshotChanges changes; - changes = new SnapshotChanges(2, 3); - changes.scroll(0, 4, -1); - assertTrue(changes.hasChanged()); - assertChangedLines(changes, "000100"); - changes.convertScrollingIntoChanges(); - assertEquals(2, changes.getFirstChangedLine()); - assertEquals(3, changes.getLastChangedLine()); - assertEquals(0, changes.getScrollWindowStartLine()); - assertEquals(0, changes.getScrollWindowSize()); - assertEquals(0, changes.getScrollWindowShift()); - assertChangedLines(changes, "001100"); - } - - public void testConvertScrollingIntoChangesNoWindow() { - SnapshotChanges changes; - changes = new SnapshotChanges(7); - changes.scroll(0, 4, -1); - assertTrue(changes.hasChanged()); - assertChangedLines(changes, "000100"); - changes.convertScrollingIntoChanges(); - assertEquals(0, changes.getFirstChangedLine()); - assertEquals(3, changes.getLastChangedLine()); - assertEquals(0, changes.getScrollWindowStartLine()); - assertEquals(0, changes.getScrollWindowSize()); - assertEquals(0, changes.getScrollWindowShift()); - assertChangedLines(changes, "111100"); - } - - public void testScrollNoWindow() { - SnapshotChanges changes; - changes = new SnapshotChanges(7); - changes.scroll(0, 3, -2); - assertEquals(1, changes.getFirstChangedLine()); - assertEquals(2, changes.getLastChangedLine()); - assertEquals(0, changes.getScrollWindowStartLine()); - assertEquals(3, changes.getScrollWindowSize()); - assertEquals(-2, changes.getScrollWindowShift()); - assertTrue(changes.hasChanged()); - assertChangedLines(changes, "0110000"); - - changes = new SnapshotChanges(7); - changes.scroll(0, 3, -1); - changes.scroll(0, 3, -1); - assertEquals(1, changes.getFirstChangedLine()); - assertEquals(2, changes.getLastChangedLine()); - assertEquals(0, changes.getScrollWindowStartLine()); - assertEquals(3, changes.getScrollWindowSize()); - assertEquals(-2, changes.getScrollWindowShift()); - assertTrue(changes.hasChanged()); - assertChangedLines(changes, "0110000"); - - changes = new SnapshotChanges(7); - changes.scroll(0, 7, -1); - changes.scroll(0, 7, -1); - assertEquals(5, changes.getFirstChangedLine()); - assertEquals(6, changes.getLastChangedLine()); - assertEquals(0, changes.getScrollWindowStartLine()); - assertEquals(7, changes.getScrollWindowSize()); - assertEquals(-2, changes.getScrollWindowShift()); - assertTrue(changes.hasChanged()); - assertChangedLines(changes, "0000011"); - - // positive scrolls cannot be optimized at the moment - changes = new SnapshotChanges(7); - changes.scroll(0, 7, 1); - changes.scroll(0, 7, 1); - assertEquals(0, changes.getFirstChangedLine()); - assertEquals(6, changes.getLastChangedLine()); - assertEquals(0, changes.getScrollWindowStartLine()); - assertEquals(0, changes.getScrollWindowSize()); - assertEquals(0, changes.getScrollWindowShift()); - assertTrue(changes.hasChanged()); - assertChangedLines(changes, "1111111"); - - } - - public void testScroll() { - SnapshotChanges changes; - changes = new SnapshotChanges(2, 3); - changes.scroll(0, 7, -1); - assertEquals(4, changes.getFirstChangedLine()); - assertEquals(4, changes.getLastChangedLine()); - assertEquals(2, changes.getScrollWindowStartLine()); - assertEquals(3, changes.getScrollWindowSize()); - assertEquals(-1, changes.getScrollWindowShift()); - assertTrue(changes.hasChanged()); - assertChangedLines(changes, "0000100000"); - - changes = new SnapshotChanges(2, 3); - changes.scroll(0, 7, -2); - assertEquals(3, changes.getFirstChangedLine()); - assertEquals(4, changes.getLastChangedLine()); - assertEquals(2, changes.getScrollWindowStartLine()); - assertEquals(3, changes.getScrollWindowSize()); - assertEquals(-2, changes.getScrollWindowShift()); - assertTrue(changes.hasChanged()); - assertChangedLines(changes, "0001100000"); - } - - public void testScrollNergative() { - SnapshotChanges changes; - changes = new SnapshotChanges(2, 3); - changes.scroll(0, 7, -1); - changes.scroll(0, 7, -1); - assertEquals(3, changes.getFirstChangedLine()); - assertEquals(4, changes.getLastChangedLine()); - assertEquals(2, changes.getScrollWindowStartLine()); - assertEquals(3, changes.getScrollWindowSize()); - assertEquals(-2, changes.getScrollWindowShift()); - assertTrue(changes.hasChanged()); - assertChangedLines(changes, "0001100000"); - - } - - public void testScrollPositive() { - SnapshotChanges changes; - changes = new SnapshotChanges(2, 3); - changes.scroll(0, 7, 1); - changes.scroll(0, 7, 1); - assertEquals(2, changes.getFirstChangedLine()); - assertEquals(4, changes.getLastChangedLine()); - assertEquals(0, changes.getScrollWindowStartLine()); - assertEquals(0, changes.getScrollWindowSize()); - assertEquals(0, changes.getScrollWindowShift()); - assertTrue(changes.hasChanged()); - assertChangedLines(changes, "0011100000"); - - changes = new SnapshotChanges(2, 3); - changes.scroll(0, 3, 1); - changes.scroll(0, 3, 1); - assertEquals(2, changes.getFirstChangedLine()); - assertEquals(2, changes.getLastChangedLine()); - assertEquals(0, changes.getScrollWindowStartLine()); - assertEquals(0, changes.getScrollWindowSize()); - assertEquals(0, changes.getScrollWindowShift()); - assertTrue(changes.hasChanged()); - assertChangedLines(changes, "0010000000"); - - changes = new SnapshotChanges(2, 3); - changes.scroll(0, 4, 1); - changes.scroll(0, 4, 1); - assertEquals(2, changes.getFirstChangedLine()); - assertEquals(3, changes.getLastChangedLine()); - assertEquals(0, changes.getScrollWindowStartLine()); - assertEquals(0, changes.getScrollWindowSize()); - assertEquals(0, changes.getScrollWindowShift()); - assertTrue(changes.hasChanged()); - assertChangedLines(changes, "0011000000"); - - changes = new SnapshotChanges(2, 3); - changes.scroll(0, 5, 1); - changes.scroll(0, 5, 1); - assertEquals(2, changes.getFirstChangedLine()); - assertEquals(4, changes.getLastChangedLine()); - assertEquals(0, changes.getScrollWindowStartLine()); - assertEquals(0, changes.getScrollWindowSize()); - assertEquals(0, changes.getScrollWindowShift()); - assertTrue(changes.hasChanged()); - assertChangedLines(changes, "0011100000"); - - changes = new SnapshotChanges(2, 3); - changes.scroll(3, 5, 1); - changes.scroll(3, 5, 1); - assertEquals(3, changes.getFirstChangedLine()); - assertEquals(4, changes.getLastChangedLine()); - assertEquals(0, changes.getScrollWindowStartLine()); - assertEquals(0, changes.getScrollWindowSize()); - assertEquals(0, changes.getScrollWindowShift()); - assertTrue(changes.hasChanged()); - assertChangedLines(changes, "0001100000"); - } - - public void testCopyChangedLines() { - SnapshotChanges changes; - changes = new SnapshotChanges(2, 3); - changes.markLineChanged(3); - ITerminalTextData source = new TerminalTextDataStore(); - TerminalTextTestHelper.fillSimple(source, "01234567890"); - ITerminalTextData dest = new TerminalTextDataStore(); - TerminalTextTestHelper.fillSimple(dest, "abcdefghijk"); - - changes.copyChangedLines(dest, source); - assertEquals("abc3efghijk", TerminalTextTestHelper.toSimple(dest)); - - changes = new SnapshotChanges(2, 3); - changes.setAllChanged(7); - source = new TerminalTextDataStore(); - TerminalTextTestHelper.fillSimple(source, "01234567890"); - dest = new TerminalTextDataStore(); - TerminalTextTestHelper.fillSimple(dest, "abcdefghijk"); - - changes.copyChangedLines(dest, source); - assertEquals("ab234fghijk", TerminalTextTestHelper.toSimple(dest)); - - changes = new SnapshotChanges(2, 3); - changes.scroll(0, 7, -1); - source = new TerminalTextDataStore(); - TerminalTextTestHelper.fillSimple(source, "01234567890"); - dest = new TerminalTextDataStore(); - TerminalTextTestHelper.fillSimple(dest, "abcdefghijk"); - // only one line has changed! The other lines are scrolled! - assertChangedLines(changes, "00001000"); - changes.copyChangedLines(dest, source); - assertEquals("abcd4fghijk", TerminalTextTestHelper.toSimple(dest)); - } - - public void testCopyChangedLinesWithSmallSource() { - SnapshotChanges changes; - changes = new SnapshotChanges(2, 3); - changes.markLineChanged(3); - ITerminalTextData source = new TerminalTextDataStore(); - source.setDimensions(2, 2); - TerminalTextDataWindow dest = new TerminalTextDataWindow(); - dest.setWindow(2, 2); - changes.copyChangedLines(dest, source); - } - - public void testCopyChangedLinesWithSmallSource1() { - SnapshotChanges changes; - changes = new SnapshotChanges(2, 3); - changes.markLineChanged(3); - ITerminalTextData source = new TerminalTextDataStore(); - TerminalTextTestHelper.fillSimple(source, "01"); - ITerminalTextData dest = new TerminalTextDataStore(); - changes.copyChangedLines(dest, source); - } - - public void testSetInterestWindowSize() { - SnapshotChanges changes; - changes = new SnapshotChanges(2, 3); - // move the window - changes.setInterestWindow(3, 3); - // only one line has changed! The other lines are scrolled! - assertEquals(3, changes.getScrollWindowStartLine()); - assertEquals(3, changes.getScrollWindowSize()); - assertEquals(-1, changes.getScrollWindowShift()); - - assertChangedLines(changes, "0000010"); - changes.convertScrollingIntoChanges(); - assertChangedLines(changes, "0001110"); - - changes = new SnapshotChanges(2, 3); - // move the window - changes.setInterestWindow(3, 4); - // only one line has changed! The other lines are scrolled! - assertEquals(3, changes.getScrollWindowStartLine()); - assertEquals(3, changes.getScrollWindowSize()); - assertEquals(-1, changes.getScrollWindowShift()); - - assertChangedLines(changes, "0000011"); - changes.convertScrollingIntoChanges(); - assertChangedLines(changes, "0001111"); - - changes = new SnapshotChanges(2, 3); - // move the window - changes.setInterestWindow(6, 3); - // cannot scroll - assertEquals(0, changes.getScrollWindowStartLine()); - assertEquals(0, changes.getScrollWindowSize()); - assertEquals(0, changes.getScrollWindowShift()); - assertChangedLines(changes, "000000111000"); - - changes = new SnapshotChanges(2, 3); - // expand the window - changes.setInterestWindow(2, 5); - // cannot scroll - assertEquals(0, changes.getScrollWindowStartLine()); - assertEquals(0, changes.getScrollWindowSize()); - assertEquals(0, changes.getScrollWindowShift()); - - assertChangedLines(changes, "0000011000"); - } - - public void testSetInterestWindowSize2() { - SnapshotChanges changes; - changes = new SnapshotChanges(2, 3); - // move the window - changes.setInterestWindow(1, 3); - assertChangedLines(changes, "0111000"); - - changes = new SnapshotChanges(2, 3); - // move the window - changes.setInterestWindow(1, 4); - assertChangedLines(changes, "01111000"); - - changes = new SnapshotChanges(2, 3); - // expand the window - changes.setInterestWindow(6, 3); - assertChangedLines(changes, "000000111000"); - - changes = new SnapshotChanges(2, 3); - // expand the window - changes.setInterestWindow(1, 2); - assertChangedLines(changes, "0110000"); - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/SynchronizedTerminalTextDataTest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/SynchronizedTerminalTextDataTest.java deleted file mode 100644 index cca7990c9fc..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/SynchronizedTerminalTextDataTest.java +++ /dev/null @@ -1,21 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.internal.terminal.model; - -import org.eclipse.tm.terminal.model.ITerminalTextData; - -public class SynchronizedTerminalTextDataTest extends AbstractITerminalTextDataTest { - @Override - protected ITerminalTextData makeITerminalTextData() { - return new SynchronizedTerminalTextData(new TerminalTextData()); - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataFastScrollMaxHeightTest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataFastScrollMaxHeightTest.java deleted file mode 100644 index c21c2d55c6d..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataFastScrollMaxHeightTest.java +++ /dev/null @@ -1,21 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.internal.terminal.model; - -import org.eclipse.tm.terminal.model.ITerminalTextData; - -public class TerminalTextDataFastScrollMaxHeightTest extends AbstractITerminalTextDataTest { - @Override - protected ITerminalTextData makeITerminalTextData() { - return new TerminalTextDataFastScroll(1); - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataFastScrollTest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataFastScrollTest.java deleted file mode 100644 index 5a0bb80a773..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataFastScrollTest.java +++ /dev/null @@ -1,21 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.internal.terminal.model; - -import org.eclipse.tm.terminal.model.ITerminalTextData; - -public class TerminalTextDataFastScrollTest extends AbstractITerminalTextDataTest { - @Override - protected ITerminalTextData makeITerminalTextData() { - return new TerminalTextDataFastScroll(3); - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataPerformanceTest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataPerformanceTest.java deleted file mode 100644 index 6bfbb44237c..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataPerformanceTest.java +++ /dev/null @@ -1,230 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.internal.terminal.model; - -import org.eclipse.tm.terminal.model.ITerminalTextData; -import org.eclipse.tm.terminal.model.ITerminalTextDataSnapshot; -import org.eclipse.tm.terminal.model.TerminalStyle; - -import junit.framework.TestCase; - -public class TerminalTextDataPerformanceTest extends TestCase { - long TIME = 100; - - private void initPerformance(ITerminalTextData term) { - term.setDimensions(300, 200); - } - - public void testPerformance0() { - ITerminalTextData term = new TerminalTextData(); - method0(term, "0 "); - } - - public void testPerformance0a() { - ITerminalTextData term = new TerminalTextData(); - ITerminalTextDataSnapshot snapshot = term.makeSnapshot(); - method0(term, "0a"); - snapshot.updateSnapshot(true); - } - - public void testPerformance0b() { - ITerminalTextData term = new TerminalTextData(); - ITerminalTextDataSnapshot snapshot = term.makeSnapshot(); - N = 0; - snapshot.addListener(snapshot1 -> N++); - method0(term, "0b"); - snapshot.updateSnapshot(true); - } - - private void method0(ITerminalTextData term, String label) { - TerminalStyle style = TerminalStyle.getDefaultStyle(); - initPerformance(term); - String s = "This is a test string"; - long n = 0; - long t0 = System.currentTimeMillis(); - for (int i = 0; i < 10000000; i++) { - char c = s.charAt(i % s.length()); - for (int line = 0; line < term.getHeight(); line++) { - for (int column = 0; column < term.getWidth(); column++) { - term.setChar(line, column, c, style); - n++; - } - } - if (System.currentTimeMillis() - t0 > TIME) { - System.out - .println(label + " " + (n * 1000) / (System.currentTimeMillis() - t0) + " setChar()/sec " + N); - break; - } - } - } - - public void testPerformance1() { - ITerminalTextData term = new TerminalTextData(); - method1(term, "1 "); - } - - public void testPerformance1a() { - ITerminalTextData term = new TerminalTextData(); - ITerminalTextDataSnapshot snapshot = term.makeSnapshot(); - method1(term, "1a"); - snapshot.updateSnapshot(true); - } - - public void testPerformance1b() { - ITerminalTextData term = new TerminalTextData(); - ITerminalTextDataSnapshot snapshot = term.makeSnapshot(); - N = 0; - snapshot.addListener(snapshot1 -> N++); - method1(term, "1b"); - snapshot.updateSnapshot(true); - } - - private void method1(ITerminalTextData term, String label) { - TerminalStyle style = TerminalStyle.getDefaultStyle(); - initPerformance(term); - String s = "This is a test string"; - long n = 0; - long t0 = System.currentTimeMillis(); - char[] chars = new char[term.getWidth()]; - for (int i = 0; i < 10000000; i++) { - for (int j = 0; j < chars.length; j++) { - chars[j] = s.charAt((i + j) % s.length()); - } - for (int line = 0; line < term.getHeight(); line++) { - term.setChars(line, 0, chars, style); - n += chars.length; - } - if (System.currentTimeMillis() - t0 > TIME) { - System.out - .println(label + " " + (n * 1000) / (System.currentTimeMillis() - t0) + " setChars()/sec " + N); - break; - } - } - } - - public void testPerformance2() { - TerminalTextData term = new TerminalTextData(); - TerminalStyle style = TerminalStyle.getDefaultStyle(); - initPerformance(term); - TerminalTextData copy = new TerminalTextData(); - copy.copy(term); - - String s = "This is a test string"; - long n = 0; - long t0 = System.currentTimeMillis(); - char[] chars = new char[term.getWidth()]; - for (int i = 0; i < 10000000; i++) { - for (int j = 0; j < chars.length; j++) { - chars[j] = s.charAt((i + j) % s.length()); - } - for (int line = 0; line < term.getHeight(); line++) { - term.setChars(line, 0, chars, 0, 1, style); - copy.copy(term); - n += 1; - if (System.currentTimeMillis() - t0 > TIME) { - System.out.println((n * 1000) / (System.currentTimeMillis() - t0) + " copy()/sec"); - return; - } - } - } - } - - public void testPerformance2a() { - TerminalTextData term = new TerminalTextData(); - ITerminalTextDataSnapshot snapshot = term.makeSnapshot(); - TerminalStyle style = TerminalStyle.getDefaultStyle(); - initPerformance(term); - TerminalTextData copy = new TerminalTextData(); - copy.copy(term); - - String s = "This is a test string"; - long n = 0; - long t0 = System.currentTimeMillis(); - char[] chars = new char[term.getWidth()]; - for (int i = 0; i < 10000000; i++) { - for (int j = 0; j < chars.length; j++) { - chars[j] = s.charAt((i + j) % s.length()); - } - for (int line = 0; line < term.getHeight(); line++) { - term.setChars(line, 0, chars, 0, 1, style); - copy.copy(term); - n += 1; - if (System.currentTimeMillis() - t0 > TIME) { - System.out.println((n * 1000) / (System.currentTimeMillis() - t0) + " copy()/sec"); - return; - } - } - } - snapshot.updateSnapshot(true); - } - - int N = 0; - - public void testPerformance2b() { - TerminalTextData term = new TerminalTextData(); - ITerminalTextDataSnapshot snapshot = term.makeSnapshot(); - N = 0; - snapshot.addListener(snapshot1 -> N++); - TerminalStyle style = TerminalStyle.getDefaultStyle(); - initPerformance(term); - TerminalTextData copy = new TerminalTextData(); - copy.copy(term); - - String s = "This is a test string"; - long n = 0; - long t0 = System.currentTimeMillis(); - char[] chars = new char[term.getWidth()]; - for (int i = 0; i < 10000000; i++) { - for (int j = 0; j < chars.length; j++) { - chars[j] = s.charAt((i + j) % s.length()); - } - for (int line = 0; line < term.getHeight(); line++) { - term.setChars(line, 0, chars, 0, 1, style); - copy.copy(term); - n += 1; - if (System.currentTimeMillis() - t0 > TIME) { - System.out.println((n * 1000) / (System.currentTimeMillis() - t0) + " copy()/sec " + n); - return; - } - } - } - snapshot.updateSnapshot(true); - } - - public void testPerformance3() { - TerminalTextData term = new TerminalTextData(); - TerminalStyle style = TerminalStyle.getDefaultStyle(); - initPerformance(term); - TerminalTextData copy = new TerminalTextData(); - copy.copy(term); - String s = "This is a test string"; - long n = 0; - long t0 = System.currentTimeMillis(); - char[] chars = new char[term.getWidth()]; - for (int i = 0; i < 10000000; i++) { - boolean[] linesToCopy = new boolean[term.getHeight()]; - for (int j = 0; j < chars.length; j++) { - chars[j] = s.charAt((i + j) % s.length()); - } - for (int line = 0; line < term.getHeight(); line++) { - term.setChars(line, 0, chars, 0, 1, style); - linesToCopy[line] = true; - copy.copyLine(term, 0, 0); - linesToCopy[line] = false; - n += 1; - if (System.currentTimeMillis() - t0 > TIME) { - System.out.println((n * 1000) / (System.currentTimeMillis() - t0) + " copy()/sec"); - return; - } - } - } - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataSnapshotTest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataSnapshotTest.java deleted file mode 100644 index 56b9b145b42..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataSnapshotTest.java +++ /dev/null @@ -1,1234 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.internal.terminal.model; - -import org.eclipse.tm.terminal.model.ITerminalTextData; -import org.eclipse.tm.terminal.model.ITerminalTextDataReadOnly; -import org.eclipse.tm.terminal.model.ITerminalTextDataSnapshot; -import org.eclipse.tm.terminal.model.TerminalStyle; - -import junit.framework.TestCase; - -public class TerminalTextDataSnapshotTest extends TestCase { - String toMultiLineText(ITerminalTextDataReadOnly term) { - return TerminalTextTestHelper.toMultiLineText(term); - } - - protected ITerminalTextData makeITerminalTextData() { - return new TerminalTextData(); - } - - public void testTerminalTextDataSnapshot() { - ITerminalTextData term = makeITerminalTextData(); - String s = "12345\n" + "abcde\n" + "ABCDE\n" + "vwxzy\n" + "VWXYZ"; - TerminalTextTestHelper.fill(term, s); - - ITerminalTextDataSnapshot snapshot = term.makeSnapshot(); - snapshot.updateSnapshot(false); - - assertEquals(toMultiLineText(term), toMultiLineText(snapshot)); - - // new snapshots are fully changed - assertEquals(0, snapshot.getFirstChangedLine()); - assertEquals(term.getHeight() - 1, snapshot.getLastChangedLine()); - for (int line = 0; line <= snapshot.getLastChangedLine(); line++) { - assertTrue(snapshot.hasLineChanged(line)); - } - // nothing has scrolled - assertEquals(0, snapshot.getScrollWindowSize()); - } - - public void testDetach() { - ITerminalTextData term = makeITerminalTextData(); - String s = "12345\n" + "abcde\n" + "ABCDE\n" + "vwxzy\n" + "VWXYZ"; - TerminalTextTestHelper.fill(term, s); - - ITerminalTextDataSnapshot snapshot = term.makeSnapshot(); - snapshot.updateSnapshot(false); - - assertEquals(toMultiLineText(term), toMultiLineText(snapshot)); - snapshot.detach(); - // after detach changes to the term has no effect - term.setChar(0, 0, '?', null); - assertEquals(s, toMultiLineText(snapshot)); - term.setDimensions(2, 2); - assertEquals(s, toMultiLineText(snapshot)); - } - - public void testIsOutOfDate() { - ITerminalTextData term = makeITerminalTextData(); - String s = "12345\n" + "abcde\n" + "ABCDE\n" + "vwxzy\n" + "VWXYZ"; - TerminalTextTestHelper.fill(term, s); - - ITerminalTextDataSnapshot snapshot = term.makeSnapshot(); - assertTrue(snapshot.isOutOfDate()); - snapshot.updateSnapshot(false); - - assertFalse(snapshot.isOutOfDate()); - - // make a change and expect it to be changed - term.setChar(0, 0, '?', null); - assertTrue(snapshot.isOutOfDate()); - - snapshot.updateSnapshot(false); - assertFalse(snapshot.isOutOfDate()); - - // make a change and expect it to be changed - term.setChars(1, 1, new char[] { '?', '!', '.' }, null); - assertTrue(snapshot.isOutOfDate()); - - snapshot.updateSnapshot(false); - assertFalse(snapshot.isOutOfDate()); - - // scroll - term.scroll(1, 2, -1); - assertTrue(snapshot.isOutOfDate()); - - snapshot.updateSnapshot(false); - assertFalse(snapshot.isOutOfDate()); - - // scroll - term.scroll(1, 2, 1); - assertTrue(snapshot.isOutOfDate()); - - snapshot.updateSnapshot(false); - assertFalse(snapshot.isOutOfDate()); - - // scroll - term.scroll(1, 2, -1); - assertTrue(snapshot.isOutOfDate()); - - snapshot.updateSnapshot(true); - assertFalse(snapshot.isOutOfDate()); - - // scroll - term.scroll(1, 2, 1); - assertTrue(snapshot.isOutOfDate()); - - snapshot.updateSnapshot(true); - assertFalse(snapshot.isOutOfDate()); - - // setDimensions - term.setDimensions(2, 2); - assertTrue(snapshot.isOutOfDate()); - - snapshot.updateSnapshot(false); - assertFalse(snapshot.isOutOfDate()); - - // setDimensions - term.setDimensions(20, 20); - assertTrue(snapshot.isOutOfDate()); - - snapshot.updateSnapshot(false); - assertFalse(snapshot.isOutOfDate()); - - } - - ITerminalTextDataSnapshot snapshot(String text, ITerminalTextData term) { - TerminalTextTestHelper.fill(term, text); - ITerminalTextDataSnapshot snapshot = term.makeSnapshot(); - snapshot.updateSnapshot(false); - - return snapshot; - - } - - public void testUpdateSnapshot() { - ITerminalTextData term = makeITerminalTextData(); - String s = "12345\n" + "abcde\n" + "ABCDE\n" + "vwxzy\n" + "VWXYZ"; - TerminalTextTestHelper.fill(term, s); - String termString = toMultiLineText(term); - ITerminalTextDataSnapshot snapshot = term.makeSnapshot(); - snapshot.updateSnapshot(false); - - assertEquals(termString, toMultiLineText(snapshot)); - - // make changes and assert that the snapshot has not changed - // then update the snapshot and expect it to be the - // same as the changed terminal - - // make a change - term.setChar(0, 0, '?', null); - assertEquals(termString, toMultiLineText(snapshot)); - - snapshot.updateSnapshot(false); - termString = toMultiLineText(term); - assertEquals(termString, toMultiLineText(snapshot)); - - // make a change - term.setChars(1, 1, new char[] { '?', '!', '.' }, null); - assertEquals(termString, toMultiLineText(snapshot)); - - snapshot.updateSnapshot(false); - termString = toMultiLineText(term); - assertEquals(termString, toMultiLineText(snapshot)); - - // scroll - term.scroll(1, 2, -1); - assertEquals(termString, toMultiLineText(snapshot)); - - snapshot.updateSnapshot(false); - termString = toMultiLineText(term); - assertEquals(termString, toMultiLineText(snapshot)); - - // scroll - term.scroll(1, 2, 1); - assertEquals(termString, toMultiLineText(snapshot)); - - snapshot.updateSnapshot(false); - termString = toMultiLineText(term); - assertEquals(termString, toMultiLineText(snapshot)); - - // scroll - term.scroll(1, 2, -1); - assertEquals(termString, toMultiLineText(snapshot)); - - snapshot.updateSnapshot(true); - termString = toMultiLineText(term); - assertEquals(termString, toMultiLineText(snapshot)); - - // scroll - term.scroll(1, 2, 1); - assertEquals(termString, toMultiLineText(snapshot)); - - snapshot.updateSnapshot(true); - termString = toMultiLineText(term); - assertEquals(termString, toMultiLineText(snapshot)); - - // set dimensions - term.setDimensions(2, 2); - assertEquals(termString, toMultiLineText(snapshot)); - - snapshot.updateSnapshot(false); - termString = toMultiLineText(term); - assertEquals(termString, toMultiLineText(snapshot)); - - // set dimensions - term.setDimensions(20, 20); - assertEquals(termString, toMultiLineText(snapshot)); - - snapshot.updateSnapshot(false); - termString = toMultiLineText(term); - assertEquals(termString, toMultiLineText(snapshot)); - } - - public void testMaxSize() { - String s = "111\n" + "222\n" + "333\n" + "444\n" + "555"; - ITerminalTextData term = makeITerminalTextData(); - term.setMaxHeight(8); - TerminalTextTestHelper.fill(term, s); - ITerminalTextDataSnapshot snapshot = term.makeSnapshot(); - snapshot.updateSnapshot(false); - - term.addLine(); - assertTrue(snapshot.isOutOfDate()); - snapshot.updateSnapshot(false); - assertEquals(toMultiLineText(term), toMultiLineText(snapshot)); - - term.addLine(); - assertTrue(snapshot.isOutOfDate()); - snapshot.updateSnapshot(false); - assertEquals(toMultiLineText(term), toMultiLineText(snapshot)); - - term.addLine(); - assertTrue(snapshot.isOutOfDate()); - snapshot.updateSnapshot(false); - assertEquals(toMultiLineText(term), toMultiLineText(snapshot)); - - term.addLine(); - assertTrue(snapshot.isOutOfDate()); - snapshot.updateSnapshot(false); - assertEquals(toMultiLineText(term), toMultiLineText(snapshot)); - - term.addLine(); - assertTrue(snapshot.isOutOfDate()); - snapshot.updateSnapshot(false); - assertEquals(toMultiLineText(term), toMultiLineText(snapshot)); - - } - - public void testGetChar() { - ITerminalTextData term = makeITerminalTextData(); - String s = "12345\n" + "abcde\n" + "ABCDE\n" + "vwxzy\n" + "VWXYZ"; - TerminalTextTestHelper.fill(term, s); - ITerminalTextData termUnchanged = makeITerminalTextData(); - TerminalTextTestHelper.fill(termUnchanged, s); - - ITerminalTextDataSnapshot snapshot = term.makeSnapshot(); - snapshot.updateSnapshot(false); - - for (int line = 0; line < snapshot.getHeight(); line++) { - for (int column = 0; column < snapshot.getWidth(); column++) { - assertEquals(term.getChar(line, column), snapshot.getChar(line, column)); - } - } - // make a change - term.setChar(0, 0, '?', null); - // check against unchanged data - for (int line = 0; line < snapshot.getHeight(); line++) { - for (int column = 0; column < snapshot.getWidth(); column++) { - assertEquals(termUnchanged.getChar(line, column), snapshot.getChar(line, column)); - } - } - // update and compare against the terminal - snapshot.updateSnapshot(true); - for (int line = 0; line < snapshot.getHeight(); line++) { - for (int column = 0; column < snapshot.getWidth(); column++) { - assertEquals(term.getChar(line, column), snapshot.getChar(line, column)); - } - } - - } - - public void testGetHeight() { - ITerminalTextData term = makeITerminalTextData(); - String s = "12345\n" + "abcde\n" + "ABCDE\n" + "vwxzy\n" + "VWXYZ"; - TerminalTextTestHelper.fill(term, s); - - ITerminalTextDataSnapshot snapshot = term.makeSnapshot(); - snapshot.updateSnapshot(false); - - int expectedHeight = term.getHeight(); - assertEquals(expectedHeight, snapshot.getHeight()); - term.setDimensions(term.getHeight() - 1, term.getWidth()); - assertEquals(expectedHeight, snapshot.getHeight()); - - // - snapshot.updateSnapshot(false); - expectedHeight = term.getHeight(); - assertEquals(expectedHeight, snapshot.getHeight()); - term.setDimensions(term.getHeight() - 1, term.getWidth()); - assertEquals(expectedHeight, snapshot.getHeight()); - } - - // - // public void testGetLineSegments() { - // fail("Not yet implemented"); - // } - // - public void testGetStyle() { - ITerminalTextData term = makeITerminalTextData(); - TerminalStyle style = TerminalStyle.getDefaultStyle(); - term.setDimensions(6, 3); - for (int line = 0; line < term.getHeight(); line++) { - for (int column = 0; column < term.getWidth(); column++) { - char c = (char) ('a' + column + line); - term.setChar(line, column, c, style.setForeground(c)); - } - } - ITerminalTextDataSnapshot snapshot = term.makeSnapshot(); - snapshot.updateSnapshot(false); - - for (int line = 0; line < term.getHeight(); line++) { - for (int column = 0; column < term.getWidth(); column++) { - char c = (char) ('a' + column + line); - assertSame(style.setForeground(c), snapshot.getStyle(line, column)); - } - } - - } - - public void testGetWidth() { - ITerminalTextData term = makeITerminalTextData(); - String s = "12345\n" + "abcde\n" + "ABCDE\n" + "vwxzy\n" + "VWXYZ"; - TerminalTextTestHelper.fill(term, s); - - ITerminalTextDataSnapshot snapshot = term.makeSnapshot(); - snapshot.updateSnapshot(false); - - int expectedWidth = term.getWidth(); - assertEquals(expectedWidth, snapshot.getWidth()); - term.setDimensions(term.getHeight(), term.getWidth() - 1); - assertEquals(expectedWidth, snapshot.getWidth()); - - // - snapshot.updateSnapshot(false); - expectedWidth = term.getWidth(); - assertEquals(expectedWidth, snapshot.getWidth()); - term.setDimensions(term.getHeight(), term.getWidth() - 1); - assertEquals(expectedWidth, snapshot.getWidth()); - } - - public void testGetFirstChangedLine() { - ITerminalTextData term = makeITerminalTextData(); - String s = "12345\n" + "abcde\n" + "ABCDE\n" + "vwxzy\n" + "VWXYZ"; - ITerminalTextDataSnapshot snapshot = snapshot(s, term); - - assertEquals(0, snapshot.getFirstChangedLine()); - - // if nothing has changed the first changed line i height - snapshot.updateSnapshot(false); - assertEquals(Integer.MAX_VALUE, snapshot.getFirstChangedLine()); - - snapshot = snapshot(s, term); - term.setChar(0, 0, 'x', null); - snapshot.updateSnapshot(false); - assertEquals(0, snapshot.getFirstChangedLine()); - - snapshot = snapshot(s, term); - term.setChar(3, 0, 'x', null); - term.setChar(4, 0, 'x', null); - snapshot.updateSnapshot(false); - assertEquals(3, snapshot.getFirstChangedLine()); - - snapshot = snapshot(s, term); - term.scroll(0, 1, -1); - snapshot.updateSnapshot(false); - assertEquals(0, snapshot.getFirstChangedLine()); - - snapshot = snapshot(s, term); - term.scroll(2, 2, -1); - snapshot.updateSnapshot(false); - assertEquals(2, snapshot.getFirstChangedLine()); - - // when scrolling the end of the region 'has changed' - snapshot = snapshot(s, term); - term.scroll(2, 2, -1); - snapshot.updateSnapshot(true); - assertEquals(3, snapshot.getFirstChangedLine()); - - // when scrolling the end of the region 'has changed' - snapshot = snapshot(s, term); - term.scroll(2, 2, -1); - term.setChar(1, 0, 'x', null); - snapshot.updateSnapshot(true); - assertEquals(1, snapshot.getFirstChangedLine()); - - } - - public void testGetLastChangedLine() { - ITerminalTextData term = makeITerminalTextData(); - String s = "12345\n" + "abcde\n" + "ABCDE\n" + "vwxzy\n" + "VWXYZ"; - ITerminalTextDataSnapshot snapshot = snapshot(s, term); - - assertEquals(4, snapshot.getLastChangedLine()); - - // if nothing has changed the first changed line i height - snapshot.updateSnapshot(false); - assertEquals(-1, snapshot.getLastChangedLine()); - - snapshot = snapshot(s, term); - term.setChar(0, 0, 'x', null); - snapshot.updateSnapshot(false); - assertEquals(0, snapshot.getLastChangedLine()); - - snapshot = snapshot(s, term); - term.cleanLine(1); - snapshot.updateSnapshot(false); - assertEquals(1, snapshot.getLastChangedLine()); - - snapshot = snapshot(s, term); - term.setChar(3, 0, 'x', null); - term.setChar(4, 0, 'x', null); - snapshot.updateSnapshot(false); - assertEquals(4, snapshot.getLastChangedLine()); - - snapshot = snapshot(s, term); - term.scroll(0, 1, -1); - snapshot.updateSnapshot(false); - assertEquals(0, snapshot.getLastChangedLine()); - - snapshot = snapshot(s, term); - term.scroll(2, 2, -1); - snapshot.updateSnapshot(false); - assertEquals(3, snapshot.getLastChangedLine()); - - // when scrolling the end of the region 'has changed' - snapshot = snapshot(s, term); - term.scroll(2, 2, -1); - snapshot.updateSnapshot(true); - assertEquals(3, snapshot.getLastChangedLine()); - - // when scrolling the end of the region 'has changed' - snapshot = snapshot(s, term); - term.scroll(2, 2, -1); - term.setChar(1, 0, 'x', null); - snapshot.updateSnapshot(true); - assertEquals(3, snapshot.getLastChangedLine()); - - } - - /** - * @param snapshot - * @param expected a string of 0 and 1 (1 means changed) - */ - void assertChangedLines(ITerminalTextDataSnapshot snapshot, String expected) { - assertEquals(expected.length(), snapshot.getHeight()); - StringBuffer buffer = new StringBuffer(); - for (int line = 0; line < expected.length(); line++) { - if (snapshot.hasLineChanged(line)) - buffer.append('1'); - else - buffer.append('0'); - } - assertEquals(expected, buffer.toString()); - } - - public void testHasLineChangedScroll() { - ITerminalTextData term = makeITerminalTextData(); - String s = "00\n" + "11\n" + "22\n" + "33\n" + "44\n" + "55\n" + "66\n" + "77\n" + "88\n" + "99"; - ITerminalTextDataSnapshot snapshot = snapshot(s, term); - - term.scroll(2, 3, -1); - snapshot.updateSnapshot(true); - assertChangedLines(snapshot, "0000100000"); - - snapshot = snapshot(s, term); - term.scroll(2, 3, -2); - snapshot.updateSnapshot(true); - assertChangedLines(snapshot, "0001100000"); - - snapshot = snapshot(s, term); - term.scroll(2, 4, -1); - term.scroll(2, 4, -1); - snapshot.updateSnapshot(true); - assertChangedLines(snapshot, "0000110000"); - - term.scroll(2, 3, 1); - snapshot.updateSnapshot(true); - assertChangedLines(snapshot, "0011100000"); - - snapshot = snapshot(s, term); - term.scroll(2, 3, 2); - snapshot.updateSnapshot(true); - assertChangedLines(snapshot, "0011100000"); - - snapshot = snapshot(s, term); - term.scroll(2, 4, 1); - term.scroll(2, 4, 1); - snapshot.updateSnapshot(true); - assertChangedLines(snapshot, "0011110000"); - - snapshot = snapshot(s, term); - term.scroll(2, 3, -1); - snapshot.updateSnapshot(false); - assertChangedLines(snapshot, "0011100000"); - - snapshot = snapshot(s, term); - term.scroll(2, 3, -2); - snapshot.updateSnapshot(false); - assertChangedLines(snapshot, "0011100000"); - - snapshot = snapshot(s, term); - term.scroll(2, 4, -1); - term.scroll(2, 4, -1); - snapshot.updateSnapshot(false); - assertChangedLines(snapshot, "0011110000"); - } - - public void testMultiScrollWithDifferentSizes() { - ITerminalTextData term = makeITerminalTextData(); - String s = "00\n" + "11\n" + "22\n" + "33\n" + "44\n" + "55\n" + "66\n" + "77\n" + "88\n" + "99"; - ITerminalTextDataSnapshot snapshot; - - snapshot = snapshot(s, term); - term.scroll(2, 6, -1); - term.scroll(2, 5, -1); - snapshot.updateSnapshot(false); - assertChangedLines(snapshot, "0011111100"); - assertEquals(2, snapshot.getFirstChangedLine()); - assertEquals(7, snapshot.getLastChangedLine()); - assertEquals(0, snapshot.getScrollWindowSize()); - assertEquals(0, snapshot.getScrollWindowStartLine()); - assertEquals(0, snapshot.getScrollWindowShift()); - - // scrolls with different ranges cause no scroll - // optimization - snapshot = snapshot(s, term); - term.scroll(2, 6, -1); - term.scroll(2, 5, -1); - snapshot.updateSnapshot(true); - assertChangedLines(snapshot, "0011111100"); - assertEquals(2, snapshot.getFirstChangedLine()); - assertEquals(7, snapshot.getLastChangedLine()); - assertEquals(0, snapshot.getScrollWindowShift()); - assertEquals(0, snapshot.getScrollWindowSize()); - assertEquals(0, snapshot.getScrollWindowStartLine()); - } - - public void testHasLineChanged() { - ITerminalTextData term = makeITerminalTextData(); - String s = "000000\n" + "111111\n" + "222222\n" + "333333\n" + "444444\n" + "555555\n" + "666666\n" + "777777\n" - + "888888\n" + "999999"; - ITerminalTextDataSnapshot snapshot; - - snapshot = snapshot(s, term); - term.scroll(2, 3, -1); - term.setChar(7, 0, '.', null); - snapshot.updateSnapshot(true); - assertChangedLines(snapshot, "0000100100"); - - snapshot = snapshot(s, term); - term.scroll(2, 3, -2); - term.setChar(9, 0, '.', null); - term.setChars(0, 0, new char[] { '.', '!' }, null); - snapshot.updateSnapshot(true); - assertChangedLines(snapshot, "1001100001"); - - snapshot = snapshot(s, term); - term.scroll(2, 4, -1); - term.scroll(2, 4, -1); - term.setChars(2, 2, new char[] { '.', '!', '*' }, 1, 1, null); - snapshot.updateSnapshot(true); - assertChangedLines(snapshot, "0010110000"); - - snapshot = snapshot(s, term); - term.scroll(2, 7, -1); - term.setChar(5, 2, '.', null); - term.scroll(2, 7, -2); - snapshot.updateSnapshot(true); - assertChangedLines(snapshot, "0001001110"); - - snapshot = snapshot(s, term); - term.scroll(2, 7, -1); - term.setChar(5, 2, '.', null); - term.scroll(2, 7, -2); - snapshot.updateSnapshot(false); - assertChangedLines(snapshot, "0011111110"); - - } - - public void testScroll() { - ITerminalTextData term = makeITerminalTextData(); - String s = "00\n" + "11\n" + "22\n" + "33\n" + "44\n" + "55\n" + "66\n" + "77\n" + "88\n" + "99"; - ITerminalTextDataSnapshot snapshot = snapshot(s, term); - - term.scroll(2, 3, -1); - snapshot.updateSnapshot(true); - assertEquals(2, snapshot.getScrollWindowStartLine()); - assertEquals(3, snapshot.getScrollWindowSize()); - assertEquals(-1, snapshot.getScrollWindowShift()); - assertEquals(4, snapshot.getFirstChangedLine()); - assertEquals(4, snapshot.getLastChangedLine()); - - term.scroll(2, 3, -2); - snapshot.updateSnapshot(true); - assertEquals(2, snapshot.getScrollWindowStartLine()); - assertEquals(3, snapshot.getScrollWindowSize()); - assertEquals(-2, snapshot.getScrollWindowShift()); - assertEquals(3, snapshot.getFirstChangedLine()); - assertEquals(4, snapshot.getLastChangedLine()); - - term.scroll(2, 4, -1); - term.scroll(2, 4, -1); - snapshot.updateSnapshot(true); - assertEquals(2, snapshot.getScrollWindowStartLine()); - assertEquals(4, snapshot.getScrollWindowSize()); - assertEquals(-2, snapshot.getScrollWindowShift()); - assertEquals(4, snapshot.getFirstChangedLine()); - assertEquals(5, snapshot.getLastChangedLine()); - - snapshot = snapshot(s, term); - term.scroll(2, 3, -1); - snapshot.updateSnapshot(false); - assertEquals(0, snapshot.getScrollWindowStartLine()); - assertEquals(0, snapshot.getScrollWindowSize()); - assertEquals(0, snapshot.getScrollWindowShift()); - assertEquals(2, snapshot.getFirstChangedLine()); - assertEquals(4, snapshot.getLastChangedLine()); - - } - - public void testDisjointScroll() { - ITerminalTextData term = makeITerminalTextData(); - String s = "000000\n" + "111111\n" + "222222\n" + "333333\n" + "444444\n" + "555555\n" + "666666\n" + "777777\n" - + "888888\n" + "999999"; - ITerminalTextDataSnapshot snapshot; - - snapshot = snapshot(s, term); - term.scroll(0, 2, -1); - term.scroll(4, 2, -1); - snapshot.updateSnapshot(true); - assertChangedLines(snapshot, "1100110000"); - assertEquals(0, snapshot.getScrollWindowStartLine()); - assertEquals(0, snapshot.getScrollWindowSize()); - assertEquals(0, snapshot.getScrollWindowShift()); - - snapshot = snapshot(s, term); - term.scroll(0, 3, -1); - term.scroll(2, 2, -2); - snapshot.updateSnapshot(true); - assertChangedLines(snapshot, "1111000000"); - assertEquals(0, snapshot.getScrollWindowStartLine()); - assertEquals(0, snapshot.getScrollWindowSize()); - assertEquals(0, snapshot.getScrollWindowShift()); - - snapshot = snapshot(s, term); - term.scroll(0, 3, -1); - term.scroll(2, 2, -2); - term.scroll(0, 3, -1); - snapshot.updateSnapshot(true); - assertChangedLines(snapshot, "1111000000"); - assertEquals(0, snapshot.getScrollWindowStartLine()); - assertEquals(0, snapshot.getScrollWindowSize()); - assertEquals(0, snapshot.getScrollWindowShift()); - - snapshot = snapshot(s, term); - term.scroll(0, 3, -1); - term.scroll(2, 2, -2); - term.scroll(0, 3, -10); - snapshot.updateSnapshot(true); - assertChangedLines(snapshot, "1111000000"); - assertEquals(0, snapshot.getScrollWindowStartLine()); - assertEquals(0, snapshot.getScrollWindowSize()); - assertEquals(0, snapshot.getScrollWindowShift()); - - snapshot = snapshot(s, term); - term.scroll(1, 3, -1); - term.scroll(1, 3, 1); - snapshot.updateSnapshot(true); - assertChangedLines(snapshot, "0111000000"); - assertEquals(0, snapshot.getScrollWindowStartLine()); - assertEquals(0, snapshot.getScrollWindowSize()); - assertEquals(0, snapshot.getScrollWindowShift()); - } - - public void testResize() { - ITerminalTextData term = makeITerminalTextData(); - String s = "000000\n" + "111111\n" + "222222\n" + "333333"; - ITerminalTextDataSnapshot snapshot; - - snapshot = snapshot(s, term); - term.setDimensions(term.getHeight(), term.getWidth() + 1); - snapshot.updateSnapshot(true); - assertChangedLines(snapshot, "1111"); - assertEquals(0, snapshot.getFirstChangedLine()); - assertEquals(3, snapshot.getLastChangedLine()); - assertEquals(0, snapshot.getScrollWindowStartLine()); - assertEquals(0, snapshot.getScrollWindowSize()); - assertEquals(0, snapshot.getScrollWindowShift()); - - snapshot = snapshot(s, term); - term.setDimensions(term.getHeight() + 1, term.getWidth()); - snapshot.updateSnapshot(true); - assertChangedLines(snapshot, "11111"); - assertEquals(0, snapshot.getFirstChangedLine()); - assertEquals(4, snapshot.getLastChangedLine()); - assertEquals(0, snapshot.getScrollWindowStartLine()); - assertEquals(0, snapshot.getScrollWindowSize()); - assertEquals(0, snapshot.getScrollWindowShift()); - - snapshot = snapshot(s, term); - term.setDimensions(term.getHeight() - 1, term.getWidth()); - snapshot.updateSnapshot(true); - assertChangedLines(snapshot, "111"); - assertEquals(0, snapshot.getFirstChangedLine()); - assertEquals(2, snapshot.getLastChangedLine()); - assertEquals(0, snapshot.getScrollWindowStartLine()); - assertEquals(0, snapshot.getScrollWindowSize()); - assertEquals(0, snapshot.getScrollWindowShift()); - - snapshot = snapshot(s, term); - term.setDimensions(0, 0); - snapshot.updateSnapshot(true); - assertChangedLines(snapshot, ""); - assertEquals(0, snapshot.getFirstChangedLine()); - assertEquals(-1, snapshot.getLastChangedLine()); - assertEquals(0, snapshot.getScrollWindowStartLine()); - assertEquals(0, snapshot.getScrollWindowSize()); - assertEquals(0, snapshot.getScrollWindowShift()); - - } - - public void testResizeAfterScroll() { - ITerminalTextData term = makeITerminalTextData(); - String s = "000000\n" + "111111\n" + "222222\n" + "333333\n" + "444444\n" + "555555\n" + "666666\n" + "777777\n" - + "888888\n" + "999999"; - ITerminalTextDataSnapshot snapshot; - - snapshot = snapshot(s, term); - term.scroll(1, 2, -1); - term.setDimensions(5, 4); - snapshot.updateSnapshot(true); - assertChangedLines(snapshot, "11111"); - assertEquals(0, snapshot.getScrollWindowStartLine()); - assertEquals(0, snapshot.getScrollWindowSize()); - assertEquals(0, snapshot.getScrollWindowShift()); - - snapshot = snapshot(s, term); - term.scroll(1, 2, -1); - term.setDimensions(7, 2); - term.scroll(4, 2, -1); - snapshot.updateSnapshot(true); - assertChangedLines(snapshot, "1111111"); - assertEquals(0, snapshot.getScrollWindowStartLine()); - assertEquals(0, snapshot.getScrollWindowSize()); - assertEquals(0, snapshot.getScrollWindowShift()); - snapshot = snapshot(s, term); - - term.scroll(1, 2, -1); - term.setDimensions(term.getHeight(), term.getWidth() + 1); - snapshot.updateSnapshot(true); - assertChangedLines(snapshot, "1111111111"); - assertEquals(0, snapshot.getScrollWindowStartLine()); - assertEquals(0, snapshot.getScrollWindowSize()); - assertEquals(0, snapshot.getScrollWindowShift()); - } - - public void testScrollAfterResize() { - ITerminalTextData term = makeITerminalTextData(); - String s = "000000\n" + "111111\n" + "222222\n" + "333333\n" + "444444\n" + "555555\n" + "666666\n" + "777777\n" - + "888888\n" + "999999"; - ITerminalTextDataSnapshot snapshot; - - snapshot = snapshot(s, term); - term.setDimensions(14, 6); - term.scroll(0, 14, -1); - snapshot.updateSnapshot(true); - assertChangedLines(snapshot, "11111111111111"); - assertEquals(0, snapshot.getScrollWindowStartLine()); - assertEquals(0, snapshot.getScrollWindowSize()); - assertEquals(0, snapshot.getScrollWindowShift()); - } - - private final class SnapshotListener implements ITerminalTextDataSnapshot.SnapshotOutOfDateListener { - int N; - - @Override - public void snapshotOutOfDate(ITerminalTextDataSnapshot snapshot) { - N++; - } - - public void reset() { - N = 0; - } - } - - public void testAddListener() { - ITerminalTextData term = makeITerminalTextData(); - String s = "12345\n" + "abcde\n" + "ABCDE\n" + "vwxzy\n" + "VWXYZ"; - TerminalTextTestHelper.fill(term, s); - - ITerminalTextDataSnapshot snapshot = term.makeSnapshot(); - snapshot.updateSnapshot(false); - - SnapshotListener listener = new SnapshotListener(); - snapshot.addListener(listener); - assertEquals(0, listener.N); - - // make a change and expect it to be changed - term.setChar(0, 0, '?', null); - assertEquals(1, listener.N); - term.setChar(1, 1, '?', null); - assertEquals(1, listener.N); - - snapshot.updateSnapshot(false); - assertEquals(1, listener.N); - listener.reset(); - - // make a change and expect it to be changed - term.setChars(1, 1, new char[] { '?', '!', '.' }, null); - assertEquals(1, listener.N); - term.setChars(2, 1, new char[] { '?', '!', '.' }, null); - assertEquals(1, listener.N); - - snapshot.updateSnapshot(false); - assertEquals(1, listener.N); - listener.reset(); - - // scroll - term.scroll(1, 2, -1); - assertEquals(1, listener.N); - term.scroll(1, 2, -1); - assertEquals(1, listener.N); - - snapshot.updateSnapshot(false); - assertEquals(1, listener.N); - listener.reset(); - - // scroll - term.scroll(1, 2, 1); - assertEquals(1, listener.N); - term.scroll(1, 2, 1); - assertEquals(1, listener.N); - - snapshot.updateSnapshot(false); - assertEquals(1, listener.N); - listener.reset(); - - // scroll - term.scroll(1, 2, -1); - assertEquals(1, listener.N); - term.scroll(1, 2, -1); - assertEquals(1, listener.N); - - snapshot.updateSnapshot(false); - assertEquals(1, listener.N); - listener.reset(); - - // scroll - term.scroll(1, 2, 1); - assertEquals(1, listener.N); - - snapshot.updateSnapshot(false); - assertEquals(1, listener.N); - listener.reset(); - - // setDimensions - term.setDimensions(2, 2); - assertEquals(1, listener.N); - - snapshot.updateSnapshot(false); - assertEquals(1, listener.N); - listener.reset(); - - // setDimensions - term.setDimensions(20, 20); - assertEquals(1, listener.N); - - snapshot.updateSnapshot(false); - assertFalse(snapshot.isOutOfDate()); - } - - public void testRemoveListener() { - ITerminalTextData term = makeITerminalTextData(); - String s = "12345\n" + "abcde\n" + "ABCDE\n" + "vwxzy\n" + "VWXYZ"; - TerminalTextTestHelper.fill(term, s); - - ITerminalTextDataSnapshot snapshot = term.makeSnapshot(); - snapshot.updateSnapshot(false); - - SnapshotListener listener1 = new SnapshotListener(); - SnapshotListener listener2 = new SnapshotListener(); - SnapshotListener listener3 = new SnapshotListener(); - snapshot.addListener(listener1); - snapshot.addListener(listener2); - snapshot.addListener(listener3); - assertEquals(0, listener1.N); - - // make a change and expect it to be changed - term.setChar(0, 0, '?', null); - assertEquals(1, listener1.N); - assertEquals(1, listener2.N); - assertEquals(1, listener3.N); - term.setChar(1, 1, '?', null); - assertEquals(1, listener1.N); - assertEquals(1, listener2.N); - assertEquals(1, listener3.N); - - snapshot.updateSnapshot(false); - assertEquals(1, listener1.N); - assertEquals(1, listener2.N); - assertEquals(1, listener3.N); - listener1.reset(); - listener2.reset(); - listener3.reset(); - - // make a change and expect it to be changed - term.setChars(1, 1, new char[] { '?', '!', '.' }, null); - assertEquals(1, listener1.N); - assertEquals(1, listener2.N); - assertEquals(1, listener3.N); - term.setChars(2, 1, new char[] { '?', '!', '.' }, null); - assertEquals(1, listener1.N); - assertEquals(1, listener2.N); - assertEquals(1, listener3.N); - - snapshot.updateSnapshot(false); - assertEquals(1, listener1.N); - assertEquals(1, listener2.N); - assertEquals(1, listener3.N); - - listener1.reset(); - listener2.reset(); - listener3.reset(); - - snapshot.removeListener(listener2); - - // scroll - term.scroll(1, 2, -1); - assertEquals(1, listener1.N); - assertEquals(0, listener2.N); - assertEquals(1, listener3.N); - - term.scroll(1, 2, -1); - assertEquals(1, listener1.N); - assertEquals(0, listener2.N); - assertEquals(1, listener3.N); - - snapshot.updateSnapshot(false); - assertEquals(1, listener1.N); - assertEquals(0, listener2.N); - assertEquals(1, listener3.N); - - snapshot.addListener(listener2); - listener1.reset(); - listener2.reset(); - listener3.reset(); - - snapshot.removeListener(listener3); - // scroll - term.scroll(1, 2, 1); - assertEquals(1, listener1.N); - assertEquals(1, listener2.N); - assertEquals(0, listener3.N); - - term.scroll(1, 2, 1); - assertEquals(1, listener1.N); - assertEquals(1, listener2.N); - assertEquals(0, listener3.N); - - snapshot.updateSnapshot(false); - assertEquals(1, listener1.N); - assertEquals(1, listener2.N); - assertEquals(0, listener3.N); - - snapshot.addListener(listener3); - listener1.reset(); - listener2.reset(); - listener3.reset(); - - // add listener multiple times - snapshot.addListener(listener3); - - // scroll - term.scroll(1, 2, -1); - assertEquals(1, listener1.N); - assertEquals(1, listener2.N); - assertEquals(2, listener3.N); - - term.scroll(1, 2, -1); - assertEquals(1, listener1.N); - assertEquals(1, listener2.N); - assertEquals(2, listener3.N); - - snapshot.updateSnapshot(false); - assertEquals(1, listener1.N); - assertEquals(1, listener2.N); - assertEquals(2, listener3.N); - - listener1.reset(); - listener2.reset(); - listener3.reset(); - // remove the duplicate listener - snapshot.removeListener(listener3); - - // scroll - term.scroll(1, 2, 1); - assertEquals(1, listener1.N); - assertEquals(1, listener2.N); - assertEquals(1, listener3.N); - - snapshot.updateSnapshot(false); - assertEquals(1, listener1.N); - assertEquals(1, listener2.N); - assertEquals(1, listener3.N); - - listener1.reset(); - listener2.reset(); - listener3.reset(); - - // setDimensions - term.setDimensions(2, 2); - assertEquals(1, listener1.N); - assertEquals(1, listener2.N); - assertEquals(1, listener3.N); - - snapshot.updateSnapshot(false); - assertEquals(1, listener1.N); - assertEquals(1, listener2.N); - assertEquals(1, listener3.N); - - listener1.reset(); - listener2.reset(); - listener3.reset(); - - // setDimensions - term.setDimensions(20, 20); - assertEquals(1, listener1.N); - assertEquals(1, listener2.N); - assertEquals(1, listener3.N); - - snapshot.updateSnapshot(false); - assertFalse(snapshot.isOutOfDate()); - } - - public void testWindowOfInterest() { - ITerminalTextData term = makeITerminalTextData(); - TerminalTextTestHelper.fillSimple(term, "0123456789"); - ITerminalTextDataSnapshot snapshot = term.makeSnapshot(); - snapshot.updateSnapshot(false); - snapshot.setInterestWindow(7, 4); - snapshot.setInterestWindow(9, 4); - snapshot.updateSnapshot(false); - } - - public void testWindowOfInterest2() { - ITerminalTextData term = makeITerminalTextData(); - TerminalTextTestHelper.fillSimple(term, "0123456789"); - ITerminalTextDataSnapshot snapshot = term.makeSnapshot(); - snapshot.updateSnapshot(false); - term.scroll(7, 3, -1); - snapshot.setInterestWindow(9, 4); - snapshot.updateSnapshot(false); - } - - public void testAddLine() { - ITerminalTextData term = makeITerminalTextData(); - TerminalTextTestHelper.fillSimple(term, "0123456789"); - ITerminalTextDataSnapshot snapshot = term.makeSnapshot(); - term.setMaxHeight(20); - snapshot.updateSnapshot(false); - assertEquals(10, term.getHeight()); - assertEquals(20, term.getMaxHeight()); - assertFalse(snapshot.isOutOfDate()); - term.addLine(); - assertTrue(snapshot.isOutOfDate()); - assertEquals(11, term.getHeight()); - assertEquals(10, snapshot.getHeight()); - snapshot.updateSnapshot(false); - assertEquals(11, term.getHeight()); - assertEquals(11, snapshot.getHeight()); - assertEquals(20, term.getMaxHeight()); - - term.addLine(); - term.addLine(); - assertEquals(11, snapshot.getHeight()); - assertEquals(13, term.getHeight()); - assertTrue(snapshot.isOutOfDate()); - snapshot.updateSnapshot(false); - assertEquals(13, snapshot.getHeight()); - assertEquals(13, term.getHeight()); - assertEquals(20, term.getMaxHeight()); - } - - public void testHasDimensionsChanged() { - ITerminalTextData term = makeITerminalTextData(); - TerminalTextTestHelper.fillSimple(term, "0123456789"); - ITerminalTextDataSnapshot snapshot = term.makeSnapshot(); - term.setMaxHeight(20); - snapshot.setInterestWindow(3, 4); - snapshot.updateSnapshot(false); - assertEquals(10, term.getHeight()); - assertEquals(20, term.getMaxHeight()); - assertFalse(snapshot.isOutOfDate()); - term.addLine(); - assertTrue(snapshot.isOutOfDate()); - assertEquals(11, term.getHeight()); - assertEquals(10, snapshot.getHeight()); - snapshot.updateSnapshot(false); - assertTrue(snapshot.hasDimensionsChanged()); - assertEquals(11, term.getHeight()); - assertEquals(11, snapshot.getHeight()); - assertEquals(20, term.getMaxHeight()); - - term.addLine(); - term.addLine(); - assertEquals(11, snapshot.getHeight()); - assertEquals(13, term.getHeight()); - assertTrue(snapshot.isOutOfDate()); - snapshot.updateSnapshot(false); - assertTrue(snapshot.hasDimensionsChanged()); - assertEquals(13, snapshot.getHeight()); - assertEquals(13, term.getHeight()); - assertEquals(20, term.getMaxHeight()); - } - - public void testCursor() { - ITerminalTextData term = makeITerminalTextData(); - TerminalTextTestHelper.fillSimple(term, "0123456789"); - ITerminalTextDataSnapshot snapshot = term.makeSnapshot(); - term.setMaxHeight(20); - snapshot.setInterestWindow(3, 4); - snapshot.updateSnapshot(false); - term.setCursorLine(2); - term.setCursorColumn(1); - snapshot.updateSnapshot(false); - assertEquals(2, snapshot.getCursorLine()); - assertEquals(1, snapshot.getCursorColumn()); - term.setCursorLine(3); - term.setCursorColumn(2); - snapshot.updateSnapshot(false); - assertEquals(3, snapshot.getCursorLine()); - assertEquals(2, snapshot.getCursorColumn()); - } - - public void testCursor2() { - ITerminalTextData term = makeITerminalTextData(); - TerminalTextTestHelper.fillSimple(term, "0123456789"); - ITerminalTextDataSnapshot snapshot = term.makeSnapshot(); - term.setMaxHeight(20); - snapshot.setInterestWindow(3, 4); - snapshot.updateSnapshot(false); - term.setCursorLine(2); - assertTrue(snapshot.isOutOfDate()); - snapshot.updateSnapshot(false); - term.setCursorColumn(1); - assertTrue(snapshot.isOutOfDate()); - } - - public void testHasTerminalChanged() { - ITerminalTextData term = makeITerminalTextData(); - String s = "12345\n" + "abcde\n" + "ABCDE\n" + "vwxzy\n" + "VWXYZ"; - TerminalTextTestHelper.fill(term, s); - - ITerminalTextDataSnapshot snapshot = term.makeSnapshot(); - assertTrue(snapshot.hasTerminalChanged()); - snapshot.updateSnapshot(false); - - assertTrue(snapshot.hasTerminalChanged()); - - // make a change and expect it to be changed - term.setChar(0, 0, '?', null); - snapshot.updateSnapshot(false); - assertTrue(snapshot.hasTerminalChanged()); - - // make a change and expect it to be changed - term.setChars(1, 1, new char[] { '?', '!', '.' }, null); - snapshot.updateSnapshot(false); - assertTrue(snapshot.hasTerminalChanged()); - - // scroll - term.scroll(1, 2, -1); - snapshot.updateSnapshot(false); - assertTrue(snapshot.hasTerminalChanged()); - - // scroll - term.scroll(1, 2, 1); - snapshot.updateSnapshot(false); - assertTrue(snapshot.hasTerminalChanged()); - - // scroll - term.scroll(1, 2, -1); - snapshot.updateSnapshot(true); - assertTrue(snapshot.hasTerminalChanged()); - - // scroll - term.scroll(1, 2, 1); - snapshot.updateSnapshot(true); - assertTrue(snapshot.hasTerminalChanged()); - - // setDimensions - term.setDimensions(2, 2); - snapshot.updateSnapshot(false); - assertTrue(snapshot.hasTerminalChanged()); - - // setDimensions - term.setDimensions(20, 20); - snapshot.updateSnapshot(false); - assertTrue(snapshot.hasTerminalChanged()); - - snapshot.updateSnapshot(false); - assertFalse(snapshot.hasTerminalChanged()); - - // window of interest changes should NOT set hasTerminalChanged - snapshot.updateSnapshot(false); - snapshot.setInterestWindow(7, 4); - - assertFalse(snapshot.hasTerminalChanged()); - } - - public void testGetTerminalTextData() { - ITerminalTextData term = makeITerminalTextData(); - ITerminalTextDataSnapshot snapshot = term.makeSnapshot(); - assertSame(term, snapshot.getTerminalTextData()); - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataSnapshotWindowTest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataSnapshotWindowTest.java deleted file mode 100644 index c0988c78369..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataSnapshotWindowTest.java +++ /dev/null @@ -1,196 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.internal.terminal.model; - -import org.eclipse.tm.terminal.model.ITerminalTextData; -import org.eclipse.tm.terminal.model.ITerminalTextDataReadOnly; -import org.eclipse.tm.terminal.model.ITerminalTextDataSnapshot; - -import junit.framework.TestCase; - -public class TerminalTextDataSnapshotWindowTest extends TestCase { - String toMultiLineText(ITerminalTextDataReadOnly term) { - return TerminalTextTestHelper.toMultiLineText(term); - } - - String toSimpleText(ITerminalTextDataReadOnly term) { - return TerminalTextTestHelper.toSimple(term); - } - - protected ITerminalTextData makeITerminalTextData() { - return new TerminalTextData(); - } - - ITerminalTextDataSnapshot snapshotSimple(String text, ITerminalTextData term) { - TerminalTextTestHelper.fillSimple(term, text); - ITerminalTextDataSnapshot snapshot = term.makeSnapshot(); - return snapshot; - - } - - /** - * @param snapshot - * @param expected a string of 0 and 1 (1 means changed) - */ - void assertChangedLines(ITerminalTextDataSnapshot snapshot, String expected) { - assertEquals(expected.length(), snapshot.getHeight()); - StringBuffer buffer = new StringBuffer(); - for (int line = 0; line < expected.length(); line++) { - if (snapshot.hasLineChanged(line)) - buffer.append('1'); - else - buffer.append('0'); - } - assertEquals(expected, buffer.toString()); - } - - public void testSetInterestWindow() { - ITerminalTextData term = makeITerminalTextData(); - ITerminalTextDataSnapshot snapshot = snapshotSimple("0123456789", term); - assertEquals(0, snapshot.getInterestWindowStartLine()); - assertEquals(-1, snapshot.getInterestWindowSize()); - snapshot.setInterestWindow(2, 3); - assertEquals(2, snapshot.getInterestWindowStartLine()); - assertEquals(3, snapshot.getInterestWindowSize()); - snapshot.updateSnapshot(false); - assertChangedLines(snapshot, "0011100000"); - } - - public void testSetChar() { - ITerminalTextData term = makeITerminalTextData(); - ITerminalTextDataSnapshot snapshot = snapshotSimple("0123456789", term); - snapshot.setInterestWindow(2, 3); - snapshot.updateSnapshot(false); - assertEquals(" 234 ", toSimpleText(snapshot)); - - term.setChar(0, 0, 'x', null); - assertFalse(snapshot.isOutOfDate()); - snapshot.updateSnapshot(false); - assertChangedLines(snapshot, "0000000000"); - - term.setChar(1, 0, 'x', null); - assertFalse(snapshot.isOutOfDate()); - - term.setChar(2, 0, 'x', null); - assertTrue(snapshot.isOutOfDate()); - snapshot.updateSnapshot(false); - assertChangedLines(snapshot, "0010000000"); - - term.setChar(3, 0, 'x', null); - assertTrue(snapshot.isOutOfDate()); - snapshot.updateSnapshot(false); - assertChangedLines(snapshot, "0001000000"); - - term.setChar(4, 0, 'x', null); - assertTrue(snapshot.isOutOfDate()); - snapshot.updateSnapshot(false); - assertChangedLines(snapshot, "0000100000"); - - term.setChar(5, 0, 'x', null); - assertFalse(snapshot.isOutOfDate()); - - term.setChar(6, 0, 'x', null); - assertFalse(snapshot.isOutOfDate()); - - for (int i = 0; i < 9; i++) { - term.setChar(i, 0, (char) ('a' + i), null); - } - assertTrue(snapshot.isOutOfDate()); - snapshot.updateSnapshot(false); - assertChangedLines(snapshot, "0011100000"); - } - - public void testSetChars() { - ITerminalTextData term = makeITerminalTextData(); - ITerminalTextDataSnapshot snapshot = snapshotSimple("0123456789", term); - snapshot.setInterestWindow(2, 3); - snapshot.updateSnapshot(false); - assertEquals(" 234 ", toSimpleText(snapshot)); - - term.setChars(0, 0, "x".toCharArray(), null); - assertFalse(snapshot.isOutOfDate()); - snapshot.updateSnapshot(false); - assertChangedLines(snapshot, "0000000000"); - - term.setChars(1, 0, "x".toCharArray(), null); - assertFalse(snapshot.isOutOfDate()); - - term.setChars(2, 0, "x".toCharArray(), null); - assertTrue(snapshot.isOutOfDate()); - snapshot.updateSnapshot(false); - assertChangedLines(snapshot, "0010000000"); - - term.setChars(3, 0, "x".toCharArray(), null); - assertTrue(snapshot.isOutOfDate()); - snapshot.updateSnapshot(false); - assertChangedLines(snapshot, "0001000000"); - - term.setChars(4, 0, "x".toCharArray(), null); - assertTrue(snapshot.isOutOfDate()); - snapshot.updateSnapshot(false); - assertChangedLines(snapshot, "0000100000"); - - term.setChars(5, 0, "x".toCharArray(), null); - assertFalse(snapshot.isOutOfDate()); - - term.setChars(6, 0, "x".toCharArray(), null); - assertFalse(snapshot.isOutOfDate()); - for (int i = 0; i < 9; i++) { - term.setChars(i, 0, (i + "").toCharArray(), null); - } - assertTrue(snapshot.isOutOfDate()); - snapshot.updateSnapshot(false); - assertChangedLines(snapshot, "0011100000"); - } - - public void testSetChars2() { - ITerminalTextData term = makeITerminalTextData(); - ITerminalTextDataSnapshot snapshot = snapshotSimple("0123456789", term); - snapshot.setInterestWindow(2, 3); - snapshot.updateSnapshot(false); - assertEquals(" 234 ", toSimpleText(snapshot)); - - term.setChars(0, 0, "abcdef".toCharArray(), 2, 1, null); - assertFalse(snapshot.isOutOfDate()); - snapshot.updateSnapshot(false); - assertChangedLines(snapshot, "0000000000"); - - term.setChars(1, 0, "abcdef".toCharArray(), 2, 1, null); - assertFalse(snapshot.isOutOfDate()); - - term.setChars(2, 0, "abcdef".toCharArray(), 2, 1, null); - assertTrue(snapshot.isOutOfDate()); - snapshot.updateSnapshot(false); - assertChangedLines(snapshot, "0010000000"); - - term.setChars(3, 0, "abcdef".toCharArray(), 2, 1, null); - assertTrue(snapshot.isOutOfDate()); - snapshot.updateSnapshot(false); - assertChangedLines(snapshot, "0001000000"); - - term.setChars(4, 0, "abcdef".toCharArray(), 2, 1, null); - assertTrue(snapshot.isOutOfDate()); - snapshot.updateSnapshot(false); - assertChangedLines(snapshot, "0000100000"); - - term.setChars(5, 0, "abcdef".toCharArray(), 2, 1, null); - assertFalse(snapshot.isOutOfDate()); - - term.setChars(6, 0, "abcdef".toCharArray(), 2, 1, null); - assertFalse(snapshot.isOutOfDate()); - for (int i = 0; i < 9; i++) { - term.setChars(i, 0, ("ab" + i + "def").toCharArray(), 2, 1, null); - } - assertTrue(snapshot.isOutOfDate()); - snapshot.updateSnapshot(false); - assertChangedLines(snapshot, "0011100000"); - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataStoreTest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataStoreTest.java deleted file mode 100644 index 29e7ef4c0c0..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataStoreTest.java +++ /dev/null @@ -1,21 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.internal.terminal.model; - -import org.eclipse.tm.terminal.model.ITerminalTextData; - -public class TerminalTextDataStoreTest extends AbstractITerminalTextDataTest { - @Override - protected ITerminalTextData makeITerminalTextData() { - return new TerminalTextDataStore(); - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataTest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataTest.java deleted file mode 100644 index ade4d22d761..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataTest.java +++ /dev/null @@ -1,21 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.internal.terminal.model; - -import org.eclipse.tm.terminal.model.ITerminalTextData; - -public class TerminalTextDataTest extends AbstractITerminalTextDataTest { - @Override - protected ITerminalTextData makeITerminalTextData() { - return new TerminalTextData(); - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataWindowTest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataWindowTest.java deleted file mode 100644 index d681687a7ef..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextDataWindowTest.java +++ /dev/null @@ -1,425 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - * Martin Oberhuber (Wind River) - [168197] Fix Terminal for CDC-1.1/Foundation-1.1 - *******************************************************************************/ -package org.eclipse.tm.internal.terminal.model; - -import java.util.ArrayList; - -import org.eclipse.tm.terminal.model.ITerminalTextData; -import org.eclipse.tm.terminal.model.LineSegment; -import org.eclipse.tm.terminal.model.TerminalStyle; - -public class TerminalTextDataWindowTest extends AbstractITerminalTextDataTest { - int fOffset; - int fSize; - - public TerminalTextDataWindowTest() { - fOffset = 2; - fSize = 2; - } - - @Override - protected ITerminalTextData makeITerminalTextData() { - TerminalTextDataWindow term = new TerminalTextDataWindow(); - term.setWindow(fOffset, fSize); - return term; - } - - /** - * Used for multi line text - * @param expected - * @param actual - */ - @Override - protected void assertEqualsTerm(String expected, String actual) { - assertEquals(stripMultiLine(expected), stripMultiLine(actual)); - } - - private String stripMultiLine(String s) { - StringBuffer b = new StringBuffer(); - // String[] lines=s.split("\n"); - // - ArrayList l = new ArrayList<>(); - int j = 0; - for (int k = 0; k < s.length(); k++) { - if (s.charAt(k) == '\n') { - l.add(s.substring(j, k)); - j = k; - } - } - j = l.size() - 1; - while (j >= 0 && "".equals(l.get(j))) { - j--; - } - String[] lines = new String[j + 1]; - while (j >= 0) { - lines[j] = l.get(j); - j--; - } - // - for (int i = 0; i < lines.length; i++) { - if (i > 0) - b.append("\n"); //$NON-NLS-1$ - if (i >= fOffset && i < fOffset + fSize) - b.append(lines[i]); - else - b.append(new String(new char[lines[i].length()])); - } - return b.toString(); - } - - /** - * Used for simple text - * @param expected - * @param actual - */ - @Override - protected void assertEqualsSimple(String expected, String actual) { - assertEquals(stripSimple(expected), stripSimple(actual)); - } - - String stripSimple(String s) { - StringBuffer b = new StringBuffer(); - for (int i = 0; i < s.length(); i++) { - if (i >= fOffset && i < fOffset + fSize) - b.append(s.charAt(i)); - else - b.append(' '); - } - return b.toString(); - } - - @Override - public void testAddLine() { - String s = "111\n" + "222\n" + "333\n" + "444\n" + "555"; - ITerminalTextData term = makeITerminalTextData(); - fill(term, s); - term.addLine(); - assertEqualsTerm("222\n" + "333\n" + "444\n" + "\0\0\0\n" + "\000\000\000", toMultiLineText(term)); - } - - @Override - public void testMaxSize() { - String s = "111\n" + "222\n" + "333\n" + "444\n" + "555"; - ITerminalTextData term = makeITerminalTextData(); - term.setMaxHeight(8); - fill(term, s); - assertEquals(5, term.getHeight()); - assertEquals(8, term.getMaxHeight()); - term.addLine(); - assertEquals(6, term.getHeight()); - assertEqualsTerm("111\n" + "222\n" + "333\n" + "444\n" + "555\n" + "\000\000\000", toMultiLineText(term)); - term.addLine(); - assertEquals(7, term.getHeight()); - assertEqualsTerm("111\n" + "222\n" + "333\n" + "444\n" + "555\n" + "\000\000\000\n" + "\000\000\000", - toMultiLineText(term)); - term.addLine(); - assertEquals(8, term.getHeight()); - assertEqualsTerm( - "111\n" + "222\n" + "333\n" + "444\n" + "555\n" + "\000\000\000\n" + "\000\000\000\n" + "\000\000\000", - toMultiLineText(term)); - term.addLine(); - assertEquals(8, term.getHeight()); - assertEqualsTerm("222\n" + "333\n" + "444\n" + "\000\000\000\n" + "\000\000\000\n" + "\000\000\000\n" - + "\000\000\000\n" + "\000\000\000", toMultiLineText(term)); - } - - @Override - public void testGetLineSegments() { - TerminalStyle s1 = getDefaultStyle(); - TerminalStyle s2 = s1.setBold(true); - TerminalStyle s3 = s1.setUnderline(true); - ITerminalTextData term = makeITerminalTextData(); - term.setDimensions(8, 8); - LineSegment[] segments; - - term.setChars(2, 0, "0123".toCharArray(), s1); - term.setChars(2, 4, "abcd".toCharArray(), null); - segments = term.getLineSegments(2, 0, term.getWidth()); - assertEquals(2, segments.length); - assertSegment(0, "0123", s1, segments[0]); - assertSegment(4, "abcd", null, segments[1]); - - segments = term.getLineSegments(2, 4, term.getWidth() - 4); - assertEquals(1, segments.length); - assertSegment(4, "abcd", null, segments[0]); - - segments = term.getLineSegments(2, 3, 2); - assertEquals(2, segments.length); - assertSegment(3, "3", s1, segments[0]); - assertSegment(4, "a", null, segments[1]); - - segments = term.getLineSegments(2, 7, 1); - assertEquals(1, segments.length); - assertSegment(7, "d", null, segments[0]); - - segments = term.getLineSegments(2, 0, 1); - assertEquals(1, segments.length); - assertSegment(0, "0", s1, segments[0]); - - // line 1 - term.setChars(1, 0, "x".toCharArray(), s1); - term.setChars(1, 1, "y".toCharArray(), s2); - term.setChars(1, 2, "z".toCharArray(), s3); - - segments = term.getLineSegments(1, 0, term.getWidth()); - assertEquals(1, segments.length); - assertSegment(0, "\000\000\000\000\000\000\000\000", null, segments[0]); - - // line 3 - segments = term.getLineSegments(3, 0, term.getWidth()); - assertEquals(1, segments.length); - assertSegment(0, "\000\000\000\000\000\000\000\000", null, segments[0]); - - } - - @Override - public void testGetChar() { - String s = "12345\n" + "abcde\n" + "ABCDE"; - ITerminalTextData term = makeITerminalTextData(); - fill(term, s); - assertEquals('\000', term.getChar(0, 0)); - assertEquals('\000', term.getChar(0, 1)); - assertEquals('\000', term.getChar(0, 2)); - assertEquals('\000', term.getChar(0, 3)); - assertEquals('\000', term.getChar(0, 4)); - assertEquals('\000', term.getChar(1, 0)); - assertEquals('\000', term.getChar(1, 1)); - assertEquals('\000', term.getChar(1, 2)); - assertEquals('\000', term.getChar(1, 3)); - assertEquals('\000', term.getChar(1, 4)); - assertEquals('A', term.getChar(2, 0)); - assertEquals('B', term.getChar(2, 1)); - assertEquals('C', term.getChar(2, 2)); - assertEquals('D', term.getChar(2, 3)); - assertEquals('E', term.getChar(2, 4)); - } - - @Override - public void testGetStyle() { - ITerminalTextData term = makeITerminalTextData(); - TerminalStyle style = getDefaultStyle(); - term.setDimensions(6, 3); - for (int line = 0; line < term.getHeight(); line++) { - for (int column = 0; column < term.getWidth(); column++) { - char c = (char) ('a' + column + line); - term.setChar(line, column, c, style.setForeground(c)); - } - } - for (int line = 0; line < term.getHeight(); line++) { - for (int column = 0; column < term.getWidth(); column++) { - char c = (char) ('a' + column + line); - TerminalStyle s = null; - if (line >= fOffset && line < fOffset + fSize) - s = style.setForeground(c); - assertSame(s, term.getStyle(line, column)); - } - } - - } - - @Override - public void testSetChar() { - ITerminalTextData term = makeITerminalTextData(); - term.setDimensions(6, 3); - for (int line = 0; line < term.getHeight(); line++) { - for (int column = 0; column < term.getWidth(); column++) { - term.setChar(line, column, (char) ('a' + column + line), null); - } - } - for (int line = 0; line < term.getHeight(); line++) { - for (int column = 0; column < term.getWidth(); column++) { - char c = 0; - if (line >= fOffset && line < fOffset + fSize) - c = (char) ('a' + column + line); - assertEquals(c, term.getChar(line, column)); - } - } - assertEqualsTerm("abc\n" + "bcd\n" + "cde\n" + "def\n" + "efg\n" + "fgh", toMultiLineText(term)); - } - - @Override - public void testSetChars() { - ITerminalTextData term = makeITerminalTextData(); - term.setDimensions(6, 3); - for (int line = 0; line < term.getHeight(); line++) { - char[] chars = new char[term.getWidth()]; - for (int column = 0; column < term.getWidth(); column++) { - chars[column] = (char) ('a' + column + line); - } - term.setChars(line, 0, chars, null); - } - for (int line = 0; line < term.getHeight(); line++) { - for (int column = 0; column < term.getWidth(); column++) { - char c = 0; - if (line >= fOffset && line < fOffset + fSize) - c = (char) ('a' + column + line); - assertEquals(c, term.getChar(line, column)); - } - } - assertEqualsTerm("abc\n" + "bcd\n" + "cde\n" + "def\n" + "efg\n" + "fgh", toMultiLineText(term)); - - term.setChars(3, 1, new char[] { '1', '2' }, null); - assertEqualsTerm("abc\n" + "bcd\n" + "cde\n" + "d12\n" + "efg\n" + "fgh", toMultiLineText(term)); - // check if chars are correctly chopped - term.setChars(4, 1, new char[] { '1', '2', '3', '4', '5' }, null); - assertEqualsTerm("abc\n" + "bcd\n" + "cde\n" + "d12\n" + "e12\n" + "fgh", toMultiLineText(term)); - - } - - @Override - public void testSetCharsLen() { - ITerminalTextData term = makeITerminalTextData(); - String s = "ZYXWVU\n" + "abcdef\n" + "ABCDEF"; - fill(term, s); - char[] chars = new char[] { '1', '2', '3', '4', '5', '6', '7', '8' }; - term.setChars(1, 0, chars, 0, 6, null); - assertEqualsTerm("ZYXWVU\n" + "123456\n" + "ABCDEF", toMultiLineText(term)); - - fill(term, s); - term.setChars(1, 0, chars, 0, 5, null); - assertEqualsTerm("ZYXWVU\n" + "12345f\n" + "ABCDEF", toMultiLineText(term)); - - fill(term, s); - term.setChars(1, 0, chars, 1, 5, null); - assertEqualsTerm("ZYXWVU\n" + "23456f\n" + "ABCDEF", toMultiLineText(term)); - - fill(term, s); - term.setChars(1, 1, chars, 1, 4, null); - assertEqualsTerm("ZYXWVU\n" + "a2345f\n" + "ABCDEF", toMultiLineText(term)); - - fill(term, s); - term.setChars(1, 2, chars, 3, 4, null); - assertEqualsTerm("ZYXWVU\n" + "ab4567\n" + "ABCDEF", toMultiLineText(term)); - - fill(term, s); - } - - @Override - public void testSetCopyLines() { - ITerminalTextData term = new TerminalTextDataStore(); - String s = "012345"; - fillSimple(term, s); - ITerminalTextData termCopy = makeITerminalTextData(); - String sCopy = "abcde"; - fillSimple(termCopy, sCopy); - termCopy.copyRange(term, 0, 0, 0); - assertEqualsSimple(s, toSimple(term)); - assertEqualsSimple(sCopy, toSimple(termCopy)); - - fillSimple(termCopy, sCopy); - termCopy.copyRange(term, 0, 0, 5); - assertEqualsSimple(s, toSimple(term)); - assertEqualsSimple("01234", toSimple(termCopy)); - - fillSimple(termCopy, sCopy); - termCopy.copyRange(term, 0, 0, 2); - assertEqualsSimple(s, toSimple(term)); - assertEqualsSimple("01cde", toSimple(termCopy)); - - fillSimple(termCopy, sCopy); - termCopy.copyRange(term, 0, 1, 2); - assertEqualsSimple(s, toSimple(term)); - assertEqualsSimple("a01de", toSimple(termCopy)); - - fillSimple(termCopy, sCopy); - termCopy.copyRange(term, 1, 1, 2); - assertEqualsSimple(s, toSimple(term)); - assertEqualsSimple("a12de", toSimple(termCopy)); - - fillSimple(termCopy, sCopy); - termCopy.copyRange(term, 1, 1, 4); - assertEqualsSimple(s, toSimple(term)); - assertEqualsSimple("a1234", toSimple(termCopy)); - - fillSimple(termCopy, sCopy); - termCopy.copyRange(term, 2, 1, 4); - assertEqualsSimple(s, toSimple(term)); - assertEqualsSimple("a2345", toSimple(termCopy)); - } - - @Override - public void testScrollNegative() { - scrollTest(0, 2, -1, " 23 ", " 23 "); - scrollTest(0, 1, -1, " 23 ", " 23 "); - scrollTest(0, 6, -1, " 23 ", " 3 "); - scrollTest(0, 6, -6, " 23 ", " "); - scrollTest(0, 6, -7, " 23 ", " "); - scrollTest(0, 6, -8, " 23 ", " "); - scrollTest(0, 6, -2, " 23 ", " "); - scrollTest(1, 1, -1, " 23 ", " 23 "); - scrollTest(1, 2, -1, " 23 ", " 3 "); - scrollTest(5, 1, -1, " 23 ", " 23 "); - scrollTest(5, 1, -1, " 23 ", " 23 "); - } - - @Override - public void testScrollAll() { - scrollTest(0, 6, 1, " 2345", " 2 "); - scrollTest(0, 6, -1, " 2345", " 3 "); - scrollTest(0, 6, 2, " 2345", " "); - scrollTest(0, 6, -2, " 2345", " "); - } - - @Override - public void testCopyLineWithOffset() { - ITerminalTextData term = makeITerminalTextData(); - String s = "111\n" + "222\n" + "333\n" + "444\n" + "555"; - fill(term, s); - ITerminalTextData dest = makeITerminalTextData(); - String sCopy = "aaa\n" + "bbb\n" + "ccc\n" + "ddd\n" + "eee"; - fill(dest, sCopy); - copySelective(dest, term, 1, 0, new boolean[] { true, false, false, true }); - assertEqualsTerm(s, toMultiLineText(term)); - assertEqualsTerm("222\n" + "bbb\n" + "ccc\n" + "\00\00\00\n" + "eee", toMultiLineText(dest)); - - fill(dest, sCopy); - copySelective(dest, term, 2, 0, new boolean[] { true, true }); - assertEqualsTerm(s, toMultiLineText(term)); - assertEqualsTerm("333\n" + "444\n" + "ccc\n" + "ddd\n" + "eee", toMultiLineText(dest)); - - fill(dest, sCopy); - copySelective(dest, term, 0, 0, new boolean[] { true, true, true, true, true }); - assertEqualsTerm(s, toMultiLineText(term)); - assertEqualsTerm(s, toMultiLineText(dest)); - - fill(dest, sCopy); - copySelective(dest, term, 0, 0, new boolean[] { false, false, false, false, false }); - assertEqualsTerm(s, toMultiLineText(term)); - assertEqualsTerm(sCopy, toMultiLineText(dest)); - } - - public void testCopy() { - ITerminalTextData term = makeITerminalTextData(); - term.setDimensions(3, 1); - ITerminalTextData data = new TerminalTextData(); - fillSimple(data, "abcd"); - term.copy(data); - } - - @Override - public void testWrappedLines() { - ITerminalTextData term = makeITerminalTextData(); - term.setDimensions(4, 4); - for (int i = 0; i < term.getHeight(); ++i) - assertFalse(term.isWrappedLine(i)); - term.setWrappedLine(0); // outside window - term.setWrappedLine(3); - assertFalse(term.isWrappedLine(0)); - assertFalse(term.isWrappedLine(1)); - assertFalse(term.isWrappedLine(2)); - assertTrue(term.isWrappedLine(3)); - term.cleanLine(3); - assertFalse(term.isWrappedLine(3)); - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextTestHelper.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextTestHelper.java deleted file mode 100644 index 205d304614f..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/model/TerminalTextTestHelper.java +++ /dev/null @@ -1,113 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - * Martin Oberhuber (Wind River) - [168197] Fix Terminal for CDC-1.1/Foundation-1.1 - *******************************************************************************/ -package org.eclipse.tm.internal.terminal.model; - -import org.eclipse.tm.terminal.model.ITerminalTextData; -import org.eclipse.tm.terminal.model.ITerminalTextDataReadOnly; -import org.eclipse.tm.terminal.model.TerminalStyle; - -public class TerminalTextTestHelper { - static public String toSimple(ITerminalTextDataReadOnly term) { - return toSimple(toMultiLineText(term)); - } - - static public String toMultiLineText(ITerminalTextDataReadOnly term) { - StringBuffer buff = new StringBuffer(); - int width = term.getWidth(); - for (int line = 0; line < term.getHeight(); line++) { - if (line > 0) - buff.append("\n"); //$NON-NLS-1$ - for (int column = 0; column < width; column++) { - buff.append(term.getChar(line, column)); - } - } - return buff.toString(); - } - - static public String toSimple(String str) { - //return str.replaceAll("\000", " ").replaceAll("\n", ""); - // - StringBuffer buf = new StringBuffer(str.length()); - for (int i = 0; i < str.length(); i++) { - char c = str.charAt(i); - switch (c) { - case '\000': - buf.append(' '); - break; - case '\n': - break; - default: - buf.append(c); - break; - } - } - return buf.toString(); - // - } - - /** - * @param term - * @param s each character is one line - */ - static public void fillSimple(ITerminalTextData term, String s) { - TerminalStyle style = TerminalStyle.getDefaultStyle(); - term.setDimensions(s.length(), 1); - for (int i = 0; i < s.length(); i++) { - char c = s.charAt(i); - term.setChar(i, 0, c, style.setForeground(c)); - } - } - - /** - * @param term - * @param s lines separated by \n. The terminal will automatically - * resized to fit the text. - */ - static public void fill(ITerminalTextData term, String s) { - int width = 0; - int len = 0; - int height = 0; - for (int i = 0; i < s.length(); i++) { - char c = s.charAt(i); - if (c == '\n') { - width = Math.max(width, len); - len = 0; - } else { - if (len == 0) - height++; - len++; - } - } - width = Math.max(width, len); - term.setDimensions(height, width); - fill(term, 0, 0, s); - } - - static public void fill(ITerminalTextData term, int column, int line, String s) { - int xx = column; - int yy = line; - TerminalStyle style = TerminalStyle.getDefaultStyle(); - for (int i = 0; i < s.length(); i++) { - char c = s.charAt(i); - if (c == '\n') { - yy++; - xx = column; - } else { - term.setChar(yy, xx, c, style.setForeground(c)); - xx++; - } - } - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/speedtest/SpeedTestConnection.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/speedtest/SpeedTestConnection.java deleted file mode 100644 index ea670329ddb..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/speedtest/SpeedTestConnection.java +++ /dev/null @@ -1,121 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.internal.terminal.speedtest; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.OutputStream; - -import org.eclipse.swt.widgets.Display; -import org.eclipse.tm.internal.terminal.control.ITerminalListener3.TerminalTitleRequestor; -import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl; -import org.eclipse.tm.internal.terminal.provisional.api.Logger; -import org.eclipse.tm.internal.terminal.provisional.api.TerminalState; - -public class SpeedTestConnection extends Thread { - private static int fgNo; - private final ITerminalControl fControl; - private final InputStream fInputStream; - private final SpeedTestSettings fSettings; - - protected SpeedTestConnection(InputStream inputStream, SpeedTestSettings settings, ITerminalControl control) { - super("SpeedTestConnection-" + fgNo++); - fControl = control; - fInputStream = inputStream; - fSettings = settings; - } - - @Override - public void run() { - fControl.setState(TerminalState.CONNECTED); - - try { - readDataForever(fInputStream, fControl.getRemoteToTerminalOutputStream()); - } catch (IOException e) { - connectFailed(e.getMessage(), e.getMessage()); - } - // when reading is done, we set the state to closed - fControl.setState(TerminalState.CLOSED); - } - - private void connectFailed(String terminalText, String msg) { - Logger.log(terminalText); - fControl.displayTextInTerminal(terminalText); - fControl.setState(TerminalState.CLOSED); - fControl.setMsg(msg); - } - - /** - * Read the data from the input file and display it in the terminal. - * @param in - * @throws IOException - */ - private void readDataForever(InputStream in, OutputStream os) throws IOException { - long N = 0; - long T = 0; - long tDisplay = 0; - int NCalls = 0; - int bufferSize = fSettings.getBufferSize(); - int throttle = fSettings.getThrottle(); - // read the data - BufferedReader reader = new BufferedReader(new InputStreamReader(in)); - // read until the thread gets interrupted.... - String info = ""; - int n = 0; - byte[] crnl = "\r\n".getBytes("UTF-8"); - long t0 = System.currentTimeMillis(); - String line = null; - do { - line = reader.readLine(); - - // read some bytes - if (line != null) { - os.write(line.getBytes("UTF-8")); - os.write(crnl); - n += line.length(); - } - // process at least this number of characters to update the UI - if (line == null || n > bufferSize) { - if (throttle > 0) - sleep(throttle); - // we assume we get ASCII UTF8 bytes - long t = System.currentTimeMillis(); - T += t - t0; - N += n; - NCalls++; - if (t - tDisplay > 1000 && T > 0) { - long rate = (1000 * N) / T; - info = rate + " byte/s = " + rate * 8 + " baud " + "bytes/call=" + N / NCalls; - info = rate + " byte/s with buffer size " + fSettings.getBufferSize(); - setTitle(info); - tDisplay = System.currentTimeMillis(); - } - n = 0; - t0 = System.currentTimeMillis(); - } - } while (line != null); - } - - private void sleep(int ms) { - try { - Thread.sleep(ms); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - } - } - - private void setTitle(final String title) { - Display.getDefault().asyncExec(() -> fControl.setTerminalTitle(title, TerminalTitleRequestor.OTHER)); - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/speedtest/SpeedTestConnector.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/speedtest/SpeedTestConnector.java deleted file mode 100644 index b2b1c33f88c..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/speedtest/SpeedTestConnector.java +++ /dev/null @@ -1,114 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - * Martin Oberhuber (Wind River) - [225853][api] Provide more default functionality in TerminalConnectorImpl - *******************************************************************************/ -package org.eclipse.tm.internal.terminal.speedtest; - -import java.io.BufferedInputStream; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.InputStream; -import java.io.OutputStream; - -import org.eclipse.tm.internal.terminal.control.ITerminalListener3.TerminalTitleRequestor; -import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore; -import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl; -import org.eclipse.tm.internal.terminal.provisional.api.Logger; -import org.eclipse.tm.internal.terminal.provisional.api.NullSettingsStore; -import org.eclipse.tm.internal.terminal.provisional.api.TerminalState; -import org.eclipse.tm.internal.terminal.provisional.api.provider.TerminalConnectorImpl; - -public class SpeedTestConnector extends TerminalConnectorImpl { - final SpeedTestSettings fSettings = new SpeedTestSettings(); - InputStream fInputStream; - OutputStream fOutputStream; - SpeedTestConnection fConnection; - - public SpeedTestConnector() { - } - - @Override - synchronized public void connect(ITerminalControl control) { - super.connect(control); - fControl.setState(TerminalState.CONNECTING); - String file = fSettings.getInputFile(); - try { - fInputStream = new BufferedInputStream(new FileInputStream(file)); - } catch (FileNotFoundException e) { - disconnect(); - fControl.setMsg(file + ": " + e.getLocalizedMessage()); - return; - } - fOutputStream = System.out; - fControl.setTerminalTitle(fSettings.getInputFile(), TerminalTitleRequestor.OTHER); - fConnection = new SpeedTestConnection(fInputStream, fSettings, fControl); - fConnection.start(); - } - - @Override - synchronized public void doDisconnect() { - if (fConnection != null) { - fConnection.interrupt(); - fConnection = null; - } - if (fInputStream != null) { - try { - fInputStream.close(); - } catch (Exception exception) { - Logger.logException(exception); - } - } - fInputStream = null; - if (fOutputStream != null) { - try { - fOutputStream.close(); - } catch (Exception exception) { - Logger.logException(exception); - } - } - fOutputStream = null; - } - - synchronized public InputStream getInputStream() { - return fInputStream; - } - - @Override - synchronized public OutputStream getTerminalToRemoteStream() { - return fOutputStream; - } - - @Override - public String getSettingsSummary() { - return fSettings.getInputFile(); - } - - @Override - public void setDefaultSettings() { - fSettings.load(new NullSettingsStore()); - } - - @Override - public void load(ISettingsStore store) { - fSettings.load(store); - } - - @Override - public void save(ISettingsStore store) { - fSettings.save(store); - } - - @Override - public void setTerminalSize(int newWidth, int newHeight) { - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/speedtest/SpeedTestSettings.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/speedtest/SpeedTestSettings.java deleted file mode 100644 index 8283cf4a927..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/speedtest/SpeedTestSettings.java +++ /dev/null @@ -1,71 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.internal.terminal.speedtest; - -import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore; - -public class SpeedTestSettings { - String fInputFile = ""; - String fBufferSize = ""; - String fThrottle; - - String getInputFile() { - return fInputFile; - } - - public String getBufferSizeString() { - return getBufferSize() + ""; - } - - public void setBufferSizeString(String bufferSize) { - fBufferSize = bufferSize; - } - - public int getBufferSize() { - try { - return Integer.parseInt(fBufferSize); - } catch (RuntimeException e) { - return 1024; - } - } - - void setInputFile(String testFile) { - fInputFile = testFile; - } - - public void load(ISettingsStore store) { - fInputFile = store.get("inputFile", ""); - fBufferSize = store.get("bufferSize", ""); - fThrottle = store.get("throttle", "0"); - } - - public void save(ISettingsStore store) { - store.put("inputFile", fInputFile); - store.put("bufferSize", fBufferSize); - store.put("throttle", fThrottle); - } - - public String getThrottleString() { - return fThrottle; - } - - public int getThrottle() { - try { - return Integer.parseInt(fThrottle); - } catch (RuntimeException e) { - return 0; - } - } - - public void setThrottleString(String throttle) { - fThrottle = throttle; - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/terminalcanvas/Main.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/terminalcanvas/Main.java deleted file mode 100644 index fd1061db108..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/terminalcanvas/Main.java +++ /dev/null @@ -1,37 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.internal.terminal.test.terminalcanvas; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.FillLayout; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Shell; - -public class Main { - - /** - * @param args - */ - public static void main(String[] args) { - Display display = new Display(); - Shell shell = new Shell(display); - shell.setLayout(new FillLayout()); - new TerminalTextCanvas(shell, SWT.NONE); - shell.setSize(200, 150); - shell.open(); - while (!shell.isDisposed()) { - if (!display.readAndDispatch()) - display.sleep(); - } - display.dispose(); - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/terminalcanvas/Snippet48.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/terminalcanvas/Snippet48.java deleted file mode 100644 index 5bd030dc582..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/terminalcanvas/Snippet48.java +++ /dev/null @@ -1,112 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.internal.terminal.test.terminalcanvas; - -/* - * Canvas example snippet: scroll an image (flicker free, no double buffering) - * - * For a list of all SWT example snippets see - * http://www.eclipse.org/swt/snippets/ - */ -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.GC; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.graphics.Rectangle; -import org.eclipse.swt.layout.FillLayout; -import org.eclipse.swt.widgets.Canvas; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.FileDialog; -import org.eclipse.swt.widgets.ScrollBar; -import org.eclipse.swt.widgets.Shell; - -public class Snippet48 { - - public static void main(String[] args) { - Display display = new Display(); - Shell shell = new Shell(display); - shell.setLayout(new FillLayout()); - Image originalImage = null; - FileDialog dialog = new FileDialog(shell, SWT.OPEN); - dialog.setText("Open an image file or cancel"); - String string = dialog.open(); - if (string != null) { - originalImage = new Image(display, string); - } - final Image image = originalImage; - final Point origin = new Point(0, 0); - final Canvas canvas = new Canvas(shell, SWT.NO_BACKGROUND | SWT.NO_REDRAW_RESIZE | SWT.V_SCROLL | SWT.H_SCROLL); - final ScrollBar hBar = canvas.getHorizontalBar(); - hBar.addListener(SWT.Selection, e -> { - int hSelection = hBar.getSelection(); - int destX = -hSelection - origin.x; - Rectangle rect = image.getBounds(); - canvas.scroll(destX, 0, 0, 0, rect.width, rect.height, false); - origin.x = -hSelection; - }); - final ScrollBar vBar = canvas.getVerticalBar(); - vBar.addListener(SWT.Selection, e -> { - int vSelection = vBar.getSelection(); - int destY = -vSelection - origin.y; - Rectangle rect = image.getBounds(); - canvas.scroll(0, destY, 0, 0, rect.width, rect.height, false); - origin.y = -vSelection; - }); - canvas.addListener(SWT.Resize, e -> { - Rectangle rect = image.getBounds(); - Rectangle client = canvas.getClientArea(); - hBar.setMaximum(rect.width); - vBar.setMaximum(rect.height); - hBar.setThumb(Math.min(rect.width, client.width)); - vBar.setThumb(Math.min(rect.height, client.height)); - int hPage = rect.width - client.width; - int vPage = rect.height - client.height; - int hSelection = hBar.getSelection(); - int vSelection = vBar.getSelection(); - if (hSelection >= hPage) { - if (hPage <= 0) - hSelection = 0; - origin.x = -hSelection; - } - if (vSelection >= vPage) { - if (vPage <= 0) - vSelection = 0; - origin.y = -vSelection; - } - canvas.redraw(); - }); - canvas.addListener(SWT.Paint, e -> { - GC gc = e.gc; - gc.drawImage(image, origin.x, origin.y); - Rectangle rect = image.getBounds(); - Rectangle client = canvas.getClientArea(); - int marginWidth = client.width - rect.width; - if (marginWidth > 0) { - gc.fillRectangle(rect.width, 0, marginWidth, client.height); - } - int marginHeight = client.height - rect.height; - if (marginHeight > 0) { - gc.fillRectangle(0, rect.height, client.width, marginHeight); - } - }); - shell.setSize(200, 150); - shell.open(); - while (!shell.isDisposed()) { - if (!display.readAndDispatch()) - display.sleep(); - } - originalImage.dispose(); - display.dispose(); - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/terminalcanvas/TerminalTextCanvas.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/terminalcanvas/TerminalTextCanvas.java deleted file mode 100644 index 13f6dd07678..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/terminalcanvas/TerminalTextCanvas.java +++ /dev/null @@ -1,96 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.internal.terminal.test.terminalcanvas; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.GC; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.graphics.Rectangle; -import org.eclipse.swt.widgets.Canvas; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.FileDialog; -import org.eclipse.swt.widgets.ScrollBar; - -public class TerminalTextCanvas extends Canvas { - Image image; - Point origin = new Point(0, 0); - - public TerminalTextCanvas(Composite parent, int style) { - super(parent, SWT.NO_BACKGROUND | SWT.NO_REDRAW_RESIZE | SWT.V_SCROLL | SWT.H_SCROLL | style); - loadImage(parent); - - final ScrollBar hBar = getHorizontalBar(); - hBar.addListener(SWT.Selection, e -> { - int hSelection = hBar.getSelection(); - int destX = -hSelection - origin.x; - Rectangle rect = image.getBounds(); - scroll(destX, 0, 0, 0, rect.width, rect.height, false); - origin.x = -hSelection; - }); - final ScrollBar vBar = getVerticalBar(); - vBar.addListener(SWT.Selection, e -> { - int vSelection = vBar.getSelection(); - int destY = -vSelection - origin.y; - Rectangle rect = image.getBounds(); - scroll(0, destY, 0, 0, rect.width, rect.height, false); - origin.y = -vSelection; - }); - addListener(SWT.Resize, e -> { - Rectangle rect = image.getBounds(); - Rectangle client = getClientArea(); - hBar.setMaximum(rect.width); - vBar.setMaximum(rect.height); - hBar.setThumb(Math.min(rect.width, client.width)); - vBar.setThumb(Math.min(rect.height, client.height)); - int hPage = rect.width - client.width; - int vPage = rect.height - client.height; - int hSelection = hBar.getSelection(); - int vSelection = vBar.getSelection(); - if (hSelection >= hPage) { - if (hPage <= 0) - hSelection = 0; - origin.x = -hSelection; - } - if (vSelection >= vPage) { - if (vPage <= 0) - vSelection = 0; - origin.y = -vSelection; - } - redraw(); - }); - addListener(SWT.Paint, e -> { - GC gc = e.gc; - System.out.println(gc.getClipping() + " " + origin); - gc.drawImage(image, origin.x, origin.y); - Rectangle rect = image.getBounds(); - Rectangle client = getClientArea(); - int marginWidth = client.width - rect.width; - if (marginWidth > 0) { - gc.fillRectangle(rect.width, 0, marginWidth, client.height); - } - int marginHeight = client.height - rect.height; - if (marginHeight > 0) { - gc.fillRectangle(0, rect.height, client.width, marginHeight); - } - }); - } - - private void loadImage(Composite parent) { - FileDialog dialog = new FileDialog(parent.getShell(), SWT.OPEN); - dialog.setText("Open an image file or cancel"); - String string = dialog.open(); - if (string != null) { - image = new Image(getDisplay(), string); - } - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/terminalcanvas/VirtualCanvas.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/terminalcanvas/VirtualCanvas.java deleted file mode 100644 index ed610faa10a..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/terminalcanvas/VirtualCanvas.java +++ /dev/null @@ -1,330 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.internal.terminal.test.terminalcanvas; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Color; -import org.eclipse.swt.graphics.GC; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.graphics.Rectangle; -import org.eclipse.swt.widgets.Canvas; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Event; -import org.eclipse.swt.widgets.ScrollBar; - -/** - * A Canvas showing a virtual object. - * Virtual: the extent of the total canvas. - * Screen: the visible client area in the screen. - */ -public abstract class VirtualCanvas extends Canvas { - - private final Rectangle fVirtualBounds = new Rectangle(0, 0, 0, 0); - private Rectangle fClientArea; - private GC fPaintGC = null; - - public VirtualCanvas(Composite parent, int style) { - super(parent, style | SWT.NO_BACKGROUND | SWT.NO_REDRAW_RESIZE); - fPaintGC = new GC(this); - addListener(SWT.Paint, event -> paint(event.gc)); - addListener(SWT.Resize, event -> { - fClientArea = getClientArea(); - updateViewRectangle(); - }); - getVerticalBar().addListener(SWT.Selection, e -> { - scrollY((ScrollBar) e.widget); - postScrollEventHandling(e); - - }); - getHorizontalBar().addListener(SWT.Selection, e -> { - scrollX((ScrollBar) e.widget); - postScrollEventHandling(e); - - }); - addDisposeListener(e -> { - if (fPaintGC != null) { - fPaintGC.dispose(); - fPaintGC = null; - } - }); - } - - public void setAutoSelect(boolean on) { - } - - public boolean hasAutoSelect() { - return false; - } - - public void doAutoSelect() { - } - - /** HACK: run an event loop if the scrollbar is dragged...*/ - private void postScrollEventHandling(Event e) { - if (true && e.detail == SWT.DRAG) { - // TODO check if this is always ok??? - // used to process runnables while scrolling - // This fixes the update problems when scrolling! - // see: https://bugs.eclipse.org/bugs/show_bug.cgi?id=47582#5 - // TODO investigate: - // The alternative is to call redraw on the new visible area - // redraw(expose.x, expose.y, expose.width, expose.height, true); - - while (!getDisplay().isDisposed() && getDisplay().readAndDispatch()) { - // do nothing here... - } - } - } - - protected void scrollX(ScrollBar hBar) { - int hSelection = hBar.getSelection(); - int destX = -hSelection - fVirtualBounds.x; - fVirtualBounds.x = -hSelection; - scrollSmart(destX, 0); - updateViewRectangle(); - } - - protected void scrollXDelta(int delta) { - getHorizontalBar().setSelection(-fVirtualBounds.x + delta); - scrollX(getHorizontalBar()); - } - - protected void scrollY(ScrollBar vBar) { - int vSelection = vBar.getSelection(); - int destY = -vSelection - fVirtualBounds.y; - fVirtualBounds.y = -vSelection; - scrollSmart(0, destY); - updateViewRectangle(); - - } - - protected void scrollYDelta(int delta) { - getVerticalBar().setSelection(-fVirtualBounds.y + delta); - scrollY(getVerticalBar()); - } - - private void scrollSmart(int deltaX, int deltaY) { - Rectangle rect = getBounds(); - scroll(deltaX, deltaY, 0, 0, rect.width, rect.height, false); - } - - protected void revealRect(Rectangle rect) { - Rectangle visibleRect = getScreenRectInVirtualSpace(); - // scroll the X part - int deltaX = 0; - if (rect.x < visibleRect.x) { - deltaX = rect.x - visibleRect.x; - } else if (visibleRect.x + visibleRect.width < rect.x + rect.width) { - deltaX = (rect.x + rect.width) - (visibleRect.x + visibleRect.width); - } - if (deltaX != 0) { - getHorizontalBar().setSelection(-fVirtualBounds.x + deltaX); - scrollX(getHorizontalBar()); - } - - // scroll the Y part - int deltaY = 0; - if (rect.y < visibleRect.y) { - deltaY = rect.y - visibleRect.y; - } else if (visibleRect.y + visibleRect.height < rect.y + rect.height) { - deltaY = (rect.y + rect.height) - (visibleRect.y + visibleRect.height); - - } - if (deltaY != 0) { - getVerticalBar().setSelection(-fVirtualBounds.y + deltaY); - scrollY(getVerticalBar()); - } - } - - protected void repaint(Rectangle r) { - if (fPaintGC != null) { - if (inClipping(r, fClientArea)) { - fPaintGC.setClipping(r); - paint(fPaintGC); - } - } - } - - /** - * @param gc - */ - abstract protected void paint(GC gc); - - protected Color getBackgroundCanvasColor() { - return getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND); - } - - protected void paintUnoccupiedSpace(GC gc, Rectangle clipping) { - int width = fVirtualBounds.width; - int height = fVirtualBounds.height; - int marginWidth = (clipping.x + clipping.width) - width; - int marginHeight = (clipping.y + clipping.height) - height; - if (marginWidth > 0 || marginHeight > 0) { - Color bg = getBackground(); - gc.setBackground(getBackgroundCanvasColor()); - if (marginWidth > 0) { - gc.fillRectangle(width, clipping.y, marginWidth, clipping.height); - } - if (marginHeight > 0) { - gc.fillRectangle(clipping.x, height, clipping.width, marginHeight); - } - gc.setBackground(bg); - } - } - - /** - * @private - */ - protected boolean inClipping(Rectangle clipping, Rectangle r) { - // TODO check if this is OK in all cases (the <=!) - // - if (r.x + r.width <= clipping.x) - return false; - if (clipping.x + clipping.width <= r.x) - return false; - if (r.y + r.height <= clipping.y) - return false; - if (clipping.y + clipping.height <= r.y) - return false; - - return true; - } - - /** - * @return the screen rect in virtual space (starting with (0,0)) - * of the visible screen. (x,y>=0) - */ - protected Rectangle getScreenRectInVirtualSpace() { - return new Rectangle(fClientArea.x - fVirtualBounds.x, fClientArea.y - fVirtualBounds.y, fClientArea.width, - fClientArea.height); - } - - /** - * @return the rect in virtual space (starting with (0,0)) - * of the visible screen. (x,y>=0) - */ - protected Rectangle getRectInVirtualSpace(Rectangle r) { - return new Rectangle(r.x - fVirtualBounds.x, r.y - fVirtualBounds.y, r.width, r.height); - } - - /** - * Sets the extend of the virtual dieplay ares - * @param width - * @param height - */ - protected void setVirtualExtend(int width, int height) { - fVirtualBounds.width = width; - fVirtualBounds.height = height; - updateScrollbars(); - updateViewRectangle(); - } - - /** - * sets the scrolling origin. Also sets the scrollbars. - * Does NOT redraw! - * Use negative values (move the virtual origin to the top left - * to see something in the screen (which is located at (0,0)) - * @param x - * @param y - */ - protected void setVirtualOrigin(int x, int y) { - fVirtualBounds.x = x; - fVirtualBounds.y = y; - getHorizontalBar().setSelection(x); - getVerticalBar().setSelection(y); - updateViewRectangle(); - } - - /** - * @param x - * @return the virtual coordinate in scree space - */ - protected int virtualXtoScreen(int x) { - return x + fVirtualBounds.x; - } - - protected int virtualYtoScreen(int y) { - return y + fVirtualBounds.y; - } - - protected int screenXtoVirtual(int x) { - return x - fVirtualBounds.x; - } - - protected int screenYtoVirtual(int y) { - return y - fVirtualBounds.y; - } - - /** called when the viewed part is changing */ - private final Rectangle fViewRectangle = new Rectangle(0, 0, 0, 0); - - void updateViewRectangle() { - if (fViewRectangle.x == -fVirtualBounds.x && fViewRectangle.y == -fVirtualBounds.y - && fViewRectangle.width == fClientArea.width && fViewRectangle.height == fClientArea.height) - return; - fViewRectangle.x = -fVirtualBounds.x; - fViewRectangle.y = -fVirtualBounds.y; - fViewRectangle.width = fClientArea.width; - fViewRectangle.height = fClientArea.height; - viewRectangleChanged(fViewRectangle.x, fViewRectangle.y, fViewRectangle.width, fViewRectangle.height); - } - - protected Rectangle getViewRectangle() { - return fViewRectangle; - } - - /** - * Called when the viewed part has changed. - * Override when you need this information.... - * Is only called if the values change! - * @param x visible in virtual space - * @param y visible in virtual space - * @param width - * @param height - */ - protected void viewRectangleChanged(int x, int y, int width, int height) { - // System.out.println(x+" "+y+" "+width+" "+height); - } - - /** - * @private - */ - private void updateScrollbars() { - Point size = getSize(); - Rectangle clientArea = getClientArea(); - - ScrollBar horizontal = getHorizontalBar(); - if (fVirtualBounds.width <= clientArea.width) { - // TODO IMPORTANT in ScrollBar.setVisible comment out the line - // that checks 'isvisible' and returns (at the beginning) - horizontal.setVisible(false); - horizontal.setSelection(0); - } else { - horizontal.setPageIncrement(clientArea.width - horizontal.getIncrement()); - int max = fVirtualBounds.width + (size.x - clientArea.width); - horizontal.setMaximum(max); - horizontal.setThumb(size.x > max ? max : size.x); - horizontal.setVisible(true); - } - - ScrollBar vertical = getVerticalBar(); - if (fVirtualBounds.height <= clientArea.height) { - vertical.setVisible(false); - vertical.setSelection(0); - } else { - vertical.setPageIncrement(clientArea.height - vertical.getIncrement()); - int max = fVirtualBounds.height + (size.y - clientArea.height); - vertical.setMaximum(max); - vertical.setThumb(size.y > max ? max : size.y); - vertical.setVisible(true); - } - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/AbstractLineOrientedDataSource.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/AbstractLineOrientedDataSource.java deleted file mode 100644 index 923b7f8387c..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/AbstractLineOrientedDataSource.java +++ /dev/null @@ -1,44 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.internal.terminal.test.ui; - -import org.eclipse.tm.terminal.model.ITerminalTextData; -import org.eclipse.tm.terminal.model.TerminalStyle; - -/** - * Adds line by line - * - */ -abstract class AbstractLineOrientedDataSource implements IDataSource { - abstract public char[] dataSource(); - - abstract public TerminalStyle getStyle(); - - abstract public void next(); - - @Override - public int step(ITerminalTextData terminal) { - next(); - char[] chars = dataSource(); - TerminalStyle style = getStyle(); - int len; - // keep the synchronized block short! - synchronized (terminal) { - terminal.addLine(); - len = Math.min(terminal.getWidth(), chars.length); - int line = terminal.getHeight() - 1; - terminal.setChars(line, 0, chars, 0, len, style); - terminal.setCursorLine(line); - terminal.setCursorColumn(len - 1); - } - return len; - } -} \ No newline at end of file diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/DataReader.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/DataReader.java deleted file mode 100644 index f40ea9c4875..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/DataReader.java +++ /dev/null @@ -1,99 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.internal.terminal.test.ui; - -import org.eclipse.tm.terminal.model.ITerminalTextData; - -class DataReader implements Runnable { - final Thread fThread; - final IDataSource fDataSource; - final ITerminalTextData fTerminal; - volatile boolean fStart; - volatile boolean fStop; - volatile int fThrottleTime; - final IStatus fStatus; - final String fName; - - DataReader(String name, ITerminalTextData terminal, IDataSource dataSource, IStatus status) { - fStatus = status; - fName = name; - fTerminal = terminal; - fDataSource = dataSource; - fThread = new Thread(this, name); - fThread.setDaemon(true); - fThread.start(); - } - - @Override - public void run() { - long t0 = System.currentTimeMillis() - 1; - long c = 0; - int lines = 0; - while (!Thread.interrupted()) { - while (!fStart || fStop) { - sleep(1); - } - if (fThrottleTime > 0) - sleep(fThrottleTime); - // synchronize because we have to be sure the size does not change while - // we add lines - int len = fDataSource.step(fTerminal); - // keep the synchronized block short! - c += len; - lines++; - if ((fThrottleTime > 0 || (lines % 100 == 0)) && (System.currentTimeMillis() - t0) > 1000) { - long t = System.currentTimeMillis() - t0; - final String s = (c * 1000) / (t * 1024) + "kb/s " + (lines * 1000) / t + "lines/sec " - + (c * 1000 * 8) / t + " bits/s "; - fStatus.setStatus(s); - lines = 0; - t0 = System.currentTimeMillis(); - c = 0; - } - } - } - - public int getThrottleTime() { - return fThrottleTime; - } - - public void setThrottleTime(int throttleTime) { - fThrottleTime = throttleTime; - } - - private void sleep(int ms) { - try { - Thread.sleep(ms); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - } - } - - public boolean isStart() { - return fStart; - } - - public void setStart(boolean start) { - fStart = start; - } - - public String getName() { - return fName; - } - - public boolean isStop() { - return fStop; - } - - public void setStop(boolean stop) { - fStop = stop; - } -} \ No newline at end of file diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/FastDataSource.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/FastDataSource.java deleted file mode 100644 index a2b38d1e0ab..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/FastDataSource.java +++ /dev/null @@ -1,36 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.internal.terminal.test.ui; - -import org.eclipse.tm.terminal.model.TerminalStyle; - -final class FastDataSource extends AbstractLineOrientedDataSource { - char lines[][] = new char[][] { - "123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 ".toCharArray(), - "abcdefghi abcdefghi abcdefghi abcdefghi abcdefghi abcdefghi abcdefghi abcdefghi ".toCharArray(), }; - - int pos; - - @Override - public char[] dataSource() { - return lines[pos % lines.length]; - } - - @Override - public TerminalStyle getStyle() { - return null; - } - - @Override - public void next() { - pos++; - } -} \ No newline at end of file diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/FileDataSource.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/FileDataSource.java deleted file mode 100644 index 669fe792c4e..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/FileDataSource.java +++ /dev/null @@ -1,74 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.internal.terminal.test.ui; - -import java.io.BufferedReader; -import java.io.FileReader; -import java.io.IOException; - -import org.eclipse.tm.terminal.model.TerminalStyle; - -/** - * Reads the file in an infinite loop. - * Makes lines containing 'x' bold. - * - */ -final class FileDataSource extends AbstractLineOrientedDataSource { - private final String fFile; - - BufferedReader reader; - - String line; - - TerminalStyle style; - - TerminalStyle styleNormal = TerminalStyle.getDefaultStyle(); - - TerminalStyle styleBold = styleNormal.setBold(true); - - FileDataSource(String file) { - fFile = file; - } - - @Override - public char[] dataSource() { - return line.toCharArray(); - } - - @Override - public TerminalStyle getStyle() { - return style; - } - - @Override - public void next() { - try { - if (reader == null) - reader = new BufferedReader(new FileReader(fFile)); - line = reader.readLine(); - if (line == null) { - reader.close(); - reader = null; - // reopen the file - next(); - return; - } - if (line.lastIndexOf('x') > 0) - style = styleBold; - else - style = styleNormal; - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - } -} \ No newline at end of file diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/IDataSource.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/IDataSource.java deleted file mode 100644 index 93f25146100..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/IDataSource.java +++ /dev/null @@ -1,21 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.internal.terminal.test.ui; - -import org.eclipse.tm.terminal.model.ITerminalTextData; - -interface IDataSource { - /** - * @param terminal - * @return number of characters changed - */ - int step(ITerminalTextData terminal); -} \ No newline at end of file diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/IStatus.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/IStatus.java deleted file mode 100644 index 02f8319878f..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/IStatus.java +++ /dev/null @@ -1,15 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.internal.terminal.test.ui; - -public interface IStatus { - void setStatus(String message); -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/LineCountingDataSource.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/LineCountingDataSource.java deleted file mode 100644 index 5baef90f258..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/LineCountingDataSource.java +++ /dev/null @@ -1,45 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.internal.terminal.test.ui; - -import static org.eclipse.tm.terminal.model.TerminalColor.BLACK; -import static org.eclipse.tm.terminal.model.TerminalColor.BLUE; -import static org.eclipse.tm.terminal.model.TerminalColor.RED; -import static org.eclipse.tm.terminal.model.TerminalColor.YELLOW; - -import org.eclipse.tm.terminal.model.TerminalStyle; - -final class LineCountingDataSource extends AbstractLineOrientedDataSource { - TerminalStyle styleNormal = TerminalStyle.getStyle(BLACK, RED); - - TerminalStyle styles[] = new TerminalStyle[] { styleNormal, styleNormal.setBold(true), - styleNormal.setForeground(BLUE), styleNormal.setForeground(YELLOW), - styleNormal.setBold(true).setUnderline(true), styleNormal.setReverse(true), - styleNormal.setReverse(true).setBold(true), styleNormal.setReverse(true).setUnderline(true) }; - - int pos; - - @Override - public char[] dataSource() { - return (pos + " 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789") - .toCharArray(); - } - - @Override - public TerminalStyle getStyle() { - return styles[pos % styles.length]; - } - - @Override - public void next() { - pos++; - } -} \ No newline at end of file diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/RandomDataSource.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/RandomDataSource.java deleted file mode 100644 index a13bf7c3101..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/RandomDataSource.java +++ /dev/null @@ -1,48 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.internal.terminal.test.ui; - -import static org.eclipse.tm.terminal.model.TerminalColor.BLACK; -import static org.eclipse.tm.terminal.model.TerminalColor.GREEN; -import static org.eclipse.tm.terminal.model.TerminalColor.RED; -import static org.eclipse.tm.terminal.model.TerminalColor.YELLOW; - -import java.util.Random; - -import org.eclipse.tm.terminal.model.ITerminalTextData; -import org.eclipse.tm.terminal.model.TerminalStyle; - -public class RandomDataSource implements IDataSource { - Random fRandom = new Random(); - TerminalStyle styleNormal = TerminalStyle.getStyle(BLACK, GREEN); - TerminalStyle styles[] = new TerminalStyle[] { styleNormal, styleNormal.setBold(true), - styleNormal.setForeground(RED), styleNormal.setForeground(YELLOW), - styleNormal.setBold(true).setUnderline(true), styleNormal.setReverse(true), - styleNormal.setReverse(true).setBold(true), styleNormal.setReverse(true).setUnderline(true) }; - - @Override - public int step(ITerminalTextData terminal) { - int N = fRandom.nextInt(1000); - int h = terminal.getHeight(); - int w = terminal.getWidth(); - synchronized (terminal) { - for (int i = 0; i < N; i++) { - int line = fRandom.nextInt(h); - int col = fRandom.nextInt(w); - char c = (char) ('A' + fRandom.nextInt('z' - 'A')); - TerminalStyle style = styles[fRandom.nextInt(styles.length)]; - terminal.setChar(line, col, c, style); - } - } - return N; - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/TerminalTextUITest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/TerminalTextUITest.java deleted file mode 100644 index 483a1feaaee..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/TerminalTextUITest.java +++ /dev/null @@ -1,263 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.internal.terminal.test.ui; - -import java.io.File; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.layout.RowData; -import org.eclipse.swt.layout.RowLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.swt.widgets.Text; -import org.eclipse.tm.internal.terminal.textcanvas.ITextCanvasModel; -import org.eclipse.tm.internal.terminal.textcanvas.PollingTextCanvasModel; -import org.eclipse.tm.internal.terminal.textcanvas.TextCanvas; -import org.eclipse.tm.internal.terminal.textcanvas.TextLineRenderer; -import org.eclipse.tm.terminal.model.ITerminalTextData; -import org.eclipse.tm.terminal.model.ITerminalTextDataSnapshot; -import org.eclipse.tm.terminal.model.TerminalTextDataFactory; - -/** - * adjust columns when table gets resized.... - * - */ -public class TerminalTextUITest { - static TextCanvas fgTextCanvas; - static ITextCanvasModel fgModel; - static ITerminalTextData fTerminalModel; - static Label fStatusLabel; - static volatile int fHeight; - static volatile int fWidth; - static DataReader fDataReader; - static List fDataReaders = new ArrayList(); - private static Text heightText; - - static class Status implements IStatus { - @Override - public void setStatus(final String s) { - if (!fStatusLabel.isDisposed()) - Display.getDefault().asyncExec(() -> { - if (!fStatusLabel.isDisposed()) - fStatusLabel.setText(s); - }); - } - - } - - public static void main(String[] args) { - Display display = new Display(); - Shell shell = new Shell(display); - shell.setLayout(new GridLayout()); - Composite composite = new Composite(shell, SWT.NONE); - composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - RowLayout layout = new RowLayout(SWT.HORIZONTAL); - layout.wrap = true; - layout.fill = false; - fTerminalModel = TerminalTextDataFactory.makeTerminalTextData(); - fHeight = 24; - fWidth = 80; - fTerminalModel.setDimensions(fHeight, fWidth); - fTerminalModel.setMaxHeight(fHeight); - ITerminalTextDataSnapshot snapshot = fTerminalModel.makeSnapshot(); - // TODO how to get the initial size correctly! - snapshot.updateSnapshot(false); - fgModel = new PollingTextCanvasModel(snapshot); - fgTextCanvas = new TextCanvas(shell, fgModel, SWT.NONE, new TextLineRenderer(fgTextCanvas, fgModel)); - fgTextCanvas.setLayoutData(new GridData(GridData.FILL_BOTH)); - - composite.setLayout(layout); - addAutorevealCursorButton(composite); - Text maxHeightText = addMaxHeightInput(composite); - addHeightInput(composite, maxHeightText); - addWidthText(composite); - Text throttleText = addThrottleText(composite); - - IStatus status = new Status(); - DataReader reader = new DataReader("Line Count", fTerminalModel, new LineCountingDataSource(), status); - addDataReader(composite, reader); - reader = new DataReader("Fast", fTerminalModel, new FastDataSource(), status); - addDataReader(composite, reader); - reader = new DataReader("Colors", fTerminalModel, new VT100DataSource(), status); - addDataReader(composite, reader); - reader = new DataReader("Random", fTerminalModel, new RandomDataSource(), status); - addDataReader(composite, reader); - for (int i = 0; i < args.length; i++) { - File file = new File(args[i]); - reader = new DataReader(file.getName(), fTerminalModel, new VT100DataSource(args[i]), status); - addDataReader(composite, reader); - } - addStopAllButton(composite, reader); - - fStatusLabel = new Label(shell, SWT.NONE); - fStatusLabel.setLayoutData(new GridData(250, 15)); - throttleText.setText("100"); - setThrottleForAll(100); - - if (args.length == 0) - addLabel(composite, "[Files can be added via commandline]"); - shell.setSize(600, 300); - shell.open(); - while (!shell.isDisposed()) { - if (!display.readAndDispatch()) - display.sleep(); - } - display.dispose(); - } - - private static Text addMaxHeightInput(Composite composite) { - addLabel(composite, "maxHeight:"); - final Text maxHeightText = new Text(composite, SWT.BORDER); - setLayoutData(maxHeightText, 30); - maxHeightText.addModifyListener(e -> { - synchronized (fTerminalModel) { - int height = textToInt(maxHeightText); - if (height < 1) - return; - if (fTerminalModel.getHeight() > height) { - fTerminalModel.scroll(0, fTerminalModel.getHeight(), height - fTerminalModel.getHeight()); - fTerminalModel.setDimensions(height, fTerminalModel.getWidth()); - heightText.setText(height + ""); - } - fTerminalModel.setMaxHeight(height); - } - }); - maxHeightText.setText(fHeight + ""); - return maxHeightText; - } - - private static void addHeightInput(Composite composite, final Text maxHeightText) { - addLabel(composite, "heigth:"); - heightText = new Text(composite, SWT.BORDER); - setLayoutData(heightText, 30); - heightText.addModifyListener(e -> { - synchronized (fTerminalModel) { - int height = textToInt(heightText); - if (height < 1) - return; - maxHeightText.setText("" + height); - fTerminalModel.setDimensions(height, fTerminalModel.getWidth()); - fTerminalModel.setMaxHeight(height); - } - }); - heightText.setText(fHeight + ""); - } - - private static Text addWidthText(Composite composite) { - addLabel(composite, "width:"); - final Text widthText = new Text(composite, SWT.BORDER); - setLayoutData(widthText, 30); - widthText.addModifyListener(e -> { - synchronized (fTerminalModel) { - int width = textToInt(widthText); - if (width > 1) - fTerminalModel.setDimensions(fTerminalModel.getHeight(), width); - } - }); - widthText.setText(fWidth + ""); - return widthText; - } - - private static Text addThrottleText(Composite composite) { - addLabel(composite, "throttle:"); - final Text throttleText = new Text(composite, SWT.BORDER); - setLayoutData(throttleText, 30); - throttleText.addModifyListener(e -> { - synchronized (fTerminalModel) { - int throttle = textToInt(throttleText); - setThrottleForAll(throttle); - } - }); - return throttleText; - } - - private static void addStopAllButton(Composite composite, DataReader reader) { - final Button stopAllButton = new Button(composite, SWT.CHECK); - stopAllButton.setText("Stop ALL"); - stopAllButton.addSelectionListener(new SelectionAdapter() { - - @Override - public void widgetSelected(SelectionEvent e) { - boolean stop = stopAllButton.getSelection(); - for (Iterator iterator = fDataReaders.iterator(); iterator.hasNext();) { - DataReader reader = (DataReader) iterator.next(); - reader.setStop(stop); - - } - } - }); - stopAllButton.setSelection(reader.isStart()); - } - - private static void addAutorevealCursorButton(Composite composite) { - final Button button = new Button(composite, SWT.CHECK); - button.setText("ScrollLock"); - button.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - boolean scrollLock = button.getSelection(); - fgTextCanvas.setScrollLock(scrollLock); - } - }); - button.setSelection(fgTextCanvas.isScrollLock()); - } - - private static void addLabel(Composite composite, String message) { - Label label; - label = new Label(composite, SWT.NONE); - label.setText(message); - } - - private static void addDataReader(Composite composite, final DataReader reader) { - fDataReaders.add(reader); - final Button button = new Button(composite, SWT.CHECK); - button.setText(reader.getName()); - button.addSelectionListener(new SelectionAdapter() { - - @Override - public void widgetSelected(SelectionEvent e) { - reader.setStart(button.getSelection()); - } - }); - button.setSelection(reader.isStart()); - - } - - static private void setThrottleForAll(int throttle) { - for (Iterator iterator = fDataReaders.iterator(); iterator.hasNext();) { - DataReader reader = (DataReader) iterator.next(); - reader.setThrottleTime(throttle); - } - } - - static void setLayoutData(Control c, int width) { - c.setLayoutData(new RowData(width, -1)); - } - - static int textToInt(Text text) { - try { - return Integer.valueOf(text.getText()).intValue(); - } catch (Exception ex) { - return 0; - } - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/VT100DataSource.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/VT100DataSource.java deleted file mode 100644 index 6ec10f847da..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/test/ui/VT100DataSource.java +++ /dev/null @@ -1,240 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - * Martin Oberhuber (Wind River) - [204796] Terminal should allow setting the encoding to use - * Anton Leherbauer (Wind River) - [458398] Add support for normal/application cursor keys mode - *******************************************************************************/ -package org.eclipse.tm.internal.terminal.test.ui; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.OutputStream; -import java.io.Reader; -import java.nio.charset.StandardCharsets; - -import org.eclipse.tm.internal.terminal.control.ITerminalListener3.TerminalTitleRequestor; -import org.eclipse.tm.internal.terminal.control.impl.ITerminalControlForText; -import org.eclipse.tm.internal.terminal.emulator.VT100Emulator; -import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector; -import org.eclipse.tm.internal.terminal.provisional.api.TerminalState; -import org.eclipse.tm.terminal.model.ITerminalTextData; - -/** - * Reads the file in an infinite loop. - * Makes lines containing 'x' bold. - * - */ -final class VT100DataSource implements IDataSource { - VT100Emulator fEmulator; - volatile int fAvailable; - volatile int fRead; - private final String fFile; - private final String fANSIEscapeColors; - - VT100DataSource(String file) { - fFile = file; - fANSIEscapeColors = null; - } - - VT100DataSource() { - fFile = null; - StringBuffer input = new StringBuffer(); - input.append(" 8-bit "); - for (int i = 0; i < 255; i++) { - input.append("\033[38:5:"); - input.append(i); - input.append("m"); - input.append(String.format(" %3s ", i)); - input.append("\033[0m"); - if ((i + 1) % 6 == 4) { - input.append("\n"); - } - } - input.append("\n"); - input.append(" 8-bit "); - for (int i = 0; i < 255; i++) { - input.append("\033[48:5:"); - input.append(i); - input.append("m"); - input.append(String.format(" %3s ", i)); - input.append("\033[0m"); - if ((i + 1) % 6 == 4) { - input.append("\n"); - } - } - input.append("\n"); - - input.append("\n"); - input.append(" 24-bit (RGB incremented by 15)"); - int count = 0; - for (int r = 0; r < 255; r += 15) { - for (int g = 0; g < 255; g += 15) { - count = 0; - for (int b = 0; b < 255; b += 15) { - if (count++ % 5 == 0) { - input.append("\n"); - } - input.append("\033[38:2:3:"); - input.append(r); - input.append(":"); - input.append(g); - input.append(":"); - input.append(b); - input.append(":"); - input.append("m"); - input.append(String.format(" (%02x%02x%02x) ", r, g, b)); - input.append("\033[0m"); - - } - } - } - input.append("\n"); - input.append(" 24-bit (RGB incremented by 15)"); - count = 0; - for (int r = 0; r < 255; r += 15) { - for (int g = 0; g < 255; g += 15) { - count = 0; - for (int b = 0; b < 255; b += 15) { - if (count++ % 5 == 0) { - input.append("\n"); - } - input.append("\033[48:2:3:"); - input.append(r); - input.append(":"); - input.append(g); - input.append(":"); - input.append(b); - input.append(":"); - input.append("m"); - input.append(String.format(" (%02x%02x%02x) ", r, g, b)); - input.append("\033[0m"); - - } - } - } - - input.append("\n"); - - fANSIEscapeColors = input.toString(); - } - - class InfiniteFileInputStream extends InputStream { - public InfiniteFileInputStream() { - startInputStream(); - - } - - private void startInputStream() { - if (fFile == null) { - fInputStream = new ByteArrayInputStream(fANSIEscapeColors.getBytes(StandardCharsets.ISO_8859_1)); - } else { - try { - fInputStream = new FileInputStream(fFile); - } catch (FileNotFoundException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - } - - @Override - public int available() throws IOException { - return fAvailable; - } - - private InputStream fInputStream; - - @Override - public int read() throws IOException { - throw new IOException(); - } - - @Override - public int read(byte[] b, int off, int len) throws IOException { - while (fAvailable == 0) { - try { - Thread.sleep(1); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - } - } - len = fAvailable; - int n = fInputStream.read(b, off, len); - if (n <= 0) { - fInputStream.close(); - startInputStream(); - n = fInputStream.read(b, off, len); - } - fAvailable -= n; - return n; - } - - } - - void init(ITerminalTextData terminal) { - final Reader reader = new InputStreamReader(new InfiniteFileInputStream(), StandardCharsets.ISO_8859_1); - fEmulator = new VT100Emulator(terminal, new ITerminalControlForText() { - - public void disconnectTerminal() { - // TODO Auto-generated method stub - - } - - @Override - public OutputStream getOutputStream() { - return new ByteArrayOutputStream(); - } - - @Override - public TerminalState getState() { - return TerminalState.CONNECTED; - } - - @Override - public ITerminalConnector getTerminalConnector() { - return null; - } - - @Override - public void setState(TerminalState state) { - } - - @Override - public void setTerminalTitle(String title, TerminalTitleRequestor requestor) { - } - - @Override - public void enableApplicationCursorKeys(boolean enable) { - } - }, reader); - } - - @Override - public int step(ITerminalTextData terminal) { - synchronized (terminal) { - if (fEmulator == null) { - init(terminal); - // fEmulator.setDimensions(48, 132); - fEmulator.setDimensions(24, 80); - fEmulator.setCrAfterNewLine(true); - - } - fAvailable = 80; - fEmulator.processText(); - } - return 80; - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/textcanvas/PipedInputStreamPerformanceTest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/textcanvas/PipedInputStreamPerformanceTest.java deleted file mode 100644 index 2b6a82d59ac..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/textcanvas/PipedInputStreamPerformanceTest.java +++ /dev/null @@ -1,32 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.internal.terminal.textcanvas; - -import java.io.OutputStream; - -public class PipedInputStreamPerformanceTest { - - /** - * @param args - * @throws InterruptedException - */ - public static void main(String[] args) throws InterruptedException { - runPerformanceTest(); - runPerformanceTest(); - } - - private static void runPerformanceTest() throws InterruptedException { - PipedInputStream in = new PipedInputStream(1024); - OutputStream out = in.getOutputStream(); - PipedStreamTest.runPipe("", in, out, 100); - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/textcanvas/PipedStreamTest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/textcanvas/PipedStreamTest.java deleted file mode 100644 index c18fdfd3e4e..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/internal/terminal/textcanvas/PipedStreamTest.java +++ /dev/null @@ -1,134 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.internal.terminal.textcanvas; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; - -class PipedStreamTest { - static class ReadThread extends Thread { - - InputStream pi = null; - - OutputStream po = null; - - ReadThread(String process, InputStream pi, OutputStream po) { - this.pi = pi; - this.po = po; - setDaemon(true); - } - - @Override - public void run() { - byte[] buffer = new byte[2048]; - int bytes_read; - try { - for (;;) { - bytes_read = pi.read(buffer); - if (bytes_read == -1) { - po.close(); - pi.close(); - return; - } - po.write(buffer, 0, bytes_read); - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - } - - static class FakeInputStream extends InputStream { - int N; - - FakeInputStream(int n) { - N = n; - } - - @Override - public int read(byte[] b, int off, int len) throws IOException { - if (N == 0) - return -1; - int n = Math.min(len, N); - for (int i = off; i < off + n; i++) { - b[i] = 'x'; - } - N -= n; - return n; - } - - @Override - public int read() throws IOException { - throw new UnsupportedOperationException(); - } - - /* - * available has to be implemented! - */ - @Override - public int available() throws IOException { - return N; - } - } - - static class FakeOutputStream extends OutputStream { - long N; - - @Override - public void write(int b) throws IOException { - throw new UnsupportedOperationException(); - } - - @Override - public void write(byte[] b, int off, int len) throws IOException { - N += len; - } - } - - public static void main(String[] args) throws IOException, InterruptedException { - while (true) { - runSunTest(); - runMyTest(); - } - } - - private static void runSunTest() throws IOException, InterruptedException { - java.io.PipedInputStream in = new java.io.PipedInputStream(); - OutputStream out = new java.io.PipedOutputStream(in); - runPipe("Sun ", in, out, 10); - } - - private static void runMyTest() throws IOException, InterruptedException { - PipedInputStream in = new PipedInputStream(4 * 1024); - OutputStream out = in.getOutputStream(); - runPipe("My ", in, out, 99); - } - - public static void runPipe(String what, InputStream writeIn, OutputStream readOut, int N) - throws InterruptedException { - FakeInputStream in = new FakeInputStream(N * 1000 * 1000); - FakeOutputStream out = new FakeOutputStream(); - ReadThread rt = new ReadThread("reader", in, readOut); - ReadThread wt = new ReadThread("writer", writeIn, out); - long t0 = System.currentTimeMillis(); - rt.start(); - wt.start(); - wt.join(); - long t = System.currentTimeMillis(); - long n = out.N; - System.out.println( - what + n + " byte in " + (t - t0) + " ms -> " + (1000 * n) / ((t - t0 + 1) * 1024) + " kb/sec"); - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/model/AllTestSuite.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/model/AllTestSuite.java deleted file mode 100644 index 4a665936a4b..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/model/AllTestSuite.java +++ /dev/null @@ -1,40 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Martin Oberhuber (Wind River) - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.model; - -import junit.framework.JUnit4TestAdapter; -import junit.framework.Test; -import junit.framework.TestCase; -import junit.framework.TestSuite; - -/** - * Public Terminal Model test cases. - * Runs in internal model package to allow access to default visible items. - */ -public class AllTestSuite extends TestCase { - public AllTestSuite() { - super(null); - } - - public AllTestSuite(String name) { - super(name); - } - - public static Test suite() { - TestSuite suite = new TestSuite(AllTestSuite.class.getName()); - suite.addTest(new JUnit4TestAdapter(TerminalColorUITest.class)); - suite.addTestSuite(StyleTest.class); - return suite; - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/model/StyleTest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/model/StyleTest.java deleted file mode 100644 index cdc11a8ac13..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/model/StyleTest.java +++ /dev/null @@ -1,116 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * Contributors: - * Michael Scharf (Wind River) - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.model; - -import junit.framework.TestCase; - -public class StyleTest extends TestCase { - final TerminalColor c1 = TerminalColor.getIndexedTerminalColor(1); - final TerminalColor c2 = TerminalColor.getIndexedTerminalColor(2); - final TerminalColor c3 = TerminalColor.getIndexedTerminalColor(3); - - public void testGetStyle() { - TerminalStyle s1 = TerminalStyle.getStyle(c1, c2, true, false, true, false); - TerminalStyle s2 = TerminalStyle.getStyle(c1, c2, true, false, true, false); - assertEquals(s1, s2); - assertSame(s1, s2); - s1 = s1.setBlink(!s1.isBlink()); - assertNotSame(s1, s2); - assertFalse(s1.equals(s2)); - s1 = s1.setBlink(!s1.isBlink()); - assertSame(s1, s2); - } - - public void testSetForeground() { - TerminalStyle s1 = TerminalStyle.getStyle(c1, c2, true, false, true, false); - TerminalStyle s2 = s1; - s2 = s1.setForeground(c3); - assertNotSame(s1, s2); - assertFalse(s1.equals(s2)); - assertSame(s2.getForegroundTerminalColor(), c3); - assertSame(s1.getForegroundTerminalColor(), c1); - assertSame(s1.getBackgroundTerminalColor(), c2); - assertSame(s2.getBackgroundTerminalColor(), c2); - s2 = s2.setForeground(c1); - assertSame(s1, s2); - } - - public void testSetBackground() { - TerminalStyle s1 = TerminalStyle.getStyle(c1, c2, true, false, true, false); - TerminalStyle s2 = s1; - s2 = s1.setBackground(c3); - assertNotSame(s1, s2); - assertFalse(s1.equals(s2)); - assertSame(s2.getForegroundTerminalColor(), c1); - assertSame(s1.getForegroundTerminalColor(), c1); - assertSame(s1.getBackgroundTerminalColor(), c2); - assertSame(s2.getBackgroundTerminalColor(), c3); - s2 = s2.setBackground(c2); - assertSame(s1, s2); - } - - public void testSetBold() { - TerminalStyle s1 = getDefaultStyle(); - TerminalStyle s2 = s1; - assertSame(s1, s2); - assertFalse(s2.isBold()); - s2 = s2.setBold(true); - assertNotSame(s1, s2); - assertTrue(s2.isBold()); - s2 = s2.setBold(false); - assertSame(s1, s2); - assertFalse(s2.isBold()); - } - - public void testSetBlink() { - TerminalStyle s1 = getDefaultStyle(); - TerminalStyle s2 = s1; - assertSame(s1, s2); - assertFalse(s2.isBlink()); - s2 = s2.setBlink(true); - assertNotSame(s1, s2); - assertTrue(s2.isBlink()); - s2 = s2.setBlink(false); - assertSame(s1, s2); - assertFalse(s2.isBlink()); - } - - public void testSetUnderline() { - TerminalStyle s1 = getDefaultStyle(); - TerminalStyle s2 = s1; - assertSame(s1, s2); - assertFalse(s2.isUnderline()); - s2 = s2.setUnderline(true); - assertNotSame(s1, s2); - assertTrue(s2.isUnderline()); - s2 = s2.setUnderline(false); - assertSame(s1, s2); - assertFalse(s2.isUnderline()); - } - - public void testSetReverse() { - TerminalStyle s1 = getDefaultStyle(); - TerminalStyle s2 = s1; - assertSame(s1, s2); - assertFalse(s2.isReverse()); - s2 = s2.setReverse(true); - assertNotSame(s1, s2); - assertTrue(s2.isReverse()); - s2 = s2.setReverse(false); - assertSame(s1, s2); - assertFalse(s2.isReverse()); - } - - private TerminalStyle getDefaultStyle() { - return TerminalStyle.getStyle(c1, c2, false, false, false, false); - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/model/TerminalColorUITest.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/model/TerminalColorUITest.java deleted file mode 100644 index cf0bf3781ce..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/model/TerminalColorUITest.java +++ /dev/null @@ -1,154 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2020 Kichwa Coders Canada Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - *******************************************************************************/ -package org.eclipse.tm.terminal.model; - -import static org.eclipse.tm.terminal.model.TerminalColor.BLACK; -import static org.eclipse.tm.terminal.model.TerminalColor.BLUE; -import static org.eclipse.tm.terminal.model.TerminalColor.CYAN; -import static org.eclipse.tm.terminal.model.TerminalColor.GREEN; -import static org.eclipse.tm.terminal.model.TerminalColor.MAGENTA; -import static org.eclipse.tm.terminal.model.TerminalColor.RED; -import static org.eclipse.tm.terminal.model.TerminalColor.WHITE; -import static org.eclipse.tm.terminal.model.TerminalColor.YELLOW; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotEquals; -import static org.junit.Assert.assertNotNull; - -import org.eclipse.swt.widgets.Display; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; - -/** - * This is a UI test because {@link TerminalColor#convertColor(boolean, boolean) - * requires a Display to operate the ColorRegistry. - */ -public class TerminalColorUITest { - - private static Display display = null; - - @BeforeClass - public static void createDisplay() { - Display current = Display.getCurrent(); - if (current == null) { - display = new Display(); - } - } - - @AfterClass - public static void disposeDisplay() { - if (display != null) { - display.dispose(); - } - } - - @Test - public void testInversionsStandard() { - - assertEquals(BLACK.convertColor(false, false), WHITE.convertColor(true, false)); - assertNotEquals(BLACK.convertColor(false, false), WHITE.convertColor(false, false)); - - assertEquals(RED.convertColor(false, false), RED.convertColor(true, false)); - assertEquals(GREEN.convertColor(false, false), GREEN.convertColor(true, false)); - assertEquals(YELLOW.convertColor(false, false), YELLOW.convertColor(true, false)); - assertEquals(BLUE.convertColor(false, false), BLUE.convertColor(true, false)); - assertEquals(MAGENTA.convertColor(false, false), MAGENTA.convertColor(true, false)); - assertEquals(CYAN.convertColor(false, false), CYAN.convertColor(true, false)); - - assertEquals(WHITE.convertColor(false, false), BLACK.convertColor(true, false)); - assertNotEquals(WHITE.convertColor(false, false), BLACK.convertColor(false, false)); - - } - - @Test - public void testInversionsBright() { - assertEquals(BLACK.convertColor(false, true), WHITE.convertColor(true, true)); - assertNotEquals(BLACK.convertColor(false, true), WHITE.convertColor(false, true)); - - assertEquals(RED.convertColor(false, true), RED.convertColor(true, true)); - assertEquals(GREEN.convertColor(false, true), GREEN.convertColor(true, true)); - assertEquals(YELLOW.convertColor(false, true), YELLOW.convertColor(true, true)); - assertEquals(BLUE.convertColor(false, true), BLUE.convertColor(true, true)); - assertEquals(MAGENTA.convertColor(false, true), MAGENTA.convertColor(true, true)); - assertEquals(CYAN.convertColor(false, true), CYAN.convertColor(true, true)); - - assertEquals(WHITE.convertColor(false, true), BLACK.convertColor(true, true)); - assertNotEquals(WHITE.convertColor(false, true), BLACK.convertColor(false, true)); - } - - @Test - public void testIndexesResolveToStandardColors() { - // check explicit colors - assertEquals(TerminalColor.BLACK.convertColor(false, false), - TerminalColor.getIndexedTerminalColor(0).convertColor(false, false)); - assertEquals(TerminalColor.RED.convertColor(false, false), - TerminalColor.getIndexedTerminalColor(1).convertColor(false, false)); - - // Now check all colors - for (int i = 0; i < 8; i++) { - assertEquals(TerminalColor.values()[i].convertColor(false, false), - TerminalColor.getIndexedTerminalColor(i).convertColor(false, false)); - } - } - - @Test - public void testIndexesResolveToBrightColors() { - // check explicit colors - assertEquals(TerminalColor.BLACK.convertColor(false, true), - TerminalColor.getIndexedTerminalColor(8).convertColor(false, false)); - assertEquals(TerminalColor.RED.convertColor(false, true), - TerminalColor.getIndexedTerminalColor(9).convertColor(false, false)); - - // Now check all colors - for (int i = 0; i < 8; i++) { - assertEquals(TerminalColor.values()[i].convertColor(false, true), - TerminalColor.getIndexedTerminalColor(i + 8).convertColor(false, false)); - } - } - - @Test - public void testIndexesInRange() { - for (int i = 0; i < 16; i++) { - assertNotNull(TerminalColor.getIndexedTerminalColor(i)); - } - for (int i = 16; i < 256; i++) { - assertNotNull(TerminalColor.getIndexedRGBColor(i)); - } - } - - @Test(expected = IllegalArgumentException.class) - public void testIndexesOutOfRange_m1TerminalColor() { - assertNotNull(TerminalColor.getIndexedTerminalColor(-1)); - } - - @Test(expected = IllegalArgumentException.class) - public void testIndexesOutOfRange_m1RGBColor() { - assertNotNull(TerminalColor.getIndexedRGBColor(-1)); - } - - @Test(expected = IllegalArgumentException.class) - public void testIndexesOutOfRange_16() { - assertNotNull(TerminalColor.getIndexedTerminalColor(16)); - } - - @Test(expected = IllegalArgumentException.class) - public void testIndexesOutOfRange_15() { - assertNotNull(TerminalColor.getIndexedRGBColor(15)); - } - - @Test(expected = IllegalArgumentException.class) - public void testIndexesOutOfRange_256TerminalColor() { - assertNotNull(TerminalColor.getIndexedTerminalColor(256)); - } - - @Test(expected = IllegalArgumentException.class) - public void testIndexesOutOfRange_256RGBColor() { - assertNotNull(TerminalColor.getIndexedRGBColor(256)); - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/test/AutomatedIntegrationSuite.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/test/AutomatedIntegrationSuite.java deleted file mode 100644 index 62d717b80f5..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/test/AutomatedIntegrationSuite.java +++ /dev/null @@ -1,20 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2020 Kichwa Coders Canada and others. - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - *******************************************************************************/ -package org.eclipse.tm.terminal.test; - -import org.junit.runner.RunWith; -import org.junit.runners.Suite; - -@RunWith(Suite.class) -@Suite.SuiteClasses({ AutomatedPluginTestSuite.class, AutomatedTestSuite.class }) -public class AutomatedIntegrationSuite { - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/test/AutomatedPluginTestSuite.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/test/AutomatedPluginTestSuite.java deleted file mode 100644 index e6504581091..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/test/AutomatedPluginTestSuite.java +++ /dev/null @@ -1,39 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Martin Oberhuber (Wind River) - initial API and implementation - *******************************************************************************/ - -package org.eclipse.tm.terminal.test; - -import junit.framework.Test; -import junit.framework.TestCase; -import junit.framework.TestSuite; - -/** - * Master Test Suite to run all Terminal plug-in tests. - */ -public class AutomatedPluginTestSuite extends TestCase { - /** - * Call each AllTestSuite class from each of the test packages. - */ - public static Test suite() { - TestSuite suite = new TestSuite(AutomatedPluginTestSuite.class.getName()); - //These tests require Eclipse Platform to be up - suite.addTestSuite(org.eclipse.tm.internal.terminal.connector.TerminalConnectorPluginTest.class); - suite.addTestSuite(org.eclipse.tm.internal.terminal.connector.TerminalConnectorFactoryTest.class); - - //These tests must run as plain JUnit because they require access - //to "package" protected methods - //suite.addTest(AutomatedTestSuite.suite()); - return suite; - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/test/AutomatedTestSuite.java b/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/test/AutomatedTestSuite.java deleted file mode 100644 index 2383462921a..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/src/org/eclipse/tm/terminal/test/AutomatedTestSuite.java +++ /dev/null @@ -1,46 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2018 Wind River Systems, Inc. and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Martin Oberhuber (Wind River) - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.test; - -import junit.framework.Test; -import junit.framework.TestCase; -import junit.framework.TestSuite; - -/** - * Master test suite to run all terminal unit tests. - */ -public class AutomatedTestSuite extends TestCase { - - public static final String PI_TERMINAL_TESTS = "org.eclipse.tm.terminal.test"; //$NON-NLS-1$ - - public AutomatedTestSuite() { - super(null); - } - - public AutomatedTestSuite(String name) { - super(name); - } - - /** - * Call each AllTestSuite class from each of the test packages. - */ - public static Test suite() { - TestSuite suite = new TestSuite(AutomatedTestSuite.class.getName()); - suite.addTest(org.eclipse.tm.internal.terminal.emulator.AllTestSuite.suite()); - suite.addTest(org.eclipse.tm.internal.terminal.model.AllTestSuite.suite()); - suite.addTest(org.eclipse.tm.terminal.model.AllTestSuite.suite()); - suite.addTestSuite(org.eclipse.tm.internal.terminal.connector.TerminalConnectorTest.class); - suite.addTestSuite(org.eclipse.tm.internal.terminal.connector.TerminalToRemoteInjectionOutputStreamTest.class); - return suite; - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/teamConfig/Terminal All Unit Tests.launch b/terminal/plugins/org.eclipse.tm.terminal.test/teamConfig/Terminal All Unit Tests.launch deleted file mode 100644 index fd2e3ebb9d4..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/teamConfig/Terminal All Unit Tests.launch +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/terminal/plugins/org.eclipse.tm.terminal.test/teamConfig/Terminal AutomatedTests.launch b/terminal/plugins/org.eclipse.tm.terminal.test/teamConfig/Terminal AutomatedTests.launch deleted file mode 100644 index a8d7a4e206d..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.test/teamConfig/Terminal AutomatedTests.launch +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/.classpath b/terminal/plugins/org.eclipse.tm.terminal.view.core/.classpath deleted file mode 100644 index 81fe078c20c..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.core/.classpath +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/.gitignore b/terminal/plugins/org.eclipse.tm.terminal.view.core/.gitignore deleted file mode 100644 index ae3c1726048..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.core/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/bin/ diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/.options b/terminal/plugins/org.eclipse.tm.terminal.view.core/.options deleted file mode 100644 index a0a2c87a3c7..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.core/.options +++ /dev/null @@ -1 +0,0 @@ -org.eclipse.tm.terminal.view.core/debugmode = 0 diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/.project b/terminal/plugins/org.eclipse.tm.terminal.view.core/.project deleted file mode 100644 index f6e4e7e96a0..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.core/.project +++ /dev/null @@ -1,45 +0,0 @@ - - - org.eclipse.tm.terminal.view.core - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.pde.ManifestBuilder - - - - - org.eclipse.pde.SchemaBuilder - - - - - org.eclipse.pde.api.tools.apiAnalysisBuilder - - - - - - org.eclipse.pde.PluginNature - org.eclipse.jdt.core.javanature - org.eclipse.pde.api.tools.apiAnalysisNature - - - - 1329501981620 - - 10 - - org.eclipse.ui.ide.multiFilter - 1.0-name-matches-false-false-target - - - - diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.core.resources.prefs b/terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index 99f26c0203a..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -encoding/=UTF-8 diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.jdt.core.prefs b/terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 9df862f8d49..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,486 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.builder.cleanOutputFolder=clean -org.eclipse.jdt.core.builder.duplicateResourceTask=warning -org.eclipse.jdt.core.builder.invalidClasspath=abort -org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore -org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend -org.eclipse.jdt.core.circularClasspath=error -org.eclipse.jdt.core.classpath.exclusionPatterns=enabled -org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error -org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled -org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error -org.eclipse.jdt.core.codeComplete.argumentPrefixes= -org.eclipse.jdt.core.codeComplete.argumentSuffixes= -org.eclipse.jdt.core.codeComplete.fieldPrefixes= -org.eclipse.jdt.core.codeComplete.fieldSuffixes= -org.eclipse.jdt.core.codeComplete.localPrefixes= -org.eclipse.jdt.core.codeComplete.localSuffixes= -org.eclipse.jdt.core.codeComplete.staticFieldPrefixes= -org.eclipse.jdt.core.codeComplete.staticFieldSuffixes= -org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes= -org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes= -org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled -org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore -org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull -org.eclipse.jdt.core.compiler.annotation.nonnull.secondary= -org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault -org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary= -org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable -org.eclipse.jdt.core.compiler.annotation.nullable.secondary= -org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.methodParameters=generate -org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=17 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.doc.comment.support=enabled -org.eclipse.jdt.core.compiler.maxProblemPerUnit=100 -org.eclipse.jdt.core.compiler.problem.APILeak=warning -org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.autoboxing=ignore -org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning -org.eclipse.jdt.core.compiler.problem.deadCode=warning -org.eclipse.jdt.core.compiler.problem.deprecation=warning -org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled -org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled -org.eclipse.jdt.core.compiler.problem.discouragedReference=warning -org.eclipse.jdt.core.compiler.problem.emptyStatement=warning -org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore -org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning -org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled -org.eclipse.jdt.core.compiler.problem.fieldHiding=warning -org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning -org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning -org.eclipse.jdt.core.compiler.problem.forbiddenReference=error -org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning -org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled -org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning -org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning -org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore -org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore -org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled -org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled -org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled -org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected -org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore -org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error -org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore -org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning -org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled -org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled -org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public -org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag -org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled -org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled -org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled -org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore -org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore -org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning -org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning -org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning -org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning -org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning -org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error -org.eclipse.jdt.core.compiler.problem.nullReference=error -org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error -org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning -org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning -org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore -org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning -org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning -org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning -org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore -org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning -org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning -org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning -org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore -org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning -org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore -org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore -org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning -org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled -org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning -org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled -org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled -org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled -org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore -org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning -org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning -org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled -org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning -org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning -org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore -org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning -org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning -org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled -org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info -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.unstableAutoModuleName=warning -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled -org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore -org.eclipse.jdt.core.compiler.problem.unusedImport=warning -org.eclipse.jdt.core.compiler.problem.unusedLabel=warning -org.eclipse.jdt.core.compiler.problem.unusedLocal=warning -org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore -org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore -org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled -org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning -org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore -org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning -org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning -org.eclipse.jdt.core.compiler.release=enabled -org.eclipse.jdt.core.compiler.source=17 -org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false -org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647 -org.eclipse.jdt.core.formatter.align_type_members_on_columns=false -org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false -org.eclipse.jdt.core.formatter.align_with_spaces=false -org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_assignment=0 -org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 -org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16 -org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 -org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16 -org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 -org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0 -org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0 -org.eclipse.jdt.core.formatter.alignment_for_module_statements=16 -org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 -org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80 -org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16 -org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0 -org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0 -org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16 -org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_after_package=1 -org.eclipse.jdt.core.formatter.blank_lines_before_field=0 -org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 -org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 -org.eclipse.jdt.core.formatter.blank_lines_before_method=1 -org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 -org.eclipse.jdt.core.formatter.blank_lines_before_package=0 -org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 -org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 -org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true -org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false -org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true -org.eclipse.jdt.core.formatter.comment.format_block_comments=false -org.eclipse.jdt.core.formatter.comment.format_header=false -org.eclipse.jdt.core.formatter.comment.format_html=true -org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false -org.eclipse.jdt.core.formatter.comment.format_line_comments=false -org.eclipse.jdt.core.formatter.comment.format_source_code=true -org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false -org.eclipse.jdt.core.formatter.comment.indent_root_tags=false -org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert -org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert -org.eclipse.jdt.core.formatter.comment.line_length=80 -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=false -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true -org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_empty_lines=false -org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true -org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false -org.eclipse.jdt.core.formatter.indentation.size=4 -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert -org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert -org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert -org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert -org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert -org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert -org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert -org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.join_lines_in_comments=true -org.eclipse.jdt.core.formatter.join_wrapped_lines=true -org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false -org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false -org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false -org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false -org.eclipse.jdt.core.formatter.lineSplit=120 -org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false -org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 -org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 -org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines -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_additive_operator=true -org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false -org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true -org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true -org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true -org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true -org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true -org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true -org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true -org.eclipse.jdt.core.incompatibleJDKLevel=ignore -org.eclipse.jdt.core.incompleteClasspath=error -org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.jdt.launching.prefs b/terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.jdt.launching.prefs deleted file mode 100644 index f8a131b56e0..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.jdt.launching.prefs +++ /dev/null @@ -1,3 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.launching.PREF_COMPILER_COMPLIANCE_DOES_NOT_MATCH_JRE=warning -org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.jdt.ui.prefs b/terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.jdt.ui.prefs deleted file mode 100644 index d35ba9b5231..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.jdt.ui.prefs +++ /dev/null @@ -1,213 +0,0 @@ -cleanup.add_all=false -cleanup.add_default_serial_version_id=true -cleanup.add_generated_serial_version_id=false -cleanup.add_missing_annotations=true -cleanup.add_missing_deprecated_annotations=true -cleanup.add_missing_methods=false -cleanup.add_missing_nls_tags=false -cleanup.add_missing_override_annotations=true -cleanup.add_missing_override_annotations_interface_methods=true -cleanup.add_serial_version_id=false -cleanup.always_use_blocks=true -cleanup.always_use_parentheses_in_expressions=false -cleanup.always_use_this_for_non_static_field_access=false -cleanup.always_use_this_for_non_static_method_access=false -cleanup.array_with_curly=false -cleanup.arrays_fill=false -cleanup.bitwise_conditional_expression=false -cleanup.boolean_literal=false -cleanup.boolean_value_rather_than_comparison=false -cleanup.break_loop=false -cleanup.collection_cloning=false -cleanup.comparing_on_criteria=false -cleanup.comparison_statement=false -cleanup.controlflow_merge=false -cleanup.convert_functional_interfaces=false -cleanup.convert_to_enhanced_for_loop=false -cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true -cleanup.convert_to_switch_expressions=false -cleanup.correct_indentation=false -cleanup.do_while_rather_than_while=true -cleanup.double_negation=false -cleanup.else_if=false -cleanup.embedded_if=false -cleanup.evaluate_nullable=false -cleanup.extract_increment=false -cleanup.format_source_code=true -cleanup.format_source_code_changes_only=false -cleanup.hash=false -cleanup.if_condition=false -cleanup.insert_inferred_type_arguments=false -cleanup.instanceof=false -cleanup.instanceof_keyword=false -cleanup.invert_equals=false -cleanup.join=false -cleanup.lazy_logical_operator=false -cleanup.make_local_variable_final=true -cleanup.make_parameters_final=false -cleanup.make_private_fields_final=true -cleanup.make_type_abstract_if_missing_method=false -cleanup.make_variable_declarations_final=false -cleanup.map_cloning=false -cleanup.merge_conditional_blocks=false -cleanup.multi_catch=false -cleanup.never_use_blocks=false -cleanup.never_use_parentheses_in_expressions=true -cleanup.no_string_creation=false -cleanup.no_super=false -cleanup.number_suffix=false -cleanup.objects_equals=false -cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false -cleanup.operand_factorization=false -cleanup.organize_imports=true -cleanup.overridden_assignment=false -cleanup.plain_replacement=false -cleanup.precompile_regex=false -cleanup.primitive_comparison=false -cleanup.primitive_parsing=false -cleanup.primitive_rather_than_wrapper=false -cleanup.primitive_serialization=false -cleanup.pull_out_if_from_if_else=false -cleanup.pull_up_assignment=false -cleanup.push_down_negation=false -cleanup.qualify_static_field_accesses_with_declaring_class=false -cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -cleanup.qualify_static_member_accesses_with_declaring_class=false -cleanup.qualify_static_method_accesses_with_declaring_class=false -cleanup.reduce_indentation=false -cleanup.redundant_comparator=false -cleanup.redundant_falling_through_block_end=false -cleanup.remove_private_constructors=true -cleanup.remove_redundant_modifiers=false -cleanup.remove_redundant_semicolons=true -cleanup.remove_redundant_type_arguments=true -cleanup.remove_trailing_whitespaces=true -cleanup.remove_trailing_whitespaces_all=true -cleanup.remove_trailing_whitespaces_ignore_empty=false -cleanup.remove_unnecessary_array_creation=false -cleanup.remove_unnecessary_casts=true -cleanup.remove_unnecessary_nls_tags=false -cleanup.remove_unused_imports=true -cleanup.remove_unused_local_variables=false -cleanup.remove_unused_method_parameters=false -cleanup.remove_unused_private_fields=true -cleanup.remove_unused_private_members=false -cleanup.remove_unused_private_methods=true -cleanup.remove_unused_private_types=true -cleanup.return_expression=false -cleanup.simplify_lambda_expression_and_method_ref=false -cleanup.single_used_field=false -cleanup.sort_members=false -cleanup.sort_members_all=false -cleanup.standard_comparison=false -cleanup.static_inner_class=false -cleanup.strictly_equal_or_different=false -cleanup.stringbuffer_to_stringbuilder=false -cleanup.stringbuilder=false -cleanup.stringbuilder_for_local_vars=true -cleanup.stringconcat_to_textblock=false -cleanup.substring=false -cleanup.switch=false -cleanup.system_property=false -cleanup.system_property_boolean=false -cleanup.system_property_file_encoding=false -cleanup.system_property_file_separator=false -cleanup.system_property_line_separator=false -cleanup.system_property_path_separator=false -cleanup.ternary_operator=false -cleanup.try_with_resource=false -cleanup.unlooped_while=false -cleanup.unreachable_block=false -cleanup.use_anonymous_class_creation=false -cleanup.use_autoboxing=false -cleanup.use_blocks=false -cleanup.use_blocks_only_for_return_and_throw=false -cleanup.use_directly_map_method=false -cleanup.use_lambda=true -cleanup.use_parentheses_in_expressions=false -cleanup.use_string_is_blank=false -cleanup.use_this_for_non_static_field_access=false -cleanup.use_this_for_non_static_field_access_only_if_necessary=true -cleanup.use_this_for_non_static_method_access=false -cleanup.use_this_for_non_static_method_access_only_if_necessary=true -cleanup.use_unboxing=false -cleanup.use_var=false -cleanup.useless_continue=false -cleanup.useless_return=false -cleanup.valueof_rather_than_instantiation=false -cleanup_profile=_CDT -cleanup_settings_version=2 -eclipse.preferences.version=1 -editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true -formatter_profile=_CDT -formatter_settings_version=14 -internal.default.compliance=user -org.eclipse.jdt.ui.exception.name=e -org.eclipse.jdt.ui.gettersetter.use.is=true -org.eclipse.jdt.ui.ignorelowercasenames=true -org.eclipse.jdt.ui.importorder=java;javax;org;com; -org.eclipse.jdt.ui.keywordthis=false -org.eclipse.jdt.ui.ondemandthreshold=1000 -org.eclipse.jdt.ui.overrideannotation=true -org.eclipse.jdt.ui.staticondemandthreshold=1000 -org.eclipse.jdt.ui.text.custom_code_templates= -sp_cleanup.add_default_serial_version_id=true -sp_cleanup.add_generated_serial_version_id=false -sp_cleanup.add_missing_annotations=true -sp_cleanup.add_missing_deprecated_annotations=true -sp_cleanup.add_missing_methods=false -sp_cleanup.add_missing_nls_tags=false -sp_cleanup.add_missing_override_annotations=true -sp_cleanup.add_missing_override_annotations_interface_methods=true -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_functional_interfaces=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.insert_inferred_type_arguments=false -sp_cleanup.make_local_variable_final=true -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_redundant_modifiers=false -sp_cleanup.remove_redundant_semicolons=true -sp_cleanup.remove_redundant_type_arguments=true -sp_cleanup.remove_trailing_whitespaces=true -sp_cleanup.remove_trailing_whitespaces_all=true -sp_cleanup.remove_trailing_whitespaces_ignore_empty=false -sp_cleanup.remove_unnecessary_casts=true -sp_cleanup.remove_unnecessary_nls_tags=false -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_anonymous_class_creation=false -sp_cleanup.use_blocks=false -sp_cleanup.use_blocks_only_for_return_and_throw=false -sp_cleanup.use_lambda=true -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/terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.pde.api.tools.prefs b/terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.pde.api.tools.prefs deleted file mode 100644 index ec9fbf321d0..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.pde.api.tools.prefs +++ /dev/null @@ -1,184 +0,0 @@ -ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error -ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error -ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error -ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error -ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error -ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error -API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error -API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error -API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error -API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error -API_USE_SCAN_FIELD_SEVERITY=Error -API_USE_SCAN_METHOD_SEVERITY=Error -API_USE_SCAN_TYPE_SEVERITY=Error -CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -CLASS_ELEMENT_TYPE_ADDED_FIELD=Error -CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error -CLASS_ELEMENT_TYPE_ADDED_METHOD=Error -CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error -CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error -CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error -CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error -CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error -CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error -CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error -CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error -CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error -CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error -CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error -CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error -CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error -CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error -CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error -CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error -CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error -CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error -CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error -CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error -CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error -CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error -CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error -ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error -ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error -ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error -ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error -ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error -ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error -ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error -ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error -ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error -ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error -FIELD_ELEMENT_TYPE_ADDED_VALUE=Error -FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error -FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error -FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error -FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error -FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error -FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error -FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error -FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error -FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error -FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error -ILLEGAL_EXTEND=Warning -ILLEGAL_IMPLEMENT=Warning -ILLEGAL_INSTANTIATE=Warning -ILLEGAL_OVERRIDE=Warning -ILLEGAL_REFERENCE=Warning -INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error -INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error -INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error -INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error -INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error -INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error -INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error -INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error -INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error -INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error -INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error -INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error -INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error -INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error -INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error -INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error -INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error -INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error -INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error -INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error -INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error -INVALID_ANNOTATION=Ignore -INVALID_JAVADOC_TAG=Error -INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning -LEAK_EXTEND=Warning -LEAK_FIELD_DECL=Warning -LEAK_IMPLEMENT=Warning -LEAK_METHOD_PARAM=Warning -LEAK_METHOD_RETURN_TYPE=Warning -METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error -METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error -METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error -METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error -METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error -METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error -METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error -METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error -METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error -METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error -METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error -METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error -METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error -METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error -MISSING_EE_DESCRIPTIONS=Warning -TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -UNUSED_PROBLEM_FILTERS=Warning -automatically_removed_unused_problem_filters=false -changed_execution_env=Error -eclipse.preferences.version=1 -incompatible_api_component_version=Error -incompatible_api_component_version_include_major_without_breaking_change=Disabled -incompatible_api_component_version_include_minor_without_api_change=Disabled -incompatible_api_component_version_report_major_without_breaking_change=Warning -incompatible_api_component_version_report_minor_without_api_change=Warning -invalid_since_tag_version=Error -malformed_since_tag=Error -missing_since_tag=Error -report_api_breakage_when_major_version_incremented=Disabled -report_resolution_errors_api_component=Warning diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.pde.prefs b/terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.pde.prefs deleted file mode 100644 index ffaa8e3f1a7..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.core/.settings/org.eclipse.pde.prefs +++ /dev/null @@ -1,36 +0,0 @@ -compilers.f.unresolved-features=1 -compilers.f.unresolved-plugins=1 -compilers.incompatible-environment=1 -compilers.p.build=1 -compilers.p.build.bin.includes=0 -compilers.p.build.encodings=2 -compilers.p.build.java.compiler=2 -compilers.p.build.java.compliance=1 -compilers.p.build.missing.output=2 -compilers.p.build.output.library=1 -compilers.p.build.source.library=1 -compilers.p.build.src.includes=0 -compilers.p.deprecated=1 -compilers.p.discouraged-class=1 -compilers.p.exec-env-too-low=1 -compilers.p.internal=1 -compilers.p.missing-packages=2 -compilers.p.missing-version-export-package=2 -compilers.p.missing-version-import-package=2 -compilers.p.missing-version-require-bundle=2 -compilers.p.no-required-att=0 -compilers.p.no.automatic.module=1 -compilers.p.not-externalized-att=1 -compilers.p.service.component.without.lazyactivation=1 -compilers.p.unknown-attribute=1 -compilers.p.unknown-class=0 -compilers.p.unknown-element=1 -compilers.p.unknown-identifier=0 -compilers.p.unknown-resource=0 -compilers.p.unresolved-ex-points=0 -compilers.p.unresolved-import=0 -compilers.s.create-docs=false -compilers.s.doc-folder=doc -compilers.s.open-tags=1 -compilers.use-project=true -eclipse.preferences.version=1 diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/META-INF/MANIFEST.MF b/terminal/plugins/org.eclipse.tm.terminal.view.core/META-INF/MANIFEST.MF deleted file mode 100644 index 64e065d9e43..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.core/META-INF/MANIFEST.MF +++ /dev/null @@ -1,22 +0,0 @@ -Manifest-Version: 1.0 -Bundle-ManifestVersion: 2 -Bundle-Name: %pluginName -Bundle-SymbolicName: org.eclipse.tm.terminal.view.core;singleton:=true -Bundle-Version: 4.10.500.qualifier -Bundle-Activator: org.eclipse.tm.terminal.view.core.activator.CoreBundleActivator -Bundle-Vendor: %providerName -Require-Bundle: org.eclipse.core.expressions;bundle-version="[3.9.400,4)", - org.eclipse.core.runtime;bundle-version="[3.33.0,4)" -Bundle-RequiredExecutionEnvironment: JavaSE-17 -Bundle-ActivationPolicy: lazy -Bundle-Localization: plugin -Export-Package: org.eclipse.tm.terminal.view.core, - org.eclipse.tm.terminal.view.core.activator;x-internal:=true, - org.eclipse.tm.terminal.view.core.interfaces, - org.eclipse.tm.terminal.view.core.interfaces.constants, - org.eclipse.tm.terminal.view.core.internal;x-internal:=true, - org.eclipse.tm.terminal.view.core.nls;x-internal:=true, - org.eclipse.tm.terminal.view.core.preferences, - org.eclipse.tm.terminal.view.core.tracing, - org.eclipse.tm.terminal.view.core.utils -Automatic-Module-Name: org.eclipse.tm.terminal.view.core diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/about.html b/terminal/plugins/org.eclipse.tm.terminal.view.core/about.html deleted file mode 100644 index b3134865230..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.core/about.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - About - - - -

About This Content

- -

November 30, 2017

-

License

- -

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

- -

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

- - - - \ No newline at end of file diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/build.properties b/terminal/plugins/org.eclipse.tm.terminal.view.core/build.properties deleted file mode 100644 index 23a7377b39e..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.core/build.properties +++ /dev/null @@ -1,24 +0,0 @@ -############################################################################### -# Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved. -# This program and the accompanying materials are made available under the terms -# of the Eclipse Public License 2.0 which accompanies this distribution, and is -# available at https://www.eclipse.org/legal/epl-2.0/ -# -# SPDX-License-Identifier: EPL-2.0 -# -# Contributors: -# Wind River Systems - initial API and implementation -############################################################################### -source.. = src/ -output.. = bin/ -bin.includes = META-INF/,\ - .,\ - plugin.properties,\ - about.html,\ - plugin.xml,\ - about.ini,\ - about.mappings,\ - about.properties,\ - cdt_logo_icon32.png -src.includes = about.html,\ - schema/ diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/plugin.properties b/terminal/plugins/org.eclipse.tm.terminal.view.core/plugin.properties deleted file mode 100644 index 58f7d91fb3a..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.core/plugin.properties +++ /dev/null @@ -1,16 +0,0 @@ -################################################################################## -# Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. All rights reserved. -# This program and the accompanying materials are made available under the terms -# of the Eclipse Public License 2.0 which accompanies this distribution, and is -# available at https://www.eclipse.org/legal/epl-2.0/ -# -# SPDX-License-Identifier: EPL-2.0 -# -# Contributors: -# Wind River Systems - initial API and implementation -################################################################################## - -pluginName = Terminal View Core -providerName = Eclipse CDT - -ExtensionPoint.contextPropertiesProviders = Terminal Context Properties Providers diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/plugin.xml b/terminal/plugins/org.eclipse.tm.terminal.view.core/plugin.xml deleted file mode 100644 index b60ca296396..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.core/plugin.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/schema/contextPropertiesProviders.exsd b/terminal/plugins/org.eclipse.tm.terminal.view.core/schema/contextPropertiesProviders.exsd deleted file mode 100644 index 3a9b909701d..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.core/schema/contextPropertiesProviders.exsd +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - - This extension point is used to contribute terminal context properties providers. The context properties provider allows querying desired properties for a given context. -<p> -The terminal context is passed in as default variable to the enablement expression evaluation. The terminal context is not expected to be iteratable or countable. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Declares a terminal context properties provider contribution. - - - - - - - - - - The class that implements <code>org.eclipse.tm.terminal.view.core.interfaces.ITerminalContextPropertiesProvider</code>. - - - - - - - - - - - - - - - TM Terminal 4.0.0 - - - - - - - - - This is an example of the extension point usage: -<p> -<pre><code> - <extension point="org.eclipse.tm.terminal.view.core.contextPropertiesProviders"> - <contextPropertiesProvider - class="com.my.contribution.MyContextPropertiesProviderImpl"> - </contextPropertiesProvider> - </extension> -</code></pre> - - - - - - - - - The provider of a terminal context properties provider must implement <samp>org.eclipse.tm.terminal.view.core.interfaces.ITerminalContextPropertiesProvider</samp>. - - - - - - - - - - Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. - -All rights reserved. - -This program and the accompanying materials are made available under the terms -of the Eclipse Public License 2.0 which accompanies this distribution, and is -available at https://www.eclipse.org/legal/epl-2.0/ - - SPDX-License-Identifier: EPL-2.0 - - - - diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/TerminalContextPropertiesProviderFactory.java b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/TerminalContextPropertiesProviderFactory.java deleted file mode 100644 index 633c0a8cb12..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/TerminalContextPropertiesProviderFactory.java +++ /dev/null @@ -1,230 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.core; - -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.core.expressions.EvaluationContext; -import org.eclipse.core.expressions.EvaluationResult; -import org.eclipse.core.expressions.Expression; -import org.eclipse.core.expressions.ExpressionConverter; -import org.eclipse.core.runtime.Assert; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IConfigurationElement; -import org.eclipse.core.runtime.IExecutableExtension; -import org.eclipse.core.runtime.IExtension; -import org.eclipse.core.runtime.IExtensionPoint; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Platform; -import org.eclipse.core.runtime.Status; -import org.eclipse.osgi.util.NLS; -import org.eclipse.tm.terminal.view.core.activator.CoreBundleActivator; -import org.eclipse.tm.terminal.view.core.interfaces.ITerminalContextPropertiesProvider; -import org.eclipse.tm.terminal.view.core.nls.Messages; - -/** - * Terminal context properties provider factory. - */ -public final class TerminalContextPropertiesProviderFactory { - // Flag to remember if the contributions got loaded - private static boolean contributionsLoaded = false; - - // The list of all loaded contributions - private static final List contributions = new ArrayList<>(); - - // The proxy used to achieve lazy class loading and plug-in activation - private static class Proxy implements IExecutableExtension { - // Reference to the configuration element - private IConfigurationElement configElement = null; - // The class implementing the provider - public String clazz; - // The context properties provider instance - private ITerminalContextPropertiesProvider provider = null; - // The converted expression - private Expression expression; - - /** - * Constructor. - */ - protected Proxy() { - } - - @Override - public void setInitializationData(IConfigurationElement config, String propertyName, Object data) - throws CoreException { - Assert.isNotNull(config); - this.configElement = config; - - // Read the class attribute. - // Throws an exception if the attribute value is empty or null. - clazz = config.getAttribute("class"); //$NON-NLS-1$ - if (clazz == null || "".equals(clazz.trim())) { //$NON-NLS-1$ - throw new CoreException(new Status(IStatus.ERROR, CoreBundleActivator.getUniqueIdentifier(), - NLS.bind(Messages.Extension_error_missingRequiredAttribute, "class", //$NON-NLS-1$ - config.getContributor().getName()))); - } - - // Read the "enablement" sub element of the extension - IConfigurationElement[] children = configElement.getChildren("enablement"); //$NON-NLS-1$ - if (children == null || children.length == 0) { - throw new CoreException(new Status(IStatus.ERROR, CoreBundleActivator.getUniqueIdentifier(), - NLS.bind(Messages.Extension_error_missingRequiredAttribute, "enablement", //$NON-NLS-1$ - config.getContributor().getName()))); - } - // Only one "enablement" element is expected - expression = ExpressionConverter.getDefault().perform(children[0]); - } - - /** - * Return the real terminal context properties provider instance for this proxy. - */ - protected ITerminalContextPropertiesProvider getProvider() { - if (provider == null && configElement != null) { - try { - // Create the service class instance via the configuration element - Object provider = configElement.createExecutableExtension("class"); //$NON-NLS-1$ - if (provider instanceof ITerminalContextPropertiesProvider) { - this.provider = (ITerminalContextPropertiesProvider) provider; - } else { - IStatus status = new Status(IStatus.ERROR, CoreBundleActivator.getUniqueIdentifier(), - "Terminal context properties provider '" + provider.getClass().getName() //$NON-NLS-1$ - + "' not of type ITerminalContextPropertiesProvider."); //$NON-NLS-1$ - Platform.getLog(CoreBundleActivator.getContext().getBundle()).log(status); - } - } catch (CoreException e) { - IStatus status = new Status(IStatus.ERROR, CoreBundleActivator.getUniqueIdentifier(), - "Cannot create terminal context properties provider '" + clazz + "'.", e); //$NON-NLS-1$ //$NON-NLS-2$ - Platform.getLog(CoreBundleActivator.getContext().getBundle()).log(status); - } - } - return provider; - } - - /** - * Returns if or if not the context properties provider contribution is enabled for - * the given terminal context. - * - * @param context The terminal context or null. - * @return True if the context properties provider contribution is enabled - * for the given terminal context, false otherwise. - */ - protected boolean isEnabled(Object context) { - if (context == null) { - return getEnablement() == null; - } - - Expression enablement = getEnablement(); - - // The service contribution is enabled by default if no expression is specified. - boolean enabled = enablement == null; - - if (enablement != null) { - // Set the default variable to the service context. - EvaluationContext evalContext = new EvaluationContext(null, context); - // Allow plug-in activation - evalContext.setAllowPluginActivation(true); - // Evaluate the expression - try { - enabled = enablement.evaluate(evalContext).equals(EvaluationResult.TRUE); - } catch (CoreException e) { - IStatus status = new Status(IStatus.ERROR, CoreBundleActivator.getUniqueIdentifier(), - e.getLocalizedMessage(), e); - Platform.getLog(CoreBundleActivator.getContext().getBundle()).log(status); - } - } - - return enabled; - } - - /** - * Returns the enablement expression. - * - * @return The enablement expression or null. - */ - protected Expression getEnablement() { - return expression; - } - } - - /** - * Creates a new terminal context properties provider proxy instance and initialize it. - * - * @param config The configuration element. Must not be null. - * @return The new terminal context properties provider proxy instance. - */ - private static Proxy getProxy(IConfigurationElement config) { - Assert.isNotNull(config); - Proxy proxy = new Proxy(); - try { - proxy.setInitializationData(config, null, null); - } catch (CoreException e) { - if (Platform.inDebugMode()) { - Platform.getLog(CoreBundleActivator.getContext().getBundle()).log(e.getStatus()); - } - } - return proxy; - } - - /** - * Load the terminal context properties provider contributions. - */ - private static void loadContributions() { - IExtensionPoint ep = Platform.getExtensionRegistry() - .getExtensionPoint("org.eclipse.tm.terminal.view.core.contextPropertiesProviders"); //$NON-NLS-1$ - if (ep != null) { - IExtension[] extensions = ep.getExtensions(); - if (extensions != null) { - for (IExtension extension : extensions) { - IConfigurationElement[] configElements = extension.getConfigurationElements(); - if (configElements != null) { - for (IConfigurationElement configElement : configElements) { - if ("contextPropertiesProvider".equals(configElement.getName())) { //$NON-NLS-1$ - Proxy proxy = getProxy(configElement); - contributions.add(proxy); - } - } - } - } - } - } - } - - /** - * Get the terminal context properties provider for the given context. The first terminal - * context properties provider which is enabled is returned. - * - * @param context The terminal context. Must not be null. - * - * @return The service or null. - */ - public static ITerminalContextPropertiesProvider getProvider(Object context) { - Assert.isNotNull(context); - - // Load the contributions if not yet loaded - synchronized (contributions) { - if (!contributionsLoaded) { - loadContributions(); - contributionsLoaded = true; - } - } - - for (Proxy proxy : contributions) { - if (proxy.isEnabled(context)) { - return proxy.getProvider(); - } - } - - return null; - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/TerminalServiceFactory.java b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/TerminalServiceFactory.java deleted file mode 100644 index 595046ffdb8..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/TerminalServiceFactory.java +++ /dev/null @@ -1,53 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.core; - -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Platform; -import org.eclipse.core.runtime.Status; -import org.eclipse.tm.terminal.view.core.activator.CoreBundleActivator; -import org.eclipse.tm.terminal.view.core.interfaces.ITerminalService; -import org.eclipse.tm.terminal.view.core.nls.Messages; -import org.osgi.framework.Bundle; - -/** - * Terminal service factory implementation. - *

- * Provides access to the terminal service instance. - */ -public final class TerminalServiceFactory { - private static ITerminalService instance = null; - - static { - // Tries to instantiate the terminal service implementation - // from the o.e.tm.terminal.view.ui bundle - Bundle bundle = Platform.getBundle("org.eclipse.tm.terminal.view.ui"); //$NON-NLS-1$ - if (bundle != null && bundle.getState() != Bundle.UNINSTALLED && bundle.getState() != Bundle.STOPPING) { - try { - Class clazz = bundle.loadClass("org.eclipse.tm.terminal.view.ui.services.TerminalService"); //$NON-NLS-1$ - instance = (ITerminalService) clazz.getDeclaredConstructor().newInstance(); - } catch (Exception e) { - if (Platform.inDebugMode()) { - Platform.getLog(bundle).log(new Status(IStatus.ERROR, CoreBundleActivator.getUniqueIdentifier(), - Messages.TerminalServiceFactory_error_serviceImplLoadFailed, e)); - } - } - } - } - - /** - * Returns the terminal service instance. - */ - public static ITerminalService getService() { - return instance; - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/activator/CoreBundleActivator.java b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/activator/CoreBundleActivator.java deleted file mode 100644 index 4184e1b9438..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/activator/CoreBundleActivator.java +++ /dev/null @@ -1,52 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.core.activator; - -import org.osgi.framework.BundleActivator; -import org.osgi.framework.BundleContext; - -/** - * The activator class controls the plug-in life cycle - */ -public class CoreBundleActivator implements BundleActivator { - // The bundle context - private static BundleContext context; - - /** - * Returns the bundle context - * - * @return the bundle context - */ - public static BundleContext getContext() { - return context; - } - - /** - * Convenience method which returns the unique identifier of this plug-in. - */ - public static String getUniqueIdentifier() { - if (getContext() != null && getContext().getBundle() != null) { - return getContext().getBundle().getSymbolicName(); - } - return "org.eclipse.tm.terminal.view.core"; //$NON-NLS-1$ - } - - @Override - public void start(BundleContext bundleContext) throws Exception { - CoreBundleActivator.context = bundleContext; - } - - @Override - public void stop(BundleContext bundleContext) throws Exception { - CoreBundleActivator.context = null; - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/ITerminalContextPropertiesProvider.java b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/ITerminalContextPropertiesProvider.java deleted file mode 100644 index eefca07d8fd..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/ITerminalContextPropertiesProvider.java +++ /dev/null @@ -1,55 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.core.interfaces; - -import java.util.Map; - -/** - * Terminal context properties provider. - *

- * The context properties provider allows querying desired properties - * for a given context. The context is typically an element from a selection - * and the inner structure of the element is unknown to the terminal. - */ -public interface ITerminalContextPropertiesProvider { - - /** - * Returns a unmodifiable map containing the target address and port for the given context, - * if it can be determined. - *

- * A context may return multiple target addresses and ports if the context can be reached using - * different connection methods. - *

- * Note: - *

    - *
  • See the constants defined in the context provider constants interface for default - * address and port types.
  • - *
  • The target address returned must not necessarily be an IP address.
  • - *
  • The values of the address or port properties might be null.
  • - *
- * - * @param context The context to get the target addresses and ports from. Must not be null. - * @return The unmodifiable map containing the target addresses and ports, or null. - */ - public Map getTargetAddress(Object context); - - /** - * Returns the property value stored under the given property key. If the property does not - * exist, null is returned. - * - * @param context The context to get the property from. Must not be null. - * @param key The property key. Must not be null. - * - * @return The stored property value or null. - */ - public Object getProperty(Object context, String key); -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/ITerminalService.java b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/ITerminalService.java deleted file mode 100644 index e28f1b42298..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/ITerminalService.java +++ /dev/null @@ -1,75 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011 - 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.core.interfaces; - -import java.util.Map; - -import org.eclipse.core.runtime.IStatus; - -/** - * Terminal service. - */ -public interface ITerminalService { - - /** - * Client call back interface. - */ - public interface Done { - /** - * Called when the terminal service operation is done. - * - * @param status The status of the terminal service operation. - */ - public void done(IStatus status); - } - - /** - * Opens a terminal asynchronously and invokes the given callback if done. - * - * @param properties The terminal properties. Must not be null. - * @param done The callback to invoke if finished or null. - */ - public void openConsole(Map properties, Done done); - - /** - * Close the terminal asynchronously and invokes the given callback if done. - * - * @param properties The terminal properties. Must not be null. - * @param done The callback to invoke if finished or null. - */ - public void closeConsole(Map properties, Done done); - - /** - * Terminate (disconnect) the terminal asynchronously and invokes the given callback if done. - * - * @param properties The terminal properties. Must not be null. - * @param done The callback to invoke if finished or null. - */ - public void terminateConsole(Map properties, Done done); - - /** - * Register the given listener to receive notifications about terminal events. - * Calling this method multiple times with the same listener has no effect. - - * @param listener The terminal tab listener. Must not be null. - */ - public void addTerminalTabListener(ITerminalTabListener listener); - - /** - * Unregister the given listener from receiving notifications about terminal - * events. Calling this method multiple times with the same listener - * has no effect. - * - * @param listener The terminal tab listener. Must not be null. - */ - public void removeTerminalTabListener(ITerminalTabListener listener); -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/ITerminalServiceOutputStreamMonitorListener.java b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/ITerminalServiceOutputStreamMonitorListener.java deleted file mode 100644 index b48a1113adf..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/ITerminalServiceOutputStreamMonitorListener.java +++ /dev/null @@ -1,29 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2014 - 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.core.interfaces; - -/** - * An interface to be implemented by listeners who want to listen - * to the streams data without interfering with the original data receiver. - *

- * Listeners are invoked within the monitor processing thread. - */ -public interface ITerminalServiceOutputStreamMonitorListener { - - /** - * Signals that some content has been read from the monitored stream. - * - * @param byteBuffer The byte stream. Must not be null. - * @param bytesRead The number of bytes that were read into the read buffer. - */ - public void onContentReadFromStream(byte[] byteBuffer, int bytesRead); -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/ITerminalTabListener.java b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/ITerminalTabListener.java deleted file mode 100644 index bd3a034680b..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/ITerminalTabListener.java +++ /dev/null @@ -1,29 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.core.interfaces; - -/** - * Listener to implement and to register to get notified about - * terminal tabs events, like the disposal of a terminal tab. - */ -public interface ITerminalTabListener { - - /** - * Invoked once a terminal tab got disposed. The source object is - * the disposed tab item and data is the custom data object associated - * with the disposed tab item. - * - * @param source The disposed tab item. Must not be null. - * @param data The custom data object associated with the disposed tab item or null. - */ - public void terminalTabDisposed(Object source, Object data); -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/constants/IContextPropertiesConstants.java b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/constants/IContextPropertiesConstants.java deleted file mode 100644 index 55daaeecbc7..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/constants/IContextPropertiesConstants.java +++ /dev/null @@ -1,52 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.core.interfaces.constants; - -/** - * Defines the terminal context properties constants. - */ -public interface IContextPropertiesConstants { - - /** - * Target name. - *

- * The target name is not meant to be identical with the targets network name. It can - * be the targets network name, but it can be any other string identifying the target - * to the user as well. The name is for display only, it is not meant to be used for - * communicating with the target. - */ - public static String PROP_NAME = "name"; //$NON-NLS-1$ - - /** - * Target agent address. - *

- * The value is typically the address an agent running at the target. - */ - public static String PROP_ADDRESS = "address"; //$NON-NLS-1$ - - /** - * Target agent port. - *

- * The value is typically the port an agent running at the target. - */ - public static String PROP_PORT = "port"; //$NON-NLS-1$ - - /** - * The default user name to use to log into the target. - */ - public static String PROP_DEFAULT_USER = "defaultUser"; //$NON-NLS-1$ - - /** - * The default encoding to use. - */ - public static String PROP_DEFAULT_ENCODING = "defaultEncoding"; //$NON-NLS-1$ -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/constants/ILineSeparatorConstants.java b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/constants/ILineSeparatorConstants.java deleted file mode 100644 index f6888a22629..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/constants/ILineSeparatorConstants.java +++ /dev/null @@ -1,34 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011 - 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.core.interfaces.constants; - -/** - * Line separator constants. - */ -public interface ILineSeparatorConstants { - - /** - * The line separator setting CR (carriage return only; for example, used by Mac OS 9). - */ - public final static String LINE_SEPARATOR_CR = "\\r"; //$NON-NLS-1$ - - /** - * The line separator setting CRLF (carriage return and line feed; for example, used by - * Windows). - */ - public final static String LINE_SEPARATOR_CRLF = "\\r\\n"; //$NON-NLS-1$ - - /** - * The line separator setting LF (line feed only; used by all UNIX-based systems). - */ - public final static String LINE_SEPARATOR_LF = "\\n"; //$NON-NLS-1$ -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/constants/ITerminalsConnectorConstants.java b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/constants/ITerminalsConnectorConstants.java deleted file mode 100644 index 4d60d49c31b..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/interfaces/constants/ITerminalsConnectorConstants.java +++ /dev/null @@ -1,373 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - * Max Weninger (Wind River) - [361352] [TERMINALS][SSH] Add SSH terminal support - *******************************************************************************/ -package org.eclipse.tm.terminal.view.core.interfaces.constants; - -import java.io.InputStream; -import java.io.OutputStream; - -import org.eclipse.tm.terminal.view.core.interfaces.ITerminalServiceOutputStreamMonitorListener; - -/** - * Defines the terminals connector constants. - * - * @noextend This interface is not intended to be extended by clients. - * @noimplement This interface is not intended to be implemented by clients. - */ -public interface ITerminalsConnectorConstants { - - /** - * Property: The unique id of the terminals view to open. - *

- * Property Type: {@link String} - */ - public static final String PROP_ID = "id"; //$NON-NLS-1$ - - /** - * Property: The unique secondary id of the terminals view to open. - *

- * Special values: - *

    - *
  • - * not present in properties table or {@link #LAST_ACTIVE_SECONDARY_ID} means open on most recent terminal view - *
  • - *
  • - * {@link #ANY_ACTIVE_SECONDARY_ID} means open on any terminal view - *
  • - *
  • - * null means open on the first primary terminal (the one with no secondary id) - *
  • - *
      - *

      - * Property Type: {@link String} - */ - public static final String PROP_SECONDARY_ID = "secondaryId"; //$NON-NLS-1$ - - /** - * Special value for {@link #PROP_SECONDARY_ID} to indicate reuse of the most recent terminal view - * @since 4.8 - */ - public static final String LAST_ACTIVE_SECONDARY_ID = "last"; //$NON-NLS-1$ - - /** - * Special value for {@link #PROP_SECONDARY_ID} to indicate reuse of any terminal view - * @since 4.8 - */ - public static final String ANY_ACTIVE_SECONDARY_ID = "*"; //$NON-NLS-1$ - - /** - * Property: The title of the terminal tab to open. - *

      - * Property Type: {@link String} - */ - public static final String PROP_TITLE = "title"; //$NON-NLS-1$ - - /** - * Property: Flag to disable updating the terminal title from ANSI escape sequences. - *

      - * Property Type: {@link Boolean} - * @since 4.10 - */ - public static final String PROP_TITLE_DISABLE_ANSI_TITLE = "titleDisableAnsiTitle"; //$NON-NLS-1$ - - /** - * Property: The encoding of the terminal tab to open. - *

      - * Property Type: {@link String} - */ - public static final String PROP_ENCODING = "encoding"; //$NON-NLS-1$ - - /** - * Property: Custom data object to associate with the terminal tab. - *

      - * Property Type: {@link Object} - */ - public static final String PROP_DATA = "data"; //$NON-NLS-1$ - - /** - * Property: External selection to associate with the terminal tab. - *

      - * Property Type: {@link org.eclipse.jface.viewers.ISelection} - */ - public static final String PROP_SELECTION = "selection"; //$NON-NLS-1$ - - /** - * Property: Flag to force a new terminal tab. - *

      - * Property Type: {@link Boolean} - */ - public static final String PROP_FORCE_NEW = "terminal.forceNew"; //$NON-NLS-1$ - - /** - * Property: Terminal launcher delegate id. - *

      - * Property Type: {@link String} - */ - public static final String PROP_DELEGATE_ID = "delegateId"; //$NON-NLS-1$ - - /** - * Property: Specific terminal connector type id. Allows clients to - * override the specifically used terminal connector - * implementation for a given type. - *

      - * Property Type: {@link String} - */ - public static final String PROP_TERMINAL_CONNECTOR_ID = "tm.terminal.connector.id"; //$NON-NLS-1$ - - // ***** Generic terminals connector properties ***** - - /** - * Property: Timeout to be passed to the terminal connector. The specific terminal - * connector implementation may interpret this value differently. If not - * set, the terminal connector may use a default value. - *

      - * Property Type: {@link Integer} - */ - public static final String PROP_TIMEOUT = "timeout"; //$NON-NLS-1$ - - /** - * Property: Flag to control if a local echo is needed from the terminal widget. - *

      Typical for process and streams terminals. - *

      - * Property Type: {@link Boolean} - */ - public static final String PROP_LOCAL_ECHO = "localEcho"; //$NON-NLS-1$ - - /** - * Property: Data flag to tell the terminal to not reconnect when hitting enter - * in a disconnected terminal. - *

      - * Property Type: {@link Boolean} - */ - public static final String PROP_DATA_NO_RECONNECT = "data.noReconnect"; //$NON-NLS-1$ - - /** - * Property: The line separator expected by the remote terminal on input streams and - * send by the remote terminal on output streams. - *

      Typical for process and streams terminals. - *

      - * Property Type: {@link String} - */ - public static final String PROP_LINE_SEPARATOR = "lineSeparator"; //$NON-NLS-1$ - - /** - * Property: The list of stdout listeners to attach to the corresponding stream monitor. - *

      Typical for process and streams terminals. - *

      - * Property Type: {@link ITerminalServiceOutputStreamMonitorListener} array - */ - public static final String PROP_STDOUT_LISTENERS = "stdoutListeners"; //$NON-NLS-1$ - - /** - * Property: The list of stderr listeners to attach to the corresponding stream monitor. - *

      Typical for process and streams terminals. - *

      - * Property Type: {@link ITerminalServiceOutputStreamMonitorListener} array - */ - public static final String PROP_STDERR_LISTENERS = "stderrListeners"; //$NON-NLS-1$ - - /** - * Property: If set to true, backslashes are translated to - * slashes before pasting the text to the terminal widget. - *

      - * Property Type: {@link Boolean} - */ - public static final String PROP_TRANSLATE_BACKSLASHES_ON_PASTE = "translateBackslashesOnPaste"; //$NON-NLS-1$ - - // ***** IP based terminals connector properties ***** - - /** - * Property: Host name or IP address the terminal server is running. - *

      Typical for telnet or ssh terminals. - *

      - * Property Type: {@link String} - */ - public static final String PROP_IP_HOST = "ip.host"; //$NON-NLS-1$ - - /** - * Property: Port at which the terminal server is providing the console input and output. - *

      Typical for telnet or ssh terminals. - *

      - * Property Type: {@link Integer} - */ - public static final String PROP_IP_PORT = "ip.port"; //$NON-NLS-1$ - - /** - * Property: An offset to add to the specified port number. - *

      Typical for telnet or ssh terminals. - *

      - * Property Type: {@link Integer} - */ - public static final String PROP_IP_PORT_OFFSET = "ip.port.offset"; //$NON-NLS-1$ - - // ***** Process based terminals connector properties ***** - - /** - * Property: Process image path. - *

      Typical for process terminals. - *

      - * Property Type: {@link String} - */ - public static final String PROP_PROCESS_PATH = "process.path"; //$NON-NLS-1$ - - /** - * Property: Process arguments. - *

      Typical for process terminals. - *

      - * Property Type: {@link String} - */ - public static final String PROP_PROCESS_ARGS = "process.args"; //$NON-NLS-1$ - - /** - * Property: Process arguments. - *

      Typical for process terminals. - *

      - * Property Type: {@link String} - */ - public static final String PROP_PROCESS_WORKING_DIR = "process.working_dir"; //$NON-NLS-1$ - - /** - * Property: Process environment. - *

      Typical for process terminals. - *

      - * Property Type: {@link String} array - */ - public static final String PROP_PROCESS_ENVIRONMENT = "process.environment"; //$NON-NLS-1$ - - /** - * Property: Flag to merge process environment with native environment. - *

      Typical for process terminals. - *

      - * Property Type: {@link Boolean} - */ - public static final String PROP_PROCESS_MERGE_ENVIRONMENT = "process.environment.merge"; //$NON-NLS-1$ - - /** - * Property: Runtime process instance. - *

      Typical for process terminals. - *

      - * Property Type: {@link Process} - */ - public static final String PROP_PROCESS_OBJ = "process"; //$NON-NLS-1$ - - /** - * Property: Runtime process PTY instance. - *

      Typical for process terminals. - *

      - * Property Type: {@link org.eclipse.cdt.utils.pty.PTY} - */ - public static final String PROP_PTY_OBJ = "pty"; //$NON-NLS-1$ - - // ***** Streams based terminals connector properties ***** - - /** - * Property: Stdin streams instance. - *

      Typical for streams terminals. - *

      - * Property Type: {@link OutputStream} - */ - public static final String PROP_STREAMS_STDIN = "streams.stdin"; //$NON-NLS-1$ - - /** - * Property: Stdout streams instance. - *

      Typical for streams terminals. - *

      - * Property Type: {@link InputStream} - */ - public static final String PROP_STREAMS_STDOUT = "streams.stdout"; //$NON-NLS-1$ - - /** - * Property: Stderr streams instance. - *

      Typical for streams terminals. - *

      - * Property Type: {@link InputStream} - */ - public static final String PROP_STREAMS_STDERR = "streams.stderr"; //$NON-NLS-1$ - - // ***** Ssh specific properties ***** - - /** - * Property: ssh keep alive value. - *

      - * Property Type: {@link Integer} - */ - public static final String PROP_SSH_KEEP_ALIVE = "ssh.keep_alive"; //$NON-NLS-1$ - - /** - * Property: Ssh password. - *

      - * Property Type: {@link String} - */ - public static final String PROP_SSH_PASSWORD = "ssh.password"; //$NON-NLS-1$ - - /** - * Property: Ssh user. - *

      - * Property Type: {@link String} - */ - public static final String PROP_SSH_USER = "ssh.user"; //$NON-NLS-1$ - - // ***** Serial specific properties ***** - - /** - * The serial device name. - *

      - * Property Type: {@link String} - */ - public static final String PROP_SERIAL_DEVICE = "serial.device"; //$NON-NLS-1$ - - /** - * The baud rate. - *

      - * Property Type: {@link String} - */ - public static final String PROP_SERIAL_BAUD_RATE = "serial.baudrate"; //$NON-NLS-1$ - - /** - * The data bits - *

      - * Property Type: {@link String} - */ - public static final String PROP_SERIAL_DATA_BITS = "serial.databits"; //$NON-NLS-1$ - - /** - * The parity - *

      - * Property Type: {@link String} - */ - public static final String PROP_SERIAL_PARITY = "serial.parity"; //$NON-NLS-1$ - - /** - * The stop bits - *

      - * Property Type: {@link String} - */ - public static final String PROP_SERIAL_STOP_BITS = "serial.stopbits"; //$NON-NLS-1$ - - /** - * The flow control - *

      - * Property Type: {@link String} - */ - public static final String PROP_SERIAL_FLOW_CONTROL = "serial.flowcontrol"; //$NON-NLS-1$ - - // ***** Telnet specific properties ***** - - /** - * The end-of-line sequence to be sent to the server on "Enter". - *

      - * Property Type: {@link String} - * @since 4.2 - */ - public static final String PROP_TELNET_EOL = "telnet.eol"; //$NON-NLS-1$ - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/internal/PropertyTester.java b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/internal/PropertyTester.java deleted file mode 100644 index 7e0f46ce6db..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/internal/PropertyTester.java +++ /dev/null @@ -1,34 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011 - 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.core.internal; - -import org.eclipse.tm.terminal.view.core.TerminalContextPropertiesProviderFactory; - -/** - * Property tester implementation. - */ -public class PropertyTester extends org.eclipse.core.expressions.PropertyTester { - - @Override - public boolean test(Object receiver, String property, Object[] args, Object expectedValue) { - - // "hasContextPropertiesProvider": Checks if a context properties provider is available for the given receiver. - if ("hasContextPropertiesProvider".equals(property)) { //$NON-NLS-1$ - boolean hasProvider = TerminalContextPropertiesProviderFactory.getProvider(receiver) != null; - return expectedValue instanceof Boolean ? ((Boolean) expectedValue).equals(Boolean.valueOf(hasProvider)) - : hasProvider; - } - - return false; - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/nls/Messages.java b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/nls/Messages.java deleted file mode 100644 index 2d778f3b126..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/nls/Messages.java +++ /dev/null @@ -1,37 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.core.nls; - -import org.eclipse.osgi.util.NLS; - -/** - * Externalized strings management. - */ -public class Messages extends NLS { - - // The plug-in resource bundle name - private static final String BUNDLE_NAME = "org.eclipse.tm.terminal.view.core.nls.Messages"; //$NON-NLS-1$ - - /** - * Static constructor. - */ - static { - // Load message values from bundle file - NLS.initializeMessages(BUNDLE_NAME, Messages.class); - } - - // **** Declare externalized string id's down here ***** - - public static String TerminalServiceFactory_error_serviceImplLoadFailed; - - public static String Extension_error_missingRequiredAttribute; -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/nls/Messages.properties b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/nls/Messages.properties deleted file mode 100644 index 647a26ff699..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/nls/Messages.properties +++ /dev/null @@ -1,16 +0,0 @@ -############################################################################### -# Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. All rights reserved. -# This program and the accompanying materials are made available under the terms -# of the Eclipse Public License 2.0 which accompanies this distribution, and is -# available at https://www.eclipse.org/legal/epl-2.0/ -# -# SPDX-License-Identifier: EPL-2.0 -# -# Contributors: -# Wind River Systems - initial API and implementation -############################################################################### - -TerminalServiceFactory_error_serviceImplLoadFailed=Failed to load terminal service implementation. - -Extension_error_missingRequiredAttribute=Required attribute "{0}" missing for extension "{1}"! - diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/preferences/ScopedEclipsePreferences.java b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/preferences/ScopedEclipsePreferences.java deleted file mode 100644 index b660a387c73..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/preferences/ScopedEclipsePreferences.java +++ /dev/null @@ -1,453 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.core.preferences; - -import java.io.OutputStream; -import java.util.Map; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.core.runtime.ISafeRunnable; -import org.eclipse.core.runtime.ListenerList; -import org.eclipse.core.runtime.Platform; -import org.eclipse.core.runtime.SafeRunner; -import org.eclipse.core.runtime.preferences.DefaultScope; -import org.eclipse.core.runtime.preferences.IEclipsePreferences; -import org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener; -import org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent; -import org.eclipse.core.runtime.preferences.IPreferenceFilter; -import org.eclipse.core.runtime.preferences.IScopeContext; -import org.eclipse.core.runtime.preferences.InstanceScope; -import org.eclipse.core.runtime.preferences.PreferenceFilterEntry; -import org.osgi.service.prefs.BackingStoreException; - -/** - * Helper class to handle scoped Eclipse preferences for plug-in's. Scoped - * preferences means a given preference context plus the default preferences - * scope. - *

      - * On changes a {@link PreferenceChangeEvent} is sent to inform all listeners of the change. - * - * @see IEclipsePreferences - * @see IEclipsePreferences.PreferenceChangeEvent - * @see IEclipsePreferences.IPreferenceChangeListener - */ -public class ScopedEclipsePreferences { - /** - * The preferences scope qualifier. - */ - private final String qualifier; - - /** - * The default scope preference node. - */ - protected final IEclipsePreferences defaultPrefs; - - /** - * The context scope preference node. - */ - protected final IEclipsePreferences contextScopePrefs; - - /** - * The registered preference change listeners. - */ - private final ListenerList listeners = new ListenerList<>(); - - /** - * Constructor. - *

      - * Initialize the scoped preferences with a new instance scope for the given qualifier. The default - * scope is determined by calling DefaultScope().getNode(qualifier). - * - * @param qualifier The qualifier for the preferences (in example the unique identifier of a plugin). Must not be null. - */ - public ScopedEclipsePreferences(String qualifier) { - this(InstanceScope.INSTANCE, qualifier); - } - - /** - * Constructor. - *

      - * Initialize the scoped preferences with the given scope. The default scope - * is determined by calling DefaultScope().getNode(qualifier). - * - * @param context The preference scope context. Must not be null. - * @param qualifier The qualifier for the preferences (in example the unique identifier of a plugin). Must not be null. - */ - public ScopedEclipsePreferences(IScopeContext context, String qualifier) { - Assert.isNotNull(context); - Assert.isNotNull(qualifier); - this.qualifier = qualifier; - defaultPrefs = DefaultScope.INSTANCE.getNode(getQualifier()); - contextScopePrefs = context.getNode(getQualifier()); - } - - /** - * Returns the qualifier that is used to get the preferences. - * For plugin preferences, this is the unique identifier of the plugin. - */ - protected final String getQualifier() { - return qualifier; - } - - /** - * Exports the preferences to the stream. - *

      - * Note: The stream will be closed after the export. - * - * @param stream The stream to where preferences and defaults should be exported. - */ - public void exportPreferences(OutputStream stream) { - Assert.isNotNull(stream); - try { - IPreferenceFilter filter = new IPreferenceFilter() { - @Override - public String[] getScopes() { - return new String[] { InstanceScope.SCOPE }; - } - - @Override - public Map getMapping(String scope) { - return null; - } - }; - - Platform.getPreferencesService().exportPreferences(contextScopePrefs, new IPreferenceFilter[] { filter }, - stream); - stream.close(); - } catch (Exception e) { - } - } - - /** - * Check whether a key is set or not. - * - * @param key The key to check. - * @return null if the key does not exist. - */ - public boolean containsKey(String key) { - return Platform.getPreferencesService().getString(getQualifier(), key, null, null) != null; - } - - /** - * Get a String preference value. - * - * @param key The preference key. - * @return The value of the preference key or the default value if not set. - */ - public final String getString(String key) { - return Platform.getPreferencesService().getString(getQualifier(), key, null, null); - } - - /** - * Get a boolean preference value. - * - * @param key The preference key. - * @return The value of the preference key or the default value if not set. - */ - public final boolean getBoolean(String key) { - return Platform.getPreferencesService().getBoolean(getQualifier(), key, false, null); - } - - /** - * Get an int preference value. - * - * @param key The preference key. - * @return The value of the preference key or the default value if not set. - */ - public final int getInt(String key) { - return Platform.getPreferencesService().getInt(getQualifier(), key, 0, null); - } - - /** - * Get a long preference value. - * - * @param key The preference key. - * @return The value of the preference key or the default value if not set. - */ - public final long getLong(String key) { - return Platform.getPreferencesService().getLong(getQualifier(), key, 0, null); - } - - /** - * Get a default String preference value. - * - * @param key The preference key. - * @return The default value of the preference key or null. - */ - public final String getDefaultString(String key) { - return defaultPrefs.get(key, null); - } - - /** - * Get a default boolean preference value. - * - * @param key The preference key. - * @return The default value of the preference key or null. - */ - public final boolean getDefaultBoolean(String key) { - return defaultPrefs.getBoolean(key, false); - } - - /** - * Get a default int preference value. - * - * @param key The preference key. - * @return The default value of the preference key or null. - */ - public final int getDefaultInt(String key) { - return defaultPrefs.getInt(key, 0); - } - - /** - * Get a default long preference value. - * - * @param key The preference key. - * @return The default value of the preference key or null. - */ - public final long getDefaultLong(String key) { - return defaultPrefs.getLong(key, 0); - } - - /** - * Set a String preference value. If the value is null or is equal to - * the default value, the entry will be removed. - *

      - * A {@link PreferenceChangeEvent} is fired, if the value has changed. - * - * @param key The preference key. - * @return The value of the preference key. - */ - public void putString(String key, String value) { - String defValue = defaultPrefs.get(key, null); - String instValue = getString(key); - if (value == null || value.equals(defValue)) { - contextScopePrefs.remove(key); - flushAndNotify(contextScopePrefs, key, instValue, defValue); - } else if (!value.equals(instValue)) { - contextScopePrefs.put(key, value); - flushAndNotify(contextScopePrefs, key, instValue, value); - } - } - - /** - * Set a boolean preference value. If the value is equal the default value, - * the entry will be removed. - *

      - * A {@link PreferenceChangeEvent} is fired, if the value has changed. - * - * @param key The preference key. - * @return The value of the preference key. - */ - public void putBoolean(String key, boolean value) { - boolean defValue = defaultPrefs.getBoolean(key, false); - boolean instValue = getBoolean(key); - if (value == defValue) { - contextScopePrefs.remove(key); - flushAndNotify(contextScopePrefs, key, Boolean.toString(instValue), Boolean.toString(defValue)); - } else if (value != instValue) { - contextScopePrefs.putBoolean(key, value); - flushAndNotify(contextScopePrefs, key, Boolean.toString(instValue), Boolean.toString(value)); - } - } - - /** - * Set an int preference value. If the value is equal to the default value, - * the entry will be removed. - *

      - * A {@link PreferenceChangeEvent} is fired, if the value has changed. The old - * and new values are string representation in base 10. - * - * @param key The preference key. - * @return The value of the preference key. - */ - public void putInt(String key, int value) { - int defValue = defaultPrefs.getInt(key, 0); - int instValue = getInt(key); - if (value == defValue) { - contextScopePrefs.remove(key); - flushAndNotify(contextScopePrefs, key, Integer.toString(instValue), Integer.toString(defValue)); - } else if (value != instValue) { - contextScopePrefs.putInt(key, value); - flushAndNotify(contextScopePrefs, key, Integer.toString(instValue), Integer.toString(value)); - } - } - - /** - * Set a long preference value. If the given value is equal to the default - * value, the entry will be removed. - *

      - * A {@link PreferenceChangeEvent} is fired, if the value has changed. The old - * and new values are string representation in base 10. - * - * @param key The preference key. - * @return The value of the preference key. - */ - public void putLong(String key, long value) { - long defValue = defaultPrefs.getLong(key, 0); - long instValue = getLong(key); - if (value == defValue) { - contextScopePrefs.remove(key); - flushAndNotify(contextScopePrefs, key, Long.toString(instValue), Long.toString(defValue)); - } else if (value != instValue) { - contextScopePrefs.putLong(key, value); - flushAndNotify(contextScopePrefs, key, Long.toString(instValue), Long.toString(value)); - } - } - - /** - * Set a default String preference value. If the given value is null, - * the entry will be removed. - *

      - * A {@link PreferenceChangeEvent} is fired, if the value has changed. - * - * @param key The preference key. - * @return The default value of the preference key. - */ - public void putDefaultString(String key, String value) { - String defValue = defaultPrefs.get(key, null); - if (value == null) { - defaultPrefs.remove(key); - flushAndNotify(defaultPrefs, key, defValue, null); - } else if (!value.equals(defValue)) { - defaultPrefs.put(key, value); - flushAndNotify(defaultPrefs, key, defValue, value); - } - } - - /** - * Set a default boolean preference value. - *

      - * A {@link PreferenceChangeEvent} is fired, if the value has changed. - * - * @param key The preference key. - * @return The default value of the preference key. - */ - public void putDefaultBoolean(String key, boolean value) { - boolean defValue = defaultPrefs.getBoolean(key, false); - if (value != defValue) { - defaultPrefs.putBoolean(key, value); - flushAndNotify(defaultPrefs, key, Boolean.toString(defValue), Boolean.toString(value)); - } - } - - /** - * Set a default int preference value. - *

      - * A {@link PreferenceChangeEvent} is fired, if the value has changed. The old - * and new values are string representation in base 10. - * - * @param key The preference key. - * @return The default value of the preference key. - */ - public void putDefaultInt(String key, int value) { - int defValue = defaultPrefs.getInt(key, 0); - if (value != defValue) { - defaultPrefs.putInt(key, value); - flushAndNotify(defaultPrefs, key, Integer.toString(defValue), Integer.toString(value)); - } - } - - /** - * Set a default long preference value. - *

      - * A {@link PreferenceChangeEvent} is fired, if the value has changed. The old - * and new values are string representation in base 10. - * - * @param key The preference key. - * @return The default value of the preference key. - */ - public void putDefaultLong(String key, long value) { - long defValue = defaultPrefs.getLong(key, 0); - if (value != defValue) { - defaultPrefs.putLong(key, value); - flushAndNotify(defaultPrefs, key, Long.toString(defValue), Long.toString(value)); - } - } - - /** - * Write back the changes to the store and notify all listeners about the changed key. - * - * @param node The preference node which has changed. Must not be null. - * @param key The key of the changed preference. Must not be null. - * @param oldValue The old value as a {@link String}, or null. - * @param newValue The new value as a {@link String}, or null. - */ - protected final void flushAndNotify(IEclipsePreferences node, String key, String oldValue, String newValue) { - // Flush the preferences to the persistence store - try { - node.flush(); - } catch (BackingStoreException e) { - /* Ignored on purpose */ } - - // Notify the listeners - firePreferenceEvent(node, key, oldValue, newValue); - } - - /** - * Register the given listener to receive notifications of preference changes to this node. - * Calling this method multiple times with the same listener has no effect. The given listener - * argument must not be null. - * - * @param listener The preference change listener. Must not be null. - */ - public void addPreferenceChangeListener(IPreferenceChangeListener listener) { - Assert.isNotNull(listener); - listeners.add(listener); - } - - /** - * De-register the given listener from receiving notifications of preference changes - * to this node. Calling this method multiple times with the same listener has no - * effect. The given listener argument must not be null. - * - * @param listener The preference change listener. Must not be null. - */ - public void removePreferenceChangeListener(IPreferenceChangeListener listener) { - Assert.isNotNull(listener); - listeners.remove(listener); - } - - /** - * Convenience method for notifying the registered preference change listeners. - * - * @param node The preference node which has changed. Must not be null. - * @param key The key of the changed preference. Must not be null. - * @param oldValue The old value as a {@link String}, or null. - * @param newValue The new value as a {@link String}, or null. - */ - protected void firePreferenceEvent(IEclipsePreferences node, String key, String oldValue, String newValue) { - Assert.isNotNull(node); - Assert.isNotNull(key); - - // If no listener is registered, we are done here - if (listeners.isEmpty()) - return; - - // Create the preference change event - final PreferenceChangeEvent event = new PreferenceChangeEvent(node, key, oldValue, newValue); - for (IPreferenceChangeListener listener : listeners) { - ISafeRunnable job = new ISafeRunnable() { - @Override - public void handleException(Throwable exception) { - // already logged in Platform#run() - } - - @Override - public void run() throws Exception { - listener.preferenceChange(event); - } - }; - SafeRunner.run(job); - } - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/tracing/TraceHandler.java b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/tracing/TraceHandler.java deleted file mode 100644 index 98945b613c2..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/tracing/TraceHandler.java +++ /dev/null @@ -1,300 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.core.tracing; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Platform; -import org.eclipse.tm.terminal.view.core.activator.CoreBundleActivator; - -/** - * Helper class to handle tracing using the platforms debug capabilities. - */ -public class TraceHandler { - /** - * The bundle identifier. - */ - private final String identifier; - - /** - * The tracer instance. - */ - private Tracer tracer = null; - - /** - * The tracer is responsible for writing the trace message to the desired - * output media. - */ - protected static class Tracer { - - /** - * The bundle identifier. - */ - private final String fIdentifier; - - /** - * The qualifier for the default "<bundle identifier>/debugmode" - * tracing slot. - */ - private final String fDebugModeQualifier; - - /** - * Constructor. - * - * @param identifier The bundle identifier. Must not be null. - */ - public Tracer(String identifier) { - Assert.isNotNull(identifier); - fIdentifier = identifier; - - // Initialize the debug mode qualifier - fDebugModeQualifier = fIdentifier + "/debugmode"; //$NON-NLS-1$ - } - - /** - * Returns the value of the debug mode tracing slot. - *

      - * If not set, or the value is not an {@link Integer}, the method returns 0. - * - * @return The debug mode value. - */ - protected int getDebugMode() { - try { - String mode = Platform.getDebugOption(fDebugModeQualifier); - if (mode != null && Integer.decode(mode).intValue() > 0) { - return Integer.decode(mode).intValue(); - } - } catch (NumberFormatException e) { - /* ignored on purpose */ } - - return 0; - } - - /** - * Check if the specified trace slot is enabled. - * - * @param slotId The name of the slot. - * @return true if the slot is defined and enabled, false otherwise. - */ - protected boolean isSlotEnabled(String slotId) { - return fIdentifier != null ? Boolean.parseBoolean(Platform.getDebugOption(fIdentifier + "/" + slotId)) //$NON-NLS-1$ - : false; - } - - /** - * Check if tracing is enabled for given mode and slot. - * - * @param debugMode The debug mode for the current debug. - * @param slotId The name of the slot. - * - * @return true if the debug should be written, false otherwise. - */ - protected final boolean isEnabled(int debugMode, String slotId) { - return getDebugMode() < 0 || (debugMode <= getDebugMode() - && (slotId == null || slotId.trim().length() == 0 || isSlotEnabled(slotId))); - } - - /** - * Format the trace message. - * - * @param message The trace message. - * @param debugMode The debug mode. - * @param slotId The name of the slot. - * @param severity The severity. See {@link IStatus} for valid severity values. - * @param clazz The class that calls this tracer. - * - * @see IStatus - */ - protected String getFormattedDebugMessage(String message, int debugMode, String slotId, int severity, - Object clazz) { - StringBuffer debug = new StringBuffer(); - if (slotId != null || clazz != null) { - if (clazz != null) { - String name = clazz instanceof Class ? ((Class) clazz).getSimpleName() - : clazz.getClass().getSimpleName(); - debug.append(name.trim().length() > 0 ? name.trim() - : clazz instanceof Class ? ((Class) clazz).getName() : clazz.getClass().getName()); - } - if (slotId != null) { - debug.append(" at "); //$NON-NLS-1$ - debug.append(slotId); - } - if (debugMode >= 0) { - debug.append(" (Mode "); //$NON-NLS-1$ - debug.append(debugMode); - debug.append(')'); - } - debug.append('\n'); - debug.append('\t'); - } - debug.append(message); - - return debug.toString(); - } - - /** - * Write the trace message. - * - * @param message The trace message. - * @param debugMode The debug mode. - * @param slotId The name of the slot. - * @param severity The severity. See {@link IStatus} for valid severity values. - * @param clazz The class that calls this tracer. - * - * @see IStatus - */ - protected void write(String message, int debugMode, String slotId, int severity, Object clazz) { - String formattedMessage = getFormattedDebugMessage(message, debugMode, slotId, severity, clazz); - if (severity == IStatus.ERROR || severity == IStatus.WARNING) { - System.err.println(formattedMessage); - } else { - System.out.println(formattedMessage); - } - } - - /** - * Trace the given message with the given debug mode and slot. - * - * @param message The trace message. - * @param debugMode The debug mode. - * @param slotId The name of the slot. - * @param severity The severity. See {@link IStatus} for valid severity values. - * @param clazz The class that calls this tracer. - * - * @see IStatus - */ - public final void trace(String message, int debugMode, String slotId, int severity, Object clazz) { - if (isEnabled(debugMode, slotId)) { - write(message, debugMode, slotId, severity, clazz); - } - } - } - - /** - * Constructor. - *

      - * Initializes the tracing handler with the given bundle identifier. - * - * @param identifier The bundle identifier or null. - */ - public TraceHandler(String identifier) { - this.identifier = identifier != null ? identifier : CoreBundleActivator.getUniqueIdentifier(); - Assert.isNotNull(this.identifier); - } - - /** - * Returns the identifier. - */ - protected final String getIdentifier() { - return identifier; - } - - /** - * Returns the tracer instance. Create a new tracer instance - * on first invocation. - * - * @return The tracer instance. - */ - protected Tracer getTracer() { - if (tracer == null) { - tracer = new Tracer(identifier); - } - return tracer; - } - - /** - * Return the current debug mode. - */ - public final int getDebugMode() { - return getTracer().getDebugMode(); - } - - /** - * Check whether a trace slot is enabled. The debug mode defaults - * to 0. - * - * @param slotId The name of the slot. - * - * @return true if the slot is enabled, false otherwise. - */ - public final boolean isSlotEnabled(String slotId) { - return isSlotEnabled(0, slotId); - } - - /** - * Check whether a trace slot is enabled with the given debug mode. - * - * @param debugMode The debug mode - * @param slotId The name of the slot. - * - * @return true if the slot is enabled, false otherwise. - */ - public final boolean isSlotEnabled(int debugMode, String slotId) { - return getTracer().isEnabled(debugMode, slotId); - } - - /** - * Trace the given message. - *

      - * The message severity will be {@link IStatus#INFO} and the message will be - * traced unconditionally. - * - * @param message The message. - * @param clazz The class that calls this tracer or null. - */ - public final void trace(String message, Object clazz) { - getTracer().trace(message, 0, null, IStatus.INFO, clazz); - } - - /** - * Trace the given message. - *

      - * The message severity will be {@link IStatus#INFO}. - * - * @param message The message. - * @param debugMode The minimum debug mode that has to be set to write out the message. - * @param clazz The class that calls this tracer or null. - */ - public final void trace(String message, int debugMode, Object clazz) { - getTracer().trace(message, debugMode, null, IStatus.INFO, clazz); - } - - /** - * Trace the given message. - *

      - * The message severity will be {@link IStatus#INFO} and the debug mode - * will default to 0. - * - * @param message The message. - * @param slotId The slot that has to be enabled to write out the message. - * @param clazz The class that calls this tracer or null. - */ - public final void trace(String message, String slotId, Object clazz) { - getTracer().trace(message, 0, slotId, IStatus.INFO, clazz); - } - - /** - * Trace the given message. - * - * @param message The message. - * @param debugMode The minimum debug mode that has to be set to write out the message. - * @param slotId The slot that has to be enabled to write out the message. - * @param severity The severity. See {@link IStatus} for valid severity values. - * @param clazz The class that calls this tracer or null. - * - * @see IStatus - */ - public final void trace(String message, int debugMode, String slotId, int severity, Object clazz) { - getTracer().trace(message, debugMode, slotId, severity, clazz); - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/utils/Env.java b/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/utils/Env.java deleted file mode 100644 index 4b081c81e8a..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.core/src/org/eclipse/tm/terminal/view/core/utils/Env.java +++ /dev/null @@ -1,111 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2013, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.core.utils; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Properties; - -import org.eclipse.core.runtime.Platform; - -/** - * Environment handling utility methods. - */ -public class Env { - - /** - * Returns the merged environment of the native environment and the passed - * in environment. Passed in variables will overwrite the native environment - * if the same variables are set there. - *

      - * For use with terminals, the parameter terminal should be set to - * true. In this case, the method will assure that the TERM - * environment variable is always set to ANSI and is not overwritten - * by the passed in environment. - * - * @param envp The environment to set on top of the native environment or null. - * @param terminal True if used with an terminal, false otherwise. - * - * @return The merged environment. - */ - public static String[] getEnvironment(String[] envp, boolean terminal) { - // Get a copy of the native environment variables - Properties environmentVariables = getEnvVars(); - - // If a "local" environment is provided, merge it with the native - // environment. - if (envp != null) { - for (String keyValue : envp) { - // keyValue is the full provided variable in form "name=value" - String[] parts = keyValue.split("=", 2); //$NON-NLS-1$ - if (parts.length == 2) { - String name = parts[0]; - String value = parts[1]; - - if ("".equals(value)) { //$NON-NLS-1$ - environmentVariables.remove(name); - } else { - environmentVariables.put(name, value); - } - } - } - } - // Set the TERM environment variable if in terminal mode - if (terminal) - environmentVariables.put("TERM", "xterm");//$NON-NLS-1$ //$NON-NLS-2$ - - // Convert into an array of strings - List keys = new ArrayList<>(environmentVariables.stringPropertyNames()); - // On Windows hosts, sort the environment keys - if (Platform.OS_WIN32.equals(Platform.getOS())) - Collections.sort(keys); - List strings = new ArrayList<>(keys.size()); - for (String key : keys) { - String value = environmentVariables.getProperty(key); - strings.add(key + "=" + value); //$NON-NLS-1$ - } - - return strings.toArray(new String[strings.size()]); - } - - //WARNING - //Below is a copy of org.eclipse.cdt.utils.spawner.EnvironmentReader to make the terminal independent from CDT - //This is supposed to be a straight copy (no modifications) - //except for making getEnvVars private to avoid errors/warnings - private static Properties envVars; - @SuppressWarnings("nls") - private static List toUppercaseEnvironmentVars = Arrays.asList("PATH", "CYGWIN_HOME", "LANG"); - - static { - boolean isWindows = Platform.OS_WIN32.equals(Platform.getOS()); - envVars = new Properties(); - Map envMap = System.getenv(); - for (Map.Entry curEnvVar : envMap.entrySet()) { - String key = curEnvVar.getKey(); - String value = curEnvVar.getValue(); - if (isWindows && toUppercaseEnvironmentVars.contains(key.toUpperCase())) { - key = key.toUpperCase(); - } - envVars.setProperty(key, value); - } - } - - /** - * @return a clone of the list of environment variables. - */ - private static Properties getEnvVars() { - return (Properties) envVars.clone(); - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/.classpath b/terminal/plugins/org.eclipse.tm.terminal.view.ui/.classpath deleted file mode 100644 index 81fe078c20c..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/.classpath +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/.gitignore b/terminal/plugins/org.eclipse.tm.terminal.view.ui/.gitignore deleted file mode 100644 index ae3c1726048..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/bin/ diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/.options b/terminal/plugins/org.eclipse.tm.terminal.view.ui/.options deleted file mode 100644 index 2b37de4fb78..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/.options +++ /dev/null @@ -1,3 +0,0 @@ -org.eclipse.tm.terminal.view.ui/debugmode = 0 -org.eclipse.tm.terminal.view.ui/trace/outputStreamMonitor = false -org.eclipse.tm.terminal.view.ui/trace/launchTerminalCommandHandler = false diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/.project b/terminal/plugins/org.eclipse.tm.terminal.view.ui/.project deleted file mode 100644 index 3686758258d..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/.project +++ /dev/null @@ -1,45 +0,0 @@ - - - org.eclipse.tm.terminal.view.ui - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.pde.ManifestBuilder - - - - - org.eclipse.pde.SchemaBuilder - - - - - org.eclipse.pde.api.tools.apiAnalysisBuilder - - - - - - org.eclipse.pde.PluginNature - org.eclipse.jdt.core.javanature - org.eclipse.pde.api.tools.apiAnalysisNature - - - - 1329502074611 - - 10 - - org.eclipse.ui.ide.multiFilter - 1.0-name-matches-false-false-target - - - - diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/.api_filters b/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/.api_filters deleted file mode 100644 index 3d478ee8e78..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/.api_filters +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.core.resources.prefs b/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index 99f26c0203a..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -encoding/=UTF-8 diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.jdt.core.prefs b/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 9df862f8d49..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,486 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.builder.cleanOutputFolder=clean -org.eclipse.jdt.core.builder.duplicateResourceTask=warning -org.eclipse.jdt.core.builder.invalidClasspath=abort -org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore -org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch, *.xtend -org.eclipse.jdt.core.circularClasspath=error -org.eclipse.jdt.core.classpath.exclusionPatterns=enabled -org.eclipse.jdt.core.classpath.mainOnlyProjectHasTestOnlyDependency=error -org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled -org.eclipse.jdt.core.classpath.outputOverlappingAnotherSource=error -org.eclipse.jdt.core.codeComplete.argumentPrefixes= -org.eclipse.jdt.core.codeComplete.argumentSuffixes= -org.eclipse.jdt.core.codeComplete.fieldPrefixes= -org.eclipse.jdt.core.codeComplete.fieldSuffixes= -org.eclipse.jdt.core.codeComplete.localPrefixes= -org.eclipse.jdt.core.codeComplete.localSuffixes= -org.eclipse.jdt.core.codeComplete.staticFieldPrefixes= -org.eclipse.jdt.core.codeComplete.staticFieldSuffixes= -org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes= -org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes= -org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled -org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore -org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull -org.eclipse.jdt.core.compiler.annotation.nonnull.secondary= -org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault -org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary= -org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable -org.eclipse.jdt.core.compiler.annotation.nullable.secondary= -org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.methodParameters=generate -org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=17 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.doc.comment.support=enabled -org.eclipse.jdt.core.compiler.maxProblemPerUnit=100 -org.eclipse.jdt.core.compiler.problem.APILeak=warning -org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.autoboxing=ignore -org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning -org.eclipse.jdt.core.compiler.problem.deadCode=warning -org.eclipse.jdt.core.compiler.problem.deprecation=warning -org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled -org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled -org.eclipse.jdt.core.compiler.problem.discouragedReference=warning -org.eclipse.jdt.core.compiler.problem.emptyStatement=warning -org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore -org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning -org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled -org.eclipse.jdt.core.compiler.problem.fieldHiding=warning -org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning -org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning -org.eclipse.jdt.core.compiler.problem.forbiddenReference=error -org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning -org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled -org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning -org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning -org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore -org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore -org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled -org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled -org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled -org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected -org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore -org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error -org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore -org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning -org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled -org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled -org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public -org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag -org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore -org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled -org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled -org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled -org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore -org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore -org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning -org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning -org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning -org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning -org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning -org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error -org.eclipse.jdt.core.compiler.problem.nullReference=error -org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error -org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning -org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning -org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore -org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning -org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning -org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning -org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore -org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning -org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning -org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning -org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore -org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning -org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore -org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore -org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning -org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled -org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning -org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled -org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled -org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled -org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore -org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning -org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning -org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled -org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning -org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning -org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore -org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning -org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning -org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled -org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info -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.unstableAutoModuleName=warning -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled -org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled -org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore -org.eclipse.jdt.core.compiler.problem.unusedImport=warning -org.eclipse.jdt.core.compiler.problem.unusedLabel=warning -org.eclipse.jdt.core.compiler.problem.unusedLocal=warning -org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore -org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore -org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled -org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled -org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning -org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore -org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning -org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning -org.eclipse.jdt.core.compiler.release=enabled -org.eclipse.jdt.core.compiler.source=17 -org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false -org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647 -org.eclipse.jdt.core.formatter.align_type_members_on_columns=false -org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false -org.eclipse.jdt.core.formatter.align_with_spaces=false -org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_assignment=0 -org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 -org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16 -org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 -org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16 -org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 -org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0 -org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0 -org.eclipse.jdt.core.formatter.alignment_for_module_statements=16 -org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 -org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16 -org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80 -org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16 -org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0 -org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0 -org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16 -org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_after_package=1 -org.eclipse.jdt.core.formatter.blank_lines_before_field=0 -org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 -org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 -org.eclipse.jdt.core.formatter.blank_lines_before_method=1 -org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 -org.eclipse.jdt.core.formatter.blank_lines_before_package=0 -org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 -org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 -org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true -org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false -org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true -org.eclipse.jdt.core.formatter.comment.format_block_comments=false -org.eclipse.jdt.core.formatter.comment.format_header=false -org.eclipse.jdt.core.formatter.comment.format_html=true -org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false -org.eclipse.jdt.core.formatter.comment.format_line_comments=false -org.eclipse.jdt.core.formatter.comment.format_source_code=true -org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false -org.eclipse.jdt.core.formatter.comment.indent_root_tags=false -org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert -org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert -org.eclipse.jdt.core.formatter.comment.line_length=80 -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=false -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true -org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_empty_lines=false -org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true -org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false -org.eclipse.jdt.core.formatter.indentation.size=4 -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert -org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert -org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert -org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert -org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert -org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert -org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert -org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.join_lines_in_comments=true -org.eclipse.jdt.core.formatter.join_wrapped_lines=true -org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false -org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false -org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false -org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false -org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false -org.eclipse.jdt.core.formatter.lineSplit=120 -org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false -org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 -org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 -org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines -org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines -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_additive_operator=true -org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false -org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true -org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true -org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true -org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true -org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true -org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true -org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true -org.eclipse.jdt.core.incompatibleJDKLevel=ignore -org.eclipse.jdt.core.incompleteClasspath=error -org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.jdt.launching.prefs b/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.jdt.launching.prefs deleted file mode 100644 index f8a131b56e0..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.jdt.launching.prefs +++ /dev/null @@ -1,3 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.launching.PREF_COMPILER_COMPLIANCE_DOES_NOT_MATCH_JRE=warning -org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.jdt.ui.prefs b/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.jdt.ui.prefs deleted file mode 100644 index d35ba9b5231..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.jdt.ui.prefs +++ /dev/null @@ -1,213 +0,0 @@ -cleanup.add_all=false -cleanup.add_default_serial_version_id=true -cleanup.add_generated_serial_version_id=false -cleanup.add_missing_annotations=true -cleanup.add_missing_deprecated_annotations=true -cleanup.add_missing_methods=false -cleanup.add_missing_nls_tags=false -cleanup.add_missing_override_annotations=true -cleanup.add_missing_override_annotations_interface_methods=true -cleanup.add_serial_version_id=false -cleanup.always_use_blocks=true -cleanup.always_use_parentheses_in_expressions=false -cleanup.always_use_this_for_non_static_field_access=false -cleanup.always_use_this_for_non_static_method_access=false -cleanup.array_with_curly=false -cleanup.arrays_fill=false -cleanup.bitwise_conditional_expression=false -cleanup.boolean_literal=false -cleanup.boolean_value_rather_than_comparison=false -cleanup.break_loop=false -cleanup.collection_cloning=false -cleanup.comparing_on_criteria=false -cleanup.comparison_statement=false -cleanup.controlflow_merge=false -cleanup.convert_functional_interfaces=false -cleanup.convert_to_enhanced_for_loop=false -cleanup.convert_to_enhanced_for_loop_if_loop_var_used=true -cleanup.convert_to_switch_expressions=false -cleanup.correct_indentation=false -cleanup.do_while_rather_than_while=true -cleanup.double_negation=false -cleanup.else_if=false -cleanup.embedded_if=false -cleanup.evaluate_nullable=false -cleanup.extract_increment=false -cleanup.format_source_code=true -cleanup.format_source_code_changes_only=false -cleanup.hash=false -cleanup.if_condition=false -cleanup.insert_inferred_type_arguments=false -cleanup.instanceof=false -cleanup.instanceof_keyword=false -cleanup.invert_equals=false -cleanup.join=false -cleanup.lazy_logical_operator=false -cleanup.make_local_variable_final=true -cleanup.make_parameters_final=false -cleanup.make_private_fields_final=true -cleanup.make_type_abstract_if_missing_method=false -cleanup.make_variable_declarations_final=false -cleanup.map_cloning=false -cleanup.merge_conditional_blocks=false -cleanup.multi_catch=false -cleanup.never_use_blocks=false -cleanup.never_use_parentheses_in_expressions=true -cleanup.no_string_creation=false -cleanup.no_super=false -cleanup.number_suffix=false -cleanup.objects_equals=false -cleanup.one_if_rather_than_duplicate_blocks_that_fall_through=false -cleanup.operand_factorization=false -cleanup.organize_imports=true -cleanup.overridden_assignment=false -cleanup.plain_replacement=false -cleanup.precompile_regex=false -cleanup.primitive_comparison=false -cleanup.primitive_parsing=false -cleanup.primitive_rather_than_wrapper=false -cleanup.primitive_serialization=false -cleanup.pull_out_if_from_if_else=false -cleanup.pull_up_assignment=false -cleanup.push_down_negation=false -cleanup.qualify_static_field_accesses_with_declaring_class=false -cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true -cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true -cleanup.qualify_static_member_accesses_with_declaring_class=false -cleanup.qualify_static_method_accesses_with_declaring_class=false -cleanup.reduce_indentation=false -cleanup.redundant_comparator=false -cleanup.redundant_falling_through_block_end=false -cleanup.remove_private_constructors=true -cleanup.remove_redundant_modifiers=false -cleanup.remove_redundant_semicolons=true -cleanup.remove_redundant_type_arguments=true -cleanup.remove_trailing_whitespaces=true -cleanup.remove_trailing_whitespaces_all=true -cleanup.remove_trailing_whitespaces_ignore_empty=false -cleanup.remove_unnecessary_array_creation=false -cleanup.remove_unnecessary_casts=true -cleanup.remove_unnecessary_nls_tags=false -cleanup.remove_unused_imports=true -cleanup.remove_unused_local_variables=false -cleanup.remove_unused_method_parameters=false -cleanup.remove_unused_private_fields=true -cleanup.remove_unused_private_members=false -cleanup.remove_unused_private_methods=true -cleanup.remove_unused_private_types=true -cleanup.return_expression=false -cleanup.simplify_lambda_expression_and_method_ref=false -cleanup.single_used_field=false -cleanup.sort_members=false -cleanup.sort_members_all=false -cleanup.standard_comparison=false -cleanup.static_inner_class=false -cleanup.strictly_equal_or_different=false -cleanup.stringbuffer_to_stringbuilder=false -cleanup.stringbuilder=false -cleanup.stringbuilder_for_local_vars=true -cleanup.stringconcat_to_textblock=false -cleanup.substring=false -cleanup.switch=false -cleanup.system_property=false -cleanup.system_property_boolean=false -cleanup.system_property_file_encoding=false -cleanup.system_property_file_separator=false -cleanup.system_property_line_separator=false -cleanup.system_property_path_separator=false -cleanup.ternary_operator=false -cleanup.try_with_resource=false -cleanup.unlooped_while=false -cleanup.unreachable_block=false -cleanup.use_anonymous_class_creation=false -cleanup.use_autoboxing=false -cleanup.use_blocks=false -cleanup.use_blocks_only_for_return_and_throw=false -cleanup.use_directly_map_method=false -cleanup.use_lambda=true -cleanup.use_parentheses_in_expressions=false -cleanup.use_string_is_blank=false -cleanup.use_this_for_non_static_field_access=false -cleanup.use_this_for_non_static_field_access_only_if_necessary=true -cleanup.use_this_for_non_static_method_access=false -cleanup.use_this_for_non_static_method_access_only_if_necessary=true -cleanup.use_unboxing=false -cleanup.use_var=false -cleanup.useless_continue=false -cleanup.useless_return=false -cleanup.valueof_rather_than_instantiation=false -cleanup_profile=_CDT -cleanup_settings_version=2 -eclipse.preferences.version=1 -editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true -formatter_profile=_CDT -formatter_settings_version=14 -internal.default.compliance=user -org.eclipse.jdt.ui.exception.name=e -org.eclipse.jdt.ui.gettersetter.use.is=true -org.eclipse.jdt.ui.ignorelowercasenames=true -org.eclipse.jdt.ui.importorder=java;javax;org;com; -org.eclipse.jdt.ui.keywordthis=false -org.eclipse.jdt.ui.ondemandthreshold=1000 -org.eclipse.jdt.ui.overrideannotation=true -org.eclipse.jdt.ui.staticondemandthreshold=1000 -org.eclipse.jdt.ui.text.custom_code_templates= -sp_cleanup.add_default_serial_version_id=true -sp_cleanup.add_generated_serial_version_id=false -sp_cleanup.add_missing_annotations=true -sp_cleanup.add_missing_deprecated_annotations=true -sp_cleanup.add_missing_methods=false -sp_cleanup.add_missing_nls_tags=false -sp_cleanup.add_missing_override_annotations=true -sp_cleanup.add_missing_override_annotations_interface_methods=true -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_functional_interfaces=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.insert_inferred_type_arguments=false -sp_cleanup.make_local_variable_final=true -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_redundant_modifiers=false -sp_cleanup.remove_redundant_semicolons=true -sp_cleanup.remove_redundant_type_arguments=true -sp_cleanup.remove_trailing_whitespaces=true -sp_cleanup.remove_trailing_whitespaces_all=true -sp_cleanup.remove_trailing_whitespaces_ignore_empty=false -sp_cleanup.remove_unnecessary_casts=true -sp_cleanup.remove_unnecessary_nls_tags=false -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_anonymous_class_creation=false -sp_cleanup.use_blocks=false -sp_cleanup.use_blocks_only_for_return_and_throw=false -sp_cleanup.use_lambda=true -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/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.pde.api.tools.prefs b/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.pde.api.tools.prefs deleted file mode 100644 index ec9fbf321d0..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.pde.api.tools.prefs +++ /dev/null @@ -1,184 +0,0 @@ -ANNOTATION_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error -ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -ANNOTATION_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error -ANNOTATION_ELEMENT_TYPE_ADDED_METHOD=Error -ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error -ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error -ANNOTATION_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_TO_CLASS=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_TO_ENUM=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error -ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITHOUT_DEFAULT_VALUE=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD_WITH_DEFAULT_VALUE=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error -ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error -API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error -API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error -API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error -API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error -API_USE_SCAN_FIELD_SEVERITY=Error -API_USE_SCAN_METHOD_SEVERITY=Error -API_USE_SCAN_TYPE_SEVERITY=Error -CLASS_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -CLASS_ELEMENT_TYPE_ADDED_FIELD=Error -CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -CLASS_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error -CLASS_ELEMENT_TYPE_ADDED_METHOD=Error -CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error -CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error -CLASS_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERCLASS_SET=Error -CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error -CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error -CLASS_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error -CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error -CLASS_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error -CLASS_ELEMENT_TYPE_CHANGED_SUPERCLASS=Error -CLASS_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error -CLASS_ELEMENT_TYPE_CHANGED_TO_ENUM=Error -CLASS_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error -CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error -CLASS_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error -CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error -CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -CLASS_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error -CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error -CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error -CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error -CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error -CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error -CONSTRUCTOR_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error -CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error -CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error -CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error -ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error -ENUM_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error -ENUM_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error -ENUM_ELEMENT_TYPE_CHANGED_TO_CLASS=Error -ENUM_ELEMENT_TYPE_CHANGED_TO_INTERFACE=Error -ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error -ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error -ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error -ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error -ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error -FIELD_ELEMENT_TYPE_ADDED_VALUE=Error -FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error -FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error -FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error -FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error -FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error -FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error -FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error -FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error -FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENTS=Error -FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error -ILLEGAL_EXTEND=Warning -ILLEGAL_IMPLEMENT=Warning -ILLEGAL_INSTANTIATE=Warning -ILLEGAL_OVERRIDE=Warning -ILLEGAL_REFERENCE=Warning -INTERFACE_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Error -INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error -INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -INTERFACE_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error -INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error -INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error -INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error -INTERFACE_ELEMENT_TYPE_ADDED_TYPE_MEMBER=Error -INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error -INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETERS=Error -INTERFACE_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error -INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -INTERFACE_ELEMENT_TYPE_CHANGED_INTERFACE_BOUNDS=Error -INTERFACE_ELEMENT_TYPE_CHANGED_RESTRICTIONS=Error -INTERFACE_ELEMENT_TYPE_CHANGED_TO_ANNOTATION=Error -INTERFACE_ELEMENT_TYPE_CHANGED_TO_CLASS=Error -INTERFACE_ELEMENT_TYPE_CHANGED_TO_ENUM=Error -INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error -INTERFACE_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error -INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -INTERFACE_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error -INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error -INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error -INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error -INVALID_ANNOTATION=Ignore -INVALID_JAVADOC_TAG=Error -INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Warning -LEAK_EXTEND=Warning -LEAK_FIELD_DECL=Warning -LEAK_IMPLEMENT=Warning -LEAK_METHOD_PARAM=Warning -LEAK_METHOD_RETURN_TYPE=Warning -METHOD_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -METHOD_ELEMENT_TYPE_ADDED_INTERFACE_BOUNDS=Error -METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error -METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error -METHOD_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error -METHOD_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error -METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error -METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error -METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error -METHOD_ELEMENT_TYPE_CHANGED_TYPE_PARAMETER=Error -METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error -METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error -METHOD_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -METHOD_ELEMENT_TYPE_REMOVED_INTERFACE_BOUNDS=Error -METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error -METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETERS=Error -MISSING_EE_DESCRIPTIONS=Warning -TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error -TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error -TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error -TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error -TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error -TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error -UNUSED_PROBLEM_FILTERS=Warning -automatically_removed_unused_problem_filters=false -changed_execution_env=Error -eclipse.preferences.version=1 -incompatible_api_component_version=Error -incompatible_api_component_version_include_major_without_breaking_change=Disabled -incompatible_api_component_version_include_minor_without_api_change=Disabled -incompatible_api_component_version_report_major_without_breaking_change=Warning -incompatible_api_component_version_report_minor_without_api_change=Warning -invalid_since_tag_version=Error -malformed_since_tag=Error -missing_since_tag=Error -report_api_breakage_when_major_version_incremented=Disabled -report_resolution_errors_api_component=Warning diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.pde.prefs b/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.pde.prefs deleted file mode 100644 index 4a7a2a8d8c5..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/.settings/org.eclipse.pde.prefs +++ /dev/null @@ -1,36 +0,0 @@ -compilers.f.unresolved-features=1 -compilers.f.unresolved-plugins=1 -compilers.incompatible-environment=1 -compilers.p.build=1 -compilers.p.build.bin.includes=0 -compilers.p.build.encodings=2 -compilers.p.build.java.compiler=2 -compilers.p.build.java.compliance=1 -compilers.p.build.missing.output=2 -compilers.p.build.output.library=1 -compilers.p.build.source.library=1 -compilers.p.build.src.includes=0 -compilers.p.deprecated=1 -compilers.p.discouraged-class=1 -compilers.p.exec-env-too-low=1 -compilers.p.internal=1 -compilers.p.missing-packages=2 -compilers.p.missing-version-export-package=2 -compilers.p.missing-version-import-package=2 -compilers.p.missing-version-require-bundle=2 -compilers.p.no-required-att=0 -compilers.p.no.automatic.module=1 -compilers.p.not-externalized-att=1 -compilers.p.service.component.without.lazyactivation=1 -compilers.p.unknown-attribute=1 -compilers.p.unknown-class=0 -compilers.p.unknown-element=1 -compilers.p.unknown-identifier=1 -compilers.p.unknown-resource=0 -compilers.p.unresolved-ex-points=0 -compilers.p.unresolved-import=0 -compilers.s.create-docs=false -compilers.s.doc-folder=doc -compilers.s.open-tags=1 -compilers.use-project=true -eclipse.preferences.version=1 diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/META-INF/MANIFEST.MF b/terminal/plugins/org.eclipse.tm.terminal.view.ui/META-INF/MANIFEST.MF deleted file mode 100644 index 55ba5b71838..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/META-INF/MANIFEST.MF +++ /dev/null @@ -1,43 +0,0 @@ -Manifest-Version: 1.0 -Bundle-ManifestVersion: 2 -Bundle-Name: %pluginName -Bundle-SymbolicName: org.eclipse.tm.terminal.view.ui;singleton:=true -Bundle-Version: 4.11.800.qualifier -Bundle-Activator: org.eclipse.tm.terminal.view.ui.activator.UIPlugin -Bundle-Vendor: %providerName -Require-Bundle: org.eclipse.core.expressions;bundle-version="[3.9.400,4)", - org.eclipse.core.runtime;bundle-version="[3.33.0,4)", - org.eclipse.core.resources;bundle-version="[3.22.200,4)";resolution:=optional, - org.eclipse.core.variables;bundle-version="[3.6.500,4)", - org.eclipse.debug.ui;bundle-version="[3.18.800,4)";resolution:=optional, - org.eclipse.tm.terminal.view.core;bundle-version="[4.10.0,5.0.0)", - org.eclipse.tm.terminal.control;bundle-version="[5.6.0,6.0.0)", - org.eclipse.ui;bundle-version="[3.207.200,4)", - org.eclipse.ui.ide;bundle-version="[3.22.600,4)";resolution:=optional, - org.eclipse.ui.editors;bundle-version="[3.20.0,4)";resolution:=optional, - org.eclipse.text;bundle-version="[3.14.300,4)";resolution:=optional -Bundle-RequiredExecutionEnvironment: JavaSE-17 -Bundle-ActivationPolicy: lazy -Bundle-Localization: plugin -Export-Package: org.eclipse.tm.terminal.view.ui.actions, - org.eclipse.tm.terminal.view.ui.activator;x-internal:=true, - org.eclipse.tm.terminal.view.ui.controls, - org.eclipse.tm.terminal.view.ui.help, - org.eclipse.tm.terminal.view.ui.interfaces, - org.eclipse.tm.terminal.view.ui.interfaces.tracing;x-internal:=true, - org.eclipse.tm.terminal.view.ui.internal;x-internal:=true, - org.eclipse.tm.terminal.view.ui.internal.dialogs;x-internal:=true, - org.eclipse.tm.terminal.view.ui.internal.handler;x-internal:=true, - org.eclipse.tm.terminal.view.ui.launcher, - org.eclipse.tm.terminal.view.ui.listeners, - org.eclipse.tm.terminal.view.ui.local.showin;x-internal:=true, - org.eclipse.tm.terminal.view.ui.local.showin.detectors;x-internal:=true, - org.eclipse.tm.terminal.view.ui.manager, - org.eclipse.tm.terminal.view.ui.nls;x-internal:=true, - org.eclipse.tm.terminal.view.ui.panels, - org.eclipse.tm.terminal.view.ui.preferences;x-internal:=true, - org.eclipse.tm.terminal.view.ui.services, - org.eclipse.tm.terminal.view.ui.streams, - org.eclipse.tm.terminal.view.ui.tabs, - org.eclipse.tm.terminal.view.ui.view -Automatic-Module-Name: org.eclipse.tm.terminal.view.ui diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/about.html b/terminal/plugins/org.eclipse.tm.terminal.view.ui/about.html deleted file mode 100644 index b3134865230..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/about.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - About - - - -

      About This Content

      - -

      November 30, 2017

      -

      License

      - -

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

      - -

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

      - - - - \ No newline at end of file diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/build.properties b/terminal/plugins/org.eclipse.tm.terminal.view.ui/build.properties deleted file mode 100644 index 8a51227f4f2..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/build.properties +++ /dev/null @@ -1,26 +0,0 @@ -############################################################################### -# Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved. -# This program and the accompanying materials are made available under the terms -# of the Eclipse Public License 2.0 which accompanies this distribution, and is -# available at https://www.eclipse.org/legal/epl-2.0/ -# -# SPDX-License-Identifier: EPL-2.0 -# -# Contributors: -# Wind River Systems - initial API and implementation -############################################################################### -source.. = src/ -output.. = bin/ -bin.includes = META-INF/,\ - .,\ - plugin.properties,\ - plugin.xml,\ - about.html,\ - icons/,\ - contexts.xml,\ - about.ini,\ - about.mappings,\ - about.properties,\ - cdt_logo_icon32.png -src.includes = schema/,\ - about.html diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/contexts.xml b/terminal/plugins/org.eclipse.tm.terminal.view.ui/contexts.xml deleted file mode 100644 index 7a0390e6408..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/contexts.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - Select the terminal type and specify the connections settings to connect a new terminal. - - - Select the new encoding for the active terminal. - - - Add or modify an external executable added to the 'Show in Local Terminal' context menu. - - diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/clcl16/command_input_field.gif b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/clcl16/command_input_field.gif deleted file mode 100644 index 9e3a547c145..00000000000 Binary files a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/clcl16/command_input_field.gif and /dev/null differ diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/clcl16/lock_co.png b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/clcl16/lock_co.png deleted file mode 100644 index df111d48fb3..00000000000 Binary files a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/clcl16/lock_co.png and /dev/null differ diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/clcl16/lock_co@2x.png b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/clcl16/lock_co@2x.png deleted file mode 100644 index df6d4317702..00000000000 Binary files a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/clcl16/lock_co@2x.png and /dev/null differ diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/clcl16/new_terminal_view.gif b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/clcl16/new_terminal_view.gif deleted file mode 100644 index 00896268424..00000000000 Binary files a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/clcl16/new_terminal_view.gif and /dev/null differ diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/dlcl16/command_input_field.gif b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/dlcl16/command_input_field.gif deleted file mode 100644 index f538ca707fc..00000000000 Binary files a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/dlcl16/command_input_field.gif and /dev/null differ diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/dlcl16/disconnect.gif b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/dlcl16/disconnect.gif deleted file mode 100644 index 1ca9213a43c..00000000000 Binary files a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/dlcl16/disconnect.gif and /dev/null differ diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/dlcl16/lock_co.png b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/dlcl16/lock_co.png deleted file mode 100644 index 6f061961726..00000000000 Binary files a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/dlcl16/lock_co.png and /dev/null differ diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/dlcl16/lock_co@2x.png b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/dlcl16/lock_co@2x.png deleted file mode 100644 index 692fa10d326..00000000000 Binary files a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/dlcl16/lock_co@2x.png and /dev/null differ diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/dlcl16/new_terminal_view.gif b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/dlcl16/new_terminal_view.gif deleted file mode 100644 index 25adc24b2a6..00000000000 Binary files a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/dlcl16/new_terminal_view.gif and /dev/null differ diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/elcl16/command_input_field.gif b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/elcl16/command_input_field.gif deleted file mode 100644 index f538ca707fc..00000000000 Binary files a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/elcl16/command_input_field.gif and /dev/null differ diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/elcl16/disconnect.gif b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/elcl16/disconnect.gif deleted file mode 100644 index d61dd776e39..00000000000 Binary files a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/elcl16/disconnect.gif and /dev/null differ diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/elcl16/lock_co.png b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/elcl16/lock_co.png deleted file mode 100644 index df111d48fb3..00000000000 Binary files a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/elcl16/lock_co.png and /dev/null differ diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/elcl16/lock_co@2x.png b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/elcl16/lock_co@2x.png deleted file mode 100644 index df6d4317702..00000000000 Binary files a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/elcl16/lock_co@2x.png and /dev/null differ diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/elcl16/new_terminal_view.gif b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/elcl16/new_terminal_view.gif deleted file mode 100644 index b81882b503d..00000000000 Binary files a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/elcl16/new_terminal_view.gif and /dev/null differ diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/eview16/console_view.png b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/eview16/console_view.png deleted file mode 100644 index ca77aee5bca..00000000000 Binary files a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/eview16/console_view.png and /dev/null differ diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/eview16/console_view@2x.png b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/eview16/console_view@2x.png deleted file mode 100644 index 54ecae20f3f..00000000000 Binary files a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/eview16/console_view@2x.png and /dev/null differ diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/eview16/terminal_view.gif b/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/eview16/terminal_view.gif deleted file mode 100644 index bbb6a9e153e..00000000000 Binary files a/terminal/plugins/org.eclipse.tm.terminal.view.ui/icons/eview16/terminal_view.gif and /dev/null differ diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/plugin.properties b/terminal/plugins/org.eclipse.tm.terminal.view.ui/plugin.properties deleted file mode 100644 index dd968a731d3..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/plugin.properties +++ /dev/null @@ -1,78 +0,0 @@ -################################################################################## -# Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. -# This program and the accompanying materials are made available under the terms -# of the Eclipse Public License 2.0 which accompanies this distribution, and is -# available at https://www.eclipse.org/legal/epl-2.0/ -# -# SPDX-License-Identifier: EPL-2.0 -# -# Contributors: -# Wind River Systems - initial API and implementation -################################################################################## - -pluginName = Terminal View -providerName = Eclipse CDT - -# ----- Terminal View ----- - -ViewCategory.name=Terminal - -TerminalsView.name=Terminal -TerminalsView.name.old=Terminals (Old) -TerminalsView.context.name=In Terminal View -TerminalsView.context.description=Show modified keyboard shortcuts in context menu - -# ----- Terminal Connectors ----- - -TerminalConnector.streams=Streams Connector (hidden) - -# ----- Terminal Launcher Delegates ----- - -StreamsLauncherDelegate.label=Streams Terminal - -# ----- Commands and Menu contributions ----- -command.category.name=Terminal Commands - -toolbar.terminal.label=Terminal - -command.launch.selection.name=Open Terminal on Selection -command.launch.name=Open Terminal -command.launch.label=Open Terminal... -command.launch.tooltip=Open a Terminal - -command.disconnect.name=Disconnect Terminal -command.disconnect.label=Disconnect -command.disconnect.tooltip=Disconnect Terminal Connection - -command.newview.name=New Terminal View - -menu.showIn.label = Show in Local Terminal -menu.showIn.mnemonic=I - -LocalLauncherDelegate.label=Local Terminal - -command.launch.name=Open Local Terminal on Selection - -menu.showIn.localterminal.label = Terminal - -TerminalConnector.local=Local - -# ----- Extension Points ----- - -ExtensionPoint.launcherDelegates.name=Terminal Launcher Delegates - -# ----- Activity contributions ----- - -activities.category.terminals.name=Terminal -activities.category.terminals.description=Use the terminal to connect to remote hosts via telnet, ssh and others. - -activities.activity.terminals.views.name=Terminal Views -activities.activity.terminals.views.description=Terminal related views. - -activities.activity.terminals.maintoolbar.name=Terminal Main Toolbar -activities.activity.terminals.maintoolbar.description=Terminal main toolbar buttons. - -# ----- Preference Pages ----- - -preference.page.name=Local Terminal - diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/plugin.xml b/terminal/plugins/org.eclipse.tm.terminal.view.ui/plugin.xml deleted file mode 100644 index a00a5fa5614..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/plugin.xml +++ /dev/null @@ -1,559 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/schema/launcherDelegates.exsd b/terminal/plugins/org.eclipse.tm.terminal.view.ui/schema/launcherDelegates.exsd deleted file mode 100644 index 4e011a1e3a3..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/schema/launcherDelegates.exsd +++ /dev/null @@ -1,217 +0,0 @@ - - - - - - - - - This extension point is used to contribute terminal launcher delegates. -<p> -Terminal launcher delegates contributes terminal settings widget to the <code>LaunchTerminalSettingsDialog</code> required to open a remote terminal through a specific communication channel, like TCF or SSH. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Declares a terminal launcher delegate contribution. - - - - - - - - - - - - The unique id of the terminal launcher delegate contribution. - - - - - - - The label representing the terminal launcher delegate within the UI. - - - - - - - The class that implements <code>org.eclipse.tcf.te.ui.terminals.interfaces.ILauncherDelegate</code> or extends <code>org.eclipse.tcf.te.ui.terminals.launcher.AbstractLauncherDelegate</code>. -<p> -The terminal launcher delegate implementation class must be specified either by the class attribute or the class child element! - - - - - - - - - - If <code>true</code>, than the terminal launcher delegate is not visible in the UI, even if a possible <code>enablement</code> will evaluate to <code>true</code>. - - - - - - - - - - A short description of the terminal connector type to be presented in the UI. - - - - - - - - Used when creating an <code>IExecutableExtension</code> with a named parameter, or more than one. - - - - - - - - - - The class that implements <code>org.eclipse.tcf.te.ui.terminals.interfaces.ILauncherDelegate</code> or extends <code>org.eclipse.tcf.te.ui.terminals.launcher.AbstractLauncherDelegate</code>. -<p> -The terminal launcher delegate implementation class must be specified either by the class attribute or the class child element! - - - - - - - - - - - - - A parameter for an <code>IExecutableExtension</code>. - - - - - - - <p>The parameter name.</p> - - - - - - - <p>The parameter value.</p> - - - - - - - - - - - - Target Explorer 1.0.0 - - - - - - - - - This is an example of the extension point usage: -<p> -<pre><code> - <extension point="org.eclipse.tcf.te.ui.terminals.launcherDelegates"> - <delegate - id="org.eclipse.tcf.te.ui.terminals.launcher.tcf" - class="org.eclipse.tcf.te.tcf.terminals.ui.internal.TerminalLauncherDelegate" - label="TCF Terminal"> - <enablement> - ... - </enablement> - </delegate> - </extension> -</code></pre> - - - - - - - - - The provider of a launcher delegate must implement <samp>org.eclipse.tcf.te.ui.terminals.interfaces.ILauncherDelegate</samp>. - - - - - - - - - - Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. - -All rights reserved. - -This program and the accompanying materials are made available under the terms -of the Eclipse Public License 2.0 which accompanies this distribution, and is -available at https://www.eclipse.org/legal/epl-2.0/ - - SPDX-License-Identifier: EPL-2.0 - - - - diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/AbstractAction.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/AbstractAction.java deleted file mode 100644 index 31967001c57..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/AbstractAction.java +++ /dev/null @@ -1,183 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.actions; - -import org.eclipse.core.commands.Command; -import org.eclipse.core.commands.ParameterizedCommand; -import org.eclipse.core.expressions.EvaluationContext; -import org.eclipse.core.runtime.Assert; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Status; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.custom.CTabItem; -import org.eclipse.tm.internal.terminal.control.ITerminalViewControl; -import org.eclipse.tm.internal.terminal.control.actions.AbstractTerminalAction; -import org.eclipse.tm.terminal.view.ui.activator.UIPlugin; -import org.eclipse.tm.terminal.view.ui.nls.Messages; -import org.eclipse.tm.terminal.view.ui.tabs.TabFolderManager; -import org.eclipse.tm.terminal.view.ui.tabs.TabFolderToolbarHandler; -import org.eclipse.ui.ISources; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.commands.ICommandService; -import org.eclipse.ui.handlers.IHandlerService; - -/** - * Abstract terminal action wrapper implementation. - */ -public abstract class AbstractAction extends AbstractTerminalAction { - // Reference to the parent toolbar handler - private final TabFolderToolbarHandler parent; - - /** - * Constructor. - * - * @param parent - * The parent toolbar handler instance. Must not be - * null. - * @param id - * The terminal action id. Must not be null. - */ - public AbstractAction(TabFolderToolbarHandler parent, String id) { - super(id); - - Assert.isNotNull(parent); - this.parent = parent; - } - - /** - * Returns the parent toolbar handler. - * - * @return The parent toolbar handler. - */ - protected final TabFolderToolbarHandler getParent() { - return parent; - } - - @Override - protected ITerminalViewControl getTarget() { - return getParent().getActiveTerminalViewControl(); - } - - @Override - public void run() { - // Get the active tab item from the tab folder manager - TabFolderManager manager = getParent().getAdapter(TabFolderManager.class); - if (manager != null) { - // If we have the active tab item, we can get the active terminal control - CTabItem activeTabItem = manager.getActiveTabItem(); - if (activeTabItem != null) { - // And execute the command - executeCommand(activeTabItem.getData("customData")); //$NON-NLS-1$ - } - } - } - - /** - * Executes the command for the given data node as current and active menu selection. - *

      - * Node: If the provided data node is null, the method will trigger - * the command with an empty selection. - * - * @param data The terminal custom data node or null. - */ - protected void executeCommand(Object data) { - // Get the command service from the workbench - ICommandService service = PlatformUI.getWorkbench().getAdapter(ICommandService.class); - if (service != null && getCommandId() != null) { - // Get the command - final Command command = service.getCommand(getCommandId()); - if (command != null && command.isDefined()) { - IHandlerService handlerSvc = PlatformUI.getWorkbench().getService(IHandlerService.class); - Assert.isNotNull(handlerSvc); - - // Construct a selection element - IStructuredSelection selection = data != null ? new StructuredSelection(data) - : new StructuredSelection(); - // Construct the application context - EvaluationContext context = new EvaluationContext(handlerSvc.getCurrentState(), selection); - // Apply the selection to the "activeMenuSelection" and "selection" variable too - context.addVariable(ISources.ACTIVE_CURRENT_SELECTION_NAME, selection); - context.addVariable(ISources.ACTIVE_MENU_SELECTION_NAME, selection); - // Allow plug-in activation - context.setAllowPluginActivation(true); - // And execute the event - try { - ParameterizedCommand pCmd = ParameterizedCommand.generateCommand(command, null); - Assert.isNotNull(pCmd); - - handlerSvc.executeCommandInContext(pCmd, null, context); - } catch (Exception e) { - IStatus status = new Status(IStatus.ERROR, UIPlugin.getUniqueIdentifier(), - NLS.bind(Messages.AbstractAction_error_commandExecutionFailed, getCommandId(), - e.getLocalizedMessage()), - e); - UIPlugin.getDefault().getLog().log(status); - } - } - } - } - - /** - * Returns the command id of the command to execute. - * - * @return The command id. Must be never null. - */ - protected abstract String getCommandId(); - - @Override - public void updateAction(boolean aboutToShow) { - // Ignore the flag given from outside. We have to decide ourself - // what the enabled state of the action is - boolean enabled = getTarget() != null; - - // If a target terminal control is available, we need to find the corresponding - // VLM target object which we need to trigger the handler - if (enabled) { - // The action will be enabled if we can determine the VLM target object - enabled = false; - // Get the active tab item from the tab folder manager - TabFolderManager manager = getParent().getAdapter(TabFolderManager.class); - if (manager != null) { - // If we have the active tab item, we can get the active terminal control - CTabItem activeTabItem = manager.getActiveTabItem(); - if (activeTabItem != null) { - enabled = checkEnableAction(activeTabItem.getData("customData")); //$NON-NLS-1$ - } - } - } - - setEnabled(enabled); - } - - /** - * Checks if the action should be enabled based on the given terminal data object. - * - * @param data The terminal data node or null. - * @return True to enable the action, false otherwise. - */ - protected boolean checkEnableAction(Object data) { - return data != null; - } - - /** - * Returns if the action is a separator. Returning true here - * means that an additional separator toolbar element is added right or - * above of the action. - * - * @return True if the action is separating the parent contribution manager, false otherwise. - */ - public boolean isSeparator() { - return false; - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/InvertColorsAction.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/InvertColorsAction.java deleted file mode 100644 index 2ea1e97337f..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/InvertColorsAction.java +++ /dev/null @@ -1,55 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2021 Fabrizio Iannetti. - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - *******************************************************************************/ - -package org.eclipse.tm.terminal.view.ui.actions; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.jface.action.IAction; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.tm.internal.terminal.control.ITerminalViewControl; -import org.eclipse.tm.internal.terminal.control.actions.AbstractTerminalAction; -import org.eclipse.tm.internal.terminal.provisional.api.TerminalState; -import org.eclipse.tm.terminal.view.ui.nls.Messages; -import org.eclipse.tm.terminal.view.ui.tabs.TabFolderManager; - -/** - * @since 4.8 - */ -public class InvertColorsAction extends AbstractTerminalAction { - - /** - * Constructor. - * - * @param tabFolderManager The parent tab folder manager. Must not be null. - */ - public InvertColorsAction(TabFolderManager tabFolderManager) { - super(null, InvertColorsAction.class.getName(), IAction.AS_CHECK_BOX); - - Assert.isNotNull(tabFolderManager); - setupAction(Messages.InvertColorsAction_menu, Messages.InvertColorsAction_tooltip, (ImageDescriptor) null, - (ImageDescriptor) null, (ImageDescriptor) null, true); - } - - @Override - public void run() { - ITerminalViewControl target = getTarget(); - if (target == null) - return; - target.setInvertedColors(!target.isInvertedColors()); - } - - @Override - public void updateAction(boolean aboutToShow) { - setEnabled(aboutToShow && getTarget() != null && getTarget().getState() == TerminalState.CONNECTED); - setChecked(aboutToShow && getTarget() != null && getTarget().isInvertedColors()); - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/NewTerminalViewAction.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/NewTerminalViewAction.java deleted file mode 100644 index 7d61839b9e7..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/NewTerminalViewAction.java +++ /dev/null @@ -1,76 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.actions; - -import org.eclipse.core.commands.Command; -import org.eclipse.core.commands.ParameterizedCommand; -import org.eclipse.core.runtime.Assert; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Platform; -import org.eclipse.core.runtime.Status; -import org.eclipse.jface.action.IAction; -import org.eclipse.tm.internal.terminal.control.actions.AbstractTerminalAction; -import org.eclipse.tm.terminal.view.ui.activator.UIPlugin; -import org.eclipse.tm.terminal.view.ui.interfaces.ITerminalsView; -import org.eclipse.tm.terminal.view.ui.interfaces.ImageConsts; -import org.eclipse.tm.terminal.view.ui.nls.Messages; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.commands.ICommandService; -import org.eclipse.ui.handlers.IHandlerService; - -/** - * Opens a new terminal view with a new secondary view ID. - * - * @since 4.1 - */ -public class NewTerminalViewAction extends AbstractTerminalAction { - - //private ITerminalsView view = null; - - /** - * Constructor. - */ - public NewTerminalViewAction(ITerminalsView view) { - super(null, NewTerminalViewAction.class.getName(), IAction.AS_PUSH_BUTTON); - - //this.view = view; - setupAction(Messages.NewTerminalViewAction_menu, Messages.NewTerminalViewAction_tooltip, - UIPlugin.getImageDescriptor(ImageConsts.ACTION_NewTerminalView_Hover), - UIPlugin.getImageDescriptor(ImageConsts.ACTION_NewTerminalView_Enabled), - UIPlugin.getImageDescriptor(ImageConsts.ACTION_NewTerminalView_Disabled), true); - setEnabled(true); - } - - @Override - public void run() { - ICommandService service = PlatformUI.getWorkbench().getService(ICommandService.class); - Command command = service != null ? service.getCommand("org.eclipse.tm.terminal.view.ui.command.newview") //$NON-NLS-1$ - : null; - if (command != null && command.isDefined() && command.isEnabled()) { - try { - ParameterizedCommand pCmd = ParameterizedCommand.generateCommand(command, null); - Assert.isNotNull(pCmd); - IHandlerService handlerSvc = PlatformUI.getWorkbench().getService(IHandlerService.class); - Assert.isNotNull(handlerSvc); - handlerSvc.executeCommandInContext(pCmd, null, handlerSvc.getCurrentState()); - } catch (Exception e) { - // If the platform is in debug mode, we print the exception to the log view - if (Platform.inDebugMode()) { - IStatus status = new Status(IStatus.ERROR, UIPlugin.getUniqueIdentifier(), - Messages.AbstractTriggerCommandHandler_error_executionFailed, e); - UIPlugin.getDefault().getLog().log(status); - } - } - } - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/RenameTerminalAction.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/RenameTerminalAction.java deleted file mode 100644 index 9eeae1df516..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/RenameTerminalAction.java +++ /dev/null @@ -1,66 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2021 Kichwa Coders Canada Inc. and others. - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - *******************************************************************************/ - -package org.eclipse.tm.terminal.view.ui.actions; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.jface.dialogs.InputDialog; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.window.Window; -import org.eclipse.tm.internal.terminal.control.ITerminalListener3.TerminalTitleRequestor; -import org.eclipse.tm.internal.terminal.control.ITerminalViewControl; -import org.eclipse.tm.internal.terminal.control.actions.AbstractTerminalAction; -import org.eclipse.tm.terminal.view.ui.nls.Messages; -import org.eclipse.tm.terminal.view.ui.tabs.TabFolderManager; - -/** - * @since 4.8 - */ -public class RenameTerminalAction extends AbstractTerminalAction { - - /** - * Constructor. - * - * @param tabFolderManager The parent tab folder manager. Must not be null. - */ - public RenameTerminalAction(TabFolderManager tabFolderManager) { - super(RenameTerminalAction.class.getName()); - - Assert.isNotNull(tabFolderManager); - setupAction(Messages.RenameTerminalAction_menu, Messages.RenameTerminalAction_tooltip, (ImageDescriptor) null, - (ImageDescriptor) null, (ImageDescriptor) null, true); - } - - @Override - public void run() { - ITerminalViewControl target = getTarget(); - if (target == null) - return; - InputDialog inputDialog = new InputDialog(target.getControl().getShell(), // - Messages.RenameTerminalAction_inputdialog_title, // - Messages.RenameTerminalAction_inputdialog_prompt, // - Messages.RenameTerminalAction_inputdialog_defaulttext, // - null); - if (inputDialog.open() == Window.OK) { - String value = inputDialog.getValue(); - if (value != null) { - target.setTerminalTitle(value, TerminalTitleRequestor.MENU); - } - } - - } - - @Override - public void updateAction(boolean aboutToShow) { - setEnabled(aboutToShow && getTarget() != null); - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/SelectEncodingAction.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/SelectEncodingAction.java deleted file mode 100644 index 8b7177a2d32..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/SelectEncodingAction.java +++ /dev/null @@ -1,66 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.actions; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.jface.action.IAction; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.window.Window; -import org.eclipse.tm.internal.terminal.control.ITerminalViewControl; -import org.eclipse.tm.internal.terminal.control.actions.AbstractTerminalAction; -import org.eclipse.tm.internal.terminal.provisional.api.TerminalState; -import org.eclipse.tm.terminal.view.ui.internal.dialogs.EncodingSelectionDialog; -import org.eclipse.tm.terminal.view.ui.nls.Messages; -import org.eclipse.tm.terminal.view.ui.tabs.TabFolderManager; - -/** - * Terminal control select encoding action implementation. - */ -public class SelectEncodingAction extends AbstractTerminalAction { - // Reference to the parent tab folder manager - private final TabFolderManager tabFolderManager; - - /** - * Constructor. - * - * @param tabFolderManager The parent tab folder manager. Must not be null. - */ - public SelectEncodingAction(TabFolderManager tabFolderManager) { - super(null, SelectEncodingAction.class.getName(), IAction.AS_PUSH_BUTTON); - - Assert.isNotNull(tabFolderManager); - this.tabFolderManager = tabFolderManager; - - setupAction(Messages.SelectEncodingAction_menu, Messages.SelectEncodingAction_tooltip, (ImageDescriptor) null, - (ImageDescriptor) null, (ImageDescriptor) null, true); - } - - @Override - public void run() { - ITerminalViewControl target = getTarget(); - if (target == null) - return; - - EncodingSelectionDialog dialog = new EncodingSelectionDialog(null); - dialog.setCharset(target.getCharset()); - if (dialog.open() == Window.OK) { - target.setCharset(dialog.getCharset()); - tabFolderManager.updateStatusLine(); - } - } - - @Override - public void updateAction(boolean aboutToShow) { - setEnabled(aboutToShow && getTarget() != null && getTarget().getState() == TerminalState.CONNECTED); - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/TabScrollLockAction.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/TabScrollLockAction.java deleted file mode 100644 index 25e1b3352ca..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/TabScrollLockAction.java +++ /dev/null @@ -1,54 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.actions; - -import org.eclipse.jface.action.IAction; -import org.eclipse.tm.internal.terminal.control.ITerminalViewControl; -import org.eclipse.tm.internal.terminal.control.actions.AbstractTerminalAction; -import org.eclipse.tm.internal.terminal.provisional.api.TerminalState; -import org.eclipse.tm.terminal.view.ui.activator.UIPlugin; -import org.eclipse.tm.terminal.view.ui.interfaces.ImageConsts; -import org.eclipse.tm.terminal.view.ui.nls.Messages; - -/** - * Terminal console tab scroll lock action. - */ -public class TabScrollLockAction extends AbstractTerminalAction { - - /** - * Constructor. - */ - public TabScrollLockAction() { - super(null, TabScrollLockAction.class.getName(), IAction.AS_RADIO_BUTTON); - - setupAction(Messages.TabScrollLockAction_text, Messages.TabScrollLockAction_tooltip, - UIPlugin.getImageDescriptor(ImageConsts.ACTION_ScrollLock_Hover), - UIPlugin.getImageDescriptor(ImageConsts.ACTION_ScrollLock_Enabled), - UIPlugin.getImageDescriptor(ImageConsts.ACTION_ScrollLock_Disabled), true); - } - - @Override - public void run() { - ITerminalViewControl target = getTarget(); - if (target != null) { - target.setScrollLock(!target.isScrollLock()); - setChecked(target.isScrollLock()); - } - } - - @Override - public void updateAction(boolean aboutToShow) { - setEnabled(aboutToShow && getTarget() != null && getTarget().getState() == TerminalState.CONNECTED); - setChecked(getTarget() != null && getTarget().isScrollLock()); - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/ToggleCommandFieldAction.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/ToggleCommandFieldAction.java deleted file mode 100644 index 13efde8f3b9..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/actions/ToggleCommandFieldAction.java +++ /dev/null @@ -1,83 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.actions; - -import org.eclipse.jface.action.IAction; -import org.eclipse.swt.custom.CTabItem; -import org.eclipse.tm.internal.terminal.control.ITerminalViewControl; -import org.eclipse.tm.internal.terminal.control.actions.AbstractTerminalAction; -import org.eclipse.tm.internal.terminal.provisional.api.TerminalState; -import org.eclipse.tm.terminal.view.ui.activator.UIPlugin; -import org.eclipse.tm.terminal.view.ui.interfaces.ITerminalsView; -import org.eclipse.tm.terminal.view.ui.interfaces.ImageConsts; -import org.eclipse.tm.terminal.view.ui.nls.Messages; -import org.eclipse.tm.terminal.view.ui.tabs.TabCommandFieldHandler; -import org.eclipse.tm.terminal.view.ui.tabs.TabFolderManager; - -/** - * Toggle command input field. - */ -public class ToggleCommandFieldAction extends AbstractTerminalAction { - private ITerminalsView view = null; - - /** - * Constructor. - */ - public ToggleCommandFieldAction(ITerminalsView view) { - super(null, ToggleCommandFieldAction.class.getName(), IAction.AS_CHECK_BOX); - - this.view = view; - setupAction(Messages.ToggleCommandFieldAction_menu, Messages.ToggleCommandFieldAction_toolTip, - UIPlugin.getImageDescriptor(ImageConsts.ACTION_ToggleCommandField_Hover), - UIPlugin.getImageDescriptor(ImageConsts.ACTION_ToggleCommandField_Enabled), - UIPlugin.getImageDescriptor(ImageConsts.ACTION_ToggleCommandField_Disabled), true); - - TabCommandFieldHandler handler = getCommandFieldHandler(); - setChecked(handler != null && handler.hasCommandInputField()); - } - - @Override - public void run() { - TabCommandFieldHandler handler = getCommandFieldHandler(); - if (handler != null) { - handler.setCommandInputField(!handler.hasCommandInputField()); - } - setChecked(handler != null && handler.hasCommandInputField()); - } - - @Override - public void updateAction(boolean aboutToShow) { - TabCommandFieldHandler handler = getCommandFieldHandler(); - ITerminalViewControl target = getTarget(); - setEnabled(aboutToShow && handler != null && target != null && target.getState() == TerminalState.CONNECTED); - setChecked(handler != null && handler.hasCommandInputField()); - } - - /** - * Returns the command input field handler for the active tab. - * - * @return The command input field handler or null. - */ - protected TabCommandFieldHandler getCommandFieldHandler() { - TabCommandFieldHandler handler = null; - // Get the active tab item from the tab folder manager - TabFolderManager manager = view.getAdapter(TabFolderManager.class); - if (manager != null) { - // If we have the active tab item, we can get the active terminal control - CTabItem activeTabItem = manager.getActiveTabItem(); - if (activeTabItem != null && !activeTabItem.isDisposed()) { - handler = manager.getTabCommandFieldHandler(activeTabItem); - } - } - return handler; - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/activator/UIPlugin.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/activator/UIPlugin.java deleted file mode 100644 index 0fb148e3a6a..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/activator/UIPlugin.java +++ /dev/null @@ -1,276 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - * Max Weninger (Wind River) - [361363] [TERMINALS] Implement "Pin&Clone" for the "Terminals" view - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.activator; - -import java.net.URL; -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Platform; -import org.eclipse.core.runtime.Status; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.resource.ImageRegistry; -import org.eclipse.swt.custom.CTabFolder; -import org.eclipse.swt.custom.CTabItem; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.widgets.Display; -import org.eclipse.tm.internal.terminal.control.ITerminalViewControl; -import org.eclipse.tm.internal.terminal.provisional.api.TerminalState; -import org.eclipse.tm.terminal.view.core.preferences.ScopedEclipsePreferences; -import org.eclipse.tm.terminal.view.core.tracing.TraceHandler; -import org.eclipse.tm.terminal.view.ui.interfaces.ImageConsts; -import org.eclipse.tm.terminal.view.ui.listeners.WorkbenchWindowListener; -import org.eclipse.tm.terminal.view.ui.view.TerminalsView; -import org.eclipse.tm.terminal.view.ui.view.TerminalsViewMementoHandler; -import org.eclipse.ui.IViewPart; -import org.eclipse.ui.IViewReference; -import org.eclipse.ui.IWindowListener; -import org.eclipse.ui.IWorkbench; -import org.eclipse.ui.IWorkbenchListener; -import org.eclipse.ui.IWorkbenchWindow; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.plugin.AbstractUIPlugin; -import org.osgi.framework.Bundle; -import org.osgi.framework.BundleContext; - -/** - * The activator class controls the plug-in life cycle - */ -public class UIPlugin extends AbstractUIPlugin { - // The shared instance - private static UIPlugin plugin; - // The scoped preferences instance - private static volatile ScopedEclipsePreferences scopedPreferences; - // The trace handler instance - private static volatile TraceHandler traceHandler; - // The workbench listener instance - private IWorkbenchListener listener; - // The global window listener instance - private IWindowListener windowListener; - - /** - * The constructor - */ - public UIPlugin() { - } - - /** - * Returns the shared instance - * - * @return the shared instance - */ - public static UIPlugin getDefault() { - return plugin; - } - - /** - * Convenience method which returns the unique identifier of this plug-in. - */ - public static String getUniqueIdentifier() { - if (getDefault() != null && getDefault().getBundle() != null) { - return getDefault().getBundle().getSymbolicName(); - } - return "org.eclipse.tm.terminal.view.ui"; //$NON-NLS-1$ - } - - /** - * Return the scoped preferences for this plug-in. - */ - public static ScopedEclipsePreferences getScopedPreferences() { - if (scopedPreferences == null) { - scopedPreferences = new ScopedEclipsePreferences(getUniqueIdentifier()); - } - return scopedPreferences; - } - - /** - * Returns the bundles trace handler. - * - * @return The bundles trace handler. - */ - public static TraceHandler getTraceHandler() { - if (traceHandler == null) { - traceHandler = new TraceHandler(getUniqueIdentifier()); - } - return traceHandler; - } - - @Override - public void start(BundleContext context) throws Exception { - super.start(context); - plugin = this; - - // Create and register the workbench listener instance - listener = new IWorkbenchListener() { - - @Override - public boolean preShutdown(IWorkbench workbench, boolean forced) { - if (workbench != null && workbench.getActiveWorkbenchWindow() != null - && workbench.getActiveWorkbenchWindow().getActivePage() != null) { - // Find all "Terminal" views - IViewReference[] refs = workbench.getActiveWorkbenchWindow().getActivePage().getViewReferences(); - for (IViewReference ref : refs) { - IViewPart part = ref.getView(false); - if (part instanceof TerminalsView) { - /* - * The terminal tabs to save to the views memento on shutdown can - * be determined only _before_ the saveState(memento) method of the - * view is called. Within saveState, it is already to late and the - * terminals might be in CLOSED state already. This depends on the - * terminal type and the corresponding connector implementation. - * - * To be safe, we determine the still opened terminals on shutdown - * separately here in the preShutdown. - */ - final List saveables = new ArrayList<>(); - - // Get the tab folder - CTabFolder tabFolder = ((TerminalsView) part).getAdapter(CTabFolder.class); - if (tabFolder != null && !tabFolder.isDisposed()) { - // Get the list of tab items - CTabItem[] items = tabFolder.getItems(); - // Loop the tab items and find the still connected ones - for (CTabItem item : items) { - // Ignore disposed items - if (item.isDisposed()) - continue; - // Get the terminal view control - ITerminalViewControl terminal = (ITerminalViewControl) item.getData(); - if (terminal == null || terminal.getState() != TerminalState.CONNECTED) { - continue; - } - // Still connected -> Add to the list - saveables.add(item); - } - } - - // Push the determined saveable items to the memento handler - TerminalsViewMementoHandler mementoHandler = ((TerminalsView) part) - .getAdapter(TerminalsViewMementoHandler.class); - if (mementoHandler != null) - mementoHandler.setSaveables(saveables); - } - } - } - - return true; - } - - @Override - public void postShutdown(IWorkbench workbench) { - } - }; - PlatformUI.getWorkbench().addWorkbenchListener(listener); - - if (windowListener == null && PlatformUI.getWorkbench() != null) { - windowListener = new WorkbenchWindowListener(); - PlatformUI.getWorkbench().addWindowListener(windowListener); - activateContexts(); - } - } - - void activateContexts() { - if (Display.getCurrent() != null) { - IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); - if (window != null && windowListener != null) - windowListener.windowOpened(window); - } else { - PlatformUI.getWorkbench().getDisplay().asyncExec(() -> activateContexts()); - } - } - - @Override - public void stop(BundleContext context) throws Exception { - if (windowListener != null && PlatformUI.getWorkbench() != null) { - PlatformUI.getWorkbench().removeWindowListener(windowListener); - windowListener = null; - } - - plugin = null; - scopedPreferences = null; - traceHandler = null; - if (listener != null) { - PlatformUI.getWorkbench().removeWorkbenchListener(listener); - listener = null; - } - super.stop(context); - } - - @Override - protected void initializeImageRegistry(ImageRegistry registry) { - Bundle bundle = getBundle(); - URL url = bundle.getEntry(ImageConsts.IMAGE_DIR_ROOT + ImageConsts.IMAGE_DIR_EVIEW + "console_view.png"); //$NON-NLS-1$ - registry.put(ImageConsts.VIEW_Terminals, ImageDescriptor.createFromURL(url)); - - url = bundle.getEntry(ImageConsts.IMAGE_DIR_ROOT + ImageConsts.IMAGE_DIR_CLCL + "lock_co.png"); //$NON-NLS-1$ - registry.put(ImageConsts.ACTION_ScrollLock_Hover, ImageDescriptor.createFromURL(url)); - url = bundle.getEntry(ImageConsts.IMAGE_DIR_ROOT + ImageConsts.IMAGE_DIR_ELCL + "lock_co.png"); //$NON-NLS-1$ - registry.put(ImageConsts.ACTION_ScrollLock_Enabled, ImageDescriptor.createFromURL(url)); - url = bundle.getEntry(ImageConsts.IMAGE_DIR_ROOT + ImageConsts.IMAGE_DIR_DLCL + "lock_co.png"); //$NON-NLS-1$ - registry.put(ImageConsts.ACTION_ScrollLock_Disabled, ImageDescriptor.createFromURL(url)); - - url = bundle.getEntry(ImageConsts.IMAGE_DIR_ROOT + ImageConsts.IMAGE_DIR_CLCL + "command_input_field.gif"); //$NON-NLS-1$ - registry.put(ImageConsts.ACTION_ToggleCommandField_Hover, ImageDescriptor.createFromURL(url)); - url = bundle.getEntry(ImageConsts.IMAGE_DIR_ROOT + ImageConsts.IMAGE_DIR_ELCL + "command_input_field.gif"); //$NON-NLS-1$ - registry.put(ImageConsts.ACTION_ToggleCommandField_Enabled, ImageDescriptor.createFromURL(url)); - url = bundle.getEntry(ImageConsts.IMAGE_DIR_ROOT + ImageConsts.IMAGE_DIR_DLCL + "command_input_field.gif"); //$NON-NLS-1$ - registry.put(ImageConsts.ACTION_ToggleCommandField_Disabled, ImageDescriptor.createFromURL(url)); - - url = bundle.getEntry(ImageConsts.IMAGE_DIR_ROOT + ImageConsts.IMAGE_DIR_CLCL + "new_terminal_view.gif"); //$NON-NLS-1$ - registry.put(ImageConsts.ACTION_NewTerminalView_Hover, ImageDescriptor.createFromURL(url)); - url = bundle.getEntry(ImageConsts.IMAGE_DIR_ROOT + ImageConsts.IMAGE_DIR_ELCL + "new_terminal_view.gif"); //$NON-NLS-1$ - registry.put(ImageConsts.ACTION_NewTerminalView_Enabled, ImageDescriptor.createFromURL(url)); - url = bundle.getEntry(ImageConsts.IMAGE_DIR_ROOT + ImageConsts.IMAGE_DIR_DLCL + "new_terminal_view.gif"); //$NON-NLS-1$ - registry.put(ImageConsts.ACTION_NewTerminalView_Disabled, ImageDescriptor.createFromURL(url)); - } - - /** - * Loads the image registered under the specified key from the image - * registry and returns the Image object instance. - * - * @param key The key the image is registered with. - * @return The Image object instance or null. - */ - public static Image getImage(String key) { - return getDefault().getImageRegistry().get(key); - } - - /** - * Loads the image registered under the specified key from the image - * registry and returns the ImageDescriptor object instance. - * - * @param key The key the image is registered with. - * @return The ImageDescriptor object instance or null. - */ - public static ImageDescriptor getImageDescriptor(String key) { - return getDefault().getImageRegistry().getDescriptor(key); - } - - public static void log(String msg, Throwable e) { - log(new Status(IStatus.ERROR, getUniqueIdentifier(), IStatus.ERROR, msg, e)); - } - - public static void log(IStatus status) { - getDefault().getLog().log(status); - } - - public static boolean isOptionEnabled(String strOption) { - String strEnabled = Platform.getDebugOption(strOption); - if (strEnabled == null) - return false; - - return Boolean.parseBoolean(strEnabled); - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/controls/ConfigurationPanelControl.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/controls/ConfigurationPanelControl.java deleted file mode 100644 index e95b8dc05ba..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/controls/ConfigurationPanelControl.java +++ /dev/null @@ -1,413 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.controls; - -import java.util.HashMap; -import java.util.Hashtable; -import java.util.Map; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.jface.dialogs.IDialogSettings; -import org.eclipse.jface.dialogs.IMessageProvider; -import org.eclipse.swt.SWT; -import org.eclipse.swt.custom.StackLayout; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Group; -import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanel; -import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer; -import org.eclipse.tm.terminal.view.ui.panels.AbstractConfigurationPanel; - -/** - * Base control to deal with wizard or property page controls - * which should share the same UI space. - */ -public class ConfigurationPanelControl implements IConfigurationPanelContainer, IMessageProvider { - private final Map configurationPanels = new Hashtable<>(); - - private String message = null; - private int messageType = IMessageProvider.NONE; - - private boolean isGroup; - - private Composite panel; - private StackLayout panelLayout; - - private String activeConfigurationPanelKey = null; - private IConfigurationPanel activeConfigurationPanel = null; - - private final AbstractConfigurationPanel EMPTY_PANEL; - - /** - * An empty configuration panel implementation. - */ - private static final class EmptySettingsPanel extends AbstractConfigurationPanel { - - /** - * Constructor. - * - * @param container The configuration panel container or null. - */ - public EmptySettingsPanel(IConfigurationPanelContainer container) { - super(container); - } - - @Override - public void setupPanel(Composite parent) { - Composite panel = new Composite(parent, SWT.NONE); - panel.setLayout(new GridLayout()); - panel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); - - panel.setBackground(parent.getBackground()); - - setControl(panel); - } - - @Override - public boolean isValid() { - return false; - } - } - - /** - * Cleanup all resources the control might have been created. - */ - public void dispose() { - EMPTY_PANEL.dispose(); - } - - /** - * Constructor. - */ - public ConfigurationPanelControl() { - EMPTY_PANEL = new EmptySettingsPanel(this); - clear(); - setPanelIsGroup(false); - } - - /** - * Sets if or if not the controls panel is a Group. - * - * @param isGroup True if the controls panel is a group, false otherwise. - */ - public void setPanelIsGroup(boolean isGroup) { - this.isGroup = isGroup; - } - - /** - * Returns if or if not the controls panel is a Group. - * - * @return True if the controls panel is a group, false otherwise. - */ - public boolean isPanelIsGroup() { - return isGroup; - } - - /** - * Returns the controls panel. - * - * @return The controls panel or null. - */ - public Composite getPanel() { - return panel; - } - - /** - * Returns the label text to set for the group (if the panel is a group). - * - * @return The label text to apply or null. - */ - public String getGroupLabel() { - return null; - } - - @Override - public void validate() { - } - - /** - * To be called from the embedding control to setup the controls UI elements. - * - * @param parent The parent control. Must not be null! - */ - public void setupPanel(Composite parent, String[] configurationPanelKeys) { - Assert.isNotNull(parent); - - if (isPanelIsGroup()) { - panel = new Group(parent, SWT.NONE); - if (getGroupLabel() != null) - ((Group) panel).setText(getGroupLabel()); - } else { - panel = new Composite(parent, SWT.NONE); - } - Assert.isNotNull(panel); - panel.setFont(parent.getFont()); - panel.setBackground(parent.getBackground()); - - panelLayout = new StackLayout(); - panel.setLayout(panelLayout); - - setupConfigurationPanels(panel, configurationPanelKeys); - EMPTY_PANEL.setupPanel(panel); - } - - /** - * Removes all configuration panels. - */ - public void clear() { - configurationPanels.clear(); - } - - /** - * Returns a unsorted list of all registered configuration panel id's. - * - * @return A list of registered configuration panel id's. - */ - public String[] getConfigurationPanelIds() { - return configurationPanels.keySet().toArray(new String[configurationPanels.keySet().size()]); - } - - /** - * Returns the configuration panel instance registered for the given configuration panel key. - * - * @param key The key to get the configuration panel for. Must not be null! - * @return The configuration panel instance or an empty configuration panel if the key is unknown. - */ - public IConfigurationPanel getConfigurationPanel(String key) { - IConfigurationPanel panel = key != null ? configurationPanels.get(key) : null; - return panel != null ? panel : EMPTY_PANEL; - } - - /** - * Returns if or if not the given configuration panel is equal to the - * empty configuration panel. - * - * @param panel The configuration panel or null. - * @return True if the configuration panel is equal to the empty configuration panel. - */ - public final boolean isEmptyConfigurationPanel(IConfigurationPanel panel) { - return EMPTY_PANEL == panel; - } - - /** - * Adds the given configuration panel under the given configuration panel key to the - * list of known panels. If the given configuration panel is null, any - * configuration panel stored under the given key is removed from the list of known panels. - * - * @param key The key to get the configuration panel for. Must not be null! - * @param panel The configuration panel instance or null. - */ - public void addConfigurationPanel(String key, IConfigurationPanel panel) { - if (key == null) - return; - if (panel != null) { - configurationPanels.put(key, panel); - } else { - configurationPanels.remove(key); - } - } - - /** - * Setup the configuration panels for being presented to the user. This method is called by the - * controls doSetupPanel(...) and initialize all possible configuration panels to show. - * The default implementation iterates over the given list of configuration panel keys and calls - * setupPanel(...) for each of them. - * - * @param parent The parent composite to use for the configuration panels. Must not be null! - * @param configurationPanelKeys The list of configuration panels to initialize. Might be null or empty! - */ - public void setupConfigurationPanels(Composite parent, String[] configurationPanelKeys) { - Assert.isNotNull(parent); - - if (configurationPanelKeys != null) { - for (String configurationPanelKey : configurationPanelKeys) { - IConfigurationPanel configPanel = getConfigurationPanel(configurationPanelKey); - Assert.isNotNull(configPanel); - configPanel.setupPanel(parent); - } - } - } - - /** - * Make the wizard configuration panel registered under the given configuration panel key the - * most top configuration panel. If no configuration panel is registered under the given key, - * nothing will happen. - * - * @param key The key to get the wizard configuration panel for. Must not be null! - */ - public void showConfigurationPanel(String key) { - String activeKey = getActiveConfigurationPanelKey(); - if (key != null && key.equals(activeKey) && activeConfigurationPanel != null) { - return; - } - IConfigurationPanel configPanel = getActiveConfigurationPanel(); - Map data = new HashMap<>(); - if (configPanel != null) - configPanel.extractData(data); - configPanel = getConfigurationPanel(key); - Assert.isNotNull(configPanel); - if (configPanel.getControl() != null) { - activeConfigurationPanel = configPanel; - activeConfigurationPanelKey = key; - panelLayout.topControl = configPanel.getControl(); - panel.layout(); - if (!data.isEmpty()) - configPanel.updateData(data); - configPanel.activate(); - } else { - activeConfigurationPanelKey = key; - } - } - - /** - * Returns the currently active configuration panel. - * - * @return The active configuration panel or null. - */ - public IConfigurationPanel getActiveConfigurationPanel() { - return activeConfigurationPanel; - } - - /** - * Returns the currently active configuration panel key. - * - * @return The active configuration panel key or null. - */ - public String getActiveConfigurationPanelKey() { - return activeConfigurationPanelKey; - } - - /** - * Returns the dialog settings to use to save and restore control specific - * widget values. - * - * @param settings The parent dialog settings. Must not be null. - * @return The dialog settings to use. - */ - public final IDialogSettings getDialogSettings(IDialogSettings settings) { - Assert.isNotNull(settings); - - // Store the settings of the control within it's own section. - String sectionName = this.getClass().getSimpleName(); - Assert.isNotNull(sectionName); - - IDialogSettings section = settings.getSection(sectionName); - if (section == null) { - section = settings.addNewSection(sectionName); - } - - return section; - } - - /** - * Restore the widget values from the dialog settings store to recreate the control history. - *

      - * Note: - * The control is saving the widget values into a section equal to the class name {@link Class#getName()}. - * After the sections has been created, the method calls doRestoreWidgetValues for restoring - * the single properties from the dialog settings. Subclasses may override doRestoreWidgetValues - * only to deal with the single properties only or restoreWidgetValues when to override the - * creation of the subsections. - * - * @param settings The dialog settings object instance to restore the widget values from. Must not be null! - * @param idPrefix The prefix to use for every dialog settings slot keys. If null, the dialog settings slot keys are not to prefix. - */ - public final void restoreWidgetValues(IDialogSettings settings, String idPrefix) { - Assert.isNotNull(settings); - - // now, call the hook for actually reading the single properties from the dialog settings. - doRestoreWidgetValues(getDialogSettings(settings), idPrefix); - } - - /** - * Hook to restore the widget values finally plain from the given dialog settings. This method should - * not fragment the given dialog settings any further. - * - * @param settings The dialog settings to restore the widget values from. Must not be null! - * @param idPrefix The prefix to use for every dialog settings slot keys. If null, the dialog settings slot keys are not to prefix. - */ - public void doRestoreWidgetValues(IDialogSettings settings, String idPrefix) { - Assert.isNotNull(settings); - - for (String panelKey : configurationPanels.keySet()) { - IConfigurationPanel configPanel = getConfigurationPanel(panelKey); - if (configPanel != null && !isEmptyConfigurationPanel(configPanel)) { - IDialogSettings configPanelSettings = settings.getSection(panelKey); - if (configPanelSettings == null) - configPanelSettings = settings.addNewSection(panelKey); - configPanel.doRestoreWidgetValues(configPanelSettings, idPrefix); - } - } - } - - /** - * Saves the widget values to the dialog settings store for remembering the history. The control might - * be embedded within multiple pages multiple times handling different properties. Because the single - * controls should not mix up the history, we create subsections within the given dialog settings if - * they do not already exist. After the sections has been created, the method calls doSaveWidgetValues - * for saving the single properties to the dialog settings. Subclasses may override doSaveWidgetValues - * only to deal with the single properties only or saveWidgetValues when to override the - * creation of the subsections. - * - * @param settings The dialog settings object instance to save the widget values to. Must not be null! - * @param idPrefix The prefix to use for every dialog settings slot keys. If null, the dialog settings slot keys are not to prefix. - */ - public final void saveWidgetValues(IDialogSettings settings, String idPrefix) { - Assert.isNotNull(settings); - - // now, call the hook for actually writing the single properties to the dialog settings. - doSaveWidgetValues(getDialogSettings(settings), idPrefix); - } - - /** - * Hook to save the widget values finally plain to the given dialog settings. This method should - * not fragment the given dialog settings any further. - * - * @param settings The dialog settings to save the widget values to. Must not be null! - * @param idPrefix The prefix to use for every dialog settings slot keys. If null, the dialog settings slot keys are not to prefix. - */ - public void doSaveWidgetValues(IDialogSettings settings, String idPrefix) { - Assert.isNotNull(settings); - - IConfigurationPanel configPanel = getActiveConfigurationPanel(); - if (configPanel != null && !isEmptyConfigurationPanel(configPanel)) { - String key = getActiveConfigurationPanelKey(); - IDialogSettings configPanelSettings = settings.getSection(key); - if (configPanelSettings == null) - configPanelSettings = settings.addNewSection(key); - configPanel.doSaveWidgetValues(configPanelSettings, idPrefix); - } - } - - @Override - public final String getMessage() { - return message; - } - - @Override - public final int getMessageType() { - return messageType; - } - - /** - * Set the message and the message type to display. - * - * @param message The message or null. - * @param messageType The message type or IMessageProvider.NONE. - */ - @Override - public final void setMessage(String message, int messageType) { - this.message = message; - this.messageType = messageType; - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/controls/NoteCompositeHelper.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/controls/NoteCompositeHelper.java deleted file mode 100644 index d66ffe8e44b..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/controls/NoteCompositeHelper.java +++ /dev/null @@ -1,164 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.controls; - -import org.eclipse.jface.dialogs.Dialog; -import org.eclipse.jface.resource.JFaceResources; -import org.eclipse.jface.util.IPropertyChangeListener; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Font; -import org.eclipse.swt.graphics.GC; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Label; -import org.eclipse.tm.terminal.view.ui.nls.Messages; - -/** - * A helper class to create a composite with a highlighted note - * entry and a message text. - */ -public class NoteCompositeHelper { - - /** - * The common label text to show on a note. Defaults to "Note:". - */ - public static final String NOTE_LABEL = Messages.NoteCompositeHelper_note_label; - - private static class NoteComposite extends Composite { - - public NoteComposite(Composite parent, int style) { - super(parent, style); - } - - @Override - public void setEnabled(boolean enabled) { - super.setEnabled(enabled); - for (Control child : getChildren()) { - child.setEnabled(enabled); - } - } - } - - /** - * Creates a composite with a highlighted Note entry and a message text. - * This is designed to take up the full width of the page. - * - * @see PreferencePage#createNoteComposite, this is a plain copy of that! - * @param font - * the font to use - * @param composite - * the parent composite - * @param title - * the title of the note - * @param message - * the message for the note - * - * @return the composite for the note - */ - public static Composite createNoteComposite(Font font, Composite composite, String title, String message) { - return createNoteComposite(font, composite, title, message, SWT.DEFAULT); - } - - /** - * Creates a composite with a highlighted Note entry and a message text. - * This is designed to take up the full width of the page. - * - * @see PreferencePage#createNoteComposite, this is a plain copy of that! - * @param font - * the font to use - * @param composite - * the parent composite - * @param title - * the title of the note - * @param message - * the message for the note - * @param minCharsPerLine - * the minimum number of characters per line. Defaults to '65' if less than '20'. - * - * @return the composite for the note - */ - public static Composite createNoteComposite(Font font, Composite composite, String title, String message, - int minCharsPerLine) { - final GC gc = new GC(composite); - gc.setFont(font); - - Composite messageComposite = new NoteComposite(composite, SWT.NONE); - - GridLayout messageLayout = new GridLayout(); - messageLayout.numColumns = 2; - messageLayout.marginWidth = 0; - messageLayout.marginHeight = 0; - messageComposite.setLayout(messageLayout); - - GridData layoutData = new GridData(GridData.HORIZONTAL_ALIGN_FILL); - if (composite.getLayout() instanceof GridLayout) { - layoutData.horizontalSpan = ((GridLayout) composite.getLayout()).numColumns; - } - messageComposite.setLayoutData(layoutData); - messageComposite.setFont(font); - - final Label noteLabel = new Label(messageComposite, SWT.BOLD); - noteLabel.setText(title); - noteLabel.setFont(JFaceResources.getFontRegistry().getBold(JFaceResources.DEFAULT_FONT)); - noteLabel.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); - - final IPropertyChangeListener fontListener = event -> { - // Note: This is actually wrong but the same as in platforms - // PreferencePage - if (JFaceResources.BANNER_FONT.equals(event.getProperty())) { - noteLabel.setFont(JFaceResources.getFont(JFaceResources.BANNER_FONT)); - } - }; - JFaceResources.getFontRegistry().addListener(fontListener); - noteLabel.addDisposeListener(event -> JFaceResources.getFontRegistry().removeListener(fontListener)); - - Label messageLabel = new Label(messageComposite, SWT.WRAP); - messageLabel.setText(message); - messageLabel.setFont(font); - - /** - * Set the controls style to FILL_HORIZONTAL making it multi-line if - * needed - */ - layoutData = new GridData(GridData.FILL_HORIZONTAL); - layoutData.widthHint = Dialog.convertWidthInCharsToPixels(gc.getFontMetrics(), - minCharsPerLine >= 20 ? minCharsPerLine : 65); - messageLabel.setLayoutData(layoutData); - - gc.dispose(); - - return messageComposite; - } - - /** - * change the text of the second label - * - * @param messageComposite - * the NoteComposite that gets returned from createNoteComposite - * @param msg - * the new text - */ - public static void setMessage(Composite messageComposite, String msg) { - if (messageComposite instanceof NoteComposite) { - Control[] children = messageComposite.getChildren(); - if (children.length == 2) { - Control c = children[1]; - if (c instanceof Label) { - ((Label) c).setText(msg); - messageComposite.pack(); - } - } - } - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/help/IContextHelpIds.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/help/IContextHelpIds.java deleted file mode 100644 index 0fb521ca456..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/help/IContextHelpIds.java +++ /dev/null @@ -1,45 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - * Dirk Fauth - Bug 460496 - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.help; - -import org.eclipse.tm.terminal.view.ui.activator.UIPlugin; - -/** - * UI Context help id definitions. - * - * @noextend This interface is not intended to be extended by clients. - * @noimplement This interface is not intended to be implemented by clients. - */ -public interface IContextHelpIds { - - /** - * UI plug-in common context help id prefix. - */ - public final static String PREFIX = UIPlugin.getUniqueIdentifier() + "."; //$NON-NLS-1$ - - /** - * Launch terminal settings dialog. - */ - public final static String LAUNCH_TERMINAL_SETTINGS_DIALOG = PREFIX + "LaunchTerminalSettingsDialog"; //$NON-NLS-1$ - - /** - * Terminal control encoding selection dialog. - */ - public final static String ENCODING_SELECTION_DIALOG = PREFIX + "EncodingSelectionDialog"; //$NON-NLS-1$ - - /** - * External executables dialog. - * @since 4.1 - */ - public final static String EXTERNAL_EXECUTABLES_DIALOG = PREFIX + "ExternalExecutablesDialog"; //$NON-NLS-1$ -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IConfigurationPanel.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IConfigurationPanel.java deleted file mode 100644 index 23859039434..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IConfigurationPanel.java +++ /dev/null @@ -1,146 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.interfaces; - -import java.util.Map; - -import org.eclipse.jface.dialogs.IDialogSettings; -import org.eclipse.jface.dialogs.IMessageProvider; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.tm.terminal.view.ui.panels.AbstractConfigurationPanel; - -/** - * Terminal launcher configuration panel. - * - * @noextend This interface is not intended to be extended by clients. - * @noimplement This interface is not intended to be implemented by clients. - * Clients should extend {@link AbstractConfigurationPanel} instead. - */ -public interface IConfigurationPanel extends IMessageProvider { - - /** - * Returns the configuration panel container. - * - * @return The configuration panel container or null. - */ - public IConfigurationPanelContainer getContainer(); - - /** - * Creates the terminal launcher configuration panel UI elements within the - * given parent composite. Terminal launcher configuration panels should always - * create another composite within the given composite, which is the panel top - * control. The top control is queried later from the stack layout to show the - * different panels if the selected terminal launcher changed. - * - * @param parent The parent composite to create the UI elements in. Must not be null. - */ - public void setupPanel(Composite parent); - - /** - * Cleanup all resources the wizard configuration panel might have been created. - */ - public void dispose(); - - /** - * Returns the terminal launcher configuration panels top control, typically a - * composite control. This control is requested every time the stack layout is - * required to set a new top control because the selected terminal launcher changed. - * - * @return The top control or null if the configuration panel has been not setup yet. - */ - public Composite getControl(); - - /** - * Validates the control and sets the message text and type so the parent - * page or control is able to display validation result informations. - * The default implementation of this method does nothing. - * - * @return Result of validation. - */ - public boolean isValid(); - - /** - * Restore the widget values plain from the given dialog settings. This method should - * not fragment the given dialog settings any further. - * - * @param settings The dialog settings to restore the widget values from. Must not be null! - * @param idPrefix The prefix to use for every dialog settings slot keys. If null, the dialog settings slot keys are not to prefix. - */ - public void doRestoreWidgetValues(IDialogSettings settings, String idPrefix); - - /** - * Save the widget values plain to the given dialog settings. This method should - * not fragment the given dialog settings any further. - * - * @param settings The dialog settings to save the widget values to. Must not be null! - * @param idPrefix The prefix to use for every dialog settings slot keys. If null, the dialog settings slot keys are not to prefix. - */ - public void doSaveWidgetValues(IDialogSettings settings, String idPrefix); - - /** - * Enables or disables all UI elements belonging to the wizard configuration panel. - * - * @param enabled True to enable the UI elements, false otherwise. - */ - public void setEnabled(boolean enabled); - - /** - * Called when the panel gets the active panel. - */ - public void activate(); - - /** - * Initialize the widgets based of the data from the given map. - *

      - * This method may called multiple times during the lifetime of the panel and the given - * map might be even null. - * - * @param data The map or null. - */ - public void setupData(Map data); - - /** - * Extract the data from the widgets and write it back to the given map. - *

      - * This method may called multiple times during the lifetime of the panel and the given - * map might be even null. - * - * @param data The map or null. - */ - public void extractData(Map data); - - /** - * Update the data from the given properties container which contains the current - * working data. - *

      - * This method may called multiple times during the lifetime of the panel and the given - * map might be even null. - * - * @param data The map or null. - */ - public void updateData(Map data); - - /** - * Set the selection to the terminal launcher configuration panel. - * - * @param selection The selection or null. - */ - public void setSelection(ISelection selection); - - /** - * Returns the selection associated with the terminal launcher configuration panel. - * - * @return The selection or null. - */ - public ISelection getSelection(); -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IConfigurationPanelContainer.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IConfigurationPanelContainer.java deleted file mode 100644 index c6f4e13319f..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IConfigurationPanelContainer.java +++ /dev/null @@ -1,38 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.interfaces; - -/** - * A container to deal with configuration panels. - * - * @noextend This interface is not intended to be extended by clients. - * @noimplement This interface is not intended to be implemented by clients. - */ -public interface IConfigurationPanelContainer { - - /** - * Validates the container status. - *

      - * If necessary, set the corresponding messages and message types to signal when some sub - * elements of the container needs user attention. - */ - public void validate(); - - /** - * Set the message and the message type to display. - * - * @param message The message or null. - * @param messageType The message type or IMessageProvider.NONE. - */ - public void setMessage(String message, int messageType); - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IExternalExecutablesProperties.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IExternalExecutablesProperties.java deleted file mode 100644 index 3b4507e7469..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IExternalExecutablesProperties.java +++ /dev/null @@ -1,47 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2014, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - * Dirk Fauth - [460496] Moved from o.e.tm.t.connector.local.showin.interfaces - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.interfaces; - -/** - * External executables data property names. - * @noextend This interface is not intended to be extended by clients. - * @noimplement This interface is not intended to be implemented by clients. - * @since 4.1 - */ -public interface IExternalExecutablesProperties { - - /** - * The name/label of the external executable. - */ - public final String PROP_NAME = "Name"; //$NON-NLS-1$ - - /** - * The absolute path of the external executable. - */ - public final String PROP_PATH = "Path"; //$NON-NLS-1$ - - /** - * The arguments to pass to the external executable. - */ - public final String PROP_ARGS = "Args"; //$NON-NLS-1$ - - /** - * The absolute path to the icon representing the external executable. - */ - public final String PROP_ICON = "Icon"; //$NON-NLS-1$ - - /** - * If set, backslashes are translated to forward slashes on paste. - */ - public final String PROP_TRANSLATE = "Translate"; //$NON-NLS-1$ -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/ILauncherDelegate.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/ILauncherDelegate.java deleted file mode 100644 index f6d23cc366e..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/ILauncherDelegate.java +++ /dev/null @@ -1,99 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.interfaces; - -import java.util.Map; - -import org.eclipse.core.expressions.Expression; -import org.eclipse.core.runtime.IAdaptable; -import org.eclipse.core.runtime.IExecutableExtension; -import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector; -import org.eclipse.tm.terminal.view.core.interfaces.ITerminalService; -import org.eclipse.tm.terminal.view.ui.launcher.AbstractLauncherDelegate; - -/** - * Terminal launcher delegate. - * - * @noextend This interface is not intended to be extended by clients. - * @noimplement This interface is not intended to be implemented by clients. - * Clients should extend {@link AbstractLauncherDelegate} instead. - */ -public interface ILauncherDelegate extends IExecutableExtension, IAdaptable { - - /** - * Returns the unique id of the launcher delegate. The returned - * id must be never null or an empty string. - * - * @return The unique id. - */ - public String getId(); - - /** - * Returns the label or UI name of the launcher delegate. - * - * @return The label or UI name. An empty string if not set. - */ - public String getLabel(); - - /** - * Returns if or if not the launcher delegate is hidden for the user. - * - * @return True if the launcher delegate is hidden, false otherwise. - */ - public boolean isHidden(); - - /** - * Returns the enablement expression. - * - * @return The enablement expression or null. - */ - public Expression getEnablement(); - - /** - * Returns if or if not the user needs to set configuration details for this launcher to work. - * The settings to configure are provided to the user through the configuration panel returned - * by {@link #getPanel(BaseDialogPageControl)}. - * - * @return True if a user configuration is required, false otherwise. - */ - public boolean needsUserConfiguration(); - - /** - * Returns the configuration panel instance to present to the user. The instance must be always - * the same on subsequent calls until disposed. - *

      - * The method may return null if the launcher does not provide any user - * configurable settings. In this case, {@link #needsUserConfiguration()} should return - * false. - * - * @param container The configuration panel container or null. - * @return The configuration panel instance or null - */ - public IConfigurationPanel getPanel(IConfigurationPanelContainer container); - - /** - * Execute the terminal launch. - * - * @param properties The properties. Must not be null. - * @param done The callback or null. - */ - public void execute(Map properties, ITerminalService.Done done); - - /** - * Creates the terminal connector for this launcher delegate based on - * the given properties. - * - * @param properties The terminal properties. Must not be null. - * @return The terminal connector or null. - */ - public ITerminalConnector createTerminalConnector(Map properties); -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IMementoHandler.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IMementoHandler.java deleted file mode 100644 index c1f5e9bf26d..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IMementoHandler.java +++ /dev/null @@ -1,38 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.interfaces; - -import java.util.Map; - -import org.eclipse.ui.IMemento; - -/** - * Terminal properties memento handler. - */ -public interface IMementoHandler { - - /** - * Saves the terminal properties in the given memento. - * - * @param memento The memento. Must not be null. - * @param properties The map containing the terminal properties to save. Must not be null. - */ - public void saveState(IMemento memento, Map properties); - - /** - * Restore the terminal properties from the given memento. - * - * @param memento The memento. Must not be null. - * @param properties The map receiving the restored terminal properties. Must not be null. - */ - public void restoreState(IMemento memento, Map properties); -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IPreferenceKeys.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IPreferenceKeys.java deleted file mode 100644 index b37439f813f..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IPreferenceKeys.java +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - * Dirk Fauth - Bug 460496 - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.interfaces; - -/** - * Terminal plug-in preference key definitions. - * - * @noextend This interface is not intended to be extended by clients. - * @noimplement This interface is not intended to be implemented by clients. - */ -public interface IPreferenceKeys { - /** - * Preference keys family prefix. - */ - public final String PREF_TERMINAL = "terminals"; //$NON-NLS-1$ - - /** - * Preference key: Remove terminated terminals when a new terminal is created. - */ - public final String PREF_REMOVE_TERMINATED_TERMINALS = PREF_TERMINAL + ".removeTerminatedTerminals"; //$NON-NLS-1$ - - // showin preferences - - /** - * Preference key: Local terminal initial working directory. - * @since 4.1 - */ - public final String PREF_LOCAL_TERMINAL_INITIAL_CWD = PREF_TERMINAL + ".localTerminalInitialCwd"; //$NON-NLS-1$ - - /** - * Preference value: Local terminal initial working directory is "User home" - * @since 4.1 - */ - public final String PREF_INITIAL_CWD_USER_HOME = "userhome"; //$NON-NLS-1$ - - /** - * Preference value: Local terminal initial working directory is "Eclipse home" - * @since 4.1 - */ - public final String PREF_INITIAL_CWD_ECLIPSE_HOME = "eclipsehome"; //$NON-NLS-1$ - - /** - * Preference value: Local terminal initial working directory is "Eclipse workspace" - * @since 4.1 - */ - public final String PREF_INITIAL_CWD_ECLIPSE_WS = "eclipsews"; //$NON-NLS-1$ - - /** - * Preference key: Local terminal default shell command on Unix hosts. - * @since 4.1 - */ - public final String PREF_LOCAL_TERMINAL_DEFAULT_SHELL_UNIX = PREF_TERMINAL + ".localTerminalDefaultShellUnix"; //$NON-NLS-1$ - - /** - * Preference key: Local terminal default shell command arguments on Unix hosts. - * @since 4.1 - */ - public final String PREF_LOCAL_TERMINAL_DEFAULT_SHELL_UNIX_ARGS = PREF_TERMINAL - + ".localTerminalDefaultShellUnixArgs"; //$NON-NLS-1$ -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/ITerminalsView.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/ITerminalsView.java deleted file mode 100644 index 4d6f6750490..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/ITerminalsView.java +++ /dev/null @@ -1,42 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - * Max Weninger (Wind River) - [361363] [TERMINALS] Implement "Pin&Clone" for the "Terminals" view - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.interfaces; - -import org.eclipse.ui.IViewPart; - -/** - * Terminal view public interface. - * - * @noextend This interface is not intended to be extended by clients. - * @noimplement This interface is not intended to be implemented by clients. - */ -public interface ITerminalsView extends IViewPart { - - /** - * Switch to the empty page control. - */ - public void switchToEmptyPageControl(); - - /** - * Switch to the tab folder control. - */ - public void switchToTabFolderControl(); - - /** - * Returns the context help id associated with the terminal - * console view instance. - * - * @return The context help id or null if none is associated. - */ - public String getContextHelpId(); -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IUIConstants.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IUIConstants.java deleted file mode 100644 index e18dcbef38a..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IUIConstants.java +++ /dev/null @@ -1,26 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.interfaces; - -/** - * Terminal common UI constants. - * - * @noextend This interface is not intended to be extended by clients. - * @noimplement This interface is not intended to be implemented by clients. - */ -public interface IUIConstants { - /** - * The view id of the terminals view. - */ - public static final String ID = "org.eclipse.tm.terminal.view.ui.TerminalsView"; //$NON-NLS-1$ - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/ImageConsts.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/ImageConsts.java deleted file mode 100644 index 352228af88b..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/ImageConsts.java +++ /dev/null @@ -1,104 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - * Max Weninger (Wind River) - [361363] [TERMINALS] Implement "Pin&Clone" for the "Terminals" view - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.interfaces; - -/** - * Image registry constants. - * - * @noextend This interface is not intended to be extended by clients. - * @noimplement This interface is not intended to be implemented by clients. - */ -public interface ImageConsts { - /** - * The root directory where to load the images from, relative to - * the bundle directory. - */ - public final static String IMAGE_DIR_ROOT = "icons/"; //$NON-NLS-1$ - - /** - * The directory where to load colored local toolbar images from, - * relative to the image root directory. - */ - public final static String IMAGE_DIR_CLCL = "clcl16/"; //$NON-NLS-1$ - - /** - * The directory where to load disabled local toolbar images from, - * relative to the image root directory. - */ - public final static String IMAGE_DIR_DLCL = "dlcl16/"; //$NON-NLS-1$ - - /** - * The directory where to load enabled local toolbar images from, - * relative to the image root directory. - */ - public final static String IMAGE_DIR_ELCL = "elcl16/"; //$NON-NLS-1$ - - /** - * The directory where to load view related images from, relative to - * the image root directory. - */ - public final static String IMAGE_DIR_EVIEW = "eview16/"; //$NON-NLS-1$ - - /** - * The key to access the terminals console view image. - */ - public static final String VIEW_Terminals = "TerminalsView"; //$NON-NLS-1$ - - /** - * The key to access the scroll lock action image (enabled). - */ - public static final String ACTION_ScrollLock_Enabled = "ScrollLockAction_enabled"; //$NON-NLS-1$ - - /** - * The key to access the scroll lock action image (disabled). - */ - public static final String ACTION_ScrollLock_Disabled = "ScrollLockAction_disabled"; //$NON-NLS-1$ - - /** - * The key to access the scroll lock action image (hover). - */ - public static final String ACTION_ScrollLock_Hover = "ScrollLockAction_hover"; //$NON-NLS-1$ - - /** - * The key to access the new terminal view action image (enabled). - * @since 4.1 - */ - public static final String ACTION_NewTerminalView_Enabled = "NewTerminalViewAction_enabled"; //$NON-NLS-1$ - - /** - * The key to access the new terminal view action image (disabled). - * @since 4.1 - */ - public static final String ACTION_NewTerminalView_Disabled = "NewTerminalViewAction_disabled"; //$NON-NLS-1$ - - /** - * The key to access the new terminal view action image (hover). - * @since 4.1 - */ - public static final String ACTION_NewTerminalView_Hover = "NewTerminalViewAction_hover"; //$NON-NLS-1$ - - /** - * The key to access the toggle command field action image (enabled). - */ - public static final String ACTION_ToggleCommandField_Enabled = "ToggleCommandField_enabled"; //$NON-NLS-1$ - - /** - * The key to access the toggle command field action image (disabled). - */ - public static final String ACTION_ToggleCommandField_Disabled = "ToggleCommandField_disabled"; //$NON-NLS-1$ - - /** - * The key to access the toggle command field action image (hover). - */ - public static final String ACTION_ToggleCommandField_Hover = "ToggleCommandField_hover"; //$NON-NLS-1$ -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/tracing/ITraceIds.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/tracing/ITraceIds.java deleted file mode 100644 index d4062007595..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/tracing/ITraceIds.java +++ /dev/null @@ -1,31 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.interfaces.tracing; - -/** - * Core plug-in trace slot identifiers. - * - * @noextend This interface is not intended to be extended by clients. - * @noimplement This interface is not intended to be implemented by clients. - */ -public interface ITraceIds { - - /** - * If activated, tracing information about the terminals output stream monitor is printed out. - */ - public static final String TRACE_OUTPUT_STREAM_MONITOR = "trace/outputStreamMonitor"; //$NON-NLS-1$ - - /** - * If activated, tracing information about the launch terminal command handler is printed out. - */ - public static final String TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER = "trace/launchTerminalCommandHandler"; //$NON-NLS-1$ -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/ExternalExecutablesState.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/ExternalExecutablesState.java deleted file mode 100644 index 3cec5ce117f..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/ExternalExecutablesState.java +++ /dev/null @@ -1,55 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2016, 2018 Dirk Fauth and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Dirk Fauth - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.internal; - -import java.util.HashMap; -import java.util.Map; - -import org.eclipse.tm.terminal.view.ui.local.showin.ExternalExecutablesManager; -import org.eclipse.ui.AbstractSourceProvider; -import org.eclipse.ui.ISources; - -/** - * SourceProvider that provides a state to determine whether external executables are configured or not. - */ -public class ExternalExecutablesState extends AbstractSourceProvider { - public final static String CONFIGURED_STATE = "org.eclipse.tm.terminal.external.executable.configured"; //$NON-NLS-1$ - private boolean enabled; - - public ExternalExecutablesState() { - this.enabled = ExternalExecutablesManager.hasEntries(); - } - - @Override - public String[] getProvidedSourceNames() { - return new String[] { CONFIGURED_STATE }; - } - - @Override - public Map getCurrentState() { - Map map = new HashMap<>(1); - map.put(CONFIGURED_STATE, Boolean.valueOf(enabled).toString().toUpperCase()); - return map; - } - - public void enable() { - fireSourceChanged(ISources.WORKBENCH, CONFIGURED_STATE, "TRUE"); //$NON-NLS-1$ - } - - public void disable() { - fireSourceChanged(ISources.WORKBENCH, CONFIGURED_STATE, "FALSE"); //$NON-NLS-1$ - } - - @Override - public void dispose() { - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/PropertyTester.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/PropertyTester.java deleted file mode 100644 index 0b5052bccda..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/PropertyTester.java +++ /dev/null @@ -1,57 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.internal; - -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.swt.custom.CTabItem; -import org.eclipse.tm.internal.terminal.control.ITerminalViewControl; -import org.eclipse.tm.internal.terminal.provisional.api.TerminalState; -import org.eclipse.tm.terminal.view.ui.interfaces.ITerminalsView; -import org.eclipse.tm.terminal.view.ui.launcher.LauncherDelegateManager; -import org.eclipse.tm.terminal.view.ui.tabs.TabFolderManager; - -/** - * Terminal property tester implementation. - */ -public class PropertyTester extends org.eclipse.core.expressions.PropertyTester { - - @Override - public boolean test(Object receiver, String property, Object[] args, Object expectedValue) { - - if ("hasApplicableLauncherDelegates".equals(property)) { //$NON-NLS-1$ - ISelection selection = receiver instanceof ISelection ? (ISelection) receiver - : new StructuredSelection(receiver); - return expectedValue.equals(Boolean.valueOf( - LauncherDelegateManager.getInstance().getApplicableLauncherDelegates(selection).length > 0)); - } - - if ("canDisconnect".equals(property) && receiver instanceof ITerminalsView) { //$NON-NLS-1$ - CTabItem tabItem = null; - - TabFolderManager manager = ((ITerminalsView) receiver).getAdapter(TabFolderManager.class); - if (manager != null) { - tabItem = manager.getActiveTabItem(); - } - - if (tabItem != null && !tabItem.isDisposed() && tabItem.getData() instanceof ITerminalViewControl) { - ITerminalViewControl terminal = (ITerminalViewControl) tabItem.getData(); - TerminalState state = terminal.getState(); - return expectedValue.equals(Boolean.valueOf(state != TerminalState.CLOSED)); - } - return false; - } - - return false; - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/SettingsStore.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/SettingsStore.java deleted file mode 100644 index 116e1dd4dd5..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/SettingsStore.java +++ /dev/null @@ -1,60 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.internal; - -import java.util.HashMap; -import java.util.Map; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore; - -/** - * Simple default Terminal settings store implementation keeping the settings - * within memory. - */ -public class SettingsStore implements ISettingsStore { - private final Map settings = new HashMap<>(); - - public SettingsStore() { - } - - /** - * Returns the map containing the settings. - * - * @return The map containing the settings. - */ - public final Map getSettings() { - return settings; - } - - @Override - public final String get(String key, String defaultValue) { - Assert.isNotNull(key); - String value = settings.get(key) instanceof String ? (String) settings.get(key) : null; - return value != null ? value : defaultValue; - } - - @Override - public final String get(String key) { - Assert.isNotNull(key); - return settings.get(key) instanceof String ? (String) settings.get(key) : null; - } - - @Override - public final void put(String key, String value) { - Assert.isNotNull(key); - if (value == null) - settings.remove(key); - else - settings.put(key, value); - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/dialogs/EncodingSelectionDialog.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/dialogs/EncodingSelectionDialog.java deleted file mode 100644 index 96b9c9016df..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/dialogs/EncodingSelectionDialog.java +++ /dev/null @@ -1,221 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.internal.dialogs; - -import java.nio.charset.Charset; -import java.nio.charset.UnsupportedCharsetException; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.jface.dialogs.TrayDialog; -import org.eclipse.swt.SWT; -import org.eclipse.swt.custom.ScrolledComposite; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.tm.terminal.view.ui.help.IContextHelpIds; -import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer; -import org.eclipse.tm.terminal.view.ui.nls.Messages; -import org.eclipse.tm.terminal.view.ui.panels.AbstractExtendedConfigurationPanel; -import org.eclipse.ui.PlatformUI; - -/** - * Encoding selection dialog implementation. - */ -public class EncodingSelectionDialog extends TrayDialog { - private String contextHelpId = null; - - // The selected encoding or null - private String encoding; - - // Reference to the encodings panel - private EncodingPanel encodingPanel = null; - - /** - * Encodings panel implementation - */ - protected class EncodingPanel extends AbstractExtendedConfigurationPanel { - - /** - * Constructor - * - * @param container The configuration panel container or null. - */ - public EncodingPanel(IConfigurationPanelContainer container) { - super(container); - } - - @Override - public void setupPanel(Composite parent) { - Composite panel = new Composite(parent, SWT.NONE); - panel.setLayout(new GridLayout()); - GridData data = new GridData(SWT.FILL, SWT.FILL, true, true); - panel.setLayoutData(data); - - // Create the encoding selection combo - createEncodingUI(panel, false); - if (EncodingSelectionDialog.this.encoding != null) { - setEncoding(EncodingSelectionDialog.this.encoding); - } - - setControl(panel); - } - - @Override - protected void saveSettingsForHost(boolean add) { - } - - @Override - protected void fillSettingsForHost(String host) { - } - - @Override - protected String getHostFromSettings() { - return null; - } - - @Override - public String getEncoding() { - return super.getEncoding(); - } - - @Override - public void setEncoding(String encoding) { - super.setEncoding(encoding); - } - } - - /** - * Constructor. - * - * @param shell The parent shell or null. - */ - public EncodingSelectionDialog(Shell shell) { - super(shell); - - this.contextHelpId = IContextHelpIds.ENCODING_SELECTION_DIALOG; - setHelpAvailable(true); - } - - @Override - protected final Control createDialogArea(Composite parent) { - if (contextHelpId != null) { - PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, contextHelpId); - } - - // Let the super implementation create the dialog area control - Control control = super.createDialogArea(parent); - // Setup the inner panel as scrollable composite - if (control instanceof Composite) { - ScrolledComposite sc = new ScrolledComposite((Composite) control, SWT.V_SCROLL); - - GridLayout layout = new GridLayout(1, true); - layout.marginHeight = 0; - layout.marginWidth = 0; - layout.verticalSpacing = 0; - layout.horizontalSpacing = 0; - - sc.setLayout(layout); - sc.setLayoutData(new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL)); - - sc.setExpandHorizontal(true); - sc.setExpandVertical(true); - - Composite composite = new Composite(sc, SWT.NONE); - composite.setLayout(new GridLayout()); - - // Setup the dialog area content - createDialogAreaContent(composite); - - sc.setContent(composite); - sc.setMinSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT)); - - // Return the scrolled composite as new dialog area control - control = sc; - } - - return control; - } - - /** - * Creates the dialog area content. - * - * @param parent The parent composite. Must not be null. - */ - protected void createDialogAreaContent(Composite parent) { - Assert.isNotNull(parent); - - setDialogTitle(Messages.EncodingSelectionDialog_title); - - Composite panel = new Composite(parent, SWT.NONE); - GridLayout layout = new GridLayout(2, false); - layout.marginHeight = 0; - layout.marginWidth = 0; - panel.setLayout(layout); - panel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, true)); - - encodingPanel = new EncodingPanel(null); - encodingPanel.setupPanel(panel); - - applyDialogFont(panel); - } - - /** - * Sets the title for this dialog. - * - * @param title The title. - */ - public void setDialogTitle(String title) { - if (getShell() != null && !getShell().isDisposed()) { - getShell().setText(title); - } - } - - @Override - protected void okPressed() { - // Save the selected encoding - if (encodingPanel != null) - encoding = encodingPanel.getEncoding(); - super.okPressed(); - } - - @Override - protected void cancelPressed() { - // Reset the encoding - encoding = null; - super.cancelPressed(); - } - - /** - * Set the charset to default to on creating the dialog. - */ - - public void setCharset(Charset charset) { - this.encoding = charset == null ? null : charset.name(); - } - - /** - * Returns the selected charset or null. - */ - public final Charset getCharset() { - if (encoding == null) { - return null; - } - try { - return Charset.forName(encoding); - } catch (UnsupportedCharsetException e) { - return null; - } - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/dialogs/ErrorSettingsPanel.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/dialogs/ErrorSettingsPanel.java deleted file mode 100644 index 4b09e67c9eb..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/dialogs/ErrorSettingsPanel.java +++ /dev/null @@ -1,56 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2020 Kichwa Coders Canada Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.internal.dialogs; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Label; -import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer; -import org.eclipse.tm.terminal.view.ui.panels.AbstractConfigurationPanel; - -/** - * An empty configuration panel implementation. - */ -public class ErrorSettingsPanel extends AbstractConfigurationPanel { - - private String errorMessage; - - /** - * Constructor. - * - * @param container The configuration panel container or null. - */ - public ErrorSettingsPanel(IConfigurationPanelContainer container, String errorMessage) { - super(container); - this.errorMessage = errorMessage; - } - - @Override - public void setupPanel(Composite parent) { - Composite panel = new Composite(parent, SWT.NONE); - panel.setLayout(new GridLayout()); - panel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); - - panel.setBackground(parent.getBackground()); - - if (errorMessage != null) { - Label label = new Label(panel, SWT.NONE); - label.setText(errorMessage); - } - - setControl(panel); - } - - @Override - public boolean isValid() { - return false; - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/dialogs/LaunchTerminalSettingsDialog.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/dialogs/LaunchTerminalSettingsDialog.java deleted file mode 100644 index 98ce9cc86c5..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/dialogs/LaunchTerminalSettingsDialog.java +++ /dev/null @@ -1,696 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - * Max Weninger (Wind River) - [361352] [TERMINALS][SSH] Add SSH terminal support - * Dirk Fauth - Bug 460496 - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.internal.dialogs; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.jface.dialogs.IDialogConstants; -import org.eclipse.jface.dialogs.IDialogSettings; -import org.eclipse.jface.dialogs.TrayDialog; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.SWT; -import org.eclipse.swt.custom.ScrolledComposite; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Combo; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.MessageBox; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector; -import org.eclipse.tm.terminal.view.core.interfaces.ITerminalService.Done; -import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants; -import org.eclipse.tm.terminal.view.ui.activator.UIPlugin; -import org.eclipse.tm.terminal.view.ui.controls.ConfigurationPanelControl; -import org.eclipse.tm.terminal.view.ui.help.IContextHelpIds; -import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanel; -import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer; -import org.eclipse.tm.terminal.view.ui.interfaces.IExternalExecutablesProperties; -import org.eclipse.tm.terminal.view.ui.interfaces.ILauncherDelegate; -import org.eclipse.tm.terminal.view.ui.interfaces.tracing.ITraceIds; -import org.eclipse.tm.terminal.view.ui.launcher.AbstractLauncherDelegate; -import org.eclipse.tm.terminal.view.ui.launcher.LauncherDelegateManager; -import org.eclipse.tm.terminal.view.ui.local.showin.ExternalExecutablesManager; -import org.eclipse.tm.terminal.view.ui.nls.Messages; -import org.eclipse.ui.ISelectionService; -import org.eclipse.ui.PlatformUI; - -/** - * Launch terminal settings dialog implementation. - */ -public class LaunchTerminalSettingsDialog extends TrayDialog { - /** - * Special label for terminal (not shown to user) when there are no terminal - * connectors installed. - */ - private static final String NO_CONNECTORS_LABEL = "none"; //$NON-NLS-1$ - - private String contextHelpId = null; - - // The parent selection - private ISelection selection = null; - - // The sub controls - /* default */ Combo terminals; - /* default */ SettingsPanelControl settings; - - // Map the label added to the combo box to the corresponding launcher delegate. - /* default */ final Map label2delegate = new HashMap<>(); - - // Map the label added to the combo box to the corresponding launcher properties for external executables. - /* default */ final Map> label2properties = new HashMap<>(); - - // The data object containing the currently selected settings - private Map data = null; - - // The dialog settings storage - private IDialogSettings dialogSettings; - - // In case of a single available terminal launcher delegate, the label of that delegate - private String singleDelegateLabel = null; - - /** - * The control managing the terminal setting panels. - */ - protected class SettingsPanelControl extends ConfigurationPanelControl { - - public SettingsPanelControl() { - setPanelIsGroup(true); - } - - @Override - public String getGroupLabel() { - return Messages.LaunchTerminalSettingsDialog_group_label; - } - - @Override - public void showConfigurationPanel(String key) { - // Check if we have to create the panel first - IConfigurationPanel configPanel = getConfigurationPanel(key); - if (isEmptyConfigurationPanel(configPanel)) { - // Get the corresponding delegate - ILauncherDelegate delegate = label2delegate.get(key); - Assert.isNotNull(delegate); - // Create the wizard configuration panel instance - configPanel = delegate.getPanel(this); - if (configPanel != null) { - // Add it to the settings panel control - settings.addConfigurationPanel(key, configPanel); - // Push the selection to the configuration panel - configPanel.setSelection(getSelection()); - // Create the panel controls - configPanel.setupPanel(getPanel()); - // Restore widget values - IDialogSettings dialogSettings = LaunchTerminalSettingsDialog.this.settings - .getDialogSettings(LaunchTerminalSettingsDialog.this.getDialogSettings()); - IDialogSettings configPanelSettings = dialogSettings != null ? dialogSettings.getSection(key) - : null; - if (configPanelSettings != null) - configPanel.doRestoreWidgetValues(configPanelSettings, null); - } - } - - super.showConfigurationPanel(key); - } - - @Override - public void validate() { - LaunchTerminalSettingsDialog.this.validate(); - } - } - - /** - * Constructor. - * - * @param shell The parent shell or null. - */ - public LaunchTerminalSettingsDialog(Shell shell) { - this(shell, 0); - } - - private long start = 0; - - /** - * Constructor. - * - * @param shell The parent shell or null. - */ - public LaunchTerminalSettingsDialog(Shell shell, long start) { - super(shell); - this.start = start; - - initializeDialogSettings(); - - this.contextHelpId = IContextHelpIds.LAUNCH_TERMINAL_SETTINGS_DIALOG; - setHelpAvailable(true); - } - - /** - * Sets the parent selection. - * - * @param selection The parent selection or null. - */ - public void setSelection(ISelection selection) { - this.selection = selection; - } - - /** - * Returns the parent selection. - * - * @return The parent selection or null. - */ - public ISelection getSelection() { - return selection; - } - - @Override - public boolean close() { - dispose(); - return super.close(); - } - - /** - * Dispose the dialog resources. - */ - protected void dispose() { - if (settings != null) { - settings.dispose(); - settings = null; - } - dialogSettings = null; - } - - @Override - protected boolean isResizable() { - return true; - } - - @Override - protected Control createContents(Composite parent) { - Control composite = super.createContents(parent); - - // Validate the dialog after having created all the content - validate(); - - return composite; - } - - @Override - protected final Control createDialogArea(Composite parent) { - if (contextHelpId != null) { - PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, contextHelpId); - } - - // Let the super implementation create the dialog area control - Control control = super.createDialogArea(parent); - // Setup the inner panel as scrollable composite - if (control instanceof Composite) { - ScrolledComposite sc = new ScrolledComposite((Composite) control, SWT.V_SCROLL); - - GridLayout layout = new GridLayout(1, true); - layout.marginHeight = 0; - layout.marginWidth = 0; - layout.verticalSpacing = 0; - layout.horizontalSpacing = 0; - - sc.setLayout(layout); - sc.setLayoutData(new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL)); - - sc.setExpandHorizontal(true); - sc.setExpandVertical(true); - - Composite composite = new Composite(sc, SWT.NONE); - composite.setLayout(new GridLayout()); - - // Setup the dialog area content - createDialogAreaContent(composite); - - sc.setContent(composite); - sc.setMinSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT)); - - // Return the scrolled composite as new dialog area control - control = sc; - } - - return control; - } - - /** - * Sets the title for this dialog. - * - * @param title The title. - */ - public void setDialogTitle(String title) { - if (getShell() != null && !getShell().isDisposed()) { - getShell().setText(title); - } - } - - /** - * Creates the dialog area content. - * - * @param parent The parent composite. Must not be null. - */ - protected void createDialogAreaContent(Composite parent) { - Assert.isNotNull(parent); - - if (UIPlugin.getTraceHandler().isSlotEnabled(0, ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER)) { - UIPlugin.getTraceHandler().trace( - "Creating dialog area after " + (System.currentTimeMillis() - start) + " ms.", //$NON-NLS-1$ //$NON-NLS-2$ - ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER, LaunchTerminalSettingsDialog.this); - } - - setDialogTitle(Messages.LaunchTerminalSettingsDialog_title); - - final List items = getTerminals(); - - Composite panel = new Composite(parent, SWT.NONE); - GridLayout layout = new GridLayout(2, false); - layout.marginHeight = 0; - layout.marginWidth = 0; - panel.setLayout(layout); - panel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, true)); - - if (items.size() != 1) { - Label label = new Label(panel, SWT.HORIZONTAL); - label.setText(Messages.LaunchTerminalSettingsDialog_combo_label); - - terminals = new Combo(panel, SWT.READ_ONLY); - terminals.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); - terminals.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - // Get the old panel - IConfigurationPanel oldPanel = settings.getActiveConfigurationPanel(); - // Extract the current settings in an special properties container - Map data = new HashMap<>(); - if (oldPanel != null) - oldPanel.extractData(data); - // Clean out settings which are never passed between the panels - data.remove(ITerminalsConnectorConstants.PROP_IP_PORT); - data.remove(ITerminalsConnectorConstants.PROP_TIMEOUT); - data.remove(ITerminalsConnectorConstants.PROP_TERMINAL_CONNECTOR_ID); - data.remove(ITerminalsConnectorConstants.PROP_ENCODING); - // Switch to the new panel - settings.showConfigurationPanel(terminals.getText()); - // Get the new panel - IConfigurationPanel newPanel = settings.getActiveConfigurationPanel(); - // Re-setup the relevant data - if (newPanel != null) - newPanel.setupData(data); - - // resize the dialog if needed to show the complete panel - getShell().pack(); - // validate the settings dialog - validate(); - } - }); - - // fill the combo with content - fillCombo(terminals, items); - } else { - Assert.isTrue(items.size() == 1); - singleDelegateLabel = items.get(0); - } - - // Create the settings panel control - settings = new SettingsPanelControl(); - - // Create, initialize and add the first visible panel. All - // other panels are created on demand only. - String terminalLabel = terminals != null ? terminals.getItem(0) : singleDelegateLabel; - if (terminalLabel != null) { - // Get the corresponding delegate - ILauncherDelegate delegate = label2delegate.get(terminalLabel); - Assert.isNotNull(delegate); - // Create the wizard configuration panel instance - IConfigurationPanel configPanel = delegate.getPanel(settings); - if (configPanel != null) { - // Add it to the settings panel control - settings.addConfigurationPanel(terminalLabel, configPanel); - // Push the selection to the configuration panel - configPanel.setSelection(getSelection()); - } - } - - // Setup the panel control - settings.setupPanel(panel, terminals != null ? terminals.getItems() : new String[] { singleDelegateLabel }); - GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, true); - layoutData.horizontalSpan = 2; - settings.getPanel().setLayoutData(layoutData); - - // Preselect the first terminal launcher - if (terminals != null) { - terminals.select(0); - settings.showConfigurationPanel(terminals.getText()); - - terminals.setEnabled(terminals.getItemCount() > 1); - } else { - settings.showConfigurationPanel(singleDelegateLabel); - } - - restoreWidgetValues(); - - applyDialogFont(panel); - - if (UIPlugin.getTraceHandler().isSlotEnabled(0, ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER)) { - UIPlugin.getTraceHandler().trace( - "Created dialog area after " + (System.currentTimeMillis() - start) + " ms.", //$NON-NLS-1$ //$NON-NLS-2$ - ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER, LaunchTerminalSettingsDialog.this); - } - } - - /** - * Fill the given combo with the given list of terminal launcher delegate labels. - * - * @param combo The combo. Must not be null. - * @param items The list of terminal launcher delegates. Must not be null. - */ - protected void fillCombo(Combo combo, List items) { - Assert.isNotNull(combo); - Assert.isNotNull(items); - - if (UIPlugin.getTraceHandler().isSlotEnabled(0, ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER)) { - UIPlugin.getTraceHandler().trace("Filling combo after " + (System.currentTimeMillis() - start) + " ms.", //$NON-NLS-1$ //$NON-NLS-2$ - ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER, LaunchTerminalSettingsDialog.this); - } - - Collections.sort(items); - combo.setItems(items.toArray(new String[items.size()])); - } - - /** - * Returns the list of terminal launcher delegate labels. The method queries the - * terminal launcher delegates and initialize the label2delegate map. - * - * @return The list of terminal launcher delegate labels or an empty list. - */ - protected List getTerminals() { - List items = new ArrayList<>(); - - ILauncherDelegate localLauncher = null; - - if (selection == null || selection.isEmpty()) { - if (UIPlugin.getTraceHandler().isSlotEnabled(0, ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER)) { - UIPlugin.getTraceHandler().trace( - "Getting launcher delegates after " + (System.currentTimeMillis() - start) + " ms.", //$NON-NLS-1$ //$NON-NLS-2$ - ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER, LaunchTerminalSettingsDialog.this); - } - - ILauncherDelegate[] delegates = LauncherDelegateManager.getInstance().getLauncherDelegates(false); - - if (UIPlugin.getTraceHandler().isSlotEnabled(0, ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER)) { - UIPlugin.getTraceHandler().trace( - "Got launcher delegates after " + (System.currentTimeMillis() - start) + " ms.", //$NON-NLS-1$ //$NON-NLS-2$ - ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER, LaunchTerminalSettingsDialog.this); - } - - for (ILauncherDelegate delegate : delegates) { - if (delegate.isHidden() || isFiltered(selection, delegate)) - continue; - String label = delegate.getLabel(); - if (label == null || "".equals(label.trim()) || label2delegate.containsKey(label)) //$NON-NLS-1$ - label = delegate.getId(); - label2delegate.put(label, delegate); - items.add(label); - - if ("org.eclipse.tm.terminal.connector.local.launcher.local".equals(delegate.getId())) { //$NON-NLS-1$ - localLauncher = delegate; - } - } - } else { - if (UIPlugin.getTraceHandler().isSlotEnabled(0, ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER)) { - UIPlugin.getTraceHandler().trace( - "Getting applicable launcher delegates after " + (System.currentTimeMillis() - start) + " ms.", //$NON-NLS-1$ //$NON-NLS-2$ - ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER, LaunchTerminalSettingsDialog.this); - } - - ILauncherDelegate[] delegates = LauncherDelegateManager.getInstance() - .getApplicableLauncherDelegates(selection); - - if (UIPlugin.getTraceHandler().isSlotEnabled(0, ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER)) { - UIPlugin.getTraceHandler().trace( - "Got applicable launcher delegates after " + (System.currentTimeMillis() - start) + " ms.", //$NON-NLS-1$ //$NON-NLS-2$ - ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER, LaunchTerminalSettingsDialog.this); - } - - for (ILauncherDelegate delegate : delegates) { - if (delegate.isHidden() || isFiltered(selection, delegate)) - continue; - String label = delegate.getLabel(); - if (label == null || "".equals(label.trim())) //$NON-NLS-1$ - label = delegate.getId(); - label2delegate.put(label, delegate); - items.add(label); - - if ("org.eclipse.tm.terminal.connector.local.launcher.local".equals(delegate.getId())) { //$NON-NLS-1$ - localLauncher = delegate; - } - } - } - - // if the local launcher was found, check for configured external executables - if (localLauncher != null) { - List> l = ExternalExecutablesManager.load(); - if (l != null && !l.isEmpty()) { - for (Map executableData : l) { - String name = executableData.get(IExternalExecutablesProperties.PROP_NAME); - String path = executableData.get(IExternalExecutablesProperties.PROP_PATH); - String args = executableData.get(IExternalExecutablesProperties.PROP_ARGS); - - String strTranslate = executableData.get(IExternalExecutablesProperties.PROP_TRANSLATE); - boolean translate = strTranslate != null ? Boolean.parseBoolean(strTranslate) : false; - - if (name != null && !"".equals(name) && path != null && !"".equals(path)) { //$NON-NLS-1$ //$NON-NLS-2$ - ISelectionService service = PlatformUI.getWorkbench().getActiveWorkbenchWindow() - .getSelectionService(); - ISelection selection = service != null ? service.getSelection() : null; - if (selection != null && selection.isEmpty()) - selection = null; - - Map properties = new HashMap<>(); - properties.put(ITerminalsConnectorConstants.PROP_PROCESS_PATH, path); - properties.put(ITerminalsConnectorConstants.PROP_PROCESS_ARGS, args); - properties.put(ITerminalsConnectorConstants.PROP_TRANSLATE_BACKSLASHES_ON_PASTE, - Boolean.valueOf(translate)); - - // store external executable and properties - label2delegate.put(name, localLauncher); - label2properties.put(name, properties); - items.add(name); - } - } - } - - } - - if (items.isEmpty()) { - // No connectors at all installed - display warning to user. - ILauncherDelegate noDelegate = new AbstractLauncherDelegate() { - - @Override - public boolean needsUserConfiguration() { - return false; - } - - @Override - public IConfigurationPanel getPanel(IConfigurationPanelContainer container) { - return new ErrorSettingsPanel(container, - Messages.LaunchTerminalSettingsDialog_error_no_terminal_connectors); - } - - @Override - public void execute(Map properties, Done done) { - throw new UnsupportedOperationException(); - } - - @Override - public ITerminalConnector createTerminalConnector(Map properties) { - throw new UnsupportedOperationException(); - } - - }; - - label2delegate.put(NO_CONNECTORS_LABEL, noDelegate); - items.add(NO_CONNECTORS_LABEL); - } - - return items; - } - - /** - * Hook to allow additional filtering of the applicable launcher delegates. - *

      - * Note: The default implementation always returns false. - * - * @param selection The selection or null. - * @param delegate The launcher delegate. Must not be null. - * - * @return True if the launcher delegate is filtered based on the given selection, false otherwise. - */ - protected boolean isFiltered(ISelection selection, ILauncherDelegate delegate) { - return false; - } - - /** - * Validate the dialog. - */ - public void validate() { - IConfigurationPanel panel = this.settings.getActiveConfigurationPanel(); - Button okButton = getButton(IDialogConstants.OK_ID); - if (okButton != null) - okButton.setEnabled(panel.isValid()); - } - - /** - * Set the given message and message type. - * - * @param message The message or null. - * @param messageType The message type or IMessageProvider.NONE. - */ - public void setMessage(String message, int messageType) { - if (settings != null) { - settings.setMessage(message, messageType); - } - } - - /** - * Save the dialog's widget values. - */ - protected void saveWidgetValues() { - IDialogSettings settings = getDialogSettings(); - if (settings != null) { - if (terminals != null) { - settings.put("terminalLabel", terminals.getText()); //$NON-NLS-1$ - } - this.settings.saveWidgetValues(settings, null); - } - } - - /** - * Restore the dialog's widget values. - */ - protected void restoreWidgetValues() { - IDialogSettings settings = getDialogSettings(); - if (settings != null) { - String terminalLabel = settings.get("terminalLabel"); //$NON-NLS-1$ - int index = terminalLabel != null && terminals != null - ? Arrays.asList(terminals.getItems()).indexOf(terminalLabel) - : -1; - if (index != -1) { - terminals.select(index); - this.settings.showConfigurationPanel(terminals.getText()); - } - - this.settings.restoreWidgetValues(settings, null); - } - } - - @Override - protected void okPressed() { - IConfigurationPanel panel = this.settings.getActiveConfigurationPanel(); - Assert.isNotNull(panel); - - if (!panel.isValid()) { - MessageBox mb = new MessageBox(getShell(), SWT.ICON_ERROR | SWT.OK); - mb.setText(Messages.LaunchTerminalSettingsDialog_error_title); - mb.setMessage(NLS.bind(Messages.LaunchTerminalSettingsDialog_error_invalidSettings, - panel.getMessage() != null ? panel.getMessage() - : Messages.LaunchTerminalSettingsDialog_error_unknownReason)); - mb.open(); - return; - } - data = new HashMap<>(); - - // Store the id of the selected delegate - String terminalLabel = terminals != null ? terminals.getText() : singleDelegateLabel; - String delegateId = terminalLabel != null ? label2delegate.get(terminalLabel).getId() : null; - if (delegateId != null) - data.put(ITerminalsConnectorConstants.PROP_DELEGATE_ID, delegateId); - // Store the selection - data.put(ITerminalsConnectorConstants.PROP_SELECTION, selection); - - // Add the properties for external executables if there are any - if (label2properties.containsKey(terminalLabel)) { - data.putAll(label2properties.get(terminalLabel)); - } - - // Store the delegate specific settings - panel.extractData(data); - - // Save the current widget values - saveWidgetValues(); - - super.okPressed(); - } - - /** - * Returns the configured terminal launcher settings. - *

      - * The settings are extracted from the UI widgets once - * OK got pressed. - * - * @return The configured terminal launcher settings or null. - */ - public Map getSettings() { - return data; - } - - /** - * Initialize the dialog settings storage. - */ - protected void initializeDialogSettings() { - IDialogSettings settings = UIPlugin.getDefault().getDialogSettings(); - Assert.isNotNull(settings); - IDialogSettings section = settings.getSection(getClass().getSimpleName()); - if (section == null) { - section = settings.addNewSection(getClass().getSimpleName()); - } - setDialogSettings(section); - } - - /** - * Returns the associated dialog settings storage. - * - * @return The dialog settings storage. - */ - public IDialogSettings getDialogSettings() { - // The dialog settings may not been initialized here. Initialize first in this case - // to be sure that we do have always the correct dialog settings. - if (dialogSettings == null) { - initializeDialogSettings(); - } - return dialogSettings; - } - - /** - * Sets the associated dialog settings storage. - * - * @return The dialog settings storage. - */ - public void setDialogSettings(IDialogSettings dialogSettings) { - this.dialogSettings = dialogSettings; - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/AbstractTriggerCommandHandler.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/AbstractTriggerCommandHandler.java deleted file mode 100644 index c85f3871a63..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/AbstractTriggerCommandHandler.java +++ /dev/null @@ -1,70 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.internal.handler; - -import org.eclipse.core.commands.AbstractHandler; -import org.eclipse.core.commands.Command; -import org.eclipse.core.commands.ParameterizedCommand; -import org.eclipse.core.expressions.EvaluationContext; -import org.eclipse.core.expressions.IEvaluationContext; -import org.eclipse.core.runtime.Assert; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Platform; -import org.eclipse.core.runtime.Status; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.tm.terminal.view.ui.activator.UIPlugin; -import org.eclipse.tm.terminal.view.ui.nls.Messages; -import org.eclipse.ui.ISources; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.commands.ICommandService; -import org.eclipse.ui.handlers.IHandlerService; - -/** - * Abstract command handler triggering a command to be executed. - */ -public abstract class AbstractTriggerCommandHandler extends AbstractHandler { - - /** - * Trigger a command to be executed. - * - * @param commandId The command id. Must not be null. - * @param selection The selection to pass on to the command or null. - */ - @SuppressWarnings("cast") - protected void triggerCommand(String commandId, ISelection selection) { - Assert.isNotNull(commandId); - - ICommandService service = PlatformUI.getWorkbench().getService(ICommandService.class); - Command command = service != null ? service.getCommand(commandId) : null; - if (command != null && command.isDefined() && command.isEnabled()) { - try { - ParameterizedCommand pCmd = ParameterizedCommand.generateCommand(command, null); - Assert.isNotNull(pCmd); - IHandlerService handlerSvc = PlatformUI.getWorkbench().getService(IHandlerService.class); - Assert.isNotNull(handlerSvc); - IEvaluationContext ctx = handlerSvc.getCurrentState(); - if (selection != null) { - ctx = new EvaluationContext(ctx, selection); - ctx.addVariable(ISources.ACTIVE_CURRENT_SELECTION_NAME, selection); - } - handlerSvc.executeCommandInContext(pCmd, null, ctx); - } catch (Exception e) { - // If the platform is in debug mode, we print the exception to the log view - if (Platform.inDebugMode()) { - IStatus status = new Status(IStatus.ERROR, UIPlugin.getUniqueIdentifier(), - Messages.AbstractTriggerCommandHandler_error_executionFailed, e); - UIPlugin.getDefault().getLog().log(status); - } - } - } - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/DisconnectTerminalCommandHandler.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/DisconnectTerminalCommandHandler.java deleted file mode 100644 index d895f88a364..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/DisconnectTerminalCommandHandler.java +++ /dev/null @@ -1,60 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2014, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.internal.handler; - -import org.eclipse.core.commands.AbstractHandler; -import org.eclipse.core.commands.ExecutionEvent; -import org.eclipse.core.commands.ExecutionException; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.swt.custom.CTabItem; -import org.eclipse.tm.internal.terminal.control.ITerminalViewControl; -import org.eclipse.tm.terminal.view.ui.interfaces.ITerminalsView; -import org.eclipse.tm.terminal.view.ui.tabs.TabFolderManager; -import org.eclipse.ui.handlers.HandlerUtil; - -/** - * Disconnect terminal connection command handler implementation. - */ -public class DisconnectTerminalCommandHandler extends AbstractHandler { - - @Override - public Object execute(ExecutionEvent event) throws ExecutionException { - CTabItem item = null; - - ISelection selection = HandlerUtil.getCurrentSelection(event); - if (selection instanceof IStructuredSelection && !selection.isEmpty()) { - Object element = ((IStructuredSelection) selection).getFirstElement(); - if (element instanceof CTabItem && ((CTabItem) element).getData() instanceof ITerminalViewControl) { - item = (CTabItem) element; - } - } - - if (item == null && HandlerUtil.getActivePart(event) instanceof ITerminalsView) { - ITerminalsView view = (ITerminalsView) HandlerUtil.getActivePart(event); - TabFolderManager mgr = view.getAdapter(TabFolderManager.class); - if (mgr != null && mgr.getActiveTabItem() != null) { - item = mgr.getActiveTabItem(); - } - } - - if (item != null && item.getData() instanceof ITerminalViewControl) { - ITerminalViewControl terminal = (ITerminalViewControl) item.getData(); - if (terminal != null && !terminal.isDisposed()) { - terminal.disconnectTerminal(); - } - } - - return null; - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/LaunchTerminalCommandHandler.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/LaunchTerminalCommandHandler.java deleted file mode 100644 index e13afc44f5c..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/LaunchTerminalCommandHandler.java +++ /dev/null @@ -1,160 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.internal.handler; - -import java.text.DateFormat; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - -import org.eclipse.core.commands.AbstractHandler; -import org.eclipse.core.commands.ExecutionEvent; -import org.eclipse.core.commands.ExecutionException; -import org.eclipse.core.runtime.Assert; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.window.Window; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.tm.terminal.view.core.TerminalContextPropertiesProviderFactory; -import org.eclipse.tm.terminal.view.core.interfaces.ITerminalContextPropertiesProvider; -import org.eclipse.tm.terminal.view.core.interfaces.constants.IContextPropertiesConstants; -import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants; -import org.eclipse.tm.terminal.view.ui.activator.UIPlugin; -import org.eclipse.tm.terminal.view.ui.interfaces.ILauncherDelegate; -import org.eclipse.tm.terminal.view.ui.interfaces.tracing.ITraceIds; -import org.eclipse.tm.terminal.view.ui.internal.dialogs.LaunchTerminalSettingsDialog; -import org.eclipse.tm.terminal.view.ui.launcher.LauncherDelegateManager; -import org.eclipse.ui.handlers.HandlerUtil; - -/** - * Launch terminal command handler implementation. - */ -public class LaunchTerminalCommandHandler extends AbstractHandler { - - @Override - public Object execute(ExecutionEvent event) throws ExecutionException { - String commandId = event.getCommand().getId(); - // "org.eclipse.tm.terminal.view.ui.command.launchToolbar" - // "org.eclipse.tm.terminal.view.ui.command.launch" - - long start = System.currentTimeMillis(); - - if (UIPlugin.getTraceHandler().isSlotEnabled(0, ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER)) { - DateFormat format = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT); - String date = format.format(new Date(start)); - - UIPlugin.getTraceHandler().trace("Started at " + date + " (" + start + ")", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER, LaunchTerminalCommandHandler.this); - } - - // Get the active shell - Shell shell = HandlerUtil.getActiveShell(event); - // Get the current selection - ISelection selection = HandlerUtil.getCurrentSelection(event); - - if (commandId.equals("org.eclipse.tm.terminal.view.ui.command.launchToolbar")) { //$NON-NLS-1$ - if (UIPlugin.getTraceHandler().isSlotEnabled(0, ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER)) { - UIPlugin.getTraceHandler().trace("(a) Attempt to open launch terminal settings dialog after " //$NON-NLS-1$ - + (System.currentTimeMillis() - start) + " ms.", //$NON-NLS-1$ - ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER, LaunchTerminalCommandHandler.this); - } - - LaunchTerminalSettingsDialog dialog = new LaunchTerminalSettingsDialog(shell, start); - - if (isValidSelection(selection)) { - dialog.setSelection(selection); - } - if (dialog.open() == Window.OK) { - // Get the terminal settings from the dialog - Map properties = dialog.getSettings(); - if (properties != null) { - String delegateId = (String) properties.get(ITerminalsConnectorConstants.PROP_DELEGATE_ID); - Assert.isNotNull(delegateId); - ILauncherDelegate delegate = LauncherDelegateManager.getInstance().getLauncherDelegate(delegateId, - false); - Assert.isNotNull(delegateId); - delegate.execute(properties, null); - } - } - } else { - if (UIPlugin.getTraceHandler().isSlotEnabled(0, ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER)) { - UIPlugin.getTraceHandler().trace( - "Getting applicable launcher delegates after " + (System.currentTimeMillis() - start) + " ms.", //$NON-NLS-1$ //$NON-NLS-2$ - ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER, LaunchTerminalCommandHandler.this); - } - - // Check if the dialog needs to be shown at all - ILauncherDelegate[] delegates = LauncherDelegateManager.getInstance() - .getApplicableLauncherDelegates(selection); - - if (UIPlugin.getTraceHandler().isSlotEnabled(0, ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER)) { - UIPlugin.getTraceHandler().trace( - "Got applicable launcher delegates after " + (System.currentTimeMillis() - start) + " ms.", //$NON-NLS-1$ //$NON-NLS-2$ - ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER, LaunchTerminalCommandHandler.this); - } - - if (delegates.length > 1 || (delegates.length == 1 && delegates[0].needsUserConfiguration())) { - if (UIPlugin.getTraceHandler().isSlotEnabled(0, ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER)) { - UIPlugin.getTraceHandler().trace("(b) Attempt to open launch terminal settings dialog after " //$NON-NLS-1$ - + (System.currentTimeMillis() - start) + " ms.", //$NON-NLS-1$ - ITraceIds.TRACE_LAUNCH_TERMINAL_COMMAND_HANDLER, LaunchTerminalCommandHandler.this); - } - - // Create the launch terminal settings dialog - LaunchTerminalSettingsDialog dialog = new LaunchTerminalSettingsDialog(shell, start); - if (isValidSelection(selection)) { - dialog.setSelection(selection); - } - if (dialog.open() == Window.OK) { - // Get the terminal settings from the dialog - Map properties = dialog.getSettings(); - if (properties != null) { - String delegateId = (String) properties.get(ITerminalsConnectorConstants.PROP_DELEGATE_ID); - Assert.isNotNull(delegateId); - ILauncherDelegate delegate = LauncherDelegateManager.getInstance() - .getLauncherDelegate(delegateId, false); - Assert.isNotNull(delegateId); - delegate.execute(properties, null); - } - } - } else if (delegates.length == 1) { - ILauncherDelegate delegate = delegates[0]; - Map properties = new HashMap<>(); - - // Store the id of the selected delegate - properties.put(ITerminalsConnectorConstants.PROP_DELEGATE_ID, delegate.getId()); - // Store the selection - properties.put(ITerminalsConnectorConstants.PROP_SELECTION, selection); - - // Execute - delegate.execute(properties, null); - } - } - - return null; - } - - private boolean isValidSelection(ISelection selection) { - if (selection instanceof IStructuredSelection && !selection.isEmpty()) { - Object element = ((IStructuredSelection) selection).getFirstElement(); - ITerminalContextPropertiesProvider provider = TerminalContextPropertiesProviderFactory.getProvider(element); - if (provider != null) { - Map props = provider.getTargetAddress(element); - if (props != null && props.containsKey(IContextPropertiesConstants.PROP_ADDRESS)) { - return true; - } - } - } - - return false; - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/MaximizeViewHandler.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/MaximizeViewHandler.java deleted file mode 100644 index f9230a597bd..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/MaximizeViewHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2014, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.internal.handler; - -import org.eclipse.core.commands.ExecutionEvent; -import org.eclipse.core.commands.ExecutionException; - -/** - * Maximize view handler implementation. - */ -public class MaximizeViewHandler extends AbstractTriggerCommandHandler { - - @Override - public Object execute(ExecutionEvent event) throws ExecutionException { - triggerCommand("org.eclipse.ui.window.maximizePart", null); //$NON-NLS-1$ - return null; - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/NewTerminalViewHandler.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/NewTerminalViewHandler.java deleted file mode 100644 index d73e6a386aa..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/NewTerminalViewHandler.java +++ /dev/null @@ -1,34 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.internal.handler; - -import org.eclipse.core.commands.ExecutionEvent; -import org.eclipse.core.commands.ExecutionException; -import org.eclipse.tm.terminal.view.ui.interfaces.IUIConstants; -import org.eclipse.tm.terminal.view.ui.manager.ConsoleManager; - -/** - * New Terminal View handler implementation - */ -public class NewTerminalViewHandler extends AbstractTriggerCommandHandler { - - @Override - public Object execute(ExecutionEvent event) throws ExecutionException { - String secondaryId = ConsoleManager.getInstance().getNextTerminalSecondaryId(IUIConstants.ID); - ConsoleManager.getInstance().showConsoleView(IUIConstants.ID, secondaryId); - - triggerCommand("org.eclipse.tm.terminal.view.ui.command.launchToolbar", null); //$NON-NLS-1$ - - return null; - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/QuickAccessHandler.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/QuickAccessHandler.java deleted file mode 100644 index 48658dc8e95..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/internal/handler/QuickAccessHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2014, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.internal.handler; - -import org.eclipse.core.commands.ExecutionEvent; -import org.eclipse.core.commands.ExecutionException; - -/** - * Quick access handler implementation. - */ -public class QuickAccessHandler extends AbstractTriggerCommandHandler { - - @Override - public Object execute(ExecutionEvent event) throws ExecutionException { - triggerCommand("org.eclipse.ui.window.quickAccess", null); //$NON-NLS-1$ - return null; - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/launcher/AbstractLauncherDelegate.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/launcher/AbstractLauncherDelegate.java deleted file mode 100644 index a1e608e5cee..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/launcher/AbstractLauncherDelegate.java +++ /dev/null @@ -1,139 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.launcher; - -import java.util.Map; - -import org.eclipse.core.expressions.Expression; -import org.eclipse.core.expressions.ExpressionConverter; -import org.eclipse.core.runtime.Assert; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IConfigurationElement; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.PlatformObject; -import org.eclipse.core.runtime.Status; -import org.eclipse.osgi.util.NLS; -import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants; -import org.eclipse.tm.terminal.view.ui.activator.UIPlugin; -import org.eclipse.tm.terminal.view.ui.interfaces.ILauncherDelegate; -import org.eclipse.tm.terminal.view.ui.nls.Messages; - -/** - * Abstract launcher delegate implementation. - */ -public abstract class AbstractLauncherDelegate extends PlatformObject implements ILauncherDelegate { - // The mandatory id of the extension - private String id = null; - // The label of the extension - private String label = null; - // The converted expression - private Expression expression; - // The hidden attribute - private boolean hidden; - - @Override - public void setInitializationData(IConfigurationElement config, String propertyName, Object data) - throws CoreException { - if (config == null) - return; - - // Initialize the id field by reading the extension attribute. - // Throws an exception if the id is empty or null. - id = config.getAttribute("id"); //$NON-NLS-1$ - if (id == null || "".equals(id.trim())) { //$NON-NLS-1$ - throw createMissingMandatoryAttributeException("id", config.getContributor().getName()); //$NON-NLS-1$ - } - - // Try the "label" attribute first - label = config.getAttribute("label"); //$NON-NLS-1$ - // If "label" is not found or empty, try the "name" attribute as fallback - if (label == null || "".equals(label.trim())) { //$NON-NLS-1$ - label = config.getAttribute("name"); //$NON-NLS-1$ - } - - // Read the sub elements of the extension - IConfigurationElement[] children = config.getChildren(); - // The "enablement" element is the only expected one - if (children != null && children.length > 0) { - expression = ExpressionConverter.getDefault().perform(children[0]); - } - - // Read "hidden" attribute - String value = config.getAttribute("hidden"); //$NON-NLS-1$ - if (value != null && !"".equals(value.trim())) { //$NON-NLS-1$ - hidden = Boolean.parseBoolean(value); - } - } - - /** - * Creates a new {@link CoreException} to be thrown if a mandatory extension attribute - * is missing. - * - * @param attributeName The attribute name. Must not be null. - * @param extensionId The extension id. Must not be null. - * - * @return The {@link CoreException} instance. - */ - protected CoreException createMissingMandatoryAttributeException(String attributeName, String extensionId) { - Assert.isNotNull(attributeName); - Assert.isNotNull(extensionId); - - return new CoreException(new Status(IStatus.ERROR, UIPlugin.getUniqueIdentifier(), 0, - NLS.bind(Messages.Extension_error_missingRequiredAttribute, attributeName, extensionId), null)); - } - - @Override - public String getId() { - return id; - } - - @Override - public String getLabel() { - return label != null ? label.trim() : ""; //$NON-NLS-1$ - } - - @Override - public Expression getEnablement() { - return expression; - } - - @Override - public boolean isHidden() { - return hidden; - } - - @Override - public boolean equals(Object obj) { - if (obj instanceof AbstractLauncherDelegate) { - return id.equals(((AbstractLauncherDelegate) obj).id); - } - return super.equals(obj); - } - - @Override - public int hashCode() { - return id.hashCode(); - } - - /** - * Get the title from the settings, and use it as the default title. - * - * @param properties the setting properties map. - * @return the value retrieved via the @see {@link ITerminalsConnectorConstants#PROP_TITLE}, or null if the key hasn't been set. - * - * @since 4.1 - */ - protected String getDefaultTerminalTitle(Map properties) { - String title = (String) properties.get(ITerminalsConnectorConstants.PROP_TITLE); - return title != null ? title : null; - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/launcher/LauncherDelegateManager.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/launcher/LauncherDelegateManager.java deleted file mode 100644 index c84517baa69..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/launcher/LauncherDelegateManager.java +++ /dev/null @@ -1,425 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011 - 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.launcher; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.eclipse.core.expressions.EvaluationContext; -import org.eclipse.core.expressions.EvaluationResult; -import org.eclipse.core.expressions.Expression; -import org.eclipse.core.expressions.IEvaluationContext; -import org.eclipse.core.runtime.Assert; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IConfigurationElement; -import org.eclipse.core.runtime.IExtension; -import org.eclipse.core.runtime.IExtensionPoint; -import org.eclipse.core.runtime.IExtensionRegistry; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Platform; -import org.eclipse.core.runtime.Status; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.osgi.util.NLS; -import org.eclipse.tm.terminal.view.ui.activator.UIPlugin; -import org.eclipse.tm.terminal.view.ui.interfaces.ILauncherDelegate; -import org.eclipse.tm.terminal.view.ui.nls.Messages; -import org.eclipse.ui.ISources; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.handlers.IHandlerService; - -/** - * Terminal launcher delegate manager implementation. - */ -public class LauncherDelegateManager { - // Flag to mark the extension point manager initialized (extensions loaded). - private boolean initialized = false; - - // The map containing all loaded contributions - private final Map extensionsMap = new HashMap<>(); - - // The extension point comparator - private ExtensionPointComparator comparator = null; - - /** - * Executable extension proxy implementation. - */ - /* default */ static class Proxy { - // The extension instance. Created on first access - private ILauncherDelegate instance; - // The configuration element - private final IConfigurationElement element; - // The unique id of the extension. - private String id; - - /** - * Constructor. - * - * @param element The configuration element. Must not be null. - * @throws CoreException In case the configuration element attribute id is null or empty. - */ - public Proxy(IConfigurationElement element) throws CoreException { - Assert.isNotNull(element); - this.element = element; - - // Extract the extension attributes - id = element.getAttribute("id"); //$NON-NLS-1$ - if (id == null || id.trim().length() == 0) { - throw new CoreException(new Status(IStatus.ERROR, UIPlugin.getUniqueIdentifier(), 0, - NLS.bind(Messages.Extension_error_missingRequiredAttribute, "id", //$NON-NLS-1$ - element.getContributor().getName()), - null)); - } - - instance = null; - } - - /** - * Returns the extensions unique id. - * - * @return The unique id. - */ - public String getId() { - return id; - } - - /** - * Returns the configuration element for this extension. - * - * @return The configuration element. - */ - public IConfigurationElement getConfigurationElement() { - return element; - } - - /** - * Returns the extension class instance. The contributing - * plug-in will be activated if not yet activated anyway. - * - * @return The extension class instance or null if the instantiation fails. - */ - public ILauncherDelegate getInstance() { - if (instance == null) - instance = newInstance(); - return instance; - } - - /** - * Returns always a new extension class instance which is different - * to what {@link #getInstance()} would return. - * - * @return A new extension class instance or null if the instantiation fails. - */ - public ILauncherDelegate newInstance() { - IConfigurationElement element = getConfigurationElement(); - Assert.isNotNull(element); - - // The "class" to load can be specified either as attribute or as child element - if (element.getAttribute("class") != null || element.getChildren("class").length > 0) { //$NON-NLS-1$ //$NON-NLS-2$ - try { - return (ILauncherDelegate) element.createExecutableExtension("class"); //$NON-NLS-1$ - } catch (Exception e) { - // Possible exceptions: CoreException, ClassCastException. - Platform.getLog(UIPlugin.getDefault().getBundle()) - .log(new Status(IStatus.ERROR, UIPlugin.getUniqueIdentifier(), - NLS.bind(Messages.Extension_error_invalidExtensionPoint, - element.getDeclaringExtension().getUniqueIdentifier()), - e)); - } - } - return null; - } - - @Override - public boolean equals(Object obj) { - // Proxies are equal if they have encapsulate an element - // with the same unique id - if (obj instanceof Proxy) { - return getId().equals(((Proxy) obj).getId()); - } - return super.equals(obj); - } - - @Override - public int hashCode() { - // The hash code of a proxy is the one from the id - return getId().hashCode(); - } - } - - /** - * Extension point comparator implementation. - *

      - * The comparator assure that extension are read in a predictable order. - *

      - * The order of the extensions is defined as following:
      - *

      • Extensions contributed by our own plug-ins (org.eclipse.tm.terminal.*) - * in ascending alphabetic order and
      • - *
      • Extensions contributed by any other plug-in in ascending alphabetic order.
      • - *
      • Extensions contributed by the same plug-in in ascending alphabetic order by the - * extensions unique id
      • - */ - /* default */ static class ExtensionPointComparator implements Comparator { - private final static String OWN_PLUGINS_PATTERN = "org.eclipse.tm.terminal."; //$NON-NLS-1$ - - @Override - public int compare(IExtension o1, IExtension o2) { - // We ignore any comparisation with null and - if (o1 == null || o2 == null) - return 0; - // Check if it is the exact same element - if (o1 == o2) - return 0; - - // The extensions are compared by the unique id of the contributing plug-in first - String contributor1 = o1.getContributor().getName(); - String contributor2 = o2.getContributor().getName(); - - // Contributions from our own plug-ins comes before 3rdParty plug-ins - if (contributor1.startsWith(OWN_PLUGINS_PATTERN) && !contributor2.startsWith(OWN_PLUGINS_PATTERN)) - return -1; - if (!contributor1.startsWith(OWN_PLUGINS_PATTERN) && contributor2.startsWith(OWN_PLUGINS_PATTERN)) - return 1; - if (contributor1.startsWith(OWN_PLUGINS_PATTERN) && contributor2.startsWith(OWN_PLUGINS_PATTERN)) { - int value = contributor1.compareTo(contributor2); - // Within the same plug-in, the extension are sorted by their unique id (if available) - if (value == 0 && o1.getUniqueIdentifier() != null && o2.getUniqueIdentifier() != null) - return o1.getUniqueIdentifier().compareTo(o2.getUniqueIdentifier()); - // Otherwise, just return the comparisation result from the contributors - return value; - } - - // Contributions from all other plug-ins are sorted alphabetical - int value = contributor1.compareTo(contributor2); - // Within the same plug-in, the extension are sorted by their unique id (if available) - if (value == 0 && o1.getUniqueIdentifier() != null && o2.getUniqueIdentifier() != null) - return o1.getUniqueIdentifier().compareTo(o2.getUniqueIdentifier()); - // Otherwise, just return the comparisation result from the contributors - return value; - } - - } - - /* - * Thread save singleton instance creation. - */ - private static class LazyInstanceHolder { - public static LauncherDelegateManager instance = new LauncherDelegateManager(); - } - - /** - * Returns the singleton instance. - */ - public static LauncherDelegateManager getInstance() { - return LazyInstanceHolder.instance; - } - - /** - * Constructor. - */ - LauncherDelegateManager() { - super(); - } - - /** - * Returns the list of all contributed terminal launcher delegates. - * - * @param unique If true, the method returns new instances for each - * contributed terminal launcher delegate. - * - * @return The list of contributed terminal launcher delegates, or an empty array. - */ - public ILauncherDelegate[] getLauncherDelegates(boolean unique) { - List contributions = new ArrayList<>(); - for (Proxy launcherDelegate : getExtensions().values()) { - ILauncherDelegate instance = unique ? launcherDelegate.newInstance() : launcherDelegate.getInstance(); - if (instance != null && !contributions.contains(instance)) { - contributions.add(instance); - } - } - - return contributions.toArray(new ILauncherDelegate[contributions.size()]); - } - - /** - * Returns the terminal launcher delegate identified by its unique id. If no terminal - * launcher delegate with the specified id is registered, null is returned. - * - * @param id The unique id of the terminal launcher delegate or null - * @param unique If true, the method returns new instances of the terminal launcher delegate contribution. - * - * @return The terminal launcher delegate instance or null. - */ - public ILauncherDelegate getLauncherDelegate(String id, boolean unique) { - ILauncherDelegate contribution = null; - Map extensions = getExtensions(); - if (extensions.containsKey(id)) { - Proxy proxy = extensions.get(id); - // Get the extension instance - contribution = unique ? proxy.newInstance() : proxy.getInstance(); - } - - return contribution; - } - - /** - * Returns the applicable terminal launcher delegates for the given selection. - * - * @param selection The selection or null. - * @return The list of applicable terminal launcher delegates or an empty array. - */ - public ILauncherDelegate[] getApplicableLauncherDelegates(ISelection selection) { - List applicable = new ArrayList<>(); - - for (ILauncherDelegate delegate : getLauncherDelegates(false)) { - Expression enablement = delegate.getEnablement(); - - // The launcher delegate is applicable by default if - // no expression is specified. - boolean isApplicable = enablement == null; - - if (enablement != null) { - if (selection != null) { - // Set the default variable to selection. - IEvaluationContext currentState = PlatformUI.getWorkbench().getService(IHandlerService.class) - .getCurrentState(); - EvaluationContext context = new EvaluationContext(currentState, selection); - // Set the "selection" variable to the selection. - context.addVariable(ISources.ACTIVE_CURRENT_SELECTION_NAME, selection); - // Allow plug-in activation - context.setAllowPluginActivation(true); - // Evaluate the expression - try { - isApplicable = enablement.evaluate(context).equals(EvaluationResult.TRUE); - } catch (CoreException e) { - IStatus status = new Status(IStatus.ERROR, UIPlugin.getUniqueIdentifier(), - e.getLocalizedMessage(), e); - UIPlugin.getDefault().getLog().log(status); - } - } else { - // The enablement is false by definition if - // there is no selection. - isApplicable = false; - } - } - - // Add the page if applicable - if (isApplicable) - applicable.add(delegate); - } - - return applicable.toArray(new ILauncherDelegate[applicable.size()]); - } - - /** - * Returns the map of managed extensions. If not loaded before, - * this methods trigger the loading of the extensions to the managed - * extension point. - * - * @return The map of extensions. - */ - protected Map getExtensions() { - // Load and store the extensions thread-safe! - synchronized (extensionsMap) { - if (!initialized) { - loadExtensions(); - initialized = true; - } - } - return extensionsMap; - } - - /** - * Returns the extension point comparator instance. If not available, - * {@link #doCreateExtensionPointComparator()} is called to create a new instance. - * - * @return The extension point comparator or null if the instance creation fails. - */ - protected final ExtensionPointComparator getExtensionPointComparator() { - if (comparator == null) { - comparator = new ExtensionPointComparator(); - } - return comparator; - } - - /** - * Returns the extensions of the specified extension point sorted. - *

        - * For the order of the extensions, see {@link ExtensionPointComparator}. - * - * @param point The extension point. Must not be null. - * @return The extensions in sorted order or an empty array if the extension point has no extensions. - */ - protected IExtension[] getExtensionsSorted(IExtensionPoint point) { - Assert.isNotNull(point); - - List extensions = new ArrayList<>(Arrays.asList(point.getExtensions())); - if (extensions.size() > 0) { - Collections.sort(extensions, getExtensionPointComparator()); - } - - return extensions.toArray(new IExtension[extensions.size()]); - } - - /** - * Loads the extensions for the managed extension point. - */ - protected void loadExtensions() { - // If already initialized, this method will do nothing. - if (initialized) - return; - - IExtensionRegistry registry = Platform.getExtensionRegistry(); - IExtensionPoint point = registry.getExtensionPoint("org.eclipse.tm.terminal.view.ui.launcherDelegates"); //$NON-NLS-1$ - if (point != null) { - IExtension[] extensions = getExtensionsSorted(point); - for (IExtension extension : extensions) { - IConfigurationElement[] elements = extension.getConfigurationElements(); - for (IConfigurationElement element : elements) { - if ("delegate".equals(element.getName())) { //$NON-NLS-1$ - try { - Proxy candidate = new Proxy(element); - if (candidate.getId() != null) { - // If no extension with this id had been registered before, register now. - if (!extensionsMap.containsKey(candidate.getId())) { - extensionsMap.put(candidate.getId(), candidate); - } else { - throw new CoreException( - new Status(IStatus.ERROR, UIPlugin.getUniqueIdentifier(), 0, - NLS.bind(Messages.Extension_error_duplicateExtension, - candidate.getId(), element.getContributor().getName()), - null)); - } - } else { - throw new CoreException(new Status(IStatus.ERROR, UIPlugin.getUniqueIdentifier(), 0, - NLS.bind(Messages.Extension_error_missingRequiredAttribute, "id", //$NON-NLS-1$ - element.getAttribute("label")), //$NON-NLS-1$ - null)); - } - } catch (CoreException e) { - Platform.getLog(UIPlugin.getDefault().getBundle()) - .log(new Status(IStatus.ERROR, UIPlugin.getUniqueIdentifier(), - NLS.bind(Messages.Extension_error_invalidExtensionPoint, - element.getDeclaringExtension().getUniqueIdentifier()), - e)); - } - } - } - } - } - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/listeners/AbstractWindowListener.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/listeners/AbstractWindowListener.java deleted file mode 100644 index 827ef1cd2bd..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/listeners/AbstractWindowListener.java +++ /dev/null @@ -1,123 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2013, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.listeners; - -import org.eclipse.ui.IPartListener2; -import org.eclipse.ui.IPartService; -import org.eclipse.ui.IPerspectiveListener; -import org.eclipse.ui.IWindowListener; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.IWorkbenchPartReference; -import org.eclipse.ui.IWorkbenchWindow; - -/** - * Abstract window listener implementation. - */ -public abstract class AbstractWindowListener implements IWindowListener { - // The part listener instance - protected final IPartListener2 partListener; - // The perspective listener instance - protected final IPerspectiveListener perspectiveListener; - - // Flag to remember if the initialization is done or not - private boolean initialized = false; - - /** - * Constructor - */ - public AbstractWindowListener() { - // Create the part listener instance - partListener = createPartListener(); - // Create the perspective listener instance - perspectiveListener = createPerspectiveListener(); - } - - /** - * Creates a new part listener instance. - *

        - * Note: The default implementation returns null. - * - * @return The part listener instance or null. - */ - protected IPartListener2 createPartListener() { - return null; - } - - /** - * Creates a new perspective listener instance. - *

        - * Note: The default implementation returns null. - * - * @return The perspective listener instance or null. - */ - protected IPerspectiveListener createPerspectiveListener() { - return null; - } - - @Override - public void windowActivated(IWorkbenchWindow window) { - if (!initialized && window != null) { - windowOpened(window); - } - } - - @Override - public void windowDeactivated(IWorkbenchWindow window) { - } - - @Override - public void windowClosed(IWorkbenchWindow window) { - // On close, remove the listeners from the window - if (window != null) { - if (window.getPartService() != null && partListener != null) { - window.getPartService().removePartListener(partListener); - } - - if (perspectiveListener != null) - window.removePerspectiveListener(perspectiveListener); - } - } - - @Override - public void windowOpened(IWorkbenchWindow window) { - if (window != null) { - // On open, register the part listener to the window - if (window.getPartService() != null && partListener != null) { - // Get the part service - IPartService service = window.getPartService(); - // Unregister the part listener, just in case - service.removePartListener(partListener); - // Register the part listener - service.addPartListener(partListener); - // Signal the active part to the part listener after registration - IWorkbenchPage page = window.getActivePage(); - if (page != null) { - IWorkbenchPartReference partRef = page.getActivePartReference(); - if (partRef != null) - partListener.partActivated(partRef); - } - } - - // Register the perspective listener - if (perspectiveListener != null) { - window.addPerspectiveListener(perspectiveListener); - // Signal the active perspective to the perspective listener after registration - if (window.getActivePage() != null) { - perspectiveListener.perspectiveActivated(window.getActivePage(), - window.getActivePage().getPerspective()); - } - } - - initialized = true; - } - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/listeners/WorkbenchPartListener.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/listeners/WorkbenchPartListener.java deleted file mode 100644 index b8dff58b0fe..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/listeners/WorkbenchPartListener.java +++ /dev/null @@ -1,90 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.listeners; - -import java.util.HashMap; -import java.util.Map; - -import org.eclipse.ui.IPartListener2; -import org.eclipse.ui.IWorkbenchPart; -import org.eclipse.ui.IWorkbenchPartReference; -import org.eclipse.ui.contexts.IContextActivation; -import org.eclipse.ui.contexts.IContextService; - -/** - * The part listener implementation. Takes care of - * activation and deactivation of key binding contexts. - */ -public class WorkbenchPartListener implements IPartListener2 { - - // The context activations per workbench part reference - private final Map activations = new HashMap<>(); - - @Override - public void partBroughtToTop(IWorkbenchPartReference partRef) { - } - - @Override - public void partOpened(IWorkbenchPartReference partRef) { - } - - @Override - public void partClosed(IWorkbenchPartReference partRef) { - } - - @Override - public void partVisible(IWorkbenchPartReference partRef) { - } - - @Override - public void partHidden(IWorkbenchPartReference partRef) { - } - - @Override - public void partActivated(IWorkbenchPartReference partRef) { - if ("org.eclipse.tm.terminal.view.ui.TerminalsView".equals(partRef.getId())) { //$NON-NLS-1$ - IWorkbenchPart part = partRef.getPart(false); - if (part != null && part.getSite() != null) { - IContextService service = part.getSite().getService(IContextService.class); - if (service != null) { - IContextActivation activation = service.activateContext(partRef.getId()); - if (activation != null) { - activations.put(partRef, activation); - } else { - activations.remove(partRef); - } - } - } - } - } - - @Override - public void partDeactivated(IWorkbenchPartReference partRef) { - if ("org.eclipse.tm.terminal.view.ui.TerminalsView".equals(partRef.getId())) { //$NON-NLS-1$ - IWorkbenchPart part = partRef.getPart(false); - if (part != null && part.getSite() != null) { - IContextService service = part.getSite().getService(IContextService.class); - if (service != null) { - IContextActivation activation = activations.remove(partRef); - if (activation != null) { - service.deactivateContext(activation); - } - } - } - } - } - - @Override - public void partInputChanged(IWorkbenchPartReference partRef) { - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/listeners/WorkbenchWindowListener.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/listeners/WorkbenchWindowListener.java deleted file mode 100644 index dd7bd71ac6f..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/listeners/WorkbenchWindowListener.java +++ /dev/null @@ -1,26 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2014, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.listeners; - -import org.eclipse.ui.IPartListener2; - -/** - * The window listener implementation. Takes care of the - * management of the global listeners per workbench window. - */ -public class WorkbenchWindowListener extends AbstractWindowListener { - - @Override - protected IPartListener2 createPartListener() { - return new WorkbenchPartListener(); - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/DynamicContributionItems.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/DynamicContributionItems.java deleted file mode 100644 index 9182ffb27aa..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/DynamicContributionItems.java +++ /dev/null @@ -1,131 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2014, 2021 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.local.showin; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.jface.action.Action; -import org.eclipse.jface.action.ActionContributionItem; -import org.eclipse.jface.action.IAction; -import org.eclipse.jface.action.IContributionItem; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.swt.graphics.ImageData; -import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants; -import org.eclipse.tm.terminal.view.ui.interfaces.IExternalExecutablesProperties; -import org.eclipse.tm.terminal.view.ui.interfaces.ILauncherDelegate; -import org.eclipse.tm.terminal.view.ui.launcher.LauncherDelegateManager; -import org.eclipse.ui.ISelectionService; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.actions.CompoundContributionItem; -import org.eclipse.ui.menus.IWorkbenchContribution; -import org.eclipse.ui.services.IServiceLocator; - -/** - * Dynamic "Show In" contribution items implementation. - */ -public class DynamicContributionItems extends CompoundContributionItem implements IWorkbenchContribution { - // Service locator to located the handler service. - protected IServiceLocator serviceLocator; - // Reference to the local terminal launcher delegate - /* default */ ILauncherDelegate delegate; - - @Override - public void initialize(IServiceLocator serviceLocator) { - this.serviceLocator = serviceLocator; - - // Get the local terminal launcher delegate - delegate = LauncherDelegateManager.getInstance() - .getLauncherDelegate("org.eclipse.tm.terminal.connector.local.launcher.local", false); //$NON-NLS-1$ - } - - @Override - protected IContributionItem[] getContributionItems() { - List items = new ArrayList<>(); - - if (delegate != null) { - List> l = ExternalExecutablesManager.load(); - if (l != null && !l.isEmpty()) { - for (Map executableData : l) { - String name = executableData.get(IExternalExecutablesProperties.PROP_NAME); - String path = executableData.get(IExternalExecutablesProperties.PROP_PATH); - String args = executableData.get(IExternalExecutablesProperties.PROP_ARGS); - String icon = executableData.get(IExternalExecutablesProperties.PROP_ICON); - - String strTranslate = executableData.get(IExternalExecutablesProperties.PROP_TRANSLATE); - boolean translate = strTranslate != null ? Boolean.parseBoolean(strTranslate) : false; - - if (name != null && !"".equals(name) && path != null && !"".equals(path)) { //$NON-NLS-1$ //$NON-NLS-2$ - IAction action = createAction(name, path, args, translate); - - ImageData id = icon != null ? ExternalExecutablesUtils.loadImage(icon) : null; - if (id != null) { - ImageDescriptor desc = ImageDescriptor.createFromImageData(id); - if (desc != null) - action.setImageDescriptor(desc); - } - - IContributionItem item = new ActionContributionItem(action); - items.add(item); - } - } - } - } - - return items.toArray(new IContributionItem[items.size()]); - } - - /** - * Creates the action to execute. - * - * @param label The label. Must not be null. - * @param path The executable path. Must not be null. - * @param args The executable arguments or null. - * @param translate Translate backslashes. - * - * @return The action to execute. - */ - protected IAction createAction(final String label, final String path, final String args, final boolean translate) { - Assert.isNotNull(label); - Assert.isNotNull(path); - - IAction action = new Action(label) { - @Override - public void run() { - Assert.isNotNull(delegate); - - ISelectionService service = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService(); - ISelection selection = service != null ? service.getSelection() : null; - if (selection != null && selection.isEmpty()) - selection = null; - - Map properties = new HashMap<>(); - properties.put(ITerminalsConnectorConstants.PROP_DELEGATE_ID, delegate.getId()); - if (selection != null) - properties.put(ITerminalsConnectorConstants.PROP_SELECTION, selection); - properties.put(ITerminalsConnectorConstants.PROP_PROCESS_PATH, path); - if (args != null) - properties.put(ITerminalsConnectorConstants.PROP_PROCESS_ARGS, args); - properties.put(ITerminalsConnectorConstants.PROP_TRANSLATE_BACKSLASHES_ON_PASTE, - Boolean.valueOf(translate)); - - delegate.execute(properties, null); - } - }; - - return action; - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/ExternalExecutablesDialog.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/ExternalExecutablesDialog.java deleted file mode 100644 index 81f03e6a5e8..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/ExternalExecutablesDialog.java +++ /dev/null @@ -1,446 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2014, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.local.showin; - -import java.io.File; -import java.util.HashMap; -import java.util.Map; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.Path; -import org.eclipse.core.runtime.Platform; -import org.eclipse.jface.dialogs.IDialogConstants; -import org.eclipse.jface.dialogs.TrayDialog; -import org.eclipse.swt.SWT; -import org.eclipse.swt.custom.ScrolledComposite; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.FileDialog; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.swt.widgets.Text; -import org.eclipse.tm.terminal.view.ui.help.IContextHelpIds; -import org.eclipse.tm.terminal.view.ui.interfaces.IExternalExecutablesProperties; -import org.eclipse.tm.terminal.view.ui.nls.Messages; -import org.eclipse.ui.PlatformUI; -import org.osgi.framework.Bundle; - -/** - * External executables dialog implementation. - */ -public class ExternalExecutablesDialog extends TrayDialog { - private String contextHelpId = null; - private final boolean edit; - - private Text name; - /* default */ Text path; - private Text args; - /* default */ Text icon; - private Button translate; - - /* default */ String last_filter_path = null; - /* default */ String last_filter_icon = null; - - private Map executableData; - - /** - * Constructor. - * - * @param shell The parent shell or null. - */ - public ExternalExecutablesDialog(Shell shell, boolean edit) { - super(shell); - this.edit = edit; - - this.contextHelpId = IContextHelpIds.EXTERNAL_EXECUTABLES_DIALOG; - setHelpAvailable(true); - } - - @Override - protected final Control createDialogArea(Composite parent) { - if (contextHelpId != null) { - PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, contextHelpId); - } - - // Let the super implementation create the dialog area control - Control control = super.createDialogArea(parent); - // Setup the inner panel as scrollable composite - if (control instanceof Composite) { - ScrolledComposite sc = new ScrolledComposite((Composite) control, SWT.V_SCROLL); - - GridLayout layout = new GridLayout(1, true); - layout.marginHeight = 0; - layout.marginWidth = 0; - layout.verticalSpacing = 0; - layout.horizontalSpacing = 0; - - sc.setLayout(layout); - sc.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true)); - - sc.setExpandHorizontal(true); - sc.setExpandVertical(true); - - Composite composite = new Composite(sc, SWT.NONE); - composite.setLayout(new GridLayout()); - - // Setup the dialog area content - createDialogAreaContent(composite); - - sc.setContent(composite); - sc.setMinSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT)); - - // Return the scrolled composite as new dialog area control - control = sc; - } - - return control; - } - - /** - * Creates the dialog area content. - * - * @param parent The parent composite. Must not be null. - */ - protected void createDialogAreaContent(Composite parent) { - Assert.isNotNull(parent); - - setDialogTitle( - edit ? Messages.ExternalExecutablesDialog_title_edit : Messages.ExternalExecutablesDialog_title_add); - - Composite panel = new Composite(parent, SWT.NONE); - GridLayout layout = new GridLayout(2, false); - layout.marginHeight = 0; - layout.marginWidth = 0; - panel.setLayout(layout); - GridData layoutData = new GridData(SWT.FILL, SWT.CENTER, true, true); - layoutData.widthHint = convertWidthInCharsToPixels(50); - panel.setLayoutData(layoutData); - - Label label = new Label(panel, SWT.HORIZONTAL); - label.setText(Messages.ExternalExecutablesDialog_field_name); - layoutData = new GridData(SWT.BEGINNING, SWT.CENTER, false, false); - label.setLayoutData(layoutData); - - name = new Text(panel, SWT.HORIZONTAL | SWT.SINGLE | SWT.BORDER); - layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false); - layoutData.widthHint = convertWidthInCharsToPixels(30); - name.setLayoutData(layoutData); - name.addModifyListener(e -> validate()); - - label = new Label(panel, SWT.HORIZONTAL); - label.setText(Messages.ExternalExecutablesDialog_field_path); - layoutData = new GridData(SWT.BEGINNING, SWT.CENTER, false, false); - label.setLayoutData(layoutData); - - Composite panel2 = new Composite(panel, SWT.NONE); - layout = new GridLayout(2, false); - layout.marginHeight = 0; - layout.marginWidth = 0; - panel2.setLayout(layout); - layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false); - panel2.setLayoutData(layoutData); - - path = new Text(panel2, SWT.HORIZONTAL | SWT.SINGLE | SWT.BORDER); - layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false); - layoutData.widthHint = convertWidthInCharsToPixels(30); - path.setLayoutData(layoutData); - path.addModifyListener(e -> validate()); - - Button button = new Button(panel2, SWT.PUSH); - button.setText(Messages.ExternalExecutablesDialog_button_browse); - layoutData = new GridData(SWT.BEGINNING, SWT.CENTER, false, false); - layoutData.widthHint = convertWidthInCharsToPixels(10); - button.setLayoutData(layoutData); - button.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - FileDialog dialog = new FileDialog(getShell(), SWT.OPEN); - - String selectedFile = path.getText(); - if (selectedFile != null && selectedFile.trim().length() > 0) { - IPath filePath = new Path(selectedFile); - // If the selected file points to an directory, use the directory as is - IPath filterPath = filePath.toFile().isDirectory() ? filePath : filePath.removeLastSegments(1); - while (filterPath != null && filterPath.segmentCount() > 1 && !filterPath.toFile().exists()) { - filterPath = filterPath.removeLastSegments(1); - } - String filterFileName = filePath.toFile().isDirectory() || !filePath.toFile().exists() ? null - : filePath.lastSegment(); - - if (filterPath != null && !filterPath.isEmpty()) - dialog.setFilterPath(filterPath.toString()); - if (filterFileName != null) - dialog.setFileName(filterFileName); - } else { - String workspace = null; - Bundle bundle = Platform.getBundle("org.eclipse.core.resources"); //$NON-NLS-1$ - if (bundle != null && bundle.getState() != Bundle.UNINSTALLED - && bundle.getState() != Bundle.STOPPING) { - workspace = org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot().getLocation() - .toOSString(); - } - - String filterPath = last_filter_path != null ? last_filter_path : workspace; - dialog.setFilterPath(filterPath); - } - - selectedFile = dialog.open(); - if (selectedFile != null) { - last_filter_path = dialog.getFilterPath(); - path.setText(selectedFile); - } - } - }); - - label = new Label(panel, SWT.HORIZONTAL); - label.setText(Messages.ExternalExecutablesDialog_field_args); - layoutData = new GridData(SWT.BEGINNING, SWT.CENTER, false, false); - label.setLayoutData(layoutData); - - args = new Text(panel, SWT.HORIZONTAL | SWT.SINGLE | SWT.BORDER); - layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false); - layoutData.widthHint = convertWidthInCharsToPixels(30); - args.setLayoutData(layoutData); - args.addModifyListener(e -> validate()); - - label = new Label(panel, SWT.HORIZONTAL); - label.setText(Messages.ExternalExecutablesDialog_field_icon); - layoutData = new GridData(SWT.BEGINNING, SWT.CENTER, false, false); - label.setLayoutData(layoutData); - - panel2 = new Composite(panel, SWT.NONE); - layout = new GridLayout(2, false); - layout.marginHeight = 0; - layout.marginWidth = 0; - panel2.setLayout(layout); - layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false); - panel2.setLayoutData(layoutData); - - icon = new Text(panel2, SWT.HORIZONTAL | SWT.SINGLE | SWT.BORDER); - layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false); - layoutData.widthHint = convertWidthInCharsToPixels(30); - icon.setLayoutData(layoutData); - icon.addModifyListener(e -> validate()); - - button = new Button(panel2, SWT.PUSH); - button.setText(Messages.ExternalExecutablesDialog_button_browse); - layoutData = new GridData(SWT.BEGINNING, SWT.CENTER, false, false); - layoutData.widthHint = convertWidthInCharsToPixels(10); - button.setLayoutData(layoutData); - button.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - FileDialog dialog = new FileDialog(getShell(), SWT.OPEN); - - String selectedFile = icon.getText(); - if (selectedFile != null && selectedFile.trim().length() > 0) { - IPath filePath = new Path(selectedFile); - // If the selected file points to an directory, use the directory as is - IPath filterPath = filePath.toFile().isDirectory() ? filePath : filePath.removeLastSegments(1); - while (filterPath != null && filterPath.segmentCount() > 1 && !filterPath.toFile().exists()) { - filterPath = filterPath.removeLastSegments(1); - } - String filterFileName = filePath.toFile().isDirectory() || !filePath.toFile().exists() ? null - : filePath.lastSegment(); - - if (filterPath != null && !filterPath.isEmpty()) - dialog.setFilterPath(filterPath.toString()); - if (filterFileName != null) - dialog.setFileName(filterFileName); - } else { - String workspace = null; - Bundle bundle = Platform.getBundle("org.eclipse.core.resources"); //$NON-NLS-1$ - if (bundle != null && bundle.getState() != Bundle.UNINSTALLED - && bundle.getState() != Bundle.STOPPING) { - workspace = org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot().getLocation() - .toOSString(); - } - - String filterPath = last_filter_icon != null ? last_filter_icon : workspace; - dialog.setFilterPath(filterPath); - } - - selectedFile = dialog.open(); - if (selectedFile != null) { - last_filter_icon = dialog.getFilterPath(); - icon.setText(selectedFile); - } - } - }); - - translate = new Button(panel, SWT.CHECK); - translate.setText(Messages.ExternalExecutablesDialog_field_translate); - layoutData = new GridData(SWT.FILL, SWT.TOP, true, false); - layoutData.horizontalSpan = 2; - translate.setLayoutData(layoutData); - translate.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - validate(); - } - }); - - if (executableData != null) { - String value = executableData.get(IExternalExecutablesProperties.PROP_NAME); - name.setText(value != null && !"".equals(value.trim()) ? value : ""); //$NON-NLS-1$ //$NON-NLS-2$ - value = executableData.get(IExternalExecutablesProperties.PROP_PATH); - path.setText(value != null && !"".equals(value.trim()) ? value : ""); //$NON-NLS-1$ //$NON-NLS-2$ - value = executableData.get(IExternalExecutablesProperties.PROP_ARGS); - args.setText(value != null && !"".equals(value.trim()) ? value : ""); //$NON-NLS-1$ //$NON-NLS-2$ - value = executableData.get(IExternalExecutablesProperties.PROP_ICON); - icon.setText(value != null && !"".equals(value.trim()) ? value : ""); //$NON-NLS-1$ //$NON-NLS-2$ - value = executableData.get(IExternalExecutablesProperties.PROP_TRANSLATE); - translate.setSelection(value != null ? Boolean.parseBoolean(value) : false); - } - } - - @Override - protected Control createButtonBar(Composite parent) { - Control control = super.createButtonBar(parent); - validate(); - return control; - } - - @Override - protected Button createButton(Composite parent, int id, String label, boolean defaultButton) { - if (IDialogConstants.OK_ID == id && !edit) { - label = Messages.ExternalExecutablesDialog_button_add; - } - return super.createButton(parent, id, label, defaultButton); - } - - @Override - protected void okPressed() { - if (name != null && path != null) { - // Extract the executable properties - if (executableData == null) - executableData = new HashMap<>(); - - String value = name.getText(); - if (value != null && !"".equals(value.trim())) { //$NON-NLS-1$ - executableData.put(IExternalExecutablesProperties.PROP_NAME, value); - } else { - executableData.remove(IExternalExecutablesProperties.PROP_NAME); - } - - value = path.getText(); - if (value != null && !"".equals(value.trim())) { //$NON-NLS-1$ - executableData.put(IExternalExecutablesProperties.PROP_PATH, value); - } else { - executableData.remove(IExternalExecutablesProperties.PROP_PATH); - } - - value = args.getText(); - if (value != null && !"".equals(value.trim())) { //$NON-NLS-1$ - executableData.put(IExternalExecutablesProperties.PROP_ARGS, value); - } else { - executableData.remove(IExternalExecutablesProperties.PROP_ARGS); - } - - value = icon.getText(); - if (value != null && !"".equals(value.trim())) { //$NON-NLS-1$ - executableData.put(IExternalExecutablesProperties.PROP_ICON, value); - } else { - executableData.remove(IExternalExecutablesProperties.PROP_ICON); - } - - if (translate.getSelection()) { - executableData.put(IExternalExecutablesProperties.PROP_TRANSLATE, Boolean.TRUE.toString()); - } else { - executableData.remove(IExternalExecutablesProperties.PROP_TRANSLATE); - } - } else { - executableData = null; - } - super.okPressed(); - } - - @Override - protected void cancelPressed() { - // If the user pressed cancel, the dialog needs to return null - executableData = null; - super.cancelPressed(); - } - - /** - * Returns the executable properties the user entered. - * - * @return The executable properties or null. - */ - public Map getExecutableData() { - return executableData; - } - - /** - * Set or reset the executable properties. This method has effect - * only if called before opening the dialog. - * - * @param data The executable properties or null. - */ - public void setExecutableData(Map data) { - if (data == null) { - executableData = null; - } else { - executableData = new HashMap<>(data); - } - } - - /** - * Validate the dialog. - */ - public void validate() { - boolean valid = true; - - if (name != null && !name.isDisposed()) { - valid = !"".equals(name.getText()); //$NON-NLS-1$ - } - - if (path != null && !path.isDisposed()) { - String value = path.getText(); - if (!"".equals(value)) { //$NON-NLS-1$ - File f = new File(value); - valid |= f.isAbsolute() && f.canRead(); - } else { - valid = false; - } - } - - if (icon != null && !icon.isDisposed()) { - String value = icon.getText(); - if (!"".equals(value)) { //$NON-NLS-1$ - File f = new File(value); - valid |= f.isAbsolute() && f.canRead(); - } - } - - Button okButton = getButton(IDialogConstants.OK_ID); - if (okButton != null) - okButton.setEnabled(valid); - } - - /** - * Sets the title for this dialog. - * - * @param title The title. - */ - public void setDialogTitle(String title) { - if (getShell() != null && !getShell().isDisposed()) { - getShell().setText(title); - } - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/ExternalExecutablesManager.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/ExternalExecutablesManager.java deleted file mode 100644 index ca5c403a086..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/ExternalExecutablesManager.java +++ /dev/null @@ -1,216 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2014, 2021 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - * Dirk Fauth - Bug 460496 - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.local.showin; - -import java.io.File; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Properties; -import java.util.stream.Collectors; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.Platform; -import org.eclipse.tm.terminal.view.ui.activator.UIPlugin; -import org.eclipse.tm.terminal.view.ui.internal.ExternalExecutablesState; -import org.eclipse.tm.terminal.view.ui.local.showin.detectors.DetectGitBash; -import org.eclipse.tm.terminal.view.ui.local.showin.detectors.DetectWSL; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.services.ISourceProviderService; - -/** - * External executables manager implementation. - */ -public class ExternalExecutablesManager { - // XXX: This may make a useful extension point? - private static List detectors = List.of(new DetectGitBash(), new DetectWSL()); - - public static boolean hasEntries() { - IPath stateLocation = UIPlugin.getDefault().getStateLocation(); - if (stateLocation != null) { - File f = stateLocation.append(".executables/data.properties").toFile(); //$NON-NLS-1$ - if (f.canRead()) { - - try (FileReader r = new FileReader(f)) { - Properties data = new Properties(); - data.load(r); - if (!data.isEmpty()) { - return true; - } - } catch (IOException e) { - if (Platform.inDebugMode()) { - e.printStackTrace(); - } - } - } - } - - // There are not any saved entries - run the detectors and if any of them - // have entries, then we can stop. - for (IDetectExternalExecutable iDetectExternalExecutable : detectors) { - if (iDetectExternalExecutable.hasEntries()) { - return true; - } - } - - return false; - } - - /** - * Loads the list of all saved external executables. - * - * @return The list of all saved external executables or null. - */ - public static List> load() { - List> externalExecutables = new ArrayList<>(); - - IPath stateLocation = UIPlugin.getDefault().getStateLocation(); - if (stateLocation != null) { - File f = stateLocation.append(".executables/data.properties").toFile(); //$NON-NLS-1$ - if (f.canRead()) { - FileReader r = null; - - try { - Properties data = new Properties(); - r = new FileReader(f); - data.load(r); - - Map> c = new HashMap<>(); - for (String name : data.stringPropertyNames()) { - if (name == null || name.indexOf('.') == -1) - continue; - int ix = name.indexOf('.'); - String n = name.substring(0, ix); - String k = (ix + 1) < name.length() ? name.substring(ix + 1) : null; - if (n == null || k == null) - continue; - - Integer i = null; - try { - i = Integer.decode(n); - } catch (NumberFormatException e) { - /* ignored on purpose */ } - if (i == null) - continue; - - Map m = c.get(i); - if (m == null) { - m = new HashMap<>(); - c.put(i, m); - } - Assert.isNotNull(m); - - m.put(k, data.getProperty(name)); - } - - List k = new ArrayList<>(c.keySet()); - Collections.sort(k); - for (Integer i : k) { - Map m = c.get(i); - if (m != null && !m.isEmpty()) - externalExecutables.add(m); - } - } catch (Exception e) { - if (Platform.inDebugMode()) { - e.printStackTrace(); - } - } finally { - if (r != null) - try { - r.close(); - } catch (IOException e) { - /* ignored on purpose */ - } - } - } - } - - var readOnly = Collections.unmodifiableList(externalExecutables); - var detected = detectors.stream().flatMap(detector -> detector.getEntries(readOnly).stream()) - .collect(Collectors.toList()); - if (!detected.isEmpty()) { - externalExecutables.addAll(detected); - save(externalExecutables); - } - - return externalExecutables; - } - - /** - * Saves the list of external executables. - * - * @param externalExecutables The list of external executables or null. - */ - public static void save(List> externalExecutables) { - ISourceProviderService sourceProviderService = PlatformUI.getWorkbench() - .getService(ISourceProviderService.class); - ExternalExecutablesState stateService = (ExternalExecutablesState) sourceProviderService - .getSourceProvider(ExternalExecutablesState.CONFIGURED_STATE); - - IPath stateLocation = UIPlugin.getDefault().getStateLocation(); - if (stateLocation != null) { - File f = stateLocation.append(".executables/data.properties").toFile(); //$NON-NLS-1$ - if (f.isFile() && (externalExecutables == null || externalExecutables.isEmpty())) { - @SuppressWarnings("unused") - boolean s = f.delete(); - - if (stateService != null) - stateService.disable(); - } else { - FileWriter w = null; - - try { - Properties data = new Properties(); - for (int i = 0; i < externalExecutables.size(); i++) { - Map m = externalExecutables.get(i); - for (Entry e : m.entrySet()) { - String key = Integer.toString(i) + "." + e.getKey(); //$NON-NLS-1$ - data.setProperty(key, e.getValue()); - } - } - - if (!f.exists()) { - @SuppressWarnings("unused") - boolean s = f.getParentFile().mkdirs(); - s = f.createNewFile(); - } - w = new FileWriter(f); - data.store(w, null); - - if (stateService != null) - stateService.enable(); - } catch (Exception e) { - if (Platform.inDebugMode()) { - e.printStackTrace(); - } - } finally { - if (w != null) { - try { - w.flush(); - w.close(); - } catch (IOException e) { - /* ignored on purpose */ - } - } - } - } - } - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/ExternalExecutablesUtils.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/ExternalExecutablesUtils.java deleted file mode 100644 index a62211cae62..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/ExternalExecutablesUtils.java +++ /dev/null @@ -1,85 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2021 Kichwa Coders Canada Inc. and others. - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.local.showin; - -import java.io.File; -import java.util.Optional; -import java.util.StringTokenizer; -import java.util.function.Function; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.swt.graphics.ImageData; -import org.eclipse.swt.graphics.ImageLoader; - -public class ExternalExecutablesUtils { - - /** - * Loads the image data suitable for showing an icon in a menu - * (16 x 16, 8bit depth) from the given file. - * - * @param path The image file path. Must not be null. - * @return The image data or null. - */ - public static ImageData loadImage(String path) { - Assert.isNotNull(path); - - ImageData id = null; - ImageData biggest = null; - - ImageLoader loader = new ImageLoader(); - ImageData[] data = loader.load(path); - - if (data != null) { - for (ImageData d : data) { - if (d.height == 16 && d.width == 16) { - if (id == null || id.height != 16 && id.width != 16) { - id = d; - } else if (d.depth < id.depth && d.depth >= 8) { - id = d; - } - } else { - if (id == null) { - id = d; - biggest = d; - } else if (id.height != 16 && d.height < id.height && id.width != 16 && d.width < id.width) { - id = d; - } else if (biggest == null || d.height > biggest.height && d.width > biggest.width) { - biggest = d; - } - } - } - } - - // if the icon is still too big -> downscale the biggest - if (id != null && id.height > 16 && id.width > 16 && biggest != null) { - id = biggest.scaledTo(16, 16); - } - - return id; - } - - public static Optional visitPATH(Function> r) { - String path = System.getenv("PATH"); //$NON-NLS-1$ - if (path != null) { - StringTokenizer tokenizer = new StringTokenizer(path, File.pathSeparator); - while (tokenizer.hasMoreTokens()) { - String token = tokenizer.nextToken(); - - Optional apply = r.apply(token); - if (apply.isPresent()) { - return apply; - } - } - } - return Optional.empty(); - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/IDetectExternalExecutable.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/IDetectExternalExecutable.java deleted file mode 100644 index 4fd8083ed7a..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/IDetectExternalExecutable.java +++ /dev/null @@ -1,41 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2021 Kichwa Coders Canada Inc. and others. - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.local.showin; - -import java.util.List; -import java.util.Map; - -import org.eclipse.tm.terminal.view.ui.interfaces.IExternalExecutablesProperties; - -public interface IDetectExternalExecutable { - /** - * Detect if {@link #getEntries(List)} will return a non-empty list of entries, assuming externalEntries is an empty - * list. This method is used during critical UI times (such as startup) and should be very fast. - */ - boolean hasEntries(); - - /** - * Detect any additional external executables that can be added to the Show In list. - * - * This method is sometimes called in the UI thread when displaying context menus, so should - * either be very fast, or it should use a flag to not re-run multiple times after the initial detection. - * - * The same instance of the {@link IDetectExternalExecutable} will be used on each invocation of this method. - * - * @param externalExecutables is the list of executables already present that can be used to prevent duplicate - * entries. This list should not be modified. - * @return a list of additional items to add to the external executables list. Each map entry should have keys - * that match {@link IExternalExecutablesProperties}. Must not return null, return - * an empty list instead. - */ - List> getEntries(List> externalExecutables); - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/detectors/DetectGitBash.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/detectors/DetectGitBash.java deleted file mode 100644 index 4d056b449c9..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/detectors/DetectGitBash.java +++ /dev/null @@ -1,126 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2021 Kichwa Coders Canada Inc. and others. - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.local.showin.detectors; - -import java.io.File; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.function.Predicate; - -import org.eclipse.core.runtime.Platform; -import org.eclipse.tm.terminal.view.ui.interfaces.IExternalExecutablesProperties; -import org.eclipse.tm.terminal.view.ui.local.showin.ExternalExecutablesUtils; -import org.eclipse.tm.terminal.view.ui.local.showin.IDetectExternalExecutable; - -public class DetectGitBash implements IDetectExternalExecutable { - - private static final String GIT_BASH = "Git Bash"; //$NON-NLS-1$ - private static boolean gitBashSearchDone = false; - - @Override - public boolean hasEntries() { - if (Platform.OS_WIN32.equals(Platform.getOS())) { - // the order of operations here is different than getEntries because we just - // want to know if anything can match. We avoid iterating over the whole PATH - // if the user has git installed in the default location. This gets us the - // correct answer to hasEntries quickly without having to iterate over the whole - // PATH (especially if PATH is long!). - return getGitInstallDirectory().or(this::getGitInstallDirectoryFromPATH).isPresent(); - } - return false; - } - - @Override - public List> getEntries(List> externalExecutables) { - // Lookup git bash (Windows Hosts only) - if (!gitBashSearchDone && Platform.OS_WIN32.equals(Platform.getOS())) { - // Do not search again for git bash while the session is running - gitBashSearchDone = true; - - // Check the existing entries first - // Find a entry labeled "Git Bash" - if (externalExecutables.stream().map(m -> m.get(IExternalExecutablesProperties.PROP_NAME)) - .anyMatch(Predicate.isEqual(GIT_BASH))) { - return Collections.emptyList(); - } - - // If not found in the existing entries, check the path, then - // if it is not found in the PATH, check the default install locations - Optional result = getGitInstallDirectoryFromPATH().or(this::getGitInstallDirectory); - Optional gitPath = result.map(f -> new File(f, "bin/sh.exe").getAbsolutePath()); //$NON-NLS-1$ - Optional iconPath = result.flatMap(f -> getGitIconPath(f)); - - return gitPath.map(path -> { - Map m = new HashMap<>(); - m.put(IExternalExecutablesProperties.PROP_NAME, GIT_BASH); - m.put(IExternalExecutablesProperties.PROP_PATH, path); - m.put(IExternalExecutablesProperties.PROP_ARGS, "--login -i"); //$NON-NLS-1$ - iconPath.ifPresent(icon -> m.put(IExternalExecutablesProperties.PROP_ICON, icon)); - m.put(IExternalExecutablesProperties.PROP_TRANSLATE, Boolean.TRUE.toString()); - - return List.of(m); - }).orElse(Collections.emptyList()); - - } - return Collections.emptyList(); - } - - private Optional getGitInstallDirectoryFromPATH() { - return ExternalExecutablesUtils.visitPATH(entry -> { - File f = new File(entry, "git.exe"); //$NON-NLS-1$ - if (f.canRead()) { - File check = f.getParentFile().getParentFile(); - if (new File(check, "bin/sh.exe").canExecute()) { //$NON-NLS-1$ - return Optional.of(check); - } - } - return Optional.empty(); - }); - } - - private Optional getGitInstallDirectory() { - // If 32-bit and 64-bit are both present, prefer the 64-bit one - // as it is probably newer and more likely to be present - // for the fast check required by hasEntries - File f = new File("C:/Program Files/Git/bin/sh.exe"); //$NON-NLS-1$ - if (!f.exists()) { - f = new File("C:/Program Files (x86)/Git/bin/sh.exe"); //$NON-NLS-1$ - } - if (f.exists() && f.canExecute()) { - return Optional.of(f.getParentFile().getParentFile()); - } - return Optional.empty(); - } - - private static Optional getGitIconPath(File parent) { - File f = new File(parent, "etc/git.ico"); //$NON-NLS-1$ - if (f.canRead()) { - return Optional.of(f.getAbsolutePath()); - } - - // check for icon in newer versions of Git for Windows 32 bit - f = new File(parent, "mingw32/share/git/git-for-windows.ico"); //$NON-NLS-1$ - if (f.canRead()) { - return Optional.of(f.getAbsolutePath()); - } - - // check for icon in newer versions of Git for Windows 64 bit - f = new File(parent, "mingw64/share/git/git-for-windows.ico"); //$NON-NLS-1$ - if (f.canRead()) { - return Optional.of(f.getAbsolutePath()); - } - - return Optional.empty(); - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/detectors/DetectWSL.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/detectors/DetectWSL.java deleted file mode 100644 index 8d98d53f786..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/local/showin/detectors/DetectWSL.java +++ /dev/null @@ -1,167 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2021 Kichwa Coders Canada Inc. and others. - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.local.showin.detectors; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.function.Predicate; - -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.OperationCanceledException; -import org.eclipse.core.runtime.Platform; -import org.eclipse.core.runtime.Status; -import org.eclipse.core.runtime.jobs.Job; -import org.eclipse.tm.terminal.view.ui.interfaces.IExternalExecutablesProperties; -import org.eclipse.tm.terminal.view.ui.local.showin.IDetectExternalExecutable; - -public class DetectWSL implements IDetectExternalExecutable { - - private List> result = null; - private WslDetectJob detectJob = null; - - public DetectWSL() { - if (!Platform.OS_WIN32.equals(Platform.getOS())) { - result = Collections.emptyList(); - } - } - - @Override - public boolean hasEntries() { - return !getEntries().isEmpty(); - } - - @Override - public List> getEntries(List> externalExecutables) { - List> newEntries = new ArrayList<>(); - var entries = getEntries(); - for (var map : entries) { - String name = map.get(IExternalExecutablesProperties.PROP_NAME); - if (externalExecutables.stream().map(m -> m.get(IExternalExecutablesProperties.PROP_NAME)) - .noneMatch(Predicate.isEqual(name))) { - newEntries.add(map); - } - } - return newEntries; - } - - private synchronized List> getEntries() { - // getEntries can be called in many contexts, even from within - // menu creation (see Bug 574519). Therefore we spawn a job to - // get the real entries, which means until the job is done, this - // method will return no entries. - if (result != null) { - return result; - } - if (detectJob == null) { - detectJob = new WslDetectJob(); - detectJob.schedule(); - } - try { - if (detectJob.join(10, null) && detectJob.result != null) { // Suspended jobs return early from join() - result = detectJob.result; - detectJob = null; - } else { - return Collections.emptyList(); - } - } catch (OperationCanceledException | InterruptedException e) { - result = Collections.emptyList(); - detectJob = null; - } - return result; - } - - private static class WslDetectJob extends Job { - private List> result = null; - - public WslDetectJob() { - super("Detect WSL Instances"); //$NON-NLS-1$ - setSystem(true); - } - - @Override - protected IStatus run(IProgressMonitor monitor) { - if (result == null) { - result = Collections.emptyList(); - String windir = System.getenv("windir"); //$NON-NLS-1$ - if (windir == null) { - return Status.OK_STATUS; - } - String wsl = windir + "\\System32\\wsl.exe"; //$NON-NLS-1$ - if (!Files.isExecutable(Paths.get(wsl))) { - return Status.OK_STATUS; - } - - ProcessBuilder pb = new ProcessBuilder(wsl, "--list", "--quiet"); //$NON-NLS-1$ //$NON-NLS-2$ - try { - Process process = pb.start(); - try (InputStream is = process.getErrorStream()) { - // drain the error stream - if (is.readAllBytes().length != 0) { - return Status.OK_STATUS; - } - } - - try (BufferedReader reader = new BufferedReader( - new InputStreamReader(process.getInputStream(), StandardCharsets.UTF_16LE))) { - result = new ArrayList<>(); - String line = null; - while ((line = reader.readLine()) != null) { - String distribution = line.trim(); - if (distribution.isBlank()) { - continue; - } - // docker-desktop entries are not "real" so shouldn't be shown in UI - if (distribution.startsWith("docker-desktop")) { //$NON-NLS-1$ - continue; - } - - String name = distribution + " (WSL)"; //$NON-NLS-1$ - Map m = new HashMap<>(); - m.put(IExternalExecutablesProperties.PROP_NAME, name); - m.put(IExternalExecutablesProperties.PROP_PATH, wsl); - m.put(IExternalExecutablesProperties.PROP_ARGS, "--distribution " + distribution); //$NON-NLS-1$ - m.put(IExternalExecutablesProperties.PROP_TRANSLATE, Boolean.TRUE.toString()); - result.add(m); - } - } - - try { - // lets get the return code to make sure that the process did not produce anything unexpected. As the streams - // are closed, the waitFor shouldn't block. - if (process.waitFor() != 0) { - // WSL can send errors to stdout, so discard results if the exit value ends up being non-zero - result.clear(); - } - } catch (InterruptedException e) { - // we've been interrupted, give up on the output we have (probably unreachable in practice) - result.clear(); - } - - } catch (IOException e) { - } - } - return Status.OK_STATUS; - } - - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/manager/ConsoleManager.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/manager/ConsoleManager.java deleted file mode 100644 index 8dec9dc5528..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/manager/ConsoleManager.java +++ /dev/null @@ -1,664 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - * Max Weninger (Wind River) - [361363] [TERMINALS] Implement "Pin&Clone" for the "Terminals" view - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.manager; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Status; -import org.eclipse.swt.custom.CTabFolder; -import org.eclipse.swt.custom.CTabItem; -import org.eclipse.swt.widgets.Display; -import org.eclipse.tm.internal.terminal.control.ITerminalViewControl; -import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector; -import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl; -import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants; -import org.eclipse.tm.terminal.view.ui.activator.UIPlugin; -import org.eclipse.tm.terminal.view.ui.interfaces.IPreferenceKeys; -import org.eclipse.tm.terminal.view.ui.interfaces.ITerminalsView; -import org.eclipse.tm.terminal.view.ui.interfaces.IUIConstants; -import org.eclipse.tm.terminal.view.ui.tabs.TabFolderManager; -import org.eclipse.tm.terminal.view.ui.view.TerminalsView; -import org.eclipse.ui.IPartListener2; -import org.eclipse.ui.IPartService; -import org.eclipse.ui.IPerspectiveDescriptor; -import org.eclipse.ui.IPerspectiveListener; -import org.eclipse.ui.IViewPart; -import org.eclipse.ui.IViewReference; -import org.eclipse.ui.IViewSite; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.IWorkbenchPart; -import org.eclipse.ui.IWorkbenchPartReference; -import org.eclipse.ui.PartInitException; -import org.eclipse.ui.PerspectiveAdapter; -import org.eclipse.ui.PlatformUI; - -/** - * Terminal console manager. - */ -public class ConsoleManager { - - // Reference to the perspective listener instance - private final IPerspectiveListener perspectiveListener; - - // Internal perspective listener implementation - static class ConsoleManagerPerspectiveListener extends PerspectiveAdapter { - private final List references = new ArrayList<>(); - - @Override - public void perspectiveActivated(IWorkbenchPage page, IPerspectiveDescriptor perspective) { - // If the old references list is empty, just return - if (references.isEmpty()) - return; - // Create a copy of the old view references list - List oldReferences = new ArrayList<>(references); - - // Get the current list of view references - List references = new ArrayList<>(Arrays.asList(page.getViewReferences())); - for (IViewReference reference : oldReferences) { - if (references.contains(reference)) - continue; - // Previous visible terminals console view reference, make visible again - try { - page.showView(reference.getId(), reference.getSecondaryId(), IWorkbenchPage.VIEW_VISIBLE); - } catch (PartInitException e) { - /* Failure on part instantiation is ignored */ } - } - - } - - @Override - public void perspectivePreDeactivate(IWorkbenchPage page, IPerspectiveDescriptor perspective) { - references.clear(); - for (IViewReference reference : page.getViewReferences()) { - IViewPart part = reference.getView(false); - if (part instanceof TerminalsView && !references.contains(reference)) { - references.add(reference); - } - } - } - } - - // Reference to the part listener instance - private final IPartListener2 partListener; - - // The ids of the last activated terminals view - /* default */ String lastActiveViewId = null; - /* default */ String lastActiveSecondaryViewId = null; - - // Internal part listener implementation - class ConsoleManagerPartListener implements IPartListener2 { - - @Override - public void partActivated(IWorkbenchPartReference partRef) { - IWorkbenchPart part = partRef.getPart(false); - if (part instanceof ITerminalsView) { - lastActiveViewId = ((ITerminalsView) part).getViewSite().getId(); - lastActiveSecondaryViewId = ((ITerminalsView) part).getViewSite().getSecondaryId(); - //System.out.println("Terminals view activated: id = " + lastActiveViewId + ", secondary id = " + lastActiveSecondaryViewId); //$NON-NLS-1$ //$NON-NLS-2$ - } - } - - @Override - public void partBroughtToTop(IWorkbenchPartReference partRef) { - } - - @Override - public void partClosed(IWorkbenchPartReference partRef) { - } - - @Override - public void partDeactivated(IWorkbenchPartReference partRef) { - } - - @Override - public void partOpened(IWorkbenchPartReference partRef) { - } - - @Override - public void partHidden(IWorkbenchPartReference partRef) { - } - - @Override - public void partVisible(IWorkbenchPartReference partRef) { - } - - @Override - public void partInputChanged(IWorkbenchPartReference partRef) { - } - } - - /* - * Thread save singleton instance creation. - */ - private static class LazyInstanceHolder { - public static ConsoleManager fInstance = new ConsoleManager(); - } - - /** - * Returns the singleton instance for the console manager. - */ - public static ConsoleManager getInstance() { - return LazyInstanceHolder.fInstance; - } - - /** - * Constructor. - */ - ConsoleManager() { - super(); - - perspectiveListener = new ConsoleManagerPerspectiveListener(); - partListener = new ConsoleManagerPartListener(); - - if (PlatformUI.isWorkbenchRunning() && PlatformUI.getWorkbench() != null - && PlatformUI.getWorkbench().getActiveWorkbenchWindow() != null) { - PlatformUI.getWorkbench().getActiveWorkbenchWindow().addPerspectiveListener(perspectiveListener); - - IPartService service = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getPartService(); - service.addPartListener(partListener); - } - } - - /** - * Returns the active workbench window page if the workbench is still running. - * - * @return The active workbench window page or null - */ - private final IWorkbenchPage getActiveWorkbenchPage() { - // To lookup the console view, the workbench must be still running - if (PlatformUI.isWorkbenchRunning() && PlatformUI.getWorkbench() != null - && PlatformUI.getWorkbench().getActiveWorkbenchWindow() != null) { - return PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); - } - return null; - } - - /** - * Returns the console view if available within the active workbench window page. - *

        - * Note: The method must be called within the UI thread. - * - * @param id The terminals console view id or null to show the default terminals console view. - * @param secondaryId The terminal console secondary id, which may be null which is the secondary id of - * the first terminal view opened. To specify reuse of most recent terminal view use special value of - * {@link ITerminalsConnectorConstants#LAST_ACTIVE_SECONDARY_ID}. - * - * @return The console view instance if available or null otherwise. - */ - public ITerminalsView findConsoleView(String id, String secondaryId) { - Assert.isNotNull(Display.findDisplay(Thread.currentThread())); - - ITerminalsView view = null; - - // Get the active workbench page - IWorkbenchPage page = getActiveWorkbenchPage(); - if (page != null) { - // Look for the view - IViewPart part = getTerminalsViewWithSecondaryId(id != null ? id : IUIConstants.ID, secondaryId, true); - // Check the interface - if (part instanceof ITerminalsView) { - view = (ITerminalsView) part; - } - } - - return view; - } - - /** - * Search and return a terminal view with a specific secondary id - * - * @param id The terminals console view id. Must not be null. - * @param secondaryId The terminal console secondary id, which may be null which is the secondary id of - * the first terminal view opened. To specify reuse of any active terminal view use special value of - * {@link ITerminalsConnectorConstants#ANY_ACTIVE_SECONDARY_ID}. - * @param restore True if to try to restore the view, false otherwise. - * - * @return The terminals console view instance or null if not found. - */ - private IViewPart getTerminalsViewWithSecondaryId(String id, String secondaryId, boolean restore) { - Assert.isNotNull(id); - - for (IViewReference ref : getActiveWorkbenchPage().getViewReferences()) { - if (ref.getId().equals(id)) { - String refSecondaryId = ref.getSecondaryId(); - if (ITerminalsConnectorConstants.ANY_ACTIVE_SECONDARY_ID.equals(secondaryId) - || Objects.equals(secondaryId, refSecondaryId)) { - return ref.getView(restore); - } - } - } - return null; - } - - /** - * Search and return the active terminals view. - * - * @param id The terminals console view id. Must not be null. - * @param secondaryId The terminal console secondary id, which may be null which is the secondary id of - * the first terminal view opened. To specify reuse of most recent terminal view use special value of - * {@link ITerminalsConnectorConstants#LAST_ACTIVE_SECONDARY_ID}. - * @return The terminals console view instance or null if not found. - */ - private IViewPart getActiveTerminalsView(String id, String secondaryId) { - Assert.isNotNull(id); - - IViewPart part = null; - - if (id.equals(lastActiveViewId)) { - if (ITerminalsConnectorConstants.LAST_ACTIVE_SECONDARY_ID.equals(secondaryId) - || Objects.equals(secondaryId, lastActiveSecondaryViewId)) { - part = getTerminalsViewWithSecondaryId(lastActiveViewId, lastActiveSecondaryViewId, false); - } - } - - if (part == null) { - String finalSecondaryId; - if (ITerminalsConnectorConstants.LAST_ACTIVE_SECONDARY_ID.equals(secondaryId)) { - // There is no last available, so get any available instead - finalSecondaryId = ITerminalsConnectorConstants.ANY_ACTIVE_SECONDARY_ID; - } else { - finalSecondaryId = secondaryId; - } - part = getTerminalsViewWithSecondaryId(id, finalSecondaryId, true); - if (part != null) { - lastActiveViewId = part.getViewSite().getId(); - lastActiveSecondaryViewId = part.getViewSite().getSecondaryId(); - } - } - - return part; - } - - /** - * Return a new secondary id to use, based on the number of open terminal views. - * - * @param id The terminals console view id. Must not be null. - * @return The next secondary id, or null if it is the first one - * @since 4.1 - */ - public String getNextTerminalSecondaryId(String id) { - Assert.isNotNull(id); - - Map terminalViews = new HashMap<>(); - - int maxNumber = 0; - for (IViewReference ref : getActiveWorkbenchPage().getViewReferences()) { - if (ref.getId().equals(id)) { - if (ref.getSecondaryId() != null) { - terminalViews.put(ref.getSecondaryId(), ref); - int scondaryIdInt = Integer.parseInt(ref.getSecondaryId()); - if (scondaryIdInt > maxNumber) { - maxNumber = scondaryIdInt; - } - } else { - // add the one with secondaryId == null with 0 by default - terminalViews.put(Integer.toString(0), ref); - } - } - } - if (terminalViews.size() == 0) { - return null; - } - - int i = 0; - for (; i < maxNumber; i++) { - String secondaryIdStr = Integer.toString(i); - if (!terminalViews.keySet().contains(secondaryIdStr)) { - // found a free slot - if (i == 0) - return null; - return Integer.toString(i); - } - } - // add a new one - return Integer.toString(i + 1); - } - - /** - * Show the terminals console view specified by the given id. - *

        - * Note: The method must be called within the UI thread. - * - * @param id The terminals console view id or null to show the default terminals console view. - */ - public IViewPart showConsoleView(String id, String secondaryId) { - Assert.isNotNull(Display.findDisplay(Thread.currentThread())); - - // Get the active workbench page - IWorkbenchPage page = getActiveWorkbenchPage(); - if (page != null) { - try { - // show the view - IViewPart part = getActiveTerminalsView(id != null ? id : IUIConstants.ID, secondaryId); - if (part == null) { - String finalSecondaryId; - if (ITerminalsConnectorConstants.LAST_ACTIVE_SECONDARY_ID.equals(secondaryId) - || ITerminalsConnectorConstants.ANY_ACTIVE_SECONDARY_ID.equals(secondaryId)) { - // We have already checked all open views, so since none of the special flags work - // we are opening the first view, which means no secondary id. - finalSecondaryId = null; - } else { - finalSecondaryId = secondaryId; - } - part = page.showView(id != null ? id : IUIConstants.ID, finalSecondaryId, - IWorkbenchPage.VIEW_ACTIVATE); - } - // and force the view to the foreground - page.bringToTop(part); - return part; - } catch (PartInitException e) { - IStatus status = new Status(IStatus.ERROR, UIPlugin.getUniqueIdentifier(), e.getLocalizedMessage(), e); - UIPlugin.getDefault().getLog().log(status); - } - } - return null; - } - - /** - * Bring the terminals console view, specified by the given id, to the top of the view stack. - * - * @param id The terminals console view id or null to show the default terminals console view. - * @param secondaryId The terminals console view secondary id or null. - * @param activate If true activate the console view. - */ - private IViewPart bringToTop(String id, String secondaryId, boolean activate) { - // Get the active workbench page - IWorkbenchPage page = getActiveWorkbenchPage(); - if (page != null) { - // get (last) active terminal view - IViewPart activePart = getActiveTerminalsView(id != null ? id : IUIConstants.ID, secondaryId); - if (activePart == null) { - // Create a new one - IViewPart newPart = showConsoleView(id != null ? id : IUIConstants.ID, - getNextTerminalSecondaryId(IUIConstants.ID)); - return newPart; - } - - if (activate) - page.activate(activePart); - else - page.bringToTop(activePart); - - return activePart; - } - return null; - } - - /** - * Opens the console with the given title and connector. - *

        - * Note: The method must be called within the UI thread. - * - * @param id The terminals console view id or null to show the default terminals console view. - * @param title The console title. Must not be null. - * @param encoding The terminal encoding or null. - * @param connector The terminal connector. Must not be null. - * @param data The custom terminal data node or null. - * @param flags The flags controlling how the console is opened or null to use defaults. - * @deprecated Use {@link #openConsole(String, String, String, String, ITerminalConnector, Object, Map)} - * and explicitly specify an ID {@link ITerminalsConnectorConstants#LAST_ACTIVE_SECONDARY_ID} - */ - @Deprecated - public CTabItem openConsole(String id, String title, String encoding, ITerminalConnector connector, Object data, - Map flags) { - return openConsole(id, ITerminalsConnectorConstants.LAST_ACTIVE_SECONDARY_ID, title, encoding, connector, data, - flags); - } - - /** - * Opens the console with the given title and connector. - *

        - * Note: The method must be called within the UI thread. - * - * @param id The terminals console view id or null to show the default terminals console view. - * @param secondaryId The terminal console secondary id, which may be null which is the secondary id of - * the first terminal view opened. To specify reuse of most recent terminal view use special value of - * {@link ITerminalsConnectorConstants#LAST_ACTIVE_SECONDARY_ID}. - * @param title The console title. Must not be null. - * @param encoding The terminal encoding or null. - * @param connector The terminal connector. Must not be null. - * @param data The custom terminal data node or null. - * @param flags The flags controlling how the console is opened or null to use defaults. - */ - public CTabItem openConsole(String id, String secondaryId, String title, String encoding, - ITerminalConnector connector, Object data, Map flags) { - Assert.isNotNull(title); - Assert.isNotNull(connector); - Assert.isNotNull(Display.findDisplay(Thread.currentThread())); - - // Get the flags handled by the openConsole method itself - boolean activate = flags != null && flags.containsKey("activate") ? flags.get("activate").booleanValue() //$NON-NLS-1$//$NON-NLS-2$ - : false; - boolean forceNew = flags != null && flags.containsKey(ITerminalsConnectorConstants.PROP_FORCE_NEW) - ? flags.get(ITerminalsConnectorConstants.PROP_FORCE_NEW).booleanValue() - : false; - - // Make the consoles view visible - IViewPart part = bringToTop(id, secondaryId, activate); - if (!(part instanceof ITerminalsView)) - return null; - // Cast to the correct type - ITerminalsView view = (ITerminalsView) part; - - // Get the tab folder manager associated with the view - TabFolderManager manager = view.getAdapter(TabFolderManager.class); - if (manager == null) - return null; - - // Lookup an existing console first - String secId = ((IViewSite) part.getSite()).getSecondaryId(); - CTabItem item = findConsole(id, secId, title, connector, data); - - // Switch to the tab folder page _before_ calling TabFolderManager#createItem(...). - // The createItem(...) method invokes the corresponding connect and this may take - // a while if connecting to a remote host. To allow a "Connecting..." decoration, - // the tab folder page needs to be visible. - view.switchToTabFolderControl(); - - // If no existing console exist or forced -> Create the tab item - if (item == null || forceNew) { - // If configured, check all existing tab items if they are associated - // with terminated consoles - if (UIPlugin.getScopedPreferences().getBoolean(IPreferenceKeys.PREF_REMOVE_TERMINATED_TERMINALS)) { - // Remote all terminated tab items. This will invoke the - // tab's dispose listener. - manager.removeTerminatedItems(); - // Switch back to the tab folder control as removeTerminatedItems() - // may have triggered the switch to the empty space control. - view.switchToTabFolderControl(); - } - - // Create a new tab item - item = manager.createTabItem(title, encoding, connector, data, flags); - } - // If still null, something went wrong - if (item == null) - return null; - - // Make the item the active console - manager.bringToTop(item); - - // Make sure the terminals view has the focus after opening a new terminal - view.setFocus(); - - // Return the tab item of the opened console - return item; - } - - /** - * Lookup a console with the given title and the given terminal connector. - *

        - * Note: The method must be called within the UI thread. - * Note: The method will handle unified console titles itself. - * - * @param id The terminals console view id or null to show the default terminals console view. - * @param secondaryId The terminals console view secondary id or null. - * @param title The console title. Must not be null. - * @param connector The terminal connector. Must not be null. - * @param data The custom terminal data node or null. - * - * @return The corresponding console tab item or null. - */ - public CTabItem findConsole(String id, String secondaryId, String title, ITerminalConnector connector, - Object data) { - Assert.isNotNull(title); - Assert.isNotNull(connector); - Assert.isNotNull(Display.findDisplay(Thread.currentThread())); - - // Get the console view - ITerminalsView view = findConsoleView(id, secondaryId); - if (view == null) - return null; - - // Get the tab folder manager associated with the view - TabFolderManager manager = view.getAdapter(TabFolderManager.class); - if (manager == null) - return null; - - return manager.findTabItem(title, connector, data); - } - - /** - * Lookup a console which is assigned with the given terminal control. - *

        - * Note: The method must be called within the UI thread. - * - * @param control The terminal control. Must not be null. - * @return The corresponding console tab item or null. - */ - public CTabItem findConsole(ITerminalControl control) { - Assert.isNotNull(control); - - CTabItem item = null; - - IWorkbenchPage page = getActiveWorkbenchPage(); - if (page != null) { - for (IViewReference ref : page.getViewReferences()) { - IViewPart part = ref != null ? ref.getView(false) : null; - if (part instanceof ITerminalsView) { - CTabFolder tabFolder = part.getAdapter(CTabFolder.class); - if (tabFolder == null) - continue; - CTabItem[] candidates = tabFolder.getItems(); - for (CTabItem candidate : candidates) { - Object data = candidate.getData(); - if (data instanceof ITerminalControl && control.equals(data)) { - item = candidate; - break; - } - } - } - if (item != null) - break; - } - } - - return item; - } - - /** - * Search all console views for the one that contains a specific connector. - *

        - * Note: The method will handle unified console titles itself. - * - * @param id The terminals console view id or null to show the default terminals console view. - * @param title The console title. Must not be null. - * @param connector The terminal connector. Must not be null. - * @param data The custom terminal data node or null. - * - * @return The corresponding console tab item or null. - */ - private CTabItem findConsoleForTerminalConnector(String id, String title, ITerminalConnector connector, - Object data) { - Assert.isNotNull(title); - Assert.isNotNull(connector); - - IWorkbenchPage page = getActiveWorkbenchPage(); - if (page != null) { - IViewReference[] refs = page.getViewReferences(); - for (IViewReference ref : refs) { - if (ref.getId().equals(id)) { - IViewPart part = ref.getView(true); - if (part instanceof ITerminalsView) { - // Get the tab folder manager associated with the view - TabFolderManager manager = part.getAdapter(TabFolderManager.class); - if (manager == null) { - continue; - } - CTabItem item = manager.findTabItem(title, connector, data); - if (item != null) { - return item; - } - } - } - } - } - return null; - } - - /** - * Close the console with the given title and the given terminal connector. - *

        - * Note: The method must be called within the UI thread. - * Note: The method will handle unified console titles itself. - * - * @param title The console title. Must not be null. - * @param connector The terminal connector. Must not be null. - * @param data The custom terminal data node or null. - */ - public void closeConsole(String id, String title, ITerminalConnector connector, Object data) { - Assert.isNotNull(title); - Assert.isNotNull(connector); - Assert.isNotNull(Display.findDisplay(Thread.currentThread())); - - // Lookup the console with this connector - CTabItem console = findConsoleForTerminalConnector(id, title, connector, data); - // If found, dispose the console - if (console != null) { - console.dispose(); - } - } - - /** - * Terminate (disconnect) the console with the given title and the given terminal connector. - *

        - * Note: The method must be called within the UI thread. - * Note: The method will handle unified console titles itself. - * - * @param title The console title. Must not be null. - * @param connector The terminal connector. Must not be null. - * @param data The custom terminal data node or null. - */ - public void terminateConsole(String id, String title, ITerminalConnector connector, Object data) { - Assert.isNotNull(title); - Assert.isNotNull(connector); - Assert.isNotNull(Display.findDisplay(Thread.currentThread())); - - // Lookup the console - CTabItem console = findConsoleForTerminalConnector(id, title, connector, data); - // If found, disconnect the console - if (console != null && !console.isDisposed()) { - ITerminalViewControl terminal = (ITerminalViewControl) console.getData(); - if (terminal != null && !terminal.isDisposed()) { - terminal.disconnectTerminal(); - } - } - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/nls/Messages.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/nls/Messages.java deleted file mode 100644 index 6f96f5d05da..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/nls/Messages.java +++ /dev/null @@ -1,166 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2021 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - * Max Weninger (Wind River) - [361363] [TERMINALS] Implement "Pin&Clone" for the "Terminals" view - * Dirk Fauth - Bug 460496 - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.nls; - -import java.lang.reflect.Field; - -import org.eclipse.osgi.util.NLS; - -/** - * Terminal plug-in externalized strings management. - */ -public class Messages extends NLS { - - // The plug-in resource bundle name - private static final String BUNDLE_NAME = "org.eclipse.tm.terminal.view.ui.nls.Messages"; //$NON-NLS-1$ - - /** - * Static constructor. - */ - static { - // Load message values from bundle file - NLS.initializeMessages(BUNDLE_NAME, Messages.class); - } - - /** - * Returns the corresponding string for the given externalized strings - * key or null if the key does not exist. - * - * @param key The externalized strings key or null. - * @return The corresponding string or null. - */ - public static String getString(String key) { - if (key != null) { - try { - Field field = Messages.class.getDeclaredField(key); - return (String) field.get(null); - } catch (Exception e) { - /* ignored on purpose */ } - } - - return null; - } - - // **** Declare externalized string id's down here ***** - - public static String Extension_error_missingRequiredAttribute; - public static String Extension_error_duplicateExtension; - public static String Extension_error_invalidExtensionPoint; - - public static String AbstractTriggerCommandHandler_error_executionFailed; - - public static String AbstractAction_error_commandExecutionFailed; - - public static String AbstractConfigurationPanel_delete; - public static String AbstractConfigurationPanel_deleteButtonTooltip; - public static String AbstractConfigurationPanel_hosts; - public static String AbstractConfigurationPanel_encoding; - public static String AbstractConfigurationPanel_encoding_custom; - public static String AbstractConfigurationPanel_encoding_custom_title; - public static String AbstractConfigurationPanel_encoding_custom_message; - public static String AbstractConfigurationPanel_encoding_custom_error; - - public static String TabTerminalListener_consoleClosed; - public static String TabTerminalListener_consoleConnecting; - - public static String NewTerminalViewAction_menu; - public static String NewTerminalViewAction_tooltip; - - public static String ToggleCommandFieldAction_menu; - public static String ToggleCommandFieldAction_toolTip; - - public static String SelectEncodingAction_menu; - public static String SelectEncodingAction_tooltip; - - public static String InvertColorsAction_menu; - public static String InvertColorsAction_tooltip; - - public static String ProcessSettingsPage_dialogTitle; - public static String ProcessSettingsPage_processImagePathSelectorControl_label; - public static String ProcessSettingsPage_processImagePathSelectorControl_button; - public static String ProcessSettingsPage_processArgumentsControl_label; - public static String ProcessSettingsPage_processWorkingDirControl_label; - public static String ProcessSettingsPage_localEchoSelectorControl_label; - - public static String OutputStreamMonitor_error_readingFromStream; - - public static String InputStreamMonitor_error_writingToStream; - - public static String TerminalService_error_cannotCreateConnector; - public static String TerminalService_defaultTitle; - - public static String LaunchTerminalSettingsDialog_title; - public static String LaunchTerminalSettingsDialog_combo_label; - public static String LaunchTerminalSettingsDialog_group_label; - - public static String TabScrollLockAction_text; - public static String TabScrollLockAction_tooltip; - - public static String LaunchTerminalSettingsDialog_error_title; - public static String LaunchTerminalSettingsDialog_error_invalidSettings; - public static String LaunchTerminalSettingsDialog_error_no_terminal_connectors; - public static String LaunchTerminalSettingsDialog_error_unknownReason; - - public static String EncodingSelectionDialog_title; - - public static String TabFolderManager_encoding; - public static String TabFolderManager_state_connected; - public static String TabFolderManager_state_connecting; - public static String TabFolderManager_state_closed; - - public static String NoteCompositeHelper_note_label; - - // showin messages - - public static String ProcessConnector_error_creatingProcess; - - public static String PreferencePage_label; - public static String PreferencePage_executables_label; - public static String PreferencePage_executables_column_name_label; - public static String PreferencePage_executables_column_path_label; - public static String PreferencePage_executables_button_add_label; - public static String PreferencePage_executables_button_edit_label; - public static String PreferencePage_executables_button_remove_label; - public static String PreferencePage_workingDir_label; - public static String PreferencePage_workingDir_userhome_label; - public static String PreferencePage_workingDir_eclipsehome_label; - public static String PreferencePage_workingDir_eclipsews_label; - public static String PreferencePage_workingDir_button_browse; - public static String PreferencePage_workingDir_note_label; - public static String PreferencePage_workingDir_note_text; - public static String PreferencePage_workingDir_button_variables; - public static String PreferencePage_workingDir_invalid; - public static String PreferencePage_command_label; - public static String PreferencePage_command_button_browse; - public static String PreferencePage_command_invalid; - public static String PreferencePage_command_note_label; - public static String PreferencePage_command_note_text; - public static String PreferencePage_command_arguments_label; - - public static String ExternalExecutablesDialog_title_add; - public static String ExternalExecutablesDialog_title_edit; - public static String ExternalExecutablesDialog_button_add; - public static String ExternalExecutablesDialog_button_browse; - public static String ExternalExecutablesDialog_field_path; - public static String ExternalExecutablesDialog_field_name; - public static String ExternalExecutablesDialog_field_args; - public static String ExternalExecutablesDialog_field_icon; - public static String ExternalExecutablesDialog_field_translate; - - public static String RenameTerminalAction_inputdialog_defaulttext; - public static String RenameTerminalAction_inputdialog_prompt; - public static String RenameTerminalAction_inputdialog_title; - public static String RenameTerminalAction_tooltip; - public static String RenameTerminalAction_menu; -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/nls/Messages.properties b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/nls/Messages.properties deleted file mode 100644 index f3fc1d0e9fa..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/nls/Messages.properties +++ /dev/null @@ -1,125 +0,0 @@ -############################################################################### -# Copyright (c) 2012, 2021 Wind River Systems, Inc. and others. All rights reserved. -# This program and the accompanying materials are made available under the terms -# of the Eclipse Public License 2.0 which accompanies this distribution, and is -# available at https://www.eclipse.org/legal/epl-2.0/ -# -# SPDX-License-Identifier: EPL-2.0 -# -# Contributors: -# Wind River Systems - initial API and implementation -############################################################################### - -Extension_error_missingRequiredAttribute=Required attribute "{0}" missing for extension "{1}"! -Extension_error_duplicateExtension=Duplicate extension with id ''{0}''. Ignoring duplicated contribution from contributor ''{1}''! -Extension_error_invalidExtensionPoint=Failed to instantiate the executable extension from extension point ''{0}''. - -AbstractTriggerCommandHandler_error_executionFailed=Failed to execute command {0}. - -AbstractAction_error_commandExecutionFailed="Failed to execute command (id = {0}). Possibly caused by: {1} - -AbstractConfigurationPanel_delete=Delete -AbstractConfigurationPanel_deleteButtonTooltip=Delete terminal settings for host -AbstractConfigurationPanel_hosts=Hosts: -AbstractConfigurationPanel_encoding=Encoding: -AbstractConfigurationPanel_encoding_custom=Other... -AbstractConfigurationPanel_encoding_custom_title=Other... -AbstractConfigurationPanel_encoding_custom_message=Please enter the name of the encoding to use for the terminal. -AbstractConfigurationPanel_encoding_custom_error=Unsupported encoding. Please enter the name of a supported encoding. - -TabTerminalListener_consoleClosed=<{1}> {0} -TabTerminalListener_consoleConnecting={0} : {1}... - -NewTerminalViewAction_menu=New Terminal View -NewTerminalViewAction_tooltip=Open a new Terminal View - -ToggleCommandFieldAction_menu=Toggle Command Input Field -ToggleCommandFieldAction_toolTip=Toggle Command Input Field - -SelectEncodingAction_menu=Switch Encoding... -SelectEncodingAction_tooltip=Switch the Encoding of the active Terminal - -InvertColorsAction_menu=Inverted colors -InvertColorsAction_tooltip=Invert the colors of the active Terminal - -RenameTerminalAction_inputdialog_defaulttext= -RenameTerminalAction_inputdialog_prompt=Please enter a new name for the terminal -RenameTerminalAction_inputdialog_title=New name for terminal -RenameTerminalAction_menu=Rename Terminal -RenameTerminalAction_tooltip=Update the display name of this terminal - -ProcessSettingsPage_dialogTitle=Select Process Image -ProcessSettingsPage_processImagePathSelectorControl_label=Image Path: -ProcessSettingsPage_processImagePathSelectorControl_button=Browse -ProcessSettingsPage_processArgumentsControl_label=Arguments: -ProcessSettingsPage_processWorkingDirControl_label=Working Dir: -ProcessSettingsPage_localEchoSelectorControl_label=Local Echo - -OutputStreamMonitor_error_readingFromStream=Exception when reading from stream. Possibly caused by: {0} - -InputStreamMonitor_error_writingToStream=Exception when writing to stream. Possibly caused by: {0} - -TerminalService_error_cannotCreateConnector=Cannot create a valid terminal connector instance from the provided terminal properties. -TerminalService_defaultTitle=Console - -LaunchTerminalSettingsDialog_title=Launch Terminal -LaunchTerminalSettingsDialog_combo_label=Choose terminal: -LaunchTerminalSettingsDialog_group_label=Settings - -TabScrollLockAction_text=Scroll &Lock -TabScrollLockAction_tooltip=Scroll Lock - -LaunchTerminalSettingsDialog_error_title=Terminal Settings -LaunchTerminalSettingsDialog_error_invalidSettings=The specified settings are invalid\n\n\ -{0}\n\n\ -Please review and specify valid settings. Or cancel the settings dialog to abort. -LaunchTerminalSettingsDialog_error_no_terminal_connectors=There are no types of terminals installed. Please install a terminal connector -LaunchTerminalSettingsDialog_error_unknownReason=Cannot determine specifically which setting is invalid. - -EncodingSelectionDialog_title=Encoding - -TabFolderManager_encoding=Encoding: {0} -TabFolderManager_state_connected=Connected -TabFolderManager_state_connecting=Connecting -TabFolderManager_state_closed=Closed - -NoteCompositeHelper_note_label=Note: - -# ----- showin - -ProcessConnector_error_creatingProcess=Exception when creating process. Possibly caused by: {0} - -ExternalExecutablesDialog_title_add=Add External Executable -ExternalExecutablesDialog_title_edit=Edit External Executable -ExternalExecutablesDialog_button_add=Add -ExternalExecutablesDialog_button_browse=Browse... -ExternalExecutablesDialog_field_path=Path: -ExternalExecutablesDialog_field_name=Name: -ExternalExecutablesDialog_field_args=Arguments: -ExternalExecutablesDialog_field_icon=Icon: -ExternalExecutablesDialog_field_translate=Translate Backslashes on Paste - -# ----- Preference Pages ----- - -PreferencePage_label=Local Terminal Settings: -PreferencePage_executables_label="Show In ..." Custom Entries -PreferencePage_executables_column_name_label=Name -PreferencePage_executables_column_path_label=Path -PreferencePage_executables_button_add_label=Add... -PreferencePage_executables_button_edit_label=Edit... -PreferencePage_executables_button_remove_label=Remove -PreferencePage_workingDir_label=Initial Working Directory -PreferencePage_workingDir_userhome_label=User home -PreferencePage_workingDir_eclipsehome_label=Eclipse home -PreferencePage_workingDir_eclipsews_label=Eclipse workspace -PreferencePage_workingDir_button_browse=&Browse... -PreferencePage_workingDir_note_label=Note: -PreferencePage_workingDir_note_text=The chosen initial working directory might be overwritten by the current selection of the active view. -PreferencePage_workingDir_button_variables=&Variables... -PreferencePage_workingDir_invalid=Selected initial working directory is not a directory or is not readable. -PreferencePage_command_label=Shell Command -PreferencePage_command_button_browse=&Browse... -PreferencePage_command_invalid=Selected shell command is not a file or is not readable or executable. -PreferencePage_command_note_label=Note: -PreferencePage_command_note_text=Leave the shell command empty to fallback to the SHELL environment variable or if not set, to /bin/sh. -PreferencePage_command_arguments_label=Arguments: diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/panels/AbstractConfigurationPanel.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/panels/AbstractConfigurationPanel.java deleted file mode 100644 index 0e619ff1c38..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/panels/AbstractConfigurationPanel.java +++ /dev/null @@ -1,159 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.panels; - -import java.util.Map; - -import org.eclipse.jface.dialogs.IDialogSettings; -import org.eclipse.jface.dialogs.IMessageProvider; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanel; -import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer; - -/** - * Abstract terminal launcher configuration panel implementation. - */ -public abstract class AbstractConfigurationPanel implements IConfigurationPanel { - private final IConfigurationPanelContainer container; - - private Composite topControl = null; - - // The selection - private ISelection selection; - - private String message = null; - private int messageType = IMessageProvider.NONE; - - private boolean enabled = true; - - /** - * Constructor. - * - * @param container The configuration panel container or null. - */ - public AbstractConfigurationPanel(IConfigurationPanelContainer container) { - super(); - this.container = container; - } - - @Override - public IConfigurationPanelContainer getContainer() { - return container; - } - - @Override - public final String getMessage() { - return message; - } - - @Override - public final int getMessageType() { - return messageType; - } - - /** - * Set the message and the message type to display. - * - * @param message The message or null. - * @param messageType The message type or IMessageProvider.NONE. - */ - protected final void setMessage(String message, int messageType) { - this.message = message; - this.messageType = messageType; - } - - @Override - public void dispose() { - } - - /** - * Sets the top control. - * - * @param topControl The top control or null. - */ - protected void setControl(Composite topControl) { - this.topControl = topControl; - } - - @Override - public Composite getControl() { - return topControl; - } - - @Override - public void setSelection(ISelection selection) { - this.selection = selection; - } - - @Override - public ISelection getSelection() { - return selection; - } - - @Override - public void doRestoreWidgetValues(IDialogSettings settings, String idPrefix) { - } - - @Override - public void doSaveWidgetValues(IDialogSettings settings, String idPrefix) { - } - - /** - * Returns the correctly prefixed dialog settings slot id. In case the given id - * suffix is null or empty, id is returned as is. - * - * @param settingsSlotId The dialog settings slot id to prefix. - * @param prefix The prefix. - * @return The correctly prefixed dialog settings slot id. - */ - public final String prefixDialogSettingsSlotId(String settingsSlotId, String prefix) { - if (settingsSlotId != null && prefix != null && prefix.trim().length() > 0) { - settingsSlotId = prefix + "." + settingsSlotId; //$NON-NLS-1$ - } - return settingsSlotId; - } - - @Override - public void setEnabled(boolean enabled) { - this.enabled = enabled; - } - - /** - * @return Returns the enabled state. - */ - public boolean isEnabled() { - return enabled; - } - - @Override - public boolean isValid() { - setMessage(null, NONE); - return true; - } - - @Override - public void activate() { - } - - @Override - public void extractData(Map data) { - } - - @Override - public void setupData(Map data) { - } - - @Override - public void updateData(Map data) { - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/panels/AbstractExtendedConfigurationPanel.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/panels/AbstractExtendedConfigurationPanel.java deleted file mode 100644 index 97286553051..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/panels/AbstractExtendedConfigurationPanel.java +++ /dev/null @@ -1,650 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2014, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.panels; - -import java.nio.charset.Charset; -import java.nio.charset.IllegalCharsetNameException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.core.runtime.Platform; -import org.eclipse.jface.dialogs.IDialogSettings; -import org.eclipse.jface.dialogs.InputDialog; -import org.eclipse.jface.fieldassist.ControlDecoration; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.window.Window; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.events.SelectionListener; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Combo; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Label; -import org.eclipse.tm.terminal.view.core.TerminalContextPropertiesProviderFactory; -import org.eclipse.tm.terminal.view.core.interfaces.ITerminalContextPropertiesProvider; -import org.eclipse.tm.terminal.view.core.interfaces.constants.IContextPropertiesConstants; -import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants; -import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer; -import org.eclipse.tm.terminal.view.ui.nls.Messages; -import org.eclipse.ui.ISharedImages; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.WorkbenchEncoding; -import org.osgi.framework.Bundle; - -/** - * Abstract terminal configuration panel implementation. - */ -public abstract class AbstractExtendedConfigurationPanel extends AbstractConfigurationPanel { - private static final String LAST_HOST_TAG = "lastHost";//$NON-NLS-1$ - private static final String HOSTS_TAG = "hosts";//$NON-NLS-1$ - private static final String ENCODINGS_TAG = "encodings"; //$NON-NLS-1$ - - // The sub-controls - /* default */ Combo hostCombo; - private Button deleteHostButton; - /* default */ Combo encodingCombo; - - // The last selected encoding - /* default */ String lastSelectedEncoding; - // The last entered custom encodings - /* default */ final List encodingHistory = new ArrayList<>(); - - // A map containing the settings per host - protected final Map> hostSettingsMap = new HashMap<>(); - - /** - * Constructor. - * - * @param container The configuration panel container or null. - */ - public AbstractExtendedConfigurationPanel(IConfigurationPanelContainer container) { - super(container); - } - - /** - * Returns the host name or IP from the current selection. - * - * @return The host name or IP, or null. - */ - public String getSelectionHost() { - ISelection selection = getSelection(); - if (selection instanceof IStructuredSelection && !selection.isEmpty()) { - Object element = ((IStructuredSelection) selection).getFirstElement(); - ITerminalContextPropertiesProvider provider = TerminalContextPropertiesProviderFactory.getProvider(element); - if (provider != null) { - Map props = provider.getTargetAddress(element); - if (props != null && props.containsKey(IContextPropertiesConstants.PROP_ADDRESS)) { - return props.get(IContextPropertiesConstants.PROP_ADDRESS); - } - } - } - - return null; - } - - /** - * Returns the default encoding based on the current selection. - * - * @return The default encoding or null. - */ - public String getSelectionEncoding() { - ISelection selection = getSelection(); - if (selection instanceof IStructuredSelection && !selection.isEmpty()) { - Object element = ((IStructuredSelection) selection).getFirstElement(); - ITerminalContextPropertiesProvider provider = TerminalContextPropertiesProviderFactory.getProvider(element); - if (provider != null) { - Object encoding = provider.getProperty(element, IContextPropertiesConstants.PROP_DEFAULT_ENCODING); - if (encoding instanceof String) - return ((String) encoding).trim(); - } - } - - return null; - } - - @Override - public void doRestoreWidgetValues(IDialogSettings settings, String idPrefix) { - Assert.isNotNull(settings); - - String[] hosts = settings.getArray(HOSTS_TAG); - if (hosts != null) { - for (String hostEntry : hosts) { - String[] hostString = hostEntry.split("\\|");//$NON-NLS-1$ - String hostName = hostString[0]; - if (hostString.length == 2) { - HashMap attr = deSerialize(hostString[1]); - hostSettingsMap.put(hostName, attr); - } else { - hostSettingsMap.put(hostName, new HashMap()); - } - } - } - - if (!isWithoutSelection()) { - String host = getSelectionHost(); - if (host != null) { - fillSettingsForHost(host); - } - } else { - if (hostCombo != null) { - fillHostCombo(); - String lastHost = settings.get(LAST_HOST_TAG); - if (lastHost != null) { - int index = hostCombo.indexOf(lastHost); - if (index != -1) { - hostCombo.select(index); - } else { - hostCombo.select(0); - } - } else { - hostCombo.select(0); - } - fillSettingsForHost(hostCombo.getText()); - } - } - - encodingHistory.clear(); - String[] encodings = settings.getArray(ENCODINGS_TAG); - if (encodings != null && encodings.length > 0) { - encodingHistory.addAll(Arrays.asList(encodings)); - for (String encoding : encodingHistory) { - encodingCombo.add(encoding, encodingCombo.getItemCount() - 1); - } - } - } - - /** - * Restore the encodings widget values. - * - * @param settings The dialog settings. Must not be null. - * @param idPrefix The prefix or null. - */ - protected void doRestoreEncodingsWidgetValues(IDialogSettings settings, String idPrefix) { - Assert.isNotNull(settings); - - String encoding = settings - .get(prefixDialogSettingsSlotId(ITerminalsConnectorConstants.PROP_ENCODING, idPrefix)); - if (encoding != null && encoding.trim().length() > 0) { - setEncoding(encoding); - } - } - - /** - * Decode the host settings from the given string. - * - * @param hostString The encoded host settings. Must not be null. - * @return The decoded host settings. - */ - private HashMap deSerialize(String hostString) { - Assert.isNotNull(hostString); - HashMap attr = new HashMap<>(); - - if (hostString.length() != 0) { - String[] hostAttrs = hostString.split("\\:");//$NON-NLS-1$ - for (int j = 0; j < hostAttrs.length - 1; j = j + 2) { - String key = hostAttrs[j]; - String value = hostAttrs[j + 1]; - attr.put(key, value); - } - } - return attr; - } - - /** - * Encode the host settings to a string. - * - * @param hostEntry The host settings. Must not be null. - * @param hostString The host string to encode to. Must not be null. - */ - private void serialize(Map hostEntry, StringBuilder hostString) { - Assert.isNotNull(hostEntry); - Assert.isNotNull(hostString); - - if (hostEntry.keySet().size() != 0) { - Iterator> nextHostAttr = hostEntry.entrySet().iterator(); - while (nextHostAttr.hasNext()) { - Entry entry = nextHostAttr.next(); - String attrKey = entry.getKey(); - String attrValue = entry.getValue(); - hostString.append(attrKey + ":" + attrValue + ":");//$NON-NLS-1$ //$NON-NLS-2$ - } - hostString.deleteCharAt(hostString.length() - 1); - } - } - - @Override - public void doSaveWidgetValues(IDialogSettings settings, String idPrefix) { - Iterator nextHost = hostSettingsMap.keySet().iterator(); - String[] hosts = new String[hostSettingsMap.keySet().size()]; - int i = 0; - while (nextHost.hasNext()) { - StringBuilder hostString = new StringBuilder(); - String host = nextHost.next(); - hostString.append(host + "|");//$NON-NLS-1$ - Map hostEntry = hostSettingsMap.get(host); - serialize(hostEntry, hostString); - hosts[i] = hostString.toString(); - i = i + 1; - } - settings.put(HOSTS_TAG, hosts); - if (isWithoutSelection()) { - if (hostCombo != null) { - String host = getHostFromSettings(); - if (host != null) - settings.put(LAST_HOST_TAG, host); - } - } - - if (!encodingHistory.isEmpty()) { - settings.put(ENCODINGS_TAG, encodingHistory.toArray(new String[encodingHistory.size()])); - } - } - - /** - * Save the encodings widget values. - * - * @param settings The dialog settings. Must not be null. - * @param idPrefix The prefix or null. - */ - protected void doSaveEncodingsWidgetValues(IDialogSettings settings, String idPrefix) { - Assert.isNotNull(settings); - - String encoding = getEncoding(); - if (encoding != null) { - settings.put(prefixDialogSettingsSlotId(ITerminalsConnectorConstants.PROP_ENCODING, idPrefix), encoding); - } - } - - protected abstract void saveSettingsForHost(boolean add); - - protected abstract void fillSettingsForHost(String host); - - protected abstract String getHostFromSettings(); - - protected void removeSecurePassword(String host) { - // noop by default - } - - /** - * Returns the selected host from the hosts combo widget. - * - * @return The selected host or null. - */ - protected final String getHostFromCombo() { - return hostCombo != null && !hostCombo.isDisposed() ? hostCombo.getText() : null; - } - - protected void removeSettingsForHost(String host) { - if (hostSettingsMap.containsKey(host)) { - hostSettingsMap.remove(host); - } - } - - /** - * Returns the list of host names of the persisted hosts. - * - * @return The list of host names. - */ - private List getHostList() { - List hostList = new ArrayList<>(); - hostList.addAll(hostSettingsMap.keySet()); - return hostList; - } - - /** - * Fill the host combo with the stored per host setting names. - */ - protected void fillHostCombo() { - if (hostCombo != null) { - hostCombo.removeAll(); - List hostList = getHostList(); - Collections.sort(hostList); - Iterator nextHost = hostList.iterator(); - while (nextHost.hasNext()) { - String host = nextHost.next(); - hostCombo.add(host); - } - if (hostList.size() <= 1) { - hostCombo.setEnabled(false); - } else { - hostCombo.setEnabled(true); - - } - if (deleteHostButton != null) { - if (hostList.size() == 0) { - deleteHostButton.setEnabled(false); - } else { - deleteHostButton.setEnabled(true); - } - } - } - } - - public boolean isWithoutSelection() { - ISelection selection = getSelection(); - if (selection == null) { - return true; - } - if (selection instanceof IStructuredSelection && selection.isEmpty()) { - return true; - } - return false; - } - - public boolean isWithHostList() { - return true; - } - - /** - * Create the host selection combo. - * - * @param parent The parent composite. Must not be null. - * @param separator If true, a separator will be added after the controls. - */ - protected void createHostsUI(Composite parent, boolean separator) { - Assert.isNotNull(parent); - - if (isWithoutSelection() && isWithHostList()) { - Composite comboComposite = new Composite(parent, SWT.NONE); - GridLayout layout = new GridLayout(3, false); - layout.marginHeight = 0; - layout.marginWidth = 0; - comboComposite.setLayout(layout); - comboComposite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); - - Label label = new Label(comboComposite, SWT.HORIZONTAL); - label.setText(Messages.AbstractConfigurationPanel_hosts); - - hostCombo = new Combo(comboComposite, SWT.READ_ONLY); - hostCombo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); - hostCombo.addSelectionListener(new SelectionListener() { - - @Override - public void widgetSelected(SelectionEvent e) { - String host = hostCombo.getText(); - fillSettingsForHost(host); - } - - @Override - public void widgetDefaultSelected(SelectionEvent e) { - widgetSelected(e); - } - }); - - deleteHostButton = new Button(comboComposite, SWT.NONE); - // deleteHostButton.setText(Messages.AbstractConfigurationPanel_delete); - - ISharedImages workbenchImages = PlatformUI.getWorkbench().getSharedImages(); - Image deleteHostButtonImage = workbenchImages.getImageDescriptor(ISharedImages.IMG_TOOL_DELETE) - .createImage(); - deleteHostButton.setImage(deleteHostButtonImage); - deleteHostButton.setToolTipText(Messages.AbstractConfigurationPanel_deleteButtonTooltip); - deleteHostButton.addSelectionListener(new SelectionListener() { - - @Override - public void widgetSelected(SelectionEvent e) { - String host = getHostFromCombo(); - if (host != null && host.length() != 0) { - removeSettingsForHost(host); - removeSecurePassword(host); - fillHostCombo(); - hostCombo.select(0); - host = getHostFromCombo(); - if (host != null && host.length() != 0) { - fillSettingsForHost(host); - } - } - } - - @Override - public void widgetDefaultSelected(SelectionEvent e) { - widgetSelected(e); - } - }); - if (deleteHostButtonImage != null) { - deleteHostButton.addListener(SWT.Dispose, (e) -> deleteHostButtonImage.dispose()); - } - - if (separator) { - Label sep = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL); - sep.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); - } - } - } - - /** - * Create the encoding selection combo. - * - * @param parent The parent composite. Must not be null. - * @param separator If true, a separator will be added before the controls. - */ - protected void createEncodingUI(final Composite parent, boolean separator) { - Assert.isNotNull(parent); - - if (separator) { - Label sep = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL); - sep.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); - } - - Composite panel = new Composite(parent, SWT.NONE); - GridLayout layout = new GridLayout(2, false); - layout.marginHeight = 0; - layout.marginWidth = 0; - panel.setLayout(layout); - panel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); - - Label label = new Label(panel, SWT.HORIZONTAL); - label.setText(Messages.AbstractConfigurationPanel_encoding); - - encodingCombo = new Combo(panel, SWT.READ_ONLY); - ControlDecoration encodingComboDecorator = new ControlDecoration(encodingCombo, SWT.TOP | SWT.LEFT); - encodingCombo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); - encodingCombo.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - if (Messages.AbstractConfigurationPanel_encoding_custom.equals(encodingCombo.getText())) { - InputDialog dialog = new InputDialog(parent.getShell(), - Messages.AbstractConfigurationPanel_encoding_custom_title, - Messages.AbstractConfigurationPanel_encoding_custom_message, null, newText -> { - boolean valid = false; - try { - if (newText != null && !"".equals(newText)) { //$NON-NLS-1$ - valid = Charset.isSupported(newText); - } - } catch (IllegalCharsetNameException e1) { - /* ignored on purpose */ } - - if (!valid) { - return newText != null && !"".equals(newText) //$NON-NLS-1$ - ? Messages.AbstractConfigurationPanel_encoding_custom_error - : ""; //$NON-NLS-1$ - } - return null; - }); - if (dialog.open() == Window.OK) { - String encoding = dialog.getValue(); - encodingCombo.add(encoding, encodingCombo.getItemCount() - 1); - encodingCombo.select(encodingCombo.indexOf(encoding)); - lastSelectedEncoding = encodingCombo.getText(); - - // Remember the last 5 custom encodings entered - if (!encodingHistory.contains(encoding)) { - if (encodingHistory.size() == 5) - encodingHistory.remove(4); - encodingHistory.add(encoding); - } - - } else { - encodingCombo.select(encodingCombo.indexOf(lastSelectedEncoding)); - } - } - - decorateEncoding(encodingComboDecorator, encodingCombo.getText()); - } - }); - - fillEncodingCombo(); - - // Apply any default encoding derived from the current selection - String defaultEncoding = getSelectionEncoding(); - if (defaultEncoding != null && !"".equals(defaultEncoding)) { //$NON-NLS-1$ - setEncoding(defaultEncoding); - } - } - - /** - * Allow the encoding combo box to be decorated with a warning or similar in case user selects - * inappropriate encoding. - * - * @param encodingComboDecorator control decoration on the encoding combo box - * @param encoding the encoding the user has selected - * @since 4.10 - */ - protected void decorateEncoding(ControlDecoration encodingComboDecorator, String encoding) { - // by default don't warn users - encodingComboDecorator.hide(); - encodingComboDecorator.hideHover(); - } - - /** - * Fill the encoding combo. - */ - protected void fillEncodingCombo() { - if (encodingCombo != null) { - List encodings = new ArrayList<>(); - - // Default encoding - encodings.add("Default (UTF-8)"); //$NON-NLS-1$ - - // The currently selected IDE encoding from the preferences - String ideEncoding = getResourceEncoding(); - - // The default Eclipse Workbench encoding (configured in the preferences) - String eclipseEncoding = WorkbenchEncoding.getWorkbenchDefaultEncoding(); - - // The default host (Java VM) encoding - String hostEncoding = Charset.defaultCharset().name(); - - addEncodings(encodings, "UTF-8", ideEncoding, eclipseEncoding, hostEncoding); //$NON-NLS-1$ - - // The "Other..." encoding - encodings.add(Messages.AbstractConfigurationPanel_encoding_custom); - - encodingCombo.setItems(encodings.toArray(new String[encodings.size()])); - encodingCombo.select(0); - - lastSelectedEncoding = encodingCombo.getText(); - } - } - - /** - * Add given encoding names to the list. Duplicates are filtered out by comparing aliases. - */ - private void addEncodings(List encodings, String... toadd) { - Set aliases = new HashSet<>(); - for (String name : toadd) { - if (name == null) - continue; - try { - Charset cs = Charset.forName(name); - if (aliases.containsAll(cs.aliases())) - continue; - if (aliases.contains(name.toLowerCase())) - continue; - aliases.addAll(cs.aliases()); - aliases.add(name.toLowerCase()); - encodings.add(name); - } catch (Exception e) { - // skip - } - } - } - - /** - * Get the current value of the encoding preference. If the value is not set - * return null. - *

        - * Note: Copied from org.eclipse.ui.ide.IDEEncoding. - * - * @return String - */ - @SuppressWarnings("deprecation") - private String getResourceEncoding() { - String preference = null; - Bundle bundle = Platform.getBundle("org.eclipse.core.resources"); //$NON-NLS-1$ - if (bundle != null && bundle.getState() != Bundle.UNINSTALLED && bundle.getState() != Bundle.STOPPING) { - preference = org.eclipse.core.resources.ResourcesPlugin.getPlugin().getPluginPreferences() - .getString(org.eclipse.core.resources.ResourcesPlugin.PREF_ENCODING); - } - - return preference != null && preference.length() > 0 ? preference : null; - } - - /** - * Select the encoding. - * - * @param encoding The encoding. Must not be null. - */ - protected void setEncoding(String encoding) { - Assert.isNotNull(encoding); - - if (encodingCombo != null && !encodingCombo.isDisposed()) { - int index = encodingCombo.indexOf("UTF-8".equals(encoding) ? "Default (UTF-8)" : encoding); //$NON-NLS-1$ //$NON-NLS-2$ - if (index != -1) - encodingCombo.select(index); - else { - encodingCombo.add(encoding, encodingCombo.getItemCount() - 1); - encodingCombo.select(encodingCombo.indexOf(encoding)); - } - - lastSelectedEncoding = encodingCombo.getText(); - } - } - - /** - * Returns the selected encoding. - * - * @return The selected encoding or null. - */ - protected String getEncoding() { - String encoding = encodingCombo != null && !encodingCombo.isDisposed() ? encodingCombo.getText() : null; - return encoding != null && encoding.startsWith("Default") ? null : encoding; //$NON-NLS-1$ - } - - /** - * Returns if or if not the selected encoding is supported. - * - * @return True if the selected encoding is supported. - */ - protected boolean isEncodingValid() { - try { - String encoding = getEncoding(); - return Charset.isSupported(encoding != null ? encoding : "UTF-8"); //$NON-NLS-1$ - } catch (IllegalCharsetNameException e) { - return false; - } - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/preferences/PreferencePage.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/preferences/PreferencePage.java deleted file mode 100644 index ff85cec8e72..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/preferences/PreferencePage.java +++ /dev/null @@ -1,683 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2014, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.preferences; - -import java.io.File; -import java.net.URI; -import java.net.URISyntaxException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.Path; -import org.eclipse.core.runtime.Platform; -import org.eclipse.core.runtime.URIUtil; -import org.eclipse.core.variables.IStringVariableManager; -import org.eclipse.core.variables.VariablesPlugin; -import org.eclipse.jface.dialogs.Dialog; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.resource.JFaceResources; -import org.eclipse.jface.viewers.ColumnViewerToolTipSupport; -import org.eclipse.jface.viewers.ColumnWeightData; -import org.eclipse.jface.viewers.ILabelProviderListener; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.IStructuredContentProvider; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.ITableLabelProvider; -import org.eclipse.jface.viewers.TableLayout; -import org.eclipse.jface.viewers.TableViewer; -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.jface.window.Window; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.graphics.GC; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.graphics.ImageData; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Combo; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.DirectoryDialog; -import org.eclipse.swt.widgets.FileDialog; -import org.eclipse.swt.widgets.Group; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Table; -import org.eclipse.swt.widgets.TableColumn; -import org.eclipse.swt.widgets.Text; -import org.eclipse.tm.terminal.view.ui.activator.UIPlugin; -import org.eclipse.tm.terminal.view.ui.controls.NoteCompositeHelper; -import org.eclipse.tm.terminal.view.ui.interfaces.IExternalExecutablesProperties; -import org.eclipse.tm.terminal.view.ui.interfaces.IPreferenceKeys; -import org.eclipse.tm.terminal.view.ui.local.showin.ExternalExecutablesDialog; -import org.eclipse.tm.terminal.view.ui.local.showin.ExternalExecutablesManager; -import org.eclipse.tm.terminal.view.ui.local.showin.ExternalExecutablesUtils; -import org.eclipse.tm.terminal.view.ui.nls.Messages; -import org.eclipse.ui.IWorkbench; -import org.eclipse.ui.IWorkbenchPreferencePage; -import org.osgi.framework.Bundle; - -/** - * Terminal top preference page implementation. - */ -public class PreferencePage extends org.eclipse.jface.preference.PreferencePage implements IWorkbenchPreferencePage { - /* default */ TableViewer viewer; - private Button addButton; - private Button editButton; - private Button removeButton; - /* default */ Combo workingDir; - private Button browseButton; - - private Button variablesButton; - private boolean hasVariablesButton = false; - - /* default */ Text command; - private Button commandBrowseButton; - private Text arguments; - - /* default */ final List> executables = new ArrayList<>(); - /* default */ final Map images = new HashMap<>(); - - /* default */ static final Object[] NO_ELEMENTS = new Object[0]; - - @Override - public void init(IWorkbench workbench) { - Bundle bundle = Platform.getBundle("org.eclipse.debug.ui"); //$NON-NLS-1$ - if (bundle != null && bundle.getState() != Bundle.UNINSTALLED && bundle.getState() != Bundle.STOPPING) { - hasVariablesButton = true; - } - } - - @Override - protected Control createContents(final Composite parent) { - final GC gc = new GC(parent); - gc.setFont(JFaceResources.getDialogFont()); - - Composite panel = new Composite(parent, SWT.NONE); - panel.setLayout(new GridLayout()); - GridData layoutData = new GridData(SWT.FILL, SWT.BEGINNING, true, false); - panel.setLayoutData(layoutData); - - Label label = new Label(panel, SWT.HORIZONTAL); - label.setText(Messages.PreferencePage_label); - label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); - - if (!Platform.OS_WIN32.equals(Platform.getOS())) { - Group group = new Group(panel, SWT.NONE); - group.setText(Messages.PreferencePage_command_label); - group.setLayout(new GridLayout(2, false)); - group.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false)); - - command = new Text(group, SWT.SINGLE | SWT.BORDER); - command.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); - command.addModifyListener(e -> { - boolean valid = true; - String message = null; - - String text = command.getText(); - if (text != null && !"".equals(text.trim())) { //$NON-NLS-1$ - IPath p = new Path(text.trim()); - valid = p.toFile().isFile() && p.toFile().canRead() && p.toFile().canExecute(); - if (!valid) - message = Messages.PreferencePage_command_invalid; - } - - setValid(valid); - setErrorMessage(message); - }); - - commandBrowseButton = new Button(group, SWT.PUSH); - commandBrowseButton.setText(Messages.PreferencePage_command_button_browse); - layoutData = new GridData(SWT.FILL, SWT.CENTER, false, false); - layoutData.widthHint = Dialog.convertWidthInCharsToPixels(gc.getFontMetrics(), 14); - commandBrowseButton.setLayoutData(layoutData); - commandBrowseButton.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - FileDialog dialog = new FileDialog(parent.getShell(), SWT.OPEN); - - String text = command.getText(); - if (text != null && !"".equals(text.trim())) { //$NON-NLS-1$ - IPath p = new Path(text); - - if (p.toFile().isFile() || !p.toFile().exists()) { - dialog.setFilterPath(p.removeLastSegments(1).toOSString()); - dialog.setFileName(p.lastSegment()); - } else if (p.toFile().isDirectory()) { - dialog.setFilterPath(p.toOSString()); - } - } - - String selected = dialog.open(); - if (selected != null) { - IPath sp = new Path(selected); - command.setText(sp.toOSString()); - } - } - }); - - String cmd = UIPlugin.getScopedPreferences() - .getString(IPreferenceKeys.PREF_LOCAL_TERMINAL_DEFAULT_SHELL_UNIX); - if (cmd != null && !"".equals(cmd)) { //$NON-NLS-1$ - command.setText(new Path(cmd).toOSString()); - } - - Composite argsPanel = new Composite(group, SWT.NONE); - GridLayout layout = new GridLayout(2, false); - layout.marginHeight = 0; - layout.marginWidth = 0; - argsPanel.setLayout(layout); - layoutData = new GridData(SWT.FILL, SWT.BEGINNING, true, false); - layoutData.horizontalSpan = 2; - argsPanel.setLayoutData(layoutData); - - label = new Label(argsPanel, SWT.NONE); - label.setText(Messages.PreferencePage_command_arguments_label); - - arguments = new Text(argsPanel, SWT.SINGLE | SWT.BORDER); - arguments.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); - - String args = UIPlugin.getScopedPreferences() - .getString(IPreferenceKeys.PREF_LOCAL_TERMINAL_DEFAULT_SHELL_UNIX_ARGS); - if (args != null && !"".equals(args)) { //$NON-NLS-1$ - arguments.setText(args); - } - - NoteCompositeHelper.createNoteComposite(group.getFont(), group, Messages.PreferencePage_command_note_label, - Messages.PreferencePage_command_note_text); - } - - Group group = new Group(panel, SWT.NONE); - group.setText(Messages.PreferencePage_workingDir_label); - group.setLayout(new GridLayout(hasVariablesButton ? 3 : 2, false)); - group.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false)); - - workingDir = new Combo(group, SWT.DROP_DOWN); - Bundle bundle = Platform.getBundle("org.eclipse.core.resources"); //$NON-NLS-1$ - if (bundle != null && bundle.getState() != Bundle.UNINSTALLED && bundle.getState() != Bundle.STOPPING) { - workingDir.setItems(new String[] { Messages.PreferencePage_workingDir_userhome_label, - Messages.PreferencePage_workingDir_eclipsehome_label, - Messages.PreferencePage_workingDir_eclipsews_label }); - } else { - workingDir.setItems(new String[] { Messages.PreferencePage_workingDir_userhome_label, - Messages.PreferencePage_workingDir_eclipsehome_label }); - } - workingDir.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); - workingDir.select(0); - workingDir.addModifyListener(e -> { - boolean valid = true; - String message = null; - - String text = workingDir.getText(); - if (text != null && !"".equals(text.trim()) //$NON-NLS-1$ - && !Messages.PreferencePage_workingDir_userhome_label.equals(text) - && !Messages.PreferencePage_workingDir_eclipsehome_label.equals(text) - && !Messages.PreferencePage_workingDir_eclipsews_label.equals(text)) { - try { - // Resolve possible dynamic variables - IStringVariableManager vm = VariablesPlugin.getDefault().getStringVariableManager(); - String resolved = vm.performStringSubstitution(text.trim()); - - IPath p = new Path(resolved); - valid = p.toFile().canRead() && p.toFile().isDirectory(); - if (!valid) - message = Messages.PreferencePage_workingDir_invalid; - } catch (CoreException ex) { - valid = false; - message = ex.getLocalizedMessage(); - } - } - - setValid(valid); - setErrorMessage(message); - }); - - browseButton = new Button(group, SWT.PUSH); - browseButton.setText(Messages.PreferencePage_workingDir_button_browse); - layoutData = new GridData(SWT.FILL, SWT.CENTER, false, false); - layoutData.widthHint = Dialog.convertWidthInCharsToPixels(gc.getFontMetrics(), 14); - browseButton.setLayoutData(layoutData); - browseButton.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - IPath uh = null; - IPath eh = null; - IPath ew = null; - - // HOME - String home = System.getProperty("user.home"); //$NON-NLS-1$ - if (home != null && !"".equals(home)) //$NON-NLS-1$ - uh = new Path(home); - - // ECLIPSE_HOME - String eclipseHomeLocation = System.getProperty("eclipse.home.location"); //$NON-NLS-1$ - if (eclipseHomeLocation != null) { - try { - URI uri = URIUtil.fromString(eclipseHomeLocation); - File f = URIUtil.toFile(uri); - eh = new Path(f.getAbsolutePath()); - } catch (URISyntaxException ex) { - /* ignored on purpose */ } - } - - // ECLIPSE_WORKSPACE - Bundle bundle = Platform.getBundle("org.eclipse.core.resources"); //$NON-NLS-1$ - if (bundle != null && bundle.getState() != Bundle.UNINSTALLED && bundle.getState() != Bundle.STOPPING) { - if (org.eclipse.core.resources.ResourcesPlugin.getWorkspace() != null - && org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot() != null - && org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot() - .getLocation() != null) { - ew = org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot().getLocation(); - } - } - - DirectoryDialog dialog = new DirectoryDialog(parent.getShell(), SWT.OPEN); - - // Determine the filter path - String text = workingDir.getText(); - if (Messages.PreferencePage_workingDir_userhome_label.equals(text)) { - dialog.setFilterPath(uh.toOSString()); - } else if (Messages.PreferencePage_workingDir_eclipsehome_label.equals(text)) { - dialog.setFilterPath(eh.toOSString()); - } else if (Messages.PreferencePage_workingDir_eclipsews_label.equals(text)) { - dialog.setFilterPath(ew.toOSString()); - } else if (text != null && !"".equals(text.trim())) { //$NON-NLS-1$ - try { - // Resolve possible dynamic variables - IStringVariableManager vm = VariablesPlugin.getDefault().getStringVariableManager(); - String resolved = vm.performStringSubstitution(text.trim()); - dialog.setFilterPath(resolved); - } catch (CoreException ex) { - if (Platform.inDebugMode()) { - UIPlugin.getDefault().getLog().log(ex.getStatus()); - } - } - } - - String selected = dialog.open(); - if (selected != null) { - IPath sp = new Path(selected); - - if (uh.equals(sp)) { - workingDir.select(0); - } else if (eh.equals(sp)) { - workingDir.select(1); - } else if (ew.equals(sp)) { - workingDir.select(2); - } else { - workingDir.setText(sp.toOSString()); - } - } - } - }); - - if (hasVariablesButton) { - variablesButton = new Button(group, SWT.PUSH); - variablesButton.setText(Messages.PreferencePage_workingDir_button_variables); - layoutData = new GridData(SWT.FILL, SWT.CENTER, false, false); - layoutData.widthHint = Dialog.convertWidthInCharsToPixels(gc.getFontMetrics(), 14); - variablesButton.setLayoutData(layoutData); - variablesButton.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - org.eclipse.debug.ui.StringVariableSelectionDialog dialog = new org.eclipse.debug.ui.StringVariableSelectionDialog( - getShell()); - dialog.open(); - String expression = dialog.getVariableExpression(); - if (expression != null) { - if ("${eclipse_home}".equals(expression)) { //$NON-NLS-1$ - workingDir.select(1); - } else if ("${workspace_loc}".equals(expression)) { //$NON-NLS-1$ - workingDir.select(2); - } else { - workingDir.setText(expression); - } - } - } - }); - } - - String initialCwd = UIPlugin.getScopedPreferences().getString(IPreferenceKeys.PREF_LOCAL_TERMINAL_INITIAL_CWD); - if (initialCwd == null || IPreferenceKeys.PREF_INITIAL_CWD_USER_HOME.equals(initialCwd) - || "".equals(initialCwd.trim())) { //$NON-NLS-1$ - workingDir.select(0); - } else if (IPreferenceKeys.PREF_INITIAL_CWD_ECLIPSE_HOME.equals(initialCwd) - || "${eclipse_home}".equals(initialCwd)) { //$NON-NLS-1$ - workingDir.select(1); - } else if (IPreferenceKeys.PREF_INITIAL_CWD_ECLIPSE_WS.equals(initialCwd) - || "${workspace_loc}".equals(initialCwd)) { //$NON-NLS-1$ - workingDir.select(2); - } else { - workingDir.setText(new Path(initialCwd).toOSString()); - } - - NoteCompositeHelper.createNoteComposite(group.getFont(), group, Messages.PreferencePage_workingDir_note_label, - Messages.PreferencePage_workingDir_note_text); - - group = new Group(panel, SWT.NONE); - group.setText(Messages.PreferencePage_executables_label); - group.setLayout(new GridLayout(2, false)); - group.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false)); - - viewer = new TableViewer(group, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.FULL_SELECTION); - - Table table = viewer.getTable(); - table.setHeaderVisible(true); - table.setLinesVisible(true); - - TableColumn column = new TableColumn(table, SWT.LEFT); - column.setText(Messages.PreferencePage_executables_column_name_label); - column = new TableColumn(table, SWT.LEFT); - column.setText(Messages.PreferencePage_executables_column_path_label); - - ColumnViewerToolTipSupport.enableFor(viewer); - - TableLayout tableLayout = new TableLayout(); - tableLayout.addColumnData(new ColumnWeightData(35)); - tableLayout.addColumnData(new ColumnWeightData(65)); - table.setLayout(tableLayout); - - layoutData = new GridData(SWT.FILL, SWT.FILL, true, true); - layoutData.heightHint = Dialog.convertHeightInCharsToPixels(gc.getFontMetrics(), 10); - table.setLayoutData(layoutData); - - Composite buttonsPanel = new Composite(group, SWT.NONE); - GridLayout layout = new GridLayout(); - layout.marginHeight = 0; - layout.marginWidth = 0; - buttonsPanel.setLayout(layout); - buttonsPanel.setLayoutData(new GridData(SWT.LEAD, SWT.BEGINNING, false, false)); - - addButton = new Button(buttonsPanel, SWT.PUSH); - addButton.setText(Messages.PreferencePage_executables_button_add_label); - layoutData = new GridData(SWT.FILL, SWT.CENTER, false, false); - layoutData.widthHint = Dialog.convertWidthInCharsToPixels(gc.getFontMetrics(), 10); - addButton.setLayoutData(layoutData); - addButton.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - ExternalExecutablesDialog dialog = new ExternalExecutablesDialog(PreferencePage.this.getShell(), false); - if (dialog.open() == Window.OK) { - // Get the executable properties and add it to the the list - Map executableData = dialog.getExecutableData(); - if (executableData != null && !executables.contains(executableData)) { - executables.add(executableData); - viewer.refresh(); - } - } - } - }); - - editButton = new Button(buttonsPanel, SWT.PUSH); - editButton.setText(Messages.PreferencePage_executables_button_edit_label); - layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false); - layoutData.widthHint = Dialog.convertWidthInCharsToPixels(gc.getFontMetrics(), 10); - editButton.setLayoutData(layoutData); - editButton.addSelectionListener(new SelectionAdapter() { - @SuppressWarnings("unchecked") - @Override - public void widgetSelected(SelectionEvent e) { - ISelection s = viewer.getSelection(); - if (s instanceof IStructuredSelection && !s.isEmpty()) { - Object element = ((IStructuredSelection) s).getFirstElement(); - if (element instanceof Map) { - final Map m = (Map) element; - ExternalExecutablesDialog dialog = new ExternalExecutablesDialog(PreferencePage.this.getShell(), - true); - dialog.setExecutableData(m); - if (dialog.open() == Window.OK) { - Map executableData = dialog.getExecutableData(); - if (executableData != null) { - m.clear(); - m.putAll(executableData); - viewer.refresh(); - } - } - } - } - } - }); - - removeButton = new Button(buttonsPanel, SWT.PUSH); - removeButton.setText(Messages.PreferencePage_executables_button_remove_label); - layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false); - layoutData.widthHint = Dialog.convertWidthInCharsToPixels(gc.getFontMetrics(), 10); - removeButton.setLayoutData(layoutData); - removeButton.addSelectionListener(new SelectionAdapter() { - @SuppressWarnings("unchecked") - @Override - public void widgetSelected(SelectionEvent e) { - ISelection s = viewer.getSelection(); - if (s instanceof IStructuredSelection && !s.isEmpty()) { - Iterator iterator = ((IStructuredSelection) s).iterator(); - while (iterator.hasNext()) { - Object element = iterator.next(); - if (element instanceof Map) { - Map m = (Map) element; - executables.remove(m); - } - viewer.refresh(); - } - } - } - }); - - viewer.setContentProvider(new IStructuredContentProvider() { - @Override - public Object[] getElements(Object inputElement) { - if (inputElement instanceof List && !((List) inputElement).isEmpty()) { - return ((List) inputElement).toArray(); - } - return NO_ELEMENTS; - } - - @Override - public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { - } - - @Override - public void dispose() { - } - }); - - viewer.setLabelProvider(new ITableLabelProvider() { - @SuppressWarnings("unchecked") - @Override - public String getColumnText(Object element, int columnIndex) { - if (element instanceof Map) { - Map m = (Map) element; - - switch (columnIndex) { - case 0: - return (String) m.get(IExternalExecutablesProperties.PROP_NAME); - case 1: - return (String) m.get(IExternalExecutablesProperties.PROP_PATH); - } - } - return null; - } - - @SuppressWarnings("unchecked") - @Override - public Image getColumnImage(Object element, int columnIndex) { - Image i = null; - - if (element instanceof Map) { - switch (columnIndex) { - case 0: - Map m = (Map) element; - String icon = (String) m.get(IExternalExecutablesProperties.PROP_ICON); - if (icon != null) { - i = images.get(icon); - if (i == null) { - ImageData id = ExternalExecutablesUtils.loadImage(icon); - if (id != null) { - ImageDescriptor d = ImageDescriptor.createFromImageData(id); - if (d != null) - i = d.createImage(); - if (i != null) - images.put(icon, i); - } - } - } - break; - case 1: - break; - } - } - - return i; - } - - @Override - public void removeListener(ILabelProviderListener listener) { - } - - @Override - public boolean isLabelProperty(Object element, String property) { - return false; - } - - @Override - public void dispose() { - } - - @Override - public void addListener(ILabelProviderListener listener) { - } - }); - - List> l = ExternalExecutablesManager.load(); - if (l != null) - executables.addAll(l); - - viewer.setInput(executables); - - viewer.addPostSelectionChangedListener(event -> updateButtons()); - - updateButtons(); - - gc.dispose(); - - return panel; - } - - /** - * Updates the button states. - */ - protected void updateButtons() { - if (viewer != null) { - addButton.setEnabled(true); - - ISelection selection = viewer.getSelection(); - - boolean hasSelection = selection != null && !selection.isEmpty(); - int count = selection instanceof IStructuredSelection ? ((IStructuredSelection) selection).size() : 0; - - editButton.setEnabled(hasSelection && count == 1); - removeButton.setEnabled(hasSelection && count > 0); - } else { - addButton.setEnabled(false); - editButton.setEnabled(false); - removeButton.setEnabled(false); - } - } - - @Override - protected void performDefaults() { - if (!Platform.OS_WIN32.equals(Platform.getOS())) { - command.setText(""); //$NON-NLS-1$ - arguments.setText(""); //$NON-NLS-1$ - } - - String initialCwd = UIPlugin.getScopedPreferences() - .getDefaultString(IPreferenceKeys.PREF_LOCAL_TERMINAL_INITIAL_CWD); - if (initialCwd == null || IPreferenceKeys.PREF_INITIAL_CWD_USER_HOME.equals(initialCwd) - || "".equals(initialCwd.trim())) { //$NON-NLS-1$ - workingDir.select(0); - } else if (IPreferenceKeys.PREF_INITIAL_CWD_ECLIPSE_HOME.equals(initialCwd) - || "${eclipse_home}".equals(initialCwd)) { //$NON-NLS-1$ - workingDir.select(1); - } else if (IPreferenceKeys.PREF_INITIAL_CWD_ECLIPSE_WS.equals(initialCwd) - || "${workspace_loc}".equals(initialCwd)) { //$NON-NLS-1$ - workingDir.select(2); - } else { - workingDir.setText(new Path(initialCwd).toOSString()); - } - - executables.clear(); - List> l = ExternalExecutablesManager.load(); - if (l != null) - executables.addAll(l); - viewer.refresh(); - - super.performDefaults(); - } - - @Override - public boolean performOk() { - if (!Platform.OS_WIN32.equals(Platform.getOS())) { - String text = command.getText(); - IPath p = new Path(text.trim()); - UIPlugin.getScopedPreferences().putString(IPreferenceKeys.PREF_LOCAL_TERMINAL_DEFAULT_SHELL_UNIX, - p.toFile().isFile() && p.toFile().canRead() && p.toFile().canExecute() ? p.toOSString() : null); - - text = arguments.getText(); - UIPlugin.getScopedPreferences().putString(IPreferenceKeys.PREF_LOCAL_TERMINAL_DEFAULT_SHELL_UNIX_ARGS, - !"".equals(text.trim()) ? text.trim() : null); //$NON-NLS-1$ - } - - String text = workingDir.getText(); - if (text == null || Messages.PreferencePage_workingDir_userhome_label.equals(text) || "".equals(text.trim())) { //$NON-NLS-1$ - UIPlugin.getScopedPreferences().putString(IPreferenceKeys.PREF_LOCAL_TERMINAL_INITIAL_CWD, null); - } else if (Messages.PreferencePage_workingDir_eclipsehome_label.equals(text)) { - UIPlugin.getScopedPreferences().putString(IPreferenceKeys.PREF_LOCAL_TERMINAL_INITIAL_CWD, - IPreferenceKeys.PREF_INITIAL_CWD_ECLIPSE_HOME); - } else if (Messages.PreferencePage_workingDir_eclipsews_label.equals(text)) { - UIPlugin.getScopedPreferences().putString(IPreferenceKeys.PREF_LOCAL_TERMINAL_INITIAL_CWD, - IPreferenceKeys.PREF_INITIAL_CWD_ECLIPSE_WS); - } else { - try { - // Resolve possible dynamic variables - IStringVariableManager vm = VariablesPlugin.getDefault().getStringVariableManager(); - String resolved = vm.performStringSubstitution(text.trim()); - - IPath p = new Path(resolved); - UIPlugin.getScopedPreferences().putString(IPreferenceKeys.PREF_LOCAL_TERMINAL_INITIAL_CWD, - p.toFile().canRead() && p.toFile().isDirectory() ? text.trim() : null); - } catch (CoreException e) { - if (Platform.inDebugMode()) { - UIPlugin.getDefault().getLog().log(e.getStatus()); - } - } - } - - ExternalExecutablesManager.save(executables); - - return super.performOk(); - } - - @Override - public void dispose() { - for (Image i : images.values()) { - i.dispose(); - } - images.clear(); - super.dispose(); - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/preferences/PreferencesInitializer.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/preferences/PreferencesInitializer.java deleted file mode 100644 index 60580e93617..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/preferences/PreferencesInitializer.java +++ /dev/null @@ -1,38 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - * Dirk Fauth - Bug 460496 - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.preferences; - -import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; -import org.eclipse.tm.terminal.view.core.preferences.ScopedEclipsePreferences; -import org.eclipse.tm.terminal.view.ui.activator.UIPlugin; -import org.eclipse.tm.terminal.view.ui.interfaces.IPreferenceKeys; - -/** - * Terminal default preferences initializer. - */ -public class PreferencesInitializer extends AbstractPreferenceInitializer { - - public PreferencesInitializer() { - } - - @Override - public void initializeDefaultPreferences() { - ScopedEclipsePreferences prefs = UIPlugin.getScopedPreferences(); - - prefs.putDefaultBoolean(IPreferenceKeys.PREF_REMOVE_TERMINATED_TERMINALS, true); - - prefs.putDefaultString(IPreferenceKeys.PREF_LOCAL_TERMINAL_INITIAL_CWD, - IPreferenceKeys.PREF_INITIAL_CWD_USER_HOME); - prefs.putDefaultString(IPreferenceKeys.PREF_LOCAL_TERMINAL_DEFAULT_SHELL_UNIX, null); - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/services/TerminalService.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/services/TerminalService.java deleted file mode 100644 index fc372b9caad..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/services/TerminalService.java +++ /dev/null @@ -1,351 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.services; - -import java.util.HashMap; -import java.util.Map; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.core.runtime.ISafeRunnable; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.ListenerList; -import org.eclipse.core.runtime.SafeRunner; -import org.eclipse.core.runtime.Status; -import org.eclipse.swt.custom.CTabItem; -import org.eclipse.swt.widgets.Display; -import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector; -import org.eclipse.tm.terminal.view.core.activator.CoreBundleActivator; -import org.eclipse.tm.terminal.view.core.interfaces.ITerminalService; -import org.eclipse.tm.terminal.view.core.interfaces.ITerminalTabListener; -import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants; -import org.eclipse.tm.terminal.view.ui.interfaces.ILauncherDelegate; -import org.eclipse.tm.terminal.view.ui.interfaces.IUIConstants; -import org.eclipse.tm.terminal.view.ui.launcher.LauncherDelegateManager; -import org.eclipse.tm.terminal.view.ui.manager.ConsoleManager; -import org.eclipse.tm.terminal.view.ui.nls.Messages; -import org.eclipse.ui.PlatformUI; - -/** - * Terminal service implementation. - */ -@SuppressWarnings("restriction") -public class TerminalService implements ITerminalService { - /** - * The registered terminal tab dispose listeners. - */ - private final ListenerList terminalTabListeners = new ListenerList<>(); - - // Flag to remember if the terminal view has been restored or not. - private boolean fRestoringView; - - // Terminal tab events - - /** - * A terminal tab got disposed. - */ - public static final int TAB_DISPOSED = 1; - - /** - * Common terminal service runnable implementation. - */ - protected static abstract class TerminalServiceRunnable { - - /** - * Invoked to execute the terminal service runnable. - * - * @param id The terminals view id or null. - * @param secondaryId The terminals view secondary id or null. - * @param title The terminal tab title. Must not be null. - * @param connector The terminal connector. Must not be null. - * @param data The custom terminal data node or null. - * @param done The callback to invoke if the operation finished or null. - */ - public abstract void run(String id, String secondaryId, String title, ITerminalConnector connector, Object data, - Done done); - - /** - * Returns if or if not to execute the runnable asynchronously. - *

        - * The method returns per default true. Overwrite to - * modify the behavior. - * - * @return True to execute the runnable asynchronously, false otherwise. - */ - public boolean isExecuteAsync() { - return true; - } - } - - public TerminalService() { - } - - @Override - public final void addTerminalTabListener(ITerminalTabListener listener) { - Assert.isNotNull(listener); - terminalTabListeners.add(listener); - } - - @Override - public final void removeTerminalTabListener(ITerminalTabListener listener) { - Assert.isNotNull(listener); - terminalTabListeners.remove(listener); - } - - /** - * Convenience method for notifying the registered terminal tab listeners. - * - * @param event The terminal tab event. - * @param source The disposed tab item. Must not be null. - * @param data The custom data object associated with the disposed tab item or null. - */ - public final void fireTerminalTabEvent(final int event, final Object source, final Object data) { - Assert.isNotNull(source); - - // If no listener is registered, we are done here - if (terminalTabListeners.isEmpty()) - return; - - // Get the list or currently registered listeners - // Loop the registered terminal tab listeners and invoke the proper method - for (final ITerminalTabListener listener : terminalTabListeners) { - ISafeRunnable job = new ISafeRunnable() { - @Override - public void handleException(Throwable exception) { - // already logged in Platform#run() - } - - @Override - public void run() throws Exception { - switch (event) { - case TAB_DISPOSED: - listener.terminalTabDisposed(source, data); - break; - default: - } - } - }; - SafeRunner.run(job); - } - } - - /** - * Executes the given runnable operation and invokes the given callback, if any, - * after the operation finished. - * - * @param properties The terminal properties. Must not be null. - * @param runnable The terminal service runnable. Must not be null. - * @param done The callback to invoke if the operation has been finished or null. - */ - protected final void executeServiceOperation(final Map properties, - final TerminalServiceRunnable runnable, final Done done) { - Assert.isNotNull(properties); - Assert.isNotNull(runnable); - - // Extract the properties - String id = (String) properties.get(ITerminalsConnectorConstants.PROP_ID); - String secondaryId = (String) properties.get(ITerminalsConnectorConstants.PROP_SECONDARY_ID); - if (!properties.containsKey(ITerminalsConnectorConstants.PROP_SECONDARY_ID)) { - secondaryId = ITerminalsConnectorConstants.LAST_ACTIVE_SECONDARY_ID; - } - String title = (String) properties.get(ITerminalsConnectorConstants.PROP_TITLE); - Object data = properties.get(ITerminalsConnectorConstants.PROP_DATA); - - // Normalize the terminals console view id - id = normalizeId(id, data); - // Normalize the terminal console tab title - title = normalizeTitle(title, data); - - // Create the terminal connector instance - final ITerminalConnector connector = createTerminalConnector(properties); - if (connector == null) { - // Properties contain invalid connector arguments - if (done != null) { - Exception e = new IllegalArgumentException(Messages.TerminalService_error_cannotCreateConnector); - done.done(new Status(IStatus.ERROR, CoreBundleActivator.getUniqueIdentifier(), e.getLocalizedMessage(), - e)); - } - return; - } - - // Finalize the used variables - final String finId = id; - final String finSecondaryId = secondaryId; - final String finTitle = title; - final Object finData = data; - - // Execute the operation - if (!runnable.isExecuteAsync()) { - runnable.run(finId, finSecondaryId, finTitle, connector, finData, done); - } else { - try { - Display display = PlatformUI.getWorkbench().getDisplay(); - display.asyncExec(() -> runnable.run(finId, finSecondaryId, finTitle, connector, finData, done)); - } catch (Exception e) { - // if display is disposed, silently ignore. - } - } - } - - /** - * Normalize the terminals view id. - * - * @param id The terminals view id or null. - * @param data The custom data object or null. - * - * @return The normalized terminals console view id. - */ - protected String normalizeId(String id, Object data) { - return id != null ? id : IUIConstants.ID; - } - - /** - * Normalize the terminal tab title. - * - * @param title The terminal tab title or null. - * @param data The custom data object or null. - * - * @return The normalized terminal tab title. - */ - protected String normalizeTitle(String title, Object data) { - // If the title is explicitly specified, return as is - if (title != null) - return title; - - // Return the default console title in all other cases - return Messages.TerminalService_defaultTitle; - } - - /** - * Creates the terminal connector configured within the given properties. - * - * @param properties The terminal console properties. Must not be null. - * @return The terminal connector or null. - */ - protected ITerminalConnector createTerminalConnector(Map properties) { - Assert.isNotNull(properties); - - // The terminal connector result object - ITerminalConnector connector = null; - - // Get the launcher delegate id from the properties - String delegateId = (String) properties.get(ITerminalsConnectorConstants.PROP_DELEGATE_ID); - if (delegateId != null) { - // Get the launcher delegate - ILauncherDelegate delegate = LauncherDelegateManager.getInstance().getLauncherDelegate(delegateId, false); - if (delegate != null) { - // Create the terminal connector - connector = delegate.createTerminalConnector(properties); - } - } - - return connector; - } - - @Override - public void openConsole(final Map properties, final Done done) { - Assert.isNotNull(properties); - final boolean restoringView = fRestoringView; - - executeServiceOperation(properties, new TerminalServiceRunnable() { - @Override - @SuppressWarnings("synthetic-access") - public void run(final String id, final String secondaryId, final String title, - final ITerminalConnector connector, final Object data, final Done done) { - if (restoringView) { - doRun(id, secondaryId, title, connector, data, done); - } else { - // First, restore the view. This opens consoles from the memento - fRestoringView = true; - ConsoleManager.getInstance().showConsoleView(id, secondaryId); - fRestoringView = false; - - // After that schedule opening the requested console - try { - Display display = PlatformUI.getWorkbench().getDisplay(); - display.asyncExec(() -> doRun(id, secondaryId, title, connector, data, done)); - } catch (Exception e) { - // if display is disposed, silently ignore. - } - } - } - - public void doRun(String id, String secondaryId, String title, ITerminalConnector connector, Object data, - Done done) { - // Determine the terminal encoding - String encoding = (String) properties.get(ITerminalsConnectorConstants.PROP_ENCODING); - // Create the flags to pass on to openConsole - Map flags = new HashMap<>(); - flags.put("activate", Boolean.TRUE); //$NON-NLS-1$ - if (properties.get(ITerminalsConnectorConstants.PROP_FORCE_NEW) instanceof Boolean) { - flags.put(ITerminalsConnectorConstants.PROP_FORCE_NEW, - (Boolean) properties.get(ITerminalsConnectorConstants.PROP_FORCE_NEW)); - } - if (properties.get(ITerminalsConnectorConstants.PROP_DATA_NO_RECONNECT) instanceof Boolean) { - flags.put(ITerminalsConnectorConstants.PROP_DATA_NO_RECONNECT, - (Boolean) properties.get(ITerminalsConnectorConstants.PROP_DATA_NO_RECONNECT)); - } - if (properties.get(ITerminalsConnectorConstants.PROP_TITLE_DISABLE_ANSI_TITLE) instanceof Boolean) { - flags.put(ITerminalsConnectorConstants.PROP_TITLE_DISABLE_ANSI_TITLE, - (Boolean) properties.get(ITerminalsConnectorConstants.PROP_TITLE_DISABLE_ANSI_TITLE)); - } else { - flags.put(ITerminalsConnectorConstants.PROP_TITLE_DISABLE_ANSI_TITLE, false); - } - // Open the new console - CTabItem item; - item = ConsoleManager.getInstance().openConsole(id, secondaryId, title, encoding, connector, data, - flags); - // Associate the original terminal properties with the tab item. - // This makes it easier to persist the connection data within the memento handler - if (item != null && !item.isDisposed()) - item.setData("properties", properties); //$NON-NLS-1$ - - // Invoke the callback - if (done != null) - done.done(Status.OK_STATUS); - } - }, done); - } - - @Override - public void closeConsole(final Map properties, final Done done) { - Assert.isNotNull(properties); - - executeServiceOperation(properties, new TerminalServiceRunnable() { - @Override - public void run(String id, String secondaryId, String title, ITerminalConnector connector, Object data, - Done done) { - // Close the console - ConsoleManager.getInstance().closeConsole(id, title, connector, data); - // Invoke the callback - if (done != null) - done.done(Status.OK_STATUS); - } - }, done); - } - - @Override - public void terminateConsole(Map properties, Done done) { - Assert.isNotNull(properties); - - executeServiceOperation(properties, new TerminalServiceRunnable() { - @Override - public void run(String id, String secondaryId, String title, ITerminalConnector connector, Object data, - Done done) { - // Close the console - ConsoleManager.getInstance().terminateConsole(id, title, connector, data); - // Invoke the callback - if (done != null) - done.done(Status.OK_STATUS); - } - }, done); - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/AbstractStreamsConnector.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/AbstractStreamsConnector.java deleted file mode 100644 index 686c7065713..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/AbstractStreamsConnector.java +++ /dev/null @@ -1,198 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.streams; - -import java.io.InputStream; -import java.io.OutputStream; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl; -import org.eclipse.tm.internal.terminal.provisional.api.provider.TerminalConnectorImpl; -import org.eclipse.tm.terminal.view.core.interfaces.ITerminalServiceOutputStreamMonitorListener; -import org.eclipse.ui.services.IDisposable; - -/** - * Streams connector implementation. - */ -public abstract class AbstractStreamsConnector extends TerminalConnectorImpl { - // Reference to the stdin monitor - private InputStreamMonitor stdInMonitor; - // Reference to the stdout monitor - private OutputStreamMonitor stdOutMonitor; - // Reference to the stderr monitor - private OutputStreamMonitor stdErrMonitor; - - // Reference to the list of stdout output listeners - private ITerminalServiceOutputStreamMonitorListener[] stdoutListeners = null; - // Reference to the list of stderr output listeners - private ITerminalServiceOutputStreamMonitorListener[] stderrListeners = null; - - /** - * Set the list of stdout listeners. - * - * @param listeners The list of stdout listeners or null. - */ - protected final void setStdoutListeners(ITerminalServiceOutputStreamMonitorListener[] listeners) { - this.stdoutListeners = listeners; - } - - /** - * Set the list of stderr listeners. - * - * @param listeners The list of stderr listeners or null. - */ - protected final void setStderrListeners(ITerminalServiceOutputStreamMonitorListener[] listeners) { - this.stderrListeners = listeners; - } - - /** - * Connect the given streams. The streams connector will wrap each stream - * with a corresponding terminal stream monitor. - * - * @param terminalControl The terminal control. Must not be null. - * @param stdin The stdin stream or null. - * @param stdout The stdout stream or null. - * @param stderr The stderr stream or null. - * @param localEcho Local echo on or off. - * @param lineSeparator The line separator used by the stream. - */ - protected void connectStreams(ITerminalControl terminalControl, OutputStream stdin, InputStream stdout, - InputStream stderr, boolean localEcho, String lineSeparator) { - Assert.isNotNull(terminalControl); - - // Create the input stream monitor - if (stdin != null) { - stdInMonitor = createStdInMonitor(terminalControl, stdin, localEcho, lineSeparator); - // Register the connector if it implements IDisposable and stdout/stderr are not monitored - if (stdout == null && stderr == null && this instanceof IDisposable) - stdInMonitor.addDisposable((IDisposable) this); - // Start the monitoring - stdInMonitor.startMonitoring(); - } - - // Create the output stream monitor - if (stdout != null) { - stdOutMonitor = createStdOutMonitor(terminalControl, stdout, lineSeparator); - // Register the connector if it implements IDisposable - if (this instanceof IDisposable) - stdOutMonitor.addDisposable((IDisposable) this); - // Register the listeners - if (stdoutListeners != null) { - for (ITerminalServiceOutputStreamMonitorListener l : stdoutListeners) { - stdOutMonitor.addListener(l); - } - } - // Start the monitoring - stdOutMonitor.startMonitoring(); - } - - // Create the error stream monitor - if (stderr != null) { - stdErrMonitor = createStdErrMonitor(terminalControl, stderr, lineSeparator); - // Register the connector if it implements IDisposable and stdout is not monitored - if (stdout == null && this instanceof IDisposable) - stdErrMonitor.addDisposable((IDisposable) this); - // Register the listeners - if (stderrListeners != null) { - for (ITerminalServiceOutputStreamMonitorListener l : stderrListeners) { - stdErrMonitor.addListener(l); - } - } - // Start the monitoring - stdErrMonitor.startMonitoring(); - } - } - - /** - * Creates an stdin monitor for the given terminal control and stdin stream. - * Subclasses may override to create a specialized stream monitor. - * - * @param terminalControl The terminal control. Must not be null. - * @param stdin The stdin stream or null. - * @param localEcho Local echo on or off. - * @param lineSeparator The line separator used by the stream. - * - * @return input stream monitor - */ - protected InputStreamMonitor createStdInMonitor(ITerminalControl terminalControl, OutputStream stdin, - boolean localEcho, String lineSeparator) { - return new InputStreamMonitor(terminalControl, stdin, localEcho, lineSeparator); - } - - /** - * Creates an stdout monitor for the given terminal control and stdout stream. - * Subclasses may override to create a specialized stream monitor. - * - * @param terminalControl The terminal control. Must not be null. - * @param stdout The stdout stream or null. - * @param lineSeparator The line separator used by the stream. - * - * @return output stream monitor - */ - protected OutputStreamMonitor createStdOutMonitor(ITerminalControl terminalControl, InputStream stdout, - String lineSeparator) { - return new OutputStreamMonitor(terminalControl, stdout, lineSeparator); - } - - /** - * Creates an stderr monitor for the given terminal control and stderr stream. - * Subclasses may override to create a specialized stream monitor. - * - * @param terminalControl The terminal control. Must not be null. - * @param stderr The stderr stream or null. - * @param lineSeparator The line separator used by the stream. - * - * @return output stream monitor - */ - protected OutputStreamMonitor createStdErrMonitor(ITerminalControl terminalControl, InputStream stderr, - String lineSeparator) { - return new OutputStreamMonitor(terminalControl, stderr, lineSeparator); - } - - @Override - protected void doDisconnect() { - // First let all the monitors know they are about to be closed, this allows them - // to suppress errors if closing one stream causes other streams to all close - // as a side effect. - if (stdInMonitor != null) { - stdInMonitor.disposalComing(); - } - if (stdOutMonitor != null) { - stdOutMonitor.disposalComing(); - } - if (stdErrMonitor != null) { - stdErrMonitor.disposalComing(); - } - - // Dispose the streams - if (stdInMonitor != null) { - stdInMonitor.dispose(); - stdInMonitor = null; - } - if (stdOutMonitor != null) { - stdOutMonitor.dispose(); - stdOutMonitor = null; - } - if (stdErrMonitor != null) { - stdErrMonitor.dispose(); - stdErrMonitor = null; - } - - super.doDisconnect(); - } - - @Override - public OutputStream getTerminalToRemoteStream() { - return stdInMonitor; - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/InputStreamMonitor.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/InputStreamMonitor.java deleted file mode 100644 index 4ec791360bb..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/InputStreamMonitor.java +++ /dev/null @@ -1,371 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.streams; - -import java.io.IOException; -import java.io.OutputStream; -import java.util.ArrayList; -import java.util.LinkedList; -import java.util.List; -import java.util.Queue; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Status; -import org.eclipse.osgi.util.NLS; -import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl; -import org.eclipse.tm.terminal.view.core.interfaces.constants.ILineSeparatorConstants; -import org.eclipse.tm.terminal.view.ui.activator.UIPlugin; -import org.eclipse.tm.terminal.view.ui.nls.Messages; -import org.eclipse.ui.services.IDisposable; - -/** - * Input stream monitor implementation. - *

        - * Note: The input is coming from the terminal. Therefore, the input - * stream monitor is attached to the stdin stream of the monitored (remote) process. - */ -public class InputStreamMonitor extends OutputStream implements IDisposable { - // Reference to the parent terminal control - private final ITerminalControl terminalControl; - - // Reference to the monitored (output) stream - private final OutputStream stream; - - // Reference to the thread writing the stream - private volatile Thread thread; - - // Flag to mark the monitor disposed. When disposed, - // no further data is written from the monitored stream. - private volatile boolean disposed; - - // A list of object to dispose if this monitor is disposed - private final List disposables = new ArrayList<>(); - - // Queue to buffer the data to write to the output stream - private final Queue queue = new LinkedList<>(); - - // ***** Line separator replacement logic ***** - - private final static int TERMINAL_SENDS_CR = 0; - private final static int TERMINAL_SENDS_CRLF = 1; - private final static int PROGRAM_EXPECTS_LF = 0; - private final static int PROGRAM_EXPECTS_CRLF = 1; - private final static int PROGRAM_EXPECTS_CR = 2; - private final static int NO_CHANGE = 0; - private final static int CHANGE_CR_TO_LF = 1; - private final static int INSERT_LF_AFTER_CR = 2; - private final static int REMOVE_CR = 3; - private final static int REMOVE_LF = 4; - - // CRLF conversion table: - // - // Expected line separator --> | LF | CRLF | CR | - // ------------------------------------+-----------------+--------------------+----------------+ - // Local echo off - control sends CR | change CR to LF | insert LF after CR | no change | - // ------------------------------------+-----------------+--------------------+----------------+ - // Local echo on - control sends CRLF | remove CR | no change | remove LF | - // - private final static int[][] CRLF_REPLACEMENT = { - - { CHANGE_CR_TO_LF, INSERT_LF_AFTER_CR, NO_CHANGE }, { REMOVE_CR, NO_CHANGE, REMOVE_LF } }; - - private int replacement; - - /** - * @see #disposalComing() - */ - private boolean disposalComing; - - /** - * Constructor. - * - * @param terminalControl The parent terminal control. Must not be null. - * @param stream The stream. Must not be null. - * @param localEcho Local echo on or off. - * @param lineSeparator The line separator used by the stream. - */ - public InputStreamMonitor(ITerminalControl terminalControl, OutputStream stream, boolean localEcho, - String lineSeparator) { - super(); - - Assert.isNotNull(terminalControl); - this.terminalControl = terminalControl; - Assert.isNotNull(stream); - this.stream = stream; - - // Determine the line separator replacement setting - int terminalSends = localEcho ? TERMINAL_SENDS_CRLF : TERMINAL_SENDS_CR; - if (lineSeparator == null) { - replacement = NO_CHANGE; - } else { - int programExpects; - if (lineSeparator.equals(ILineSeparatorConstants.LINE_SEPARATOR_LF)) { - programExpects = PROGRAM_EXPECTS_LF; - } else if (lineSeparator.equals(ILineSeparatorConstants.LINE_SEPARATOR_CR)) { - programExpects = PROGRAM_EXPECTS_CR; - } else { - programExpects = PROGRAM_EXPECTS_CRLF; - } - replacement = CRLF_REPLACEMENT[terminalSends][programExpects]; - } - - } - - /** - * Returns the associated terminal control. - * - * @return The associated terminal control. - */ - protected final ITerminalControl getTerminalControl() { - return terminalControl; - } - - /** - * Adds the given disposable object to the list. The method will do nothing - * if either the disposable object is already part of the list or the monitor - * is disposed. - * - * @param disposable The disposable object. Must not be null. - */ - public final void addDisposable(IDisposable disposable) { - Assert.isNotNull(disposable); - if (!disposed && !disposables.contains(disposable)) - disposables.add(disposable); - } - - /** - * Removes the disposable object from the list. - * - * @param disposable The disposable object. Must not be null. - */ - public final void removeDisposable(IDisposable disposable) { - Assert.isNotNull(disposable); - disposables.remove(disposable); - } - - @Override - public void dispose() { - // If already disposed --> return immediately - if (disposed) - return; - - disposalComing(); - - // Mark the monitor disposed - disposed = true; - - // Close the stream (ignore exceptions on close) - try { - stream.close(); - } catch (IOException e) { - /* ignored on purpose */ } - // And interrupt the thread - close(); - - // Dispose all registered disposable objects - for (IDisposable disposable : disposables) - disposable.dispose(); - // Clear the list - disposables.clear(); - } - - /** - * Close the terminal input stream monitor. - */ - @Override - public void close() { - // Not initialized -> return immediately - if (thread == null) - return; - - // Copy the reference - final Thread oldThread = thread; - // Unlink the monitor from the thread - thread = null; - // And interrupt the writer thread - oldThread.interrupt(); - } - - /** - * Starts the terminal output stream monitor. - */ - public void startMonitoring() { - // If already initialized -> return immediately - if (thread != null) - return; - - // Create a new runnable which is constantly reading from the stream - Runnable runnable = () -> writeStream(); - - // Create the writer thread - thread = new Thread(runnable, "Terminal Input Stream Monitor Thread"); //$NON-NLS-1$ - - // Configure the writer thread - thread.setDaemon(true); - - // Start the processing - thread.start(); - } - - /** - * Reads from the queue and writes the read content to the stream. - */ - protected void writeStream() { - // Read from the queue and write to the stream until disposed - outer: while (thread != null && !disposed) { - byte[] data; - // If the queue is empty, wait until notified - synchronized (queue) { - while (queue.isEmpty()) { - if (disposed) - break outer; - try { - queue.wait(); - } catch (InterruptedException e) { - break outer; - } - } - // Retrieves the queue head (is null if queue is empty (should never happen)) - data = queue.poll(); - } - if (data != null) { - try { - // Break up writes into max 1000 byte junks to avoid console input buffer overflows on Windows - int written = 0; - byte[] buf = new byte[1000]; - while (written < data.length) { - int len = Math.min(buf.length, data.length - written); - System.arraycopy(data, written, buf, 0, len); - // Write the data to the stream - stream.write(buf, 0, len); - written += len; - // Flush the stream immediately - stream.flush(); - // Wait a little between writes to allow input being processed - if (written < data.length) - Thread.sleep(100); - } - } catch (IOException e) { - // IOException received. If this is happening when already disposed -> ignore - if (!disposed && !disposalComing) { - IStatus status = new Status(IStatus.ERROR, UIPlugin.getUniqueIdentifier(), - NLS.bind(Messages.InputStreamMonitor_error_writingToStream, e.getLocalizedMessage()), - e); - UIPlugin.getDefault().getLog().log(status); - } - } catch (InterruptedException e) { - break; - } - } - } - - // Dispose the stream - dispose(); - } - - @Override - public void write(int b) throws IOException { - synchronized (queue) { - queue.add(new byte[] { (byte) b }); - queue.notifyAll(); - } - } - - @Override - public void write(byte[] b, int off, int len) throws IOException { - // Write the whole block to the queue to avoid synchronization - // to happen for every byte. To do so, we have to avoid calling - // the super method. Therefore we have to do the same checking - // here as the base class does. - - // Null check. See the implementation in OutputStream. - if (b == null) - throw new NullPointerException(); - - // Boundary check. See the implementation in OutputStream. - if ((off < 0) || (off > b.length) || (len < 0) || ((off + len) > b.length) || ((off + len) < 0)) { - throw new IndexOutOfBoundsException(); - } else if (len == 0) { - return; - } - - // Make sure that the written block is not interlaced with other input. - synchronized (queue) { - // Preprocess the block to be written - byte[] processedBytes = onWriteContentToStream(b, off, len); - // If the returned array is not the original one, adjust offset and length - if (processedBytes != b) { - off = 0; - len = processedBytes.length; - b = processedBytes; - } - - // Get the content from the byte buffer specified by offset and length - byte[] bytes = new byte[len]; - int j = 0; - for (int i = 0; i < len; i++) { - bytes[j++] = b[off + i]; - } - - queue.add(bytes); - queue.notifyAll(); - } - } - - /** - * Allow for processing of data from byte stream from the terminal before - * it is written to the output stream. If the returned byte array is different - * than the one that was passed in with the bytes argument, then the - * length value will be adapted. - * - * @param bytes The byte stream. Must not be null. - * @param off The offset. - * @param len the length. - * - * @return The processed byte stream. - * - */ - protected byte[] onWriteContentToStream(byte[] bytes, int off, int len) { - Assert.isNotNull(bytes); - - if (replacement != NO_CHANGE && len > 0) { - String origText = new String(bytes, off, len, terminalControl.getCharset()); - String text = null; - - if (replacement == CHANGE_CR_TO_LF) { - text = origText.replace('\r', '\n'); - } else if (replacement == INSERT_LF_AFTER_CR) { - text = origText.replaceAll("\r\n|\r", "\r\n"); //$NON-NLS-1$ //$NON-NLS-2$ - } else if (replacement == REMOVE_CR) { - text = origText.replaceAll(ILineSeparatorConstants.LINE_SEPARATOR_CR, ""); //$NON-NLS-1$ - } else if (replacement == REMOVE_LF) { - text = origText.replaceAll(ILineSeparatorConstants.LINE_SEPARATOR_LF, ""); //$NON-NLS-1$ - } - - if (text != null && !origText.equals(text)) { - bytes = text.getBytes(terminalControl.getCharset()); - } - } - - return bytes; - } - - /** - * Notify the receiver that the stream is about to be closed. This allows the stream to suppress error messages - * that are side effects of the asynchronous nature of the stream closing. - * @since 4.9 - */ - public void disposalComing() { - disposalComing = true; - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/OutputStreamMonitor.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/OutputStreamMonitor.java deleted file mode 100644 index 36848d49620..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/OutputStreamMonitor.java +++ /dev/null @@ -1,336 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.streams; - -import java.io.BufferedInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.ListenerList; -import org.eclipse.core.runtime.Status; -import org.eclipse.osgi.util.NLS; -import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl; -import org.eclipse.tm.terminal.view.core.interfaces.ITerminalServiceOutputStreamMonitorListener; -import org.eclipse.tm.terminal.view.core.interfaces.constants.ILineSeparatorConstants; -import org.eclipse.tm.terminal.view.ui.activator.UIPlugin; -import org.eclipse.tm.terminal.view.ui.interfaces.tracing.ITraceIds; -import org.eclipse.tm.terminal.view.ui.nls.Messages; -import org.eclipse.ui.services.IDisposable; - -/** - * Output stream monitor implementation. - *

        - * Note: The output is going to the terminal. Therefore, the output - * stream monitor is attached to the stdout and/or stderr stream of the monitored - * (remote) process. - */ -public class OutputStreamMonitor implements IDisposable { - // The default buffer size to use - private static final int BUFFER_SIZE = 8192; - - // Reference to the parent terminal control - private final ITerminalControl terminalControl; - - // Reference to the monitored (input) stream - private final InputStream stream; - - // The line separator used by the monitored (input) stream - private final String lineSeparator; - - // Reference to the thread reading the stream - private Thread thread; - - // Flag to mark the monitor disposed. When disposed, - // no further data is read from the monitored stream. - private boolean disposed; - - // A list of object to dispose if this monitor is disposed - private final List disposables = new ArrayList<>(); - - // The list of registered listener - private final ListenerList listeners; - - /** - * @see #disposalComing() - */ - private boolean disposalComing; - - /** - * Constructor. - * - * @param terminalControl The parent terminal control. Must not be null. - * @param stream The stream. Must not be null. - * @param lineSeparator The line separator used by the stream. - */ - public OutputStreamMonitor(ITerminalControl terminalControl, InputStream stream, String lineSeparator) { - super(); - - Assert.isNotNull(terminalControl); - this.terminalControl = terminalControl; - Assert.isNotNull(stream); - this.stream = new BufferedInputStream(stream, BUFFER_SIZE); - - this.lineSeparator = lineSeparator; - - this.listeners = new ListenerList<>(); - } - - /** - * Register a streams data receiver listener. - * - * @param listener The listener. Must not be null. - */ - public final void addListener(ITerminalServiceOutputStreamMonitorListener listener) { - Assert.isNotNull(listener); - listeners.add(listener); - } - - /** - * Unregister a streams data receiver listener. - * - * @param listener The listener. Must not be null. - */ - public final void removeListener(ITerminalServiceOutputStreamMonitorListener listener) { - Assert.isNotNull(listener); - listeners.remove(listener); - } - - /** - * Adds the given disposable object to the list. The method will do nothing - * if either the disposable object is already part of the list or the monitor - * is disposed. - * - * @param disposable The disposable object. Must not be null. - */ - public final void addDisposable(IDisposable disposable) { - Assert.isNotNull(disposable); - if (!disposed && !disposables.contains(disposable)) - disposables.add(disposable); - } - - /** - * Removes the disposable object from the list. - * - * @param disposable The disposable object. Must not be null. - */ - public final void removeDisposable(IDisposable disposable) { - Assert.isNotNull(disposable); - disposables.remove(disposable); - } - - @Override - public void dispose() { - // If already disposed --> return immediately - if (disposed) - return; - - disposalComing(); - - // Mark the monitor disposed - disposed = true; - - // Close the stream (ignore exceptions on close) - try { - stream.close(); - } catch (IOException e) { - /* ignored on purpose */ } - - // Dispose all registered disposable objects - for (IDisposable disposable : disposables) - disposable.dispose(); - // Clear the list - disposables.clear(); - } - - /** - * Starts the terminal output stream monitor. - */ - protected void startMonitoring() { - // If already initialized -> return immediately - if (thread != null) - return; - - // Create a new runnable which is constantly reading from the stream - Runnable runnable = () -> readStream(); - - // Create the reader thread - thread = new Thread(runnable, "Terminal Output Stream Monitor Thread"); //$NON-NLS-1$ - - // Configure the reader thread - thread.setDaemon(true); - thread.setPriority(Thread.MIN_PRIORITY); - - // Start the processing - thread.start(); - } - - /** - * Returns the terminal control that this stream monitor is associated with. - */ - protected ITerminalControl getTerminalControl() { - return terminalControl; - } - - /** - * Reads from the output stream and write the read content - * to the terminal control output stream. - */ - void readStream() { - // Creates the read buffer - byte[] readBuffer = new byte[BUFFER_SIZE]; - - // We need to maintain UI responsiveness but still stream the content - // to the terminal control fast. Put the thread to a short sleep each second. - long sleepMarker = System.currentTimeMillis(); - - // Read from the stream until EOS is reached or the - // monitor is marked disposed. - int read = 0; - while (read >= 0 && !disposed) { - try { - // Read from the stream - read = stream.read(readBuffer); - // If some data has been read, append to the terminal - // control output stream - if (read > 0) { - // Allow for post processing the read content before appending - byte[] processedReadBuffer = onContentReadFromStream(readBuffer, read); - if (processedReadBuffer != readBuffer) { - read = processedReadBuffer.length; - } - terminalControl.getRemoteToTerminalOutputStream().write(processedReadBuffer, 0, read); - } - } catch (IOException e) { - // IOException received. If this is happening when already disposed -> ignore - if (!disposed && !disposalComing) { - IStatus status = new Status(IStatus.ERROR, UIPlugin.getUniqueIdentifier(), - NLS.bind(Messages.OutputStreamMonitor_error_readingFromStream, e.getLocalizedMessage()), e); - UIPlugin.getDefault().getLog().log(status); - } - break; - } catch (NullPointerException e) { - // killing the stream monitor while reading can cause an NPE - // when reading from the stream - if (!disposed && thread != null && !disposalComing) { - IStatus status = new Status(IStatus.ERROR, UIPlugin.getUniqueIdentifier(), - NLS.bind(Messages.OutputStreamMonitor_error_readingFromStream, e.getLocalizedMessage()), e); - UIPlugin.getDefault().getLog().log(status); - } - break; - } - - // See above -> Thread will go to sleep each second - if (System.currentTimeMillis() - sleepMarker > 1000) { - sleepMarker = System.currentTimeMillis(); - try { - Thread.sleep(1); - } catch (InterruptedException e) { - /* ignored on purpose */ } - } - } - - // Dispose ourself - dispose(); - } - - /** - * Allow for processing of data from byte stream after it is read from - * client but before it is appended to the terminal. If the returned byte - * array is different than the one that was passed in with the byteBuffer - * argument, then the bytesRead value will be ignored and the full - * returned array will be written out. - * - * @param byteBuffer The byte stream. Must not be null. - * @param bytesRead The number of bytes that were read into the read buffer. - * @return The processed byte stream. - * - */ - protected byte[] onContentReadFromStream(byte[] byteBuffer, int bytesRead) { - Assert.isNotNull(byteBuffer); - - // If tracing is enabled, print out the decimal byte values read - if (UIPlugin.getTraceHandler().isSlotEnabled(0, ITraceIds.TRACE_OUTPUT_STREAM_MONITOR)) { - StringBuilder debug = new StringBuilder("byteBuffer [decimal, " + bytesRead + " bytes] : "); //$NON-NLS-1$ //$NON-NLS-2$ - for (int i = 0; i < bytesRead; i++) { - debug.append(Byte.valueOf(byteBuffer[i]).intValue()); - debug.append(' '); - } - System.out.println(debug.toString()); - } - - // Remember if the text got changed. - boolean changed = false; - - String text = new String(byteBuffer, 0, bytesRead, terminalControl.getCharset()); - - // Shift-In (14) and Shift-Out(15) confuses the terminal widget - if (text.indexOf(14) != -1 || text.indexOf(15) != -1) { - text = text.replaceAll("\\x0e", "").replaceAll("\\x0f", ""); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ - changed = true; - } - - // Check on the line separator setting - if (lineSeparator != null && !ILineSeparatorConstants.LINE_SEPARATOR_CRLF.equals(lineSeparator)) { - String separator = ILineSeparatorConstants.LINE_SEPARATOR_LF.equals(lineSeparator) ? "\n" : "\r"; //$NON-NLS-1$ //$NON-NLS-2$ - String separator2 = ILineSeparatorConstants.LINE_SEPARATOR_LF.equals(lineSeparator) ? "\r" : "\n"; //$NON-NLS-1$ //$NON-NLS-2$ - - if (text.indexOf(separator) != -1) { - String[] fragments = text.split(separator); - StringBuilder b = new StringBuilder(); - for (int i = 0; i < fragments.length; i++) { - String fragment = fragments[i]; - String nextFragment = i + 1 < fragments.length ? fragments[i + 1] : null; - b.append(fragment); - if (fragment.endsWith(separator2) - || (nextFragment != null && nextFragment.startsWith(separator2))) { - // Both separators are found, just add the original separator - b.append(separator); - } else { - b.append("\n\r"); //$NON-NLS-1$ - } - } - if (!text.equals(b.toString())) { - text = b.toString(); - changed = true; - } - } - } - - // If changed, get the new bytes array - if (changed) { - byteBuffer = text.getBytes(terminalControl.getCharset()); - bytesRead = byteBuffer.length; - } - - // If listeners are registered, invoke the listeners now. - if (listeners.size() > 0) { - for (ITerminalServiceOutputStreamMonitorListener candidate : listeners) { - candidate.onContentReadFromStream(byteBuffer, bytesRead); - } - } - - return byteBuffer; - } - - /** - * Notify the receiver that the stream is about to be closed. This allows the stream to suppress error messages - * that are side effects of the asynchronous nature of the stream closing. - * @since 4.9 - */ - public void disposalComing() { - disposalComing = true; - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/StreamsConnector.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/StreamsConnector.java deleted file mode 100644 index 58176078a33..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/StreamsConnector.java +++ /dev/null @@ -1,99 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.streams; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore; -import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl; -import org.eclipse.tm.internal.terminal.provisional.api.NullSettingsStore; -import org.eclipse.tm.internal.terminal.provisional.api.TerminalState; -import org.eclipse.ui.services.IDisposable; - -/** - * Streams connector implementation. - */ -public class StreamsConnector extends AbstractStreamsConnector implements IDisposable { - // Reference to the streams settings - private final StreamsSettings settings; - - public StreamsConnector() { - this(new StreamsSettings()); - } - - /** - * Constructor. - * - * @param settings The streams settings. Must not be null - */ - public StreamsConnector(StreamsSettings settings) { - super(); - - Assert.isNotNull(settings); - this.settings = settings; - } - - @Override - public void connect(ITerminalControl control) { - Assert.isNotNull(control); - super.connect(control); - - // Setup the listeners - setStdoutListeners(settings.getStdOutListeners()); - setStderrListeners(settings.getStdErrListeners()); - - // connect the streams - connectStreams(control, settings.getStdinStream(), settings.getStdoutStream(), settings.getStderrStream(), - settings.isLocalEcho(), settings.getLineSeparator()); - - // Set the terminal control state to CONNECTED - control.setState(TerminalState.CONNECTED); - } - - @Override - public boolean isLocalEcho() { - return settings.isLocalEcho(); - } - - @Override - public void dispose() { - disconnect(); - } - - @Override - public void doDisconnect() { - // Dispose the streams - super.doDisconnect(); - - // Set the terminal control state to CLOSED. - fControl.setState(TerminalState.CLOSED); - } - - @Override - public String getSettingsSummary() { - return ""; //$NON-NLS-1$ - } - - @Override - public void setDefaultSettings() { - settings.load(new NullSettingsStore()); - } - - @Override - public void load(ISettingsStore store) { - settings.load(store); - } - - @Override - public void save(ISettingsStore store) { - settings.save(store); - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/StreamsLauncherDelegate.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/StreamsLauncherDelegate.java deleted file mode 100644 index 6e61ed4dd14..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/StreamsLauncherDelegate.java +++ /dev/null @@ -1,106 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.streams; - -import java.io.InputStream; -import java.io.OutputStream; -import java.util.Map; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore; -import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector; -import org.eclipse.tm.internal.terminal.provisional.api.TerminalConnectorExtension; -import org.eclipse.tm.terminal.view.core.TerminalServiceFactory; -import org.eclipse.tm.terminal.view.core.interfaces.ITerminalService; -import org.eclipse.tm.terminal.view.core.interfaces.ITerminalServiceOutputStreamMonitorListener; -import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants; -import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanel; -import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer; -import org.eclipse.tm.terminal.view.ui.internal.SettingsStore; -import org.eclipse.tm.terminal.view.ui.launcher.AbstractLauncherDelegate; - -/** - * Streams launcher delegate implementation. - */ -public class StreamsLauncherDelegate extends AbstractLauncherDelegate { - - @Override - public boolean needsUserConfiguration() { - return false; - } - - @Override - public IConfigurationPanel getPanel(IConfigurationPanelContainer container) { - return null; - } - - @Override - public void execute(Map properties, ITerminalService.Done done) { - Assert.isNotNull(properties); - - // Get the terminal service - ITerminalService terminal = TerminalServiceFactory.getService(); - // If not available, we cannot fulfill this request - if (terminal != null) { - terminal.openConsole(properties, done); - } - } - - @Override - public ITerminalConnector createTerminalConnector(Map properties) { - Assert.isNotNull(properties); - - // Check for the terminal connector id - String connectorId = (String) properties.get(ITerminalsConnectorConstants.PROP_TERMINAL_CONNECTOR_ID); - if (connectorId == null) - connectorId = "org.eclipse.tm.terminal.connector.streams.StreamsConnector"; //$NON-NLS-1$ - - // Extract the streams properties - OutputStream stdin = (OutputStream) properties.get(ITerminalsConnectorConstants.PROP_STREAMS_STDIN); - InputStream stdout = (InputStream) properties.get(ITerminalsConnectorConstants.PROP_STREAMS_STDOUT); - InputStream stderr = (InputStream) properties.get(ITerminalsConnectorConstants.PROP_STREAMS_STDERR); - Object value = properties.get(ITerminalsConnectorConstants.PROP_LOCAL_ECHO); - boolean localEcho = value instanceof Boolean ? ((Boolean) value).booleanValue() : false; - String lineSeparator = (String) properties.get(ITerminalsConnectorConstants.PROP_LINE_SEPARATOR); - ITerminalServiceOutputStreamMonitorListener[] stdoutListeners = (ITerminalServiceOutputStreamMonitorListener[]) properties - .get(ITerminalsConnectorConstants.PROP_STDOUT_LISTENERS); - ITerminalServiceOutputStreamMonitorListener[] stderrListeners = (ITerminalServiceOutputStreamMonitorListener[]) properties - .get(ITerminalsConnectorConstants.PROP_STDERR_LISTENERS); - - // Construct the terminal settings store - ISettingsStore store = new SettingsStore(); - - // Construct the streams settings - StreamsSettings streamsSettings = new StreamsSettings(); - streamsSettings.setStdinStream(stdin); - streamsSettings.setStdoutStream(stdout); - streamsSettings.setStderrStream(stderr); - streamsSettings.setLocalEcho(localEcho); - streamsSettings.setLineSeparator(lineSeparator); - streamsSettings.setStdOutListeners(stdoutListeners); - streamsSettings.setStdErrListeners(stderrListeners); - // And save the settings to the store - streamsSettings.save(store); - - // Construct the terminal connector instance - ITerminalConnector connector = TerminalConnectorExtension.makeTerminalConnector(connectorId); - if (connector != null) { - // Apply default settings - connector.setDefaultSettings(); - // And load the real settings - connector.load(store); - } - - return connector; - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/StreamsSettings.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/StreamsSettings.java deleted file mode 100644 index 09aecaa893a..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/streams/StreamsSettings.java +++ /dev/null @@ -1,205 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.streams; - -import java.io.InputStream; -import java.io.OutputStream; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore; -import org.eclipse.tm.terminal.view.core.interfaces.ITerminalServiceOutputStreamMonitorListener; -import org.eclipse.tm.terminal.view.ui.internal.SettingsStore; - -/** - * Streams connector settings implementation. - */ -public class StreamsSettings { - // Reference to the stdin stream - private OutputStream stdin; - // Reference to the stdout stream - private InputStream stdout; - // Reference to the stderr stream - private InputStream stderr; - // Flag to control the local echo - private boolean localEcho = true; - // The line separator setting - private String lineSeparator = null; - // The list of stdout output listeners - private ITerminalServiceOutputStreamMonitorListener[] stdoutListeners = null; - // The list of stderr output listeners - private ITerminalServiceOutputStreamMonitorListener[] stderrListeners = null; - - /** - * Sets the stdin stream instance. - * - * @param stdin The stream instance or null. - */ - public void setStdinStream(OutputStream stdin) { - this.stdin = stdin; - } - - /** - * Returns the stdin stream instance. - * - * @return The stream instance or null. - */ - public OutputStream getStdinStream() { - return stdin; - } - - /** - * Sets the stdout stream instance. - * - * @param stdout The stream instance or null. - */ - public void setStdoutStream(InputStream stdout) { - this.stdout = stdout; - } - - /** - * Returns the stdout stream instance. - * - * @return The stream instance or null. - */ - public InputStream getStdoutStream() { - return stdout; - } - - /** - * Sets the stderr stream instance. - * - * @param stderr The stream instance or null. - */ - public void setStderrStream(InputStream stderr) { - this.stderr = stderr; - } - - /** - * Returns the stderr stream instance. - * - * @return The stream instance or null. - */ - public InputStream getStderrStream() { - return stderr; - } - - /** - * Sets if the process requires a local echo from the terminal widget. - * - * @param value Specify true to enable the local echo, false otherwise. - */ - public void setLocalEcho(boolean value) { - this.localEcho = value; - } - - /** - * Returns true if the process requires a local echo - * from the terminal widget. - * - * @return True if local echo is enabled, false otherwise. - */ - public boolean isLocalEcho() { - return localEcho; - } - - /** - * Sets the stream line separator. - * - * @param separator The stream line separator null. - */ - public void setLineSeparator(String separator) { - this.lineSeparator = separator; - } - - /** - * Returns the stream line separator. - * - * @return The stream line separator or null. - */ - public String getLineSeparator() { - return lineSeparator; - } - - /** - * Sets the list of stdout listeners. - * - * @param listeners The list of stdout listeners or null. - */ - public void setStdOutListeners(ITerminalServiceOutputStreamMonitorListener[] listeners) { - this.stdoutListeners = listeners; - } - - /** - * Returns the list of stdout listeners. - * - * @return The list of stdout listeners or null. - */ - public ITerminalServiceOutputStreamMonitorListener[] getStdOutListeners() { - return stdoutListeners; - } - - /** - * Sets the list of stderr listeners. - * - * @param listeners The list of stderr listeners or null. - */ - public void setStdErrListeners(ITerminalServiceOutputStreamMonitorListener[] listeners) { - this.stderrListeners = listeners; - } - - /** - * Returns the list of stderr listeners. - * - * @return The list of stderr listeners or null. - */ - public ITerminalServiceOutputStreamMonitorListener[] getStdErrListeners() { - return stderrListeners; - } - - /** - * Loads the streams settings from the given settings store. - * - * @param store The settings store. Must not be null. - */ - public void load(ISettingsStore store) { - Assert.isNotNull(store); - localEcho = Boolean.parseBoolean(store.get("LocalEcho", Boolean.FALSE.toString())); //$NON-NLS-1$ - lineSeparator = store.get("LineSeparator", null); //$NON-NLS-1$ - if (store instanceof SettingsStore) { - stdin = (OutputStream) ((SettingsStore) store).getSettings().get("stdin"); //$NON-NLS-1$ - stdout = (InputStream) ((SettingsStore) store).getSettings().get("stdout"); //$NON-NLS-1$ - stderr = (InputStream) ((SettingsStore) store).getSettings().get("stderr"); //$NON-NLS-1$ - stdoutListeners = (ITerminalServiceOutputStreamMonitorListener[]) ((SettingsStore) store).getSettings() - .get("StdOutListeners"); //$NON-NLS-1$ - stderrListeners = (ITerminalServiceOutputStreamMonitorListener[]) ((SettingsStore) store).getSettings() - .get("StdErrListeners"); //$NON-NLS-1$ - } - } - - /** - * Saves the process settings to the given settings store. - * - * @param store The settings store. Must not be null. - */ - public void save(ISettingsStore store) { - Assert.isNotNull(store); - store.put("LocalEcho", Boolean.toString(localEcho)); //$NON-NLS-1$ - store.put("LineSeparator", lineSeparator); //$NON-NLS-1$ - if (store instanceof SettingsStore) { - ((SettingsStore) store).getSettings().put("stdin", stdin); //$NON-NLS-1$ - ((SettingsStore) store).getSettings().put("stdout", stdout); //$NON-NLS-1$ - ((SettingsStore) store).getSettings().put("stderr", stderr); //$NON-NLS-1$ - ((SettingsStore) store).getSettings().put("StdOutListeners", stdoutListeners); //$NON-NLS-1$ - ((SettingsStore) store).getSettings().put("StdErrListeners", stderrListeners); //$NON-NLS-1$ - } - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/OpenFileMouseHandler.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/OpenFileMouseHandler.java deleted file mode 100644 index c4ca8c8bd87..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/OpenFileMouseHandler.java +++ /dev/null @@ -1,271 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2021 Fabrizio Iannetti. - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.tabs; - -import java.io.File; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import org.eclipse.core.commands.ExecutionException; -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.Adapters; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.Path; -import org.eclipse.core.runtime.Platform; -import org.eclipse.jface.text.BadLocationException; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jface.window.Window; -import org.eclipse.swt.SWT; -import org.eclipse.tm.internal.terminal.control.ITerminalMouseListener2; -import org.eclipse.tm.internal.terminal.control.ITerminalViewControl; -import org.eclipse.tm.internal.terminal.provisional.api.Logger; -import org.eclipse.tm.terminal.model.ITerminalTextDataReadOnly; -import org.eclipse.tm.terminal.view.ui.activator.UIPlugin; -import org.eclipse.ui.IEditorInput; -import org.eclipse.ui.IEditorPart; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.IWorkbenchPartSite; -import org.eclipse.ui.IWorkbenchWindow; -import org.eclipse.ui.PartInitException; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.ide.IDE; -import org.eclipse.ui.internal.ide.dialogs.OpenResourceDialog; -import org.eclipse.ui.texteditor.IDocumentProvider; -import org.eclipse.ui.texteditor.ITextEditor; -import org.osgi.framework.Bundle; - -/** - * @noreference This class is not intended to be referenced by clients. - */ -public class OpenFileMouseHandler implements ITerminalMouseListener2 { - private static final boolean DEBUG_HOVER = UIPlugin.isOptionEnabled(Logger.TRACE_DEBUG_LOG_HOVER); - private static final List NEEDED_BUNDLES = // - List.of("org.eclipse.core.resources", //$NON-NLS-1$ - "org.eclipse.ui.ide", //$NON-NLS-1$ - "org.eclipse.ui.editors", //$NON-NLS-1$ - "org.eclipse.text"); //$NON-NLS-1$ - - private final ITerminalViewControl terminal; - private Pattern regex = Pattern.compile("(\\d*)(:(\\d*))?.*"); //$NON-NLS-1$ - private IWorkbenchPartSite site; - - /** - * Check if we have the bundles needed. - */ - private boolean neededBundlesAvailable; - - OpenFileMouseHandler(IWorkbenchPartSite site, ITerminalViewControl terminal) { - this.site = site; - this.terminal = terminal; - neededBundlesAvailable = true; - for (String bundleName : NEEDED_BUNDLES) { - if (!bundleAvailable(bundleName)) { - this.neededBundlesAvailable = false; - if (DEBUG_HOVER) { - System.out.format( - "hover: the %s bundle is not present, therefore full ctrl-click functionality is not available\n", //$NON-NLS-1$ - bundleName); - } - } - } - if (neededBundlesAvailable && DEBUG_HOVER) { - System.out.format("hover: the bundles needed for full ctrl-click functionality are available\n"); //$NON-NLS-1$ - } - } - - @Override - public void mouseUp(ITerminalTextDataReadOnly terminalText, int line, int column, int button, int stateMask) { - if ((stateMask & SWT.MODIFIER_MASK) != SWT.MOD1) { - // Only handle Ctrl-click - return; - } - String textToOpen = terminal.getHoverSelection(); - String lineAndCol = null; - if (textToOpen.length() > 0) { - try { - // if the selection looks like a web URL, open using the browser - if (textToOpen.startsWith("http://") || textToOpen.startsWith("https://")) { //$NON-NLS-1$//$NON-NLS-2$ - try { - PlatformUI.getWorkbench().getBrowserSupport().createBrowser(null).openURL(new URL(textToOpen)); - return; - } catch (MalformedURLException e) { - // not a valid URL, continue - } - } - - // After this we need Eclipse IDE features. If we don't have them then we stop here. - if (!neededBundlesAvailable) { - return; - } - - // extract the path from file:// URLs - if (textToOpen.startsWith("file://")) { //$NON-NLS-1$ - textToOpen = textToOpen.substring(7); - } - // remove optional position info name:[row[:col]] - { - int startOfRowCol = textToOpen.indexOf(':'); - if (startOfRowCol == 1 && textToOpen.length() > 2) { - // assume this is the device separator on Windows - startOfRowCol = textToOpen.indexOf(':', startOfRowCol + 1); - } - if (startOfRowCol >= 0) { - lineAndCol = textToOpen.substring(startOfRowCol + 1); - textToOpen = textToOpen.substring(0, startOfRowCol); - } - } - Optional fullPath = Optional.empty(); - if (!textToOpen.startsWith("/")) { //$NON-NLS-1$ - // relative path: try to append to the working directory - Optional workingDirectory = terminal.getTerminalConnector().getWorkingDirectory(); - if (workingDirectory.isPresent()) { - fullPath = Optional.of(workingDirectory.get() + "/" + textToOpen); - } - } - // if the selection is a file location that maps to a resource - // open the resource - IFile fileForLocation = ResourcesPlugin.getWorkspace().getRoot() - .getFileForLocation(new Path(fullPath.orElse(textToOpen))); - if (fileForLocation != null && fileForLocation.exists()) { - IEditorPart editor = IDE.openEditor( - PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(), fileForLocation, - true); - goToLine(lineAndCol, editor); - return; - } - // try an external file, if it exists - File file = new File(fullPath.orElse(textToOpen)); - if (file.exists() && !file.isDirectory()) { - try { - IEditorPart editor = IDE.openEditor(site.getPage(), file.toURI(), - IDE.getEditorDescriptor(file.getName(), true, true).getId(), true); - goToLine(lineAndCol, editor); - return; - } catch (Exception e) { - // continue - } - } - OpenResourceDialog openResourceDialog = new OpenResourceDialog(site.getShell(), - ResourcesPlugin.getPlugin().getWorkspace().getRoot(), IResource.FILE); - openResourceDialog.setInitialPattern(textToOpen); - if (openResourceDialog.open() != Window.OK) - return; - Object[] results = openResourceDialog.getResult(); - List files = new ArrayList<>(); - for (Object result : results) { - if (result instanceof IFile) { - files.add((IFile) result); - } - } - if (files.size() > 0) { - - final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); - if (window == null) { - throw new ExecutionException("no active workbench window"); //$NON-NLS-1$ - } - - final IWorkbenchPage page = window.getActivePage(); - if (page == null) { - throw new ExecutionException("no active workbench page"); //$NON-NLS-1$ - } - - try { - for (IFile iFile : files) { - IEditorPart editor = IDE.openEditor(page, iFile, true); - goToLine(lineAndCol, editor); - } - } catch (final PartInitException e) { - throw new ExecutionException("error opening file in editor", e); //$NON-NLS-1$ - } - } - } catch (IllegalArgumentException | NullPointerException | ExecutionException | PartInitException e) { - UIPlugin.log("Failed to activate OpenResourceDialog", e); //$NON-NLS-1$ - } - - } - - } - - private boolean bundleAvailable(String symbolicName) { - Bundle bundle = Platform.getBundle(symbolicName); - boolean available = bundle != null && bundle.getState() != Bundle.UNINSTALLED - && bundle.getState() != Bundle.STOPPING; - return available; - } - - private void goToLine(String lineAndCol, IEditorPart editor) { - ITextEditor textEditor = Adapters.adapt(editor, ITextEditor.class); - if (textEditor != null) { - Optional optionalOffset = getRegionFromLineAndCol(textEditor, lineAndCol); - optionalOffset.ifPresent(offset -> textEditor.selectAndReveal(offset, 0)); - } - } - - /** - * Returns the line information for the given line in the given editor - */ - private Optional getRegionFromLineAndCol(ITextEditor editor, String lineAndCol) { - if (lineAndCol == null) { - return Optional.empty(); - } - Matcher matcher = regex.matcher(lineAndCol); - if (!matcher.matches()) { - return Optional.empty(); - } - String lineStr = matcher.group(1); - String colStr = matcher.group(3); - int line; - int col = 0; - try { - line = Integer.parseInt(lineStr); - } catch (NumberFormatException e1) { - return Optional.empty(); - } - try { - col = Integer.parseInt(colStr); - } catch (NumberFormatException e1) { - // if we can't get a column, go to the line alone - } - IDocumentProvider provider = editor.getDocumentProvider(); - IEditorInput input = editor.getEditorInput(); - try { - provider.connect(input); - } catch (CoreException e) { - return null; - } - try { - IDocument document = provider.getDocument(input); - if (document != null && line > 0) { - // document's lines are 0-offset - line = line - 1; - int lineOffset = document.getLineOffset(line); - if (col > 0) { - int lineLength = document.getLineLength(line); - if (col < lineLength) { - lineOffset += col; - } - } - return Optional.of(lineOffset); - } - } catch (BadLocationException e) { - } finally { - provider.disconnect(input); - } - return Optional.empty(); - } -} \ No newline at end of file diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabCommandFieldHandler.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabCommandFieldHandler.java deleted file mode 100644 index 87dc00ac1fd..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabCommandFieldHandler.java +++ /dev/null @@ -1,98 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.tabs; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.core.runtime.IAdaptable; -import org.eclipse.swt.custom.CTabItem; -import org.eclipse.tm.internal.terminal.control.CommandInputFieldWithHistory; -import org.eclipse.tm.internal.terminal.control.ITerminalViewControl; -import org.eclipse.ui.services.IDisposable; - -/** - * Tab command input field handler implementation. - */ -public class TabCommandFieldHandler implements IDisposable, IAdaptable { - // Reference to the parent tab folder manager - private final TabFolderManager tabFolderManager; - // Reference to the associated tab - private final CTabItem item; - - // Reference to the command input field - private CommandInputFieldWithHistory field; - // The command field history - private String history; - - /** - * Constructor. - * - * @param tabFolderManager The parent tab folder manager. Must not be null - * @param item The associated tab item. Must not be null. - */ - public TabCommandFieldHandler(TabFolderManager tabFolderManager, CTabItem item) { - Assert.isNotNull(tabFolderManager); - this.tabFolderManager = tabFolderManager; - Assert.isNotNull(item); - this.item = item; - } - - @Override - public void dispose() { - field = null; - history = null; - } - - @Override - public T getAdapter(Class adapter) { - if (TabFolderManager.class.equals(adapter)) { - return adapter.cast(tabFolderManager); - } - if (CTabItem.class.equals(adapter)) { - return adapter.cast(item); - } - return null; - } - - /** - * Returns if or if not the associated tab item has the command input field enabled. - * - * @return True if the command input field is enabled, false otherwise. - */ - public boolean hasCommandInputField() { - return field != null; - } - - /** - * Set the command input field on or off. - * - * @param on True for on, false for off. - */ - public void setCommandInputField(boolean on) { - // save the old history - if (field != null) { - history = field.getHistory(); - field = null; - } - - if (on) { - field = new CommandInputFieldWithHistory(100); - field.setHistory(history); - } - - // Apply to the terminal control - Assert.isTrue(!item.isDisposed()); - ITerminalViewControl terminal = (ITerminalViewControl) item.getData(); - if (terminal != null) - terminal.setCommandInputField(field); - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabDisposeListener.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabDisposeListener.java deleted file mode 100644 index 9cd937e46ba..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabDisposeListener.java +++ /dev/null @@ -1,83 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.tabs; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.swt.custom.CTabItem; -import org.eclipse.swt.events.DisposeEvent; -import org.eclipse.swt.events.DisposeListener; -import org.eclipse.swt.widgets.Control; -import org.eclipse.tm.internal.terminal.control.ITerminalViewControl; -import org.eclipse.tm.terminal.view.core.TerminalServiceFactory; -import org.eclipse.tm.terminal.view.core.interfaces.ITerminalService; -import org.eclipse.tm.terminal.view.ui.services.TerminalService; - -/** - * Terminal tab default dispose listener implementation. - */ -public class TabDisposeListener implements DisposeListener { - private final TabFolderManager parentTabFolderManager; - - /** - * Constructor. - * - * @param parentTabFolderManager The parent tab folder manager. Must not be null - */ - public TabDisposeListener(TabFolderManager parentTabFolderManager) { - Assert.isNotNull(parentTabFolderManager); - this.parentTabFolderManager = parentTabFolderManager; - } - - /** - * Returns the parent terminal console tab folder manager instance. - * - * @return The parent terminal console tab folder manager instance. - */ - protected final TabFolderManager getParentTabFolderManager() { - return parentTabFolderManager; - } - - @Override - public void widgetDisposed(DisposeEvent e) { - // If a tab item gets disposed, we have to dispose the terminal as well - if (e.getSource() instanceof CTabItem) { - // Get the terminal control (if any) from the tab item - Object candidate = ((CTabItem) e.getSource()).getData(); - if (candidate instanceof ITerminalViewControl) { - ITerminalViewControl terminal = (ITerminalViewControl) candidate; - // Keep the context menu from being disposed - terminal.getControl().setMenu(null); - terminal.disposeTerminal(); - } - // Dispose the command input field handler - parentTabFolderManager.disposeTabCommandFieldHandler((CTabItem) e.getSource()); - // Dispose the tab item control - Control control = ((CTabItem) e.getSource()).getControl(); - if (control != null) - control.dispose(); - - // If all items got removed, we have to switch back to the empty page control - if (parentTabFolderManager.getTabFolder() != null - && parentTabFolderManager.getTabFolder().getItemCount() == 0) { - parentTabFolderManager.getParentView().switchToEmptyPageControl(); - } - // Fire selection changed event - parentTabFolderManager.fireSelectionChanged(); - // Fire the terminal console disposed event - ITerminalService service = TerminalServiceFactory.getService(); - if (service instanceof TerminalService) { - ((TerminalService) service).fireTerminalTabEvent(TerminalService.TAB_DISPOSED, e.getSource(), - ((CTabItem) e.getSource()).getData("customData")); //$NON-NLS-1$ - } - } - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabFolderManager.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabFolderManager.java deleted file mode 100644 index 982f7596caa..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabFolderManager.java +++ /dev/null @@ -1,878 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.tabs; - -import java.nio.charset.Charset; -import java.nio.charset.UnsupportedCharsetException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.core.runtime.PlatformObject; -import org.eclipse.jface.action.IStatusLineManager; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.ISelectionChangedListener; -import org.eclipse.jface.viewers.ISelectionProvider; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.SelectionChangedEvent; -import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.SWT; -import org.eclipse.swt.custom.CTabFolder; -import org.eclipse.swt.custom.CTabItem; -import org.eclipse.swt.dnd.Clipboard; -import org.eclipse.swt.dnd.DND; -import org.eclipse.swt.dnd.TextTransfer; -import org.eclipse.swt.events.DisposeEvent; -import org.eclipse.swt.events.DisposeListener; -import org.eclipse.swt.events.MouseAdapter; -import org.eclipse.swt.events.MouseEvent; -import org.eclipse.swt.events.MouseListener; -import org.eclipse.swt.events.SelectionListener; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.layout.FillLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Menu; -import org.eclipse.tm.internal.terminal.control.ITerminalListener; -import org.eclipse.tm.internal.terminal.control.ITerminalViewControl; -import org.eclipse.tm.internal.terminal.control.TerminalViewControlFactory; -import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector; -import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl; -import org.eclipse.tm.internal.terminal.provisional.api.TerminalState; -import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants; -import org.eclipse.tm.terminal.view.ui.activator.UIPlugin; -import org.eclipse.tm.terminal.view.ui.interfaces.ITerminalsView; -import org.eclipse.tm.terminal.view.ui.interfaces.ImageConsts; -import org.eclipse.tm.terminal.view.ui.nls.Messages; -import org.eclipse.ui.PlatformUI; - -/** - * Terminal tab folder manager. - */ -public class TabFolderManager extends PlatformObject implements ISelectionProvider { - // Reference to the parent terminal consoles view - private final ITerminalsView parentView; - // Reference to the selection listener instance - private final SelectionListener selectionListener; - - /** - * List of selection changed listeners. - */ - private final List selectionChangedListeners = new ArrayList<>(); - - /** - * Map of tab command input field handler per tab item - */ - private final Map commandFieldHandler = new HashMap<>(); - - /** - * The terminal control selection listener implementation. - */ - private class TerminalControlSelectionListener implements DisposeListener, MouseListener { - private final ITerminalViewControl terminal; - private boolean selectMode; - - /** - * Constructor. - * - * @param terminal The terminal control. Must not be null. - */ - public TerminalControlSelectionListener(ITerminalViewControl terminal) { - Assert.isNotNull(terminal); - this.terminal = terminal; - - // Register ourself as the required listener - terminal.getControl().addDisposeListener(this); - terminal.getControl().addMouseListener(this); - } - - /** - * Returns the associated terminal view control. - * - * @return The terminal view control. - */ - protected final ITerminalViewControl getTerminal() { - return terminal; - } - - @Override - public void widgetDisposed(DisposeEvent e) { - // Widget got disposed, check if it is ours - // If a tab item gets disposed, we have to dispose the terminal as well - if (e.getSource().equals(terminal.getControl())) { - // Remove as listener - getTerminal().getControl().removeDisposeListener(this); - getTerminal().getControl().removeMouseListener(this); - } - } - - @Override - public void mouseDown(MouseEvent e) { - // Left button down -> select mode starts - if (e.button == 1) - selectMode = true; - } - - @Override - public void mouseUp(MouseEvent e) { - if (e.button == 1 && selectMode) { - selectMode = false; - // Fire a selection changed event with the terminal controls selection - try { - Display display = PlatformUI.getWorkbench().getDisplay(); - display.asyncExec( - () -> fireSelectionChanged(new StructuredSelection(getTerminal().getSelection()))); - } catch (Exception ex) { - // if display is disposed, silently ignore. - } - } - } - - @Override - public void mouseDoubleClick(MouseEvent e) { - } - } - - /** - * Constructor. - * - * @param parentView The parent terminals console view. Must not be null. - */ - public TabFolderManager(ITerminalsView parentView) { - super(); - Assert.isNotNull(parentView); - this.parentView = parentView; - - // Attach a selection listener to the tab folder - selectionListener = doCreateTabFolderSelectionListener(this); - if (getTabFolder() != null) - getTabFolder().addSelectionListener(selectionListener); - } - - /** - * Creates the terminal console tab folder selection listener instance. - * - * @param parent The parent terminal console tab folder manager. Must not be null. - * @return The selection listener instance. - */ - protected TabFolderSelectionListener doCreateTabFolderSelectionListener(TabFolderManager parent) { - Assert.isNotNull(parent); - return new TabFolderSelectionListener(parent); - } - - /** - * Returns the parent terminal consoles view. - * - * @return The terminal consoles view instance. - */ - protected final ITerminalsView getParentView() { - return parentView; - } - - /** - * Returns the tab folder associated with the parent view. - * - * @return The tab folder or null. - */ - protected final CTabFolder getTabFolder() { - return getParentView().getAdapter(CTabFolder.class); - } - - /** - * Returns the selection changed listeners currently registered. - * - * @return The registered selection changed listeners or an empty array. - */ - protected final ISelectionChangedListener[] getSelectionChangedListeners() { - return selectionChangedListeners.toArray(new ISelectionChangedListener[selectionChangedListeners.size()]); - } - - /** - * Dispose the tab folder manager instance. - */ - public void dispose() { - // Dispose the selection listener - if (getTabFolder() != null && !getTabFolder().isDisposed()) - getTabFolder().removeSelectionListener(selectionListener); - // Dispose the tab command field handler - for (TabCommandFieldHandler handler : commandFieldHandler.values()) { - handler.dispose(); - } - commandFieldHandler.clear(); - } - - /** - * Creates a new tab item with the given title and connector. - * - * @param title The tab title. Must not be null. - * @param encoding The terminal encoding or null. - * @param connector The terminal connector. Must not be null. - * @param data The custom terminal data node or null. - * @param flags The flags controlling how the console is opened or null to use defaults. - * - * @return The created tab item or null if failed. - */ - @SuppressWarnings({ "unused" }) - public CTabItem createTabItem(String title, String encoding, ITerminalConnector connector, Object data, - Map flags) { - Assert.isNotNull(title); - Assert.isNotNull(connector); - - // The result tab item - CTabItem item = null; - - // Get the tab folder from the parent viewer - CTabFolder tabFolder = getTabFolder(); - if (tabFolder != null) { - // Generate a unique title string for the new tab item (must be called before creating the item itself) - title = makeUniqueTitle(title, tabFolder); - // Create the tab item - item = new CTabItem(tabFolder, SWT.CLOSE); - // Set the tab item title - item.setText(title); - // Set the tab icon - Image image = getTabItemImage(connector, data); - if (image != null) - item.setImage(image); - - // Setup the tab item listeners - setupTerminalTabListeners(item); - - // Create the composite to create the terminal control within - Composite composite = new Composite(tabFolder, SWT.NONE); - composite.setLayout(new FillLayout()); - // Associate the composite with the tab item - item.setControl(composite); - - // Refresh the layout - tabFolder.getParent().layout(true); - - // Create the terminal control - ITerminalViewControl terminal = TerminalViewControlFactory.makeControl( - doCreateTerminalTabTerminalListener(this, item), composite, new ITerminalConnector[] { connector }, - true); - if (terminal instanceof ITerminalControl) { - Object value = flags != null ? flags.get(ITerminalsConnectorConstants.PROP_DATA_NO_RECONNECT) : null; - boolean noReconnect = value instanceof Boolean ? ((Boolean) value).booleanValue() : false; - ((ITerminalControl) terminal).setConnectOnEnterIfClosed(!noReconnect); - } - - // Add middle mouse button paste support - addMiddleMouseButtonPasteSupport(terminal); - - // add support to open resource on ctrl/meta + mouse click - addOpenResourceSupport(terminal); - - // Add the "selection" listener to the terminal control - new TerminalControlSelectionListener(terminal); - // Configure the terminal encoding - try { - Charset charset = null; - if (encoding != null) { - charset = Charset.forName(encoding); - } - terminal.setCharset(charset); - } catch (UnsupportedCharsetException e) { - /* ignored on purpose */ - } - // Associated the terminal with the tab item - item.setData(terminal); - // Associated the custom data node with the tab item (if any) - if (data != null) - item.setData("customData", data); //$NON-NLS-1$ - - // Overwrite the text canvas help id - String contextHelpId = getParentView().getContextHelpId(); - if (contextHelpId != null) { - PlatformUI.getWorkbench().getHelpSystem().setHelp(terminal.getControl(), contextHelpId); - } - - // Set the context menu - TabFolderMenuHandler menuHandler = getParentView().getAdapter(TabFolderMenuHandler.class); - if (menuHandler != null) { - Menu menu = menuHandler.getAdapter(Menu.class); - if (menu != null) { - // One weird occurrence of IllegalArgumentException: Widget has wrong parent. - // Inspecting the code, this seem extremely unlikely. The terminal is created - // from a composite parent, the composite parent from the tab folder and the menu - // from the tab folder. Means, at the end all should have the same menu shell, shouldn't they? - try { - terminal.getControl().setMenu(menu); - } catch (IllegalArgumentException e) { - // Log exception only if debug mode is set to 1. - if (UIPlugin.getTraceHandler().isSlotEnabled(1, null)) { - e.printStackTrace(); - } - } - } - } - - // Select the created item within the tab folder - tabFolder.setSelection(item); - - // Set the connector - terminal.setConnector(connector); - - // And connect the terminal - terminal.connectTerminal(); - - // Fire selection changed event - fireSelectionChanged(); - } - - // Return the create tab item finally. - return item; - } - - private void addOpenResourceSupport(ITerminalViewControl terminal) { - terminal.addMouseListener(new OpenFileMouseHandler(getParentView().getSite(), terminal)); - } - - /** - * Used for DnD of terminal tab items between terminal views - *

        - * Create a new tab item in the "dropped" terminal view using the - * information stored in the given item. - * - * @param oldItem The old dragged tab item. Must not be null. - * @return The new dropped tab item. - */ - @SuppressWarnings({ "unchecked" }) - public CTabItem cloneTabItemAfterDrop(CTabItem oldItem) { - Assert.isNotNull(oldItem); - - ITerminalViewControl terminal = (ITerminalViewControl) oldItem.getData(); - ITerminalConnector connector = terminal.getTerminalConnector(); - Object data = oldItem.getData("customData"); //$NON-NLS-1$ - Map properties = (Map) oldItem.getData("properties"); //$NON-NLS-1$ - String title = oldItem.getText(); - - // The result tab item - CTabItem item = null; - - // Get the tab folder from the parent viewer - CTabFolder tabFolder = getTabFolder(); - if (tabFolder != null) { - // Generate a unique title string for the new tab item (must be called before creating the item itself) - title = makeUniqueTitle(title, tabFolder); - // Create the tab item - item = new CTabItem(tabFolder, SWT.CLOSE); - // Set the tab item title - item.setText(title); - // Set the tab icon - Image image = getTabItemImage(connector, data); - if (image != null) - item.setImage(image); - - // Setup the tab item listeners - setupTerminalTabListeners(item); - // Move the terminal listener to the new item - TabTerminalListener.move(oldItem, item); - - // Create the composite to create the terminal control within - Composite composite = new Composite(tabFolder, SWT.NONE); - composite.setLayout(new FillLayout()); - // Associate the composite with the tab item - item.setControl(composite); - - // Refresh the layout - tabFolder.getParent().layout(true); - - // Remember terminal state - TerminalState oldState = terminal.getState(); - - // Keep the context menu from being disposed - terminal.getControl().setMenu(null); - - // change the "parent". - Assert.isTrue(terminal instanceof ITerminalControl); - ((ITerminalControl) terminal).setupTerminal(composite); - - // Add middle mouse button paste support - addMiddleMouseButtonPasteSupport(terminal); - - item.setData(terminal); - - // Associate the custom data node with the tab item (if any) - if (data != null) - item.setData("customData", data); //$NON-NLS-1$ - // Associate the properties with the tab item (if any) - if (properties != null) - item.setData("properties", properties); //$NON-NLS-1$ - - // Overwrite the text canvas help id - String contextHelpId = getParentView().getContextHelpId(); - if (contextHelpId != null) { - PlatformUI.getWorkbench().getHelpSystem().setHelp(terminal.getControl(), contextHelpId); - } - - // Set the context menu - TabFolderMenuHandler menuHandler = getParentView().getAdapter(TabFolderMenuHandler.class); - if (menuHandler != null) { - Menu menu = menuHandler.getAdapter(Menu.class); - if (menu != null) { - // One weird occurrence of IllegalArgumentException: Widget has wrong parent. - // Inspecting the code, this seem extremely unlikely. The terminal is created - // from a composite parent, the composite parent from the tab folder and the menu - // from the tab folder. Means, at the end all should have the same menu shell, shouldn't they? - try { - terminal.getControl().setMenu(menu); - } catch (IllegalArgumentException e) { - // Log exception only if debug mode is set to 1. - if (UIPlugin.getTraceHandler().isSlotEnabled(1, null)) { - e.printStackTrace(); - } - } - } - } - - // Select the created item within the tab folder - tabFolder.setSelection(item); - - // Set the connector - terminal.setConnector(connector); - - // needed to get the focus and cursor - Assert.isTrue(terminal instanceof ITerminalControl); - ((ITerminalControl) terminal).setState(oldState); - - // Fire selection changed event - fireSelectionChanged(); - } - - // Return the create tab item finally. - return item; - } - - protected void addMiddleMouseButtonPasteSupport(final ITerminalViewControl terminal) { - terminal.getControl().addMouseListener(new MouseAdapter() { - @Override - public void mouseDown(MouseEvent e) { - // paste when the middle button is clicked - if (e.button == 2) { - Clipboard clipboard = terminal.getClipboard(); - if (clipboard.isDisposed()) - return; - int clipboardType = DND.SELECTION_CLIPBOARD; - if (clipboard.getAvailableTypes(clipboardType).length == 0) - // use normal clipboard if selection clipboard is not available - clipboardType = DND.CLIPBOARD; - String text = (String) clipboard.getContents(TextTransfer.getInstance(), clipboardType); - if (text != null && text.length() > 0) - terminal.pasteString(text); - } - } - }); - } - - /** - * Generate a unique title string based on the given proposal. - * - * @param proposal The proposal. Must not be null. - * @return The unique title string. - */ - protected String makeUniqueTitle(String proposal, CTabFolder tabFolder) { - Assert.isNotNull(proposal); - Assert.isNotNull(tabFolder); - - String title = proposal; - int index = 0; - - // Loop all existing tab items and check the titles. We have to remember - // all found titles as modifying the proposal might in turn conflict again - // with the title of a tab already checked. - List titles = new ArrayList<>(); - for (CTabItem item : tabFolder.getItems()) { - // Get the tab item title - titles.add(item.getText()); - } - // Make the proposal unique be appending () against all known titles. - while (titles.contains(title)) - title = proposal + " (" + ++index + ")"; //$NON-NLS-1$ //$NON-NLS-2$ - - return title; - } - - /** - * Setup the terminal console tab item listeners. - * - * @param item The tab item. Must not be null. - */ - protected void setupTerminalTabListeners(final CTabItem item) { - Assert.isNotNull(item); - - // Create and associate the disposal listener - DisposeListener disposeListener = doCreateTerminalTabDisposeListener(this); - - // store the listener to make access easier e.g. needed in DnD - item.setData("disposeListener", disposeListener); //$NON-NLS-1$ - item.addDisposeListener(disposeListener); - } - - /** - * Creates a new terminal console tab terminal listener instance. - * - * @param tabFolderManager The tab folder manager. Must not be null. - * @param item The tab item. Must not be null. - * - * @return The terminal listener instance. - */ - protected ITerminalListener doCreateTerminalTabTerminalListener(TabFolderManager tabFolderManager, CTabItem item) { - Assert.isNotNull(item); - return new TabTerminalListener(tabFolderManager, item); - } - - /** - * Creates a new terminal console tab dispose listener instance. - * - * @param parent The parent terminal console tab folder manager. Must not be null. - * @return The dispose listener instance. - */ - protected DisposeListener doCreateTerminalTabDisposeListener(TabFolderManager parent) { - Assert.isNotNull(parent); - return new TabDisposeListener(parent); - } - - /** - * Returns the tab item image. - * - * @param connector The terminal connector. Must not be null. - * @param data The custom terminal data node or null. - * - * @return The tab item image or null. - */ - protected Image getTabItemImage(ITerminalConnector connector, Object data) { - Assert.isNotNull(connector); - return UIPlugin.getImage(ImageConsts.VIEW_Terminals); - } - - /** - * Lookup a tab item with the given title and the given terminal connector. - *

        - * Note: The method will handle unified tab item titles itself. - * - * @param title The tab item title. Must not be null. - * @param connector The terminal connector. Must not be null. - * @param data The custom terminal data node or null. - * - * @return The corresponding tab item or null. - */ - public CTabItem findTabItem(String title, ITerminalConnector connector, Object data) { - Assert.isNotNull(title); - Assert.isNotNull(connector); - - // Get the tab folder - CTabFolder tabFolder = getTabFolder(); - if (tabFolder == null) - return null; - - // Loop all existing tab items and try to find a matching title - for (CTabItem item : tabFolder.getItems()) { - // Disposed items cannot be matched - if (item.isDisposed()) - continue; - // Get the title from the current tab item - String itemTitle = item.getText(); - // The terminal console state might be signaled to the user via the - // terminal console tab title. Filter out any prefix "<.*>\s*". - itemTitle = itemTitle.replaceFirst("^<.*>\\s*", ""); //$NON-NLS-1$ //$NON-NLS-2$ - if (itemTitle.startsWith(title)) { - // The title string matches -> double check with the terminal connector - ITerminalViewControl terminal = (ITerminalViewControl) item.getData(); - ITerminalConnector connector2 = terminal.getTerminalConnector(); - // If the connector id and name matches -> check on the settings - if (connector.getId().equals(connector2.getId()) && connector.getName().equals(connector2.getName())) { - if (!connector.isInitialized()) { - // an uninitialized connector does not yield a sensible summary - return item; - } - String summary = connector.getSettingsSummary(); - String summary2 = connector2.getSettingsSummary(); - // If we have matching settings -> we've found the matching item - if (summary.equals(summary2)) - return item; - } - } - } - - return null; - } - - /** - * Make the given tab item the active tab and bring the tab to the top. - * - * @param item The tab item. Must not be null. - */ - public void bringToTop(CTabItem item) { - Assert.isNotNull(item); - - // Get the tab folder - CTabFolder tabFolder = getTabFolder(); - if (tabFolder == null) - return; - - // Set the given tab item as selection to the tab folder - tabFolder.setSelection(item); - // Fire selection changed event - fireSelectionChanged(); - } - - /** - * Returns the currently active tab. - * - * @return The active tab item or null if none. - */ - public CTabItem getActiveTabItem() { - // Get the tab folder - CTabFolder tabFolder = getTabFolder(); - if (tabFolder == null) - return null; - - return tabFolder.getSelection(); - } - - /** - * Remove all terminated tab items. - */ - public void removeTerminatedItems() { - // Get the tab folder - CTabFolder tabFolder = getTabFolder(); - if (tabFolder == null) - return; - - // Loop the items and check for terminated status - for (CTabItem item : tabFolder.getItems()) { - // Disposed items cannot be matched - if (item.isDisposed()) - continue; - // Check if the item is terminated - if (isTerminatedTabItem(item)) { - // item is terminated -> dispose - item.dispose(); - } - } - } - - /** - * Checks if the given tab item represents a terminated console. Subclasses may - * overwrite this method to extend the definition of terminated. - * - * @param item The tab item or null. - * @return True if the tab item represents a terminated console, false otherwise. - */ - protected boolean isTerminatedTabItem(CTabItem item) { - // Null items or disposed items cannot be matched - if (item == null || item.isDisposed()) - return false; - - // First, match the item title. If it contains "", the item can be removed - String itemTitle = item.getText(); - if (itemTitle != null && itemTitle.contains("")) { //$NON-NLS-1$ - return true; - } - // Second, check if the associated terminal control is closed - // The title string matches -> double check with the terminal connector - ITerminalViewControl terminal = (ITerminalViewControl) item.getData(); - if (terminal != null && terminal.getState() == TerminalState.CLOSED) { - return true; - } - - return false; - } - - /** - * Returns the command input field handler for the given tab item. - * - * @param item The tab item or null. - * @return The command input field handler or null. - */ - public final TabCommandFieldHandler getTabCommandFieldHandler(CTabItem item) { - // Null items or disposed items cannot be matched - if (item == null || item.isDisposed()) - return null; - - TabCommandFieldHandler handler = commandFieldHandler.get(item); - if (handler == null) { - handler = createTabCommandFieldHandler(this, item); - Assert.isNotNull(handler); - commandFieldHandler.put(item, handler); - } - return handler; - } - - /** - * Create the command input field handler for the given tab item. - * - * @param tabFolderManager The parent tab folder manager. Must not be null - * @param item The associated tab item. Must not be null. - * - * @return The command input field handler. Must not be null. - * - * @since 4.1 - */ - protected TabCommandFieldHandler createTabCommandFieldHandler(TabFolderManager tabFolderManager, CTabItem item) { - return new TabCommandFieldHandler(tabFolderManager, item); - } - - /** - * Dispose the command input field handler for the given tab item. - * - * @param item The tab item or null. - */ - protected void disposeTabCommandFieldHandler(CTabItem item) { - // Null items or disposed items cannot be matched - if (item == null || item.isDisposed()) - return; - - TabCommandFieldHandler handler = commandFieldHandler.remove(item); - if (handler != null) - handler.dispose(); - } - - @Override - public void addSelectionChangedListener(ISelectionChangedListener listener) { - if (listener != null && !selectionChangedListeners.contains(listener)) - selectionChangedListeners.add(listener); - } - - @Override - public void removeSelectionChangedListener(ISelectionChangedListener listener) { - if (listener != null) - selectionChangedListeners.remove(listener); - } - - @Override - public ISelection getSelection() { - CTabItem activeTabItem = getActiveTabItem(); - return activeTabItem != null ? new StructuredSelection(activeTabItem) : new StructuredSelection(); - } - - @Override - public void setSelection(ISelection selection) { - if (selection instanceof IStructuredSelection && !selection.isEmpty()) { - // The first selection element which is a CTabItem will become the active item - Iterator iterator = ((IStructuredSelection) selection).iterator(); - while (iterator.hasNext()) { - Object candidate = iterator.next(); - if (candidate instanceof CTabItem) { - bringToTop((CTabItem) candidate); - return; - } - } - } - // fire a changed event in any case - fireSelectionChanged(selection); - } - - /** - * Fire the selection changed event to the registered listeners. - */ - protected void fireSelectionChanged() { - updateStatusLine(); - fireSelectionChanged(getSelection()); - } - - /** - * Fire the selection changed event with the terminal text! - * to the registered listeners. - * see also TerminalControlSelectionListener- mouseUp - * - * @since 4.1 - */ - protected void fireTerminalSelectionChanged() { - updateStatusLine(); - CTabItem item = getActiveTabItem(); - if (item != null && !item.isDisposed()) { - ITerminalViewControl terminal = (ITerminalViewControl) item.getData(); - if (terminal != null && !terminal.isDisposed()) { - fireSelectionChanged(new StructuredSelection(terminal.getSelection())); - } - } - } - - /** - * Fire the selection changed event to the registered listeners. - */ - protected final void fireSelectionChanged(ISelection selection) { - // Create the selection changed event - SelectionChangedEvent event = new SelectionChangedEvent(TabFolderManager.this, selection); - - // First, invoke the registered listeners and let them do their job - for (ISelectionChangedListener listener : selectionChangedListeners) { - listener.selectionChanged(event); - } - } - - /** - * Update the parent view status line. - */ - public final void updateStatusLine() { - String message = null; - IStatusLineManager manager = parentView.getViewSite().getActionBars().getStatusLineManager(); - - CTabItem item = getActiveTabItem(); - if (item != null && !item.isDisposed()) { - ITerminalViewControl terminal = (ITerminalViewControl) item.getData(); - if (terminal != null && !terminal.isDisposed()) { - StringBuilder buffer = new StringBuilder(); - - buffer.append(state2msg(item, terminal.getState())); - buffer.append(" - "); //$NON-NLS-1$ - - String encoding = terminal.getEncoding(); - if (encoding == null || "UTF-8".equals(encoding)) { //$NON-NLS-1$ - encoding = "Default (UTF-8)"; //$NON-NLS-1$ - } - buffer.append(NLS.bind(Messages.TabFolderManager_encoding, encoding)); - - message = buffer.toString(); - } - } - - manager.setMessage(message); - } - - /** - * Returns the string representation of the given terminal state. - * - * @param item The tab folder item. Must not be null. - * @param state The terminal state. Must not be null. - * - * @return The string representation. - */ - @SuppressWarnings("unchecked") - protected String state2msg(CTabItem item, TerminalState state) { - Assert.isNotNull(item); - Assert.isNotNull(state); - - // Determine the terminal properties of the tab folder - Map properties = (Map) item.getData("properties"); //$NON-NLS-1$ - - // Get he current terminal state as string - String stateStr = state.toString(); - // Lookup a matching text representation of the state - String key = "TabFolderManager_state_" + stateStr.replaceAll("\\.", " ").trim().toLowerCase(); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - String stateMsg = null; - if (properties != null) - stateMsg = properties.get(key) instanceof String ? (String) properties.get(key) : null; - if (stateMsg == null) - stateMsg = Messages.getString(key); - if (stateMsg == null) - stateMsg = stateStr; - - return stateMsg; - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabFolderMenuHandler.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabFolderMenuHandler.java deleted file mode 100644 index dac6e73ecda..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabFolderMenuHandler.java +++ /dev/null @@ -1,397 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2021 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.tabs; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.core.runtime.PlatformObject; -import org.eclipse.jface.action.IContributionItem; -import org.eclipse.jface.action.IMenuListener2; -import org.eclipse.jface.action.IMenuManager; -import org.eclipse.jface.action.MenuManager; -import org.eclipse.jface.action.Separator; -import org.eclipse.swt.custom.CTabFolder; -import org.eclipse.swt.custom.CTabItem; -import org.eclipse.swt.dnd.DND; -import org.eclipse.swt.dnd.TextTransfer; -import org.eclipse.swt.dnd.Transfer; -import org.eclipse.swt.widgets.Menu; -import org.eclipse.tm.internal.terminal.control.ITerminalViewControl; -import org.eclipse.tm.internal.terminal.control.actions.AbstractTerminalAction; -import org.eclipse.tm.internal.terminal.control.actions.TerminalActionClearAll; -import org.eclipse.tm.internal.terminal.control.actions.TerminalActionCopy; -import org.eclipse.tm.internal.terminal.control.actions.TerminalActionPaste; -import org.eclipse.tm.internal.terminal.control.actions.TerminalActionSelectAll; -import org.eclipse.tm.internal.terminal.provisional.api.TerminalState; -import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants; -import org.eclipse.tm.terminal.view.ui.actions.InvertColorsAction; -import org.eclipse.tm.terminal.view.ui.actions.RenameTerminalAction; -import org.eclipse.tm.terminal.view.ui.actions.SelectEncodingAction; -import org.eclipse.tm.terminal.view.ui.interfaces.ITerminalsView; -import org.eclipse.ui.IWorkbenchActionConstants; - -/** - * Terminal tab folder menu handler. - */ -public class TabFolderMenuHandler extends PlatformObject { - // Reference to the parent terminals console view - private final ITerminalsView parentView; - // Reference to the tab folder context menu manager - private MenuManager contextMenuManager; - // Reference to the tab folder context menu - private Menu contextMenu; - // The list of actions available within the context menu - private final List contextMenuActions = new ArrayList<>(); - - // The list of invalid context menu contributions "startsWith" expressions - /* default */ static final String[] INVALID_CONTRIBUTIONS_STARTS_WITH = { "org.eclipse.cdt", "org.eclipse.ui.edit" //$NON-NLS-1$ //$NON-NLS-2$ - }; - - /** - * Default menu listener implementation. - */ - protected class MenuListener implements IMenuListener2 { - - @Override - public void menuAboutToHide(IMenuManager manager) { - // CQ:WIND00192293 and CQ:WIND194204 - don't update actions on menuAboutToHide - // See also http://bugs.eclipse.org/296212 - // updateMenuItems(false); - } - - @Override - public void menuAboutToShow(IMenuManager manager) { - removeInvalidContributions(manager); - updateMenuItems(true); - } - - /** - * Bug 392249: Remove contributions that appear in the context in Eclipse 4.x which are - * not visible in Eclipse 3.8.x. Re-evaluate from time to time! - * - * @param manager The menu manager or null - */ - private void removeInvalidContributions(IMenuManager manager) { - if (manager == null) - return; - - IContributionItem[] items = manager.getItems(); - for (IContributionItem item : items) { - String id = item.getId(); - if (id != null) { - for (String prefix : INVALID_CONTRIBUTIONS_STARTS_WITH) { - if (id.startsWith(prefix)) { - manager.remove(item); - break; - } - } - } - } - } - } - - /** - * Constructor. - * - * @param parentView The parent terminals console view. Must not be null. - */ - public TabFolderMenuHandler(ITerminalsView parentView) { - super(); - Assert.isNotNull(parentView); - this.parentView = parentView; - } - - /** - * Returns the parent terminals console view. - * - * @return The parent terminals console view instance. - */ - protected final ITerminalsView getParentView() { - return parentView; - } - - /** - * Returns the tab folder associated with the parent view. - * - * @return The tab folder or null. - */ - protected final CTabFolder getTabFolder() { - return getParentView().getAdapter(CTabFolder.class); - } - - /** - * Dispose the tab folder menu handler instance. - */ - public void dispose() { - // Dispose the context menu - if (contextMenu != null) { - contextMenu.dispose(); - contextMenu = null; - } - // Dispose the context menu manager - if (contextMenuManager != null) { - contextMenuManager.dispose(); - contextMenuManager = null; - } - // Clear all actions - contextMenuActions.clear(); - } - - /** - * Setup the context menu for the tab folder. The method will return - * immediately if the menu handler had been initialized before. - * - * @param tabFolder The tab folder control. Must not be null. - */ - public void initialize() { - // Return immediately if the menu manager and menu got initialized already - if (contextMenuManager != null && contextMenu != null) { - return; - } - - // Get the tab folder - CTabFolder tabFolder = getTabFolder(); - if (tabFolder == null) { - return; - } - - // Create the menu manager if not done before - contextMenuManager = new MenuManager("#PopupMenu"); //$NON-NLS-1$ - - // Bug 392249: Register our menu listener after registering the context menu - // for contributions. That way we can use our menu listener to get - // rid of unwanted/misguided contributions. At least until this is - // fixed in the Eclipse 4.x platform. - - // Create the context menu - contextMenu = contextMenuManager.createContextMenu(tabFolder); - // Temporarily set the menu on the tab folder to avoid the case - // where the menu has a different parent shell than the control. - // This can be the case if the tab folder is re-parented to the - // "PartRenderingEngine's limbo". - tabFolder.setMenu(contextMenu); - - // Create the context menu action instances - doCreateContextMenuActions(); - - // Fill the context menu - doFillContextMenu(contextMenuManager); - - // Register to the view site to open the menu for contributions - getParentView().getSite().registerContextMenu(contextMenuManager, - getParentView().getSite().getSelectionProvider()); - - // Create and associated the menu listener - contextMenuManager.addMenuListener(new MenuListener()); - } - - /** - * Adds the given action to the context menu actions list. - * - * @param action The action instance. Must not be null. - */ - protected final void add(AbstractTerminalAction action) { - Assert.isNotNull(action); - contextMenuActions.add(action); - } - - /** - * Create the context menu actions. - */ - protected void doCreateContextMenuActions() { - // Create and add the copy action - add(new TerminalActionCopy() { - @Override - protected ITerminalViewControl getTarget() { - return getActiveTerminalViewControl(); - } - }); - - // Create and add the paste action - add(new TerminalActionPaste() { - @SuppressWarnings({ "unchecked" }) - @Override - public void run() { - // Determine if pasting to the active tab require backslash translation - boolean needsTranslation = false; - - TabFolderManager manager = getParentView().getAdapter(TabFolderManager.class); - if (manager != null) { - // If we have the active tab item, we can get the active terminal control - CTabItem activeTabItem = manager.getActiveTabItem(); - if (activeTabItem != null) { - Map properties = (Map) activeTabItem.getData("properties"); //$NON-NLS-1$ - if (properties != null && properties - .containsKey(ITerminalsConnectorConstants.PROP_TRANSLATE_BACKSLASHES_ON_PASTE)) { - Object value = properties - .get(ITerminalsConnectorConstants.PROP_TRANSLATE_BACKSLASHES_ON_PASTE); - needsTranslation = value instanceof Boolean ? ((Boolean) value).booleanValue() : false; - } - } - } - - if (needsTranslation) { - ITerminalViewControl target = getTarget(); - if (target != null && target.getClipboard() != null && !target.getClipboard().isDisposed()) { - String text = (String) target.getClipboard().getContents(TextTransfer.getInstance()); - if (text != null) { - text = text.replace('\\', '/'); - - Object[] data = new Object[] { text }; - Transfer[] types = new Transfer[] { TextTransfer.getInstance() }; - target.getClipboard().setContents(data, types, DND.CLIPBOARD); - } - } - } - - super.run(); - } - - @Override - protected ITerminalViewControl getTarget() { - return getActiveTerminalViewControl(); - } - }); - - // Create and add the clear all action - add(new TerminalActionClearAll() { - @Override - protected ITerminalViewControl getTarget() { - return getActiveTerminalViewControl(); - } - - @Override - public void updateAction(boolean aboutToShow) { - super.updateAction(aboutToShow); - if (getTarget() != null && getTarget().getState() != TerminalState.CONNECTED) { - setEnabled(false); - } - } - }); - - // Create and add the select all action - add(new TerminalActionSelectAll() { - @Override - protected ITerminalViewControl getTarget() { - return getActiveTerminalViewControl(); - } - }); - - // Create and add the select encoding action - add(new SelectEncodingAction(getParentView().getAdapter(TabFolderManager.class)) { - @Override - protected ITerminalViewControl getTarget() { - return getActiveTerminalViewControl(); - } - }); - - // Create and add the invert colors action - add(new InvertColorsAction(getParentView().getAdapter(TabFolderManager.class)) { - @Override - protected ITerminalViewControl getTarget() { - return getActiveTerminalViewControl(); - } - }); - - // change the name of the terminal - add(new RenameTerminalAction(getParentView().getAdapter(TabFolderManager.class)) { - @Override - protected ITerminalViewControl getTarget() { - return getActiveTerminalViewControl(); - } - }); - } - - /** - * Returns the currently active terminal control. - * - * @return The currently active terminal control or null. - */ - protected ITerminalViewControl getActiveTerminalViewControl() { - ITerminalViewControl terminal = null; - - // Get the active tab item from the tab folder manager - TabFolderManager manager = getParentView().getAdapter(TabFolderManager.class); - if (manager != null) { - // If we have the active tab item, we can get the active terminal control - CTabItem activeTabItem = manager.getActiveTabItem(); - if (activeTabItem != null) { - terminal = (ITerminalViewControl) activeTabItem.getData(); - } - } - - return terminal; - } - - /** - * Fill in the context menu content within the given manager. - * - * @param manager The menu manager. Must not be null. - */ - protected void doFillContextMenu(MenuManager manager) { - Assert.isNotNull(manager); - - // Loop all actions and add them to the menu manager - for (AbstractTerminalAction action : contextMenuActions) { - manager.add(action); - // Add a separator after the paste action - if (action instanceof TerminalActionPaste) { - manager.add(new Separator()); - } - // Add a separator after the select all action - if (action instanceof TerminalActionSelectAll) { - manager.add(new Separator()); - } - } - - // Menu contributions will end up here - manager.add(new Separator()); - manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); - } - - /** - * Update the context menu items on showing or hiding the context menu. - * - * @param aboutToShow True if the menu is about to show, false otherwise. - */ - protected void updateMenuItems(boolean aboutToShow) { - // Loop all actions and update the status - for (AbstractTerminalAction action : contextMenuActions) { - action.updateAction(aboutToShow); - } - } - - @Override - public T getAdapter(Class adapter) { - if (MenuManager.class.isAssignableFrom(adapter)) { - return adapter.cast(contextMenuManager); - } else if (Menu.class.isAssignableFrom(adapter)) { - if (contextMenu == null || contextMenu.isDisposed()) { - contextMenu = contextMenuManager.createContextMenu(getTabFolder()); - } - // Clear the menu from the tab folder now - see initialize() - getTabFolder().setMenu(null); - return adapter.cast(contextMenu); - } - - // Try the parent view - T adapted = getParentView().getAdapter(adapter); - if (adapted != null) { - return adapted; - } - - return super.getAdapter(adapter); - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabFolderSelectionListener.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabFolderSelectionListener.java deleted file mode 100644 index ec893f04a60..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabFolderSelectionListener.java +++ /dev/null @@ -1,51 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.tabs; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.events.SelectionListener; - -/** - * Terminal tab folder default selection listener implementation. - */ -public class TabFolderSelectionListener implements SelectionListener { - private final TabFolderManager parentTabFolderManager; - - /** - * Constructor. - * - * @param parentTabFolderManager The parent tab folder manager. Must not be null - */ - public TabFolderSelectionListener(TabFolderManager parentTabFolderManager) { - Assert.isNotNull(parentTabFolderManager); - this.parentTabFolderManager = parentTabFolderManager; - } - - /** - * Returns the parent terminal console tab folder manager instance. - * - * @return The parent terminal console tab folder manager instance. - */ - protected final TabFolderManager getParentTabFolderManager() { - return parentTabFolderManager; - } - - @Override - public void widgetDefaultSelected(SelectionEvent e) { - } - - @Override - public void widgetSelected(SelectionEvent e) { - parentTabFolderManager.fireSelectionChanged(); - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabFolderToolbarHandler.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabFolderToolbarHandler.java deleted file mode 100644 index ac54b5dc24b..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabFolderToolbarHandler.java +++ /dev/null @@ -1,343 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - * Max Weninger (Wind River) - [361363] [TERMINALS] Implement "Pin&Clone" for the "Terminals" view - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.tabs; - -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.core.runtime.PlatformObject; -import org.eclipse.jface.action.IToolBarManager; -import org.eclipse.jface.action.Separator; -import org.eclipse.jface.viewers.ISelectionChangedListener; -import org.eclipse.jface.viewers.SelectionChangedEvent; -import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.swt.custom.CTabFolder; -import org.eclipse.swt.custom.CTabItem; -import org.eclipse.tm.internal.terminal.control.ITerminalViewControl; -import org.eclipse.tm.internal.terminal.control.actions.AbstractTerminalAction; -import org.eclipse.tm.internal.terminal.control.actions.TerminalActionClearAll; -import org.eclipse.tm.internal.terminal.control.actions.TerminalActionCopy; -import org.eclipse.tm.internal.terminal.control.actions.TerminalActionPaste; -import org.eclipse.tm.internal.terminal.provisional.api.TerminalState; -import org.eclipse.tm.terminal.view.ui.actions.AbstractAction; -import org.eclipse.tm.terminal.view.ui.actions.NewTerminalViewAction; -import org.eclipse.tm.terminal.view.ui.actions.TabScrollLockAction; -import org.eclipse.tm.terminal.view.ui.actions.ToggleCommandFieldAction; -import org.eclipse.tm.terminal.view.ui.interfaces.ITerminalsView; -import org.eclipse.ui.IActionBars; -import org.eclipse.ui.IWorkbenchActionConstants; - -/** - * Terminal tab folder toolbar handler. - */ -public class TabFolderToolbarHandler extends PlatformObject { - // Reference to the parent terminals console view - private final ITerminalsView parentView; - // Reference to the toolbar manager - private IToolBarManager toolbarManager; - // Reference to the selection listener - private ToolbarSelectionChangedListener selectionChangedListener; - // The list of actions available within the toolbar - private final List toolbarActions = new ArrayList<>(); - - /** - * Default selection listener implementation. - */ - protected class ToolbarSelectionChangedListener implements ISelectionChangedListener { - - @Override - public void selectionChanged(SelectionChangedEvent event) { - boolean enable = event != null; - - // The VlmConsoleTabFolderManager is listening to the selection changes of the - // TabFolder and fires selection changed events. - if (enable && event.getSource() instanceof TabFolderManager) { - enable = event.getSelection() instanceof StructuredSelection && !event.getSelection().isEmpty() - && (((StructuredSelection) event.getSelection()).getFirstElement() instanceof CTabItem - || ((StructuredSelection) event.getSelection()).getFirstElement() instanceof String); - } - - updateToolbarItems(enable); - } - } - - /** - * Constructor. - * - * @param parentView The parent terminals console view. Must not be null. - */ - public TabFolderToolbarHandler(ITerminalsView parentView) { - super(); - Assert.isNotNull(parentView); - this.parentView = parentView; - } - - /** - * Returns the parent terminals console view. - * - * @return The terminals console view instance. - */ - protected final ITerminalsView getParentView() { - return parentView; - } - - /** - * Returns the tab folder associated with the parent view. - * - * @return The tab folder or null. - */ - protected final CTabFolder getTabFolder() { - return getParentView().getAdapter(CTabFolder.class); - } - - /** - * Returns the currently active terminal control. - * - * @return The currently active terminal control or null. - */ - public ITerminalViewControl getActiveTerminalViewControl() { - ITerminalViewControl terminal = null; - - // Get the active tab item from the tab folder manager - TabFolderManager manager = getParentView().getAdapter(TabFolderManager.class); - if (manager != null) { - // If we have the active tab item, we can get the active terminal control - CTabItem activeTabItem = manager.getActiveTabItem(); - if (activeTabItem != null && !activeTabItem.isDisposed()) { - terminal = (ITerminalViewControl) activeTabItem.getData(); - } - } - - return terminal; - } - - /** - * Dispose the tab folder menu handler instance. - */ - public void dispose() { - // Dispose the selection changed listener - if (selectionChangedListener != null) { - getParentView().getViewSite().getSelectionProvider() - .removeSelectionChangedListener(selectionChangedListener); - selectionChangedListener = null; - } - - // Clear all actions - toolbarActions.clear(); - } - - /** - * Setup the context menu for the tab folder. The method will return - * immediately if the toolbar handler had been initialized before. - * - * @param tabFolder The tab folder control. Must not be null. - */ - public void initialize() { - // Return immediately if the toolbar manager got initialized already - if (toolbarManager != null) { - return; - } - - // Register ourself as selection listener to the tab folder - selectionChangedListener = doCreateSelectionChangedListener(); - Assert.isNotNull(selectionChangedListener); - getParentView().getViewSite().getSelectionProvider().addSelectionChangedListener(selectionChangedListener); - - // Get the parent view action bars - IActionBars bars = getParentView().getViewSite().getActionBars(); - - // From the action bars, get the toolbar manager - toolbarManager = bars.getToolBarManager(); - - // Create the toolbar action instances - doCreateToolbarActions(); - - // Fill the toolbar - doFillToolbar(toolbarManager); - - // Update actions - updateToolbarItems(false); - } - - /** - * Creates a new selection changed listener instance. - * - * @return The new selection changed listener instance. - */ - protected ToolbarSelectionChangedListener doCreateSelectionChangedListener() { - return new ToolbarSelectionChangedListener(); - } - - /** - * Adds the given action to the toolbar actions list. - * - * @param action The action instance. Must not be null. - */ - protected final void add(AbstractTerminalAction action) { - Assert.isNotNull(action); - toolbarActions.add(action); - } - - /** - * Removes the given action from the toolbar actions list. - * - * @param action The action instance. Must not be null. - */ - protected final void remove(AbstractTerminalAction action) { - Assert.isNotNull(action); - toolbarActions.remove(action); - } - - /** - * Create the toolbar actions. - */ - protected void doCreateToolbarActions() { - // Create and add the paste action - add(new TerminalActionPaste() { - @Override - protected ITerminalViewControl getTarget() { - return getActiveTerminalViewControl(); - } - }); - - // Create and add the copy action - add(new TerminalActionCopy() { - @Override - protected ITerminalViewControl getTarget() { - return getActiveTerminalViewControl(); - } - }); - - // Create and add the scroll lock action - add(new TabScrollLockAction() { - @Override - protected ITerminalViewControl getTarget() { - return getActiveTerminalViewControl(); - } - }); - - // Create and add the clear all action - add(new TerminalActionClearAll() { - @Override - protected ITerminalViewControl getTarget() { - return getActiveTerminalViewControl(); - } - - @Override - public void updateAction(boolean aboutToShow) { - super.updateAction(aboutToShow); - if (getTarget() != null && getTarget().getState() != TerminalState.CONNECTED) { - setEnabled(false); - } - } - }); - - // Create and add the toggle command input field action - add(new ToggleCommandFieldAction(getParentView()) { - @Override - protected ITerminalViewControl getTarget() { - return getActiveTerminalViewControl(); - } - }); - - // Create and add the new terminal view action - add(new NewTerminalViewAction(getParentView()) { - @Override - protected ITerminalViewControl getTarget() { - return getActiveTerminalViewControl(); - } - }); - } - - /** - * Fill in the context menu content within the given manager. - * - * @param manager The menu manager. Must not be null. - */ - protected void doFillToolbar(IToolBarManager manager) { - Assert.isNotNull(manager); - - // Note: For the toolbar, the actions are added from left to right! - // So we start with the additions marker here which is the most - // left contribution item. - manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); - manager.add(new Separator("anchor")); //$NON-NLS-1$ - - // we want that at the end - NewTerminalViewAction newTerminalAction = null; - - // Loop all actions and add them to the menu manager - for (AbstractTerminalAction action : toolbarActions) { - // Add a separator before the clear all action or if the action is a separator - if (action instanceof TabScrollLockAction - || (action instanceof AbstractAction && ((AbstractAction) action).isSeparator())) { - manager.insertAfter("anchor", new Separator()); //$NON-NLS-1$ - } - // skip new terminal view action for now - if (action instanceof NewTerminalViewAction) { - newTerminalAction = (NewTerminalViewAction) action; - continue; - } - // Add the action itself - manager.insertAfter("anchor", action); //$NON-NLS-1$ - } - // now add to the end - if (newTerminalAction != null) { - manager.add(newTerminalAction); - } - } - - /** - * Update the toolbar items. - * - * @param enabled True if the items shall be enabled, false otherwise. - */ - protected void updateToolbarItems(boolean enabled) { - // Determine the currently active terminal control - ITerminalViewControl control = getActiveTerminalViewControl(); - // Loop all actions and update the status - for (AbstractTerminalAction action : toolbarActions) { - // If the terminal control is not available, the updateAction - // method of certain actions enable the action (bugzilla #260372). - // Workaround by forcing the action to get disabled with setEnabled. - if (control == null && !(action instanceof NewTerminalViewAction)) { - action.setEnabled(false); - } else { - action.updateAction(enabled); - } - } - } - - @Override - public T getAdapter(Class adapter) { - if (IToolBarManager.class.isAssignableFrom(adapter)) { - return adapter.cast(toolbarManager); - } - - // Try the toolbar actions - for (AbstractTerminalAction action : toolbarActions) { - if (adapter.isAssignableFrom(action.getClass())) { - return adapter.cast(action); - } - } - - // Try the parent view - T adapted = getParentView().getAdapter(adapter); - if (adapted != null) { - return adapted; - } - - return super.getAdapter(adapter); - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabTerminalListener.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabTerminalListener.java deleted file mode 100644 index 96946641d71..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/tabs/TabTerminalListener.java +++ /dev/null @@ -1,212 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.tabs; - -import java.util.Map; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.jface.viewers.ISelectionProvider; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.custom.CTabItem; -import org.eclipse.swt.widgets.Display; -import org.eclipse.tm.internal.terminal.control.ITerminalListener3; -import org.eclipse.tm.internal.terminal.provisional.api.TerminalState; -import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants; -import org.eclipse.tm.terminal.view.ui.nls.Messages; - -/** - * Terminal tab default terminal listener implementation. - */ -public class TabTerminalListener implements ITerminalListener3 { - private static final String TAB_TERMINAL_LISTENER = "TabTerminalListener"; //$NON-NLS-1$ - /* default */ final TabFolderManager tabFolderManager; - private CTabItem tabItem; - private String tabItemTitle; - private TerminalState state; - - /** - * Move a TabTerminalListener instance to another item (for DnD). - * - * @param fromItem item to detach the listener from - * @param toItem item to attach listener to - */ - static void move(CTabItem fromItem, CTabItem toItem) { - TabTerminalListener listener = (TabTerminalListener) fromItem.getData(TAB_TERMINAL_LISTENER); - if (listener != null) { - listener.attachTo(toItem); - } - } - - /** - * Constructor. - * - * @param tabFolderManager The parent tab folder manager. Must not be null. - * @param tabItem The parent tab item. Must not be null. - */ - public TabTerminalListener(TabFolderManager tabFolderManager, CTabItem tabItem) { - super(); - Assert.isNotNull(tabFolderManager); - Assert.isNotNull(tabItem); - this.tabFolderManager = tabFolderManager; - // Remember the tab item title - tabItemTitle = tabItem.getText(); - - attachTo(tabItem); - } - - private void attachTo(CTabItem item) { - if (tabItem != null) - tabItem.setData(TAB_TERMINAL_LISTENER, null); - item.setData(TAB_TERMINAL_LISTENER, this); - tabItem = item; - } - - /** - * Returns the associated parent tab item. - * - * @return The parent tab item. - */ - protected final CTabItem getTabItem() { - return tabItem; - } - - @Override - public void setState(final TerminalState state) { - this.state = state; - updateTitle(null, TerminalTitleRequestor.OTHER); - - // The tab item must have been not yet disposed - final CTabItem item = getTabItem(); - if (item == null || item.isDisposed()) - return; - - // Run asynchronously in the display thread - item.getDisplay().asyncExec(() -> { - // Turn off the command field (if necessary) - TabCommandFieldHandler handler = tabFolderManager.getTabCommandFieldHandler(item); - if (TerminalState.CLOSED.equals(state) && handler != null && handler.hasCommandInputField()) { - handler.setCommandInputField(false); - // Trigger a selection changed event to update the action enablements - // and the status line - ISelectionProvider provider = tabFolderManager.getParentView().getViewSite().getSelectionProvider(); - Assert.isNotNull(provider); - provider.setSelection(provider.getSelection()); - } else { - // Update the status line - tabFolderManager.updateStatusLine(); - } - }); - } - - private void updateTitle(final String title, final TerminalTitleRequestor requestor) { - if (state == null) { - // first setState hasn't happened yet, it will - // soon and the title will be update then. - return; - } - final CTabItem item = getTabItem(); - if (item == null || item.isDisposed()) { - return; - } - // Run asynchronously in the display thread - item.getDisplay().asyncExec(() -> { - if (item.isDisposed()) { - // tab has been closed - return; - } - - // Get the original terminal properties associated with the tab item - @SuppressWarnings({ "unchecked" }) - final Map properties = (Map) item.getData("properties"); //$NON-NLS-1$ - if (properties != null && properties - .get(ITerminalsConnectorConstants.PROP_TITLE_DISABLE_ANSI_TITLE) instanceof Boolean disableAnsi) { - // Check if terminal title can be updated from ANSI escape sequence - if (disableAnsi && requestor == TerminalTitleRequestor.ANSI) { - return; - } - } - - // New title must have value. - if (title != null) { - tabItemTitle = title; - } - - // Update the tab item title - final String newTitle = getTerminalConsoleTabTitle(state); - if (newTitle != null) - item.setText(newTitle); - }); - } - - /** - * Returns the title to set to the terminal console tab for the given state. - *

        - * Note: This method is called from {@link #setState(TerminalState)} and - * is expected to by called within the UI thread. - * - * @param state The terminal state. Must not be null. - * @return The terminal console tab title to set or null to leave the title unchanged. - */ - protected String getTerminalConsoleTabTitle(TerminalState state) { - Assert.isNotNull(state); - Assert.isNotNull(Display.findDisplay(Thread.currentThread())); - - // The tab item must have been not yet disposed - CTabItem item = getTabItem(); - if (item == null || item.isDisposed()) - return null; - - // Get the current tab title - String oldTitle = item.getText(); - - // Construct the new title - String newTitle = null; - - if (TerminalState.CLOSED.equals(state)) { - newTitle = NLS.bind(Messages.TabTerminalListener_consoleClosed, tabItemTitle, - tabFolderManager.state2msg(item, state)); - } else if (TerminalState.CONNECTING.equals(state)) { - newTitle = NLS.bind(Messages.TabTerminalListener_consoleConnecting, tabItemTitle, - tabFolderManager.state2msg(item, state)); - } else if (TerminalState.CONNECTED.equals(state)) { - newTitle = tabItemTitle; - } - - return newTitle != null && !newTitle.equals(oldTitle) ? newTitle : null; - } - - @Override - public void setTerminalTitle(final String title) { - throw new UnsupportedOperationException("Should not be called as this class implements ITerminalListener3"); //$NON-NLS-1$ - } - - /** - * Sets Terminal title and checks if originator is ANSI command. - * If originator is ANSI command in terminal and user does not want to use - * ANSI command to update terminal then return else update title. - * @param title Title to update. - * @param requestor Item that requests terminal title update. - */ - @Override - public void setTerminalTitle(final String title, final TerminalTitleRequestor requestor) { - updateTitle(title, requestor); - } - - /** - * @see org.eclipse.tm.internal.terminal.control.ITerminalListener2#setTerminalSelectionChanged() - * @since 4.1 - */ - @Override - public void setTerminalSelectionChanged() { - tabFolderManager.fireTerminalSelectionChanged(); - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/view/OldTerminalsViewHandler.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/view/OldTerminalsViewHandler.java deleted file mode 100644 index 4a940ab6ba8..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/view/OldTerminalsViewHandler.java +++ /dev/null @@ -1,124 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2015, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.view; - -import org.eclipse.swt.widgets.Composite; -import org.eclipse.tm.terminal.view.ui.interfaces.IUIConstants; -import org.eclipse.ui.IPartListener2; -import org.eclipse.ui.IViewSite; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.IWorkbenchPart; -import org.eclipse.ui.IWorkbenchPartReference; -import org.eclipse.ui.PartInitException; -import org.eclipse.ui.part.ViewPart; - -/** - * Old terminals view handler implementation. - *

        - * If invoked, the view implementation opens the new terminals view and - * closes itself afterwards. - */ -public class OldTerminalsViewHandler extends ViewPart { - - boolean fReplaced; - IPartListener2 fPartlistener; - - /** - * Constructor. - */ - public OldTerminalsViewHandler() { - super(); - } - - @Override - public void createPartControl(Composite parent) { - replaceWithTerminalsView(); - } - - protected void replaceWithTerminalsView() { - if (fReplaced) - return; - IViewSite site = getViewSite(); - final IWorkbenchPage page = site.getPage(); - - site.getShell().getDisplay().asyncExec(() -> { - if (fReplaced) - return; - if (!page.isPageZoomed() || page.getActivePart() instanceof TerminalsView) { - fReplaced = true; - // Show the new view - try { - page.showView(IUIConstants.ID, null, IWorkbenchPage.VIEW_CREATE); - } catch (PartInitException e) { - /* ignored on purpose */ } - - // Hide ourself in the current perspective - page.hideView(OldTerminalsViewHandler.this); - } else if (fPartlistener == null) { - final IWorkbenchPart maximizedPart = page.getActivePart(); - page.addPartListener(fPartlistener = new IPartListener2() { - @Override - public void partVisible(IWorkbenchPartReference partRef) { - if (partRef.getPart(false) == OldTerminalsViewHandler.this) { - page.removePartListener(this); - fPartlistener = null; - replaceWithTerminalsView(); - } - } - - @Override - public void partOpened(IWorkbenchPartReference partRef) { - } - - @Override - public void partInputChanged(IWorkbenchPartReference partRef) { - } - - @Override - public void partHidden(IWorkbenchPartReference partRef) { - } - - @Override - public void partDeactivated(IWorkbenchPartReference partRef) { - } - - @Override - public void partClosed(IWorkbenchPartReference partRef) { - if (partRef.getPart(false) == OldTerminalsViewHandler.this) { - page.removePartListener(this); - fPartlistener = null; - } else if (partRef.getPart(false) == maximizedPart) { - page.removePartListener(this); - fPartlistener = null; - replaceWithTerminalsView(); - } - } - - @Override - public void partBroughtToTop(IWorkbenchPartReference partRef) { - } - - @Override - public void partActivated(IWorkbenchPartReference partRef) { - } - }); - } - }); - } - - @Override - public void setFocus() { - // should not happen, but just in case - replace on focus - replaceWithTerminalsView(); - } - -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/view/TerminalsView.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/view/TerminalsView.java deleted file mode 100644 index a1838db6137..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/view/TerminalsView.java +++ /dev/null @@ -1,734 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - * Max Weninger (Wind River) - [361363] [TERMINALS] Implement "Pin&Clone" for the "Terminals" view - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.view; - -import java.io.File; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.UUID; - -import org.eclipse.core.commands.Command; -import org.eclipse.core.commands.ParameterizedCommand; -import org.eclipse.core.expressions.EvaluationContext; -import org.eclipse.core.expressions.IEvaluationContext; -import org.eclipse.core.runtime.Assert; -import org.eclipse.core.runtime.IAdaptable; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Platform; -import org.eclipse.core.runtime.Status; -import org.eclipse.jface.resource.JFaceResources; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.swt.SWT; -import org.eclipse.swt.custom.CTabFolder; -import org.eclipse.swt.custom.CTabItem; -import org.eclipse.swt.dnd.ByteArrayTransfer; -import org.eclipse.swt.dnd.DND; -import org.eclipse.swt.dnd.DragSource; -import org.eclipse.swt.dnd.DragSourceEvent; -import org.eclipse.swt.dnd.DragSourceListener; -import org.eclipse.swt.dnd.DropTarget; -import org.eclipse.swt.dnd.DropTargetEvent; -import org.eclipse.swt.dnd.DropTargetListener; -import org.eclipse.swt.dnd.Transfer; -import org.eclipse.swt.dnd.TransferData; -import org.eclipse.swt.events.DisposeListener; -import org.eclipse.swt.events.MouseAdapter; -import org.eclipse.swt.events.MouseEvent; -import org.eclipse.swt.graphics.Color; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.tm.terminal.view.ui.activator.UIPlugin; -import org.eclipse.tm.terminal.view.ui.interfaces.ITerminalsView; -import org.eclipse.tm.terminal.view.ui.nls.Messages; -import org.eclipse.tm.terminal.view.ui.tabs.TabFolderManager; -import org.eclipse.tm.terminal.view.ui.tabs.TabFolderMenuHandler; -import org.eclipse.tm.terminal.view.ui.tabs.TabFolderToolbarHandler; -import org.eclipse.ui.IMemento; -import org.eclipse.ui.ISources; -import org.eclipse.ui.IViewSite; -import org.eclipse.ui.PartInitException; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.commands.ICommandService; -import org.eclipse.ui.handlers.IHandlerService; -import org.eclipse.ui.part.IShowInTarget; -import org.eclipse.ui.part.PageBook; -import org.eclipse.ui.part.ShowInContext; -import org.eclipse.ui.part.ViewPart; -import org.osgi.framework.Bundle; - -/** - * Terminal view. - */ -public class TerminalsView extends ViewPart implements ITerminalsView, IShowInTarget { - - // Reference to the main page book control - private PageBook pageBookControl; - // Reference to the tab folder maintaining the consoles - /* default */ CTabFolder tabFolderControl; - // Reference to the tab folder manager - /* default */ TabFolderManager tabFolderManager; - // Reference to the tab folder menu handler - private TabFolderMenuHandler tabFolderMenuHandler; - // Reference to the tab folder toolbar handler - private TabFolderToolbarHandler tabFolderToolbarHandler; - // Reference to the empty page control (to be show if no console is open) - private Control emptyPageControl; - // The view's memento handler - private final TerminalsViewMementoHandler mementoHandler = new TerminalsViewMementoHandler(); - - /** - * "dummy" transfer just to store the information needed for the DnD - * - */ - private static class TerminalTransfer extends ByteArrayTransfer { - // The static terminal transfer type name. Unique per terminals view instance. - private static final String TYPE_NAME = "terminal-transfer-format:" + UUID.randomUUID().toString(); //$NON-NLS-1$ - // Register the type name and remember the associated unique type id. - private static final int TYPEID = registerType(TYPE_NAME); - - private CTabItem draggedFolderItem; - private TabFolderManager draggedTabFolderManager; - - /* - * Thread save singleton instance creation. - */ - private static class LazyInstanceHolder { - public static TerminalTransfer instance = new TerminalTransfer(); - } - - /** - * Constructor. - */ - TerminalTransfer() { - } - - /** - * Returns the singleton terminal transfer instance. - * @return - */ - public static TerminalTransfer getInstance() { - return LazyInstanceHolder.instance; - } - - /** - * Sets the dragged folder item. - * - * @param tabFolderItem The dragged folder item or null. - */ - public void setDraggedFolderItem(CTabItem tabFolderItem) { - draggedFolderItem = tabFolderItem; - } - - /** - * Returns the dragged folder item. - * - * @return The dragged folder item or null. - */ - public CTabItem getDraggedFolderItem() { - return draggedFolderItem; - } - - /** - * Sets the tab folder manager the associated folder item is dragged from. - * - * @param tabFolderManager The tab folder manager or null. - */ - public void setTabFolderManager(TabFolderManager tabFolderManager) { - draggedTabFolderManager = tabFolderManager; - } - - /** - * Returns the tab folder manager the associated folder item is dragged from. - * - * @return The tab folder manager or null. - */ - public TabFolderManager getTabFolderManager() { - return draggedTabFolderManager; - } - - @Override - protected int[] getTypeIds() { - return new int[] { TYPEID }; - } - - @Override - protected String[] getTypeNames() { - return new String[] { TYPE_NAME }; - } - - @Override - public void javaToNative(Object data, TransferData transferData) { - } - - @Override - public Object nativeToJava(TransferData transferData) { - return null; - } - } - - /** - * Constructor. - */ - public TerminalsView() { - super(); - } - - /** - * Initialize the drag support. - */ - private void addDragSupport() { - // The event listener is registered as filter. It will receive events from all widgets. - PlatformUI.getWorkbench().getDisplay().addFilter(SWT.DragDetect, event -> { - // Only handle events where a CTabFolder is the source - if (!(event.widget instanceof CTabFolder)) - return; - // TabFolderManager must be created - if (tabFolderManager == null) - return; - - // only for own tab folders - if (event.widget != tabFolderControl) - return; - - // Skip drag if DnD is still ongoing (bug 443787) - if (tabFolderControl.getData(DND.DRAG_SOURCE_KEY) != null) - return; - - final CTabFolder draggedFolder = (CTabFolder) event.widget; - - int operations = DND.DROP_MOVE | DND.DROP_DEFAULT; - final DragSource dragSource = new DragSource(draggedFolder, operations); - - // Initialize the terminal transfer type data - TerminalTransfer.getInstance().setDraggedFolderItem(tabFolderManager.getActiveTabItem()); - TerminalTransfer.getInstance().setTabFolderManager(tabFolderManager); - - Transfer[] transferTypes = new Transfer[] { TerminalTransfer.getInstance() }; - dragSource.setTransfer(transferTypes); - - // Add a drag source listener to cleanup after the drag operation finished - dragSource.addDragListener(new DragSourceListener() { - @Override - public void dragStart(DragSourceEvent event) { - } - - @Override - public void dragSetData(DragSourceEvent event) { - } - - @Override - public void dragFinished(DragSourceEvent event) { - // dispose this drag-source-listener by disposing its drag-source - dragSource.dispose(); - - // Inhibit the action of CTabFolder's default DragDetect-listeners, - // fire a mouse-click event on the widget that was dragged. - draggedFolder.notifyListeners(SWT.MouseUp, null); - } - }); - }); - } - - /** - * Initialize the drop support on the terminals page book control. - */ - private void addDropSupport() { - int operations = DND.DROP_MOVE | DND.DROP_DEFAULT; - final DropTarget target = new DropTarget(pageBookControl, operations); - - Transfer[] transferTypes = new Transfer[] { TerminalTransfer.getInstance() }; - target.setTransfer(transferTypes); - - target.addDropListener(new DropTargetListener() { - @Override - public void dragEnter(DropTargetEvent event) { - // only if the drop target is different then the drag source - if (TerminalTransfer.getInstance().getTabFolderManager() == tabFolderManager) { - event.detail = DND.DROP_NONE; - } else { - event.detail = DND.DROP_MOVE; - } - } - - @Override - public void dragOver(DropTargetEvent event) { - } - - @Override - public void dragOperationChanged(DropTargetEvent event) { - } - - @Override - public void dragLeave(DropTargetEvent event) { - } - - @Override - public void dropAccept(DropTargetEvent event) { - } - - @Override - public void drop(DropTargetEvent event) { - if (TerminalTransfer.getInstance().getDraggedFolderItem() != null && tabFolderManager != null) { - CTabItem draggedItem = TerminalTransfer.getInstance().getDraggedFolderItem(); - - CTabItem item = tabFolderManager.cloneTabItemAfterDrop(draggedItem); - tabFolderManager.bringToTop(item); - switchToTabFolderControl(); - - // dispose tab item control - final Control control = draggedItem.getControl(); - draggedItem.setControl(null); - if (control != null) - control.dispose(); - - // need to remove the dispose listener first - DisposeListener disposeListener = (DisposeListener) draggedItem.getData("disposeListener"); //$NON-NLS-1$ - draggedItem.removeDisposeListener(disposeListener); - draggedItem.dispose(); - - // make sure the "new" terminals view has the focus after dragging a terminal - setFocus(); - } - } - }); - } - - @Override - public void dispose() { - // Dispose the tab folder manager - if (tabFolderManager != null) { - tabFolderManager.dispose(); - tabFolderManager = null; - } - // Dispose the tab folder menu handler - if (tabFolderMenuHandler != null) { - tabFolderMenuHandler.dispose(); - tabFolderMenuHandler = null; - } - // Dispose the tab folder toolbar handler - if (tabFolderToolbarHandler != null) { - tabFolderToolbarHandler.dispose(); - tabFolderToolbarHandler = null; - } - - super.dispose(); - } - - @Override - public void init(IViewSite site, IMemento memento) throws PartInitException { - super.init(site, memento); - restoreState(memento); - } - - @Override - public void createPartControl(Composite parent) { - // Create the page book control - pageBookControl = doCreatePageBookControl(parent); - Assert.isNotNull(pageBookControl); - // Configure the page book control - doConfigurePageBookControl(pageBookControl); - - // Create the empty page control - emptyPageControl = doCreateEmptyPageControl(pageBookControl); - Assert.isNotNull(emptyPageControl); - // Configure the empty page control - doConfigureEmptyPageControl(emptyPageControl); - - // Create the tab folder control (empty) - tabFolderControl = doCreateTabFolderControl(pageBookControl); - Assert.isNotNull(tabFolderControl); - // Configure the tab folder control - doConfigureTabFolderControl(tabFolderControl); - - // Create the tab folder manager - tabFolderManager = doCreateTabFolderManager(this); - Assert.isNotNull(tabFolderManager); - // Set the tab folder manager as the selection provider - getSite().setSelectionProvider(tabFolderManager); - - // Setup the tab folder menu handler - tabFolderMenuHandler = doCreateTabFolderMenuHandler(this); - Assert.isNotNull(tabFolderMenuHandler); - doConfigureTabFolderMenuHandler(tabFolderMenuHandler); - - // Setup the tab folder toolbar handler - tabFolderToolbarHandler = doCreateTabFolderToolbarHandler(this); - Assert.isNotNull(tabFolderToolbarHandler); - doConfigureTabFolderToolbarHandler(tabFolderToolbarHandler); - - // Show the empty page control by default - switchToEmptyPageControl(); - - String secondaryId = ((IViewSite) getSite()).getSecondaryId(); - if (secondaryId != null) { - String defaultTitle = getPartName(); - // set title - setPartName(defaultTitle + " " + secondaryId); //$NON-NLS-1$ - } - - // Initialize DnD support - addDragSupport(); - addDropSupport(); - } - - /** - * Creates the {@link PageBook} instance. - * - * @param parent The parent composite. Must not be null. - * @return The page book instance. Must never be null. - */ - protected PageBook doCreatePageBookControl(Composite parent) { - return new PageBook(parent, SWT.NONE); - } - - /** - * Configure the given page book control. - * - * @param pagebook The page book control. Must not be null. - */ - protected void doConfigurePageBookControl(PageBook pagebook) { - Assert.isNotNull(pagebook); - - if (getContextHelpId() != null) - PlatformUI.getWorkbench().getHelpSystem().setHelp(pagebook, getContextHelpId()); - } - - /** - * Returns the context help id associated with the terminals console view instance. - *

        - * Note: The default implementation returns the view id as context help id. - * - * @return The context help id or null if none is associated. - */ - @Override - public String getContextHelpId() { - return getViewSite().getId(); - } - - /** - * Creates the empty page control instance. - * - * @param parent The parent composite. Must not be null. - * @return The empty page control instance. Must never be null. - */ - protected Control doCreateEmptyPageControl(Composite parent) { - Composite composite = new Composite(parent, SWT.NONE); - composite.setLayout(new GridLayout()); - composite.setLayoutData(new GridData(GridData.FILL_BOTH)); - return composite; - } - - /** - * Configures the empty page control. - * - * @param control The empty page control. Must not be null. - */ - protected void doConfigureEmptyPageControl(Control control) { - Assert.isNotNull(control); - } - - /** - * Creates the tab folder control instance. - * - * @param parent The parent composite. Must not be null. - * @return The tab folder control instance. Must never be null. - */ - protected CTabFolder doCreateTabFolderControl(Composite parent) { - return new CTabFolder(parent, SWT.NO_REDRAW_RESIZE | SWT.NO_TRIM | SWT.FLAT | SWT.BORDER); - } - - /** - * Configures the tab folder control. - * - * @param tabFolder The tab folder control. Must not be null. - */ - protected void doConfigureTabFolderControl(final CTabFolder tabFolder) { - Assert.isNotNull(tabFolder); - - // Set the layout data - tabFolder.setLayoutData(new GridData(GridData.FILL_BOTH)); - - // Set the tab gradient coloring from the global preferences - if (useGradientTabBackgroundColor()) { - tabFolder.setSelectionBackground( - new Color[] { JFaceResources.getColorRegistry().get("org.eclipse.ui.workbench.ACTIVE_TAB_BG_START"), //$NON-NLS-1$ - JFaceResources.getColorRegistry().get("org.eclipse.ui.workbench.ACTIVE_TAB_BG_END") //$NON-NLS-1$ - }, new int[] { 100 }, true); - } - // Apply the tab folder selection foreground color - tabFolder.setSelectionForeground( - JFaceResources.getColorRegistry().get("org.eclipse.ui.workbench.ACTIVE_TAB_TEXT_COLOR")); //$NON-NLS-1$ - - // Attach the mouse listener - tabFolder.addMouseListener(new MouseAdapter() { - @Override - public void mouseDown(MouseEvent e) { - if (e.button == 2) { - // middle mouse button click - close tab - CTabItem item = tabFolder.getItem(new Point(e.x, e.y)); - if (item != null) - item.dispose(); - } - } - }); - } - - /** - * If True is returned, the inner tabs are colored with gradient coloring set in - * the Eclipse workbench color settings. - * - * @return True to use gradient tab colors, false otherwise. - */ - protected boolean useGradientTabBackgroundColor() { - return false; - } - - /** - * Creates the tab folder manager. - * - * @param parentView The parent view instance. Must not be null. - * @return The tab folder manager. Must never be null. - */ - protected TabFolderManager doCreateTabFolderManager(ITerminalsView parentView) { - Assert.isNotNull(parentView); - return new TabFolderManager(parentView); - } - - /** - * Creates the tab folder menu handler. - * - * @param parentView The parent view instance. Must not be null. - * @return The tab folder menu handler. Must never be null. - */ - protected TabFolderMenuHandler doCreateTabFolderMenuHandler(ITerminalsView parentView) { - Assert.isNotNull(parentView); - return new TabFolderMenuHandler(parentView); - } - - /** - * Configure the tab folder menu handler - * - * @param menuHandler The tab folder menu handler. Must not be null. - */ - protected void doConfigureTabFolderMenuHandler(TabFolderMenuHandler menuHandler) { - Assert.isNotNull(menuHandler); - menuHandler.initialize(); - } - - /** - * Creates the tab folder toolbar handler. - * - * @param parentView The parent view instance. Must not be null. - * @return The tab folder toolbar handler. Must never be null. - */ - protected TabFolderToolbarHandler doCreateTabFolderToolbarHandler(ITerminalsView parentView) { - Assert.isNotNull(parentView); - return new TabFolderToolbarHandler(parentView); - } - - /** - * Configure the tab folder toolbar handler - * - * @param toolbarHandler The tab folder toolbar handler. Must not be null. - */ - protected void doConfigureTabFolderToolbarHandler(TabFolderToolbarHandler toolbarHandler) { - Assert.isNotNull(toolbarHandler); - toolbarHandler.initialize(); - } - - @Override - public void setFocus() { - if (pageBookControl != null) - pageBookControl.setFocus(); - } - - @Override - public void switchToEmptyPageControl() { - if (pageBookControl != null && !pageBookControl.isDisposed() && emptyPageControl != null - && !emptyPageControl.isDisposed()) { - pageBookControl.showPage(emptyPageControl); - } - } - - @Override - public void switchToTabFolderControl() { - if (pageBookControl != null && !pageBookControl.isDisposed() && tabFolderControl != null - && !tabFolderControl.isDisposed()) { - pageBookControl.showPage(tabFolderControl); - } - } - - @Override - public T getAdapter(Class adapter) { - if (CTabFolder.class.isAssignableFrom(adapter)) { - return adapter.cast(tabFolderControl); - } - if (TabFolderManager.class.isAssignableFrom(adapter)) { - return adapter.cast(tabFolderManager); - } - if (TabFolderMenuHandler.class.isAssignableFrom(adapter)) { - return adapter.cast(tabFolderMenuHandler); - } - if (TabFolderToolbarHandler.class.isAssignableFrom(adapter)) { - return adapter.cast(tabFolderToolbarHandler); - } - if (TerminalsViewMementoHandler.class.isAssignableFrom(adapter)) { - return adapter.cast(mementoHandler); - } - - return super.getAdapter(adapter); - } - - @Override - public void saveState(IMemento memento) { - super.saveState(memento); - if (memento == null) - return; - mementoHandler.saveState(this, memento); - } - - /** - * Restore the view state from the given memento. - * - * @param memento The memento or null. - */ - public void restoreState(IMemento memento) { - if (memento == null) - return; - mementoHandler.restoreState(this, memento); - } - - @Override - public boolean show(ShowInContext context) { - if (context != null) { - // Get the selection from the context - ISelection selection = context.getSelection(); - - // The selection must contain elements that can be adapted to IResource, File or IPath - if (selection instanceof IStructuredSelection && !selection.isEmpty()) { - boolean isValid = true; - - // Build a new structured selection with the adapted elements - List elements = new ArrayList<>(); - - Iterator iterator = ((IStructuredSelection) selection).iterator(); - while (iterator.hasNext() && isValid) { - Object element = iterator.next(); - Object adapted = null; - - if (element instanceof File) { - if (!elements.contains(element)) - elements.add(element); - continue; - } - adapted = element instanceof IAdaptable ? ((IAdaptable) element).getAdapter(File.class) : null; - if (adapted == null) - adapted = Platform.getAdapterManager().getAdapter(element, File.class); - if (adapted == null) - adapted = Platform.getAdapterManager().loadAdapter(element, File.class.getName()); - if (adapted != null) { - if (!elements.contains(adapted)) - elements.add(adapted); - continue; - } - - if (element instanceof IPath) { - if (!elements.contains(element)) - elements.add(element); - continue; - } - adapted = element instanceof IAdaptable ? ((IAdaptable) element).getAdapter(IPath.class) : null; - if (adapted == null) - adapted = Platform.getAdapterManager().getAdapter(element, IPath.class); - if (adapted == null) - adapted = Platform.getAdapterManager().loadAdapter(element, IPath.class.getName()); - if (adapted != null) { - if (!elements.contains(adapted)) - elements.add(adapted); - continue; - } - - Bundle bundle = Platform.getBundle("org.eclipse.core.resources"); //$NON-NLS-1$ - if (bundle != null && bundle.getState() != Bundle.UNINSTALLED - && bundle.getState() != Bundle.STOPPING) { - if (element instanceof org.eclipse.core.resources.IResource) { - if (!elements.contains(element)) - elements.add(element); - continue; - } - - adapted = element instanceof IAdaptable - ? ((IAdaptable) element).getAdapter(org.eclipse.core.resources.IResource.class) - : null; - if (adapted == null) - adapted = Platform.getAdapterManager().getAdapter(element, - org.eclipse.core.resources.IResource.class); - if (adapted == null) - adapted = Platform.getAdapterManager().loadAdapter(element, - org.eclipse.core.resources.IResource.class.getName()); - } - if (adapted != null) { - if (!elements.contains(adapted)) - elements.add(adapted); - continue; - } - - if (adapted != null) { - if (!elements.contains(adapted)) - elements.add(adapted); - continue; - } - - isValid = false; - } - - // If the selection is valid, fire the command to open the local terminal - if (isValid) { - selection = new StructuredSelection(elements); - ICommandService service = PlatformUI.getWorkbench().getService(ICommandService.class); - Command command = service != null - ? service.getCommand("org.eclipse.tm.terminal.connector.local.command.launch") //$NON-NLS-1$ - : null; - if (command != null && command.isDefined() && command.isEnabled()) { - try { - ParameterizedCommand pCmd = ParameterizedCommand.generateCommand(command, null); - Assert.isNotNull(pCmd); - IHandlerService handlerSvc = PlatformUI.getWorkbench().getService(IHandlerService.class); - Assert.isNotNull(handlerSvc); - IEvaluationContext ctx = handlerSvc.getCurrentState(); - ctx = new EvaluationContext(ctx, selection); - ctx.addVariable(ISources.ACTIVE_CURRENT_SELECTION_NAME, selection); - handlerSvc.executeCommandInContext(pCmd, null, ctx); - } catch (Exception e) { - // If the platform is in debug mode, we print the exception to the log view - if (Platform.inDebugMode()) { - IStatus status = new Status(IStatus.ERROR, UIPlugin.getUniqueIdentifier(), - Messages.AbstractTriggerCommandHandler_error_executionFailed, e); - UIPlugin.getDefault().getLog().log(status); - } - } - } - return true; - } - } - } - return false; - } -} diff --git a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/view/TerminalsViewMementoHandler.java b/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/view/TerminalsViewMementoHandler.java deleted file mode 100644 index 88e0ff99e4a..00000000000 --- a/terminal/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/view/TerminalsViewMementoHandler.java +++ /dev/null @@ -1,218 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2012, 2018 Wind River Systems, Inc. and others. All rights reserved. - * This program and the accompanying materials are made available under the terms - * of the Eclipse Public License 2.0 which accompanies this distribution, and is - * available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * Wind River Systems - initial API and implementation - *******************************************************************************/ -package org.eclipse.tm.terminal.view.ui.view; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.swt.custom.CTabItem; -import org.eclipse.tm.internal.terminal.control.ITerminalViewControl; -import org.eclipse.tm.terminal.view.core.interfaces.constants.ITerminalsConnectorConstants; -import org.eclipse.tm.terminal.view.ui.interfaces.ILauncherDelegate; -import org.eclipse.tm.terminal.view.ui.interfaces.IMementoHandler; -import org.eclipse.tm.terminal.view.ui.launcher.LauncherDelegateManager; -import org.eclipse.ui.IMemento; -import org.eclipse.ui.PlatformUI; - -/** - * Take care of the persisted state handling of the "Terminal" view. - */ -public class TerminalsViewMementoHandler { - // The list of items to save. See the workbench listener implementation - // in o.e.tm.terminal.view.ui.activator.UIPlugin. - private final List saveables = new ArrayList<>(); - - /** - * Sets the list of saveable items. - * - * @param saveables The list of saveable items. Must not be null. - */ - public void setSaveables(List saveables) { - Assert.isNotNull(saveables); - this.saveables.clear(); - this.saveables.addAll(saveables); - } - - /** - * Saves the view state in the given memento. - * - * @param view The terminals view. Must not be null. - * @param memento The memento. Must not be null. - */ - @SuppressWarnings("unchecked") - public void saveState(TerminalsView view, IMemento memento) { - Assert.isNotNull(view); - Assert.isNotNull(memento); - - // Create a child element within the memento holding the - // connection info of the open, non-terminated tab items - memento = memento.createChild("terminalConnections"); //$NON-NLS-1$ - Assert.isNotNull(memento); - - // Write the view id and secondary id - memento.putString("id", view.getViewSite().getId()); //$NON-NLS-1$ - memento.putString("secondaryId", view.getViewSite().getSecondaryId()); //$NON-NLS-1$ - - // Loop the saveable items and store the connection data of each - // item to the memento - for (CTabItem item : saveables) { - // Ignore disposed items - if (item.isDisposed()) - continue; - - // Get the original terminal properties associated with the tab item - Map properties = (Map) item.getData("properties"); //$NON-NLS-1$ - if (properties == null) - continue; - - // Get the terminal launcher delegate - String delegateId = (String) properties.get(ITerminalsConnectorConstants.PROP_DELEGATE_ID); - ILauncherDelegate delegate = delegateId != null - ? LauncherDelegateManager.getInstance().getLauncherDelegate(delegateId, false) - : null; - IMementoHandler mementoHandler = delegate != null - ? (IMementoHandler) delegate.getAdapter(IMementoHandler.class) - : null; - if (mementoHandler != null) { - // Create terminal connection child memento - IMemento connectionMemento = memento.createChild("connection"); //$NON-NLS-1$ - Assert.isNotNull(connectionMemento); - // Store the common attributes - connectionMemento.putString(ITerminalsConnectorConstants.PROP_DELEGATE_ID, delegateId); - - String terminalConnectorId = (String) properties - .get(ITerminalsConnectorConstants.PROP_TERMINAL_CONNECTOR_ID); - if (terminalConnectorId != null) { - connectionMemento.putString(ITerminalsConnectorConstants.PROP_TERMINAL_CONNECTOR_ID, - terminalConnectorId); - } - - if (properties.get(ITerminalsConnectorConstants.PROP_FORCE_NEW) instanceof Boolean) { - connectionMemento.putBoolean(ITerminalsConnectorConstants.PROP_FORCE_NEW, - ((Boolean) properties.get(ITerminalsConnectorConstants.PROP_FORCE_NEW)).booleanValue()); - } - - // Store the current encoding - ITerminalViewControl terminal = (ITerminalViewControl) item.getData(); - String encoding = terminal != null ? terminal.getEncoding() : null; - if (encoding == null || "".equals(encoding)) //$NON-NLS-1$ - encoding = (String) properties.get(ITerminalsConnectorConstants.PROP_ENCODING); - if (encoding != null && !"".equals(encoding)) { //$NON-NLS-1$ - connectionMemento.putString(ITerminalsConnectorConstants.PROP_ENCODING, encoding); - } - - // Store the current working directory, or if not available, the initial working directory - if (terminal != null) { - encoding = terminal.getEncoding(); - Optional workingDirectory = terminal.getTerminalConnector().getWorkingDirectory(); - String cwd = workingDirectory - .orElse((String) properties.get(ITerminalsConnectorConstants.PROP_PROCESS_WORKING_DIR)); - if (cwd != null) { - connectionMemento.putString(ITerminalsConnectorConstants.PROP_PROCESS_WORKING_DIR, cwd); - } - } - - // Pass on to the memento handler - mementoHandler.saveState(connectionMemento, properties); - } - } - } - - /** - * Restore the view state from the given memento. - * - * @param view The terminals view. Must not be null. - * @param memento The memento. Must not be null. - */ - protected void restoreState(final TerminalsView view, IMemento memento) { - Assert.isNotNull(view); - Assert.isNotNull(memento); - - // Get the "terminalConnections" memento - memento = memento.getChild("terminalConnections"); //$NON-NLS-1$ - if (memento != null) { - // Read view id and secondary id - String id = memento.getString("id"); //$NON-NLS-1$ - String secondaryId = memento.getString("secondaryId"); //$NON-NLS-1$ - if ("null".equals(secondaryId)) //$NON-NLS-1$ - secondaryId = null; - - // Get all the "connection" memento's. - IMemento[] connections = memento.getChildren("connection"); //$NON-NLS-1$ - for (IMemento connection : connections) { - // Create the properties container that holds the terminal properties - Map properties = new HashMap<>(); - - // Set the view id attributes - properties.put(ITerminalsConnectorConstants.PROP_ID, id); - properties.put(ITerminalsConnectorConstants.PROP_SECONDARY_ID, secondaryId); - - // Restore the common attributes - properties.put(ITerminalsConnectorConstants.PROP_DELEGATE_ID, - connection.getString(ITerminalsConnectorConstants.PROP_DELEGATE_ID)); - properties.put(ITerminalsConnectorConstants.PROP_TERMINAL_CONNECTOR_ID, - connection.getString(ITerminalsConnectorConstants.PROP_TERMINAL_CONNECTOR_ID)); - if (connection.getBoolean(ITerminalsConnectorConstants.PROP_FORCE_NEW) != null) { - properties.put(ITerminalsConnectorConstants.PROP_FORCE_NEW, - connection.getBoolean(ITerminalsConnectorConstants.PROP_FORCE_NEW)); - } - - // Restore the encoding - if (connection.getString(ITerminalsConnectorConstants.PROP_ENCODING) != null) { - properties.put(ITerminalsConnectorConstants.PROP_ENCODING, - connection.getString(ITerminalsConnectorConstants.PROP_ENCODING)); - } - - // Restore the working directory - if (connection.getString(ITerminalsConnectorConstants.PROP_PROCESS_WORKING_DIR) != null) { - properties.put(ITerminalsConnectorConstants.PROP_PROCESS_WORKING_DIR, - connection.getString(ITerminalsConnectorConstants.PROP_PROCESS_WORKING_DIR)); - } - - // Get the terminal launcher delegate - String delegateId = (String) properties.get(ITerminalsConnectorConstants.PROP_DELEGATE_ID); - ILauncherDelegate delegate = delegateId != null - ? LauncherDelegateManager.getInstance().getLauncherDelegate(delegateId, false) - : null; - IMementoHandler mementoHandler = delegate != null - ? (IMementoHandler) delegate.getAdapter(IMementoHandler.class) - : null; - if (mementoHandler != null) { - // Pass on to the memento handler - mementoHandler.restoreState(connection, properties); - } - - // Restore the terminal connection - if (delegate != null && !properties.isEmpty()) { - delegate.execute(properties, null); - } - } - } - } - - /** - * Executes the given runnable asynchronously in the display thread. - * - * @param runnable The runnable. Must not be null. - */ - /* default */ void asyncExec(Runnable runnable) { - Assert.isNotNull(runnable); - if (PlatformUI.getWorkbench() != null && PlatformUI.getWorkbench().getDisplay() != null - && !PlatformUI.getWorkbench().getDisplay().isDisposed()) { - PlatformUI.getWorkbench().getDisplay().asyncExec(runnable); - } - } -} diff --git a/terminal/plugins/pom.xml b/terminal/plugins/pom.xml index b15f147fe04..5e33f137815 100644 --- a/terminal/plugins/pom.xml +++ b/terminal/plugins/pom.xml @@ -25,16 +25,7 @@ pom - org.eclipse.tm.terminal.connector.local - org.eclipse.tm.terminal.connector.process org.eclipse.tm.terminal.connector.remote - org.eclipse.tm.terminal.connector.ssh - org.eclipse.tm.terminal.connector.telnet org.eclipse.tm.terminal.connector.cdtserial - - org.eclipse.tm.terminal.view.core - org.eclipse.tm.terminal.view.ui - - org.eclipse.tm.terminal.test diff --git a/terminal/pom.xml b/terminal/pom.xml index 384fe4cc144..54ae40c46f7 100644 --- a/terminal/pom.xml +++ b/terminal/pom.xml @@ -33,7 +33,6 @@ only-terminal - repo ../core/org.eclipse.cdt.core.linux ../core/org.eclipse.cdt.core.linux.aarch64 ../core/org.eclipse.cdt.core.linux.ppc64le diff --git a/terminal/repo/.project b/terminal/repo/.project deleted file mode 100644 index 6196b7e80b2..00000000000 --- a/terminal/repo/.project +++ /dev/null @@ -1,11 +0,0 @@ - - - org.eclipse.cdt.terminal.repo - - - - - - - - diff --git a/terminal/repo/.settings/org.eclipse.core.resources.prefs b/terminal/repo/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index 99f26c0203a..00000000000 --- a/terminal/repo/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -encoding/=UTF-8 diff --git a/terminal/repo/README.md b/terminal/repo/README.md deleted file mode 100644 index d3d6e393f77..00000000000 --- a/terminal/repo/README.md +++ /dev/null @@ -1 +0,0 @@ -The repo is only used when the "only-terminal" profile is activated. See root [README.md](../README.md) for more details. \ No newline at end of file diff --git a/terminal/repo/category.xml b/terminal/repo/category.xml deleted file mode 100644 index 4cfc77e9f40..00000000000 --- a/terminal/repo/category.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - TM Terminal Features - - - - - TM Terminal SDK Features - - - diff --git a/terminal/repo/pom.xml b/terminal/repo/pom.xml deleted file mode 100644 index 97d78f168b5..00000000000 --- a/terminal/repo/pom.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - 4.0.0 - - - org.eclipse.cdt - cdt-parent - 12.2.0-SNAPSHOT - ../../pom.xml - - - 8.2.0-SNAPSHOT - org.eclipse.cdt.terminal.repo - eclipse-repository - - - ${project.artifactId} - -